Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rc4ec26a20dabb7272a1f4132081e1ff5970bda56 -r0dec8744af40d0c87a6d7cd1923920c1c2bd1d2f --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision c4ec26a20dabb7272a1f4132081e1ff5970bda56) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 0dec8744af40d0c87a6d7cd1923920c1c2bd1d2f) @@ -1,23 +1,23 @@ -/************************************************************************** - * - * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. - * - * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN - * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. - * - * @file SystemComm.c - * - * @date 10-Oct-2019 - * @author S. Nash - * - * @brief SystemComm service module. Provides system message communication \n - * functionality. Messages can be queued for transmission. Incoming messages \n - * are processed. - * - **************************************************************************/ +/************************************************************************** +* +* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* +* THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +* WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +* +* @file SystemCommMessages.c +* +* @author (last) Quang Nguyen +* @date (last) 21-Jul-2020 +* +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 +* +***************************************************************************/ #include // for memcpy() - + +#include "ConductivitySensors.h" #include "DrainPump.h" #include "Heaters.h" #include "LoadCell.h" @@ -95,6 +95,12 @@ U32 fillToVolumeMl; U32 drainToVolumeMl; } RESERVOIR_DATA_T; + +typedef struct +{ + F32 cpi; + F32 cpo; +} CONDUCTIVITY_DATA_T; typedef struct { @@ -192,7 +198,7 @@ if ( FALSE == addMsgToPendingACKList( &msg, buffer, data, msgSize ) ) { error = TRUE; - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL ) } } @@ -662,6 +668,41 @@ return result; } + + +/************************************************************************* + * @brief + * The broadcastConductivityData function sends out conductivity data. + * @details + * Inputs : none + * Outputs : conductivity data msg constructed and queued + * @param cpi: water inlet conductivity data. + * @param cpo : water outlet conductivity data. + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL broadcastConductivityData( F32 cpi, F32 cpo ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + CONDUCTIVITY_DATA_T payload; + + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_CONDUCTIVITY_DATA; + msg.hdr.payloadLen = sizeof( CONDUCTIVITY_DATA_T ); + + payload.cpi = cpi; + payload.cpo = cpo; + + memcpy( payloadPtr, &payload, sizeof( CONDUCTIVITY_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; +} + // *********************************************************************** // **************** Message Handling Helper Functions ******************** @@ -1271,6 +1312,31 @@ * @return none *************************************************************************/ DATA_OVERRIDE_HANDLER_FUNC_U32( U32, handleTestDGSafetyShutdownOverrideRequest, testSetSafetyShutdownOverride, testResetSafetyShutdownOverride ) + +/************************************************************************* + * @brief + * The handleTestSetConductivityOverrideRequest function handles a + * request to override a conductivity sensor's value + * @details + * Inputs : none + * Outputs : message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +DATA_ARRAY_OVERRIDE_HANDLER_FUNC_F32( F32, handleTestSetConductivityOverrideRequest, testSetConductivityOverride, testResetConductivityOverride ) + +/************************************************************************* +* @brief +* The handleTestSetConductivityDataPublishIntervalOverrideRequest function +* handles a request to override the publish interval of conductivity sensors data +* @details +* Inputs : none +* Outputs : message handled +* @param message : a pointer to the message to handle +* @return none +*************************************************************************/ +DATA_OVERRIDE_HANDLER_FUNC_U32( U32, handleTestSetConductivityDataPublishIntervalOverrideRequest, \ + testSetConductivityDataPublishIntervalOverride, testResetConductivityDataPublishIntervalOverride ) #ifdef CAN_TEST void broadcastCANTest1LargeFrequentMessage()