Index: firmware/App/Drivers/ConductivityTeensy.h =================================================================== diff -u -r11dbd4210f75d1587be89117e60409cf1b4d1085 -r1768e1d302978a3748ab1e684576f208472e4a54 --- firmware/App/Drivers/ConductivityTeensy.h (.../ConductivityTeensy.h) (revision 11dbd4210f75d1587be89117e60409cf1b4d1085) +++ firmware/App/Drivers/ConductivityTeensy.h (.../ConductivityTeensy.h) (revision 1768e1d302978a3748ab1e684576f208472e4a54) @@ -21,11 +21,12 @@ #include "DDCommon.h" // ********** public definitions ********** + #define DOUBLE_COUNT 8 ///< Number of double values in Teensy EEPROM data #define FLOAT_COUNT 16 ///< Number of float values in Teensy EEPROM data #define MAX_COND_MST_PARAM_IDX 7 ///< Total number of parameters in measurement settings CONDUCTIVITY_MEASUREMENT_SETTINGS_T -/// Enumeration of conductivity sensors. +// Enumeration of conductivity sensors. typedef enum ConductivitySensors { D17_COND = 0, ///< Bicarb only conductivity sensor - 1 @@ -42,6 +43,7 @@ NUM_OF_CONDUCTIVITY_SENSORS ///< Number of conductivity sensors } CONDUCTIVITY_SENSORS_T; +// Enumeration of Teensy Sensor Index values typedef enum TeensySensorIndex { TEENSY_SENSOR_0 = 0, ///< Maps to P9_COND @@ -53,6 +55,7 @@ MAX_TEENSY_SENSOR ///< Total number of mapped sensors } TEENSY_SENSOR_INDEX_T; +// Enumeration of Teensy Commands. Also used as TX and TX states. typedef enum TeensyCmdIndex { TEENSY_CMD_INIT_SENSOR = 0, ///< Maps to command "a" @@ -61,31 +64,32 @@ TEENSY_CMD_GET_EEPROM_DATA, ///< Maps to command "e" TEENSY_CMD_UPDATE_MEASUREMENT_SETTINGS, ///< Maps to command "cfg" TEENSY_CMD_GET_MEASUREMENT_SETTINGS, ///< Maps to command "k" - TEENSY_CMD_GET_MEASUREMENT, ///< Maps to command "m" + TEENSY_CMD_START_MEASUREMENT, ///< Maps to command "m" TEENSY_CMD_STOP_MEASUREMENT, ///< Maps to command "n" TEENSY_CMD_GET_ALL_MEASUREMENTS, ///< Maps to command "g" TEENSY_CMD_SELECT_SENSOR, ///< Maps to command "j" TEENSY_CMD_GET_SINGLE_MEASUREMENT, ///< Maps to command "h" - MAX_NUM_OF_TEENSY_CMDS ///< Total number of commands + MAX_NUM_OF_TEENSY_CMDS ///< Total number of commands } TEENSY_CMD_INDEX_T; -/// Initialization status of all the sensors connected to Teensy +/// Enumeration of Initialization status of all the sensors connected to Teensy typedef enum Conductivity_Init_Status { - CONDUCTIVITY_INIT_STATUS_UNITIALIZED = 0, ///< The initialization process has not started. - CONDUCTIVITY_INIT_STATUS_IN_PROGRESS, ///< The initialization process has started. - CONDUCTIVITY_INIT_STATUS_INITIALIZED, ///< Initialization process completed and all the sensors were initialized successfully. - CONDUCTIVITY_INIT_STATUS_FAILED ///< Initialization process completed but one or more sensor was not initialized properly. -}CONDUCTIVITY_INIT_STATUS_T; + COND_INIT_STATUS_UNITIALIZED = 0, ///< The initialization process has not started. + COND_INIT_STATUS_IN_PROGRESS, ///< The initialization process has started. + COND_INIT_STATUS_INITIALIZED, ///< Initialization process completed and all the sensors were initialized successfully. + COND_INIT_STATUS_FAILED ///< Initialization process completed but one or more sensor was not initialized properly. +}COND_INIT_STATUS_T; +// Enumeration of Parse status of received byte data typedef enum Conductivity_Parse_Status { - CONDUCTIVITY_PARSE_NONE = 0, - CONDUCTIVITY_PARSE_ERROR_NULL_BUFFER, - CONDUCTIVITY_PARSE_ERROR_INVALID_LENGTH, - CONDUCTIVITY_PARSE_ERROR_INVALID_SENSOR_NUM, - CONDUCTIVITY_PARSE_SUCCESS, -} CONDUCTIVITY_PARSE_STATUS; + COND_PARSE_NONE = 0, + COND_PARSE_ERROR_NULL_BUFFER, + COND_PARSE_ERROR_INVALID_LENGTH, + COND_PARSE_ERROR_INVALID_SENSOR_NUM, + COND_PARSE_SUCCESS, +} COND_PARSE_STATUS; /// Enumeration of Conductivity Communication states. typedef enum Conductivity_Comm_States @@ -95,18 +99,18 @@ COND_COMM_STATE_RX, COND_COMM_STATE_FAILED, NUM_OF_COND_COMM_STATES -} CONDUCTIVITY_COMM_STATE_T; +} COND_COMM_STATE_T; -/// Update EEPROM status +/// Enumeration of update EEPROM status typedef enum Conductivity_Update_Eeprom_Status { - COND_UPDATE_EEPROM_STATUS_UNITIALIZED = 0, ///< The initialization process has not started. + COND_UPDATE_EEPROM_STATUS_UNITIALIZED = 0, ///< The initialization process has not started. COND_UPDATE_EEPROMSTATUS_IN_PROGRESS, ///< The initialization process has started. COND_UPDATE_EEPROM_STATUS_INITIALIZED, ///< Initialization process completed and all the sensors were initialized successfully. COND_UPDATE_EEPROM_STATUS_FAILED ///< Initialization process completed but one or more sensor was not initialized properly. -}CONDUCTIVITY_UPDATE_EEPROM_STATUS_T; +}COND_UPDATE_EEPROM_STATUS_T; -// Update Measurement Settings Status +// Enumeration of update measurement settings status typedef enum Update_mst_Status { COND_MST_STATUS_ERR_UNRECOGNIZED_PARAM = 0, ///< Invalid parameter was passed with the command @@ -115,8 +119,9 @@ COND_MST_STATUS_ERR_UPDATED_TO_DEFAULT_DFT_NUM, ///< Invalid value of "dftnum" was passed with the command. So it was updated to its default value. COND_MST_STATUS_ERR_UPDATED_TO_DEFAULT_AVG_NUM, ///< Invalid value of "avgnum" was passed with the command. So it was updated to its default value. COND_MST_STATUS_SUCCESS -}CONDUCTIVITY_UPDATE_MST_STATUS_T; +}COND_UPDATE_MST_STATUS_T; +// Coefficients to be applied with raw impedance and rtd values to calculate conductivity and temperature. typedef struct { F64 A0; @@ -125,7 +130,7 @@ F64 B1; F64 B2; F64 B3; -}CONDUCTIVITY_COEFFICIENTS_T; +}COND_COEFF_T; /// Structure to receive Sensor Measurement data from Teensy #pragma pack(push, 1) @@ -140,7 +145,7 @@ U32 rtdDataPoints; ///< Impedance Data Points. Hard coded to 1 F32 rtdRzMag; ///< Value of rtd_resistance F32 rtdRzPhase; ///< RTD Rz Phase. Hard coded to 0.0 -} CONDUCTIVITY_SENSOR_DATA_T; +} COND_SENSOR_DATA_T; #pragma pack(pop) /// Structure to receive EEPROM data from Teensy. These are coefficient values to calculate conductivity and temperature. @@ -149,7 +154,7 @@ { F64 doubleValue[DOUBLE_COUNT]; ///< Double Values stored in the EEPROM F32 floatValue[FLOAT_COUNT]; ///< Float Values stored in the EEPROM -} CONDUCTIVITY_EEPROM_DATA_T; +} COND_EEPROM_DATA_T; #pragma pack(pop) /// Structure to receive conductivity measurement settings from Teensy @@ -163,28 +168,31 @@ U32 AdcPgaGain; U32 DftNum; U32 ADCAvgNum; -} CONDUCTIVITY_MEASUREMENT_SETTINGS_T; +} COND_MEASUREMENT_SETTINGS_T; #pragma pack(pop) +// Structure to store calculated Conductivity and Temperature for each sensor. typedef struct { F64 Conductivity; F64 Temperature; -}CONDUCTIVITY_CALCULATED_MEASUREMENTS_T; +}COND_CALCULATED_MEASUREMENTS_T; +// Structure to enqueue and dequeue commands in the command queue typedef struct { TEENSY_CMD_INDEX_T cmdIdx; U08* teensyCMD; U32 rxSize; -} CONDUCTIVITY_CMD_DATA_T; +} COND_CMD_DATA_T; // ********** public function prototypes ********** -void initCondTeensy( void ); + +void initConductivityTeensy( void ); void execConductivityTeensy( void ); void signalConductivityReceiptCompleted( void ); void signalConductivityTransmitCompleted( void ); -void addToCmdQ(U08 teensyCmd); +void addToConductivityCmdQ(TEENSY_CMD_INDEX_T teensyCmd); F32 getTeensyConductivityValue( CONDUCTIVITY_SENSORS_T sensorId ); F32 getTeensyConductivityTemperatureValue( CONDUCTIVITY_SENSORS_T sensorId );