py_ble_manager.ble_api package

Submodules

py_ble_manager.ble_api.BleApiBase module

class BleApiBase(ble_manager: BleManager)[source]

Bases: object

Base class for BLE API layer processing classes

Parameters:

ble_manager (BleManager) – BLE Manager for the framework

py_ble_manager.ble_api.BleAtt module

class ATT_ERROR(value)[source]

Bases: IntEnum

Error code for ATT operation (as defined by Core 4.2 specification)

ATT_ERROR_APPLICATION_ERROR = 128
ATT_ERROR_ATTRIBUTE_NOT_FOUND = 10
ATT_ERROR_ATTRIBUTE_NOT_LONG = 11
ATT_ERROR_CCC_DESCRIPTOR_IMPROPERLY_CONFIGURED = 253
ATT_ERROR_INSUFFICIENT_AUTHENTICATION = 5
ATT_ERROR_INSUFFICIENT_AUTHORIZATION = 8
ATT_ERROR_INSUFFICIENT_ENCRYPTION = 15
ATT_ERROR_INSUFFICIENT_KEY_SIZE = 12
ATT_ERROR_INSUFFICIENT_RESOURCES = 17
ATT_ERROR_INVALID_HANDLE = 1
ATT_ERROR_INVALID_OFFSET = 7
ATT_ERROR_INVALID_PDU = 4
ATT_ERROR_INVALID_VALUE_LENGTH = 13
ATT_ERROR_OK = 0
ATT_ERROR_PREPARE_QUEUE_FULL = 9
ATT_ERROR_PROCEDURE_ALREADY_IN_PROGRESS = 254
ATT_ERROR_READ_NOT_PERMITTED = 2
ATT_ERROR_REQUEST_NOT_SUPPORTED = 6
ATT_ERROR_UNLIKELY = 14
ATT_ERROR_UNSUPPORTED_GROUP_TYPE = 16
ATT_ERROR_WRITE_NOT_PERMITTED = 3
GAP_ERR_ADV_DATA_INVALID = 74
GAP_ERR_CANCELED = 68
GAP_ERR_COMMAND_DISALLOWED = 67
GAP_ERR_DISCONNECTED = 70
GAP_ERR_INSUFF_RESOURCES = 75
GAP_ERR_INVALID_PARAM = 64
GAP_ERR_NOT_FOUND = 71
GAP_ERR_NOT_SUPPORTED = 66
GAP_ERR_PRIVACY_CFG_PB = 73
GAP_ERR_PROTOCOL_PROBLEM = 65
GAP_ERR_REJECTED = 72
GAP_ERR_TIMEOUT = 69
GAP_ERR_UNEXPECTED = 76
GATT_ERR_ATTRIBUTE_CLIENT_MISSING = 84
GATT_ERR_ATTRIBUTE_SERVER_MISSING = 85
GATT_ERR_INVALID_ATT_LEN = 80
GATT_ERR_INVALID_PERM = 86
GATT_ERR_SIGNED_WRITE = 83
GATT_ERR_WRITE = 82
L2C_ERR_CONNECTION_LOST = 48
L2C_ERR_INSUFF_AUTHEN = 54
L2C_ERR_INSUFF_AUTHOR = 55
L2C_ERR_INSUFF_CREDIT = 59
L2C_ERR_INSUFF_ENC = 57
L2C_ERR_INSUFF_ENC_KEY_SIZE = 56
L2C_ERR_INVALID_CID = 51
L2C_ERR_INVALID_MPS_EXCEED = 50
L2C_ERR_INVALID_MTU_EXCEED = 49
L2C_ERR_INVALID_PDU = 52
L2C_ERR_INVALID_SCID = 61
L2C_ERR_LEPSM_NOT_SUPP = 58
L2C_ERR_NOT_UNDERSTOOD = 60
L2C_ERR_NO_MORE_CREDIT = 59
L2C_ERR_NO_RES_AVAIL = 53
L2C_ERR_SCID_ALLOCATED = 62
L2C_ERR_UNACCEPTABLE_PARAM = 63
LL_ERR_ACL_CON_EXISTS = 155
LL_ERR_AUTH_FAILURE = 149
LL_ERR_CHANNEL_CLASS_NOT_SUP = 190
LL_ERR_COMMAND_DISALLOWED = 156
LL_ERR_CONN_ACCEPT_TIMEOUT_EXCEED = 160
LL_ERR_CONN_FAILED_TO_BE_EST = 206
LL_ERR_CONN_REJ_LIMITED_RESOURCES = 157
LL_ERR_CONN_REJ_SECURITY_REASONS = 158
LL_ERR_CONN_REJ_UNACCEPTABLE_BDADDR = 159
LL_ERR_CONTROLLER_BUSY = 202
LL_ERR_CON_LIMIT_EXCEED = 153
LL_ERR_CON_TERM_BY_LOCAL_HOST = 166
LL_ERR_CON_TIMEOUT = 152
LL_ERR_DIFF_TRANSACTION_COLLISION = 186
LL_ERR_DIRECT_ADV_TO = 204
LL_ERR_EIR_TOO_LARGE = 198
LL_ERR_ENC_MODE_NOT_ACCEPT = 181
LL_ERR_HARDWARE_FAILURE = 147
LL_ERR_HOST_BUSY_PAIRING = 200
LL_ERR_INSTANT_PASSED = 184
LL_ERR_INSUFFICIENT_SECURITY = 191
LL_ERR_INVALID_HCI_PARAM = 162
LL_ERR_INVALID_LMP_PARAM = 174
LL_ERR_LMP_COLLISION = 179
LL_ERR_LMP_PDU_NOT_ALLOWED = 180
LL_ERR_LMP_RSP_TIMEOUT = 178
LL_ERR_MEMORY_CAPA_EXCEED = 151
LL_ERR_PAGE_TIMEOUT = 148
LL_ERR_PAIRING_NOT_ALLOWED = 168
LL_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUP = 185
LL_ERR_PARAM_OUT_OF_MAND_RANGE = 192
LL_ERR_PIN_MISSING = 150
LL_ERR_QOS_NOT_SUPPORTED = 183
LL_ERR_QOS_REJECTED = 189
LL_ERR_QOS_UNACCEPTABLE_PARAM = 188
LL_ERR_REMOTE_DEV_POWER_OFF = 165
LL_ERR_REMOTE_DEV_TERM_LOW_RESOURCES = 164
LL_ERR_REMOTE_USER_TERM_CON = 163
LL_ERR_REPEATED_ATTEMPTS = 167
LL_ERR_RESERVED_SLOT_VIOLATION = 196
LL_ERR_ROLE_CHANGE_NOT_ALLOWED = 177
LL_ERR_ROLE_SWITCH_FAIL = 197
LL_ERR_ROLE_SWITCH_PEND = 194
LL_ERR_SCO_AIR_MODE_REJECTED = 173
LL_ERR_SCO_INTERVAL_REJECTED = 172
LL_ERR_SCO_OFFSET_REJECTED = 171
LL_ERR_SP_NOT_SUPPORTED_HOST = 199
LL_ERR_SYNC_CON_LIMIT_DEV_EXCEED = 154
LL_ERR_TERMINATED_MIC_FAILURE = 205
LL_ERR_UNACCEPTABLE_CONN_INT = 203
LL_ERR_UNKNOWN_CONNECTION_ID = 146
LL_ERR_UNKNOWN_HCI_COMMAND = 145
LL_ERR_UNKNOWN_LMP_PDU = 169
LL_ERR_UNSPECIFIED_ERROR = 175
LL_ERR_UNSUPPORTED = 161
LL_ERR_UNSUPPORTED_LMP_PARAM_VALUE = 176
LL_ERR_UNSUPPORTED_REMOTE_FEATURE = 170
PRF_APP_ERROR = 128
PRF_ERR_DISCONNECTED = 142
PRF_ERR_FEATURE_NOT_SUPPORTED = 140
PRF_ERR_IND_DISABLED = 139
PRF_ERR_INEXISTENT_HDL = 130
PRF_ERR_INVALID_PARAM = 129
PRF_ERR_MULTIPLE_CHAR = 134
PRF_ERR_MULTIPLE_SVC = 132
PRF_ERR_NOT_READABLE = 136
PRF_ERR_NOT_WRITABLE = 135
PRF_ERR_NTF_DISABLED = 138
PRF_ERR_PROC_TIMEOUT = 143
PRF_ERR_REQ_DISALLOWED = 137
PRF_ERR_STOP_DISC_CHAR_MISSING = 131
PRF_ERR_STOP_DISC_WRONG_CHAR_PROP = 133
PRF_ERR_UNEXPECTED_LEN = 141
PRF_OUT_OF_RANGE = 255
SMP_ERROR_LOC_ADDR_RESOLV_FAIL = 109
SMP_ERROR_LOC_AUTH_REQ = 99
SMP_ERROR_LOC_CMD_NOT_SUPPORTED = 103
SMP_ERROR_LOC_CONF_VAL_FAILED = 100
SMP_ERROR_LOC_ENC_KEY_SIZE = 102
SMP_ERROR_LOC_INVALID_PARAM = 106
SMP_ERROR_LOC_LL_ERROR = 108
SMP_ERROR_LOC_OOB_NOT_AVAILABLE = 98
SMP_ERROR_LOC_PAIRING_NOT_SUPP = 101
SMP_ERROR_LOC_PASSKEY_ENTRY_FAILED = 97
SMP_ERROR_LOC_REPEATED_ATTEMPTS = 105
SMP_ERROR_LOC_REQ_DISALLOWED = 107
SMP_ERROR_LOC_SIGN_VERIF_FAIL = 110
SMP_ERROR_LOC_TIMEOUT = 111
SMP_ERROR_LOC_UNSPECIFIED_REASON = 104
SMP_ERROR_REM_AUTH_REQ = 115
SMP_ERROR_REM_CMD_NOT_SUPPORTED = 119
SMP_ERROR_REM_CONF_VAL_FAILED = 116
SMP_ERROR_REM_ENC_KEY_MISSING = 123
SMP_ERROR_REM_ENC_KEY_SIZE = 118
SMP_ERROR_REM_ENC_NOT_SUPPORTED = 124
SMP_ERROR_REM_ENC_TIMEOUT = 125
SMP_ERROR_REM_INVALID_PARAM = 122
SMP_ERROR_REM_OOB_NOT_AVAILABLE = 114
SMP_ERROR_REM_PAIRING_NOT_SUPP = 117
SMP_ERROR_REM_PASSKEY_ENTRY_FAILED = 113
SMP_ERROR_REM_REPEATED_ATTEMPTS = 121
SMP_ERROR_REM_UNSPECIFIED_REASON = 120
class ATT_PERM(value)[source]

