打印
[蓝牙芯片]

关于蓝牙芯片通知与读的区别

[复制链接]
533|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
阳仔很无奈|  楼主 | 2020-11-7 15:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在CH573的主机例程中,read和receive noti有什么区别呀,为什么要分成两个部分?

使用特权

评论回复
沙发
阳仔很无奈|  楼主 | 2020-11-7 15:37 | 只看该作者
static void centralProcessGATTMsg( gattMsgEvent_t *pMsg )
{
  if ( centralState != BLE_STATE_CONNECTED )
  {
    // In case a GATT message came after a connection has dropped,
    // ignore the message
    return;
  }
  
  if ( ( pMsg->method == ATT_EXCHANGE_MTU_RSP ) ||
       ( ( pMsg->method == ATT_ERROR_RSP ) &&
         ( pMsg->msg.errorRsp.reqOpcode == ATT_EXCHANGE_MTU_REQ ) ) )
  {
    if ( pMsg->method == ATT_ERROR_RSP )
    {
      uint8 status = pMsg->msg.errorRsp.errCode;
      
      PRINT( "Exchange MTU Error: %x\n", status );
    }
    centralProcedureInProgress = FALSE;
  }
  
  if ( pMsg->method == ATT_MTU_UPDATED_EVENT )
  {
    PRINT("MTU: %x\n",pMsg->msg.mtuEvt.MTU);
  }   
  
  if ( ( pMsg->method == ATT_READ_RSP ) ||
       ( ( pMsg->method == ATT_ERROR_RSP ) &&
         ( pMsg->msg.errorRsp.reqOpcode == ATT_READ_REQ ) ) )
  {
    if ( pMsg->method == ATT_ERROR_RSP )
    {
      uint8 status = pMsg->msg.errorRsp.errCode;
      
      PRINT( "Read Error: %x\n", status );
    }
    else
    {
      // After a successful read, display the read value
      PRINT("Read rsp: %x\n",*pMsg->msg.readRsp.pValue);
    }
    centralProcedureInProgress = FALSE;
  }
  else if ( ( pMsg->method == ATT_WRITE_RSP ) ||
       ( ( pMsg->method == ATT_ERROR_RSP ) &&
         ( pMsg->msg.errorRsp.reqOpcode == ATT_WRITE_REQ ) ) )
  {
   
    if ( pMsg->method == ATT_ERROR_RSP )
    {
      uint8 status = pMsg->msg.errorRsp.errCode;
      
      PRINT( "Write Error: %x\n", status );
    }
    else
    {
      // Write success
      PRINT( "Write success \n" );      
    }
   
    centralProcedureInProgress = FALSE;   

  }
  else if ( pMsg->method == ATT_HANDLE_VALUE_NOTI )
        {
                PRINT("Receive noti: %x\n",*pMsg->msg.handleValueNoti.pValue);
        }
  else if ( centralDiscState != BLE_DISC_STATE_IDLE )
  {
    centralGATTDiscoveryEvent( pMsg );
  }
  GATT_bm_free(&pMsg->msg, pMsg->method);
}

使用特权

评论回复
板凳
WCHTech2| | 2020-11-7 15:58 | 只看该作者
阳仔很无奈 发表于 2020-11-7 15:37
static void centralProcessGATTMsg( gattMsgEvent_t *pMsg )
{
  if ( centralState != BLE_STATE_CONNECT ...

read 是主机主动去发消息读从机的值,读的是根据主机发的命令返回的值
notify是从机主动发起的通知

使用特权

评论回复
评论
阳仔很无奈 2020-11-7 16:11 回复TA
明白了,谢谢 
地板
随风而去吧| | 2021-1-10 19:18 | 只看该作者
很棒棒哦,值得学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

49

帖子

0

粉丝