[蓝牙芯片] 沁恒主机打开CC2541从机char4通知使能失败

[复制链接]
 楼主| 比神乐 发表于 2020-7-26 12:23 | 显示全部楼层 |阅读模式
5.jpg
如上图:
代码:
  1. else if ( centralDiscState == BLE_DISC_STATE_CHAR )
  2.   {
  3.     // Characteristic found, store handle
  4.     if ( pMsg->method == ATT_READ_BY_TYPE_RSP &&
  5.          pMsg->msg.readByTypeRsp.numPairs > 0 )
  6.     {
  7.       centralCharHdl = BUILD_UINT16( pMsg->msg.readByTypeRsp.pDataList[0],
  8.                                        pMsg->msg.readByTypeRsp.pDataList[1] );
  9.       centralProcedureInProgress = FALSE;
  10.       
  11.       // Start do read or write
  12.       tmos_start_task( centralTaskId, START_READ_OR_WRITE_EVT, DEFAULT_READ_OR_WRITE_DELAY);
  13.       
  14.       // Display Characteristic 1 handle
  15.       PRINT("Found Characteristic 4 handle : %x \n",centralCharHdl);   
  16.                         // Do a write
  17. <font color="#ff0000">        attWriteReq_t req;
  18.         
  19.         req.cmd = FALSE;
  20.         req.sig = FALSE;
  21.         req.handle = centralCharHdl+1;
  22.         req.len = 2;
  23.                                 //centralConnHandle=0;
  24.                                 PRINT( "222!\n");
  25.         req.pValue = GATT_bm_alloc(centralConnHandle,ATT_WRITE_REQ,req.len,NULL,0);
  26.         if ( req.pValue != NULL )
  27.         {
  28.           req.pValue[0] = 0x01;
  29.                                         req.pValue[1] = 0x00;
  30.           PRINT( "333!\n");
  31.           if( GATT_WriteCharValue(centralConnHandle,&req,centralTaskId) == SUCCESS )
  32.           {      
  33.             centralProcedureInProgress = TRUE;
  34.                                                 PRINT( "Open Notify ok!\n");
  35.             //centralDoWrite = !centralDoWrite;
  36.             tmos_start_task( centralTaskId, START_READ_OR_WRITE_EVT, DEFAULT_READ_OR_WRITE_DELAY);
  37.           }
  38.           else
  39.           {
  40.             GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);
  41.                                                 PRINT( "Open Notify Fail!\n");
  42.           }</font>
  43.         }  
  44.     }
  45.     centralDiscState = BLE_DISC_STATE_IDLE;
  46.   }   
我用CC2541主机打开CC2541从机的char4通知使能是可以的。
用沁恒就失败。
请问高手,哪里有错?谢谢
B1lanche 发表于 2022-6-13 16:33 | 显示全部楼层
听您的描述,是不是跟芯片厂家有关系呢?
 楼主| 比神乐 发表于 2022-6-13 17:09 | 显示全部楼层
B1lanche 发表于 2022-6-13 16:33
听您的描述,是不是跟芯片厂家有关系呢?

我感觉应该没关系吧
Belle1257 发表于 2022-6-17 10:09 | 显示全部楼层
你可以看看CC2541主机模式是怎么实现的,然后用沁恒的模拟试试呢?
Allison8859 发表于 2022-6-19 09:20 | 显示全部楼层
感觉CC2541本来就有些麻烦,我一般都是用它透传就完事儿了
WCHTECH75 发表于 2022-6-28 14:48 | 显示全部楼层
从你的代码中,看的出你那边通过cc2541主机已经知道了client characteristic configuration handle,所以是直接将char4的handle加1,那么最保险的方法最好是直接获取client characteristic configuration handle然后去使能通知,因为我们例程char4的value是不支持读的,所以获取的handle值可能相差是2,所以可以加2试试,也可以直接获取client characteristic configuration handle然后去使能通知。
 楼主| 比神乐 发表于 2022-6-28 17:12 | 显示全部楼层
WCHTECH75 发表于 2022-6-28 14:48
从你的代码中,看的出你那边通过cc2541主机已经知道了client characteristic configuration handle,所以是 ...

谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3535

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部