Bases: IntEnum

Attribute permission

ATT_PERM_KEYSIZE_16 = 128
ATT_PERM_NONE = 0
ATT_PERM_READ = 1
ATT_PERM_READ_AUTH = 4
ATT_PERM_READ_ENCRYPT = 16
ATT_PERM_RW = 3
ATT_PERM_RW_AUTH = 12
ATT_PERM_RW_ENCRYPT = 48
ATT_PERM_WRITE = 2
ATT_PERM_WRITE_AUTH = 8
ATT_PERM_WRITE_ENCRYPT = 32
class ATT_UUID_TYPE(value)[source]

Bases: IntEnum

Attribute UUID Type, 16 bit or 128 bit

ATT_UUID_128 = 1
ATT_UUID_16 = 0
class AttUuid(uuid: Optional[bytes] = None)[source]

Bases: object

Attribute UUID

property uuid: bytes

py_ble_manager.ble_api.BleCommon module

class ADDR_TYPE(value)[source]

Bases: IntEnum

Bluetooth address type

PRIVATE_ADDRESS = 1
PUBLIC_ADDRESS = 0
class BLE_ERROR(value)[source]

Bases: IntEnum

BLE error code

BLE_ERROR_ALREADY_DONE = 2
BLE_ERROR_BUSY = 9
BLE_ERROR_CANCELED = 12
BLE_ERROR_DIFF_TRANS_COLLISION = 20
BLE_ERROR_ENC_KEY_MISSING = 13
BLE_ERROR_FAILED = 1
BLE_ERROR_INS_BANDWIDTH = 18
BLE_ERROR_INS_RESOURCES = 14
BLE_ERROR_INVALID_PARAM = 4
BLE_ERROR_IN_PROGRESS = 3
BLE_ERROR_L2CAP_MTU_EXCEEDED = 17
BLE_ERROR_L2CAP_NO_CREDITS = 16
BLE_ERROR_LMP_COLLISION = 19
BLE_ERROR_NOT_ACCEPTED = 8
BLE_ERROR_NOT_ALLOWED = 5
BLE_ERROR_NOT_CONNECTED = 6
BLE_ERROR_NOT_FOUND = 15
BLE_ERROR_NOT_SUPPORTED = 7
BLE_ERROR_NOT_SUPPORTED_BY_PEER = 11
BLE_ERROR_TIMEOUT = 10
BLE_STATUS_OK = 0
class BLE_EVT_CAT(value)[source]

Bases: IntEnum

BLE event categories

BLE_EVT_CAT_COMMON = 1
BLE_EVT_CAT_GAP = 2
BLE_EVT_CAT_GATTC = 4
BLE_EVT_CAT_GATTS = 3
BLE_EVT_CAT_L2CAP = 5
class BLE_EVT_COMMON(value)[source]

Bases: IntEnum

BLE Common events

BLE_EVT_RESET_COMPLETED = 256
class BLE_EVT_GAP(value)[source]

Bases: IntEnum

BLE GAP events

BLE_EVT_GAP_ADDRESS_RESOLUTION_FAILED = 533
BLE_EVT_GAP_ADDRESS_RESOLVED = 526
BLE_EVT_GAP_ADV_COMPLETED = 516
BLE_EVT_GAP_ADV_REPORT = 513
BLE_EVT_GAP_AIR_OP_BDADDR = 535
BLE_EVT_GAP_CONNECTED = 512
BLE_EVT_GAP_CONNECTION_COMPLETED = 531
BLE_EVT_GAP_CONN_PARAM_UPDATED = 519
BLE_EVT_GAP_CONN_PARAM_UPDATE_COMPLETED = 528
BLE_EVT_GAP_CONN_PARAM_UPDATE_REQ = 518
BLE_EVT_GAP_DATA_LENGTH_CHANGED = 529
BLE_EVT_GAP_DATA_LENGTH_SET_FAILED = 530
BLE_EVT_GAP_DISCONNECTED = 514
BLE_EVT_GAP_DISCONNECT_FAILED = 515
BLE_EVT_GAP_LOCAL_TX_PWR = 540
BLE_EVT_GAP_LTK = 543
BLE_EVT_GAP_LTK_MISSING = 534
BLE_EVT_GAP_NUMERIC_REQUEST = 532
BLE_EVT_GAP_PAIR_COMPLETED = 521
BLE_EVT_GAP_PAIR_REQ = 520
BLE_EVT_GAP_PASSKEY_NOTIFY = 523
BLE_EVT_GAP_PASSKEY_REQUEST = 524
BLE_EVT_GAP_PATH_LOSS_THRES = 542
BLE_EVT_GAP_PEER_FEATURES = 539
BLE_EVT_GAP_PEER_VERSION = 538
BLE_EVT_GAP_PHY_CHANGED = 537
BLE_EVT_GAP_PHY_SET_COMPLETED = 536
BLE_EVT_GAP_SCAN_COMPLETED = 517
BLE_EVT_GAP_SECURITY_REQUEST = 522
BLE_EVT_GAP_SEC_LEVEL_CHANGED = 525
BLE_EVT_GAP_SET_SEC_LEVEL_FAILED = 527
BLE_EVT_GAP_TX_PWR_REPORT = 541
class BLE_EVT_GATTC(value)[source]

Bases: IntEnum

BLE GATTC events

