Index: firmware/App/Drivers/ConductivitySensors.h =================================================================== diff -u -r89f18a07a6d5837bf9b4559a69046e2b06f32c35 -r895a48e398bbd9621425f781f9ff7974fb3dd523 --- firmware/App/Drivers/ConductivitySensors.h (.../ConductivitySensors.h) (revision 89f18a07a6d5837bf9b4559a69046e2b06f32c35) +++ firmware/App/Drivers/ConductivitySensors.h (.../ConductivitySensors.h) (revision 895a48e398bbd9621425f781f9ff7974fb3dd523) @@ -36,6 +36,9 @@ */ // ********** public definitions ********** +#define DOUBLE_COUNT 8 ///< Number of double values in Teensy EEPROM data +#define FLOAT_COUNT ((128 - (DOUBLE_COUNT * 8)) / 4) ///< Number of float values in Teensy EEPROM data +#define MAX_CONDUCTIVITY_SENSOR 6 /// Enumeration of conductivity sensors. typedef enum ConductivitySensors @@ -54,6 +57,64 @@ NUM_OF_CONDUCTIVITY_SENSORS ///< Number of conductivity sensors } CONDUCTIVITY_SENSORS_T; +/// Structure to receive Sensor Measurement data from Teensy +#pragma pack(push, 1) +typedef struct +{ + U32 sensorNum; ///< Conductivity Sensor number i.e unit 1 to 6. + F32 impFreq; ///< Impedance Frequency + U32 impDataPoints; ///< Impedance Data Points. Hard coded to 1 + F32 impRzMag; ///< Value of medianMag + F32 impRzPhase; ///< Value of medianPhase + F32 rtdFreq; ///< RTD Frequency. Hard coded to 0.0 + 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; +#pragma pack(pop) + +/// Structure to receive EEPROM data from Teensy. These are coefficient values to calculate conductivity and temperature. +#pragma pack(push, 1) +typedef struct +{ + F64 doubleValue[DOUBLE_COUNT]; ///< Double Values stored in the EEPROM + F32 floatValue[FLOAT_COUNT]; ///< Float Values stored in the EEPROM +} CONDUCTIVITY_EEPROM_DATA_T; +#pragma pack(pop) + +/// Structure to receive conductivity measurement settings from Teensy +#pragma pack(push, 1) +typedef struct +{ + F32 SinFreq; + F32 DacVoltPP; + F32 BiasVolt; + U32 HstiaRtiaSel; + U32 AdcPgaGain; + U32 DftNum; + U32 ADCAvgNum; +} CONDUCTIVITY_MEASUREMENT_SETTINGS_T; +#pragma pack(pop) + +/// 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; + + +typedef enum Conductivity_Parse_Status +{ + CONDUCTIVITY_PARSE_SUCCESS = 0, + CONDUCTIVITY_PARSE_ERROR_NULL_BUFFER, + CONDUCTIVITY_PARSE_ERROR_INVALID_LENGTH, + CONDUCTIVITY_PARSE_ERROR_INVALID_SENSOR_NUM +} CONDUCTIVITY_PARSE_STATUS; + + // ********** public function prototypes ********** void initConductivitySensors( void );