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.

[参考译文] CC2745P10-Q1:如何在广播开始后修改蓝牙本地名称?

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1475701/cc2745p10-q1-how-to-modify-the-bluetooth-localname-after-the-broadcast-has-started

器件型号:CC2745P10-Q1

工具与软件:

您好、TI

我们已将 SE 安全芯片集成到外设中。 在启动时初始化蓝牙广播后、我们需要从 SE 芯片读取本地名称、并替换原始默认蓝牙本地名称。 如何修改此参数? 直接修改 attDeviceName 中引用的变量 ti_ble_config.h 似乎会导致系统错误。

此致!

普雷斯顿

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

    您好!

    我认为您要寻找的是  GGS_SetParameter。  不过、我们的文档似乎没有很好地涵盖此功能。 您可以按如下方式使用该函数:

        status = GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN, (void *)pAttDeviceName);
        if (status != SUCCESS)
        {
          return status;
        }
    

    此函数在堆栈初始化过程中调用(参见  common/iCallBLE/ble_stack_api.c :: Stackinit_Gatt 5213()),因此我不确定堆栈初始化后是否可以更改。

    解决此问题的方法是更改  BLEAppUtil_stackInit  函数、以便在堆栈初始化之前填充设备名称:

        /** File: bleapputil_init.c (common/BLEAppUtil/bleapputil_init.c) 
            Function: BLEAppUtil_stackInit **/
        
        // Init GATT
        status = bleStack_initGatt(BLEAppUtilLocal_GeneralParams->profileRole,
                                   BLEAppUtilSelfEntity,
                                   /** NOTE: Change this param to the device name desired **/
                                   BLEAppUtilLocal_GeneralParams->deviceNameAtt);
        if(status != SUCCESS)
        {
            // TODO: Call Error Handler
        }

     在  common/BLEAppUtil/bleapputil_task.c 中调用 BLEAppUtil_stackInit :: BLE687. Util_Task

    我对您尝试执行的操作建议如下:

    1.创建可以保存所需名称的全局变量。

    2.修改  BLEAppUtil_stackInit :: bleStack_initGatt  以使用此全局变量。

    3.在调用  BLEAppUtil_stackInit 之前 、请将全局变量设置为所需的名称:

    这应该使用您设置的名称。  

    此致!

    Nima Behmanesh

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

    您好、Nima

    很抱歉、我对您的回应出现延误。

    我尝试更 BLEAppUtilLocal_GeneralParams->deviceNameAtt 改为自定义名称、如图所示、其中自定义名称是一个六字节数组。 但是、初始化后、蓝牙广播名称 仍会显示在 syscfg.(通过移动蓝牙搜索发现的名称)中配置的名称

    这似乎没有生效。 操作顺序是否有问题? 我在此处初始化的名称是否会被 syscfg 中的名称覆盖?

    此致、

    普雷斯顿

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

    您好!

    您是否介意清除手机上的蓝牙缓存? 可能是电话缓存了旧名称、但实际名称已更改。

    请告诉我这是否有效。

    此致!

    Nima Behmanesh

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

    您好、Nima

    bStatus_t Peripheral_start()
    {
        bStatus_t status = SUCCESS;
    
        status = BLEAppUtil_registerEventHandler(&peripheralConnHandler);
        if(status != SUCCESS)
        {
            // Return status value
            return(status);
        }
    
        status = BLEAppUtil_registerEventHandler(&peripheralAdvHandler);
        if(status != SUCCESS)
        {
            return(status);
        }
    
        memcpy(&scanResData1[2], test_name, sizeof(test_name));//Added by Preston
        status = BLEAppUtil_initAdvSet(&peripheralAdvHandle_1, &advSetInitParamsSet_1);
        if(status != SUCCESS)
        {
            // Return status value
            return(status);
        }
    
        status = BLEAppUtil_advStart(peripheralAdvHandle_1, &advSetStartParamsSet_1);
        if(status != SUCCESS)
        {
            // Return status value
            return(status);
        }
    
        // Return status value
        return(status);
    }

    在广播初始化期间、我修改了 scanResDATA1中的本地名称并 开始运行。