1#/usr/bin/env python3.4 2# 3# Copyright (C) 2016 The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); you may not 6# use this file except in compliance with the License. You may obtain a copy of 7# the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14# License for the specific language governing permissions and limitations under 15# the License. 16 17from enum import Enum 18from enum import IntEnum 19 20class GattCbErr(Enum): 21 CHAR_WRITE_REQ_ERR = "Characteristic Write Request event not found. Expected {}" 22 CHAR_EXEC_WRITE_ERR = "Characteristic Execute Write event not found. Expected {}" 23 CHAR_WRITE_ERR = "Characteristic Write event not found. Expected {}" 24 DESC_WRITE_REQ_ERR = "Descriptor Write Request event not found. Expected {}" 25 DESC_WRITE_ERR = "Descriptor Write event not found. Expected {}" 26 CHAR_READ_ERR = "Characteristic Read event not found. Expected {}" 27 CHAR_READ_REQ_ERR = "Characteristic Read Request not found. Expected {}" 28 DESC_READ_ERR = "Descriptor Read event not found. Expected {}" 29 DESC_READ_REQ_ERR = "Descriptor Read Request event not found. Expected {}" 30 RD_REMOTE_RSSI_ERR = "Read Remote RSSI event not found. Expected {}" 31 GATT_SERV_DISC_ERR = "GATT Services Discovered event not found. Expected {}" 32 SERV_ADDED_ERR = "Service Added event not found. Expected {}" 33 MTU_CHANGED_ERR = "MTU Changed event not found. Expected {}" 34 GATT_CONN_CHANGE_ERR = "GATT Connection Changed event not found. Expected {}" 35 CHAR_CHANGE_ERR = "GATT Characteristic Changed event not fond. Expected {}" 36 37class GattCbStrings(Enum): 38 CHAR_WRITE_REQ = "GattServer{}onCharacteristicWriteRequest" 39 CHAR_EXEC_WRITE = "GattServer{}onExecuteWrite" 40 CHAR_WRITE = "GattConnect{}onCharacteristicWrite" 41 DESC_WRITE_REQ = "GattServer{}onDescriptorWriteRequest" 42 DESC_WRITE = "GattConnect{}onDescriptorWrite" 43 CHAR_READ = "GattConnect{}onCharacteristicRead" 44 CHAR_READ_REQ = "GattServer{}onCharacteristicReadRequest" 45 DESC_READ = "GattConnect{}onDescriptorRead" 46 DESC_READ_REQ = "GattServer{}onDescriptorReadRequest" 47 RD_REMOTE_RSSI = "GattConnect{}onReadRemoteRssi" 48 GATT_SERV_DISC = "GattConnect{}onServicesDiscovered" 49 SERV_ADDED = "GattServer{}onServiceAdded" 50 MTU_CHANGED = "GattConnect{}onMtuChanged" 51 GATT_CONN_CHANGE = "GattConnect{}onConnectionStateChange" 52 CHAR_CHANGE = "GattConnect{}onCharacteristicChanged" 53 54 55class GattEvent(Enum): 56 CHAR_WRITE_REQ = {"evt": GattCbStrings.CHAR_WRITE_REQ.value, 57 "err": GattCbErr.CHAR_WRITE_REQ_ERR.value} 58 CHAR_EXEC_WRITE = {"evt": GattCbStrings.CHAR_EXEC_WRITE.value, 59 "err": GattCbErr.CHAR_EXEC_WRITE_ERR.value} 60 CHAR_WRITE = {"evt": GattCbStrings.CHAR_WRITE.value, 61 "err": GattCbErr.CHAR_WRITE_ERR.value} 62 DESC_WRITE_REQ = {"evt": GattCbStrings.DESC_WRITE_REQ.value, 63 "err": GattCbErr.DESC_WRITE_REQ_ERR.value} 64 DESC_WRITE = {"evt": GattCbStrings.DESC_WRITE.value, 65 "err": GattCbErr.DESC_WRITE_ERR.value} 66 CHAR_READ = {"evt": GattCbStrings.CHAR_READ.value, 67 "err": GattCbErr.CHAR_READ_ERR.value} 68 CHAR_READ_REQ = {"evt": GattCbStrings.CHAR_READ_REQ.value, 69 "err": GattCbErr.CHAR_READ_REQ_ERR.value} 70 DESC_READ = {"evt": GattCbStrings.DESC_READ.value, 71 "err": GattCbErr.DESC_READ_ERR.value} 72 DESC_READ_REQ = {"evt": GattCbStrings.DESC_READ_REQ.value, 73 "err": GattCbErr.DESC_READ_REQ_ERR.value} 74 RD_REMOTE_RSSI = {"evt": GattCbStrings.RD_REMOTE_RSSI.value, 75 "err": GattCbErr.RD_REMOTE_RSSI_ERR.value} 76 GATT_SERV_DISC = {"evt": GattCbStrings.GATT_SERV_DISC.value, 77 "err": GattCbErr.GATT_SERV_DISC_ERR.value} 78 SERV_ADDED = {"evt": GattCbStrings.SERV_ADDED.value, 79 "err": GattCbErr.SERV_ADDED_ERR.value} 80 MTU_CHANGED = {"evt": GattCbStrings.MTU_CHANGED.value, 81 "err": GattCbErr.MTU_CHANGED_ERR.value} 82 GATT_CONN_CHANGE = {"evt": GattCbStrings.GATT_CONN_CHANGE.value, 83 "err": GattCbErr.GATT_CONN_CHANGE_ERR.value} 84 CHAR_CHANGE = {"evt": GattCbStrings.CHAR_CHANGE.value, 85 "err": GattCbErr.CHAR_CHANGE_ERR.value} 86 87 88class GattConnectionState(Enum): 89 STATE_DISCONNECTED = 0 90 STATE_CONNECTING = 1 91 STATE_CONNECTED = 2 92 STATE_DISCONNECTING = 3 93 94 95class GattCharacteristic(Enum): 96 PROPERTY_BROADCAST = 0x01 97 PROPERTY_READ = 0x02 98 PROPERTY_WRITE_NO_RESPONSE = 0x04 99 PROPERTY_WRITE = 0x08 100 PROPERTY_NOTIFY = 0x10 101 PROPERTY_INDICATE = 0x20 102 PROPERTY_SIGNED_WRITE = 0x40 103 PROPERTY_EXTENDED_PROPS = 0x80 104 PERMISSION_READ = 0x01 105 PERMISSION_READ_ENCRYPTED = 0x02 106 PERMISSION_READ_ENCRYPTED_MITM = 0x04 107 PERMISSION_WRITE = 0x10 108 PERMISSION_WRITE_ENCRYPTED = 0x20 109 PERMISSION_WRITE_ENCRYPTED_MITM = 0x40 110 PERMISSION_WRITE_SIGNED = 0x80 111 PERMISSION_WRITE_SIGNED_MITM = 0x100 112 WRITE_TYPE_DEFAULT = 0x02 113 WRITE_TYPE_NO_RESPONSE = 0x01 114 WRITE_TYPE_SIGNED = 0x04 115 FORMAT_UINT8 = 0x11 116 FORMAT_UINT16 = 0x12 117 FORMAT_UINT32 = 0x14 118 FORMAT_SINT8 = 0x21 119 FORMAT_SINT16 = 0x22 120 FORMAT_SINT32 = 0x24 121 FORMAT_SFLOAT = 0x32 122 FORMAT_FLOAT = 0x34 123 124 125class GattDescriptor(Enum): 126 ENABLE_NOTIFICATION_VALUE = [0x01, 0x00] 127 ENABLE_INDICATION_VALUE = [0x02, 0x00] 128 DISABLE_NOTIFICATION_VALUE = [0x00, 0x00] 129 PERMISSION_READ = 0x01 130 PERMISSION_READ_ENCRYPTED = 0x02 131 PERMISSION_READ_ENCRYPTED_MITM = 0x04 132 PERMISSION_WRITE = 0x10 133 PERMISSION_WRITE_ENCRYPTED = 0x20 134 PERMISSION_WRITE_ENCRYPTED_MITM = 0x40 135 PERMISSION_WRITE_SIGNED = 0x80 136 PERMISSION_WRITE_SIGNED_MITM = 0x100 137 138 139class GattService(Enum): 140 SERVICE_TYPE_PRIMARY = 0 141 SERVICE_TYPE_SECONDARY = 1 142 143 144class GattConnectionPriority(Enum): 145 CONNECTION_PRIORITY_BALANCED = 0 146 CONNECTION_PRIORITY_HIGH = 1 147 CONNECTION_PRIORITY_LOW_POWER = 2 148 149 150class MtuSize(Enum): 151 MIN = 23 152 MAX = 217 153 154 155class BluetoothGatt(Enum): 156 GATT_SUCCESS = 0 157 GATT_FAILURE = 0x101 158 159 160class GattTransport(IntEnum): 161 TRANSPORT_AUTO = 0x00 162 TRANSPORT_BREDR = 0x01 163 TRANSPORT_LE = 0x02