8.10. bluetooth 模块 API 文档
8.10.1. API
创建具有指定值的 UUID 实例
该值可以是
一个 16 位整数. 例如
0x2908
一个 32 位整数. 例如
0x29081234
一个 128 位的 UUID 字符串。例如
'6E400001-B5A3-F393-E0A9-E50E24DCCA9E'
.
8.10.1.1. class UUID():
def __init__(self,value):...
def _UUID_to_bytes(self,value):...
8.10.1.2. class BLE(_bluetooth.BLE):
def __init__(self):...
def test(self):...
def test2(self):...
def test3(self,connhandle,valuehandle):...
def test4(self,data):...
def test_call_some_name(self):...
def _check_active(self):...
可选择更改 BLE 无线电的活动状态,并返回当前状态。
Args:
active(bool): 为 1 则开启BLE, 否则关闭BLE; 为空则查询当前BLE状态
Returns:
bool:设置状态时,返回操作成功与否; 查询状态时, 返回状态, True为活跃
def active(self,active_flag=None):...
获取或设置 BLE 接口的配置值。
要获得一个值,参数名称应该被引用为一个字符串,并且一次只查询一个参数。
如 config("gap_name")
要设置值,请使用关键字语法,并且一次可以设置一个或多个参数。
如 config(gap_name="nimble")
当前支持的值是:
'mac'
:
TODO:需要支持设置任意值嘛?有点困难
'addr_mode'
:'gap_name'
:'rxbuf'
:
TODO:暂未支持, 没找到对应函数
'mtu'
:
TODO:不明意义
'bond'
:
TODO: 目前提供的接口不支持
'mitm'
:
TODO: 目前提供的接口不支持
'io'
:
TODO:未找到对应函数
'lesure'
:
TODO:只支持设置
def config(self,*param_name,**kv):...
为来自 BLE 堆栈的事件注册回调。
处理程序采用两个参数,event(在下面的代码中的一个) 和 data(其是值的特定事件元组)。
def irq(self,func):...
def _callback(self,data):...
以指定的时间间隔(以微秒为单位)开始广播。
adv_data和resp_data可以是任何实现缓冲协议的类型(例如bytes, bytearray, str)。adv_data包含在所有广播中,并且resp_data被发送以响应主动扫描。
注意:如果adv_data(或resp_data)是None, 则传递给前一个调用的数据 gap_advertise将被重新使用。
要清除广告有效负载, 请传递一个空值bytes, 即b’’
Args:
interval_us(int):广播时间间隔, 单位us. 此间隔将向下舍入到最接近的 625us的倍数。要停止广告, 请将interval_us设置 为 None。
adv_data(bytes, bytearray, str): 自定义广播数据(添加到默认广播数据后),默认值为none
TODO:1.append模式只能是0XFF数据; 归零模式全部自定义输入
resp_data(bytes, bytearray, str): 扫描响应数据,默认值为none
connectable(bool): 是否可连接, True 为可连接.
adv_data_append: 是否是增加数据
TODO:存在问题
def gap_advertise(self,interval_us,adv_data=None,resp_data=None,connectable=None,adv_data_append=None):...
运行持续指定持续时间(以毫秒为单位)的扫描操作。
要无限期扫描, 请将duration_ms设置为0;要停止扫描,请将duration_ms设置为 None.
使用interval_us和window_us可选择配置占空比。扫描器将每interval_us微秒运行window_us 微秒,总共持续duration_ms毫秒。
默认间隔和窗口分别为 1.28 秒和 11.25 毫秒(后台扫描).
对于每个扫描结果, _IRQ_SCAN_RESULT将引发事件, 并带有事件数据。(addr_type, addr, adv_type, rssi, adv_data)
Args:
duration_ms(int):扫描持续时间。要无限期扫描, 请将duration_ms设置为0;要停止扫描,请将duration_ms设置为 None.
interval_us(int): 扫描间间隔时间。默认值为1280000
window_us(int): 扫描窗口时间。默认值为11250
active(bool): 是否接受扫描响应。默认值False(不接受)
Return:
操作成功返回 0; 否则返回错误代码
events:
单个扫描结果触发 _IRQ_SCAN_RESULT
扫描结束触发 _IRQ_SCAN_DONE
def gap_scan(self,duration_ms,interval_us=1280000,window_us=11250,active=False):...
central 设备连接 peripherals 设备
Args:
peer_addr(list,bytes,bytearray): 需要连接的设备的mac地址
peer_addr_type(int): 连接设备的地址类型
0x00 - PUBLIC - 使用控制器的公共地址。
0x01 - RANDOM - 使用生成的静态地址。
0x02 - RPA - 使用可解析的私有地址。
0x03 - NRPA - 使用不可解析的私有地址。
Return:
(int): 操作成功返回 0; 否则返回错误代码
events:
连接成功触发 CENTRAL设备:_IRQ_PERIPHERAL_CONNECT; PERIPHERAL设备:_IRQ_CENTRAL_CONNECT
def gap_connect(self,peer_addr,peer_addr_type,scan_duration_ms=2000):...
Args:
conn_handle(int): 连接句柄
Return:
(int): 操作成功返回 0; 否则返回错误代码
events:
断连成功触发 CENTRAL设备:_IRQ_PERIPHERAL_DISCONNECT; PERIPHERAL设备:_IRQ_CENTRAL_DISCONNECT
def gap_disconnect(self,conn_handle):...
使用指定的服务配置服务器,替换任何现有服务。
Args:
services(嵌套多层tuple):
Return:
(int): 操作成功返回 0; 否则返回错误代码
def gatts_register_services(self,services):...
Args:
value_handle(int): 蓝牙特性句柄
Return:
(int): 操作成功返回 0; 否则返回错误代码
def gatts_read(self,value_handle):...
Args:
value_handle(int): 蓝牙特性句柄
data(str,int,bytes,list(元素为小于256大于0的整数)): 修改的数据
send_update(bool):是否通知客户端, False为不通知, 默认为False
Return:
(int): 操作成功返回 0; 否则返回错误代码
events:
send_update 为 True 时, 触发tx事件
def gatts_write(self,value_handle,data,send_update=False):...
向连接的客户端发送通知请求。
Args:
conn_handle(int): 连接句柄
value_handle(int): 蓝牙特性句柄
data(str,int,bytes,list(元素为小于256大于0的整数)): 发送的数据, 默认值为None
如果data不是None, 则该值将作为通知的一部分发送给客户端。本地值不会被修改。否则, 如果data是None, 则将发送当前本地值
Return:
(int): 操作成功返回 0; 否则返回错误代码
events:
def gatts_notify(self,conn_handle,value_handle,data=None):...
Args:
Return:
操作是否成功
events:
def gatts_indicate(self,conn_handle,value_handle,data=None):...
Args:
Return:
操作是否成功
events:
def gatts_set_buffer(self,value_handle,len,append=False):...
打印全部本地服务
def gatts_show_local(self):...
Args:
Return:
操作是否成功
events:
def gattc_discover_services(self,conn_handle,uuid:UUID=None):...
Args:
Return:
操作是否成功
events:
def gattc_discover_characteristics(self,conn_handle,start_handle,end_handle,uuid:UUID=None):...
Args:
Return:
操作是否成功
events:
def gattc_discover_descriptors(self,conn_handle,start_handle,end_handle):...
Args:
Return:
操作是否成功
events:
def gattc_read(self,conn_handle,value_handle):...
Args:
Return:
操作是否成功
注意:单次传输最多95个byte
events:
def gattc_write(self,conn_handle,value_handle,data,mode=0):...
Args:
Return:
操作是否成功
events:
def gattc_exchange_mtu(self,conn_handle):...
def gattc_subscribe(self,conn_handle,value_handle,subscribe=0):...
def _c2value(self,handle):...
def _py2value(self,handle):...
def _c2_change_value(self,handle,value):...
def _py2_change_value(self,handle,value):...
def _convert_ble_service_info(data):...
def _count_chrs(srvs_tuple):...
def _to_bytes(data,size=None):...