BLE_EVT_GATTC_BROWSE_COMPLETED = 1025
BLE_EVT_GATTC_BROWSE_SVC = 1024
BLE_EVT_GATTC_DISCOVER_CHAR = 1028
BLE_EVT_GATTC_DISCOVER_COMPLETED = 1030
BLE_EVT_GATTC_DISCOVER_DESC = 1029
BLE_EVT_GATTC_DISCOVER_INCLUDE = 1027
BLE_EVT_GATTC_DISCOVER_SVC = 1026
BLE_EVT_GATTC_INDICATION = 1034
BLE_EVT_GATTC_MTU_CHANGED = 1035
BLE_EVT_GATTC_NOTIFICATION = 1033
BLE_EVT_GATTC_READ_COMPLETED = 1031
BLE_EVT_GATTC_WRITE_COMPLETED = 1032
class BLE_EVT_GATTS(value)[source]

Bases: IntEnum

BLE GATTS events

BLE_EVT_GATTS_EVENT_SENT = 771
BLE_EVT_GATTS_PREPARE_WRITE_REQ = 770
BLE_EVT_GATTS_READ_REQ = 768
BLE_EVT_GATTS_WRITE_REQ = 769
class BLE_HCI_ERROR(value)[source]

Bases: IntEnum

BLE HCI error code

BLE_HCI_ERROR_ACL_CON_EXISTS = 11
BLE_HCI_ERROR_AUTH_FAILURE = 5
BLE_HCI_ERROR_CHANNEL_CLASS_NOT_SUP = 46
BLE_HCI_ERROR_COARSE_CLK_ADJUST_REJECTED = 64
BLE_HCI_ERROR_COMMAND_DISALLOWED = 12
BLE_HCI_ERROR_CONN_ACCEPT_TIMEOUT_EXCEED = 16
BLE_HCI_ERROR_CONN_FAILED_TO_BE_EST = 62
BLE_HCI_ERROR_CONN_REJ_LIMITED_RESOURCES = 13
BLE_HCI_ERROR_CONN_REJ_NO_SUITABLE_CHANNEL = 57
BLE_HCI_ERROR_CONN_REJ_SECURITY_REASONS = 14
BLE_HCI_ERROR_CONN_REJ_UNACCEPTABLE_BDADDR = 15
BLE_HCI_ERROR_CONTROLLER_BUSY = 58
BLE_HCI_ERROR_CON_LIMIT_EXCEED = 9
BLE_HCI_ERROR_CON_TERM_BY_LOCAL_HOST = 22
BLE_HCI_ERROR_CON_TIMEOUT = 8
BLE_HCI_ERROR_DIFF_TRANSACTION_COLLISION = 42
BLE_HCI_ERROR_DIRECT_ADV_TO = 60
BLE_HCI_ERROR_EIR_TOO_LARGE = 54
BLE_HCI_ERROR_ENC_MODE_NOT_ACCEPT = 37
BLE_HCI_ERROR_HARDWARE_FAILURE = 3
BLE_HCI_ERROR_HOST_BUSY_PAIRING = 56
BLE_HCI_ERROR_INSTANT_PASSED = 40
BLE_HCI_ERROR_INSUFFICIENT_SECURITY = 47
BLE_HCI_ERROR_INVALID_HCI_PARAM = 18
BLE_HCI_ERROR_INVALID_LMP_PARAM = 30
BLE_HCI_ERROR_LMP_COLLISION = 35
BLE_HCI_ERROR_LMP_PDU_NOT_ALLOWED = 36
BLE_HCI_ERROR_LMP_RSP_TIMEOUT = 34
BLE_HCI_ERROR_MAC_CONNECTION_FAILED = 63
BLE_HCI_ERROR_MEMORY_CAPA_EXCEED = 7
BLE_HCI_ERROR_NO_ERROR = 0
BLE_HCI_ERROR_PAGE_TIMEOUT = 4
BLE_HCI_ERROR_PAIRING_NOT_ALLOWED = 24
BLE_HCI_ERROR_PAIRING_WITH_UNIT_KEY_NOT_SUP = 41
BLE_HCI_ERROR_PARAM_OUT_OF_MAND_RANGE = 48
BLE_HCI_ERROR_PIN_MISSING = 6
BLE_HCI_ERROR_QOS_NOT_SUPPORTED = 39
BLE_HCI_ERROR_QOS_REJECTED = 45
BLE_HCI_ERROR_QOS_UNACCEPTABLE_PARAM = 44
BLE_HCI_ERROR_REMOTE_DEV_POWER_OFF = 21
BLE_HCI_ERROR_REMOTE_DEV_TERM_LOW_RESOURCES = 20
BLE_HCI_ERROR_REMOTE_USER_TERM_CON = 19
BLE_HCI_ERROR_REPEATED_ATTEMPTS = 23
BLE_HCI_ERROR_RESERVED_SLOT_VIOLATION = 52
BLE_HCI_ERROR_ROLE_CHANGE_NOT_ALLOWED = 33
BLE_HCI_ERROR_ROLE_SWITCH_FAIL = 53
BLE_HCI_ERROR_ROLE_SWITCH_PEND = 50
BLE_HCI_ERROR_SCO_AIR_MODE_REJECTED = 29
BLE_HCI_ERROR_SCO_INTERVAL_REJECTED = 28
BLE_HCI_ERROR_SCO_OFFSET_REJECTED = 27
BLE_HCI_ERROR_SP_NOT_SUPPORTED_HOST = 55
BLE_HCI_ERROR_SYNC_CON_LIMIT_DEV_EXCEED = 10
BLE_HCI_ERROR_TERMINATED_MIC_FAILURE = 61
BLE_HCI_ERROR_UNACCEPTABLE_CONN_INT = 59
BLE_HCI_ERROR_UNKNOWN = 65
BLE_HCI_ERROR_UNKNOWN_CONNECTION_ID = 2
BLE_HCI_ERROR_UNKNOWN_HCI_COMMAND = 1
BLE_HCI_ERROR_UNKNOWN_LMP_PDU = 25
BLE_HCI_ERROR_UNSPECIFIED_ERROR = 31
BLE_HCI_ERROR_UNSUPPORTED = 17
BLE_HCI_ERROR_UNSUPPORTED_LMP_PARAM_VALUE = 32
BLE_HCI_ERROR_UNSUPPORTED_REMOTE_FEATURE = 26
class BLE_STATUS(value)[source]

Bases: IntEnum

BLE status

BLE_IS_BUSY = 2
BLE_IS_DISABLED = 0
BLE_IS_ENABLED = 1
BLE_IS_RESET = 3
class BdAddress(addr_type: ADDR_TYPE = ADDR_TYPE.PUBLIC_ADDRESS, addr: Optional[bytes] = None)[source]

Bases: object

Bluetooth Device address

Variables:
  • addr_type – address type

  • addr – 6 byte address

class BleEventBase(evt_code)[source]

Bases: object

Base class for BLE events

Variables:

evt_code – event code

class BleEventResetCompleted(status: BLE_ERROR = BLE_ERROR.BLE_ERROR_FAILED)[source]

Bases: BleEventBase

Class for BLE_EVT_RESET_COMPLETED event

Variables:
  • evt_code – event code

  • status – event status

class Irk(key: Optional[bytes] = None)[source]

Bases: object

Identity Resolving Key

Variables:

key – 16 byte key

class OWN_ADDR_TYPE(value)[source]

Bases: IntEnum

Own device address type

PRIVATE_CNTL = 5
PRIVATE_RANDOM_NONRESOLVABLE_ADDRESS = 4
PRIVATE_RANDOM_RESOLVABLE_ADDRESS = 3
PRIVATE_STATIC_ADDRESS = 2
PUBLIC_STATIC_ADDRESS = 1
class OwnAddress(addr_type: OWN_ADDR_TYPE = OWN_ADDR_TYPE.PUBLIC_STATIC_ADDRESS, addr: Optional[bytes] = None)[source]

Bases: object

Own address

Variables:
  • addr_type – address type

  • addr – 6 byte address

py_ble_manager.ble_api.BleCommonApi module

class BleCommonApi(ble_manager: BleManager)[source]

Bases: BleApiBase

