您好!
我正在从 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); }
-克尔