Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r7cc6fbb41e6b460fedff71581f6205ef36d5deb6 -ra726311564521affd46cbbaf129bdffb22e1d58f --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 7cc6fbb41e6b460fedff71581f6205ef36d5deb6) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision a726311564521affd46cbbaf129bdffb22e1d58f) @@ -511,7 +511,7 @@ /*********************************************************************//** * @brief - * The broadcastDrainPumpData function sends out RO pump data. + * The broadcastDrainPumpData function sends out drain pump data. * @details Inputs: none * @details Outputs: Drain pump data msg constructed and queued * @param tgtSpeed target speed for drain pump in RPM @@ -539,8 +539,44 @@ result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_BROADCAST, ACK_NOT_REQUIRED ); return result; -} +} +/*********************************************************************//** + * @brief + * The broadcastConcentratePumpData function sends out concentrate pumps' data. + * @details Inputs: none + * @details Outputs: concentrate pump data msg constructed and queued + * @param cp1TgtSpeed target speed for concentrate pump CP1 + * @param measuredCP1Speed measured speed for concentrate pump CP1 using hall sense + * @param cp2TgtSpeed target speed for concentrate pump CP2 + * @param measuredCP2Speed measured speed for concentrate pump CP2 using hall sense + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastConcentratePumpData( F32 cp1TgtSpeed, F32 cp1MeasuredSpeed, F32 cp2TgtSpeed, F32 cp2MeasuredSpeed ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + CONCENTRATE_PUMP_DATA_T payload; + + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_CONCENTRATE_PUMP_DATA; + msg.hdr.payloadLen = sizeof( CONCENTRATE_PUMP_DATA_T ); + + payload.cp1TargetSpeed = cp1TgtSpeed; + payload.cp1MeasuredSpeed = cp1MeasuredSpeed; + payload.cp2TargetSpeed = cp2TgtSpeed; + payload.cp2MeasuredSpeed = cp2MeasuredSpeed; + + memcpy( payloadPtr, &payload, sizeof( CONCENTRATE_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. @@ -711,12 +747,12 @@ { BOOL result = FALSE; - if ( message->hdr.payloadLen == sizeof(TARGET_TEMPS_PAYLOAD_T) ) + if ( message->hdr.payloadLen == sizeof( TARGET_TEMPS_PAYLOAD_T ) ) { TARGET_TEMPS_PAYLOAD_T payload; result = TRUE; - memcpy( &payload, message->payload, sizeof(TARGET_TEMPS_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TARGET_TEMPS_PAYLOAD_T ) ); setPrimaryHeaterTargetTemperature( payload.targetPrimaryHeaterTemp ); setTrimmerHeaterTargetTemperature( payload.targetTrimmerHeaterTemp ); } @@ -769,13 +805,13 @@ { BOOL result = FALSE; - if ( message->hdr.payloadLen == sizeof(U32) ) + if ( message->hdr.payloadLen == sizeof( U32 ) ) { RESERVOIR_ID_T reservoirID; U32 resID; result = TRUE; - memcpy( &resID, message->payload, sizeof(U32) ); + memcpy( &resID, message->payload, sizeof( U32 ) ); reservoirID = (RESERVOIR_ID_T)resID; setActiveReservoirCmd( reservoirID ); } @@ -795,12 +831,12 @@ { BOOL result = FALSE; - if ( message->hdr.payloadLen == sizeof(U32) ) + if ( message->hdr.payloadLen == sizeof( U32 ) ) { U32 fillToVolumeMl; result = TRUE; - memcpy( &fillToVolumeMl, message->payload, sizeof(U32) ); + memcpy( &fillToVolumeMl, message->payload, sizeof( U32 ) ); startFillCmd( fillToVolumeMl ); } @@ -821,12 +857,12 @@ if ( message->hdr.payloadLen == sizeof( DRAIN_CMD_T ) ) { - DRAIN_CMD_T drainToVolMl; + DRAIN_CMD_T drainCmd; result = TRUE; - memcpy( &drainToVolMl, message->payload, sizeof( DRAIN_CMD_T ) ); + memcpy( &drainCmd, message->payload, sizeof( DRAIN_CMD_T ) ); - startDrainCmd( drainToVolMl ); + startDrainCmd( drainCmd ); } sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DG_2_HD, result ); @@ -845,11 +881,11 @@ { BOOL result = FALSE; - if ( message->hdr.payloadLen == sizeof(U32) ) + if ( message->hdr.payloadLen == sizeof( U32 ) ) { BOOL startingTreatment; - memcpy( &startingTreatment, message->payload, sizeof(U32) ); + memcpy( &startingTreatment, message->payload, sizeof( U32 ) ); if ( DG_MODE_STAN == getCurrentOperationMode() && TRUE == startingTreatment ) { @@ -877,11 +913,11 @@ { BOOL result = FALSE; - if ( message->hdr.payloadLen == sizeof(U32) ) + if ( message->hdr.payloadLen == sizeof( U32 ) ) { BOOL startingHeater; - memcpy( &startingHeater, message->payload, sizeof(U32) ); + memcpy( &startingHeater, message->payload, sizeof( U32 ) ); if ( TRUE == startingHeater ) { @@ -937,7 +973,7 @@ U08 days = message->payload[3]; U08 months = message->payload[4]; U32 years; - memcpy(&years, &message->payload[5], sizeof(U32)); + memcpy(&years, &message->payload[5], sizeof( U32 )); result = setRTCTimestamp( seconds, minutes, hours, days, months, years ); @@ -958,11 +994,11 @@ { BOOL result = FALSE; - if ( message->hdr.payloadLen == sizeof(U32) ) + if ( message->hdr.payloadLen == sizeof( U32 ) ) { BOOL startingHeater; - memcpy( &startingHeater, message->payload, sizeof(U32) ); + memcpy( &startingHeater, message->payload, sizeof( U32 ) ); if ( TRUE == startingHeater ) { @@ -1115,9 +1151,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetWatchdogTaskCheckInOverride( payload.index, (BOOL)(payload.state.u32) ); @@ -1147,9 +1183,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetAlarmStateOverride( payload.index, payload.state.u32 ); @@ -1179,9 +1215,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetLoadCellOverride( payload.index, payload.state.f32 ); @@ -1211,9 +1247,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetMeasuredTemperatureOverride( payload.index, payload.state.f32 ); @@ -1244,9 +1280,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetTemperatureSensorsPublishIntervalOverride( payload.state.u32 ); @@ -1276,9 +1312,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetHeatersPublishIntervalOverride( payload.state.u32 ); @@ -1308,9 +1344,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetLoadCellDataPublishIntervalOverride( payload.state.u32 ); @@ -1340,9 +1376,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetDGPressureSensorOverride( payload.index, payload.state.f32 ); @@ -1372,9 +1408,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetPressuresDataPublishIntervalOverride( payload.state.u32 ); @@ -1404,9 +1440,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetTargetROPumpPressureOverride( payload.state.u32 ); @@ -1436,9 +1472,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetMeasuredROFlowRateOverride( payload.state.f32 ); @@ -1468,9 +1504,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetROPumpDataPublishIntervalOverride( payload.state.u32 ); @@ -1500,9 +1536,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetTargetDrainPumpSpeedOverride( payload.state.u32 ); @@ -1532,9 +1568,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetDrainPumpDataPublishIntervalOverride( payload.state.u32 ); @@ -1564,9 +1600,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetValveStateOverride( payload.index, payload.state.u32 ); @@ -1596,9 +1632,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetValvesStatesPublishIntervalOverride( payload.state.u32 ); @@ -1628,9 +1664,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetSafetyShutdownOverride( payload.state.u32 ); @@ -1660,9 +1696,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetAccelAxisOverride( payload.index, payload.state.f32 ); @@ -1692,9 +1728,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetAccelMaxOverride( payload.index, payload.state.f32 ); @@ -1724,9 +1760,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetAccelDataPublishIntervalOverride( payload.state.u32 ); @@ -1754,11 +1790,11 @@ { BOOL result = FALSE; - if ( message->hdr.payloadLen == sizeof(ACCEL_CAL_PAYLOAD_T) ) + if ( message->hdr.payloadLen == sizeof( ACCEL_CAL_PAYLOAD_T ) ) { ACCEL_CAL_PAYLOAD_T payload; - memcpy( &payload, message->payload, sizeof(ACCEL_CAL_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( ACCEL_CAL_PAYLOAD_T ) ); result = setAccelCalibration( payload.xOffset, payload.yOffset, payload.zOffset ); } @@ -1781,9 +1817,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetConductivityOverride( payload.index, payload.state.f32 ); @@ -1814,9 +1850,9 @@ BOOL result = FALSE; // verify payload length - if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { result = testSetConductivityDataPublishIntervalOverride( payload.state.u32 ); @@ -1831,4 +1867,36 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); } +/*********************************************************************//** + * @brief + * The handleSetConcentratePumpTargetSpeed function handles a request to + * override a concentrate pump's target speed value. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleSetConcentratePumpTargetSpeed( MESSAGE_T *message ) +{ + TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; + BOOL result = FALSE; + + // verify payload length + if ( sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_ARRAY_PAYLOAD_T ) ); + if ( FALSE == payload.reset ) + { + result = testSetConcentratePumpTargetSpeedOverride( payload.index, payload.state.f32 ); + } + else + { + result = testResetConcentratePumpTargetSpeedOverride( payload.index ); + } + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + /**@}*/