Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rdd3356035996866e5db7678d352f933fc22ad789 -r138efd92a8645e0d2fe422409ef5a33dd2929a25 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision dd3356035996866e5db7678d352f933fc22ad789) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 138efd92a8645e0d2fe422409ef5a33dd2929a25) @@ -57,6 +57,22 @@ F32 loadCellB2inGram; } LOAD_CELL_DATA_T; +typedef struct +{ + U32 setROPumpPressure; + F32 measROPumpPressure; + F32 measROPumpSpeed; + F32 roPumpPWM; +} RO_PUMP_DATA_T; + +typedef struct +{ + F32 roPumpInletPressure; + F32 roPumpOutletPressure; + F32 drainPumpInletPressure; + F32 drainPumpOutletPressure; +} PRESSURES_DATA_T; + #pragma pack(pop) // ********** private data ********** @@ -281,33 +297,34 @@ /************************************************************************* * @brief - * The broadcastTreatmentTime function constructs a treatment time msg to \n - * be broadcast and queues the msg for transmit on the appropriate CAN channel. + * The broadcastLoadCellData function sends out load cell data. * @details * Inputs : none - * Outputs : treatment time data msg constructed and queued - * @param secsTotTreatment : Total treatment time prescribed (in seconds). - * @param secsElapsed : Treatment time elapsed (in seconds). - * @param secsRemaining : Treatment time remaining (in seconds). + * Outputs : load cell data msg constructed and queued + * @param loadCellA1 : load cell A 1 data in grams. + * @param loadCellA2 : load cell A 2 data in grams. + * @param loadCellB1 : load cell B 1 data in grams. + * @param loadCellB2 : load cell B 2 data in grams. * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL broadcastTreatmentTime( U32 secsTotTreatment, U32 secsElapsed, U32 secsRemaining ) +BOOL broadcastLoadCellData( F32 loadCellA1, F32 loadCellA2, F32 loadCellB1, F32 loadCellB2 ) { BOOL result; MESSAGE_T msg; U08 *payloadPtr = msg.payload; - TREATMENT_TIME_DATA_T payload; + LOAD_CELL_DATA_T payload; // create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_TREATMENT_TIME; - msg.hdr.payloadLen = sizeof( TREATMENT_TIME_DATA_T ); + msg.hdr.msgID = MSG_ID_LOAD_CELL_READINGS; + msg.hdr.payloadLen = sizeof( LOAD_CELL_DATA_T ); - payload.treatmentTimePrescribedinSec = secsTotTreatment; - payload.treatmentTimeElapsedinSec = secsElapsed; - payload.treatmentTimeRemaininginSec = secsRemaining; + payload.loadCellA1inGram = loadCellA1; + payload.loadCellA2inGram = loadCellA2; + payload.loadCellB1inGram = loadCellB1; + payload.loadCellB2inGram = loadCellB2; - memcpy( payloadPtr, &payload, sizeof( TREATMENT_TIME_DATA_T ) ); + memcpy( payloadPtr, &payload, sizeof( LOAD_CELL_DATA_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_DG_BROADCAST, ACK_NOT_REQUIRED ); @@ -317,42 +334,78 @@ /************************************************************************* * @brief - * The broadcastLoadCellData function sends out load cell data. + * The broadcastROPumpData function sends out RO pump data. * @details - * Inputs : load cell data - * Outputs : load cell data msg constructed and queued - * @param loadCellA1 : load cell A 1 data in grams. - * @param loadCellA2 : load cell A 2 data in grams. - * @param loadCellB1 : load cell B 1 data in grams. - * @param loadCellB2 : load cell B 2 data in grams. + * Inputs : none + * Outputs : RO pump data msg constructed and queued + * @param tgtPressure : target pressure for RO pump in PSI. + * @param measPressure : measured pressure for RO pump in PSI. + * @param measSpeed : measure RO pump speed in RPM. + * @param setPWM : set PWM duty cycle in %. * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL broadcastLoadCellData( F32 loadCellA1, F32 loadCellA2, F32 loadCellB1, F32 loadCellB2 ) +BOOL broadcastROPumpData( U32 tgtPressure, F32 measPressure, F32 measSpeed, F32 setPWM ) { BOOL result; MESSAGE_T msg; U08 *payloadPtr = msg.payload; - LOAD_CELL_DATA_T payload; + RO_PUMP_DATA_T payload; // create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_LOAD_CELL_READINGS; - msg.hdr.payloadLen = sizeof( LOAD_CELL_DATA_T ); + msg.hdr.msgID = MSG_ID_RO_PUMP_DATA; + msg.hdr.payloadLen = sizeof( RO_PUMP_DATA_T ); - payload.loadCellA1inGram = loadCellA1; - payload.loadCellA2inGram = loadCellA2; - payload.loadCellB1inGram = loadCellB1; - payload.loadCellB2inGram = loadCellB2; + payload.setROPumpPressure = tgtPressure; + payload.measROPumpPressure = measPressure; + payload.measROPumpSpeed = measSpeed; + payload.roPumpPWM = setPWM; - memcpy( payloadPtr, &payload, sizeof( LOAD_CELL_DATA_T ) ); + memcpy( payloadPtr, &payload, sizeof( RO_PUMP_DATA_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_DG_BROADCAST, ACK_NOT_REQUIRED ); return result; } +/************************************************************************* + * @brief + * The broadcastPressureSensorsData function sends out DG pressure data. + * @details + * Inputs : none + * Outputs : Pressure data msg constructed and queued + * @param measROIn : measured RO pump inlet pressure in PSI. + * @param measROOut : measured RO pump outlet pressure in PSI. + * @param measDrainIn : measured Drain pump inlet pressure in PSI. + * @param measDrainOut : measured Drain pump outlet pressure in PSI. + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastPressureSensorsData( F32 measROIn, F32 measROOut, F32 measDrainIn, F32 measDrainOut ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + PRESSURES_DATA_T payload; + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_PRESSURES_DATA; + msg.hdr.payloadLen = sizeof( PRESSURES_DATA_T ); + + payload.roPumpInletPressure = measROIn; + payload.roPumpOutletPressure = measROOut; + payload.drainPumpInletPressure = measDrainIn; + payload.drainPumpOutletPressure = measDrainOut; + + memcpy( payloadPtr, &payload, sizeof( PRESSURES_DATA_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_DG_BROADCAST, ACK_NOT_REQUIRED ); + + return result; +} + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/