ble_reset() BLE_ERROR[source]
get_dev_version() Tuple[BleConfigDefault, BLE_ERROR][source]

py_ble_manager.ble_api.BleConfig module

class BLE_DEVICE_TYPE(value)[source]

Bases: IntEnum

An enumeration.

BROADCASTER = 4
CENTRAL = 1
NONE = 0
OBSERVER = 3
PERIPHERAL = 2
class BLE_HW_TYPE(value)[source]

Bases: IntEnum

An enumeration.

DA14531 = 1
DA14695 = 2
NONE = 0
class BleConfigDA14531(ble_device_type: BLE_DEVICE_TYPE = BLE_DEVICE_TYPE.CENTRAL)[source]

Bases: BleConfigDefault

DA14531 configuration for various BLE parameters

class BleConfigDA1469x(ble_device_type: BLE_DEVICE_TYPE = BLE_DEVICE_TYPE.CENTRAL)[source]

Bases: BleConfigDefault

DA14695 configuration for various BLE parameters

class BleConfigDefault(ble_device_type: BLE_DEVICE_TYPE = BLE_DEVICE_TYPE.CENTRAL)[source]

Bases: object

Default configuration for various BLE parameters

class DA14531VersionInd[source]

Bases: object

class DA14695VersionInd[source]

Bases: object

py_ble_manager.ble_api.BleConvert module

class BleConvert[source]

Bases: object

Utility class providing convenience methods for often used operations

1000 / 625 = BLE slot 1000 // 1250 = BLE double slot

static adv_interval_from_ms(intv_ms: int = 0)[source]
static adv_interval_to_ms(intv: int = 0)[source]
static ble_data_length_to_time(octets: int)[source]
static conn_event_length_from_ms(intv_ms: int = 0)[source]
static conn_event_length_to_ms(intv: int = 0)[source]
static conn_interval_from_ms(intv_ms: int = 0)[source]
static conn_interval_to_ms(intv: int = 0)[source]
static scan_interval_from_ms(intv_ms: int = 0)[source]
static scan_interval_to_ms(intv: int = 0)[source]
static scan_window_from_ms(intv_ms: int = 0)[source]
static scan_window_to_ms(intv: int = 0)[source]
static supervision_timeout_from_ms(intv_ms: int = 0)[source]
static supervision_timeout_to_ms(intv: int = 0)[source]

py_ble_manager.ble_api.BleGap module

class ADV_FILT_POL[source]

Bases: object

Advertising filter policy

ADV_ALLOW_SCAN_ANY_CONN_ANY = 0
ADV_ALLOW_SCAN_ANY_CONN_WLIST = <enum.auto object>
ADV_ALLOW_SCAN_WLIST_CONN_ANY = <enum.auto object>
ADV_ALLOW_SCAN_WLIST_CONN_WLIST = <enum.auto object>
class BLE_GAP_PHY(value)[source]

Bases: IntEnum

GAP PHY type

BLE_GAP_PHY_1M = 1
BLE_GAP_PHY_2M = 2
BLE_GAP_PHY_CODED = 3
BLE_GAP_PHY_PREF_AUTO = 0
class BleAdvData(type: GAP_DATA_TYPE = GAP_DATA_TYPE.GAP_DATA_TYPE_FLAGS, data: Optional[bytes] = None)[source]

Bases: object

Advertising AD Structure

Variables:
  • len – length of AD structure, AD type byte + length of data

  • type – AD Type

  • data – data for AD structure

property data
class BleEventGapAddressResolutionFailed(status: BLE_ERROR = BLE_ERROR.BLE_STATUS_OK)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_ADDRESS_RESOLUTION_FAILED event

