Keep the current state after waking up from sleep.
This function sets the first argument teEvent *pEv of a user-defined event handling function to pEv->bKeepStateOnSetAll = TRUE.
Argument
Type
Name
Remark
tsEvent *
pEv
Management structure for user event definition functions.
Returns
None.
Sample code
This is an example of a process that performs a short sleep if the conditions are not met, and then performs a specific process if the conditions are met. This is the case, for example, when waiting for a sensor to complete its AD several times.
voidcbAppColdStart(bool_t bInit) {if (bInit ==FALSE) { ... } else { ...ToCoNet_Event_Register_State_Machine(vProcessEvCore); }}voidvProcessEvCore( tsEvent *pEv, teEvent eEvent, uint32 u32evarg) {staticbool_t cond;switch (pEv->eState) {case E_STATE_IDLE: ; // some taskToCoNet_Event_SetState(pEv, E_STATE_APP_RUNNING);break;case E_STATE_APP_RUNNING: /* * 1: Transition to this state and processing in E_EVENT_NEW_STATE * 2: Check for cond, if FALSE, sleep * If TRUE, transition to E_STATE_APP_TX_REQUEST. * 3: Waking up from sleep E_EVENT_START_UP is performed and * perform the process of 2:. */if (eEvent == E_EVENT_NEW_STATE) {// Executed immediately after a state transition cond = ...; // update } elseif ((eEvent == E_EVENT_START_UP)&& (u32evarg & EVARG_START_UP_WAKEUP_RAMHOLD_MASK)) {// Called when ToCoNet_vSleep() wakes up. cond = ...; // update }// Check the conditionsif (!cond) {ToCoNet_Event_vKeepStateOnRamHoldSleep();ToCoNet_vSleep(E_AHI_WAKE_TIMER_1,50,FALSE,FALSE); } else {ToCoNet_Event_SetState(pEv, E_STATE_APP_TX_REQUEST); }break;case E_STATE_APP_TX_REQUEST: ... // transmi a packetbreak;}