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_callback | GAP 相关回调函数 | √ | √ | √ | √ | 各平台底层需支持回调函数(在合适的地方调用),上层应用负责实现回调函数内的内容; 注册和注销回调函数在mible_api.c中已实现,也可以自行实现。 |
mible_gatts_event_callback | GATT Server 相关回调函数 | √ | √ | √ | √ | ||
mible_gattc_event_callback | GATT Client 相关回调函数 | √ | |||||
mible_arch_event_callback | MIBLE 接口相关回调函数 | √ | √ | √ | √ | ||
mible_gap_register | 注册gap回调 | option | option | option | option | ||
mible_gap_unregister | 注销gap回调 | option | |||||
mible_gattc_register | 注册gattc回调 | option | option | option | option | ||
mible_gattc_unregister | 注销gattc回调 | option | |||||
mible_gatts_register | 注册gatts回调 | option | option | option | option | ||
mible_gatts_unregister | 注销gatts回调 | option | |||||
mible_arch_register | 注册arch回调 | option | option | option | option | ||
mible_arch_unregister | 注销arch回调 | ||||||
GAP 相关 API | mible_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 相关 API | mible_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 相关 API | mible_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 相关 API | mible_timer_create | 创建一个 软件定时器 | √ | √ | √ | 返回一个 timer handle | |
mible_timer_delete | 删除一个 软件定时器 | √ | √ | √ | |||
mible_timer_start | 开启软件定时器 | √ | √ | √ | 可重复开启 | ||
mible_timer_stop | 停止软件定时器 | √ | √ | √ | |||
Flash 相关 API | mible_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_encrypt | AES-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 相关 API | mible_iic_init | 初始化IIC驱动 | √ | 初始化一组硬件 I2C 接口,包括相应 I/O,时钟,中断。 | |||
mible_iic_uninit | 反初始化 | √ | 初始化一组硬件 I2C 接口,包括相应 I/O,时钟,中断。 | ||||
mible_iic_tx | 向 IIC slave 发送数据 | √ | 非阻塞实现,完成后调用初始化时定义的回调函数。 | ||||
mible_iic_rx | 从 IIC slave 接收数据 | √ | 非阻塞实现,完成后调用初始化时定义的回调函数。 | ||||
mible_iic_scl_pin_read | 检查IIC SCL引脚 | √ | |||||
Mesh相关 | mible_mesh_api.h | Mesh相关接口 | √ | Mesh网关需要适配此文件 |