Variables:
class BleEventGapAddressResolved(conn_idx: int = 0, resolved_address: Optional[BdAddress] = None, address: Optional[BdAddress] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_ADDRESS_RESOLVED event

Variables:
  • evt_code – event code, BLE_EVT_GAP_ADDRESS_RESOLVED

  • conn_idx – connection index

  • resolved_address – static address

  • address – random address

class BleEventGapAdvCompleted(adv_type: GAP_CONN_MODE = GAP_CONN_MODE.GAP_CONN_MODE_UNDIRECTED, status: BLE_ERROR = BLE_ERROR.BLE_STATUS_OK)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_ADV_COMPLETED event

Variables:
class BleEventGapAdvReport(type: GAP_ADV_TYPE = GAP_ADV_TYPE.CONN_UNDIR, address: Optional[BdAddress] = None, rssi: int = 0, data: Optional[bytes] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_ADV_REPORT event

Variables:
  • evt_code – event code, BLE_EVT_GAP_ADV_REPORT

  • type – type of advertising packet

  • address – BD address of advertising device

  • rssi – received signal strength

  • data – advertising data or scan response data

class BleEventGapAirOpBdAddr(address: Optional[OwnAddress] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_AIR_OP_BDADDR event

Variables:
class BleEventGapConnParamUpdateCompleted(conn_idx: int = 0, status: BLE_ERROR = BLE_ERROR.BLE_ERROR_FAILED)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_CONN_PARAM_UPDATE_COMPLETED event

Variables:
class BleEventGapConnParamUpdateReq(conn_idx: int = 0, conn_params: Optional[GapConnParams] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_CONN_PARAM_UPDATE_REQ event

Variables:
class BleEventGapConnParamUpdated(conn_idx: int = 0, conn_params: Optional[GapConnParams] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_CONN_PARAM_UPDATED event

Variables:
class BleEventGapConnected(conn_idx: int = 0, own_addr: Optional[OwnAddress] = None, peer_address: Optional[BdAddress] = None, conn_params: Optional[GapConnParams] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_CONNECTED event

Variables:
  • conn_idx – connection index, BLE_EVT_GAP_CONNECTED

  • own_addr – own address

  • peer_address – peer address

  • conn_params – connection parameters

class BleEventGapConnectionCompleted(status: BLE_ERROR = BLE_ERROR.BLE_ERROR_FAILED)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_CONNECTION_COMPLETED event

Variables:
class BleEventGapDataLengthChanged(conn_idx: int = 0, max_rx_length: int = 0, max_rx_time: int = 0, max_tx_length: int = 0, max_tx_time: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_DATA_LENGTH_CHANGED event

Variables:
  • evt_code – event code, BLE_EVT_GAP_DATA_LENGTH_CHANGED

  • conn_idx – connection index

  • max_rx_length – maximum number of payload octets in RX

  • max_rx_time – maximum time used for RX

  • max_tx_length – maximum number of payload octets in TX

  • max_tx_time – maximum time used for TX

class BleEventGapDataLengthSetFailed(conn_idx: int = 0, status: BLE_ERROR = BLE_ERROR.BLE_STATUS_OK)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_DATA_LENGTH_SET_FAILED event

Variables:
class BleEventGapDisconnectFailed(conn_idx: int = 0, status: BLE_ERROR = BLE_ERROR.BLE_ERROR_FAILED)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_DISCONNECT_FAILED event

Variables:
class BleEventGapDisconnected(conn_idx: int = 0, address: Optional[BdAddress] = None, reason: BLE_HCI_ERROR = BLE_HCI_ERROR.BLE_HCI_ERROR_NO_ERROR)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_DISCONNECTED event

Variables:
  • evt_code – event code, BLE_EVT_GAP_DISCONNECTED

  • conn_idx – connection index

  • address – BD address of disconnected device

  • reason – reason of disconnection

class BleEventGapLtkMissing(conn_idx: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_LTK_MISSING event

Variables:
class BleEventGapNumericRequest(conn_idx: int = 0, num_key: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_NUMERIC_REQUEST event

Variables:
class BleEventGapPairCompleted(conn_idx: int = 0, status: BLE_ERROR = BLE_ERROR.BLE_ERROR_FAILED, bond: bool = False, mitm: bool = False)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_PAIR_COMPLETED event

Variables:
  • evt_code – event code, BLE_EVT_GAP_PAIR_COMPLETED

  • conn_idx – connection index

  • status – completion status

  • bond – bond enabled flag

  • mitm – man in the middle (MITM) protection enabled flag

class BleEventGapPairReq(conn_idx: int = 0, bond: bool = False)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_PAIR_REQ event

Variables:
class BleEventGapPasskeyNotify(conn_idx: int = 0, passkey: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_PASSKEY_NOTIFY event

Variables:
class BleEventGapPeerFeatures(conn_idx: int = 0, le_features: Optional[bytes] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_PEER_FEATURES event

Variables:
  • evt_code – event code, BLE_EVT_GAP_PEER_FEATURES

  • conn_idx – connection index

  • le_features – 8-byte array for LE features

class BleEventGapPeerVersion(conn_idx: int = 0, lmp_version: int = 0, company_id: int = 0, lmp_subversion: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_PEER_VERSION event

Variables:
  • evt_code – event code, BLE_EVT_GAP_PEER_VERSION

  • conn_idx – connection index

  • lmp_version – supported Bluetooth LMP Specification

  • company_id – company ID

  • lmp_subversion – implementation subversion

class BleEventGapScanCompleted(scan_type: GAP_SCAN_TYPE = GAP_SCAN_TYPE.GAP_SCAN_ACTIVE, status: BLE_ERROR = BLE_ERROR.BLE_ERROR_FAILED)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_SCAN_COMPLETED event

Variables:
class BleEventGapSecLevelChanged(conn_idx: int = 0, level: GAP_SEC_LEVEL = GAP_SEC_LEVEL.GAP_SEC_LEVEL_1)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_SEC_LEVEL_CHANGED event

Variables:
class BleEventGapSecurityRequest(conn_idx: int = 0, bond: bool = False, mitm: bool = False)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_SECURITY_REQUEST event

Variables:
  • evt_code – event code, BLE_EVT_GAP_SECURITY_REQUEST

  • conn_idx – connection index

  • bond – bond requested flag

  • mitm – MITM requested flag

class BleEventGapSetSecLevelFailed(conn_idx: int = 0, status: BLE_ERROR = BLE_ERROR.BLE_ERROR_FAILED)[source]

Bases: BleEventBase

Class for BLE_EVT_GAP_SET_SEC_LEVEL_FAILED event

Variables:
class GAP_ADV_CHANNEL(value)[source]

Bases: IntEnum

_summary_ Channels used for advertising

GAP_ADV_CHANNEL_37 = 1
GAP_ADV_CHANNEL_38 = 2
GAP_ADV_CHANNEL_39 = 4
class GAP_ADV_TYPE(value)[source]

Bases: IntEnum

GAP Advertising Type

CONN_DIR = 1
CONN_DIR_LDC = 4
CONN_UNDIR = 0
DISC_UNDIR = 2
NONCONN_UNDIR = 3
class GAP_APPEARANCE(value)[source]

Bases: IntEnum

GAP device external appearance

BLE_GAP_APPEARANCE_BLOOD_PRESSURE_ARM = 897
BLE_GAP_APPEARANCE_BLOOD_PRESSURE_WRIST = 898
BLE_GAP_APPEARANCE_CYCLING_CADENCE_SENSOR = 1155
BLE_GAP_APPEARANCE_CYCLING_CYCLING_COMPUTER = 1153
BLE_GAP_APPEARANCE_CYCLING_POWER_SENSOR = 1156
BLE_GAP_APPEARANCE_CYCLING_SPEED_AND_CADENCE_SENSOR = 1157
BLE_GAP_APPEARANCE_CYCLING_SPEED_SENSOR = 1154
BLE_GAP_APPEARANCE_GENERIC_BARCODE_SCANNER = 704
BLE_GAP_APPEARANCE_GENERIC_BLOOD_PRESSURE = 896
BLE_GAP_APPEARANCE_GENERIC_CLOCK = 256
BLE_GAP_APPEARANCE_GENERIC_COMPUTER = 128
BLE_GAP_APPEARANCE_GENERIC_CYCLING = 1152
BLE_GAP_APPEARANCE_GENERIC_DISPLAY = 320
BLE_GAP_APPEARANCE_GENERIC_EYE_GLASSES = 448
BLE_GAP_APPEARANCE_GENERIC_GLUCOSE_METER = 1024
BLE_GAP_APPEARANCE_GENERIC_HEART_RATE_SENSOR = 832
BLE_GAP_APPEARANCE_GENERIC_HID = 960
BLE_GAP_APPEARANCE_GENERIC_KEYRING = 576
BLE_GAP_APPEARANCE_GENERIC_MEDIA_PLAYER = 640
BLE_GAP_APPEARANCE_GENERIC_OUTDOOR_SPORTS_ACTIVITY = 5184
BLE_GAP_APPEARANCE_GENERIC_PHONE = 64
BLE_GAP_APPEARANCE_GENERIC_PULSE_OXIMETER = 3136
BLE_GAP_APPEARANCE_GENERIC_REMOTE_CONTROL = 384
BLE_GAP_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR = 1088
BLE_GAP_APPEARANCE_GENERIC_TAG = 512
BLE_GAP_APPEARANCE_GENERIC_THERMOMETER = 768
BLE_GAP_APPEARANCE_GENERIC_WATCH = 192
BLE_GAP_APPEARANCE_GENERIC_WEIGHT_SCALE = 3200
BLE_GAP_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT = 833
BLE_GAP_APPEARANCE_HID_BARCODE_SCANNER = 968
BLE_GAP_APPEARANCE_HID_CARD_READER = 966
BLE_GAP_APPEARANCE_HID_DIGITAL_PEN = 967
BLE_GAP_APPEARANCE_HID_DIGITIZER_TABLET = 965
BLE_GAP_APPEARANCE_HID_GAMEPAD = 964
BLE_GAP_APPEARANCE_HID_JOYSTICK = 963
BLE_GAP_APPEARANCE_HID_KEYBOARD = 961
BLE_GAP_APPEARANCE_HID_MOUSE = 962
BLE_GAP_APPEARANCE_LAST = 5189
BLE_GAP_APPEARANCE_OUTDOOR_SPORTS_ACT_LOCATION_AND_NAVIGATION_DISPLAY = 5186
BLE_GAP_APPEARANCE_OUTDOOR_SPORTS_ACT_LOCATION_AND_NAVIGATION_POD = 5188
BLE_GAP_APPEARANCE_OUTDOOR_SPORTS_ACT_LOCATION_DISPLAY = 5185
BLE_GAP_APPEARANCE_OUTDOOR_SPORTS_ACT_LOCATION_POD = 5187
BLE_GAP_APPEARANCE_PULSE_OXIMETER_FINGERTIP = 3137
BLE_GAP_APPEARANCE_PULSE_OXIMETER_WRIST_WORN = 3138
BLE_GAP_APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE = 1089
BLE_GAP_APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP = 1091
BLE_GAP_APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE = 1090
BLE_GAP_APPEARANCE_THERMOMETER_EAR = 769
BLE_GAP_APPEARANCE_UNKNOWN = 0
BLE_GAP_APPEARANCE_WATCH_SPORTS_WATCH = 193
class GAP_CONN_MODE(value)[source]

Bases: IntEnum

GAP connectivity modes

GAP_CONN_MODE_DIRECTED = 2
GAP_CONN_MODE_DIRECTED_LDC = 3
GAP_CONN_MODE_NON_CONN = 0
GAP_CONN_MODE_UNDIRECTED = 1
class GAP_DATA_TYPE(value)[source]

Bases: IntEnum

GAP Advertising Data Types, as defined by Bluetooth Core 4.2 specification

note:: only data types valid for Advertising Data are included

GAP_DATA_TYPE_ADV_INTERVAL = 26
GAP_DATA_TYPE_APPEARANCE = 25
GAP_DATA_TYPE_CHNL_MAP_UPD_IND = 40
GAP_DATA_TYPE_CLASS_OF_DEVICE = 13
GAP_DATA_TYPE_FLAGS = 1
GAP_DATA_TYPE_INDOOR_POSITIONING = 37
GAP_DATA_TYPE_INFO_DATA_3D = 61
GAP_DATA_TYPE_LE_BT_ADDR = 27
GAP_DATA_TYPE_LE_ROLE = 28
GAP_DATA_TYPE_LE_SEC_CONN_CFM_VAL = 34
GAP_DATA_TYPE_LE_SEC_CONN_RAND_VAL = 35
GAP_DATA_TYPE_LE_SUPP_FEATURES = 39
GAP_DATA_TYPE_LOCAL_NAME = 9
GAP_DATA_TYPE_MANUFACTURER_SPEC = 255
GAP_DATA_TYPE_MESH_BEACON = 43
GAP_DATA_TYPE_MESH_MESSAGE = 42
GAP_DATA_TYPE_NONE = 0
GAP_DATA_TYPE_OOB_FLAGS = 17
GAP_DATA_TYPE_PB_ADV = 41
GAP_DATA_TYPE_PUBLIC_ADDRESS = 23
GAP_DATA_TYPE_RANDOM_ADDRESS = 24
GAP_DATA_TYPE_RESERVED1 = 19
GAP_DATA_TYPE_SHORT_LOCAL_NAME = 8
GAP_DATA_TYPE_SLAVE_CONN_INTV = 18
GAP_DATA_TYPE_SPAIR_HASH = 29
GAP_DATA_TYPE_SPAIR_RAND = 30
GAP_DATA_TYPE_SP_HASH_C = 14
GAP_DATA_TYPE_SP_RANDOMIZER_R = 15
GAP_DATA_TYPE_TK_VALUE = 16
GAP_DATA_TYPE_TRANSPORT_DISC_DATA = 38
GAP_DATA_TYPE_TX_POWER_LEVEL = 10
GAP_DATA_TYPE_URI = 36
GAP_DATA_TYPE_UUID128_LIST = 7
GAP_DATA_TYPE_UUID128_LIST_INC = 6
GAP_DATA_TYPE_UUID128_SOLIC = 21
GAP_DATA_TYPE_UUID128_SVC_DATA = 33
GAP_DATA_TYPE_UUID16_LIST = 3
GAP_DATA_TYPE_UUID16_LIST_INC = 2
GAP_DATA_TYPE_UUID16_SOLIC = 20
GAP_DATA_TYPE_UUID16_SVC_DATA = 22
GAP_DATA_TYPE_UUID32_LIST = 5
GAP_DATA_TYPE_UUID32_LIST_INC = 4
GAP_DATA_TYPE_UUID32_SOLIC = 31
GAP_DATA_TYPE_UUID32_SVC_DATA = 32
class GAP_DISC_MODE(value)[source]

Bases: IntEnum

GAP discoverability modes

GAP_DISC_MODE_BROADCASTER = 3
GAP_DISC_MODE_GEN_DISCOVERABLE = 1
GAP_DISC_MODE_LIM_DISCOVERABLE = 2
GAP_DISC_MODE_NON_DISCOVERABLE = 0
class GAP_IO_CAPABILITIES(value)[source]

Bases: IntEnum

GAP Input/Output capabilities

GAP_IO_CAP_DISP_ONLY = 0
GAP_IO_CAP_DISP_YES_NO = 1
GAP_IO_CAP_KEYBOARD_DISP = 4
GAP_IO_CAP_KEYBOARD_ONLY = 2
GAP_IO_CAP_NO_INPUT_OUTPUT = 3
class GAP_ROLE(value)[source]

Bases: IntEnum

GAP roles

GAP_ALL_ROLES = 15
GAP_BROADCASTER_ROLE = 2
GAP_CENTRAL_ROLE = 4
GAP_NO_ROLE = 0
GAP_OBSERVER_ROLE = 1
GAP_PERIPHERAL_ROLE = 8
class GAP_SCAN_MODE(value)[source]

Bases: IntEnum

Scanning modes

GAP_SCAN_GEN_DISC_MODE = 0
GAP_SCAN_LIM_DISC_MODE = 1
GAP_SCAN_OBSERVER_MODE = 2
class GAP_SCAN_TYPE(value)[source]

Bases: IntEnum

Scanning types

GAP_SCAN_ACTIVE = 0
GAP_SCAN_PASSIVE = 1
class GAP_SEC_LEVEL(value)[source]

Bases: IntEnum

GAP security levels

GAP_SEC_LEVEL_1 = 0
GAP_SEC_LEVEL_2 = 1
GAP_SEC_LEVEL_3 = 2
GAP_SEC_LEVEL_4 = 3
class GapChnlMap(map: Optional[bytes] = None)[source]

Bases: object

Link Layer channel map

Variables:

map – channel map

class GapConnParams(interval_min_ms: int = 0, interval_max_ms: int = 0, slave_latency: int = 0, sup_timeout_ms: int = 0)[source]

Bases: object

GAP connection parameters

Variables:
  • interval_min_ms – connection interval minimum in milliseconds

  • interval_max_ms – connection interval minimum in milliseconds

  • slave_latency – slave latency, in number of events

  • sup_timeout_ms – supervision timeout in milliseconds

class GapScanParams(interval_ms: int = 0, window_ms: int = 0)[source]

Bases: object

GAP scan parameters

Variables:
  • interval_ms – scan interval in milliseconds

  • window – scan window in milliseconds

py_ble_manager.ble_api.BleGapApi module

class BleGapApi(ble_manager: BleManager)[source]

Bases: BleApiBase

address_get() Tuple[OwnAddress, BLE_ERROR][source]
address_set(address: OwnAddress, renew_dur: int) BLE_ERROR[source]
adv_chnl_map_get() Tuple[int, BLE_ERROR][source]
adv_chnl_map_set(chnl_map: int) BLE_ERROR[source]
adv_data_get() Tuple[bytes, bytes, BLE_ERROR][source]
adv_data_set(adv_data_len: int = 0, adv_data: ~py_ble_manager.gtl_port.co_bt.c_ubyte_Array_31 = <py_ble_manager.gtl_port.co_bt.c_ubyte_Array_31 object>, scan_rsp_data_len: int = 0, scan_rsp_data: ~py_ble_manager.gtl_port.co_bt.c_ubyte_Array_31 = <py_ble_manager.gtl_port.co_bt.c_ubyte_Array_31 object>) BLE_ERROR[source]
adv_intv_get() Tuple[int, int, BLE_ERROR][source]
adv_intv_set(adv_intv_min_ms, adv_intv_max_ms) None[source]
adv_mode_get() Tuple[GAP_DISC_MODE, BLE_ERROR][source]
adv_mode_set(mode: GAP_DISC_MODE) BLE_ERROR[source]
adv_start(adv_type: GAP_CONN_MODE = GAP_CONN_MODE.GAP_CONN_MODE_UNDIRECTED) BLE_ERROR[source]
adv_stop() BLE_ERROR[source]
appearance_get() Tuple[GAP_APPEARANCE, BLE_ERROR][source]
appearance_set(appearance: GAP_APPEARANCE, perm: ATT_PERM) BLE_ERROR[source]
conn_param_update(conn_idx: int, conn_params: GapConnParams) BLE_ERROR[source]
conn_param_update_reply(conn_idx: int, accept: bool) BLE_ERROR[source]
connect(peer_addr: BdAddress, conn_params: GapConnParams) BLE_ERROR[source]
connect_cancel() BLE_ERROR[source]
data_length_set(conn_idx: int, tx_length: int, tx_time: int) BLE_ERROR[source]
device_name_get() Tuple[bytes, BLE_ERROR][source]
device_name_set(name: str, perm: ATT_PERM) BLE_ERROR[source]
disconnect(conn_idx: int, reason: BLE_HCI_ERROR) BLE_ERROR[source]
get_bonded() Tuple[list[py_ble_manager.ble_api.BleCommon.BdAddress], BLE_ERROR][source]
get_connected() Tuple[list[int], BLE_ERROR][source]
get_io_cap() Tuple[GAP_IO_CAPABILITIES, BLE_ERROR][source]
get_peer_tx_mtu(conn_idx) Tuple[int, BLE_ERROR][source]
get_sec_level(conn_idx: int) Tuple[GAP_SEC_LEVEL, BLE_ERROR][source]
mtu_size_get() Tuple[int, BLE_ERROR][source]
mtu_size_set(mtu_size: int) BLE_ERROR[source]
numeric_reply(conn_idx: int, accept: bool) BLE_ERROR[source]
pair(conn_idx: int, bond: bool) BLE_ERROR[source]
pair_reply(conn_idx: int, accept: bool, bond: bool) BLE_ERROR[source]
passkey_reply(conn_idx: int, accept: bool, passkey: int) BLE_ERROR[source]
peer_features_get(conn_idx: int) BLE_ERROR[source]
peer_version_get(conn_idx: int) BLE_ERROR[source]
per_pref_conn_params_get() Tuple[GapConnParams, BLE_ERROR][source]
per_pref_conn_params_set(conn_params: GapConnParams) BLE_ERROR[source]
role_get() Tuple[GAP_ROLE, BLE_ERROR][source]
role_set(role: GAP_ROLE) BLE_ERROR[source]
scan_params_get() Tuple[GapScanParams, BLE_ERROR][source]
scan_params_set(scan_params: GapScanParams) BLE_ERROR[source]
scan_start(type: GAP_SCAN_TYPE = GAP_SCAN_TYPE.GAP_SCAN_ACTIVE, mode: GAP_SCAN_MODE = GAP_SCAN_MODE.GAP_SCAN_GEN_DISC_MODE, interval: int = 0, window: int = 0, filt_wlist: bool = False, filt_dupl: bool = False) BLE_ERROR[source]
scan_stop() BLE_ERROR[source]
set_io_cap(io_cap: GAP_IO_CAPABILITIES) BLE_ERROR[source]
set_sec_level(conn_idx: int, level: GAP_SEC_LEVEL) BLE_ERROR[source]
unpair(addr: BdAddress) BLE_ERROR[source]

py_ble_manager.ble_api.BleGatt module

class GATT_CCC(value)[source]

Bases: IntEnum

GATT Client Characteristic Configuration bitmask values

GATT_CCC_INDICATIONS = 2
GATT_CCC_NONE = 0
GATT_CCC_NOTIFICATIONS = 1
class GATT_EVENT(value)[source]

Bases: IntEnum

GATT event type

GATT_EVENT_INDICATION = 1
GATT_EVENT_NOTIFICATION = 0
class GATT_PROP(value)[source]

Bases: IntEnum

GATT characteristic properties

GATT_PROP_BROADCAST = 1
GATT_PROP_EXTENDED = 128
GATT_PROP_EXTENDED_RELIABLE_WRITE = 256
GATT_PROP_EXTENDED_WRITABLE_AUXILIARIES = 512
GATT_PROP_INDICATE = 32
GATT_PROP_NONE = 0
GATT_PROP_NOTIFY = 16
GATT_PROP_READ = 2
GATT_PROP_WRITE = 8
GATT_PROP_WRITE_NO_RESP = 4
GATT_PROP_WRITE_SIGNED = 64
class GATT_SERVICE(value)[source]

Bases: IntEnum

GATT service type

GATT_SERVICE_PRIMARY = 0
GATT_SERVICE_SECONDARY = 1

py_ble_manager.ble_api.BleGattc module

class BleEventGattcBrowseCompleted(conn_idx: int = 0, status: BLE_ERROR = BLE_ERROR.BLE_ERROR_FAILED)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_BROWSE_COMPLETED event

Variables:
class BleEventGattcBrowseSvc(conn_idx: int = 0, uuid: Optional[AttUuid] = None, start_h: int = 0, end_h: int = 0, num_items: int = 0, items: Optional[list[py_ble_manager.ble_api.BleGattc.GattcItem]] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_BROWSE_SVC event

Variables:
  • evt_code – event code, BLE_EVT_GATTC_BROWSE_SVC

  • conn_idx – connection index

  • uuid – service uuid

  • start_h – service start handle

  • end_h – service end handle

  • num_items – number of items in service

  • items – items found in service

class BleEventGattcDiscoverChar(conn_idx: int = 0, uuid: Optional[AttUuid] = None, handle: int = 0, value_handle: int = 0, properties: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_DISCOVER_CHAR event

Variables:
  • evt_code – event code, BLE_EVT_GATTC_DISCOVER_CHAR

  • conn_idx – connection index

  • uuid – characteristic UUID

  • handle – characteristic handle

  • value_handle – characteristic value handle

  • properties – characteristic properties

class BleEventGattcDiscoverCompleted(conn_idx: int = 0, type: GATTC_DISCOVERY_TYPE = GATTC_DISCOVERY_TYPE.GATTC_DISCOVERY_TYPE_SVC, status: BLE_ERROR = BLE_ERROR.BLE_ERROR_FAILED)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_DISCOVER_COMPLETED event

Variables:
class BleEventGattcDiscoverDesc(conn_idx: int = 0, uuid: Optional[AttUuid] = None, handle: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_DISCOVER_DESC event

Variables:
  • evt_code – event code, BLE_EVT_GATTC_DISCOVER_DESC

  • conn_idx – connection index

  • uuid – characteristic descriptor UUID

  • handle – characteristic descriptor handle

class BleEventGattcDiscoverInclude(conn_idx: int = 0, handle: int = 0, uuid: Optional[AttUuid] = None, start_h: int = 0, end_h: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_DISCOVER_INCLUDE event

Variables:
  • evt_code – event code, BLE_EVT_GATTC_DISCOVER_INCLUDE

  • conn_idx – connection index

  • handle – include attribute handle

  • uuid – included service UUID

  • start_h – included service start handle

  • end_h – included service end handle

class BleEventGattcDiscoverSvc(conn_idx: int = 0, uuid: Optional[AttUuid] = None, start_h: int = 0, end_h: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_DISCOVER_SVC event

Variables:
  • evt_code – event code, BLE_EVT_GATTC_DISCOVER_SVC

  • conn_idx – connection index

  • uuid – service UUID

  • start_h – service start handle

  • end_h – service end handle

class BleEventGattcIndication(conn_idx: int = 0, handle: int = 0, value: Optional[bytes] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_INDICATION event

Variables:
  • evt_code – event code, BLE_EVT_GATTC_INDICATION

  • conn_idx – connection index

  • handle – attribute handle

  • value – data value

class BleEventGattcMtuChanged(conn_idx: int = 0, mtu: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_MTU_CHANGED event

Variables:
class BleEventGattcNotification(conn_idx: int = 0, handle: int = 0, value: Optional[bytes] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_NOTIFICATION event

Variables:
  • evt_code – event code, BLE_EVT_GATTC_NOTIFICATION

  • conn_idx – connection index

  • handle – attribute handle

  • value – data value

class BleEventGattcReadCompleted(conn_idx: int = 0, handle: int = 0, status: ATT_ERROR = ATT_ERROR.ATT_ERROR_OK, offset: int = 0, value: Optional[bytes] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_READ_COMPLETED event

Variables:
  • evt_code – event code, BLE_EVT_GATTC_READ_COMPLETED

  • conn_idx – connection index

  • handle – attribute handle

  • status – operation status

  • offset – value offset

  • value – data value

class BleEventGattcWriteCompleted(conn_idx: int = 0, handle: int = 0, status: ATT_ERROR = ATT_ERROR.ATT_ERROR_OK, operation: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTC_WRITE_COMPLETED event

Variables:
  • evt_code – event code, BLE_EVT_GATTC_WRITE_COMPLETED

  • conn_idx – connection index

  • handle – attribute handle (will be 0 for write_execute())

  • status – operation status

  • operation – operation type

class GATTC_DISCOVERY_TYPE(value)[source]

Bases: IntEnum

GATT Discovery type

GATTC_DISCOVERY_TYPE_CHARACTERISTICS = 2
GATTC_DISCOVERY_TYPE_DESCRIPTORS = 3
GATTC_DISCOVERY_TYPE_INCLUDED = 1
GATTC_DISCOVERY_TYPE_SVC = 0
class GATTC_ITEM_TYPE(value)[source]

Bases: IntEnum

Service item type

GATTC_ITEM_TYPE_CHARACTERISTIC = 2
GATTC_ITEM_TYPE_DESCRIPTOR = 3
GATTC_ITEM_TYPE_INCLUDE = 1
GATTC_ITEM_TYPE_NONE = 0
class GattcCharacteristicData(value_handle: int = 0, properties: int = 0)[source]

Bases: object

GATT Characteristic data

Variables:
  • value_handle – characteristic value handle

  • properties – characteristic properties

class GattcIncludedServiceData(start_h: int = 0, end_h: int = 0)[source]

Bases: object

GATT Service data

Variables:
  • start_h – included service start handle

  • end_h – included service end handle

class GattcItem(uuid: Optional[AttUuid] = None, handle: int = 0, type: GATTC_ITEM_TYPE = GATTC_ITEM_TYPE.GATTC_ITEM_TYPE_NONE, service_data: Optional[GattcIncludedServiceData] = None, char_data: Optional[GattcCharacteristicData] = None)[source]

Bases: object

Service item definition

Variables:
  • uuid – item uuid

  • handle – item handle

  • type – item type

  • service_data – included service data

  • char_data – characteristic data

py_ble_manager.ble_api.BleGattcApi module

class BleGattcApi(ble_manager: BleManager)[source]

Bases: BleApiBase

browse(conn_idx: int, uuid: AttUuid) BLE_ERROR[source]
browse_range(conn_idx: int, start_h: int, end_h: int, uuid: AttUuid) BLE_ERROR[source]
discover_characteristics(conn_idx: int, start_h: int, end_h: int, uuid: AttUuid) BLE_ERROR[source]
discover_descriptors(conn_idx: int, start_h: int, end_h: int) BLE_ERROR[source]
discover_include(conn_idx: int, start_h: int, end_h: int)[source]
discover_services(conn_idx: int, uuid: AttUuid)[source]
exchange_mtu(conn_idx: int)[source]
read(conn_idx: int, handle: int, offset: int) BLE_ERROR[source]
write(conn_idx: int, handle: int, offset: int, value: bytes) BLE_ERROR[source]
write_execute(conn_idx: int, commit: bool) BLE_ERROR[source]
write_no_resp(conn_idx: int, handle: int, signed_write: bool, value: bytes) BLE_ERROR[source]
write_prepare(conn_idx: int, handle: int, offset: int, value: bytes) BLE_ERROR[source]

py_ble_manager.ble_api.BleGatts module

class BleEventGattsEventSent(conn_idx: int = 0, handle: int = 0, type: GATT_EVENT = GATT_EVENT.GATT_EVENT_NOTIFICATION, status: bool = False)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTS_EVENT_SENT event

Variables:
  • evt_code – event code, BLE_EVT_GATTS_EVENT_SENT

  • conn_idx – connection index

  • handle – attribute handle

  • type – event type

  • status – event status

class BleEventGattsPrepareWriteReq(conn_idx: int = 0, handle: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTS_PREPARE_WRITE_REQ event

Variables:
class BleEventGattsReadReq(conn_idx: int = 0, handle: int = 0, offset: int = 0)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTS_READ_REQ event

Variables:
  • evt_code – event code, BLE_EVT_GATTS_READ_REQ

  • conn_idx – connection index

  • handle – attribute handle

  • offset – attribute value offset

class BleEventGattsWriteReq(conn_idx: int = 0, handle: int = 0, offset: int = 0, value: Optional[bytes] = None)[source]

Bases: BleEventBase

Class for BLE_EVT_GATTS_WRITE_REQ event

Variables:
  • evt_code – event code, BLE_EVT_GATTS_WRITE_REQ

  • conn_idx – connection index

  • handle – attribute handle

  • offset – attribute value offset

  • offset – attribute value

class GATTS_FLAG(value)[source]

Bases: IntEnum

GATTS Flag to indicate if attribute supports read indications

GATTS_FLAG_CHAR_NO_READ_REQ = 0
GATTS_FLAG_CHAR_READ_REQ = 1

py_ble_manager.ble_api.BleGattsApi module

class BleGattsApi(ble_manager: BleManager)[source]

Bases: BleApiBase

add_characteristic(uuid: Optional[AttUuid] = None, prop: GATT_PROP = GATT_PROP.GATT_PROP_NONE, perm: ATT_PERM = ATT_PERM.ATT_PERM_NONE, max_len: int = 0, flags: GATTS_FLAG = GATTS_FLAG.GATTS_FLAG_CHAR_READ_REQ) Tuple[int, int, BLE_ERROR][source]
add_descriptor(uuid: Optional[AttUuid] = None, perm: ATT_PERM = ATT_PERM.ATT_PERM_NONE, max_len: int = 0, flags: GATTS_FLAG = GATTS_FLAG.GATTS_FLAG_CHAR_READ_REQ) Tuple[int, BLE_ERROR][source]
add_include(handle: int = 0) BLE_ERROR[source]
add_service(uuid: Optional[AttUuid] = None, type: GATT_SERVICE = GATT_SERVICE.GATT_SERVICE_PRIMARY, num_attrs: int = 0) BLE_ERROR[source]
get_value(handle: int = 0, max_len: int = 0) Tuple[bytes, BLE_ERROR][source]
prepare_write_cfm(conn_idx: int = 0, handle: int = 0, length: int = 0, status: ATT_ERROR = ATT_ERROR.ATT_ERROR_OK) BLE_ERROR[source]
read_cfm(conn_idx: int = 0, handle: int = 0, status: ATT_ERROR = ATT_ERROR.ATT_ERROR_OK, value: Optional[bytes] = None) BLE_ERROR[source]
register_service(svc: BleServiceBase) BLE_ERROR[source]
send_event(conn_idx: int = 0, handle: int = 0, type: GATT_EVENT = GATT_EVENT.GATT_EVENT_NOTIFICATION, value: Optional[bytes] = None) BLE_ERROR[source]
set_value(handle: int = 0, value: Optional[bytes] = None) BLE_ERROR[source]
write_cfm(conn_idx: int = 0, handle: int = 0, status: ATT_ERROR = ATT_ERROR.ATT_ERROR_OK) BLE_ERROR[source]

py_ble_manager.ble_api.BleStorageApi module

class BleStorageApi(ble_manager: BleManager)[source]

Bases: BleApiBase

get_buffer(conn_idx: int, key: int) tuple[bytes, py_ble_manager.ble_api.BleCommon.BLE_ERROR][source]
get_int(conn_idx: int, key: int) tuple[int, py_ble_manager.ble_api.BleCommon.BLE_ERROR][source]
put_buffer(conn_idx: int, key: int, value: bytes, persistent: bool) BLE_ERROR[source]
put_int(conn_idx: int, key: int, value: int, persistent: bool) BLE_ERROR[source]

py_ble_manager.ble_api.BleUtil module

class BleUtils[source]

Bases: object

Utility class providing convenience methods for often used operations

static bd_addr_to_str(bd: BdAddress) str[source]

Convert BD address to string of form “48:23:35:00:1b:53,P”, where P is a public address and R is a random address

Parameters:

bd (BdAddress) – BD address to convert to string

Returns:

string of the form “48:23:35:00:1b:53,P”

Return type:

str

static parse_adv_data_from_bytes(data: bytes) list[py_ble_manager.ble_api.BleGap.BleAdvData][source]

“Generate AD structures from bytes

Parameters:

data (bytes) – advertising data

Returns:

list of AD structures

Return type:

list[BleAdvData]

static str_to_bd_addr(bd_addr_str: str) BdAddress[source]

Convert a string to a BD address

static uuid_from_str(uuid_str: str) AttUuid[source]

Convert a string to a AttUuid

..note:

Expect UUID of form: 21ce31fc-da27-11ed-afa1-0242ac120002

param uuid_str:

string to convert

type uuid_str:

str

return:

AttUuid corresponding to the input string

rtype:

AttUuid

static uuid_to_str(uuid: AttUuid) str[source]

Convert a AttUuid to a string

Parameters:

uuid (AttUuid) – uuid to convert

Returns:

string corresponding to the input AttUuid

Return type:

str

py_ble_manager.ble_api.BleUuid module

Module contents