Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r3241c6b7f66889b6443e377ab1f5ecf2cedd2602 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 3241c6b7f66889b6443e377ab1f5ecf2cedd2602) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -16,6 +16,7 @@ ***************************************************************************/ #include // Used for mathematical operations +#include #include "FpgaRO.h" #include "Heaters.h" @@ -29,7 +30,6 @@ #include "SafetyShutdown.h" #include "TaskGeneral.h" #include "TaskPriority.h" -#include "TemperatureSensors.h" #include "Timers.h" #include "Utilities.h" @@ -321,7 +321,7 @@ default: // The heater is in an unknown state. Alarm, turn heater off and switch to off state - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_HEATER_INVALID_EXEC_STATE, (U32)heatersStatus.state ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_HEATER_INVALID_EXEC_STATE, (U32)heatersStatus.state ); stopHeater(); break; } @@ -538,7 +538,7 @@ dataPublicationTimerCounter = 0; - broadcastData( MSG_ID_RO_HEATER_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( HEATERS_DATA_T ) ); + broadcastData( MSG_ID_FP_HEATER_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( HEATERS_DATA_T ) ); } } Index: firmware/App/Controllers/Heaters.h =================================================================== diff -u -r3241c6b7f66889b6443e377ab1f5ecf2cedd2602 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 3241c6b7f66889b6443e377ab1f5ecf2cedd2602) +++ firmware/App/Controllers/Heaters.h (.../Heaters.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef _HEATERS_H_ #define _HEATERS_H_ -#include "ROCommon.h" +#include "FPCommon.h" /** * @defgroup Heaters Heaters Index: firmware/App/Controllers/Valves.c =================================================================== diff -u -rce66580e076bffa157868ff7e422556f78a95cac -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Controllers/Valves.c (.../Valves.c) (revision ce66580e076bffa157868ff7e422556f78a95cac) +++ firmware/App/Controllers/Valves.c (.../Valves.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -133,7 +133,7 @@ valveStateMismatchTimerCounter++; // increment valve state mismatch counter by 1 if ( valveStateMismatchTimerCounter > MAX_VALVE_STATE_MISMATCH_TIMER_COUNT ) { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_VALVE_CONTROL_FAILURE, (U32)readValvesStates, (U32)commandedValvesStates ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_VALVE_CONTROL_FAILURE, (U32)readValvesStates, (U32)commandedValvesStates ) } } else @@ -210,7 +210,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_STATE_NAME, (U32)valveStateName ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_STATE_NAME, (U32)valveStateName ) } return vState; @@ -243,12 +243,12 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_STATE1, valveID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_STATE1, valveID ) } } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ID1, valveID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ID1, valveID ) } return result; @@ -287,12 +287,12 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_STATE2, valveID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_STATE2, valveID ) } } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ID2, valveID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ID2, valveID ) } return result; @@ -321,7 +321,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ID3, valveID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ID3, valveID ) } return name; @@ -346,7 +346,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ID4, valveID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_VALVES_INVALID_VALVE_ID4, valveID ) } return valveState; @@ -375,7 +375,7 @@ data.valvesSensedState[ valve ] = (U08)getValveStateName( (VALVES_T)valve ); } - broadcastData( MSG_ID_RO_VALVES_STATES_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( RO_VALVES_DATA_T ) ); + broadcastData( MSG_ID_FP_VALVES_STATES_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( RO_VALVES_DATA_T ) ); valvesStatesPublicationTimerCounter = 0; } Index: firmware/App/Controllers/Valves.h =================================================================== diff -u -r3241c6b7f66889b6443e377ab1f5ecf2cedd2602 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Controllers/Valves.h (.../Valves.h) (revision 3241c6b7f66889b6443e377ab1f5ecf2cedd2602) +++ firmware/App/Controllers/Valves.h (.../Valves.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef __VALVES_H__ #define __VALVES_H__ -#include "ROCommon.h" +#include "FPCommon.h" /** * @defgroup Valves Valves Index: firmware/App/Drivers/ConductivitySensor.c =================================================================== diff -u --- firmware/App/Drivers/ConductivitySensor.c (revision 0) +++ firmware/App/Drivers/ConductivitySensor.c (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -0,0 +1,793 @@ +/************************************************************************** +* +* Copyright (c) 2024-2024 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 ConductivitySensors.c +* +* @author (last) Sean Nash +* @date (last) 09-Nov-2024 +* +* @author (original) Sean Nash +* @date (original) 09-Nov-2024 +* +***************************************************************************/ + + +#include // Used for calculating the polynomial calibration equation. +#include // For memcpy + +#include "ConductivitySensor.h" +#include "FpgaRO.h" +#include "MessageSupport.h" +#include "Messaging.h" +#include "OperationModes.h" +#include "PersistentAlarm.h" +#include "Utilities.h" + +/** + * @addtogroup ConductivitySensors + * @{ + */ + +// ********** private definitions ********** + +#define SIEMENS_TO_MICROSIEMENS_CONVERSION 1000000 ///< Siemens to microSiemens conversion factor. +#define COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Conductivity sensors FPGA error timeout in milliseconds. +#define COND_SENSORS_READ_ERR_MAX_CNT 255 ///< Conductivity sensors read and error count max value + +/// Defined states for the conductivity write transaction. +typedef enum Conductvity_write_tx_states +{ + CONDUCTIVITY_WRITE_INITIATE = 0, ///< Conductivity sensor write initiate state. + CONDUCTIVITY_WRITE_COMPLETE, ///< Conductivity sensor write complete state. + NUM_OF_CONDUCTIVITY_WR_STATES ///< Number of conductivity write states. +} CONDUCTIVITY_WRITE_STATE_T; + +/// Defined states for the conductivity read transaction. +typedef enum Conductvity_read_tx_states +{ + CONDUCTIVITY_READ_INITIATE = 0, ///< Conductivity sensor read initiate state. + CONDUCTIVITY_READ_COMPLETE, ///< Conductivity sensor read complete state. + NUM_OF_CONDUCTIVITY_RD_STATES ///< Number of conductivity read states. +} CONDUCTIVITY_READ_STATE_T; + +/// Conductivity Sensor Control group +typedef struct +{ + BOOL resetRequested; ///< Flag indicates a reset command for the given conductivity sensor. + BOOL initEnable; ///< Flag indicates a enables initialization procedure for the given conductivity sensor. + BOOL writeEnable; ///< Flag indicates a enables write transaction for the given conductivity sensor. + BOOL readEnable; ///< Flag indicates a enables read transaction for the given conductivity sensor. + BOOL writeInProgress; ///< Flag indicates write transaction in progress + BOOL readInProgress; ///< Flag indicates read transaction in progress + BOOL writeComplete; ///< Flag indicates write transaction complete state. + BOOL readComplete; ///< Flag indicates read transaction complete state. + U32 writeData; ///< Data to write for the given conductivity sensor. + U32 readData; ///< Read data from the given conductivity sensor. + CONDUCTIVITY_READ_STATE_T readExecState; ///< Read executive state from the given conductivity sensor. + CONDUCTIVITY_WRITE_STATE_T writeExecState; ///< Write executive state from the given conductivity sensor. + U16 writeAddress; ///< Write address where the data needs to be written. + U16 readAddress; ///< Read address to read the data. +} CONDUCTIVITY_SENSOR_CONTROL_T; + +// ********** private data ********** + +static OVERRIDE_F32_T currentConductivityReadings[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Current conductivity sensor conductivity readings (overrideable). +static OVERRIDE_F32_T currentTemperatureReadings[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Current conductivity sensor temperature readings (overrideable). +static OVERRIDE_U32_T lastConductivityReadCounter[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Last conductivity sensor read count (Overrideable). +static OVERRIDE_U32_T lastConductivityErrorCounter[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Last conductivity sensor error count (Overrideable). + +static CONDUCTIVITY_SENSOR_CONTROL_T conductivitySensorControl[ NUM_OF_CONDUCTIVITY_SENSORS ]; ///< Conductivity sensor Control for reset, init, read and write operations. + +// ********** private function prototypes ********** + +//static void checkConductivitySensors( void ); +static CONDUCTIVITY_READ_STATE_T handleConductivitySensorsReadInitiate( CONDUCTIVITY_SENSORS_T sensorID ); +static CONDUCTIVITY_READ_STATE_T handleConductivitySensorsReadComplete( CONDUCTIVITY_SENSORS_T sensorID ); +static CONDUCTIVITY_WRITE_STATE_T handleConductivitySensorsWriteInitiate( CONDUCTIVITY_SENSORS_T sensorID ); +static CONDUCTIVITY_WRITE_STATE_T handleConductivitySensorsWriteComplete( CONDUCTIVITY_SENSORS_T sensorID ); + +/*********************************************************************//** + * @brief + * The initConductivitySensors function initializes the ConductivitySensors unit. + * @details \b Inputs: none + * @details \b Outputs: ConductivitySensors unit variables initialized + * @return none + *************************************************************************/ +void initConductivitySensors( void ) +{ + CONDUCTIVITY_SENSORS_T sensor; + + // Initialize override structures for each conductivity sensor + for ( sensor = CONDUCTIVITYSENSORS_FIRST; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) + { + currentConductivityReadings[ sensor ].data = 0.0F; + currentConductivityReadings[ sensor ].ovData = 0.0F; + currentConductivityReadings[ sensor ].ovInitData = 0.0F; + currentConductivityReadings[ sensor ].override = OVERRIDE_RESET; + + currentTemperatureReadings[ sensor ].data = 0.0F; + currentTemperatureReadings[ sensor ].ovData = 0.0F; + currentTemperatureReadings[ sensor ].ovInitData = 0.0F; + currentTemperatureReadings[ sensor ].override = OVERRIDE_RESET; + + lastConductivityReadCounter[ sensor ].data = 0; + lastConductivityReadCounter[ sensor ].ovData = 0; + lastConductivityReadCounter[ sensor ].ovInitData = 0; + lastConductivityReadCounter[ sensor ].override = OVERRIDE_RESET; + + lastConductivityErrorCounter[ sensor ].data = 0; + lastConductivityErrorCounter[ sensor ].ovData = 0; + lastConductivityErrorCounter[ sensor ].ovInitData = 0; + lastConductivityErrorCounter[ sensor ].override = OVERRIDE_RESET; + + conductivitySensorControl[ sensor ].initEnable = FALSE; + conductivitySensorControl[ sensor ].readAddress = 0; + conductivitySensorControl[ sensor ].readComplete = FALSE; + conductivitySensorControl[ sensor ].readData = 0; + conductivitySensorControl[ sensor ].readEnable = FALSE; + conductivitySensorControl[ sensor ].readInProgress = FALSE; + conductivitySensorControl[ sensor ].resetRequested = FALSE; + conductivitySensorControl[ sensor ].writeAddress = 0; + conductivitySensorControl[ sensor ].writeComplete = 0; + conductivitySensorControl[ sensor ].writeData = 0; + conductivitySensorControl[ sensor ].readExecState = CONDUCTIVITY_READ_INITIATE; + conductivitySensorControl[ sensor ].writeExecState = CONDUCTIVITY_WRITE_INITIATE; + conductivitySensorControl[ sensor ].writeEnable = FALSE; + conductivitySensorControl[ sensor ].writeInProgress = FALSE; + } + + // Initialize the conductivity sensor FPGA alarms +// initFPGAPersistentAlarm( FPGA_PERS_ERROR_P9_COND_SENSOR, ALARM_ID_RO_P9_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); +// initFPGAPersistentAlarm( FPGA_PERS_ERROR_P9_COND_SENSOR, ALARM_ID_RO_P18_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); +} + +/*********************************************************************//** + * @brief + * The readConductivitySensors function gets the current conductivity reading + * for all conductivity sensors from the FPGA and also reads the freshness + * and error counters to verify that the conductivity sensors are being read + * by the FPGA without issue. + * @note This function should be called periodically to maintain fresh + * sensor readings for all conductivity sensors. + * @details \b Inputs: FPGA + * @details \b Outputs: currentConductivityReadings[], currentTemperatureReadings[], + * lastConductivityReadCounter[], lastConductivityErrorCounter[]. + * @return none + *************************************************************************/ +void readConductivitySensors( void ) +{ + // Read raw conductivity + currentConductivityReadings[ P9_COND ].data = (F32)getFPGAP9Conductivity(); + currentConductivityReadings[ P18_COND ].data = (F32)getFPGAP18Conductivity(); + + // Read temperature associated to conductivity sensor + currentTemperatureReadings[ P9_COND ].data = (F32)getFPGAP9Temperature(); + currentTemperatureReadings[ P18_COND ].data = (F32)getFPGAP18Temperature(); + + // Update read and error counters for each conductivity sensor + lastConductivityReadCounter[ P9_COND ].data = (U32)getFPGAP9ReadCount(); + lastConductivityReadCounter[ P18_COND ].data = (U32)getFPGAP18ReadCount(); + + lastConductivityErrorCounter[ P9_COND ].data = (U32)getFPGAP9ErrorCount(); + lastConductivityErrorCounter[ P18_COND ].data = (U32)getFPGAP18ErrorCount(); + + // Monitor conductivity sensor health +// checkConductivitySensors(); +} + +/*********************************************************************//** + * @brief + * The checkConductivitySensors function checks the read and error counters for + * each conductivity sensor. + * @details \b Alarm: TBD + * @details \b Inputs: lastConductivityReadCounter, lastConductivityErrorCounter + * @details \b Outputs: none + * @return none + *************************************************************************/ +//static void checkConductivitySensors( void ) +//{ +// checkFPGAPersistentAlarms( FPGA_PERS_ERROR_P9_COND_SENSOR, getConductivitySensorReadCount(P9_COND) ); +// checkFPGAPersistentAlarms( FPGA_PERS_ERROR_P18_COND_SENSOR, getConductivitySensorReadCount(P18_COND) ); +// +// checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_P9_COND_SENSOR, getConductivitySensorErrorCount( P9_COND ) ); +// checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_P18_COND_SENSOR, getConductivitySensorErrorCount( P18_COND ) ); +//} + +/*********************************************************************//** + * @brief + * The getConductivityValue function gets the conductivity value for a given + * conductivity sensor. + * @details \b Inputs: currentConductivityReadings[] + * @details \b Outputs: none + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. + * @param sensorId conductivity sensor id + * @return conductivity value + *************************************************************************/ +F32 getConductivityValue( CONDUCTIVITY_SENSORS_T sensor ) +{ + F32 result = 0.0F; + + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + result = currentConductivityReadings[ sensor ].data; + if ( OVERRIDE_KEY == currentConductivityReadings[ sensor ].override ) + { + result = currentConductivityReadings[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID, (U32)sensor ); + } + + return result; +} + +/*********************************************************************//** + * @brief + * The getConductivityTemperatureValue function gets the temperature + * value for a given conductivity sensor id. + * @details \b Inputs: currentTemperatureReadings[] + * @details \b Outputs: none + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. + * @param sensorId conductivity sensor id + * @return temperature value + *************************************************************************/ +F32 getConductivityTemperatureValue( CONDUCTIVITY_SENSORS_T sensor ) +{ + F32 result = 0.0F; + + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + result = currentTemperatureReadings[ sensor ].data; + if ( OVERRIDE_KEY == currentTemperatureReadings[ sensor ].override ) + { + result = currentTemperatureReadings[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID1, (U32)sensor ); + } + + return result; +} + +/*********************************************************************//** + * @brief + * The getConductivitySensorReadCount function gets the current conductivity sensor + * read count for a given conductivity sensor. + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. + * @details \b Inputs: lastConductivityReadCounter + * @details \b Outputs: none + * @param sensor ID of conductivity sensor to get read count for. + * @return The current conductivity sensor read count of a given conductivity sensor. + *************************************************************************/ +U32 getConductivitySensorReadCount( CONDUCTIVITY_SENSORS_T sensor ) +{ + U32 result = 0; + + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + result = lastConductivityReadCounter[ sensor ].data; + if ( OVERRIDE_KEY == lastConductivityReadCounter[ sensor ].override ) + { + result = lastConductivityReadCounter[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID2, (U32)sensor ) + } + + return result; +} + +/*********************************************************************//** + * @brief + * The getConductivitySensorErrorCount function gets the current conductivity sensor + * error count for a given conductivity sensor. + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. + * @details \b Inputs: lastConductivityErrorCounter + * @details \b Outputs: none + * @param sensor ID of conductivity sensor to get error count for. + * @return The current conductivity sensor error count of a given conductivity sensor. + *************************************************************************/ +U32 getConductivitySensorErrorCount( CONDUCTIVITY_SENSORS_T sensor ) +{ + U32 result = 0; + + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + result = lastConductivityErrorCounter[ sensor ].data; + if ( OVERRIDE_KEY == lastConductivityErrorCounter[ sensor ].override ) + { + result = lastConductivityErrorCounter[ sensor ].ovData; + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID3, (U32)sensor ) + } + + return result; +} + +/*********************************************************************//** + * @brief + * The requestConductivitySensorReset function commands the given + * the conductivity sensor to go for reset. + * @details \b Inputs: none + * @details \b Outputs: conductivitySensorControl[] + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. + * @param sensor ID of conductivity sensor to request reset for + * @return none + *************************************************************************/ +void requestConductivitySensorReset( CONDUCTIVITY_SENSORS_T sensor ) +{ + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + conductivitySensorControl[ sensor ].resetRequested = TRUE; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID4, (U32)sensor ); + } +} + +/*********************************************************************//** + * @brief + * The setConductivitySensorInitEnable function enables the given + * the conductivity sensor (re)initialization procedure. + * @details \b Inputs: none + * @details \b Outputs: conductivitySensorControl + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. + * @param sensor ID of conductivity sensor to enable initialization for + * @return none + *************************************************************************/ +void setConductivitySensorInitEnable( CONDUCTIVITY_SENSORS_T sensor ) +{ + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + conductivitySensorControl[ sensor ].initEnable = TRUE; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID5, sensor ); + } +} + +/*********************************************************************//** + * @brief + * The conductivitySensorWriteRequest function requests the write transaction + * for the given conductivity sensor. + * @details \b Inputs: none + * @details \b Outputs: conductivitySensorControl + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. + * @param sensor ID of conductivity sensor to request write for + * @param writeAddr Address to write for the given conductivity sensor. + * @param data data to write in write address of given conductivity sensor. + * @return none + *************************************************************************/ +void conductivitySensorWriteRequest( CONDUCTIVITY_SENSORS_T sensor, U16 writeAddr, U32 data ) +{ + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + conductivitySensorControl[ sensor ].writeAddress = writeAddr; + conductivitySensorControl[ sensor ].writeData = data; + conductivitySensorControl[ sensor ].writeEnable = TRUE; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID6, (U32)sensor ); + } +} + +/*********************************************************************//** + * @brief + * The conductivitySensorReadRequest function requests the read transaction + * for the given conductivity sensor. + * @details \b Inputs: none + * @details \b Outputs: conductivitySensorControl[] + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. + * @param sensor ID of conductivity sensor to request read for + * @param readAddr Address to read from the given sensor. + * @return none + *************************************************************************/ +void conductivitySensorReadRequest( CONDUCTIVITY_SENSORS_T sensor, U16 readAddr ) +{ + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + conductivitySensorControl[ sensor ].readAddress = readAddr; + conductivitySensorControl[ sensor ].readEnable = TRUE; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID7, (U32)sensor ); + } +} + +/*********************************************************************//** + * @brief + * The conductivitySensorReadData function returns the read data for the + * given conductivity sensor. + * @details \b Inputs: conductivitySensorControl[] + * @details \b Outputs: none + * @param sensor ID conductivity sensor to read data from + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if given sensor is invalid. + * @return read data for the last read request + *************************************************************************/ +U32 conductivitySensorReadData( CONDUCTIVITY_SENSORS_T sensor ) +{ + U32 data; + + if ( sensor < NUM_OF_CONDUCTIVITY_SENSORS ) + { + data = conductivitySensorControl[ sensor ].readData; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID8, (U32)sensor ); + } + + return data; +} + +/*********************************************************************//** + * @brief + * The handleConductivitySensorsReset function checks the reset requested + * for all conductivity sensors and performs the sensor reset if requested. + * @note This function should be called periodically to handle any + * reset request for all conductivity sensors. + * @details \b Inputs: conductivitySensorControl[] + * @details \b Outputs: conductivitySensorControl[] + * @return none + *************************************************************************/ +void handleConductivitySensorsReset( void ) +{ + if ( TRUE == conductivitySensorControl[ P9_COND ].resetRequested ) + { + // P9 reset + setFPGAP9Reset(); + conductivitySensorControl[ P9_COND ].resetRequested = FALSE; + } + else + { + // clear P9 reset + clearFPGAP9Reset(); + } + + if ( TRUE == conductivitySensorControl[ P18_COND ].resetRequested ) + { + // P18 reset + setFPGAP18Reset(); + conductivitySensorControl[ P18_COND ].resetRequested = FALSE; + } + else + { + // clear P18 reset + clearFPGAP18Reset(); + } +} + +/*********************************************************************//** + * @brief + * The handleConductivitySensorsInitProcedure function checks the (re)initialization + * requested for all conductivity sensors request and performs the sensor initialization + * sequencing if requested. + * @note This function should be called periodically to handle any initialization + * request for all conductivity sensors. + * @details \b Inputs: conductivitySensorControl[] + * @details \b Outputs: conductivitySensorControl[] + * @return none + *************************************************************************/ +void handleConductivitySensorsInitProcedure( void ) +{ + if ( TRUE == conductivitySensorControl[ P9_COND ].initEnable ) + { + // P9 initialization + setFPGAP9InitEnable(); + conductivitySensorControl[ P9_COND ].initEnable = FALSE; + } + else + { + // clear P9 Init command + clearFPGAP9InitEnable(); + } + + if ( TRUE == conductivitySensorControl[ P18_COND ].initEnable ) + { + // P18 initialization + setFPGAP18InitEnable(); + conductivitySensorControl[ P18_COND ].initEnable = FALSE; + } + else + { + // clear P18 Init command + clearFPGAP18InitEnable(); + } +} + +/*********************************************************************//** + * @brief + * The execConductivitySensorWrite function executes the conductivity sensor write + * state machine. + * @details \b Inputs: conductivitySensorWriteState + * @details \b Outputs: conductivitySensorWriteState + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if invalid conductivity sensor write + * state seen + * @return none + *************************************************************************/ +void execConductivitySensorWrite( void ) +{ + CONDUCTIVITY_SENSORS_T sensor; + + for ( sensor = CONDUCTIVITYSENSORS_FIRST; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) + { + // write state machine + switch ( conductivitySensorControl[sensor].writeExecState ) + { + case CONDUCTIVITY_WRITE_INITIATE: + conductivitySensorControl[sensor].writeExecState = handleConductivitySensorsWriteInitiate( sensor ); + break; + + case CONDUCTIVITY_WRITE_COMPLETE: + conductivitySensorControl[sensor].writeExecState = handleConductivitySensorsWriteComplete( sensor ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_CONDUCTIVITY_WR_INVALID_EXEC_STATE, (U32)conductivitySensorControl[sensor].writeExecState ) + conductivitySensorControl[sensor].writeExecState = CONDUCTIVITY_WRITE_INITIATE; + break; + } + } +} + +/*********************************************************************//** + * @brief + * The handleConductivitySensorsWriteInitiate function initiates the write + * transaction of given conducitviy sensors. + * @details \b Inputs: conductivitySensorControl + * @details \b Outputs: conductivitySensorControl + * @param sensorID ID of conductivity sensor to handle write initiate state for + * @return CONDUCTIVITY_WRITE_STATE_T current state of write transaction + *************************************************************************/ +static CONDUCTIVITY_WRITE_STATE_T handleConductivitySensorsWriteInitiate( CONDUCTIVITY_SENSORS_T sensorID ) +{ + CONDUCTIVITY_WRITE_STATE_T state = CONDUCTIVITY_WRITE_INITIATE; + + if ( TRUE == conductivitySensorControl[ sensorID ].writeEnable && + FALSE == conductivitySensorControl[ sensorID ].writeInProgress ) + { + conductivitySensorControl[ sensorID ].writeComplete = FALSE; + conductivitySensorControl[ sensorID ].writeInProgress = TRUE; + if ( P9_COND == sensorID ) + { + setFPGAP9Address( conductivitySensorControl[ sensorID ].writeAddress ); + setFPGAP9Data( conductivitySensorControl[ sensorID ].writeData ); + setFPGAP9WriteEnable(); + } + else + { + setFPGAP18Address( conductivitySensorControl[ sensorID ].writeAddress ); + setFPGAP18Data( conductivitySensorControl[ sensorID ].writeData ); + setFPGAP18WriteEnable(); + } + state = CONDUCTIVITY_WRITE_COMPLETE; + } + + return state; +} + +/*********************************************************************//** + * @brief + * The handleConductivitySensorsWriteComplete function updates the write + * transaction completion of given conducitviy sensors. + * @details \b Inputs: conductivitySensorControl + * @details \b Outputs: conductivitySensorControl + * @param sensorID ID of conductivity sensor to handle write complete state for + * @return CONDUCTIVITY_WRITE_STATE_T current state of write transaction + *************************************************************************/ +static CONDUCTIVITY_WRITE_STATE_T handleConductivitySensorsWriteComplete( CONDUCTIVITY_SENSORS_T sensorID ) +{ + CONDUCTIVITY_WRITE_STATE_T state = CONDUCTIVITY_WRITE_COMPLETE; + + if ( TRUE == conductivitySensorControl[ sensorID ].writeInProgress ) + { + conductivitySensorControl[ sensorID ].writeComplete = TRUE; + conductivitySensorControl[ sensorID ].writeEnable = FALSE; + if ( P9_COND == sensorID ) + { + clearFPGAP9WriteEnable(); + } + else + { + clearFPGAP18WriteEnable(); + } + state = CONDUCTIVITY_WRITE_INITIATE; + } + + return state; +} + +/*********************************************************************//** + * @brief + * The execConductivitySensorRead function executes the conductivity sensor read + * state machine. + * @details \b Inputs: conductivitySensorReadState + * @details \b Outputs: conductivitySensorReadState + * @details \b Alarm: ALARM_ID_RO_SOFTWARE_FAULT if invalid conductivity sensor read + * state seen + * @return none + *************************************************************************/ +void execConductivitySensorRead( void ) +{ + CONDUCTIVITY_SENSORS_T sensor; + + for ( sensor = CONDUCTIVITYSENSORS_FIRST; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) + { + // Read state machine + switch ( conductivitySensorControl[sensor].readExecState ) + { + case CONDUCTIVITY_READ_INITIATE: + conductivitySensorControl[sensor].readExecState = handleConductivitySensorsReadInitiate( sensor ); + break; + + case CONDUCTIVITY_READ_COMPLETE: + conductivitySensorControl[sensor].readExecState = handleConductivitySensorsReadComplete( sensor ); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_CONDUCTIVITY_RD_INVALID_EXEC_STATE, (U32)conductivitySensorControl[sensor].readExecState ) + conductivitySensorControl[sensor].readExecState = CONDUCTIVITY_READ_INITIATE; + break; + } + } +} + +/*********************************************************************//** + * @brief + * The handleConductivitySensorsReadInitiate function initiates the read + * transaction of given conducitviy sensors. + * @details \b Inputs: conductivitySensorControl + * @details \b Outputs: conductivitySensorControl + * @param sensorID ID of conductivity sensor to handle read initiate state for + * @return CONDUCTIVITY_READ_STATE_T current state of read transaction + *************************************************************************/ +static CONDUCTIVITY_READ_STATE_T handleConductivitySensorsReadInitiate( CONDUCTIVITY_SENSORS_T sensorID ) +{ + CONDUCTIVITY_READ_STATE_T state = CONDUCTIVITY_READ_INITIATE; + + if ( TRUE == conductivitySensorControl[ sensorID ].readEnable && + FALSE == conductivitySensorControl[ sensorID ].readInProgress ) + { + conductivitySensorControl[ sensorID ].readComplete = FALSE; + conductivitySensorControl[ sensorID ].readInProgress = TRUE; + if ( P9_COND == sensorID ) + { + setFPGAP9Address( conductivitySensorControl[ sensorID ].readAddress ); + setFPGAP9ReadEnable(); + } + else + { + setFPGAP18Address( conductivitySensorControl[ sensorID ].readAddress ); + setFPGAP18ReadEnable(); + } + state = CONDUCTIVITY_READ_COMPLETE; + } + + return state; +} + +/*********************************************************************//** + * @brief + * The handleConductivitySensorsReadComplete function updates the read + * request completion of given conducitviy sensors. + * @details \b Inputs: conductivitySensorControl + * @details \b Outputs: conductivitySensorControl + * @param sensorID ID of conductivity sensor to handle read complete state for + * @return CONDUCTIVITY_READ_STATE_T current state of write transaction + *************************************************************************/ +static CONDUCTIVITY_READ_STATE_T handleConductivitySensorsReadComplete( CONDUCTIVITY_SENSORS_T sensorID ) +{ + CONDUCTIVITY_READ_STATE_T state = CONDUCTIVITY_READ_COMPLETE; + + if ( TRUE == conductivitySensorControl[ sensorID ].readInProgress ) + { + if ( P9_COND == sensorID ) + { + conductivitySensorControl[ sensorID ].readData = getFPGAP9Data(); + clearFPGAP9ReadEnable(); + } + else + { + conductivitySensorControl[ sensorID ].readData = getFPGAP18Data(); + clearFPGAP18ReadEnable(); + } + conductivitySensorControl[ sensorID ].readComplete = TRUE; + conductivitySensorControl[ sensorID ].readEnable = FALSE; + state = CONDUCTIVITY_READ_INITIATE; + } + + return state; +} + + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testConductivitySensorReadingsOverride function overrides the value of the + * specified conductivity sensor with a given value. + * @details \b Inputs: none + * @details \b Outputs: currentConductivityReadings[] + * @param message Override message from Dialin which includes an sensor + * ID and override value of the conductivity sensor. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testConductivitySensorReadingsOverride( MESSAGE_T *message ) +{ + BOOL result = f32ArrayOverride( message, ¤tConductivityReadings[0], NUM_OF_CONDUCTIVITY_SENSORS - 1 ); + + return result; +} + +/*********************************************************************//** + * @brief + * The testConductivitySensorTemperatureReadingsOverride function overrides + * the value of the specified conductivity sensor temperature with a given value. + * @details \b Inputs: none + * @details \b Outputs: currentPresTempReadings[] + * @param message Override message from Dialin which includes an sensor + * ID and override value of the conductivity sensor temperature. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testConductivitySensorTemperatureReadingsOverride( MESSAGE_T *message ) +{ + BOOL result = f32ArrayOverride( message, ¤tTemperatureReadings[0], NUM_OF_CONDUCTIVITY_SENSORS - 1 ); + + return result; +} + +/*********************************************************************//** + * @brief + * The testConductivitySensorReadCounterOverride function overrides + * the value of the specified conductivity sensor read counter with a given value. + * @details \b Inputs: none + * @details \b Outputs: lastConductivityReadCounter[] + * @param message Override message from Dialin which includes an sensor + * ID and override value of the conductivity sensor read counter. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testConductivitySensorReadCounterOverride( MESSAGE_T *message ) +{ + BOOL result = u32ArrayOverride( message, &lastConductivityReadCounter[0], NUM_OF_CONDUCTIVITY_SENSORS - 1, 0, COND_SENSORS_READ_ERR_MAX_CNT ); + + return result; +} + +/*********************************************************************//** + * @brief + * The testConductivitySensorErrorCounterOverride function overrides + * the value of the specified conductivity sensor error counter with a given value. + * @details \b Inputs: none + * @details \b Outputs: lastConductivityErrorCounter[] + * @param message Override message from Dialin which includes an sensor + * ID and override value of the conductivity sensor error counter. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testConductivitySensorErrorCounterOverride( MESSAGE_T *message ) +{ + BOOL result = u32ArrayOverride( message, &lastConductivityErrorCounter[0], NUM_OF_CONDUCTIVITY_SENSORS - 1, 0, COND_SENSORS_READ_ERR_MAX_CNT ); + + return result; +} + +/**@}*/ Index: firmware/App/Drivers/ConductivitySensor.h =================================================================== diff -u --- firmware/App/Drivers/ConductivitySensor.h (revision 0) +++ firmware/App/Drivers/ConductivitySensor.h (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -0,0 +1,77 @@ +/************************************************************************** +* +* Copyright (c) 2024-2024 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 ConductivitySensors.h +* +* @author (last) Sean Nash +* @date (last) 09-Nov-2024 +* +* @author (original) Sean Nash +* @date (original) 09-Nov-2024 +* +***************************************************************************/ + +#ifndef __CONDUCTIVITY_SENSORS_H__ +#define __CONDUCTIVITY_SENSORS_H__ + +#include "FPCommon.h" + +/** + * @defgroup ConductivitySensors ConductivitySensors + * @brief Conductivity Sensors monitor module. Monitors and filters conductivity sensor readings. + * The module uses AD5941 - high precision, low power analog front ends(AFEs) for conductivity measurement + * for CPi and CPo. + * + * Conductivity Sensor Module + * Diality P/N: TBD + * Manufacturer: TBD + * Manufacture P/N: TBD + * + * @addtogroup ConductivitySensors + * @{ + */ + +// ********** public definitions ********** + +/// Enumeration of conductivity sensors. +typedef enum ConductivitySensors +{ + P9_COND = 0, ///< Inlet water conductivity sensor + CONDUCTIVITYSENSORS_FIRST = P9_COND, ///< First conductivity sensor + P18_COND, ///< RO outlet water conductivity sensor + NUM_OF_CONDUCTIVITY_SENSORS ///< Number of conductivity sensors +} CONDUCTIVITY_SENSORS_T; + +// ********** public function prototypes ********** + +void initConductivitySensors( void ); +void readConductivitySensors( void ); + +F32 getConductivityValue( CONDUCTIVITY_SENSORS_T sensor ); +F32 getConductivityTemperatureValue( CONDUCTIVITY_SENSORS_T sensor ); +U32 getConductivitySensorReadCount( CONDUCTIVITY_SENSORS_T sensor ); +U32 getConductivitySensorErrorCount( CONDUCTIVITY_SENSORS_T sensor ); + +void handleConductivitySensorsReset( void ); +void handleConductivitySensorsInitProcedure( void ); +void execConductivitySensorWrite( void ); +void execConductivitySensorRead( void ); + +void requestConductivitySensorReset( CONDUCTIVITY_SENSORS_T sensor ); +void setConductivitySensorInitEnable( CONDUCTIVITY_SENSORS_T sensor ); +void conductivitySensorWriteRequest( CONDUCTIVITY_SENSORS_T sensor, U16 writeAddr, U32 data ); +void conductivitySensorReadRequest( CONDUCTIVITY_SENSORS_T sensor, U16 readAddr ); +U32 conductivitySensorReadData( CONDUCTIVITY_SENSORS_T sensor ); + +BOOL testConductivitySensorReadingsOverride( MESSAGE_T *message ); +BOOL testConductivitySensorTemperatureReadingsOverride( MESSAGE_T *message ); +BOOL testConductivitySensorReadCounterOverride( MESSAGE_T *message ); +BOOL testConductivitySensorErrorCounterOverride( MESSAGE_T *message ); + +/**@}*/ + +#endif Fisheye: Tag 99498a5bab0a1f4c706376feceadc66df6d1c22e refers to a dead (removed) revision in file `firmware/App/Drivers/ConductivitySensors.c'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 99498a5bab0a1f4c706376feceadc66df6d1c22e refers to a dead (removed) revision in file `firmware/App/Drivers/ConductivitySensors.h'. Fisheye: No comparison available. Pass `N' to diff? Index: firmware/App/Drivers/FlowSensor.c =================================================================== diff -u -r3241c6b7f66889b6443e377ab1f5ecf2cedd2602 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Drivers/FlowSensor.c (.../FlowSensor.c) (revision 3241c6b7f66889b6443e377ab1f5ecf2cedd2602) +++ firmware/App/Drivers/FlowSensor.c (.../FlowSensor.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -108,7 +108,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR1, (U32)sensor ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR1, (U32)sensor ) } return result; @@ -138,7 +138,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR2, (U32)sensor ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR2, (U32)sensor ) } return result; Index: firmware/App/Drivers/FlowSensor.h =================================================================== diff -u -r3241c6b7f66889b6443e377ab1f5ecf2cedd2602 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Drivers/FlowSensor.h (.../FlowSensor.h) (revision 3241c6b7f66889b6443e377ab1f5ecf2cedd2602) +++ firmware/App/Drivers/FlowSensor.h (.../FlowSensor.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef __FLOW_SENSOR_H__ #define __FLOW_SENSOR_H__ -#include "ROCommon.h" +#include "FPCommon.h" /** * @defgroup FlowSensor FlowSensor Index: firmware/App/Drivers/InternalADC.h =================================================================== diff -u -rce66580e076bffa157868ff7e422556f78a95cac -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Drivers/InternalADC.h (.../InternalADC.h) (revision ce66580e076bffa157868ff7e422556f78a95cac) +++ firmware/App/Drivers/InternalADC.h (.../InternalADC.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -2,7 +2,7 @@ #ifndef __INT_ADC_H__ #define __INT_ADC_H__ -#include "ROCommon.h" +#include "FPCommon.h" /** * @defgroup InternalADC InternalADC Index: firmware/App/Drivers/PAL.h =================================================================== diff -u -r129a1c2f4343bc85efdb4767c2dec35e4ba8ce98 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Drivers/PAL.h (.../PAL.h) (revision 129a1c2f4343bc85efdb4767c2dec35e4ba8ce98) +++ firmware/App/Drivers/PAL.h (.../PAL.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -2,7 +2,7 @@ #ifndef __PAL_H__ #define __PAL_H__ -#include "ROCommon.h" +#include "FPCommon.h" /** * @defgroup PAL PAL Index: firmware/App/Drivers/PressureSensor.c =================================================================== diff -u -r69e32c52c41cfc8073a7eb59408fb30e6ac40f86 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 69e32c52c41cfc8073a7eb59408fb30e6ac40f86) +++ firmware/App/Drivers/PressureSensor.c (.../PressureSensor.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -139,17 +139,6 @@ lastPressureReadCounter[ X4_PRES ].data = (U32)getFPGAX4ReadCount(); lastPressureReadCounter[ X5_PRES ].data = (U32)getFPGAX5ReadCount(); - lastPressureErrorCounter[ M1_PRES ].data = (U32)getFPGAM1ErrorCount(); - lastPressureErrorCounter[ M3_PRES ].data = (U32)getFPGAM3ErrorCount(); - lastPressureErrorCounter[ P8_PRES ].data = (U32)getFPGAP8ErrorCount(); - lastPressureErrorCounter[ P13_PRES ].data = (U32)getFPGAP13ErrorCount(); - lastPressureErrorCounter[ P17_PRES ].data = (U32)getFPGAP17ErrorCount(); - lastPressureErrorCounter[ X1_PRES ].data = (U32)getFPGAX1ErrorCount(); - lastPressureErrorCounter[ X2_PRES ].data = (U32)getFPGAX2ErrorCount(); - lastPressureErrorCounter[ X3_PRES ].data = (U32)getFPGAX3ErrorCount(); - lastPressureErrorCounter[ X4_PRES ].data = (U32)getFPGAX4ErrorCount(); - lastPressureErrorCounter[ X5_PRES ].data = (U32)getFPGAX5ErrorCount(); - // // Monitor pressure sensor health // checkPressureSensors(); } @@ -196,7 +185,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR1, (U32)sensor ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR1, (U32)sensor ) } return result; @@ -226,7 +215,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR2, (U32)sensor ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR2, (U32)sensor ) } return result; @@ -256,7 +245,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR3, sensor ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR3, sensor ) } return result; @@ -286,7 +275,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR4, sensor ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR4, sensor ) } return result; Index: firmware/App/Drivers/PressureSensor.h =================================================================== diff -u -r69e32c52c41cfc8073a7eb59408fb30e6ac40f86 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Drivers/PressureSensor.h (.../PressureSensor.h) (revision 69e32c52c41cfc8073a7eb59408fb30e6ac40f86) +++ firmware/App/Drivers/PressureSensor.h (.../PressureSensor.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef __PRESSURE_SENSOR_H__ #define __PRESSURE_SENSOR_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "PressureCommon.h" /** Index: firmware/App/Drivers/SafetyShutdown.h =================================================================== diff -u -r129a1c2f4343bc85efdb4767c2dec35e4ba8ce98 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Drivers/SafetyShutdown.h (.../SafetyShutdown.h) (revision 129a1c2f4343bc85efdb4767c2dec35e4ba8ce98) +++ firmware/App/Drivers/SafetyShutdown.h (.../SafetyShutdown.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -2,7 +2,7 @@ #ifndef __SAFETYSHUTDOWN_H__ #define __SAFETYSHUTDOWN_H__ -#include "ROCommon.h" +#include "FPCommon.h" /** * @defgroup SafetyShutdown SafetyShutdown Index: firmware/App/Drivers/TemperatureSensor.c =================================================================== diff -u --- firmware/App/Drivers/TemperatureSensor.c (revision 0) +++ firmware/App/Drivers/TemperatureSensor.c (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -0,0 +1,470 @@ +/************************************************************************** +* +* Copyright (c) 2024-2024 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 TemperatureSensors.c +* +* @author (last) Sean Nash +* @date (last) 09-Nov-2024 +* +* @author (original) Sean Nash +* @date (original) 09-Nov-2024 +* +***************************************************************************/ + +#include // For temperature calculation +#include // For memset() + +#include "Conductivity.h" +#include "FpgaRO.h" +#include "MessageSupport.h" +#include "Messaging.h" +//#include "NVDataMgmt.h" +#include "OperationModes.h" +#include "PersistentAlarm.h" +#include "Temperature.h" +#include "Timers.h" +#include "Utilities.h" + +/** + * @addtogroup TemperatureSensors + * @{ + */ + +// ********** private definitions ********** + +#define USE_PT_100_SENSORS 1 ///< Flag indicates whether we have PT100 or PT1000 temperature sensors. + +#define PRIMARY_HEATER_TEMP_SENSORS_GAIN 8U ///< Primary heater temperature sensors gain. +#define PRIMARY_HEATER_TEMP_SENSORS_REF_RESISTANCE 20000 ///< Primary heater temperature sensors reference resistance. +#define PRIMARY_HEATER_TEMP_SENSORS_0_DEGREE_RESISTANCE 1000U ///< Primary heater temperature sensors zero degree resistance. + +#define PT100_TEMP_SENSORS_GAIN 8U ///< PT100 temperature sensors gain. +#define PT100_TEMP_SENSORS_REF_RESISTANCE 4700 ///< PT100 temperature sensors reference resistance. +#define PT100_TEMP_SENSORS_0_DEGREE_RESISTANCE 100U ///< PT100 temperature sensors zero degree resistance. + +#define TEMP_SENSORS_ADC_BITS 24U ///< External temperature sensors ADC bits. +#define MAX_NUM_OF_RAW_ADC_SAMPLES 4U ///< Number of ADC reads for moving average calculations. +#define SHIFT_BITS_BY_2 2U ///< Shift bits by 2 to create a 4 for averaging 4 samples. +#define SHIFT_BITS_BY_2_FOR_AVERAGING 2U ///< Shift the ADCs of the temperature sensors by 2 to average them. + +#define CELSIUS_TO_KELVIN_CONVERSION 273.15F ///< Celsius to Kelvin temperature conversion. +#define ADC_BOARD_TEMP_SENSORS_CONVERSION_CONST 272.5F ///< ADC board temperature sensors conversion constant. +#define ADC_BOARD_TEMP_SENSORS_CONST 0x800000 ///< ADC board temperature sensors constant. + +#define TEMP_SENSORS_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Temperature sensors FPGA error timeout in milliseconds. + +#define TEMP_SENSORS_MIN_ALLOWED_DEGREE_C 0.0F ///< Temperature sensors minimum allowed temperature in C. +#define TEMP_SENSORS_MAX_ALLOWED_DEGREE_C 120.0F ///< Temperature sensors maximum allowed temperature in C. +#define HEATERS_INTERNAL_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C 200.0F ///< Heaters' internal temperature sensors maximum allowed temperature in C. +#define NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C 80.0F ///< Non fluid temperature sensors path maximum allowed temperature in C. +#define TEMP_SENSORS_OUT_OF_RANGE_TIME_OUT_MS ( 5 * MS_PER_SECOND ) ///< Temperature sensor out of range persistent period in milliseconds. +#define DATA_PUBLISH_COUNTER_START_COUNT 30 ///< Data publish counter start count. +#define TEMP_READ_COUNTER_MAX_VALUE 255 ///< FPGA temperature sensor read counter max value. + +static const U32 TEMP_EQUATION_RESISTOR_CALC = 1 << ( TEMP_SENSORS_ADC_BITS - 1 ); ///< Temperature sensors resistor calculation (2^(24 - 1)). +static const F32 TEMP_EQUATION_COEFF_A = 3.9083E-3; ///< ADC to temperature conversion coefficient A. +static const F32 TEMP_EQUATION_COEFF_B = -5.775E-7; ///< ADC to temperature conversion coefficient B. +static const U32 TWO_TO_POWER_OF_8 = ( 1 << 8 ); ///< 2^8. +static const U32 TWO_TO_POWER_OF_23 = ( 1 << 23 ); ///< 2^23. + +/// Temperature sensor struct. +typedef struct +{ + F32 gain; ///< ADC gain + F32 refResistance; ///< ADC reference resistance + F32 conversionCoeff; ///< ADC conversion coefficient + F32 zeroDegreeResistance; ///< ADC zero degree resistance + S32 rawADCReads[ MAX_NUM_OF_RAW_ADC_SAMPLES ]; ///< Raw ADC reads array + S32 adcNextIndex; ///< Next ADC read index + S32 adcRunningSum; ///< ADC running sum + F32 maxAllowedTemp; ///< Maximum allowed temperature of the sensor +} TEMP_SENSOR_T; + +// ********** private data ********** + +static TEMP_SENSOR_T tempSensors[ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature sensors' data structure. +static OVERRIDE_F32_T temperatureValue[ NUM_OF_TEMPERATURE_SENSORS ]; ///< Temperature values with override +static OVERRIDE_U32_T lastTemperatureReadCounter; ///< Temperature sensors read count from FPGA. + +//static RO_TEMP_SENSORS_CAL_RECORD_T tempSensorCalRecord; ///< Temperature sensors calibration record. + +// ********** private function prototypes ********** + +static F32 getADC2TempConversion( F32 avgADC, U32 gain, U32 refResistance, U32 zeroDegResistance, F32 adcConversionCoeff ); +static void processTempSnsrsADCRead( U32 sensorIndex, U32 adc ); +static void processADCRead( U32 sensorIndex, S32 adc ); +//static void checkTemperatureSensors( void ); +//static void getCalibrationAppliedTemperatureValue( U32 sesnorIndex, F32* temperature ); + +/*********************************************************************//** + * @brief + * The initTemperatureSensors function initializes the temperature sensors unit. + * @details \b Inputs: none + * @details \b Outputs: unit variables initialized + * @return none + *************************************************************************/ +void initTemperatureSensors( void ) +{ + U08 i; + F32 conversionCoeff = 1.0F / 13584.0F; + + for ( i = 0; i < NUM_OF_TEMPERATURE_SENSORS; ++i ) + { + memset( &tempSensors[ i ], 0x0, sizeof( TEMP_SENSOR_T ) ); + //benignPolynomialCalRecord( &tempSensorCalRecord.tempSensors[ i ] ); + } + + // Initialize P23 and P22 temperature sensors +#ifdef USE_PT_100_SENSORS + tempSensors[ P23_TEMP ].gain = PT100_TEMP_SENSORS_GAIN; + tempSensors[ P23_TEMP ].refResistance = PT100_TEMP_SENSORS_REF_RESISTANCE; + tempSensors[ P23_TEMP ].zeroDegreeResistance = PT100_TEMP_SENSORS_0_DEGREE_RESISTANCE; + tempSensors[ P23_TEMP ].maxAllowedTemp = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; + tempSensors[ P22_TEMP ].gain = PT100_TEMP_SENSORS_GAIN; + tempSensors[ P22_TEMP ].refResistance = PT100_TEMP_SENSORS_REF_RESISTANCE; + tempSensors[ P22_TEMP ].zeroDegreeResistance = PT100_TEMP_SENSORS_0_DEGREE_RESISTANCE; + tempSensors[ P22_TEMP ].maxAllowedTemp = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; +#else + tempSensors[ P23_TEMP ].gain = PRIMARY_HEATER_TEMP_SENSORS_GAIN; + tempSensors[ P23_TEMP ].refResistance = PRIMARY_HEATER_TEMP_SENSORS_REF_RESISTANCE; + tempSensors[ P23_TEMP ].zeroDegreeResistance = PRIMARY_HEATER_TEMP_SENSORS_0_DEGREE_RESISTANCE; + tempSensors[ P23_TEMP ].maxAllowedTemp = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; + tempSensors[ P22_TEMP ].gain = PRIMARY_HEATER_TEMP_SENSORS_GAIN; + tempSensors[ P22_TEMP ].refResistance = PRIMARY_HEATER_TEMP_SENSORS_REF_RESISTANCE; + tempSensors[ P22_TEMP ].zeroDegreeResistance = PRIMARY_HEATER_TEMP_SENSORS_0_DEGREE_RESISTANCE; + tempSensors[ P22_TEMP ].maxAllowedTemp = TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; +#endif + + // Board temperature sensors conversion coefficient +// tempSensors[ TEMPSENSORS_BOARD_TEMPERATURE ].conversionCoeff = conversionCoeff; +// tempSensors[ TEMPSENSORS_BOARD_TEMPERATURE ].maxAllowedTemp = NON_FLUID_PATH_TEMP_SENSORS_MAX_ALLOWED_DEGREE_C; + + // Persistent alarm for the temperature sensors range check +// initPersistentAlarm( ALARM_ID_DD_TEMPERATURE_SENSOR_OUT_OF_RANGE, TEMP_SENSORS_OUT_OF_RANGE_TIME_OUT_MS, TEMP_SENSORS_OUT_OF_RANGE_TIME_OUT_MS ); + + // Initialize the FPGA persistent alarms +// initFPGAPersistentAlarm( FPGA_PERS_ERROR_RTD_ADC_TEMP_SENSORS, ALARM_ID_DD_RTD_SENSORS_FPGA_FAULT, TEMP_SENSORS_FPGA_ERROR_TIMEOUT_MS, TEMP_SENSORS_FPGA_ERROR_TIMEOUT_MS); +} + +/*********************************************************************//** + * @brief + * The getTemperatureValue function gets the temperature of a given sensor. + * @details \b Inputs: tempSensors[] + * @details \b Outputs: none + * @details \b Alarms: ALARM_ID_DD_SOFTWARE_FAULT when invalid temperature + * sensor is seen. + * @param sensorId ID of temperature sensor to get temperature from + * @return temperature reading of the given sensor + *************************************************************************/ +F32 getTemperatureValue( TEMPERATURE_SENSOR_T sensorId ) +{ + F32 temperature = 0.0F; + + // if valid sensor, return its temperature reading + if ( sensorId < NUM_OF_TEMPERATURE_SENSORS ) + { + temperature = getF32OverrideValue( &temperatureValue[ sensorId ] ); + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_TEMPERATURE_SENSOR_SELECTED1, (U32)sensorId ); + } + + return temperature; +} + +/*********************************************************************//** + * @brief + * The readTemperatureSensors function reads the temperature sensor + * value from FPGA. + * @details \b Inputs: FPGA + * @details \b Outputs: lastTemperatureReadCounter + * @return none + *************************************************************************/ +void readTemperatureSensors( void ) +{ + // Temperature sensor read count from FPGA +// lastTemperatureReadCounter.data = (U32)getFPGARTDReadCount(); + + //Read temperature sensors + processTempSnsrsADCRead( P23_TEMP, getFPGAP23Temperature() ); + processTempSnsrsADCRead( P22_TEMP, getFPGAP22Temperature() ); + +// //TODO: Read Board temperature +// //processTempSnsrsADCRead( TEMPSENSORS_INTERNAL_COND_TEMP_SENSOR, getFPGACondSnsrInternalTemp() ); +} + +/*********************************************************************//** + * @brief + * The getTemperatureSensorsReadCount function gets the current temperature sensor + * read count for the RTD temperature sensors. + * @details \b Inputs: lastTemperatureReadCounter + * @details \b Outputs: none + * @return The RTD temperature sensor read count. + *************************************************************************/ +//U32 getTemperatureSensorsReadCount( void ) +//{ +// U32 result = lastTemperatureReadCounter.data; +// +// if ( OVERRIDE_KEY == lastTemperatureReadCounter.override ) +// { +// result = lastTemperatureReadCounter.ovData; +// } +// +// return result; +//} + +/*********************************************************************//** + * @brief + * The checkTemperatureSensors function checks the temperature sensor + * freshness and see if there is any read failures from FPGA. + * @details \b Inputs: Temperature sensors reading from FPGA + * @details \b Outputs: none + * @details \b Alarms: ALARM_ID_DD_RTD_SENSORS_FPGA_FAULT when temperature sensor + * read count not updated periodically + * @return none + *************************************************************************/ +//static void checkTemperatureSensors( void ) +//{ +// checkFPGAPersistentAlarms( FPGA_PERS_ERROR_RTD_ADC_TEMP_SENSORS, getTemperatureSensorsReadCount() ); +//} + +/*********************************************************************//** + * @brief + * The getADC2TempConversion function calculates the temperature from the + * moving average ADC samples. + * @details \b Inputs: tempEquationCoeffA, tempEquationCoeffB + * @details \b Outputs: none + * @param avgADC moving average ADC + * @param gain ADC gain + * @param refResistance ADC reference resistance + * @param zeroDegResistance ADC zero degree resistance + * @param adcConversionCoeff ADC conversion coefficient + * @return calculated temperature + *************************************************************************/ +static F32 getADC2TempConversion( F32 avgADC, U32 gain, U32 refResistance, U32 zeroDegResistance, F32 adcConversionCoeff ) +{ + F32 temperature = 0.0F; + + if ( fabs( adcConversionCoeff ) <= NEARLY_ZERO ) + { + // R(RTD) = R(ref) * ( adc – 2^(N - 1) ) / ( G * 2^(N - 1) ); + F32 resistance = ( refResistance * ( avgADC - TEMP_EQUATION_RESISTOR_CALC ) ) / ( gain * TEMP_EQUATION_RESISTOR_CALC ); + // T = (-A + √( A^2 - 4B * ( 1 - R_T / R_0 ) ) ) / 2B + F32 secondSqrtPart = 4 * TEMP_EQUATION_COEFF_B * ( 1 - ( resistance / zeroDegResistance ) ); + temperature = ( -TEMP_EQUATION_COEFF_A + sqrt( pow( TEMP_EQUATION_COEFF_A, 2 ) - secondSqrtPart ) ) / ( 2 * TEMP_EQUATION_COEFF_B ); + } + else + { + temperature = avgADC * adcConversionCoeff; + } + + return temperature; +} + +/*********************************************************************//** + * @brief + * The processTemperatureSensorsADCRead function masks the MSB of the ADC + * read from FPGA and converts it to an S32. Then it calls the routine + * that checks if the read ADC is valid or not and if it is, to process + * the ADC value and covert it to temperature. + * @details \b Inputs: none + * @details \b Outputs: none + * @param sensorId ID of temperature sensor to process + * @param adc ADC value from the temperature sensor + * @return none + *************************************************************************/ +static void processTempSnsrsADCRead( U32 sensorId, U32 adc ) +{ + S32 convertedADC = (S32)( adc & MASK_OFF_U32_MSB ); + + // Make sure the error bit is not true before + processADCRead( sensorId, convertedADC ); +} + +/*********************************************************************//** + * @brief + * The processADCRead function updates the ADC count moving average for a + * given temperature sensor. + * @details \b Inputs: tempSensors + * @details \b Outputs: tempSensors + * @details \b Alarms: ALARM_ID_DD_SOFTWARE_FAULT when invalid temperature + * sensor is seen. + * @param sensorIndex Temperature sensor index + * @param adc adc reading from FPGA + * @return none + *************************************************************************/ +static void processADCRead( U32 sensorIndex, S32 adc ) +{ + F32 temperature; + F32 avgADCReads; + U32 index = tempSensors[ sensorIndex ].adcNextIndex; + S32 indexValue = tempSensors[ sensorIndex ].rawADCReads[ index ]; + + // Update the temperature sensors' structure + tempSensors[ sensorIndex ].rawADCReads[ index ] = adc; + tempSensors[ sensorIndex ].adcNextIndex = INC_WRAP( index, 0, MAX_NUM_OF_RAW_ADC_SAMPLES - 1 ); + tempSensors[ sensorIndex ].adcRunningSum = tempSensors[ sensorIndex ].adcRunningSum - indexValue + adc; + avgADCReads = tempSensors[ sensorIndex ].adcRunningSum >> SHIFT_BITS_BY_2_FOR_AVERAGING; // Calculate the average + + // Different sensors have different ADC to temperature conversion methods + switch( sensorIndex ) + { + case P23_TEMP: + case P22_TEMP: + temperature = getADC2TempConversion( avgADCReads, (U32)tempSensors [ sensorIndex ].gain, (U32)tempSensors [ sensorIndex ].refResistance, + (U32)tempSensors [ sensorIndex ].zeroDegreeResistance, tempSensors [ sensorIndex ].conversionCoeff ); + break; + + case P10_TEMP: + temperature = getConductivityTemperatureValue( P9_COND ); + break; + + case P19_TEMP: + temperature = getConductivityTemperatureValue( P18_COND ); + break; + +// case TEMPSENSORS_BOARD_TEMPERATURE: +// //TODO : Need details on calculations. +// break; + + default: + // invalid sensor ID, raise an alarm + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_TEMPERATURE_SENSOR_SELECTED2, sensorIndex ); + // Wrong sensor, return temperature to be -1 + temperature = -1.0F; + break; + } + + // Calibrate temperature sensor reading +// getCalibrationAppliedTemperatureValue( sensorIndex, &temperature ); + + // Update the temperature + temperatureValue[ sensorIndex ].data = temperature; +} + +/*********************************************************************//** + * @brief + * The monitorTemperatureSensors function monitors the temperature sensors' + * temperature value and raises an alarm if any of them are out of range + * for more than the specified time. + * @details \b Inputs: tempSensors + * @details \b Outputs: tempSensors + * @details \b Alarms: ALARM_ID_DD_TEMPERATURE_SENSOR_OUT_OF_RANGE when the + * measured temperature exceeds the maximum limit temperature. + * @return none + *************************************************************************/ +void monitorTemperatureSenors( void ) +{ +// TEMPERATURE_SENSOR_T sensorId; +// TEMPERATURE_SENSOR_T sensorInAlarm = TEMPSENSORS_FIRST; +// F32 temperature = 0.0F; +// BOOL isTemperatureOutOfRange = FALSE; +// F32 alarmTemperature = 0.0F; +// +// for ( sensorId = TEMPSENSORS_FIRST; sensorId < NUM_OF_TEMPERATURE_SENSORS; sensorId++ ) +// { +// // Get temperature value. +// temperature = getTemperatureValue( sensorId ); +// // Check both temperature and to be in range +// if ( ( ( temperature < TEMP_SENSORS_MIN_ALLOWED_DEGREE_C ) || ( temperature > tempSensors[ sensorId ].maxAllowedTemp ) ) && +// ( getCurrentOperationMode() != DD_MODE_INIT ) ) +// { +// isTemperatureOutOfRange |= TRUE; +// sensorInAlarm = sensorId; +// alarmTemperature = temperature; +// } +// } +// +// checkPersistentAlarm( ALARM_ID_DD_TEMPERATURE_SENSOR_OUT_OF_RANGE, isTemperatureOutOfRange, sensorInAlarm, alarmTemperature ); +// +// //check freshness of temperature read +// checkTemperatureSensors(); +} + +/*********************************************************************//** + * @brief + * The getCalibrationAppliedTemperatureValue function applies the calibration + * values to the provided temperature value + * @details \b Inputs: tempSensorCalRecord + * @details \b Outputs: none + * @param sensorIndex Temperature sensor index + * @param temperature pointer to the calculated temperature value + * @return none + *************************************************************************/ +//static void getCalibrationAppliedTemperatureValue( U32 sesnorIndex, F32* temperature ) +//{ +// //CAL_DATA_RO_TEMP_SENSORS_T calId; +// F32 tempTemperature = *temperature; +// +// switch( sesnorIndex ) +// { +// case P23_TEMP: +// //calId = CAL_DATA_P23_TEMP; +// break; +// +// case P22_TEMP: +// //calId = CAL_DATA_P22_TEMP; +// break; +// +// default: +// // Set the calibration temperature value as num of meaning calibration is not needed for the provided sensor +// //calId = NUM_OF_CAL_DATA_TEMP_SENSORS; +// break; +// } +// +// if ( calId != NUM_OF_CAL_DATA_TEMP_SENSORS ) +// { +// *temperature = pow( tempTemperature, 4 ) * tempSensorCalRecord.tempSensors[ calId ].fourthOrderCoeff + +// pow( tempTemperature, 3 ) * tempSensorCalRecord.tempSensors[ calId ].thirdOrderCoeff + +// pow( tempTemperature, 2 ) * tempSensorCalRecord.tempSensors[ calId ].secondOrderCoeff + +// tempTemperature * tempSensorCalRecord.tempSensors[ calId ].gain + +// tempSensorCalRecord.tempSensors[ calId ].offset; +// } +//} + + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testSetMeasuredTemperatureOverride function sets the override value + * for a specific temperature sensor. + * @details Inputs: tempSensors + * @details Outputs: tempSensors + * @param message Override message from Dialin which includes an ID of + * the sensor to override and the state to override the sensor to. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testMeasuredTemperatureOverride( MESSAGE_T *message ) +{ + BOOL result = f32ArrayOverride( message, &temperatureValue[0], NUM_OF_TEMPERATURE_SENSORS - 1 ); + + return result; +} + +/*********************************************************************//** + * @brief + * The testTemperatureReadCounterOverride function sets the override value + * of the temperature read counter. + * @details Inputs: lastTemperatureReadCounter + * @details Outputs: lastTemperatureReadCounter + * @param message Override message from Dialin which includes the read + * counter value to override for the set of temperature sensors. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +//BOOL testTemperatureReadCounterOverride( MESSAGE_T *message ) +//{ +// BOOL result = u32Override( message, &lastTemperatureReadCounter, 0, TEMP_READ_COUNTER_MAX_VALUE ); +// +// return result; +//} + +/**@}*/ Index: firmware/App/Drivers/TemperatureSensor.h =================================================================== diff -u --- firmware/App/Drivers/TemperatureSensor.h (revision 0) +++ firmware/App/Drivers/TemperatureSensor.h (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -0,0 +1,61 @@ +/************************************************************************** +* +* Copyright (c) 2024-2024 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 TemperatureSensors.h +* +* @author (last) Sean Nash +* @date (last) 09-Nov-2024 +* +* @author (original) Sean Nash +* @date (original) 09-Nov-2024 +* +***************************************************************************/ + +#ifndef __TEMPERATURE_SENSORS_H__ +#define __TEMPERATURE_SENSORS_H__ + +#include "FPCommon.h" +//#include "NVDataMgmt.h" + +/** + * @defgroup TemperatureSensors TemperatureSensors + * @brief Temperature Sensors driver module. Reads and processes the temperature sensors. + * 2 wire/ 3 wire RTD : PT1000 temperature sensor interfaced to FPGA ADC. + * + * @addtogroup TemperatureSensors + * @{ + */ + +// ********** public definitions ********** + +/// Enumeration of temperature sensors. +typedef enum SENSORS_NAME +{ + P23_TEMP = 0, ///< Tank temperature sensor at hottest point. + TEMP_SENSOR_FIRST = P23_TEMP, ///< First temp sensor. + P22_TEMP, ///< Pre-tank temperature sensor at coldest point. + P10_TEMP, ///< Inlet conductivity sensor temperature. + P19_TEMP, ///< Outlet conductivity sensor temperature. + NUM_OF_TEMPERATURE_SENSORS ///< Number of temperature sensors +} TEMPERATURE_SENSOR_T; + +// ********** public function prototypes ********** + +void initTemperatureSensors( void ); + +void readTemperatureSensors( void ); +void monitorTemperatureSenors( void ); + +F32 getTemperatureValue( TEMPERATURE_SENSOR_T sensorIndex ); +//U32 getTemperatureSensorsReadCount( void ); +// +BOOL testMeasuredTemperatureOverride( MESSAGE_T *message ); +//BOOL testTemperatureReadCounterOverride( MESSAGE_T *message ); + +/**@}*/ + +#endif Fisheye: Tag 99498a5bab0a1f4c706376feceadc66df6d1c22e refers to a dead (removed) revision in file `firmware/App/Drivers/TemperatureSensors.c'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 99498a5bab0a1f4c706376feceadc66df6d1c22e refers to a dead (removed) revision in file `firmware/App/Drivers/TemperatureSensors.h'. Fisheye: No comparison available. Pass `N' to diff? Index: firmware/App/Modes/FilterFlush.c =================================================================== diff -u --- firmware/App/Modes/FilterFlush.c (revision 0) +++ firmware/App/Modes/FilterFlush.c (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -0,0 +1 @@ \ No newline at end of file Index: firmware/App/Modes/FilterFlush.h =================================================================== diff -u --- firmware/App/Modes/FilterFlush.h (revision 0) +++ firmware/App/Modes/FilterFlush.h (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -0,0 +1,15 @@ +/* + * FilterFlush.h + * + * Created on: May 30, 2025 + * Author: fw + */ + +#ifndef APP_MODES_FILTERFLUSH_H_ +#define APP_MODES_FILTERFLUSH_H_ + + + + + +#endif /* APP_MODES_FILTERFLUSH_H_ */ Index: firmware/App/Modes/MembraneFlush.c =================================================================== diff -u --- firmware/App/Modes/MembraneFlush.c (revision 0) +++ firmware/App/Modes/MembraneFlush.c (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -0,0 +1 @@ \ No newline at end of file Index: firmware/App/Modes/MembraneFlush.h =================================================================== diff -u --- firmware/App/Modes/MembraneFlush.h (revision 0) +++ firmware/App/Modes/MembraneFlush.h (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -0,0 +1,15 @@ +/* + * MembraneFlush.h + * + * Created on: May 30, 2025 + * Author: fw + */ + +#ifndef APP_MODES_MEMBRANEFLUSH_H_ +#define APP_MODES_MEMBRANEFLUSH_H_ + + + + + +#endif /* APP_MODES_MEMBRANEFLUSH_H_ */ Index: firmware/App/Modes/ModeFault.h =================================================================== diff -u -r129a1c2f4343bc85efdb4767c2dec35e4ba8ce98 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Modes/ModeFault.h (.../ModeFault.h) (revision 129a1c2f4343bc85efdb4767c2dec35e4ba8ce98) +++ firmware/App/Modes/ModeFault.h (.../ModeFault.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -2,7 +2,7 @@ #ifndef __MODE_FAULT_H__ #define __MODE_FAULT_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "RODefs.h" /** Index: firmware/App/Modes/ModeInitPOST.h =================================================================== diff -u -r129a1c2f4343bc85efdb4767c2dec35e4ba8ce98 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision 129a1c2f4343bc85efdb4767c2dec35e4ba8ce98) +++ firmware/App/Modes/ModeInitPOST.h (.../ModeInitPOST.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -2,7 +2,7 @@ #ifndef __MODE_INIT_POST_H__ #define __MODE_INIT_POST_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "RODefs.h" /** Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r12c4f28723f9af89ae693df771039da1bc7ffc80 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -81,7 +81,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_MODE_STANDBY_INVALID_STATE, standbyState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_MODE_STANDBY_INVALID_STATE, standbyState ) standbyState = RO_STANDBY_MODE_STATE_IDLE; break; } Index: firmware/App/Modes/ModeStandby.h =================================================================== diff -u -r12c4f28723f9af89ae693df771039da1bc7ffc80 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) +++ firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -17,7 +17,7 @@ #ifndef __MODE_STANDBY_H__ #define __MODE_STANDBY_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "RODefs.h" /** Index: firmware/App/Modes/ModeWaterGen.c =================================================================== diff -u -r27852fdd669da28463818441428361d45f4b3866 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Modes/ModeWaterGen.c (.../ModeWaterGen.c) (revision 27852fdd669da28463818441428361d45f4b3866) +++ firmware/App/Modes/ModeWaterGen.c (.../ModeWaterGen.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -122,7 +122,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_GENW_STATE, genWaterState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_GENW_STATE, genWaterState ) break; } @@ -169,7 +169,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_GENW_STATE, state ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_GENW_STATE, state ) break; } } @@ -299,7 +299,7 @@ data.genWaterExecState = (U32)getCurrentGenWaterState(); data.setFlowRate = (F32)getDDPermeateFlowRate(); - broadcastData( MSG_ID_RO_GEN_WATER_MODE_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( GEN_WATER_MODE_DATA_T ) ); + broadcastData( MSG_ID_FP_GEN_WATER_MODE_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( GEN_WATER_MODE_DATA_T ) ); genWaterDataPublicationTimerCounter = 0; } @@ -316,7 +316,7 @@ { BOOL result = FALSE; - if ( RO_PRE_GENW_STATE_COMPLETE == getCurrentPreGenWState() ) + if ( RO_PRE_GENW_VERIFY_WATER == getCurrentPreGenWState() ) { result = TRUE; pendingStartGenRequest = TRUE; Index: firmware/App/Modes/ModeWaterGen.h =================================================================== diff -u -r12c4f28723f9af89ae693df771039da1bc7ffc80 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Modes/ModeWaterGen.h (.../ModeWaterGen.h) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) +++ firmware/App/Modes/ModeWaterGen.h (.../ModeWaterGen.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef __MODE_WATER_GEN_H__ #define __MODE_WATER_GEN_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "RODefs.h" /** Index: firmware/App/Modes/ModeWaterPreGen.c =================================================================== diff -u -r12c4f28723f9af89ae693df771039da1bc7ffc80 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Modes/ModeWaterPreGen.c (.../ModeWaterPreGen.c) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) +++ firmware/App/Modes/ModeWaterPreGen.c (.../ModeWaterPreGen.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -98,12 +98,12 @@ preGenWState = handlePreGenWStartState(); break; - case RO_PRE_GENW_STATE_COMPLETE: + case RO_PRE_GENW_VERIFY_WATER: preGenWState = handlePreGenWCompleteState(); break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_PGEN_STATE, preGenWState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_PGEN_STATE, preGenWState ) break; } //Publish pre Gen water mode data @@ -130,12 +130,12 @@ // TODO: handler function of state start break; - case RO_PRE_GENW_STATE_COMPLETE: + case RO_PRE_GENW_VERIFY_WATER: // TODO: handler function of state complete break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_PGEN_STATE, state ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_PGEN_STATE, state ) break; } } @@ -148,9 +148,9 @@ *************************************************************************/ static RO_PRE_GENW_MODE_STATE_T handlePreGenWStartState( void ) { - RO_PRE_GENW_MODE_STATE_T state = RO_PRE_GENW_STATE_COMPLETE; + RO_PRE_GENW_MODE_STATE_T state = RO_PRE_GENW_VERIFY_WATER; - setModePreGenWTransition( RO_PRE_GENW_STATE_COMPLETE ); + setModePreGenWTransition( RO_PRE_GENW_VERIFY_WATER ); return state; } @@ -164,7 +164,7 @@ *************************************************************************/ static RO_PRE_GENW_MODE_STATE_T handlePreGenWCompleteState( void ) { - RO_PRE_GENW_MODE_STATE_T state = RO_PRE_GENW_STATE_COMPLETE; + RO_PRE_GENW_MODE_STATE_T state = RO_PRE_GENW_VERIFY_WATER; if ( TRUE == pendingStartPreGenRequest ) { @@ -234,7 +234,7 @@ data.preGenWExecState = (U32)getCurrentPreGenWState(); - broadcastData( MSG_ID_RO_PRE_GEN_WATER_MODE_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( PRE_GENW_MODE_DATA_T ) ); + broadcastData( MSG_ID_FP_PRE_GEN_WATER_MODE_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( PRE_GENW_MODE_DATA_T ) ); preGenWDataPublicationTimerCounter = 0; } Index: firmware/App/Modes/ModeWaterPreGen.h =================================================================== diff -u -r12c4f28723f9af89ae693df771039da1bc7ffc80 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Modes/ModeWaterPreGen.h (.../ModeWaterPreGen.h) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) +++ firmware/App/Modes/ModeWaterPreGen.h (.../ModeWaterPreGen.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef __MODE_WATER_PRE_GEN_H__ #define __MODE_WATER_PRE_GEN_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "RODefs.h" /** Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r28b6e281605c1a944c982d0ec7dcdb6f28aac82b -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 28b6e281605c1a944c982d0ec7dcdb6f28aac82b) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -164,7 +164,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, currentMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, currentMode ) currentMode = RO_MODE_FAUL; currentSubMode = 0; break; @@ -203,7 +203,7 @@ } else { // Invalid mode requested - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_REQUESTED, newMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_REQUESTED, newMode ) } } @@ -322,7 +322,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO, newMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO, newMode ) break; } } @@ -344,7 +344,7 @@ broadcastModeIntervalCtr = 0; data.opMode = (U32)currentMode; data.subMode = currentSubMode; - broadcastData( MSG_ID_RO_OP_MODE_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( OP_MODE_PAYLOAD_T ) ); + broadcastData( MSG_ID_FP_OP_MODE_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( OP_MODE_PAYLOAD_T ) ); } } Index: firmware/App/Modes/OperationModes.h =================================================================== diff -u -rbf3ba65cafc8cbfb34e03d9fb2fc248069a8addb -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision bf3ba65cafc8cbfb34e03d9fb2fc248069a8addb) +++ firmware/App/Modes/OperationModes.h (.../OperationModes.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef __OP_MODES_H__ #define __OP_MODES_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "RODefs.h" /** Index: firmware/App/Monitors/Conductivity.c =================================================================== diff -u -r3241c6b7f66889b6443e377ab1f5ecf2cedd2602 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 3241c6b7f66889b6443e377ab1f5ecf2cedd2602) +++ firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -109,7 +109,7 @@ data.p18Conductivity = getConductivityValue( P18_COND ); conductivityPublishTimerCounter = 0; - broadcastData( MSG_ID_RO_CONDUCTIVITY_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( CONDUCTIVITY_DATA_T ) ); + broadcastData( MSG_ID_FP_CONDUCTIVITY_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( CONDUCTIVITY_DATA_T ) ); } } Index: firmware/App/Monitors/Conductivity.h =================================================================== diff -u -r3241c6b7f66889b6443e377ab1f5ecf2cedd2602 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Monitors/Conductivity.h (.../Conductivity.h) (revision 3241c6b7f66889b6443e377ab1f5ecf2cedd2602) +++ firmware/App/Monitors/Conductivity.h (.../Conductivity.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,8 +18,8 @@ #ifndef __CONDUCTIVITY_H__ #define __CONDUCTIVITY_H__ -#include "ROCommon.h" -#include "ConductivitySensors.h" +#include "ConductivitySensor.h" +#include "FPCommon.h" /** * @defgroup Conductivity Conductivity Index: firmware/App/Monitors/Flow.c =================================================================== diff -u -r72ae21d8343d3a2b07a47452ff48549e25f876df -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Monitors/Flow.c (.../Flow.c) (revision 72ae21d8343d3a2b07a47452ff48549e25f876df) +++ firmware/App/Monitors/Flow.c (.../Flow.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -169,7 +169,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR3, (U32)sensor ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR3, (U32)sensor ) } return result; @@ -199,7 +199,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR4, (U32)sensor ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR4, (U32)sensor ) } return result; @@ -230,7 +230,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_FLOW_INVALID_EXEC_STATE, (U32)flowsState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_FLOW_INVALID_EXEC_STATE, (U32)flowsState ) flowsState = FLOW_INIT_STATE; break; } @@ -373,7 +373,7 @@ data.p7Temp = getFilteredFlowSensorTemperature( P7_FLOW ); data.p16Temp = getFilteredFlowSensorTemperature( P16_FLOW ); - broadcastData( MSG_ID_RO_FLOW_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( FLOW_TEMP_DATA_T ) ); + broadcastData( MSG_ID_FP_FLOW_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( FLOW_TEMP_DATA_T ) ); flowsDataPublicationTimerCounter = 0; } } Index: firmware/App/Monitors/Flow.h =================================================================== diff -u -r72ae21d8343d3a2b07a47452ff48549e25f876df -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Monitors/Flow.h (.../Flow.h) (revision 72ae21d8343d3a2b07a47452ff48549e25f876df) +++ firmware/App/Monitors/Flow.h (.../Flow.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef __FLOW_H__ #define __FLOW_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "FlowSensor.h" /** Index: firmware/App/Monitors/Level.c =================================================================== diff -u -r3241c6b7f66889b6443e377ab1f5ecf2cedd2602 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Monitors/Level.c (.../Level.c) (revision 3241c6b7f66889b6443e377ab1f5ecf2cedd2602) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -168,7 +168,7 @@ data.p25Level = (U32)getLevelStatus(); levelsDataPublicationCounter = 0; - broadcastData( MSG_ID_RO_LEVEL_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( LEVEL_DATA_T ) ); + broadcastData( MSG_ID_FP_LEVEL_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( LEVEL_DATA_T ) ); } } Index: firmware/App/Monitors/Level.h =================================================================== diff -u -rc6491e96503a221cd9524da289522afd3eb00b29 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Monitors/Level.h (.../Level.h) (revision c6491e96503a221cd9524da289522afd3eb00b29) +++ firmware/App/Monitors/Level.h (.../Level.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef LEVEL_H_ #define LEVEL_H_ -#include "ROCommon.h" +#include "FPCommon.h" /** * @defgroup Level Level Index: firmware/App/Monitors/Pressure.c =================================================================== diff -u -r85a88a4ffdc56784d261ccd2e87d156805666c5d -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision 85a88a4ffdc56784d261ccd2e87d156805666c5d) +++ firmware/App/Monitors/Pressure.c (.../Pressure.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -190,7 +190,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR5, (U32)sensor ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR5, (U32)sensor ) } return result; @@ -220,7 +220,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR6, (U32)sensor ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_SENSOR_INVALID_SENSOR6, (U32)sensor ) } return result; @@ -327,7 +327,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_INVALID_EXEC_STATE, pressuresState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_PRESSURE_INVALID_EXEC_STATE, pressuresState ) pressuresState = PRESSURE_INIT_STATE; break; } @@ -502,7 +502,7 @@ data.x4Temp = getFilteredPressureSensorTemperature( X4_PRES ); data.x4Temp = getFilteredPressureSensorTemperature( X5_PRES ); - broadcastData( MSG_ID_RO_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( PRESSURE_TEMP_DATA_T ) ); + broadcastData( MSG_ID_FP_PRESSURES_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( PRESSURE_TEMP_DATA_T ) ); pressuresDataPublicationTimerCounter = 0; } } Index: firmware/App/Monitors/Pressure.h =================================================================== diff -u -r85a88a4ffdc56784d261ccd2e87d156805666c5d -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Monitors/Pressure.h (.../Pressure.h) (revision 85a88a4ffdc56784d261ccd2e87d156805666c5d) +++ firmware/App/Monitors/Pressure.h (.../Pressure.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef __PRESSURE_H__ #define __PRESSURE_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "PressureSensor.h" /** Index: firmware/App/Monitors/Temperature.c =================================================================== diff -u -r72ae21d8343d3a2b07a47452ff48549e25f876df -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 72ae21d8343d3a2b07a47452ff48549e25f876df) +++ firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -215,7 +215,7 @@ data.p19Temp = getTemperatureValue( P19_TEMP ); data.boardTemp = 0.0F; // TODO - broadcastData( MSG_ID_RO_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_DATA_T ) ); + broadcastData( MSG_ID_FP_TEMPERATURE_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( TEMPERATURE_SENSORS_DATA_T ) ); dataPublicationTimerCounter = 0; } } Index: firmware/App/Monitors/Temperature.h =================================================================== diff -u -r72ae21d8343d3a2b07a47452ff48549e25f876df -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Monitors/Temperature.h (.../Temperature.h) (revision 72ae21d8343d3a2b07a47452ff48549e25f876df) +++ firmware/App/Monitors/Temperature.h (.../Temperature.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,8 +18,8 @@ #ifndef __TEMPERATURE_H__ #define __TEMPERATURE_H__ -#include "ROCommon.h" -#include "TemperatureSensors.h" +#include "FPCommon.h" +#include "TemperatureSensor.h" /** * @defgroup Temperature Temperature Index: firmware/App/Services/AlarmMgmtRO.c =================================================================== diff -u -r28b6e281605c1a944c982d0ec7dcdb6f28aac82b -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/AlarmMgmtRO.c (.../AlarmMgmtRO.c) (revision 28b6e281605c1a944c982d0ec7dcdb6f28aac82b) +++ firmware/App/Services/AlarmMgmtRO.c (.../AlarmMgmtRO.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -121,7 +121,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE, alarm ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE, alarm ) } } @@ -232,7 +232,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR, alarm ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR, alarm ) } } @@ -266,7 +266,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_ID, alarm ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_ID, alarm ) } } @@ -302,7 +302,7 @@ data.safetyShutdownStatus = (U32)isSafetyShutdownActivated(); - broadcastData( MSG_ID_RO_ALARM_INFO_DATA, COMM_BUFFER_OUT_CAN_RO_ALARM, (U08*)&data, sizeof( SAFETY_SHUTDOWN_ACTIVATION_DATA_T ) ); + broadcastData( MSG_ID_FP_ALARM_INFO_DATA, COMM_BUFFER_OUT_CAN_RO_ALARM, (U08*)&data, sizeof( SAFETY_SHUTDOWN_ACTIVATION_DATA_T ) ); alarmInfoPublicationTimerCounter = 0; } } Index: firmware/App/Services/AlarmMgmtRO.h =================================================================== diff -u -r129a1c2f4343bc85efdb4767c2dec35e4ba8ce98 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/AlarmMgmtRO.h (.../AlarmMgmtRO.h) (revision 129a1c2f4343bc85efdb4767c2dec35e4ba8ce98) +++ firmware/App/Services/AlarmMgmtRO.h (.../AlarmMgmtRO.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -13,7 +13,7 @@ // ********** public definitions ********** -#include "ROCommon.h" +#include "FPCommon.h" #include "AlarmDefs.h" #include "AlarmMgmtSWFaults.h" Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r28b6e281605c1a944c982d0ec7dcdb6f28aac82b -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 28b6e281605c1a944c982d0ec7dcdb6f28aac82b) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -93,10 +93,10 @@ SW_FAULT_ID_VALVES_INVALID_VALVE_ID2 = 76, SW_FAULT_ID_VALVES_INVALID_VALVE_ID3 = 77, SW_FAULT_ID_VALVES_INVALID_VALVE_ID4 = 78, - SW_FAULT_ID_INVALID_BOOST_PUMP_ID1 = 79, - SW_FAULT_ID_INVALID_BOOST_PUMP_ID2 = 80, - SW_FAULT_ID_INVALID_BOOST_PUMP_ID3 = 81, - SW_FAULT_ID_INVALID_BOOST_PUMP_ID4 = 82, + SW_FAULT_ID_INVALID_FLUID_PUMP_ID1 = 79, + SW_FAULT_ID_INVALID_FLUID_PUMP_ID2 = 80, + SW_FAULT_ID_INVALID_FLUID_PUMP_ID3 = 81, + SW_FAULT_ID_INVALID_FLUID_PUMP_ID4 = 82, SW_FAULT_ID_RO_PUMP_INVALID_EXEC_STATE = 83, SW_FAULT_ID_RO_PUMP_INVALID_PUMP_ID1 = 84, SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO = 85, @@ -129,6 +129,9 @@ SW_FAULT_ID_RO_INVALID_GENW_STATE = 112, SW_FAULT_ID_RO_INVALID_PGEN_STATE = 113, SW_FAULT_ID_RO_INVALID_RO_CMD = 114, + SW_FAULT_ID_RO_INVALID_PUMP_DUTY_CYCLE_SELECTED = 115, + SW_FAULT_ID_RO_PUMP_INVALID_PRESSURE_SELECTED = 116, + SW_FAULT_ID_RO_PUMP_INVALID_FLOW_RATE_SET = 117, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/DDInterface.c =================================================================== diff -u -r12c4f28723f9af89ae693df771039da1bc7ffc80 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision 12c4f28723f9af89ae693df771039da1bc7ffc80) +++ firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -16,7 +16,7 @@ ***************************************************************************/ -#include "ROPump.h" + #include "DDInterface.h" #include "Messaging.h" #include "MessagePayloads.h" @@ -25,6 +25,7 @@ #include "ModeWaterPreGen.h" #include "OperationModes.h" #include "PersistentAlarm.h" +#include "ROPump.h" #include "SystemCommRO.h" #include "TaskGeneral.h" #include "Timers.h" @@ -155,7 +156,7 @@ result = handleGenWaterCmd( cmd.start, cmd.roRate ); break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_RO_CMD, cmd.cmdID ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_RO_INVALID_RO_CMD, cmd.cmdID ) break; } } @@ -181,14 +182,14 @@ if ( ( RO_MODE_STAN == roMode ) && ( TRUE == start ) ) { setDDPermeateFlowRate( roRate ); - setBoostPumpPWMDutyCycle( P12_PUMP, roRate ); + setFluidPumpPWMDutyCycle( P12_PUMP, roRate ); result = requestPreGenStart(); } else if ( RO_MODE_PGEN == roMode ) { if ( FALSE == start ) { - signalROPumpStop( P12_PUMP ); + signalROPumpHardStop(); result = requestPreGenStop(); } else @@ -220,14 +221,14 @@ if ( ( RO_MODE_PGEN == roMode ) && ( TRUE == start ) ) { setDDPermeateFlowRate( roRate ); - setBoostPumpPWMDutyCycle( P12_PUMP,roRate ); + setFluidPumpPWMDutyCycle( P12_PUMP,roRate ); result = requestGenWaterStart(); } else if ( RO_MODE_GENW == roMode ) { if ( FALSE == start ) { - signalROPumpStop( P12_PUMP ); + signalROPumpHardStop(); result = requestGenWaterStop(); } else Index: firmware/App/Services/DDInterface.h =================================================================== diff -u -r28b6e281605c1a944c982d0ec7dcdb6f28aac82b -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/DDInterface.h (.../DDInterface.h) (revision 28b6e281605c1a944c982d0ec7dcdb6f28aac82b) +++ firmware/App/Services/DDInterface.h (.../DDInterface.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -18,7 +18,7 @@ #ifndef __DD_INTERFACE_H__ #define __DD_INTERFACE_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "RODefs.h" #include "DDDefs.h" Index: firmware/App/Services/Interrupts.c =================================================================== diff -u -r8e7d30d231de616b58a765d98495ba34010781c8 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 8e7d30d231de616b58a765d98495ba34010781c8) +++ firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -60,7 +60,7 @@ *************************************************************************/ void phantomInterrupt(void) { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_PHANTOM_INTERRUPT ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_PHANTOM_INTERRUPT ) } /*********************************************************************//** @@ -93,7 +93,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_RTI_NOTIFICATION, notification ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_RTI_NOTIFICATION, notification ) break; } } @@ -138,7 +138,7 @@ can1ParityCnt++; if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_CAN_PARITY ) ) { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_CAN_PARITY_ERROR ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_CAN_PARITY_ERROR ) } } // Bus off - our transmitter has counted 255+ errors @@ -147,7 +147,7 @@ can1BusOffCnt++; if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_CAN_OFF ) ) { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_CAN_OFF_ERROR ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_CAN_OFF_ERROR ) } } // Warning - our transmitter has counted 96+ errors @@ -220,7 +220,7 @@ break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_UNEXPECTED_DMA_INTERRUPT, channel ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_UNEXPECTED_DMA_INTERRUPT, channel ) break; } } Index: firmware/App/Services/Interrupts.h =================================================================== diff -u -r129a1c2f4343bc85efdb4767c2dec35e4ba8ce98 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/Interrupts.h (.../Interrupts.h) (revision 129a1c2f4343bc85efdb4767c2dec35e4ba8ce98) +++ firmware/App/Services/Interrupts.h (.../Interrupts.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -2,7 +2,7 @@ #ifndef __INTERRUPTS_H__ #define __INTERRUPTS_H__ -#include "ROCommon.h" +#include "FPCommon.h" /** * @defgroup Interrupts Interrupts Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r0126254993a6cc5023632330f59cb05daf485ebe -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 0126254993a6cc5023632330f59cb05daf485ebe) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -65,37 +65,37 @@ /// Message handling function lookup table static const MSG_HANDLER_LOOKUP_T MSG_FUNCTION_HANDLER_LOOKUP[] = { -{ MSG_ID_RO_TESTER_LOGIN_REQUEST, &handleTesterLogInRequest }, -{ MSG_ID_RO_SOFTWARE_RESET_REQUEST, &handleROSoftwareResetRequest }, -{ MSG_ID_RO_SEND_TEST_CONFIGURATION, &handleROTestConfiguration }, -{ MSG_ID_RO_VALVE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testValvesStatesPublishIntervalOverride }, -{ MSG_ID_RO_VALVE_CMD_STATE_OVERRIDE_REQUEST, &testValveStateOverride }, -{ MSG_ID_RO_VALVE_SENSED_STATE_OVERRIDE_REQUEST, &testValveSensedStateOverride }, -{ MSG_ID_RO_BOOST_PUMP_SET_PWM_REQUEST, &testSetFluidPumpPWM }, -{ MSG_ID_RO_BOOST_PUMP_READ_PWM_OVERRIDE_REQUEST, &testFluidPumpPWMOverride }, -{ MSG_ID_RO_BOOST_PUMP_SPEED_OVERRIDE_REQUEST, &testFluidPumpRPMOverride }, -{ MSG_ID_RO_BOOST_PUMPS_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testROPumpDataPublishIntervalOverride }, -{ MSG_ID_RO_PRESSURE_OVERRIDE_REQUEST, &testPressureSensorReadingsOverride }, -{ MSG_ID_RO_PRESSURE_TEMP_OVERRIDE_REQUEST, &testPressureSensorTemperatureReadingsOverride }, -{ MSG_ID_RO_PRESSURE_READ_COUNT_OVERRIDE_REQUEST, &testPressureSensorReadCounterOverride }, -{ MSG_ID_RO_PRESSURE_ERROR_COUNT_OVERRIDE_REQUEST, &testPressureSensorErrorCounterOverride }, -{ MSG_ID_RO_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPressureSensorDataPublishIntervalOverride }, -{ MSG_ID_RO_DEBUG_EVENT, &handleUnhandledMsg }, -{ MSG_ID_RO_LEVEL_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testLevelsDataPublishIntervalOverride }, -{ MSG_ID_RO_LEVEL_OVERRIDE_REQUEST, &testLevelStateOverride }, -{ MSG_ID_RO_FLOWS_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testFlowSensorDataPublishIntervalOverride }, -{ MSG_ID_RO_FLOW_RATE_OVERRIDE_REQUEST, &testFlowSensorReadingsOverride }, -{ MSG_ID_RO_FLOW_TEMP_OVERRIDE_REQUEST, &testFlowSensorTemperatureReadingsOverride }, -{ MSG_ID_RO_FILTERED_FLOW_RATE_OVERRIDE_REQUEST, &testFlowSensorFilteredReadingsOverride }, -{ MSG_ID_RO_FILTERED_FLOW_TEMP_OVERRIDE_REQUEST, &testFlowSensorFilteredTemperatureReadingsOverride }, -{ MSG_ID_RO_CONDUCTIVITY_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testConductivitySensorDataPublishIntervalOverride }, -{ MSG_ID_RO_CONDUCTIVITY_OVERRIDE_REQUEST, &testConductivitySensorReadingsOverride }, -{ MSG_ID_RO_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST, &testConductivitySensorTemperatureReadingsOverride }, -{ MSG_ID_RO_CONDUCTIVITY_READ_COUNT_OVERRIDE_REQUEST, &testConductivitySensorReadCounterOverride }, -{ MSG_ID_RO_CONDUCTIVITY_ERROR_COUNT_OVERRIDE_REQUEST, &testConductivitySensorErrorCounterOverride }, -{ MSG_ID_RO_TEMPERATURE_OVERRIDE_REQUEST, &testMeasuredTemperatureOverride }, -{ MSG_ID_DD_RO_START_STOP_CMD_REQUEST, &handleGenerateWaterRequestMsg }, -{ MSG_ID_RO_PRE_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPreGenWaterDataPublishIntervalOverride }, +{ MSG_ID_FP_TESTER_LOGIN_REQUEST, &handleTesterLogInRequest }, +{ MSG_ID_FP_SOFTWARE_RESET_REQUEST, &handleROSoftwareResetRequest }, +{ MSG_ID_FP_SEND_TEST_CONFIGURATION, &handleROTestConfiguration }, +{ MSG_ID_FP_VALVE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testValvesStatesPublishIntervalOverride }, +{ MSG_ID_FP_VALVE_CMD_STATE_OVERRIDE_REQUEST, &testValveStateOverride }, +{ MSG_ID_FP_VALVE_SENSED_STATE_OVERRIDE_REQUEST, &testValveSensedStateOverride }, +{ MSG_ID_FP_BOOST_PUMP_SET_PWM_REQUEST, &testSetFluidPumpPWM }, +{ MSG_ID_FP_BOOST_PUMP_READ_PWM_OVERRIDE_REQUEST, &testFluidPumpPWMOverride }, +{ MSG_ID_FP_BOOST_PUMP_SPEED_OVERRIDE_REQUEST, &testFluidPumpRPMOverride }, +{ MSG_ID_FP_BOOST_PUMPS_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testROPumpDataPublishIntervalOverride }, +{ MSG_ID_FP_PRESSURE_OVERRIDE_REQUEST, &testPressureSensorReadingsOverride }, +{ MSG_ID_FP_PRESSURE_TEMP_OVERRIDE_REQUEST, &testPressureSensorTemperatureReadingsOverride }, +{ MSG_ID_FP_PRESSURE_READ_COUNT_OVERRIDE_REQUEST, &testPressureSensorReadCounterOverride }, +{ MSG_ID_FP_PRESSURE_ERROR_COUNT_OVERRIDE_REQUEST, &testPressureSensorErrorCounterOverride }, +{ MSG_ID_FP_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPressureSensorDataPublishIntervalOverride }, +{ MSG_ID_FP_DEBUG_EVENT, &handleUnhandledMsg }, +{ MSG_ID_FP_LEVEL_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testLevelsDataPublishIntervalOverride }, +{ MSG_ID_FP_LEVEL_OVERRIDE_REQUEST, &testLevelStateOverride }, +{ MSG_ID_FP_FLOWS_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testFlowSensorDataPublishIntervalOverride }, +{ MSG_ID_FP_FLOW_RATE_OVERRIDE_REQUEST, &testFlowSensorReadingsOverride }, +{ MSG_ID_FP_FLOW_TEMP_OVERRIDE_REQUEST, &testFlowSensorTemperatureReadingsOverride }, +{ MSG_ID_FP_FILTERED_FLOW_RATE_OVERRIDE_REQUEST, &testFlowSensorFilteredReadingsOverride }, +{ MSG_ID_FP_FILTERED_FLOW_TEMP_OVERRIDE_REQUEST, &testFlowSensorFilteredTemperatureReadingsOverride }, +{ MSG_ID_FP_CONDUCTIVITY_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testConductivitySensorDataPublishIntervalOverride }, +{ MSG_ID_FP_CONDUCTIVITY_OVERRIDE_REQUEST, &testConductivitySensorReadingsOverride }, +{ MSG_ID_FP_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST, &testConductivitySensorTemperatureReadingsOverride }, +{ MSG_ID_FP_CONDUCTIVITY_READ_COUNT_OVERRIDE_REQUEST, &testConductivitySensorReadCounterOverride }, +{ MSG_ID_FP_CONDUCTIVITY_ERROR_COUNT_OVERRIDE_REQUEST, &testConductivitySensorErrorCounterOverride }, +{ MSG_ID_FP_TEMPERATURE_OVERRIDE_REQUEST, &testMeasuredTemperatureOverride }, +{ MSG_ID_DD_FP_START_STOP_CMD_REQUEST, &handleGenerateWaterRequestMsg }, +{ MSG_ID_FP_PRE_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPreGenWaterDataPublishIntervalOverride }, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T)) @@ -296,7 +296,7 @@ // if Dialin message, ensure Dialin is logged in before processing it if ( ( message->hdr.msgID < MSG_ID_FIRST_TD_TESTER_MESSAGE ) || - ( MSG_ID_RO_TESTER_LOGIN_REQUEST == message->hdr.msgID ) || + ( MSG_ID_FP_TESTER_LOGIN_REQUEST == message->hdr.msgID ) || ( TRUE == isTestingActivated() ) ) { MsgFuncPtr msgFuncPtr; @@ -468,7 +468,7 @@ // Create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_RO_EVENT; + msg.hdr.msgID = MSG_ID_FP_EVENT; msg.hdr.payloadLen = sizeof( EVENT_PAYLOAD_T ); memcpy( &msg.payload, &eventStruct, sizeof( EVENT_PAYLOAD_T ) ); Index: firmware/App/Services/Messaging.h =================================================================== diff -u -rbe33dd1fa4f538d9247075c893e0d0c2ef3f6a28 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/Messaging.h (.../Messaging.h) (revision be33dd1fa4f538d9247075c893e0d0c2ef3f6a28) +++ firmware/App/Services/Messaging.h (.../Messaging.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -2,7 +2,7 @@ #ifndef __MESSAGING_H__ #define __MESSAGING_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "RODefs.h" #include "MessageSupport.h" #include "MsgQueues.h" Index: firmware/App/Services/MsgQueues.c =================================================================== diff -u -r129a1c2f4343bc85efdb4767c2dec35e4ba8ce98 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/MsgQueues.c (.../MsgQueues.c) (revision 129a1c2f4343bc85efdb4767c2dec35e4ba8ce98) +++ firmware/App/Services/MsgQueues.c (.../MsgQueues.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -75,7 +75,7 @@ } else // Msg queue is full { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_ADD_QUEUE_FULL ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_ADD_QUEUE_FULL ) } } else // Invalid message queue @@ -181,7 +181,7 @@ } else // Invalid message queue { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_IS_FULL_INVALID_QUEUE, queue ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_IS_FULL_INVALID_QUEUE, queue ) } return result; Index: firmware/App/Services/MsgQueues.h =================================================================== diff -u -r129a1c2f4343bc85efdb4767c2dec35e4ba8ce98 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/MsgQueues.h (.../MsgQueues.h) (revision 129a1c2f4343bc85efdb4767c2dec35e4ba8ce98) +++ firmware/App/Services/MsgQueues.h (.../MsgQueues.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -2,8 +2,7 @@ #ifndef __MSG_QUEUES_H__ #define __MSG_QUEUES_H__ -#include "ROCommon.h" - +#include "FPCommon.h" #include "CommBuffers.h" #include "MessageSupport.h" Index: firmware/App/Services/SystemCommRO.c =================================================================== diff -u -r8e7d30d231de616b58a765d98495ba34010781c8 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/SystemCommRO.c (.../SystemCommRO.c) (revision 8e7d30d231de616b58a765d98495ba34010781c8) +++ firmware/App/Services/SystemCommRO.c (.../SystemCommRO.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -231,7 +231,7 @@ { if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_BAD_MSG_CRC ) ) { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_RO_COMM_TOO_MANY_BAD_CRCS, (U32)ALARM_SOURCE_RO ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_FP_COMM_TOO_MANY_BAD_CRCS, (U32)ALARM_SOURCE_RO ); } } @@ -256,7 +256,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_SYSTEM_COMM_INVALID_BUFFER_INDEX1, idx ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_FP_SOFTWARE_FAULT, SW_FAULT_ID_SYSTEM_COMM_INVALID_BUFFER_INDEX1, idx ) } return result; Index: firmware/App/Services/SystemCommRO.h =================================================================== diff -u -r129a1c2f4343bc85efdb4767c2dec35e4ba8ce98 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Services/SystemCommRO.h (.../SystemCommRO.h) (revision 129a1c2f4343bc85efdb4767c2dec35e4ba8ce98) +++ firmware/App/Services/SystemCommRO.h (.../SystemCommRO.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -2,7 +2,7 @@ #ifndef __SYSTEM_COMM_TD_H__ #define __SYSTEM_COMM_TD_H__ -#include "ROCommon.h" +#include "FPCommon.h" #include "CommBuffers.h" #include "MsgQueues.h" #include "SystemComm.h" Index: firmware/App/Tasks/TaskBG.c =================================================================== diff -u -r533272e6ef2873fcfe7a41338a6c88c7a601605d -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Tasks/TaskBG.c (.../TaskBG.c) (revision 533272e6ef2873fcfe7a41338a6c88c7a601605d) +++ firmware/App/Tasks/TaskBG.c (.../TaskBG.c) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -1,6 +1,5 @@ -#include - +#include "FPCommon.h" #include "SystemCommRO.h" #include "TaskTimer.h" #include "Timers.h" Index: firmware/App/Tasks/TaskGeneral.h =================================================================== diff -u -r129a1c2f4343bc85efdb4767c2dec35e4ba8ce98 -r99498a5bab0a1f4c706376feceadc66df6d1c22e --- firmware/App/Tasks/TaskGeneral.h (.../TaskGeneral.h) (revision 129a1c2f4343bc85efdb4767c2dec35e4ba8ce98) +++ firmware/App/Tasks/TaskGeneral.h (.../TaskGeneral.h) (revision 99498a5bab0a1f4c706376feceadc66df6d1c22e) @@ -2,7 +2,7 @@ #ifndef __TASK_GENERAL_H__ #define __TASK_GENERAL_H__ -#include "ROCommon.h" +#include "FPCommon.h" /** * @defgroup TaskGeneral TaskGeneral