diff --git a/EndDevice_Input/Source/ProcessEv_Botton.c b/EndDevice_Input/Source/ProcessEv_Botton.c index aaea487..98f0744 100644 --- a/EndDevice_Input/Source/ProcessEv_Botton.c +++ b/EndDevice_Input/Source/ProcessEv_Botton.c @@ -210,7 +210,7 @@ PRSEV_HANDLER_DEF(E_STATE_APP_SLEEP, tsEvent *pEv, teEvent eEvent, uint32 u32eva } // wake up using wakeup timer as well. - ToCoNet_vSleep(E_AHI_WAKE_TIMER_0, 0, FALSE, FALSE ); // PERIODIC RAM OFF SLEEP USING WK0 + ToCoNet_vSleep(E_AHI_WAKE_TIMER_0, sAppData.sFlash.sData.u32Slp, FALSE, FALSE ); // PERIODIC RAM OFF SLEEP USING WK0 } } diff --git a/Parent/Source/Parent.c b/Parent/Source/Parent.c index b54e4f4..74610f7 100644 --- a/Parent/Source/Parent.c +++ b/Parent/Source/Parent.c @@ -287,12 +287,8 @@ void cbToCoNet_vRxEvent(tsRxDataApp *pRx) { // データベースへ登録(線形配列に格納している) if (sRxPktInfo.u8pkt == PKT_ID_BOTTON) { - sRxPktInfo.u8input = G_OCTET(); - p += 4; // skip u32dur - sRxPktInfo.u8batt = G_OCTET(); - sRxPktInfo.u16adc1 = G_BE_WORD(); // ID,状態,電源電圧を登録 - uint32 u32key = (sRxPktInfo.u8id|sRxPktInfo.u8input<<8|sRxPktInfo.u8batt<<16); + uint32 u32key = (sRxPktInfo.u8id|sRxPktInfo.u8btn<<8|sRxPktInfo.u8batt<<16); ADDRKEYA_vAdd(&sEndDevList, sRxPktInfo.u32addr_1st, u32key); } else { ADDRKEYA_vAdd(&sEndDevList, sRxPktInfo.u32addr_1st, 0); // アドレスだけ登録。 @@ -616,16 +612,17 @@ void vSerOutput_Standard(tsRxPktInfo *pRxPktInfo, uint8 *p) { switch(pRxPktInfo->u8pkt) { case PKT_ID_BOTTON: _C { - uint8 u8batt = G_OCTET(); + pRxPktInfo->u8batt = G_OCTET(); - uint16 u16adc1 = G_BE_WORD();(void)u16adc1; - uint16 u16adc2 = G_BE_WORD();(void)u16adc2; + pRxPktInfo->u16adc1 = G_BE_WORD(); + pRxPktInfo->u16adc2 = G_BE_WORD(); uint8 u8mode = G_OCTET();(void)u8mode; + pRxPktInfo->u8btn = G_OCTET(); // センサー情報 A_PRINTF(":ba=%04d:bt=%04d" LB, - DECODE_VOLT(u8batt), sAppData.u8DO_State ); + DECODE_VOLT(pRxPktInfo->u8batt), pRxPktInfo->u8btn ); #ifdef USE_LCD // LCD への出力 @@ -862,9 +859,9 @@ void vSerOutput_Standard(tsRxPktInfo *pRxPktInfo, uint8 *p) { void vSerOutput_SmplTag3( tsRxPktInfo *pRxPktInfo, uint8 *p) { // 押しボタン if ( pRxPktInfo->u8pkt == PKT_ID_BOTTON ) { - uint8 u8batt = G_OCTET(); - uint16 u16adc1 = G_BE_WORD(); - uint16 u16adc2 = G_BE_WORD(); + pRxPktInfo->u8batt = G_OCTET(); + pRxPktInfo->u16adc1 = G_BE_WORD(); + pRxPktInfo->u16adc2 = G_BE_WORD(); uint8 u8mode = G_OCTET(); uint8 u8DI_Bitmap = G_OCTET(); @@ -886,6 +883,7 @@ void vSerOutput_SmplTag3( tsRxPktInfo *pRxPktInfo, uint8 *p) { if( u8DI_Bitmap & 1 ){ u16bitmap += 1; } + pRxPktInfo->u8btn = u8DI_Bitmap; A_PRINTF( ";" "%d;" // TIME STAMP @@ -906,9 +904,9 @@ void vSerOutput_SmplTag3( tsRxPktInfo *pRxPktInfo, uint8 *p) { pRxPktInfo->u8lqi_1st, pRxPktInfo->u16fct, pRxPktInfo->u32addr_1st & 0x0FFFFFFF, - DECODE_VOLT(u8batt), - u16adc1, - u16adc2, + DECODE_VOLT(pRxPktInfo->u8batt), + pRxPktInfo->u16adc1, + pRxPktInfo->u16adc2, u8mode, u16bitmap, 'P', @@ -1476,7 +1474,7 @@ static void vUpdateLcdByListIndex(uint8 idx) { uint8 status = AddrKey2Status(key); uint16 volt = DECODE_VOLT(AddrKey2Batt(key)); uint8 chr = '-'; - if (status != 0) { + if ((status & 1) == 0) { // 窓開放は大文字表示 chr = id + '@'; } else if (volt < VOLT_LOW) { diff --git a/Parent/Source/Parent.h b/Parent/Source/Parent.h index dc89744..ceb9a99 100644 --- a/Parent/Source/Parent.h +++ b/Parent/Source/Parent.h @@ -39,10 +39,10 @@ typedef struct _tsRxPktInfo{ uint8 u8id; // ID uint16 u16fct; // FCT uint8 u8pkt; // 子機のセンサモード - uint8 u8batt; - uint16 u16adc1; - uint16 u16adc2; - uint8 u8input; + uint8 u8batt; // Battery + uint16 u16adc1; // ADC 1 + uint16 u16adc2; // ADC 2 + uint8 u8btn; // DI input status } tsRxPktInfo; /****************************************************************************/