天猫与百度双网关方案
验证双vendor 支持天猫精灵&百度
一、mesh配网协议(mesh provisioning)
1.1、Provisioning协议栈
1.2、PB-ADV (通过百度或天猫精灵音响直接配网)
- The PB-ADV bear用来传输Generic Provisioning PDUs类型,PB-ADV的MTU是24字节。
- PB-ADV类型AD Type(0x29)
1.3、PB-GATT (通过天猫精灵APP配网)
- PB-GATT是设备用代理协议将Proxy PDUs封装在了Provisioning PDUs中。
- Device接受Proxy PDU通过provisioner WriteCommand发过来的PDU,然后通过Notify来发送Provisioning PUDs给provisioner.
二、实现方案
- 百度音响与天猫精灵配网都是基于广播承载层。
- 设备在flash地址0x78000处写入52字节的三元组,前26字节是百度的三元组,后26字节是天猫的三元组信息。
初始化阶段,设备读取百度与天猫的三元组,由三元组信息计算出UUID,由UUID组成未配网广播包,每隔2秒发送一个未配网广播包。轮流发送百度与天猫的未配网广播包。UUID中包含2字节的CID,即天猫或者百度的model ID
UUID中包含4字节的Product Id
UUID中包含6字节的MAC - Link Open 消息由配网器发给设备,包含16字节的UUID.设备端根据接收到的UUID判断配网器的类型是百度音响或是天猫精灵,把音响类型设置给全局结构体变量 provision_mag.dual_vendor_st
- 设置配网参数阶段,调用函数mesh_provision_par_set,
调用mesh_ais_global_var_set()
配置vendor model:
并 设置网络参数:vendor_id_check_and_update();
- 百度音响重发7次,重发间隔是 10ms
- 天猫精灵重发5次,重发间隔是 30ms
- 设备端根据配网器类型使用对应的model ID.后续接收vendor消息&发送vendor消息选用对应厂家的model ID和opcode.