/** * ハードウェアイベント(遅延実行) * @param u32DeviceId * @param u32ItemBitmap */ static void cbAppToCoNet_vHwEvent(uint32 u32DeviceId, uint32 u32ItemBitmap) { switch (u32DeviceId) { case E_AHI_DEVICE_TICK_TIMER: break; case E_AHI_DEVICE_ANALOGUE: /* * ADC完了割り込み */ V_PUTCHAR('@'); vSnsObj_Process(&sAppData.sADC, E_ORDER_KICK); if (bSnsObj_isComplete(&sAppData.sADC)) { // 全チャネルの処理が終わったら、次の処理を呼び起こす vStoreSensorValue(); ToCoNet_Event_Process(E_ORDER_KICK, 0, vProcessEvCore); } break; case E_AHI_DEVICE_SYSCTRL: break; case E_AHI_DEVICE_TIMER0: break; default: break; } }
static void vProcessTSL2561(teEvent eEvent) { if (bSnsObj_isComplete(&sSnsObj)) { return; } // イベントの処理 vSnsObj_Process(&sSnsObj, eEvent); // ポーリングの時間待ち if (bSnsObj_isComplete(&sSnsObj)) { u8sns_cmplt |= E_SNS_TSL2561_CMP; V_PRINTF(LB"!TSL2561: %dC", sObjTSL2561.u32Result ); // 完了時の処理 if (u8sns_cmplt == E_SNS_ALL_CMP) { ToCoNet_Event_Process(E_ORDER_KICK, 0, vProcessEvCore); } } }
static void vProcessBME280(teEvent eEvent) { if (bSnsObj_isComplete(&sSnsObj)) { return; } // イベントの処理 vSnsObj_Process(&sSnsObj, eEvent); // ポーリングの時間待ち if (bSnsObj_isComplete(&sSnsObj)) { u8sns_cmplt |= E_SNS_BME280_CMP; V_PRINTF(LB"!BME280: Temp : %d, Hum : %d, Pres : %d", sObjBME280.i16Temp, sObjBME280.u16Hum, sObjBME280.u16Pres ); // 完了時の処理 if (u8sns_cmplt == E_SNS_ALL_CMP) { ToCoNet_Event_Process(E_ORDER_KICK, 0, vProcessEvCore); } } }
static void vProcessLIS3DH(teEvent eEvent) { if (bSnsObj_isComplete(&sSnsObj)) { return; } // イベントの処理 vSnsObj_Process(&sSnsObj, eEvent); // ポーリングの時間待ち if (bSnsObj_isComplete(&sSnsObj)) { u8sns_cmplt |= E_SNS_LIS3DH_CMP; V_PRINTF(LB"!LIS3DH: X : %d, Y : %d, Z : %d", sObjLIS3DH.ai16Result[LIS3DH_IDX_X], sObjLIS3DH.ai16Result[LIS3DH_IDX_Y], sObjLIS3DH.ai16Result[LIS3DH_IDX_Z] ); // 完了時の処理 if (u8sns_cmplt == E_SNS_ALL_CMP) { ToCoNet_Event_Process(E_ORDER_KICK, 0, vProcessEvCore); } } }
/** * TXイベント * @param u8CbId * @param bStatus */ static void cbAppToCoNet_vTxEvent(uint8 u8CbId, uint8 bStatus) { // 送信完了 V_PRINTF(LB"! Tx Cmp = %d", bStatus); ToCoNet_Event_Process(E_ORDER_KICK, 0, vProcessEvCore); }
/** * UART コマンド */ static void cb_vProcessSerialCmd(tsSerCmd_Context *pCmd) { ToCoNet_Event_Process(E_ORDER_KICK, (uint32)(void *)pCmd, vProcessEvCore); }
/** * TXイベント * @param u8CbId * @param bStatus */ static void cbAppToCoNet_vTxEvent(uint8 u8CbId, uint8 bStatus) { // 送信完了 ToCoNet_Event_Process(E_ORDER_KICK, 0, vProcessEvCore); }
/**************************************************************************** * * NAME: cbToCoNet_vNwkEvent * * DESCRIPTION: * * PARAMETERS: Name RW Usage * * RETURNS: * * NOTES: ****************************************************************************/ void cbToCoNet_vNwkEvent(teEvent eEvent, uint32 u32arg) { switch(eEvent) { /* * ネットワークが開始された */ case E_EVENT_TOCONET_NWK_START: V_PRINTF(LB"[E_EVENT_TOCONET_NWK_START:%d,Ch:%d]", u32TickCount_ms & 0xFFFF, sToCoNet_AppContext.u8Channel); vDispInfo(&sSerStream, (void*)sAppData.pContextNwk); // pass this event to the event machine ToCoNet_Event_Process(E_EVENT_TOCONET_NWK_START, u32arg, vProcessEvCore); break; /* * ネットワークが切断された */ case E_EVENT_TOCONET_NWK_DISCONNECT: V_PRINTF(LB"[E_EVENT_TOCONET_NWK_DISCONNECT]"); // pass this event to the event machine ToCoNet_Event_Process(E_EVENT_TOCONET_NWK_DISCONNECT, u32arg, vProcessEvCore); break; /* * メッセージプールを受信 */ case E_EVENT_TOCONET_NWK_MESSAGE_POOL: if (u32arg) { tsToCoNet_MsgPl_Entity *pInfo = (void*)u32arg; int i; //static uint8 u8seq = 0; uint8 u8buff[TOCONET_MOD_MESSAGE_POOL_MAX_MESSAGE+1]; memcpy(u8buff, pInfo->au8Message, pInfo->u8MessageLen); // u8Message にデータ u8MessageLen にデータ長 u8buff[pInfo->u8MessageLen] = 0; // UART にメッセージ出力 if (pInfo->bGotData) { // empty なら FALSE になる V_PRINTF(LB"---MSGPOOL sl=%d ln=%d msg=", pInfo->u8Slot, pInfo->u8MessageLen ); SPRINTF_vRewind(); for (i = 0; i < pInfo->u8MessageLen; i++) { vfPrintf(SPRINTF_Stream, "%02X", u8buff[i]); } V_PRINTF("%s", SPRINTF_pu8GetBuff()); #ifdef USE_LCD V_PRINTF_LCD("%02x:%s\r\n", u8seq++, SPRINTF_pu8GetBuff()); vLcdRefresh(); #endif V_PRINTF("---"); } else { V_PRINTF(LB"---MSGPOOL sl=%d EMPTY ---", pInfo->u8Slot ); #ifdef USE_LCD V_PRINTF_LCD("%02x: EMPTY\r\n", u8seq++); vLcdRefresh(); #endif } ToCoNet_Event_Process(E_EVENT_APP_GET_IC_INFO, pInfo->bGotData, vProcessEvCore); // vProcessEvCore にイベント送信 } break; default: break; } }