This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-EM-CC2340R5:在运行时更改 BLE 器件名称

Guru**** 2589280 points
Other Parts Discussed in Thread: SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1371057/lp-em-cc2340r5-changing-of-ble-device-name-during-runtime

器件型号:LP-EM-CC2340R5
主题中讨论的其他器件:SysConfig

工具与软件:

我们使用的是 BLE5示例项目"Data Stream"。 我想根据我们的要求对其进行调整。 到目前为止工作良好。 在进行开启或初始化时、例如在运行期间、我想将器件名称从"Data Stream"更改为"Hello 1001"。 我希望每个 BLE 器件都有自己的名称和编号。 我该怎么做? 如果您可以为我显示项目的位置、或者提供适合"Data Stream"项目的示例代码、那会很理想。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Ali、

    感谢您的咨询。

    因此、如果您要更改器件广播名称、可以通过 SysConfig 进行更改、如下图所示。

    如果您需要在运行时修改此参数,可以看到该名称存储在"attDeviceName"变量中,该变量是存储在 appMainParams 中的参数的一部分(类型为 BLEAreg Util_General 0595ams_t )。 您可以在 app_main.c 中看到此定义

    请确保名称不超过21个字符的 GAP_DEVICE_NAME_LEN。

    BR、

    David。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的 David

    我更改了 单元 app_main.c 上的变量(请参阅下面的)、但配对时保留了广告名称"Data Stream"。

    void appMain (void)

    #if ! defined(Display_disable_all)
       menuitmodule_params_t params ={
         .mode =仅限 Module_Mode_ 4.0 INTS_ONLY
       };

       if (MenuModule_init (NULL、&params)!=成功)
       {
       // TODO:调用错误处理程序
       }
    #endif //#if!defined (Display_disable_all)

       attDeviceName[0]='T';
       attDeviceName[1]="E";
       attDeviceName[2]='s';
       attDeviceName[3]='T';
       attDeviceName[4]="1";
       attDeviceName[5]='2';
       attDeviceName[6]='3';
       attDeviceName[7]='4';
       attDeviceName[8]='5';
       attDeviceName[9]='6';
       attDeviceName[10]='7';
       attDeviceName[11]='8';

       //调用 BLEAppUtil 模块初始化函数
       BLEAppUtil_init (App_Stack itDoneHandler,
                       &appMainParams,&appMainPeriCentParams);
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Ali、

    您可以先尝试在 SysConfig 中对其进行修改吗? 我猜大家所做的任何修改都会被 SysConfig 中定义的内容覆盖。

    BR、

    David。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、您好!

    感谢您的反馈。

    如果我通过 SysConfig 进行更改、新器件名称没有问题。

    我还尝试在运行时更改变量 scanResData1 (见下文)。 在这种情况下、在 Windows PC 上配对时会显示消息"Unknown device"。

       attDeviceName[0]='T';
       attDeviceName[1]="E";
       attDeviceName[2]='s';
       attDeviceName[3]='T';

       scanResData1 [0]='T';
       scanResData1 [1]='E';
       scanResData1 [2]='s';
       scanResData1 [3]='T';

       //调用 BLEAppUtil 模块初始化函数
       BLEAppUtil_init (App_Stack itDoneHandler,
                       &appMainParams,&appMainPeriCentParams);

    显然、在使用 BLEAppUtil_init 初始化之后、这些变量会被丢弃、并从 SysConfig 中采用设置。 但这没有意义、因为每个器件都必须有一个只有在运行时才知道的连续器件名称。 在此项目中的其他位置可以在运行时更改器件命名?
    此致

    Ali

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Ali、

    我懂了。 如果您在 BLEAppUtil_init ()函数内部,可以看到正在使用 GGS_SetParameter ()函数(请参见 ble_stack_api.c ),其中 pAttDeviceName 是 pvalue 第三个参数。 `s 更多信息、请查看用户指南的 GAP GATT 服务部分。

    BR、

    David。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、您好!

    我不n´t BLEAppUtil_init 内的 GGS_SetParameter ()函数(见下文)。 记住、我使用示例程序"Data Stream"。 在哪里必须更改运行时上的哪个变量?

    void BLEAppUtil_init (ErrorHandler_t errorHandler、StackInitDone_t initDoneHandler、
                        BLE4.12.4510ams_t Util_General *initGeneralParams,
                        BLE4.12.42Params_t Util_Peri *initPeriCentParams)

       //注册应用程序错误处理程序
       errorHandlerCb = errorHandler;

       //注册初始化完成处理程序-将从 GAP_DEVICE_INIT_DONE_EVENT 调用
       appInitDoneHandler = initDoneHandler;

       //将用户的 BLEAppUtil 参数分配给本地参数
       BLEAppU4510s Local_General conveniParams= initGeneralParams;
       BLEAppU4510Params=initPeriCentParams; Local_Peri

       //创建消息队列以发送到 BLEAppUtil
       BLEAppUtil_createQueue();

       //创建 BLE 堆栈任务
       bleStack_createTasks();

       //创建本地应用程序任务
       BLEAppUtil_createBLEAppUtilTask();

       //构造将由以下函数使用的互斥体:
       // BLEAppUtil_registerEventHandler
       // BLEAppUtil_unRegisterEventHandler
       // BLEAppUtil_callEventHandler
       pthread_mutex_init (&mutex、NULL);
    }

    此致

    Ali

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Ali、

    我懂了。 您可以更改广播数据和扫描响应数据(特别是 GAP_ADTYPE_LOCAL_NAME_COMPLETE 字段)。 请 在此处查看我们的培训材料(广播任务2–更改广播数据)。 此外、您还可以查看我们的 用户指南中有关更改 Adv 参数的部分。

    您还可以利用此 e2e 线程 (不过、该方法与不同的器件系列非常相似)。

    BR、

    David。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    感谢您的帮助。 现在我发现了我的错误在哪里。 请勿触摸变量 scanResDATA1的数组元素0和1。  以下示例工作正常。 :)

       attDeviceName[0]='T';
       attDeviceName[1]="E";
       attDeviceName[2]='s';
       attDeviceName[3]='T';

       scanResData1 [2]='T';
       scanResData1 [3]='E';
       scanResData1 [4]='s';
       scanResData1 [5]='T';

    //调用 BLEAppUtil 模块初始化函数
       BLEAppUtil_init (App_Stack itDoneHandler,
                       &appMainParams,&appMainPeriCentParams);

    此致

    Ali