完成数据内容定义后,紧接着定义数据长度宏,通过sizeof函数自动计算数据长度,避免手动计算的误差,配置语句如下:
//Scan response data length-maximum 31 bytes
#define CUSTOM_USER_ADV_SCNRSP_DATA_LEN(sizeof(CUSTOM_USER_ADV_SCNRSP_DATA)-1)
该语句中-1为固定配置,用于消除字符串结束符的字节占用,保证实际数据长度计算准确。
3.补充基础连接配置(可选)
若需同步调整蓝牙设备的连接属性,可在同一文件中配置连接间隔、从机延迟、监控超时等基础参数,示例配置如下,开发者可根据实际场景修改数值:
/**<Minimum connection interval (15 ms)*/ #define CONN_INTERVAL_MIN 15
/**<Maximum connection interval (30 ms).*/ #define CONN_INTERVAL_MAX 30
/**<Slave latency.*/ #define SLAVE_LATENCY 0
/**<Connection supervisory timeout(5000ms)。*/ #define CONN_SUP_TIMEOUT 5000
/**<Time of initiating event to update connection params(5 seconds)。*/ #define FIRST_CON_PARAMS_UPDATE_DELAY (5000)
广播数据与扫描应答数据联动(拓展)
完成扫描应答数据配置后,若需同时添加广播数据,可参考扫描应答数据的配置逻辑,在app_user_config.h中定义广播数据内容与长度,核心语句如下,同样需遵守字节长度限制:
#define CUSTOM_USER_ADVERTISE_DATA \
// 自定义广播数据内容
#define CUSTOM_USER_ADVERTISE_DATA_LEN (sizeof(CUSTOM_USER_ADVERTISE_DATA)-1)
修改效果验证
添加并配置好广播数据和扫描应答数据后,可通过蓝牙调试APP进行快速验证,步骤如下:
打开蓝牙调试APP,进入SCAN(扫描)模式,搜索周边蓝牙设备,找到目标设备名(示例为NS_RDTSS);
点击目标设备名,查看设备详情,可在Raw data(原始数据)栏看到配置的扫描应答数据与广播数据十六进制内容;
在Details(详情)栏,APP会自动解析数据的LEN(长度)、TYP(类型)、VALUE(值),可核对数据类型、长度是否与配置一致;
若解析结果中包含自定义的厂商数据、服务数据、设备名称等信息,且无字节溢出提示,说明广播数据和扫描应答数据添加成功。
验证过程中,若出现数据无法识别、长度异常等问题,需返回app_user_config.h文件,检查数据定义格式是否正确、整体字节长度是否超过31个字节限制。
扫描应答数据的总长度严禁超过31个字节,否则会导致数据截断、配置失效;
数据类型需使用模块规定的宏定义(如ADV_TYPE_MANUFACTURER_SPECIFIC_DATA),避免自定义类型造成解析失败;
配置数据长度时,必须保留sizeof(xxx)-1的格式,消除字符串结束符影响;
验证前需重新编译工程并下载程序到N32WB031模块,否则修改不会生效。