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 ******************** // ***********************************************************************