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.

[参考译文] LAUNCHXL-CC2640R2:是否使用 selfEntity 参数添加服务?

Guru**** 2553460 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/575187/launchxl-cc2640r2-adding-services-with-selfentity-parameter-or-not

器件型号:LAUNCHXL-CC2640R2

您好!

  我正在从 BLE 2.2移植 sensortag_cc2650lp_app。 CC2640R2 SDK。 我使用移植指南 simple_peripheral 和 project_zero 作为参考。 在移植指南中、下面提到了这一点。关于 上市30。  ICall 注册。

//将当前线程注册为 iCall 调度应用
//以便应用可以通过 iCall 到 Stack 发送和接收消息。
iCall_registerApp (&selfEntity、&synctoEvent); 

"应用程序提供 selfEntity 和 syncdEvent 输入。   当 iCall_registerApp()返回值初始化时,这些输入将针对客户端的任务(例如,应用程序)进行初始化。 ICall 随后使用这些对象来促进应用程序和服务器任务之间的消息传递。 syncEvent 参数表示用于信令的事件模块句柄,self实体 表示任务的目标消息队列。 使用 iCall 注册的每个任务都具有唯一的 syncEvent 和 self 实体标识符。"

我在项目0处看到"selfentity"传递给 LedService_AddService()、 ButtonService_AddService()、DataService_AddService()。

//向 GATT 服务器添加服务并为指示栈提供此任务的 ID。
LedService_AddService( selfentity );
ButtonService_AddService( selfentity );
DataService_AddService( selfentity ); 

如果需要将"selfentity"传递给 xxxxxx_AddService() C API,那么我需要修改所有 xxxxx_AddService() C API 以接受"selfentity"? 对还是错? 例如,我需要修改下面的 IO_addService()以具有“selfentity”的参数。

/*********
*@fn io_addService
*
*@brief 通过注册
*初始化 IO 服务 GATT 属性与 GATT 服务器。
*
**@return sSUCCESS or FAILURE
*/
bStatus_t IO_addService (void)
{
//分配客户端特征配置表
ioDataConfig =(gattCharCfg_t *) iCall_malloc (sizeof (gattCharCfg_t)*
linkDBNumConns);
if (ioDataConfig = NULL)
{
返回(bleMemAllocError);
}

//初始化客户端特征配置属性
GATTServApp_InitCharCfg (INVALID_CONNANDLE、ioDataConfig);

//使用 GATT Server 应用程序注册 GATT 属性列表和 CBS
return GATTServApp_RegisterService (iottrTbl、
GATT_NUM_ATTRS (ioAttrTbl)、
GATT_MAX_encrypt_key_size、
ioCbs);
} 

-克尔

 

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

    仅当服务包含指示属性的特征时才需要 selfEntity 参数、但是、如果服务没有指示特征但在参数中传递 selfEntity、则不会受到伤害。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Christin Lee 说:
    只有当您的服务包含指示属性的特征时,才需要 self Entity 参数

      我将注意到这一点。 到目前为止、我使用的所有服务都没有 设置 GATT_PROP_Indicate。 因此、我不需要修改它们。

    Christin Lee 说:
    如果您的服务没有指示特征,但在参数中传递自实体,则不会造成伤害

      我将记住、对于 Project Zero、AddService C API 中的自实体可能会用于未来的代码改进。 目前、自实体在下面的 AddService C API 中没有任何作用。

    //向 GATT 服务器添加服务并为指示栈提供此任务的 ID。
    LedService_AddService( selfentity );
    ButtonService_AddService( selfentity );
    DataService_AddService( selfentity ); 

    -克尔

    如果您的服务没有指示特征、而是在参数中传递自实体、则不会造成伤害