简介


MIBLE底层通用接口,是对蓝牙BLE协议栈的封装,与各硬件平台和协议栈解绑。 米家蓝牙BLE的所有应用将构建在此套接口之上。米家BLE软件层次架构如下图所示。

代码链接


https://github.com/MiEcosystem/mijia_ble_api

其中master分支为 MIBLE 底层接口定义,请查看打tag的稳定版本。

develop-2.x分支为2.0接口的工作分支,增加Mesh,gattc等接口。

其余分支为各芯片公司对接口的实现。

函数列表


类别函数名含义米家标准接入协议米家安全协议米家MESH协议设备端蓝牙网关说明
事件回调函数以及注册mible_gap_event_callbackGAP 相关回调函数

各平台底层需支持回调函数(在合适的地方调用),上层应用负责实现回调函数内的内容;

注册和注销回调函数在mible_api.c中已实现,也可以自行实现。

mible_gatts_event_callbackGATT Server 相关回调函数
mible_gattc_event_callbackGATT Client 相关回调函数


mible_arch_event_callbackMIBLE 接口相关回调函数
mible_gap_register注册gap回调optionoptionoptionoption
mible_gap_unregister注销gap回调


option
mible_gattc_register注册gattc回调optionoptionoptionoption
mible_gattc_unregister注销gattc回调


option
mible_gatts_register注册gatts回调optionoptionoptionoption
mible_gatts_unregister注销gatts回调


option
mible_arch_register注册arch回调optionoptionoptionoption
mible_arch_unregister注销arch回调



GAP 相关 APImible_gap_address_get获得本地 MAC 地址小端对齐
mible_gap_scan_start设置扫描参数,并开启扫描


扫描到的数据通过 MIBLE_GAP_EVT_ADV_REPORT 事件通知应用层
mible_gap_scan_stop扫描结束



mible_gap_adv_start广播开始可以重复开启
mible_gap_adv_data_set设置广播数据
mible_gap_adv_stop广播结束
mible_gap_connect设置连接参数并启动连接


连接成功后,通过 MIBLE_GAP_EVT_CONNECTED 事件通知应用层
mible_gap_disconnect断开连接断开连接后,通过 MIBLE_GAP_EVT_DISCONNECT 事件通知应用层
mible_gap_update_conn_params更新连接参数更新连接参数完成后,通过 MIBLE_GAP_EVT_CONN_PARAM_UPDATE 事件通知应用层
GATTS 相关 APImible_gatts_service_init属性服务器初始化

属性服务及特征的初始化。异步操作,初始化成功后,通过MIBLE_ARCH_EVT_GATTS_SRV_INIT_CMP事件通知应用层。

注意:1、通过函数参数mible_gatts_db_t 类型指针指向的初始化空间,仅仅用于初始化,初始化完成后会由应用层释放调。2、参数中部分用于[OUT],服务和特性的handle为输出量。

mible_gatts_value_set设置本地属性注意参数中部分用于[OUT]
mible_gatts_value_get获取本地属性注意参数中部分用于[OUT]
mible_gatts_notify_or_indicate设置char的值并且发送 notification 或 indication
mible_gatts_rw_auth_reply读写回复此函数用于需要应用层鉴权的读写操作回复。
GATTC 相关 APImible_gattc_service_discovery通过 UUID 的服务发现


蓝牙BLE单模设备,暂时不需要支持此部分。网关需支持。





mible_gattc_set_cccd设置对端cccd


mible_gattc_confirm_indication回复对方发来的indication


mible_gattc_read_value读取对端特征值


mible_gattc_write_value有回复的写入


mible_gattc_write_without_response无回复的写入


Timer 相关 APImible_timer_create创建一个 软件定时器
返回一个 timer handle
mible_timer_delete删除一个 软件定时器

mible_timer_start开启软件定时器
可重复开启
mible_timer_stop停止软件定时器

Flash 相关 APImible_record_create创建一条记录
至少支持 8 个 record id 的管理,总大小不超过1KB。同步操作。
mible_record_delete删除一条记录
异步操作,完成后通过 MIBLE_ARCH_EVT_RECORD_DELETE 通知应用层。
mible_record_read读一条记录
同步操作。
mible_record_write写入一条记录
异步操作,写flash完成后,通过 MIBLE_ARCH_EVT_RECORD_WRITE 通知应用层。若重复写入,则覆盖旧数据
mible_nvm_init初始化 Non-Volatile Memory 操作单元


同步初始化。
mible_nvm_write将数据写入指定地址


同步写入。
mible_nvm_read从指定地址读取数据


同步读取。
其他



mible_rand_num_generator获得真随机数
硬件随机数生成器
mible_aes128_encryptAES-128加密
对16字节数据进行AES加密,不足16字节,用0补全。注意参数中部分用于[OUT]
mible_task_post将非实时性函数加入任务队列(依据协议栈选择在合适位置执行)


将待执行函数加入任务队列,待以后在 non-interrupt context 中执行。这些任务会调用 MIBLE API。
mible_task_exec执行任务队列中的函数


有 RTOS 调度的平台可以通过创建一个低优先级 thread 执行应用层函数;没有 RTOS 的平台可以在 main loop 中执行。
mible_upgrade_firmware进行固件切换


进行固件切换
I2C 相关 APImible_iic_init初始化IIC驱动


初始化一组硬件 I2C 接口,包括相应 I/O,时钟,中断。
mible_iic_uninit反初始化


初始化一组硬件 I2C 接口,包括相应 I/O,时钟,中断。
mible_iic_tx向 IIC slave 发送数据


非阻塞实现,完成后调用初始化时定义的回调函数。
mible_iic_rxIIC slave 接收数据


非阻塞实现,完成后调用初始化时定义的回调函数
mible_iic_scl_pin_read检查IIC SCL引脚



Mesh相关mible_mesh_api.hMesh相关接口


Mesh网关需要适配此文件