PRSEV_HANDLER_TBL_DEF(E_STATE_IDLE, tsEvent *pEv, teEvent eEvent, uint32 u32evarg) {
if (eEvent == E_EVENT_START_UP) {
ToCoNet_Event_SetState(pEv, E_STATE_RUNNING);
PRSEV_HANDLER_TBL_DEF(E_STATE_RUNNING, tsEvent *pEv, teEvent eEvent, uint32 u32evarg) {
bOk = bTransmitToParent( ... ); // 送信処理を行う
if ( bOk ) {
ToCoNet_Event_SetState(pEv, E_STATE_APP_WAIT_TX);
ToCoNet_Event_SetState(pEv, E_STATE_APP_SLEEP);
PRSEV_HANDLER_TBL_DEF(E_STATE_APP_WAIT_TX, tsEvent *pEv, teEvent eEvent, uint32 u32evarg) {
ToCoNet_Event_SetState(pEv, E_STATE_APP_SLEEP); // スリープ状態へ遷移
PRSEV_HANDLER_DEF(E_STATE_APP_SLEEP, tsEvent *pEv, teEvent eEvent, uint32 u32evarg) {
if (eEvent == E_EVENT_NEW_STATE) {
// Sleep は必ず E_EVENT_NEW_STATE 内など1回のみ呼び出される場所で呼び出す。
V_PRINTF(LB"Sleeping...");
// Mininode の場合、特別な処理は無いのだが、ポーズ処理を行う
ToCoNet_Nwk_bPause(sAppData.pContextNwk);
// - 初回は5秒あけて、次回以降はスリープ復帰を基点に5秒
vSleep(sAppData.sFlash.sData.u32Slp, sAppData.u16frame_count == 1 ? FALSE : TRUE, FALSE);