WCH沁恒单片机
直播中

刘勇

7年用户 1331经验值
私信 关注
[问答]

CH579有没有multiCentral获取notify的例程?

CH579使用multiCentral无法获取到notify数据,使用CentPeri例程可以获取到notify,multiCentral添加了notify部分还是不行,请问有没有multiCentral获取notify的例程呢?
  

回帖(4)

宫素香

2022-8-8 10:11:42
接收不到notify信息的原因是首先notify的case例程中是没有的,另外加上了之后,还需要要使能notify,这个使能可以在从机端加也可以主机端加,在主机端加的话,直接按照Central的例程写就行了,在从机端加可以添加这个函数:
uint8 enable_notify(uint16 connection_handle,uint8 enable) {
    uint16 cccd = 0;
    if(enable) {
        cccd |= GATT_CLIENT_CFG_NOTIFY;
    }else {
        cccd &= ~GATT_CLIENT_CFG_NOTIFY;
    }
    return GATTServApp_WriteCharCfg( connection_handle, simpleProfileChar4Config, cccd );
}
建立连接(Peripheral_LinkEstablished)函数里调用这个函数就可以。
举报

江端淳

2022-8-8 10:11:47
按照Central的例程还是接收不到notify,无法进入到centralProcessGATTMsg( gattMsgEvent_t *pMsg )函数的else if( pMsg->method == ATT_HANDLE_VALUE_NOTI){}中
举报

王凤英

2022-8-8 10:11:52
你这只是把notify的case添加进来了,但是notify没有使能啊,当然还是进入不了这个case。需要使能notify,可以在从机中加,如上贴方法加,也可以在主机中加,central的例程就中有这个使能,如下图:
举报

王玉华

2022-8-8 10:12:01
主机发送tmos_start_task( centralTaskId, START_WRITE_CCCD_EVT, DEFAULT_WRITE_CCCD_DELAY);
没办法进入Central_ProcessEvent( uint8 task_id, uint16 events )函数执行if ( events & START_WRITE_CCCD_EVT )这部分

举报

更多回帖

发帖
×
20
完善资料,
赚取积分