btcore ====== 作者:汪远 更新时间:2021年1月11日 .. rubric:: BLE 蓝牙功能 :name: ble-蓝牙功能 -------------- BLE 蓝牙主从模式 **打开蓝牙** ~~~~~~~~~~~~ - 语法 ``btcore.open(mode)`` - 参数 ==== ============ ============================= 参数 释义 取值范围 ==== ============ ============================= mode 区分主从模式 主模式:mode=1 从模式:mode=0 ==== ============ ============================= - 返回 成功:0 失败:-1 **关闭蓝牙** ~~~~~~~~~~~~ - 语法 ``btcore.close()`` - 参数 无 - 返回 成功:0 失败:-1 ### **查询蓝牙状态** - 语法 ``btcore.state()`` - 参数 无 - 返回 0:蓝牙状态开启 -1:蓝牙状态关闭 **蓝牙主动断开连接** ~~~~~~~~~~~~~~~~~~~~ - 语法 ``btcore.disconnect(handle)`` - 参数 ====== ======== 参数 释义 ====== ======== handle 连接句柄 ====== ======== - 返回 成功:0 失败:-1 **蓝牙连接** ~~~~~~~~~~~~ - 语法 ``btcore.connect(addr,addr_type)`` - 参数 ========= ======== 参数 释义 ========= ======== addr_type 地址类型 addr 蓝牙地址 ========= ======== - 返回 成功:0 失败:-1 **设置蓝牙名称** ~~~~~~~~~~~~~~~~ - 语法 ``btcore.setname(name)`` - 参数 ==== ======== ========== 参数 释义 取值范围 ==== ======== ========== name 蓝牙名称 最大26字节 ==== ======== ========== - 返回 成功:0 失败:-1 **设置蓝牙广播包数据** ~~~~~~~~~~~~~~~~~~~~~~ - 语法 ``btcore.setadvdata(data)`` - 参数 ==== ========== ========== 参数 释义 取值范围 ==== ========== ========== data 广播包数据 最大31字节 ==== ========== ========== - 返回 成功:0 失败:-1 **设置蓝牙响应包数据** ~~~~~~~~~~~~~~~~~~~~~~ - 语法 ``btcore.setscanrspdata(data)`` - 参数 ==== ========== ========== 参数 释义 取值范围 ==== ========== ========== data 响应包数据 最大31字节 ==== ========== ========== - 返回 成功:0 失败:-1 **设置蓝牙beacon数据** ~~~~~~~~~~~~~~~~~~~~~~ - 语法 ``btcore.setbeacondata(uuid,major,minor)`` - 参数 ===== ====== ======== 参数 释义 取值范围 ===== ====== ======== uuid 字符串 128位 major 编号 0~65535 minor 标号 0~65535 ===== ====== ======== UUID :这是将你所有的beacon与其他人的beacon设备区别开的id!例如,目前在商店里某个区域分布着多个beacon形成一条“链带”,用于为顾客提供特定的服务,那么归属于同一条“链带”的beacon将分配到相同的proximity UUID。为这条“链带”设计的专用应用程序将会在后台使用这个UUID扫描到这条“链带”中的beacon设备。 major 编号:用于将相关的beacon标识为一组。例如,一个商店中的所有beacon将会分配到相同的major编号。通过这种方式,应用程序就能够知道顾客位于哪一家商店。 minor 标号:用于标识特定的beacon设备。例如一个商店中的每一个beacon设备都拥有唯一的minor编号,这样你才能够知道顾客位于商店中的哪个位置。 - 返回 成功:0 失败:-1 **蓝牙广播开关** ~~~~~~~~~~~~~~~~ - 语法 ``btcore.advertising(enable)`` - 参数 ====== ======== ===================== 参数 释义 取值范围 ====== ======== ===================== enable 广播开关 1 打开广播 0 关闭广播 ====== ======== ===================== - 返回 成功:0 失败:-1 **蓝牙扫描开关** ~~~~~~~~~~~~~~~~ - 语法 ``btcore.scan(enable)`` - 参数 ====== ======== ===================== 参数 释义 取值范围 ====== ======== ===================== enable 扫描开关 1 打开扫描 0 关闭扫描 ====== ======== ===================== - 返回 成功:0 失败:-1 **蓝牙添加服务** ~~~~~~~~~~~~~~~~ - 语法 ``btcore.addservice(uuid_s)`` - 参数 ====== ======== =================================== 参数 释义 取值范围 ====== ======== =================================== uuid_s 服务uuid 16bit uuid int型 128bit uuid 字符串 ====== ======== =================================== - 返回 成功:0 失败:-1 **蓝牙添加特征** ~~~~~~~~~~~~~~~~ - 语法 ``btcore.addcharacteristic(uuid_c,type,permission)`` - 参数 ========== ======== =================================== 参数 释义 取值范围 ========== ======== =================================== uuid_c 特征uuid 16bit uuid int型 128bit uuid 字符串 type 特征属性 permission 特征权限 ========== ======== =================================== 特征属性配置: :: #define ATT_CHARA_PROP_BROADCAST 0x01 #define ATT_CHARA_PROP_READ 0x02 #define ATT_CHARA_PROP_WWP 0x04 // WWP short for "write without response" #define ATT_CHARA_PROP_WRITE 0x08 #define ATT_CHARA_PROP_NOTIFY 0x10 #define ATT_CHARA_PROP_INDICATE 0x20 #define ATT_CHARA_PROP_ASW 0x40 // ASW short for "Authenticated signed write" #define ATT_CHARA_PROP_EX_PROP 0x80 特征权限配置: :: #define ATT_PM_READABLE 0x0001 #define ATT_PM_WRITEABLE 0x0002 #define ATT_PM_R_AUTHENT_REQUIRED 0x0004 #define ATT_PM_R_AUTHORIZE_REQUIRED 0x0008 #define ATT_PM_R_ENCRYPTION_REQUIRED 0x0010 #define ATT_PM_R_AUTHENT_MITM_REQUERED 0x0020 #define ATT_PM_W_AUTHENT_REQUIRED 0x0040 #define ATT_PM_W_AUTHORIZE_REQUIRED 0x0080 #define ATT_PM_W_ENCRYPTION_REQUIRED 0x0100 #define ATT_PM_W_AUTHENT_MITM_REQUERED 0x0200 #define ATT_PM_BR_ACCESS_ONLY 0x0400 - 返回 成功:0 失败:-1 **蓝牙添加描述** ~~~~~~~~~~~~~~~~ - 语法 ``btcore.adddescriptor(uuid_d,value)`` - 参数 ====== ======== ================ 参数 释义 取值范围 ====== ======== ================ uuid_d 描述uuid 16bit uuid int型 value 描述属性 int型/字符串 ====== ======== ================ - 返回 成功:0 失败:-1 **蓝牙发现服务** ~~~~~~~~~~~~~~~~ - 语法 ``btcore.findservice(handle)`` - 参数 ====== ======== 参数 释义 ====== ======== handle 连接句柄 ====== ======== - 返回 成功:0 失败:-1 **蓝牙发现服务内包含的特征** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 语法 ``btcore.findcharacteristic(uuid_s,handle)`` - 参数 ====== ======== =================================== 参数 释义 取值范围 ====== ======== =================================== uuid_s 服务uuid 16bit uuid int型 128bit uuid 字符串 handle 连接句柄 ====== ======== =================================== - 返回 成功:0 失败:-1 **蓝牙打开通知** ~~~~~~~~~~~~~~~~ - 语法 ``btcore.opennotification(uuid_c,handle)`` - 参数 ====== ======== =================================== 参数 释义 取值范围 ====== ======== =================================== uuid_c 特征uuid 16bit uuid int型 128bit uuid 字符串 handle 连接句柄 ====== ======== =================================== - 返回 成功:0 失败:-1 **蓝牙关闭通知** ~~~~~~~~~~~~~~~~ - 语法 ``btcore.closenotification(uuid_c,handle)`` - 参数 ====== ======== =================================== 参数 释义 取值范围 ====== ======== =================================== uuid_c 特征uuid 16bit uuid int型 128bit uuid 字符串 handle 连接句柄 ====== ======== =================================== - 返回 成功:0 失败:-1 **写蓝牙** ~~~~~~~~~~ - 语法 ``btcore.send(data,uuid_c,handle)`` - 参数 ====== ============ =================================== 参数 释义 取值范围 ====== ============ =================================== data 写入数据内容 最大244字节 uuid_c 特征uuid 16bit uuid int型 128bit uuid 字符串 handle 连接句柄 ====== ============ =================================== - 返回 成功:0 失败:-1 **读蓝牙** ~~~~~~~~~~ - 语法 ``btcore.recv(len)`` - 参数 ==== ================== ======== 参数 释义 取值范围 ==== ================== ======== len 想要读到的数据长度 最大244 ==== ================== ======== - 返回 ======== ================== =========== 参数 释义 取值范围 ======== ================== =========== recvuuid 数据来源uuid recvdata 实际读到的数据内容 最大244字节 recvlen 实际读到的数据长度 最大244 ======== ================== =========== 读蓝牙MAC地址 ~~~~~~~~~~~~~ - 语法 ``btcore.getaddr()`` - 参数 无 - 返回 本机蓝牙MAC地址