CH579使用multiCentral無(wú)法獲取到notify數(shù)據(jù),使用CentPeri例程可以獲取到notify,multiCentral添加了notify部分還是不行,請(qǐng)問有沒有multiCentral獲取notify的例程呢?
接收不到notify信息的原因是首先notify的case例程中是沒有的,另外加上了之后,還需要要使能notify,這個(gè)使能可以在從機(jī)端加也可以主機(jī)端加,在主機(jī)端加的話,直接按照Central的例程寫就行了,在從機(jī)端加可以添加這個(gè)函數(shù):
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)函數(shù)里調(diào)用這個(gè)函數(shù)就可以。
按照Central的例程還是接收不到notify,無(wú)法進(jìn)入到centralProcessGATTMsg( gattMsgEvent_t *pMsg )函數(shù)的else if( pMsg->method == ATT_HANDLE_VALUE_NOTI){}中
你這只是把notify的case添加進(jìn)來(lái)了,但是notify沒有使能啊,當(dāng)然還是進(jìn)入不了這個(gè)case。需要使能notify,可以在從機(jī)中加,如上貼方法加,也可以在主機(jī)中加,central的例程就中有這個(gè)使能,如下圖:
主機(jī)發(fā)送tmos_start_task( centralTaskId, START_WRITE_CCCD_EVT, DEFAULT_WRITE_CCCD_DELAY);
沒辦法進(jìn)入Central_ProcessEvent( uint8 task_id, uint16 events )函數(shù)執(zhí)行if ( events & START_WRITE_CCCD_EVT )這部分
例程已發(fā),請(qǐng)查收。