Index: firmware/App/Drivers/ConductivitySensors.c =================================================================== diff -u -r2205857f59dd884c4af450239381387cfb560c2e -rf47296145b6a0adb78df0e325587629171909fd6 --- firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 2205857f59dd884c4af450239381387cfb560c2e) +++ firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision f47296145b6a0adb78df0e325587629171909fd6) @@ -84,10 +84,10 @@ // ********** private function prototypes ********** //static void checkConductivitySensors( void ); -static CONDUCTIVITY_READ_STATE_T handleConductivitySensorsReadInitiate( void ); -static CONDUCTIVITY_WRITE_STATE_T handleConductivitySensorsWriteComplete( void ); -static CONDUCTIVITY_WRITE_STATE_T handleConductivitySensorsWriteInitiate( void ); -static CONDUCTIVITY_READ_STATE_T handleConductivitySensorsReadComplete( 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 @@ -98,45 +98,45 @@ *************************************************************************/ void initConductivitySensors( void ) { - U08 i; + CONDUCTIVITY_SENSORS_T sensor; // Initialize override structures for each conductivity sensor - for ( i = 0; i < NUM_OF_CONDUCTIVITY_SENSORS; i++ ) + for ( sensor = CONDUCTIVITYSENSORS_FIRST; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) { - currentConductivityReadings[ i ].data = 0.0F; - currentConductivityReadings[ i ].ovData = 0.0F; - currentConductivityReadings[ i ].ovInitData = 0.0F; - currentConductivityReadings[ i ].override = OVERRIDE_RESET; + currentConductivityReadings[ sensor ].data = 0.0F; + currentConductivityReadings[ sensor ].ovData = 0.0F; + currentConductivityReadings[ sensor ].ovInitData = 0.0F; + currentConductivityReadings[ sensor ].override = OVERRIDE_RESET; - currentTemperatureReadings[ i ].data = 0.0F; - currentTemperatureReadings[ i ].ovData = 0.0F; - currentTemperatureReadings[ i ].ovInitData = 0.0F; - currentTemperatureReadings[ i ].override = OVERRIDE_RESET; + currentTemperatureReadings[ sensor ].data = 0.0F; + currentTemperatureReadings[ sensor ].ovData = 0.0F; + currentTemperatureReadings[ sensor ].ovInitData = 0.0F; + currentTemperatureReadings[ sensor ].override = OVERRIDE_RESET; - lastConductivityReadCounter[ i ].data = 0; - lastConductivityReadCounter[ i ].ovData = 0; - lastConductivityReadCounter[ i ].ovInitData = 0; - lastConductivityReadCounter[ i ].override = OVERRIDE_RESET; + lastConductivityReadCounter[ sensor ].data = 0; + lastConductivityReadCounter[ sensor ].ovData = 0; + lastConductivityReadCounter[ sensor ].ovInitData = 0; + lastConductivityReadCounter[ sensor ].override = OVERRIDE_RESET; - lastConductivityErrorCounter[ i ].data = 0; - lastConductivityErrorCounter[ i ].ovData = 0; - lastConductivityErrorCounter[ i ].ovInitData = 0; - lastConductivityErrorCounter[ i ].override = OVERRIDE_RESET; + lastConductivityErrorCounter[ sensor ].data = 0; + lastConductivityErrorCounter[ sensor ].ovData = 0; + lastConductivityErrorCounter[ sensor ].ovInitData = 0; + lastConductivityErrorCounter[ sensor ].override = OVERRIDE_RESET; - conductivitySensorControl[i].initEnable = FALSE; - conductivitySensorControl[i].readAddress = 0; - conductivitySensorControl[i].readComplete = FALSE; - conductivitySensorControl[i].readData = 0; - conductivitySensorControl[i].readEnable = FALSE; - conductivitySensorControl[i].readInProgress = FALSE; - conductivitySensorControl[i].resetRequested = FALSE; - conductivitySensorControl[i].writeAddress = 0; - conductivitySensorControl[i].writeComplete = 0; - conductivitySensorControl[i].writeData = 0; - conductivitySensorControl[i].readExecState = CONDUCTIVITY_READ_INITIATE; - conductivitySensorControl[i].writeExecState = CONDUCTIVITY_WRITE_INITIATE; - conductivitySensorControl[i].writeEnable = FALSE; - conductivitySensorControl[i].writeInProgress = FALSE; + 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 @@ -155,36 +155,28 @@ * @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[]. + * @details \b Outputs: currentConductivityReadings[], currentTemperatureReadings[], + * lastConductivityReadCounter[], lastConductivityErrorCounter[]. * @return none *************************************************************************/ void readConductivitySensors( void ) { -// // Read raw conductivity -// currentConductivityReadings[ CONDUCTIVITYSENSORS_CD1_SENSOR ].data = (F32)getFPGACD1(); -// currentConductivityReadings[ CONDUCTIVITYSENSORS_CD2_SENSOR ].data = (F32)getFPGACD2(); -// currentConductivityReadings[ CONDUCTIVITYSENSORS_CD3_SENSOR ].data = (F32)getFPGACD3(); -// currentConductivityReadings[ CONDUCTIVITYSENSORS_CD4_SENSOR ].data = (F32)getFPGACD4(); -// -// // Read temperature associated to conductivity sensor -// currentTemperatureReadings[ CONDUCTIVITYSENSORS_CD1_SENSOR ].data = (F32)getFPGACD1Temp(); -// currentTemperatureReadings[ CONDUCTIVITYSENSORS_CD2_SENSOR ].data = (F32)getFPGACD2Temp(); -// currentTemperatureReadings[ CONDUCTIVITYSENSORS_CD3_SENSOR ].data = (F32)getFPGACD3Temp(); -// currentTemperatureReadings[ CONDUCTIVITYSENSORS_CD4_SENSOR ].data = (F32)getFPGACD4Temp(); -// -// // Update read and error counters for each conductivity sensor -// lastConductivityReadCounter[ CONDUCTIVITYSENSORS_CD1_SENSOR ].data = (U32)getFPGACD1ReadCount(); -// lastConductivityReadCounter[ CONDUCTIVITYSENSORS_CD2_SENSOR ].data = (U32)getFPGACD2ReadCount(); -// lastConductivityReadCounter[ CONDUCTIVITYSENSORS_CD3_SENSOR ].data = (U32)getFPGACD3ReadCount(); -// lastConductivityReadCounter[ CONDUCTIVITYSENSORS_CD4_SENSOR ].data = (U32)getFPGACD4ReadCount(); -// -// lastConductivityErrorCounter[ CONDUCTIVITYSENSORS_CD1_SENSOR ].data = (U32)getFPGACD1ErrorCount(); -// lastConductivityErrorCounter[ CONDUCTIVITYSENSORS_CD2_SENSOR ].data = (U32)getFPGACD2ErrorCount(); -// lastConductivityErrorCounter[ CONDUCTIVITYSENSORS_CD3_SENSOR ].data = (U32)getFPGACD3ErrorCount(); -// lastConductivityErrorCounter[ CONDUCTIVITYSENSORS_CD4_SENSOR ].data = (U32)getFPGACD4ErrorCount(); -// -// // Monitor conductivity sensor health + // Read raw conductivity + currentConductivityReadings[ CONDUCTIVITYSENSORS_CPI_SENSOR ].data = (F32)getFPGACPiConductivity(); + currentConductivityReadings[ CONDUCTIVITYSENSORS_CPO_SENSOR ].data = (F32)getFPGACPoConductivity(); + + // Read temperature associated to conductivity sensor + currentTemperatureReadings[ CONDUCTIVITYSENSORS_CPI_SENSOR ].data = (F32)getFPGACPiTemperature(); + currentTemperatureReadings[ CONDUCTIVITYSENSORS_CPO_SENSOR ].data = (F32)getFPGACPoTemperature(); + + // Update read and error counters for each conductivity sensor + lastConductivityReadCounter[ CONDUCTIVITYSENSORS_CPI_SENSOR ].data = (U32)getFPGACPiReadCount(); + lastConductivityReadCounter[ CONDUCTIVITYSENSORS_CPO_SENSOR ].data = (U32)getFPGACPoReadCount(); + + lastConductivityErrorCounter[ CONDUCTIVITYSENSORS_CPI_SENSOR ].data = (U32)getFPGACPiErrorCount(); + lastConductivityErrorCounter[ CONDUCTIVITYSENSORS_CPO_SENSOR ].data = (U32)getFPGACPoErrorCount(); + + // Monitor conductivity sensor health // checkConductivitySensors(); } @@ -219,461 +211,386 @@ /*********************************************************************//** * @brief - * The getConductivityValue function gets the conductivity - * value for a given conductivity sensor id. + * 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_DD_SOFTWARE_FAULT if given sensor is invalid. + * @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_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID, sensor ); -// } -// -// return result; -//} +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_RO_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_DD_SOFTWARE_FAULT if given sensor is invalid. + * @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_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID1, sensor ); -// } -// -// return result; -//} +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_RO_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_DD_SOFTWARE_FAULT if given sensor is invalid. + * @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_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID2, sensor ) -// } -// -// return result; -//} +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_RO_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_DD_SOFTWARE_FAULT if given sensor is invalid. + * @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_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID3, sensor ) -// } -// -// return result; -//} +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_RO_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_DD_SOFTWARE_FAULT if given sensor is invalid. - * @param sensor conductivity sensor id + * @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_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID4, sensor ); -// } -//} +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_RO_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_DD_SOFTWARE_FAULT if given sensor is invalid. - * @param sensor conductivity sensor id + * @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_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID5, sensor ); -// } -//} +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_RO_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_DD_SOFTWARE_FAULT if given sensor is invalid. - * @param sensor conductivity sensor id - * @param writeAddr address to write for the given conductivity sensor. + * @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_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID6, sensor ); -// } -//} +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_RO_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_DD_SOFTWARE_FAULT if given sensor is invalid. - * @param sensor conductivity sensor id - * @param readAddr for sensor read transaction. + * @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_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID7, sensor ); -// } -//} +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_RO_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 + * The conductivitySensorReadData function returns the read data for the + * given conductivity sensor. + * @details \b Inputs: conductivitySensorControl[] * @details \b Outputs: none - * @param sensor conductivity sensor id - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if given sensor is invalid. - * @return read data for the last request + * @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_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID8, sensor ); -// } -// -// return data; -//} +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_RO_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 perform the sensor reset. + * 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 + * @details \b Inputs: conductivitySensorControl[] + * @details \b Outputs: conductivitySensorControl[] * @return none *************************************************************************/ void handleConductivitySensorsReset( void ) { -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].resetRequested ) -// { -// // CD1 reset -// setFPGACD1Reset(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].resetRequested = FALSE; -// } -// else -// { -// // clear CD1 reset -// clearFPGACD1Reset(); -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].resetRequested ) -// { -// // CD2 reset -// setFPGACD2Reset(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].resetRequested = FALSE; -// } -// else -// { -// // clear CD2 reset -// clearFPGACD2Reset(); -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].resetRequested ) -// { -// // CD3 reset -// setFPGACD3Reset(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].resetRequested = FALSE; -// } -// else -// { -// // clear CD3 reset -// clearFPGACD3Reset(); -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].resetRequested ) -// { -// // CD4 reset -// setFPGACD4Reset(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].resetRequested = FALSE; -// } -// else -// { -// // clear CD4 reset -// clearFPGACD4Reset(); -// } + if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CPI_SENSOR ].resetRequested ) + { + // CPi reset + setFPGACPiReset(); + conductivitySensorControl[ CONDUCTIVITYSENSORS_CPI_SENSOR ].resetRequested = FALSE; + } + else + { + // clear CPi reset + clearFPGACPiReset(); + } + + if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CPO_SENSOR ].resetRequested ) + { + // CPo reset + setFPGACPoReset(); + conductivitySensorControl[ CONDUCTIVITYSENSORS_CPO_SENSOR ].resetRequested = FALSE; + } + else + { + // clear CPo reset + clearFPGACPoReset(); + } } /*********************************************************************//** * @brief * The handleConductivitySensorsInitProcedure function checks the (re)initialization - * of conducitviy sensors request and may perform the sensor sequencing to - * complete the initialization. - * @note This function should be called periodically to handle any - * Init request for all conductivity sensors. - * @details \b Inputs: conductivitySensorControl - * @details \b Outputs: conductivitySensorControl + * 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[ CONDUCTIVITYSENSORS_CD1_SENSOR ].initEnable ) -// { -// // CD1 initialization -// setFPGACD1InitEnable(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].initEnable = FALSE; -// } -// else -// { -// // clear CD1 Init command -// clearFPGACD1InitEnable(); -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].initEnable ) -// { -// // CD2 initialization -// setFPGACD2InitEnable(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].initEnable = FALSE; -// } -// else -// { -// // clear CD2 Init command -// clearFPGACD2InitEnable(); -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].initEnable ) -// { -// // CD3 initialization -// setFPGACD3InitEnable(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].initEnable = FALSE; -// } -// else -// { -// // clear CD3 Init command -// clearFPGACD3InitEnable(); -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].initEnable ) -// { -// // CD4 initialization -// setFPGACD4InitEnable(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].initEnable = FALSE; -// } -// else -// { -// // clear CD4 Init command -// clearFPGACD4InitEnable(); -// } -//} +void handleConductivitySensorsInitProcedure( void ) +{ + if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CPI_SENSOR ].initEnable ) + { + // CPi initialization + setFPGACPiInitEnable(); + conductivitySensorControl[ CONDUCTIVITYSENSORS_CPI_SENSOR ].initEnable = FALSE; + } + else + { + // clear CPi Init command + clearFPGACPiInitEnable(); + } + if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CPO_SENSOR ].initEnable ) + { + // CPo initialization + setFPGACPoInitEnable(); + conductivitySensorControl[ CONDUCTIVITYSENSORS_CPO_SENSOR ].initEnable = FALSE; + } + else + { + // clear CPo Init command + clearFPGACPoInitEnable(); + } +} + /*********************************************************************//** * @brief * The execConductivitySensorWrite function executes the conductivity sensor write * state machine. * @details \b Inputs: conductivitySensorWriteState * @details \b Outputs: conductivitySensorWriteState - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if invalid conductivity sensor write + * @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_CD1_SENSOR; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) -// { -// // write state machine -// switch ( conductivitySensorControl[sensor].writeExecState ) -// { -// case CONDUCTIVITY_WRITE_INITIATE: -// conductivitySensorControl[sensor].writeExecState = handleConductivitySensorsWriteInitiate(); -// break; -// -// case CONDUCTIVITY_WRITE_COMPLETE: -// conductivitySensorControl[sensor].writeExecState = handleConductivitySensorsWriteComplete(); -// break; -// -// default: -// SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_CONDUCTIVITY_WR_INVALID_EXEC_STATE, conductivitySensorControl[sensor].writeExecState ) -// conductivitySensorControl[sensor].writeExecState = CONDUCTIVITY_WRITE_INITIATE; -// break; -// } -// } -//} +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_RO_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( void ) +static CONDUCTIVITY_WRITE_STATE_T handleConductivitySensorsWriteInitiate( CONDUCTIVITY_SENSORS_T sensorID ) { CONDUCTIVITY_WRITE_STATE_T state = CONDUCTIVITY_WRITE_INITIATE; -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].writeEnable && -// FALSE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].writeInProgress ) -// { -// // CD1 write request -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].writeComplete = FALSE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].writeInProgress = TRUE; -// setFPGACD12Address( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].writeAddress ); -// setFPGACD12Data( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].writeData ); -// setFPGACD1WriteEnable(); -// state = CONDUCTIVITY_WRITE_COMPLETE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].writeEnable && -// FALSE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].writeInProgress ) -// { -// // CD2 write request -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].writeComplete = FALSE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].writeInProgress = TRUE; -// setFPGACD12Address( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].writeAddress ); -// setFPGACD12Data( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].writeData ); -// setFPGACD2WriteEnable(); -// state = CONDUCTIVITY_WRITE_COMPLETE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].writeEnable && -// FALSE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].writeInProgress ) -// { -// // CD3 write request -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].writeComplete = FALSE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].writeInProgress = TRUE; -// setFPGACD34Address( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].writeAddress ); -// setFPGACD34Data( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].writeData ); -// setFPGACD3WriteEnable(); -// state = CONDUCTIVITY_WRITE_COMPLETE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].writeEnable && -// FALSE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].writeInProgress ) -// { -// // CD4 write request -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].writeComplete = FALSE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].writeInProgress = TRUE; -// setFPGACD34Address( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].writeAddress ); -// setFPGACD34Data( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].writeData ); -// setFPGACD4WriteEnable(); -// state = CONDUCTIVITY_WRITE_COMPLETE; -// } + if ( TRUE == conductivitySensorControl[ sensorID ].writeEnable && + FALSE == conductivitySensorControl[ sensorID ].writeInProgress ) + { + conductivitySensorControl[ sensorID ].writeComplete = FALSE; + conductivitySensorControl[ sensorID ].writeInProgress = TRUE; + if ( CONDUCTIVITYSENSORS_CPI_SENSOR == sensorID ) + { + setFPGACPiAddress( conductivitySensorControl[ sensorID ].writeAddress ); + setFPGACPiData( conductivitySensorControl[ sensorID ].writeData ); + setFPGACPiWriteEnable(); + } + else + { + setFPGACPoAddress( conductivitySensorControl[ sensorID ].writeAddress ); + setFPGACPoData( conductivitySensorControl[ sensorID ].writeData ); + setFPGACPoWriteEnable(); + } + state = CONDUCTIVITY_WRITE_COMPLETE; + } return state; } @@ -684,43 +601,27 @@ * 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( void ) +static CONDUCTIVITY_WRITE_STATE_T handleConductivitySensorsWriteComplete( CONDUCTIVITY_SENSORS_T sensorID ) { CONDUCTIVITY_WRITE_STATE_T state = CONDUCTIVITY_WRITE_COMPLETE; -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].writeInProgress ) -// { -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].writeComplete = TRUE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].writeEnable = FALSE; -// clearFPGACD1WriteEnable(); -// state = CONDUCTIVITY_WRITE_INITIATE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].writeInProgress ) -// { -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].writeComplete = TRUE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].writeEnable = FALSE; -// clearFPGACD2WriteEnable(); -// state = CONDUCTIVITY_WRITE_INITIATE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].writeInProgress ) -// { -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].writeComplete = TRUE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].writeEnable = FALSE; -// clearFPGACD3WriteEnable(); -// state = CONDUCTIVITY_WRITE_INITIATE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].writeInProgress ) -// { -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].writeComplete = TRUE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].writeEnable = FALSE; -// clearFPGACD4WriteEnable(); -// state = CONDUCTIVITY_WRITE_INITIATE; -// } + if ( TRUE == conductivitySensorControl[ sensorID ].writeInProgress ) + { + conductivitySensorControl[ sensorID ].writeComplete = TRUE; + conductivitySensorControl[ sensorID ].writeEnable = FALSE; + if ( CONDUCTIVITYSENSORS_CPI_SENSOR == sensorID ) + { + clearFPGACPiWriteEnable(); + } + else + { + clearFPGACPoWriteEnable(); + } + state = CONDUCTIVITY_WRITE_INITIATE; + } return state; } @@ -731,30 +632,30 @@ * state machine. * @details \b Inputs: conductivitySensorReadState * @details \b Outputs: conductivitySensorReadState - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT if invalid conductivity sensor read + * @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_CD1_SENSOR; sensor < NUM_OF_CONDUCTIVITY_SENSORS; 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(); + conductivitySensorControl[sensor].readExecState = handleConductivitySensorsReadInitiate( sensor ); break; case CONDUCTIVITY_READ_COMPLETE: - conductivitySensorControl[sensor].readExecState = handleConductivitySensorsReadComplete(); + conductivitySensorControl[sensor].readExecState = handleConductivitySensorsReadComplete( sensor ); break; default: -// SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_CONDUCTIVITY_RD_INVALID_EXEC_STATE, conductivitySensorControl[sensor].readExecState ) -// conductivitySensorControl[sensor].readExecState = CONDUCTIVITY_READ_INITIATE; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RO_SOFTWARE_FAULT, SW_FAULT_ID_CONDUCTIVITY_RD_INVALID_EXEC_STATE, (U32)conductivitySensorControl[sensor].readExecState ) + conductivitySensorControl[sensor].readExecState = CONDUCTIVITY_READ_INITIATE; break; } } @@ -766,55 +667,30 @@ * 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( void ) +static CONDUCTIVITY_READ_STATE_T handleConductivitySensorsReadInitiate( CONDUCTIVITY_SENSORS_T sensorID ) { CONDUCTIVITY_READ_STATE_T state = CONDUCTIVITY_READ_INITIATE; -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].readEnable && -// FALSE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].readInProgress ) -// { -// // CD1 read request -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].readComplete = FALSE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].readInProgress = TRUE; -// setFPGACD12Address( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].readAddress ); -// setFPGACD1ReadEnable(); -// state = CONDUCTIVITY_READ_COMPLETE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].readEnable && -// FALSE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].readInProgress ) -// { -// // CD2 read request -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].readComplete = FALSE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].readInProgress = TRUE; -// setFPGACD12Address( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].readAddress ); -// setFPGACD2ReadEnable(); -// state = CONDUCTIVITY_READ_COMPLETE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].readEnable && -// FALSE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].readInProgress ) -// { -// // CD3 read request -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].readComplete = FALSE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].readInProgress = TRUE; -// setFPGACD34Address( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].readAddress ); -// setFPGACD3ReadEnable(); -// state = CONDUCTIVITY_READ_COMPLETE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].readEnable && -// FALSE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].readInProgress ) -// { -// // CD4 read request -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].readComplete = FALSE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].readInProgress = TRUE; -// setFPGACD34Address( conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].readAddress ); -// setFPGACD4ReadEnable(); -// state = CONDUCTIVITY_READ_COMPLETE; -// } + if ( TRUE == conductivitySensorControl[ sensorID ].readEnable && + FALSE == conductivitySensorControl[ sensorID ].readInProgress ) + { + conductivitySensorControl[ sensorID ].readComplete = FALSE; + conductivitySensorControl[ sensorID ].readInProgress = TRUE; + if ( CONDUCTIVITYSENSORS_CPI_SENSOR == sensorID ) + { + setFPGACPiAddress( conductivitySensorControl[ sensorID ].readAddress ); + setFPGACPiReadEnable(); + } + else + { + setFPGACPoAddress( conductivitySensorControl[ sensorID ].readAddress ); + setFPGACPoReadEnable(); + } + state = CONDUCTIVITY_READ_COMPLETE; + } return state; } @@ -825,47 +701,29 @@ * 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( void ) +static CONDUCTIVITY_READ_STATE_T handleConductivitySensorsReadComplete( CONDUCTIVITY_SENSORS_T sensorID ) { CONDUCTIVITY_READ_STATE_T state = CONDUCTIVITY_READ_COMPLETE; -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].readInProgress ) -// { -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].readData = getFPGACD1Data(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].readComplete = TRUE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD1_SENSOR ].readEnable = FALSE; -// clearFPGACD1ReadEnable(); -// state = CONDUCTIVITY_READ_INITIATE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].readInProgress ) -// { -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].readData = getFPGACD2Data(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].readComplete = TRUE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD2_SENSOR ].readEnable = FALSE; -// clearFPGACD2ReadEnable(); -// state = CONDUCTIVITY_READ_INITIATE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].readInProgress ) -// { -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].readData = getFPGACD3Data(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].readComplete = TRUE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD3_SENSOR ].readEnable = FALSE; -// clearFPGACD3ReadEnable(); -// state = CONDUCTIVITY_READ_INITIATE; -// } -// -// if ( TRUE == conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].readInProgress ) -// { -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].readData = getFPGACD4Data(); -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].readComplete = TRUE; -// conductivitySensorControl[ CONDUCTIVITYSENSORS_CD4_SENSOR ].readEnable = FALSE; -// clearFPGACD4ReadEnable(); -// state = CONDUCTIVITY_READ_INITIATE; -// } + if ( TRUE == conductivitySensorControl[ sensorID ].readInProgress ) + { + if ( CONDUCTIVITYSENSORS_CPI_SENSOR == sensorID ) + { + conductivitySensorControl[ sensorID ].readData = getFPGACPiData(); + clearFPGACPiReadEnable(); + } + else + { + conductivitySensorControl[ sensorID ].readData = getFPGACPoData(); + clearFPGACPoReadEnable(); + } + conductivitySensorControl[ sensorID ].readComplete = TRUE; + conductivitySensorControl[ sensorID ].readEnable = FALSE; + state = CONDUCTIVITY_READ_INITIATE; + } return state; } Index: firmware/App/Drivers/ConductivitySensors.h =================================================================== diff -u -r2205857f59dd884c4af450239381387cfb560c2e -rf47296145b6a0adb78df0e325587629171909fd6 --- firmware/App/Drivers/ConductivitySensors.h (.../ConductivitySensors.h) (revision 2205857f59dd884c4af450239381387cfb560c2e) +++ firmware/App/Drivers/ConductivitySensors.h (.../ConductivitySensors.h) (revision f47296145b6a0adb78df0e325587629171909fd6) @@ -40,39 +40,38 @@ /// Enumeration of conductivity sensors. typedef enum ConductivitySensors { - CONDUCTIVITYSENSORS_CD1_SENSOR = 0, ///< Inlet water conductivity sensor - CONDUCTIVITYSENSORS_CD2_SENSOR, ///< Outlet water conductivity sensor - CONDUCTIVITYSENSORS_CD3_SENSOR, ///< Post-acid concentrate conductivity sensor - CONDUCTIVITYSENSORS_CD4_SENSOR, ///< Post-bicarbonate concentrate conductivity sensor - NUM_OF_CONDUCTIVITY_SENSORS ///< Number of conductivity sensors + CONDUCTIVITYSENSORS_CPI_SENSOR = 0, ///< Inlet water conductivity sensor + CONDUCTIVITYSENSORS_FIRST = CONDUCTIVITYSENSORS_CPI_SENSOR, ///< First conductivity sensor + CONDUCTIVITYSENSORS_CPO_SENSOR, ///< 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 ); +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 Index: firmware/App/Monitors/Conductivity.c =================================================================== diff -u -r2205857f59dd884c4af450239381387cfb560c2e -rf47296145b6a0adb78df0e325587629171909fd6 --- firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision 2205857f59dd884c4af450239381387cfb560c2e) +++ firmware/App/Monitors/Conductivity.c (.../Conductivity.c) (revision f47296145b6a0adb78df0e325587629171909fd6) @@ -42,7 +42,7 @@ // ********** private function prototypes ********** -//static void publishConductivitySensorsData( void ); +static void publishConductivitySensorsData( void ); /*********************************************************************//** * @brief @@ -60,6 +60,7 @@ conductivityDataPublishInterval.ovInitData = 0; conductivityDataPublishInterval.override = OVERRIDE_RESET; + // initialize conductivity sensors driver initConductivitySensors(); } @@ -79,42 +80,42 @@ //control conductivity sensor // TODO : need more clarity on why and when to execute following control. -// handleConductivitySensorsReset(); -// handleConductivitySensorsInitProcedure(); -// execConductivitySensorWrite(); -// execConductivitySensorRead(); -// -// // publish conductivity sensors -// publishConductivitySensorsData(); + handleConductivitySensorsReset(); + handleConductivitySensorsInitProcedure(); + execConductivitySensorWrite(); + execConductivitySensorRead(); + + // publish conductivity sensors + publishConductivitySensorsData(); } /*********************************************************************//** * @brief - * The publishConductivitySensorsData function publishes DD conductivity data + * The publishConductivitySensorsData function publishes RO conductivity data * at a set interval. * @details \b Inputs: conductivityPublishTimerCounter * @details \b Outputs: conductivityPublishTimerCounter * @details \b Message \b Sent: MSG_ID_RO_CONDUCTIVITY_DATA to publish conductivity data. * @return none *************************************************************************/ -//static void publishConductivitySensorsData( void ) -//{ -// // publish pressure/occlusion data on interval -// if ( ++conductivityPublishTimerCounter >= getU32OverrideValue( &conductivityDataPublishInterval ) ) -// { -// CONDUCTIVITY_DATA_T data; -// -// data.cd1 = getConductivityValue( CONDUCTIVITYSENSORS_CD1_SENSOR ); -// data.cd2 = getConductivityValue( CONDUCTIVITYSENSORS_CD2_SENSOR ); -// data.td1 = getConductivityTemperatureValue( CONDUCTIVITYSENSORS_CD1_SENSOR ); -// data.td2 = getConductivityTemperatureValue( CONDUCTIVITYSENSORS_CD2_SENSOR ); -// conductivityPublishTimerCounter = 0; -// -// broadcastData( MSG_ID_RO_CONDUCTIVITY_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( CONDUCTIVITY_DATA_T ) ); -// } -//} +static void publishConductivitySensorsData( void ) +{ + // publish pressure/occlusion data on interval + if ( ++conductivityPublishTimerCounter >= getU32OverrideValue( &conductivityDataPublishInterval ) ) + { + CONDUCTIVITY_DATA_T data; + data.CPiConductivity = getConductivityValue( CONDUCTIVITYSENSORS_CPI_SENSOR ); + data.CPoConductivity = getConductivityValue( CONDUCTIVITYSENSORS_CPO_SENSOR ); + data.CPiTemperature = getConductivityTemperatureValue( CONDUCTIVITYSENSORS_CPI_SENSOR ); + data.CPoTemperature = getConductivityTemperatureValue( CONDUCTIVITYSENSORS_CPO_SENSOR ); + conductivityPublishTimerCounter = 0; + broadcastData( MSG_ID_RO_CONDUCTIVITY_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( CONDUCTIVITY_DATA_T ) ); + } +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ @@ -130,11 +131,11 @@ * that override valves states publish interval with (in ms) * @return TRUE if override successful, FALSE if not *************************************************************************/ -//BOOL testConductivitySensorDataPublishIntervalOverride( MESSAGE_T *message ) -//{ -// BOOL result = u32BroadcastIntervalOverride( message, &conductivityDataPublishInterval, TASK_PRIORITY_INTERVAL ); -// -// return result; -//} +BOOL testConductivitySensorDataPublishIntervalOverride( MESSAGE_T *message ) +{ + BOOL result = u32BroadcastIntervalOverride( message, &conductivityDataPublishInterval, TASK_PRIORITY_INTERVAL ); + return result; +} + /**@}*/ Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r3edf8084a5028ee0d00a3fba496284e593e4254d -rf47296145b6a0adb78df0e325587629171909fd6 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 3edf8084a5028ee0d00a3fba496284e593e4254d) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision f47296145b6a0adb78df0e325587629171909fd6) @@ -112,6 +112,17 @@ SW_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR3 = 95, SW_FAULT_ID_FLOW_SENSOR_INVALID_SENSOR4 = 96, SW_FAULT_ID_FLOW_INVALID_EXEC_STATE = 97, + SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID = 98, + SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID1 = 99, + SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID2 = 100, + SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID3 = 101, + SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID4 = 102, + SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID5 = 103, + SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID6 = 104, + SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID7 = 105, + SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID8 = 106, + SW_FAULT_ID_CONDUCTIVITY_RD_INVALID_EXEC_STATE = 107, + SW_FAULT_ID_CONDUCTIVITY_WR_INVALID_EXEC_STATE = 108, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/FpgaRO.c =================================================================== diff -u -r3edf8084a5028ee0d00a3fba496284e593e4254d -rf47296145b6a0adb78df0e325587629171909fd6 --- firmware/App/Services/FpgaRO.c (.../FpgaRO.c) (revision 3edf8084a5028ee0d00a3fba496284e593e4254d) +++ firmware/App/Services/FpgaRO.c (.../FpgaRO.c) (revision f47296145b6a0adb78df0e325587629171909fd6) @@ -38,6 +38,11 @@ #define MAX_FPGA_COMM_FAILURES 3 ///< FPGA maximum comm failures per MAX_FPGA_COMM_FAILURES_WINDOW_MS #define MIN_POWER_ON_TIME_FOR_COMM_FAILS ( 1 * MS_PER_SECOND ) ///< Allow FPGA comm errors for first second after power-up +#define FPGA_CONDUCTIVITY_RESET_BIT 0x01 ///< Conductivity Sensor reset bit mask. +#define FPGA_CONDUCTIVITY_INIT_ENABLE_BIT 0x02 ///< Conductivity Sensor initialization enable bit mask. +#define FPGA_CONDUCTIVITY_WR_ENABLE_BIT 0x04 ///< Conductivity Sensor write enable bit mask. +#define FPGA_CONDUCTIVITY_RD_ENABLE_BIT 0x08 ///< Conductivity Sensor read enable bit mask. + // FPGA Sensors Record #pragma pack(push,1) @@ -106,16 +111,16 @@ U16 reserved5; ///< Reg 332. Reserved. U08 reserved6; ///< Reg 334. Reserved. U08 reserved7; ///< Reg 335. Reserved. - U32 conductSensor1; ///< Reg 336. Conductivity sensor 1. - U16 conductSensor1Data; ///< Reg 340. Conductivity sensor 1 data. - U16 conductSensor1Temp; ///< Reg 342. Conductivity sensor 1 temperature. - U08 conductSensor1ReadCount; ///< Reg 344. Conductivity sensor 1 read counter. - U08 conductSensor1ErrorCount; ///< Reg 345. Conductivity sensor 1 error counter. - U32 conductSensor2; ///< Reg 346. Conductivity sensor 2. - U16 conductSensor2Data; ///< Reg 350. Conductivity sensor 2 data. - U16 conductSensor2Temp; ///< Reg 352. Conductivity sensor 2 temperature. - U08 conductSensor2ReadCount; ///< Reg 354. Conductivity sensor 2 read counter. - U08 conductSensor2ErrorCount; ///< Reg 355. Conductivity sensor 2 error counter. + U32 conductivityCpiData; ///< Reg 336. CPi conductivity sensor data. + U16 conductivityCpiCond; ///< Reg 340. CPi conductivity sensor conductivity. + U16 conductivityCpiTemp; ///< Reg 342. CPi conductivity sensor temperature. + U08 conductivityCpiReadCount; ///< Reg 344. CPi conductivity sensor read counter. + U08 conductivityCpiErrorCount; ///< Reg 345. CPi conductivity sensor error counter. + U32 conductivityCpoData; ///< Reg 346. CPo conductivity sensor data. + U16 conductivityCpoCond; ///< Reg 350. CPo conductivity sensor conductivity. + U16 conductivityCpoTemp; ///< Reg 352. CPo conductivity sensor temperature. + U08 conductivityCpoReadCount; ///< Reg 354. CPo conductivity sensor read counter. + U08 conductivityCpoErrorCount; ///< Reg 355. CPo conductivity sensor error counter. U16 flowRateFmp; ///< Reg 356. FMP flow sensor rate. U16 flowTempFmp; ///< Reg 358. FMP flow sensor temperature. U16 roPumpTachCount; ///< Reg 360. ROP tachometer counter. @@ -132,12 +137,12 @@ { U08 valveControl; ///< Reg 04. Valve control register. U08 valvePWMEnable; ///< Reg 05. Valve PWM enable register. - U08 conductSensorControl1; ///< Reg 06. Conductivity sensor control register 1. - U08 conductSensorControl2; ///< Reg 07. Conductivity sensor control register 2. - U16 conductAddress1; ///< Reg 08. Conductivity sensor address register 1. - U32 conductData1; ///< Reg 10. Conductivity sensor data in register 1. - U16 conductAddress2; ///< Reg 14. Conductivity sensor address register 2. - U32 conductData2; ///< Reg 16. Conductivity sensor data in register 2. + U08 conductivityCPiControl; ///< Reg 06. CPi conductivity control register. + U08 conductivityCPoControl; ///< Reg 07. CPo conductivity control register. + U16 conductivityCPiAddress; ///< Reg 08. CPi conductivity address register. + U32 conductivityCPiData; ///< Reg 10. CPi conductivity data in register. + U16 conductivityCPoAddress; ///< Reg 14. CPo conductivity address register. + U32 conductivityCPoData; ///< Reg 16. CPo conductivity data in register. U16 fpgaGenWrRd; ///< Reg 20. FPGA general write/read-back register (mirrored to a general read register in read page at addr 256). U16 descalePumpSpeed; ///< Reg 22. Descaler pump speed register. U08 descalePumpControl; ///< Reg 24. Descaler pump control register. @@ -692,4 +697,426 @@ return fpgaSensorReadings.flowTempFmp; } +/*********************************************************************//** + * @brief + * The setFPGACPiControl function sets the FPGA CPi sensor control register + * to perform a given action. + * bit 4..7: unused + * bit 3: Enable CPi read transaction; address needed + * bit 2: Enable CPi write transaction; address and data needs to be set + * bit 1: Enable CPi initialization procedure + * bit 0: reset CPi sensor + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiControl + * @param control bits indicating control action to take + * @return none + *************************************************************************/ +void setFPGACPiControl( U08 control ) +{ + fpgaActuatorSetPoints.conductivityCPiControl = control; +} + +/*********************************************************************//** + * @brief + * The setFPGACPiAddress function sets the read/write address for a read/write + * action on the CPi sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiAddress + * @param address The CPi sensor address to read from or write to + * @return none + *************************************************************************/ +void setFPGACPiAddress( U16 address ) +{ + fpgaActuatorSetPoints.conductivityCPiAddress = address; +} + +/*********************************************************************//** + * @brief + * The setFPGACPiData function sets the write data for a write action on + * the CPi sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiData + * @param data The 32-bit data to write to the CPi sensor + * @return none + *************************************************************************/ +void setFPGACPiData( U32 data ) +{ + fpgaActuatorSetPoints.conductivityCPiData = data; +} + +/*********************************************************************//** + * @brief + * The setFPGACPiControl function sets the FPGA CPo sensor control register + * to perform a given action. + * bit 4..7: unused + * bit 3: Enable CPo read transaction; address needed + * bit 2: Enable CPo write transaction; address and data needs to be set + * bit 1: Enable CPo initialization procedure + * bit 0: reset CPo sensor + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoControl + * @param control bits indicating control action to take + * @return none + *************************************************************************/ +void setFPGACPoControl( U08 control ) +{ + fpgaActuatorSetPoints.conductivityCPoControl = control; +} + +/*********************************************************************//** + * @brief + * The setFPGACPoAddress function sets the read/write address for a read/write + * action on the CPo sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoAddress + * @param address The CPo sensor address to read from or write to + * @return none + *************************************************************************/ +void setFPGACPoAddress( U16 address ) +{ + fpgaActuatorSetPoints.conductivityCPoAddress = address; +} + +/*********************************************************************//** + * @brief + * The setFPGACPoData function sets the write data for a write action on + * the CPo sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoData + * @param data The 32-bit data to write to the CPo sensor + * @return none + *************************************************************************/ +void setFPGACPoData( U32 data ) +{ + fpgaActuatorSetPoints.conductivityCPoData = data; +} + +/*********************************************************************//** + * @brief + * The setFPGACPiReset function sets the reset command bit for CPi sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiControl + * @return none + *************************************************************************/ +void setFPGACPiReset( void ) +{ + fpgaActuatorSetPoints.conductivityCPiControl |= FPGA_CONDUCTIVITY_RESET_BIT; +} + +/*********************************************************************//** + * @brief + * The clearFPGACPiReset function clears the reset command bit for CPi sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiControl + * @return none + *************************************************************************/ +void clearFPGACPiReset( void ) +{ + fpgaActuatorSetPoints.conductivityCPiControl &= ~FPGA_CONDUCTIVITY_RESET_BIT; +} + +/*********************************************************************//** + * @brief + * The setFPGACPiInitEnable function sets the initialize command bit for + * CPi sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiControl + * @return none + *************************************************************************/ +void setFPGACPiInitEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPiControl |= FPGA_CONDUCTIVITY_INIT_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The clearFPGACPiInitEnable function clears the initialize command bit for + * CPi sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiControl + * @return none + *************************************************************************/ +void clearFPGACPiInitEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPiControl &= ~FPGA_CONDUCTIVITY_INIT_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The setFPGACPiWriteEnable function sets the write enable command bit for + * CPi sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiControl + * @return none + *************************************************************************/ +void setFPGACPiWriteEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPiControl |= FPGA_CONDUCTIVITY_WR_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The clearFPGACPiWriteEnable function clears the write enable command bit + * for CPi sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiControl + * @return none + *************************************************************************/ +void clearFPGACPiWriteEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPiControl &= ~FPGA_CONDUCTIVITY_WR_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The setFPGACPiReadEnable function sets the read enable command bit for + * CPi sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiControl + * @return none + *************************************************************************/ +void setFPGACPiReadEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPiControl |= FPGA_CONDUCTIVITY_RD_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The clearFPGACPiReadEnable function clears the read enable command bit + * for CPi sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPiControl + * @return none + *************************************************************************/ +void clearFPGACPiReadEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPiControl &= ~FPGA_CONDUCTIVITY_RD_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The setFPGACPoReset function sets the reset command bit for CPo sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoControl + * @return none + *************************************************************************/ +void setFPGACPoReset( void ) +{ + fpgaActuatorSetPoints.conductivityCPoControl |= FPGA_CONDUCTIVITY_RESET_BIT; +} + +/*********************************************************************//** + * @brief + * The clearFPGACPoReset function clears the reset command bit for CPo sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoControl + * @return none + *************************************************************************/ +void clearFPGACPoReset( void ) +{ + fpgaActuatorSetPoints.conductivityCPoControl &= ~FPGA_CONDUCTIVITY_RESET_BIT; +} + +/*********************************************************************//** + * @brief + * The setFPGACPoInitEnable function sets the initialize command bit for + * CPo sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoControl + * @return none + *************************************************************************/ +void setFPGACPoInitEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPoControl |= FPGA_CONDUCTIVITY_INIT_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The clearFPGACPoInitEnable function clears the initialize command bit for + * CPo sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoControl + * @return none + *************************************************************************/ +void clearFPGACPoInitEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPoControl &= ~FPGA_CONDUCTIVITY_INIT_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The setFPGACPoWriteEnable function sets the write enable command bit for + * CPo sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoControl + * @return none + *************************************************************************/ +void setFPGACPoWriteEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPoControl |= FPGA_CONDUCTIVITY_WR_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The clearFPGACPoWriteEnable function clears the write enable command bit + * for CPo sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoControl + * @return none + *************************************************************************/ +void clearFPGACPoWriteEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPoControl &= ~FPGA_CONDUCTIVITY_WR_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The setFPGACPoReadEnable function sets the read enable command bit for + * CPo sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoControl + * @return none + *************************************************************************/ +void setFPGACPoReadEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPoControl |= FPGA_CONDUCTIVITY_RD_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The clearFPGACPoReadEnable function clears the read enable command bit + * for CPo sensor. + * @details \b Inputs: none + * @details \b Outputs: fpgaActuatorSetPoints.conductivityCPoControl + * @return none + *************************************************************************/ +void clearFPGACPoReadEnable( void ) +{ + fpgaActuatorSetPoints.conductivityCPoControl &= ~FPGA_CONDUCTIVITY_RD_ENABLE_BIT; +} + +/*********************************************************************//** + * @brief + * The getFPGACPiReadCount function gets the latest CPi sensor read count. + * @details \b Inputs: fpgaSensorReadings.conductivityCPiReadCount + * @details \b Outputs: none + * @return Current read count for CPi sensor. + *************************************************************************/ +U08 getFPGACPiReadCount( void ) +{ + return fpgaSensorReadings.conductivityCpiReadCount; +} + +/*********************************************************************//** + * @brief + * The getFPGACPiErrorCount function gets the latest CPi sensor error count. + * @details \b Inputs: fpgaSensorReadings.conductivityCpiErrorCount + * @details \b Outputs: none + * @return Current error count for CPi sensor. + *************************************************************************/ +U08 getFPGACPiErrorCount( void ) +{ + return fpgaSensorReadings.conductivityCpiErrorCount; +} + +/*********************************************************************//** + * @brief + * The getFPGACPiConductivity function gets the latest CPi sensor conductivity + * reading. + * @details \b Inputs: fpgaSensorReadings.conductivityCpiCond + * @details \b Outputs: none + * @return Current conductivity reading from CPi sensor. + *************************************************************************/ +U16 getFPGACPiConductivity( void ) +{ + return fpgaSensorReadings.conductivityCpiCond; +} + +/*********************************************************************//** + * @brief + * The getFPGACPiTemperature function gets the latest CPi sensor temperature. + * @details \b Inputs: fpgaSensorReadings.conductivityCpiTemp + * @details \b Outputs: none + * @return Current temperature from CPi sensor. + *************************************************************************/ +U16 getFPGACPiTemperature( void ) +{ + return fpgaSensorReadings.conductivityCpiTemp; +} + +/*********************************************************************//** + * @brief + * The getFPGACPiData function gets the latest CPi sensor data from a read + * action. + * @details \b Inputs: fpgaSensorReadings.conductivityCpiData + * @details \b Outputs: none + * @return Latest data read from CPi sensor. + *************************************************************************/ +U32 getFPGACPiData( void ) +{ + return fpgaSensorReadings.conductivityCpiData; +} + +/*********************************************************************//** + * @brief + * The getFPGACPoReadCount function gets the latest CPo sensor read count. + * @details \b Inputs: fpgaSensorReadings.conductivityCpoReadCount + * @details \b Outputs: none + * @return Current read count for CPo sensor. + *************************************************************************/ +U08 getFPGACPoReadCount( void ) +{ + return fpgaSensorReadings.conductivityCpoReadCount; +} + +/*********************************************************************//** + * @brief + * The getFPGACPoErrorCount function gets the latest CPo sensor error count. + * @details \b Inputs: fpgaSensorReadings.conductivityCpoErrorCount + * @details \b Outputs: none + * @return Current error count for CPo sensor. + *************************************************************************/ +U08 getFPGACPoErrorCount( void ) +{ + return fpgaSensorReadings.conductivityCpoErrorCount; +} + +/*********************************************************************//** + * @brief + * The getFPGACPoConductivity function gets the latest CPo sensor conductivity + * reading. + * @details \b Inputs: fpgaSensorReadings.conductivityCpoCond + * @details \b Outputs: none + * @return Current conductivity reading from CPo sensor. + *************************************************************************/ +U16 getFPGACPoConductivity( void ) +{ + return fpgaSensorReadings.conductivityCpoCond; +} + +/*********************************************************************//** + * @brief + * The getFPGACPoTemperature function gets the latest CPo sensor temperature. + * @details \b Inputs: fpgaSensorReadings.conductivityCpoTemp + * @details \b Outputs: none + * @return Current temperature from CPo sensor. + *************************************************************************/ +U16 getFPGACPoTemperature( void ) +{ + return fpgaSensorReadings.conductivityCpoTemp; +} + +/*********************************************************************//** + * @brief + * The getFPGACPoData function gets the latest CPo sensor data from a read + * action. + * @details \b Inputs: fpgaSensorReadings.conductivityCpoData + * @details \b Outputs: none + * @return Latest data read from CPo sensor. + *************************************************************************/ +U32 getFPGACPoData( void ) +{ + return fpgaSensorReadings.conductivityCpoData; +} + /**@}*/ Index: firmware/App/Services/FpgaRO.h =================================================================== diff -u -r3edf8084a5028ee0d00a3fba496284e593e4254d -rf47296145b6a0adb78df0e325587629171909fd6 --- firmware/App/Services/FpgaRO.h (.../FpgaRO.h) (revision 3edf8084a5028ee0d00a3fba496284e593e4254d) +++ firmware/App/Services/FpgaRO.h (.../FpgaRO.h) (revision f47296145b6a0adb78df0e325587629171909fd6) @@ -80,6 +80,43 @@ //U16 getFPGAFlowFMS( void ); //U16 getFPGAFlowFMSTemp( void ); +void setFPGACPiControl( U08 control ); +void setFPGACPiAddress( U16 address ); +void setFPGACPiData( U32 data ); +void setFPGACPoControl( U08 control ); +void setFPGACPoAddress( U16 address ); +void setFPGACPoData( U32 data ); + +void setFPGACPiReset( void ); +void clearFPGACPiReset( void ); +void setFPGACPiInitEnable( void ); +void clearFPGACPiInitEnable( void ); +void setFPGACPiWriteEnable( void ); +void clearFPGACPiWriteEnable( void ); +void setFPGACPiReadEnable( void ); +void clearFPGACPiReadEnable( void ); + +void setFPGACPoReset( void ); +void clearFPGACPoReset( void ); +void setFPGACPoInitEnable( void ); +void clearFPGACPoInitEnable( void ); +void setFPGACPoWriteEnable( void ); +void clearFPGACPoWriteEnable( void ); +void setFPGACPoReadEnable( void ); +void clearFPGACPoReadEnable( void ); + +U08 getFPGACPiReadCount( void ); +U08 getFPGACPiErrorCount( void ); +U16 getFPGACPiConductivity( void ); +U16 getFPGACPiTemperature( void ); +U32 getFPGACPiData( void ); + +U08 getFPGACPoReadCount( void ); +U08 getFPGACPoErrorCount( void ); +U16 getFPGACPoConductivity( void ); +U16 getFPGACPoTemperature( void ); +U32 getFPGACPoData( void ); + /**@}*/ #endif Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r31c796166189ce36ecbeca2e20291f9227160e92 -rf47296145b6a0adb78df0e325587629171909fd6 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 31c796166189ce36ecbeca2e20291f9227160e92) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision f47296145b6a0adb78df0e325587629171909fd6) @@ -3,6 +3,7 @@ #include "BoostPump.h" #include "Compatible.h" +#include "Conductivity.h" #include "Flow.h" #include "Level.h" #include "Messaging.h" @@ -74,7 +75,12 @@ MSG_ID_RO_LEVEL_OVERRIDE_REQUEST, MSG_ID_RO_FLOWS_PUBLISH_INTERVAL_OVERRIDE_REQUEST, MSG_ID_RO_FLOW_RATE_OVERRIDE_REQUEST, - MSG_ID_RO_FLOW_TEMP_OVERRIDE_REQUEST + MSG_ID_RO_FLOW_TEMP_OVERRIDE_REQUEST, + MSG_ID_RO_CONDUCTIVITY_PUBLISH_INTERVAL_OVERRIDE_REQUEST, + MSG_ID_RO_CONDUCTIVITY_OVERRIDE_REQUEST, + MSG_ID_RO_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST, + MSG_ID_RO_CONDUCTIVITY_READ_COUNT_OVERRIDE_REQUEST, + MSG_ID_RO_CONDUCTIVITY_ERROR_COUNT_OVERRIDE_REQUEST }; /// Message handling function table @@ -99,7 +105,12 @@ &testLevelStateOverride, &testFlowSensorDataPublishIntervalOverride, &testFlowSensorReadingsOverride, - &testFlowSensorTemperatureReadingsOverride + &testFlowSensorTemperatureReadingsOverride, + &testConductivitySensorDataPublishIntervalOverride, + &testConductivitySensorReadingsOverride, + &testConductivitySensorTemperatureReadingsOverride, + &testConductivitySensorReadCounterOverride, + &testConductivitySensorErrorCounterOverride }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLERS) / sizeof(MsgFuncPtr)) Index: firmware/source/sys_main.c =================================================================== diff -u -r0d2351b8e47e40fdcd706ed7b7ac1379b69a20ef -rf47296145b6a0adb78df0e325587629171909fd6 --- firmware/source/sys_main.c (.../sys_main.c) (revision 0d2351b8e47e40fdcd706ed7b7ac1379b69a20ef) +++ firmware/source/sys_main.c (.../sys_main.c) (revision f47296145b6a0adb78df0e325587629171909fd6) @@ -162,12 +162,15 @@ initCommBuffers(); initMsgQueues(); initSystemComm(); + initConductivity(); initLevels(); initPressure(); initTemperature(); + initROPump(); initValves(); + initOperationModes(); initTestConfigs(); }