Index: firmware/App/Controllers/AirPump.c =================================================================== diff -u -r03c0fe7eb496122973d27669d21ef2a9ee13f6ef -r28741ce21fea6cf6bbcb59c691c56629e4d061b6 --- firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision 03c0fe7eb496122973d27669d21ef2a9ee13f6ef) +++ firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision 28741ce21fea6cf6bbcb59c691c56629e4d061b6) @@ -332,7 +332,7 @@ if ( TRUE == isTestingActivated() ) { // Verify payload length is valid - if ( sizeof( U32 ) + sizeof( U32 ) == message->hdr.payloadLen ) + if ( sizeof( U32 ) + sizeof( F32 ) == message->hdr.payloadLen ) { U08 *msgPayload = &message->payload[0]; AIR_PUMP_SET_CMD_PAYLOAD_T payload; Index: firmware/App/Controllers/AirTrap.c =================================================================== diff -u -r7f3bf72c038de385e8a0d743990069c039e13ba0 -r28741ce21fea6cf6bbcb59c691c56629e4d061b6 --- firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 7f3bf72c038de385e8a0d743990069c039e13ba0) +++ firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 28741ce21fea6cf6bbcb59c691c56629e4d061b6) @@ -47,6 +47,9 @@ #define AIR_TRAP_ILLEGAL_LEVELS_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Air trap illegal values timeout (in ms) #define DATA_PUBLISH_COUNTER_START_COUNT 7 ///< Data publish counter start count. +#define AIR_TRAP_REPEATED_LOWER_EVENT_LIMIT 5 ///< Air trap repeated lower event limit +#define AIR_TRAP_REPEATED_LOWER_EVENTS_TIMEOUT_MS ( 300 * MS_PER_SECOND ) ///< Air trap repeated lower events timeout period (in ms). Maximum 5 air trap lower events are allowed within 5 minutes. + /// Air pump on delay after fill adjustment static const U32 AIR_PUMP_ON_DELAY_ADJUST_AFTER_FILL = ( AIR_PUMP_ON_DELAY_TIME_MS - ( 1 * MS_PER_SECOND ) ); @@ -93,6 +96,9 @@ static BOOL airTrapHasDetectedFaultMode; ///< Flag indicates air trap unit has handled transition to fault mode. +static U32 airTrapLowerEventCount; ///< Air trap lower event count flag +static U32 airTrapLowerEventStartTime; ///< Air trap lower event start time flag + // ********** private function prototypes ********** static AIR_TRAP_STATE_T handleAirTrapManualControlState( void ); @@ -139,6 +145,8 @@ airTrapLowerDelayStartTime = 0; airTrapLowerStartTime = 0; airTrapHasDetectedFaultMode = FALSE; + airTrapLowerEventCount = 0; + airTrapLowerEventStartTime = 0; } /*********************************************************************//** @@ -282,6 +290,16 @@ } } } + // Check repeated air trap lower events alarm + if ( ( airTrapLowerEventCount >= AIR_TRAP_REPEATED_LOWER_EVENT_LIMIT ) && ( FALSE == didTimeout( airTrapLowerEventStartTime, AIR_TRAP_REPEATED_LOWER_EVENTS_TIMEOUT_MS ) ) ) + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_REPEATED_AIR_TRAP_LOWER_EVENTS, airTrapLowerEventCount, 0 ) + } + else if ( TRUE == didTimeout( airTrapLowerEventStartTime, AIR_TRAP_REPEATED_LOWER_EVENTS_TIMEOUT_MS ) ) + { + airTrapLowerEventCount = 0; + airTrapLowerEventStartTime = 0; + } } /*********************************************************************//** @@ -423,6 +441,12 @@ SEND_EVENT_WITH_2_U32_DATA( TD_EVENT_AIR_TRAP_LOWER, ON, 0 ); + if ( 0 == airTrapLowerEventCount ) + { + airTrapLowerEventStartTime = getMSTimerCount(); + } + airTrapLowerEventCount++; + result = AIR_TRAP_LOWER_LEVEL_STATE; } }