Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r673b5a1cbab7728b638ee966627e6d926a7de092 -r2e0a2f81470474f4767e19f76c538542b84a5d86 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 673b5a1cbab7728b638ee966627e6d926a7de092) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 2e0a2f81470474f4767e19f76c538542b84a5d86) @@ -817,8 +817,8 @@ if ( TRUE == getTestConfigStatus( TEST_CONFIG_MIX_WITH_WATER ) ) { // If mix with water is enabled do not wait for the conductivity values or timeout, transition to the next state - //result = DG_FILL_MODE_STATE_DELIVER_DIALYSATE; - //setModeFillStateTransition( result ); + result = DG_FILL_MODE_STATE_DELIVER_DIALYSATE; + setModeFillStateTransition( result ); } } } Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -rad272a524906daa67d4de0aa41ac401dd33afc8f -r2e0a2f81470474f4767e19f76c538542b84a5d86 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision ad272a524906daa67d4de0aa41ac401dd33afc8f) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 2e0a2f81470474f4767e19f76c538542b84a5d86) @@ -910,7 +910,7 @@ break; case MSG_ID_HD_DG_SERVICE_RECORD_REQUEST: - handleDGServiceScheduleRequest( message ); + handleDGServiceScheduleRequestToUI( message ); break; case MSG_ID_HD_DG_CONCENTRATE_MIXING_RATIOS_REQUEST: @@ -953,6 +953,10 @@ handleReceiveROPermeatSampleDispenseRequest( message ); break; + case MSG_ID_HD_REQUEST_SERVICE_RECORD_FROM_HD: + handleSendDGServiceRecordToHD( message ); + break; + // NOTE: This case must be last case MSG_ID_DG_TESTER_LOGIN_REQUEST: handleTesterLogInRequest( message ); Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r8822f86705a24d1c7dd305b584a95ae3d3c406b8 -r2e0a2f81470474f4767e19f76c538542b84a5d86 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 8822f86705a24d1c7dd305b584a95ae3d3c406b8) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 2e0a2f81470474f4767e19f76c538542b84a5d86) @@ -576,14 +576,14 @@ /*********************************************************************//** * @brief - * The handleDGServiceScheduleRequest function handles a request for DG - * service information. + * The handleDGServiceScheduleRequestToUI function handles a request for DG + * service information to UI. * @details Inputs: none * @details Outputs: message handled, response constructed and queued for * transmit. * @return none *************************************************************************/ -void handleDGServiceScheduleRequest( MESSAGE_T *message ) +void handleDGServiceScheduleRequestToUI( MESSAGE_T *message ) { MESSAGE_T msg; DG_SERVICE_RECORD_T service; @@ -595,17 +595,19 @@ // Create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_DG_SERVICE_SCHEDULE_DATA; - msg.hdr.payloadLen = sizeof( DG_SERVICE_RECORD_T ); + msg.hdr.msgID = MSG_ID_DG_SERVICE_SCHEDULE_DATA_TO_UI; + msg.hdr.payloadLen = sizeof( U32 ) + sizeof( U32 ); if ( 0 == message->hdr.payloadLen ) { - // Fill message payload - memcpy( payloadPtr, &service, sizeof( DG_SERVICE_RECORD_T ) ); + memcpy( payloadPtr, &service.lastServiceEpochDate, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); + service.serviceIntervalSeconds = ( 0 == service.lastServiceEpochDate ? 0 : service.serviceIntervalSeconds ); + memcpy( payloadPtr, &service.serviceIntervalSeconds, sizeof( U32 ) ); } // 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_DG_2_HD, ACK_REQUIRED ); + serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_2_UI, ACK_REQUIRED ); } /*********************************************************************//** @@ -1872,7 +1874,40 @@ serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_2_HD, ACK_REQUIRED ); } +/*********************************************************************//** + * @brief + * The handleSendDGServiceRecordToHD function handles sending DG service + * record to HD upon request from HD + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleSendDGServiceRecordToHD( MESSAGE_T* message ) +{ + MESSAGE_T msg; + DG_SERVICE_RECORD_T service; + U08 *payloadPtr = msg.payload; + // Get the service record. There are no arrays of service to check and also, raise no alarm since the service record + // has been already checked in POST + getNVRecord2Driver( GET_SRV_RECORD, (U08*)&service, sizeof( DG_SERVICE_RECORD_T ), 0, ALARM_ID_NO_ALARM ); + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_SEND_SERVICE_SCHEDULE_DATA_TO_HD; + msg.hdr.payloadLen = sizeof( DG_SERVICE_RECORD_T ); + + if ( 0 == message->hdr.payloadLen ) + { + memcpy( payloadPtr, &service, sizeof( DG_SERVICE_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_DG_2_HD, ACK_REQUIRED ); +} + + // *********************************************************************** // **************** Message Handling Helper Functions ******************** // *********************************************************************** Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -rad272a524906daa67d4de0aa41ac401dd33afc8f -r2e0a2f81470474f4767e19f76c538542b84a5d86 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision ad272a524906daa67d4de0aa41ac401dd33afc8f) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 2e0a2f81470474f4767e19f76c538542b84a5d86) @@ -99,7 +99,7 @@ void handleDGSerialNumberRequest( void ); // MSG_ID_HD_REQUEST_DG_SERVICE_RECORD -void handleDGServiceScheduleRequest( MESSAGE_T *message ); +void handleDGServiceScheduleRequestToUI( MESSAGE_T *message ); // MSG_ID_HD_REQUEST_DG_CONCENTRATE_RATIOS void handleDGSendConcentrateMixingRatios( MESSAGE_T *message ); @@ -191,6 +191,9 @@ // MSG_ID_DG_SEND_RO_PERMEATE_SAMPLE_DISPENSE_READY_TO_HD void handleSendROPermeateSampleDispenseReadyToHD( void ); +// MSG_ID_HD_REQUEST_SERVICE_RECORD_FROM_HD +void handleSendDGServiceRecordToHD( MESSAGE_T* message ); + // *********** public test support message functions ********** // MSG_TESTER_LOG_IN