更新时间:2022-11-24 09:20:09下载pdf
蓝牙 BLE 设备要接入到涂鸦 IoT 平台前,您需要预先烧录授权信息,保障一机一密。本文介绍了 BLE SDK 产测过程中的相关说明和注意事项。
本文档于 2021 年 8 月 24 日停止更新。 如果您想查看更新的内容,请参考 《TuyaOS》蓝牙设备接入。
在工厂生产时,您就需要进行烧录授权以及测试,您可以使用涂鸦产测工具,也可以批量购买 License 使用自定义的协议和接口管理。
如果使用自定义的接口管理授权信息,需要按以下配置设置 BLE SDK 不管理 License:
#define TUYA_BLE_DEVICE_AUTH_SELF_MANAGEMENT 0
如果使用以上配置,应用程序需要在初始化 BLE SDK 时代入各种 ID 信息。并在收到绑定时,SDK 发送的 login key、VID、bound flag 时安全存储到 NV 中。
如果使用涂鸦产测工具进行授权和测试,并希望 BLE SDK 管理授权信息,请关注本章内容,并按以下配置设置 BLE SDK 管理 License:
#define TUYA_BLE_DEVICE_AUTH_SELF_MANAGEMENT 1
产测分为 通用产测授权 和 通用整机产测。通用整机产测协议是通用产测授权协议的子集。
通用产测授权 主要包括烧录授权信息、GPIO 测试以及 RSSI 测试。
通用整机产测 包含产品定制附加的一些测试,具体协议格式请参考《蓝牙通用产测授权协议》和《蓝牙通用整机产测协议》,联系涂鸦项目对接人获取。
BLE SDK 已实现了 通用产测授权 的协议,但是 RSSI 测试(被测设备扫描特定的信标)、GPIO 测试、以及基于 通用整机产测协议 的产品附加项目测试需要根据产品定义实现。
BLE SDK 中 tuya_ble_app_production_test.c
源文件中已对这几项测试预留了对应接口,都是以 __TUYA_BLE_WEAK
定义的弱实现,您的应用程序只需要在其他的源文件中重新定义这几个函数即可,并在自定义配置文件中引用。
通用产测授权包括烧录授权信息、GPIO 测试和 RSSI 测试。BLE SDK 已经集成烧录授权信息功能模块,使用以下配置即可:
#define TUYA_BLE_DEVICE_AUTH_SELF_MANAGEMENT 1
同时,BLE SDK 也预留了 GPIO 测试和 RSSI 测试接口,用户只需要根据所选的芯片以及产品本身的特性具体实现。
GPIO 测试主要测试 PCBA 是否有虚焊、漏焊问题,您的应用程序需要自定义测试方法。tuya_ble_app_production_test.c
文件中对 GPIO 测试预留的接口为:
__TUYA_BLE_WEAK tuya_ble_status_t tuya_ble_prod_gpio_test(void)
{
return TUYA_BLE_SUCCESS;
}
该函数需要您的应用程序实现,但是不能直接修改该函数,而是需要在其他地方实现。
RSSI 测试主要测试设备的射频信号强度是否达标。首先您需要制作一个信标(Beacon)一直广播,广播内容无特殊要求,只要被测设备扫描时能识别到即可。
tuya_ble_app_production_test.c
文件中对 RSSI 测试预留的接口为:
__TUYA_BLE_WEAK tuya_ble_status_t tuya_ble_prod_beacon_scan_start(void)
{
return TUYA_BLE_SUCCESS;
}
__TUYA_BLE_WEAK tuya_ble_status_t tuya_ble_prod_beacon_scan_stop(void)
{
return TUYA_BLE_SUCCESS;
}
__TUYA_BLE_WEAK tuya_ble_status_t tuya_ble_prod_beacon_get_rssi_avg(int8_t *rssi)
{
*rssi = -20;
return TUYA_BLE_SUCCESS;
}
以上三个函数需要您的应用程序实现。但是不能直接修改该函数,而是需要在其他地方实现。
tuya_ble_prod_beacon_scan_start
:主要实现开始定时扫描制作的信标,并获取其中每一次扫描到的 RSSI 值。
tuya_ble_prod_beacon_scan_stop
:主要是停止扫描,并计算获取到的所有 RSSI 值的平均值。
tuya_ble_prod_beacon_get_rssi_avg
:返回 RSSI 平均值。
本小节假设您新建了 custom_app_product_test.c
和 custom_app_product_test.h
文件,并在custom_app_product_test.c
中编写测试代码,如下所示:
tuya_ble_status_t tuya_ble_prod_beacon_scan_start(void)
{
//
return TUYA_BLE_SUCCESS;
}
tuya_ble_status_t tuya_ble_prod_beacon_scan_stop(void)
{
//
return TUYA_BLE_SUCCESS;
}
tuya_ble_status_t tuya_ble_prod_beacon_get_rssi_avg(int8_t *rssi)
{
//
*rssi = -30;
return TUYA_BLE_SUCCESS;
}
tuya_ble_status_t tuya_ble_prod_gpio_test(void)
{
//Add gpio test code here
return TUYA_BLE_SUCCESS;
}
注意:以上片段中不要添加
__TUYA_BLE_WEAK
声明,同时需要在custom_app_product_test.h
中添加函数声明。
#ifndef CUSTOM_APP_PRODUCT_TEST_H_
#define CUSTOM_APP_PRODUCT_TEST_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "tuya_ble_type.h"
tuya_ble_status_t tuya_ble_prod_beacon_scan_start(void);
tuya_ble_status_t tuya_ble_prod_beacon_scan_stop(void);
tuya_ble_status_t tuya_ble_prod_beacon_get_rssi_avg(int8_t *rssi);
tuya_ble_status_t tuya_ble_prod_gpio_test(void);
void tuya_ble_custom_app_production_test_process(uint8_t channel,uint8_t *p_in_data,uint16_t in_len);
#ifdef __cplusplus
}
#endif
#endif //
最后,在您的应用程序中定义的 config
文件中添加宏定义:
#define CUSTOMIZED_TUYA_BLE_APP_PRODUCT_TEST_HEADER_FILE "custom_app_product_test.h"
除了烧录授权信息、GPIO 测试、RSSI 测试外,您也可以基于涂鸦的测试协议和测试工具定义其他测试项目,BLE SDK 同样预留了自定义测试项目接口。
tuya_ble_app_production_test.c
文件中对自定义测试项目预留的接口如下所示:
__TUYA_BLE_WEAK void tuya_ble_custom_app_production_test_process(uint8_t channel,uint8_t *p_in_data,uint16_t in_len)
{
uint16_t cmd = 0;
uint8_t *data_buffer = NULL;
uint16_t data_len = ((p_in_data[4]<<8) + p_in_data[5]);
if((p_in_data[6] != 3)||(data_len<3))
return;
cmd = (p_in_data[7]<<8) + p_in_data[8];
data_len -= 3;
if(data_len>0)
{
data_buffer = p_in_data+9;
}
switch(cmd)
{
default:
break;
};
}
自定义测试项目需要基于 蓝牙通用整机产测协议 定义测试指令码,请联系涂鸦智能获取 PC 端定制测试工具软件或者自行开发。
目前使用涂鸦产测工具软件烧录授权设备,需要在 涂鸦 IoT 平台 创建一款 BLE 产品,上传固件后下单获取授权码。除此之外您还需要申请产测工具账号,产测工具使用方法请参考 产测工具介绍及下载。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