Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r6081643fbc7826ec53b9eb158481bdce6799ef7e -r01391d9a66d4a2d6266366d0f838c08041d2d18c --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6081643fbc7826ec53b9eb158481bdce6799ef7e) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 01391d9a66d4a2d6266366d0f838c08041d2d18c) @@ -871,26 +871,34 @@ memcpy( &cmd, message->payload, sizeof(U32) ); - if ( DG_DISINFECT_FLUSH_STATE == cmd ) // Command 0 = Flush + if ( DG_DISINFECT_FLUSH_STATE == cmd ) // Command 0 = Flush { result = signalUserInitiateFlushMode(); } - else if ( DG_DISINFECT_HEAT_STATE == cmd ) // Command 1 = Heat disinfect + else if ( DG_DISINFECT_HEAT_STATE_ACTIVE_COOL == cmd ) // Command 1 = Heat disinfect active cool { - result = signalUserInitiateHeatDisinfectMode(); + result = signalUserInitiateHeatDisinfectActiveCoolMode(); } - else if ( DG_DISINFECT_CHEM_STATE == cmd ) // Command 2 = chemical disinfect + else if ( DG_DISINFECT_CHEM_STATE == cmd ) // Command 2 = chemical disinfect { result = signalUserInitiateChemicalDisinfectMode(); } - else if ( DG_DISINFECT_CHEM_FLUSH_STATE == cmd ) // Command 3 = chemical disinfect flush + else if ( DG_DISINFECT_CHEM_FLUSH_STATE == cmd ) // Command 3 = chemical disinfect flush { result = signalUserInitiateChemicalDisinfectFlushMode(); } - else if ( DG_DISINFECT_RO_PERMEATE_SAMPLE_STATE == cmd ) // Command 4 = RO permeate sample + else if ( DG_DISINFECT_RO_PERMEATE_SAMPLE_STATE == cmd ) // Command 4 = RO permeate sample { result = signalUserInitiateROPermeateSampleMode(); } + else if ( DG_DISINFECT_HEAT_STATE_PASSIVE_COOL == cmd ) // Command 5 = Heat disinfect passive coode + { + result = signalUserInitiateHeatDisinfectPassiveCoolMode(); + } + else if ( DG_DISINFECT_ACTIVE_COOL == cmd ) // Command 6 = Active cool + { + result = signalUserInitiateActiveCoolMode(); + } } sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, result ); @@ -1806,21 +1814,22 @@ /*********************************************************************//** * @brief - * The sendDGStartHeatDisinfectModeCommand function constructs a DG start/stop - * heat disinfect mode command message and queues the msg for transmit on - * the appropriate CAN channel. + * The sendDGStartHeatDisinfectActiveCoolModeCommand function constructs a + * DG start/stop heat disinfect with active coolmode command message and + * queues the msg for transmit on the appropriate CAN channel. * @details Inputs: none * @details Outputs: DG start heat disinfect mode command msg constructed * and queued. * @param start TRUE indicates start heat disinfect mode * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL sendDGStartHeatDisinfectModeCommand( BOOL start ) +BOOL sendDGStartHeatDisinfectActiveCoolModeCommand( BOOL start ) { BOOL result; MESSAGE_T msg; DG_HEAT_DISINFECTION_MODE_CMD_T cmd; + // Start command cmd.start = start; // Create a message record @@ -3431,16 +3440,18 @@ void handleHDUsageInfoRequest( MESSAGE_T *message ) { MESSAGE_T msg; - U32 payload = 0; // TODO update this one implemented + HD_USAGE_INFO_RECORD_T usageRecord; U08 *payloadPtr = msg.payload; + getNVRecord2Driver( GET_USAGE_RECORD, (U08*)&usageRecord, sizeof( HD_USAGE_INFO_RECORD_T ), 0, ALARM_ID_NO_ALARM ); + // Create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_HD_USAGE_DATA; - msg.hdr.payloadLen = sizeof( U32 ); + msg.hdr.msgID = MSG_ID_HD_USAGE_DATA; + msg.hdr.payloadLen = sizeof( HD_USAGE_INFO_RECORD_T ); // Fill message payload - memcpy( payloadPtr, &payload, sizeof( U32 ) ); + memcpy( payloadPtr, &usageRecord, sizeof( HD_USAGE_INFO_RECORD_T ) ); // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); @@ -3542,13 +3553,14 @@ * active cool mode command * @details Inputs: none * @details Outputs: none + * @param start the boolean flag to indicate whether to start or stop the + * active cool * @return TRUE if the command was serialized successfully *************************************************************************/ -BOOL sendDGStopActiveCoolModeCommand( void ) +BOOL sendDGStopActiveCoolModeCommand( BOOL start ) { BOOL result; MESSAGE_T msg; - BOOL start = FALSE; // Create a message record blankMessage( &msg ); @@ -3714,7 +3726,38 @@ sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); } +/*********************************************************************//** + * @brief + * The sendDGStartHeatDisinfectPassiveCoolModeCommand function handles the send + * request to start or stop nocturnal heat disinfect. + * @details Inputs: none + * @details Outputs: none + * @param start TRUE indicates start heat disinfect mode + * @return none + *************************************************************************/ +BOOL sendDGStartHeatDisinfectPassiveCoolModeCommand( BOOL start ) +{ + BOOL result; + MESSAGE_T msg; + DG_HEAT_DISINFECTION_MODE_CMD_T cmd; + // Start command + cmd.start = start; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_START_STOP_PASSIVE_COOL_HEAT_DISINFECT; + msg.hdr.payloadLen = sizeof( DG_HEAT_DISINFECTION_MODE_CMD_T ); + + memcpy( &msg.payload, &cmd, sizeof( DG_HEAT_DISINFECTION_MODE_CMD_T ) ); + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_DG, ACK_REQUIRED ); + + return result; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/