ToCoNet_Event_u32TickFrNewState()
Explanation
Argument
Returns
Sample code
uint8 cond_if_tx_complete;
void cbToCoNet_vTxEvent(uint8 u8CbId, uint8 bStatus) {
if(bStatus & 0x01) {
cond_if_tx_complete = 0x1; // TX success
} else {
cond_if_tx_complete = 0xFF; // TX FAIL
}
}
void vProcessEvCore(
tsEvent *pEv,
teEvent eEvent,
uint32 u32evarg) {
static bool_t cond;
switch (pEv->eState) {
case E_STATE_IDLE:
...
if(...) {
// changer state for wireless transmission
ToCoNet_Event_SetState(pEv, E_STATE_APP_TX_REQUEST);
}
break;
case E_STATE_APP_TX_REQUEST:
if (eEvent == E_EVENT_NEW_STATE) {
// place a transmission request.
tsTxDataApp sTx;
...
cond_if_tx_complete = FALSE; // set completion flag as deferred.
if (!ToCoNet_bMacTxReq(&sTx)) {
// fails
ToCoNet_Event_SetState(pEv, E_STATE_APP_ERROR);
}
}
// Confirmation of transmission completion conditions
if (cond_if_tx_complete == 0x1) {
// Tx success!
ToCoNet_Event_SetState(pEv, E_STATE_IDLE);
} else if (cond_if_tx_complete == 0xFF) {
// Tx fails
ToCoNet_Event_SetState(pEv, E_STATE_APP_ERROR);
}
// Tx Timeout
if (ToCoNet_Event_u32TickFrNewState(pEv) > 100) {
ToCoNet_Event_SetState(pEv, E_STATE_APP_ERROR);
}
break;
case E_STATE_APP_ERROR:
... // error handling
break;
}最終更新