Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r7acb9d914f79aaa921c95e1a4049594c889bf795 -r611e805a6547ac922154e623a9d79adeae128e81 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 7acb9d914f79aaa921c95e1a4049594c889bf795) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 611e805a6547ac922154e623a9d79adeae128e81) @@ -25,6 +25,8 @@ #include "SystemComm.h" #include "RTC.h" #include "LoadCell.h" +#include "TemperatureSensors.h" +#include "Heaters.h" // ********** private definitions ********** @@ -57,6 +59,13 @@ F32 loadCellB2inGram; } LOAD_CELL_DATA_T; +typedef struct +{ + U32 mainPrimayHeaterDC; + U32 smallPrimaryHeaterDC; + U32 trimmerHeaterDC; +} HEATERS_DATA_T; + #pragma pack(pop) // ********** private data ********** @@ -274,8 +283,7 @@ memcpy( payloadPtr, &epoch, sizeof( U32 ) ); // 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_BROADCAST, ACK_NOT_REQUIRED ); - result = TRUE; // TODO - don't want DG broadcasting its time + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_BROADCAST, ACK_NOT_REQUIRED ); return result; } @@ -353,32 +361,69 @@ return result; } -#ifdef CAN_TEST -void broadcastCANTest1LargeFrequentMessage() +/************************************************************************* + * @brief + * The broadcastHeatersData function sends out DG heaters data + * @details + * Inputs : heaters data + * Outputs : heatears data msg constructed and queued + * @param mainPrimaryDC : main primary heater duty cycle + * @param smallPrimaryDC : small primary heater duty cycle + * @param trimmerDC : trimmer heater duty cycle + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastHeatersData ( U32 mainPrimaryDC, U32 smallPrimaryDC, U32 trimmerDC ) { - static U16 seqNo = 0; + BOOL result; MESSAGE_T msg; - U32 i; + U08 *payloadPtr = msg.payload; + HEATERS_DATA_T payload; // create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_DG_CAN_TEST_1_LARGE_FREQ; - msg.hdr.payloadLen = 96; + msg.hdr.msgID = MSG_ID_DG_HEATERS_DATA; + msg.hdr.payloadLen = sizeof( HEATERS_DATA_T ); - for ( i = 0; i < 12; i++ ) - { - memcpy(&msg.payload[i*8], &seqNo, 2); - seqNo++; - } - memcpy(&msg.payload[94], &seqNo, 2); - seqNo++; + payload.mainPrimayHeaterDC = mainPrimaryDC; + payload.smallPrimaryHeaterDC = smallPrimaryDC; + payload.trimmerHeaterDC = trimmerDC; + memcpy( payloadPtr, &payload, sizeof( HEATERS_DATA_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_BROADCAST, ACK_NOT_REQUIRED ); + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_BROADCAST, ACK_NOT_REQUIRED ); + + return result; } -#endif +/************************************************************************* + * @brief + * The broadcastTemperatureSensorsData function sends out DG temperature + * sensors data + * Inputs : heaters data + * Outputs : temperatur sensors data msg constructed and queued + * @param sensorsValue : sensors value array + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastTemperatureSensorsData ( U08 *sensorsValue, U32 byteLength ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_TEMPERATURE_DATA; + msg.hdr.payloadLen = byteLength; + + memcpy( payloadPtr, sensorsValue, byteLength ); + + // 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_DG_BROADCAST, ACK_NOT_REQUIRED ); + + return result; +} + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ @@ -527,52 +572,55 @@ DATA_ARRAY_OVERRIDE_HANDLER_FUNC_U32( BOOL, handleTestAlarmStateOverrideRequest, testSetAlarmStateOverride, testResetAlarmStateOverride ) /************************************************************************* - * @brief handleTestLoadCellA1OverrideRequest - * The handleTestLoadCellA1OverrideRequest function handles a request to \n - * override the value read from load cell A1 adc. + * @brief + * The handleTestLoadCellOverrideRequest function handles a request to \n + * override the value read from the given load cell. * @details * Inputs : none * Outputs : message handled * @param message : a pointer to the message to handle * @return none *************************************************************************/ -DATA_OVERRIDE_HANDLER_FUNC_U32( BOOL, handleTestLoadCellA1OverrideRequest, testSetLoadCellA1Override, testResetLoadCellA1Override ) +DATA_ARRAY_OVERRIDE_HANDLER_FUNC_U32( BOOL, handleTestLoadCellOverrideRequest, testSetLoadCellOverride, testResetLoadCellOverride ) /************************************************************************* - * @brief handleTestLoadCellA2OverrideRequest - * The handleTestLoadCellA2OverrideRequest function handles a request to \n - * override the value read from load cell A1 adc. + * @brief + * The handleTestTemperatureSensorsOverrideRequest function handles a + * request to override a temperatures sensor's value * @details * Inputs : none * Outputs : message handled * @param message : a pointer to the message to handle * @return none *************************************************************************/ -DATA_OVERRIDE_HANDLER_FUNC_U32( BOOL, handleTestLoadCellA2OverrideRequest, testSetLoadCellA2Override, testResetLoadCellA2Override ) +DATA_ARRAY_OVERRIDE_HANDLER_FUNC_F32( BOOL, handleTestTemperatureSensorsOverrideRequest, \ + testSetMeasuredTemperatureOverride, testResetMeasuredTemperatureOverride ) /************************************************************************* - * @brief handleTestLoadCellB1OverrideRequest - * The handleTestLoadCellB1OverrideRequest function handles a request to \n - * override the value read from load cell A1 adc. - * @details - * Inputs : none - * Outputs : message handled - * @param message : a pointer to the message to handle - * @return none - *************************************************************************/ -DATA_OVERRIDE_HANDLER_FUNC_U32( BOOL, handleTestLoadCellB1OverrideRequest, testSetLoadCellB1Override, testResetLoadCellB1Override ) +* @brief +* The handleTestTemperatureSensorsDataPublishOverrideRequest function handles \n +* a request to override the publish interval of temperature sensors data +* @details +* Inputs : none +* Outputs : message handled +* @param message : a pointer to the message to handle +* @return none +*************************************************************************/ +DATA_OVERRIDE_HANDLER_FUNC_U32( BOOL, handleTestTemperatureSensorsDataPublishOverrideRequest, \ + testSetTemperatureSensorsPublishIntervalOverride, testResetTemperatureSensorsPublishIntervalOverride ) /************************************************************************* - * @brief handleTestLoadCellB2OverrideRequest - * The handleTestLoadCellB2OverrideRequest function handles a request to \n - * override the value read from load cell A1 adc. + * @brief + * The handleTestHeatersDataPublishOverrideRequest function handles \n + * a request to override the publish interval of heaters data * @details * Inputs : none * Outputs : message handled * @param message : a pointer to the message to handle * @return none *************************************************************************/ -DATA_OVERRIDE_HANDLER_FUNC_U32( BOOL, handleTestLoadCellB2OverrideRequest, testSetLoadCellB2Override, testResetLoadCellB2Override ) +DATA_OVERRIDE_HANDLER_FUNC_U32( BOOL, handleTestHeatersDataPublishOverrideRequest, \ + testSetHeatersPublishIntervalOverride, testResetHeatersPublishIntervalOverride ) /************************************************************************* * @brief handleSetRTCTimestamp @@ -595,11 +643,36 @@ U32 years; memcpy(&years, &message->payload[5], sizeof(U32)); - // TODO: Change setRTCTimestamp to return a boolean for this - result = TRUE; + result = setRTCTimestamp( seconds, minutes, hours, days, months, years ); - setRTCTimestamp( seconds, minutes, hours, days, months, years ); - // respond to request sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); } + +/************************************************************************* + * @brief + * The handleStartStopPrimaryHeater function handles a request start or + * stop the primary heater + * @details + * Inputs : none + * Outputs : message handled + * @param message : a pointer to the message to handle + * @return result + *************************************************************************/ +BOOL handleStartStopPrimaryHeater( MESSAGE_T * message ) +{ + BOOL result; + U32 heaterStatus = message->payload[0]; + + if ( heaterStatus == 1 ) + { + result = startPrimaryHeater(); + } + else + { + stopPrimaryHeater(); + result = TRUE; + } + + return result; +}