BLE SDK 产测说明

更新时间: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 测试

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 测试

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.ccustom_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 产品,上传固件后下单获取授权码。除此之外您还需要申请产测工具账号,产测工具使用方法请参考 产测工具介绍及下载