TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2340R5: 如何动态生成设备名称?

Part Number:CC2340R5

因应用场景需求,小范围内有多个蓝牙模块工作。

当前蓝牙设备名称是在软件配置中设置的,多设备烧写都是同一个设备名称。

能否做到蓝牙启动后动态修改蓝牙设备名称,以区分我要连接的设备?

Yolande Wang:

您好:

根据您的描述,您需要在小范围内有多个蓝牙模块工作,并且动态修改它们的设备名称以区分它们,这是完全可以实现的,根据工程师的建议,您可以按照以下步骤来实现这一需求:

1.预定义多个名称:为每个蓝牙模块预定义多个设备名称,这些名称用于区分不同的设备。这些设备名称可以存储在你的应用程序中,或者在设备内的存储中。

2.随机选择设备名称:在每个蓝牙模块启动后,可以随机选择一个预定义的设备名称,以确保每个设备有一个唯一的名称。

3.修改设备名称:在蓝牙启动后,您的应用程序可以使用蓝牙的GATT来动态修改设备名称。这可以通过写入设备名称特征来实现,将选择的名称写入特征的值。

4.更新广播的设备名称:一旦设备名称的特征值被修改,蓝牙堆栈会根据新的值来更新广播的设备名称。这将允许其他设备发现并连接到正确的蓝牙模块。

5.确保唯一性:确保所选择的设备名称在同一小范围内是唯一的,以避免冲突。

,

Xuefeng:

软件中预设值不能满足我的需求。计划从串口输入数据来修改设备名称,在收到串口数据后使用了示例中ble_stack_api.c中设置名称的方法

GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, rxBuf);

但是没有成功,而且手机端simple link connect的连接也断了。

可否提供一下具体的修改设备名称的示例代码?

,

Yolande Wang:

您好:

我理解你的需求是通过串口输入数据来修改设备名称,并且你已经尝试过修改设备名称的方法,但出现了问题。以下是一个通用的示例代码框架,以供您参考:

#include <stdint.h>
#include <string.h>
#include "ble_stack_api.h"// 定义一个变量来存储设备名称
static char deviceName[20] = "DefaultName";// 函数用于设置设备名称
void setDeviceName(char* newName) {if (strlen(newName) <= 20) {strcpy(deviceName, newName);}
}// 函数用于更新设备名称到蓝牙堆栈
void updateDeviceNameInStack() {// 停用广播ble_stack_stop_advertising();// 设置新的设备名称ble_stack_set_device_name(deviceName, strlen(deviceName));// 重新启用广播ble_stack_start_advertising();
}// 串口输入处理函数
void processSerialInput(char* input) {// 假设输入格式为 "SETNAME NewName"char* command = strtok(input, " ");char* newName = strtok(NULL, " ");if (strcmp(command, "SETNAME") == 0) {setDeviceName(newName);updateDeviceNameInStack();}
}int main() {// 初始化蓝牙堆栈和串口通信while (1) {// 监听串口输入char inputBuffer[50];if (serial_input_available()) {serial_read(inputBuffer, sizeof(inputBuffer));processSerialInput(inputBuffer);}// 处理其他任务}
}

,

Xuefeng:

你好,对于updateDeviceNameInStack中的三部分,可否提供实际代码。

,

Yolande Wang:

您好:

E2EChina论坛这边可以提供思路和方案,以上代码是通用框架,我们不做具体实现。

这里为您提供通过GATT修改设备名称的帖子,希望能够帮助到您。

,

Xuefeng:

谢谢

,

Yolande Wang:

不客气

,

Xuefeng:

我搜索到一个修改广播名称的网站,但是太旧,里面的函数现在应该都有变化了,GAP_UpdateAdvertisingData、GAPRole_SetParameter在现在的代码中对应的是什么名字?

,

Yolande Wang:

具体的函数名称和参数会根据开发环境和版本而有所不同,因此建议查看TI-RTOS或SimpleLink Stack的相关代码和示例文档。

您所说的GAP_UpdateAdvertisingData应该用于更新广播数据,GAPRole_SetParameter用于设置GAP角色参数,包括设备名称。

请参考低功耗蓝牙协议栈的GAP层,

希望对您有所帮助,如有后续问题建议您开新帖交流,谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » CC2340R5: 如何动态生成设备名称?
分享到: 更多 (0)