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.

[参考译文] 使用GATTServApp_ProcessCharCfg更新存储在客户机中的当前服务器属性

Guru**** 2560390 points
Other Parts Discussed in Thread: CC2541

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/584618/use-gattservapp_processcharcfg-to-update-the-current-server-atribute-stored-in-the-client

主题:CC2541中讨论的其他部件

您好,

我正在使用CC2541心率示例(BLE-CC254x-ECG ),以便为我的原型固件1.3 设备开发一个小的修改。

本示例在特征1中有一个"ECG测量客户端特征配置",允许从其他连接的设备(客户端)采集ECG,然后服务器(MY原型)开始将ECG采集传输到客户端/连接的设备。
现在,我想提供额外的选项来开始ECG传输。 我想在按下原型硬件的按钮时开始ECG转换。

我的更改工作正常,但我无法在客户端中更新"ECG测量客户端特征配置"的存储值,使用我的原型函数GATTServApp_ProcessCharCfg通知此属性中的修改值。
我的设备(服务器)如何提供有关此更改的建议并为连接的设备(客户端)提供新值?

可能是我错了,我不理解如何找到流程?

我尝试将其他示例视为遥控器,但我没有发现任何类似的示例。

有人能帮我吗?

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

    您的客户端需要通过写入相应的测量客户端特征配置描述符(CCCD)来启用通知。 我不理解'更新客户端中"ECG测量客户端特征配置"的存储值'。 请注意,如果您启用配对/绑定,CCCD的值将在服务器上通过连接保留,您的客户端将不需要重新启用通知。

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

    JXS,您好!

    感谢你的帮助。

    对不起我糟糕的解释。  

    CCC中的读/写权限已启用,如您在配置文件属性中看到的:

    静态gattAttribute_t ecgAttrTbl[]=

     //心率服务

     {

      { ATT_BT_UUUID_SIZE,primaryServiceUUID },/* type */

      GATT_许可_读取,             /*权限*/

      0,                     /*句柄*/

      (UINT8 *)和ecgService            /* pValue */

     },

      //心电图测量声明-特性1

     {

       { ATT_BT_UUID_SIZE,字符UUID },

       GATT_许可_读取,

       0,

       ecgMeasProps (&E)

      },

      //一个样本的心电图测量值-特性1

      {

       { ATT_BT_UUUID_SIZE,ecgMeasUUID },

       0,

       0,

       ecgMeas.(&E

      },

      // ECG测量客户端特性配置-特性1

      {

       { ATT_BT_UUID_SIZE,clientCharCfgUUID },

       GATT_permit_read | GATT_permit_write,

       0,

       (UINT8 *)&ecgMeasClientCharCfg.

      },    

      // ECG测量用户说明-特性1

      {

       { ATT_BT_UUID_SIZE,charUserDescUUID },

       GATT_许可_读取,

       0,

       ecgMeasUserDesp

      },      

      //等... 其他特性

    };


    我调用该功能以在参加按键事件时更改"ECG测量客户端特征配置"值:

    UINT8 ecgMeasClientCharCfg_enable = 0x01;
    ECG_SetParameter( ECG_MEAS_CHAR_CFG,大小( uint8 ),&ecgMeasClientCharCfg_enable );

    在此函数中,我可以直接更改attribute的值,并且可以在调试会话中验证此值:

    bStatus_t ECG_SetParameter (uint8参数,uint8 len,void *值)

    bStatus_t ret =成功;

    开关(参数)

    案例ECG_MEAS_CHAR_CFG:
    //需要连接句柄

    *ecgAttrTbl[3].pValue=*((uint8*)value);

    ecgKeyPressed =*(uint8*)值);
    //查看是否已启用通知
    GATTServApp_ProcessCharCfg( ecgMeasClientCharCfg,&ecgKeyPressed,
    false,ecgAttrTbl,GATT_NUM_ATTRS( ecgAttrTbl ),
    任务ID无效);

    //等

    }

    }

    但是,我尝试使用 GATTServApp_ProcessCharCfg,以便服务器通知客户机其自身 属性中的值已更改。 我找不到。

    目前,我正在调试模式下使用自己的PCB原型(服务器设备)来查看属性服务表中的更改,以及我的计算机+ CC2541 Dongle with BLE Device Monitor Software of Texas Instruments (作为客户端设备)读写原型的所有属性/特征。  

     "ECG测量客户端特征配置"属性会更改原型设备上的值,但我可以告知客户端此情况,也可以重新设置任何消息以通知此情况,并在客户端到服务器之间提供此新的属性值。  

    您能推荐什么? 可以吗? 或者我走错了路?

    感谢你的帮助

    此致,

    罗伯特

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

    我一直在努力澄清我的解释,希望我的问题能更容易理解。

    有人可以向我提供反馈或一些要关注的主题?

    可能是您对我的项目的帮助。

    再次感谢
    此致,
    罗伯特
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Robert:

    客户端应写入服务器上的CCCD以启用服务器上的通知。 服务器只能在CCCD值设置为0x01时发出通知。 启用通知后,服务器可向客户端发送ECG测量值。

    祝你一切顺利