#ifndef DD_TEENSY_DEFS_H #define DD_TEENSY_DEFS_H #include // Configuration: Number of double precision values (rest will be single precision) #define DOUBLE_COUNT 8 // First 8 values as doubles, remaining as floats #define FLOAT_COUNT ((128 - (DOUBLE_COUNT * 8)) / 4) // Number of Float values in EEPROM // Structure to transmit Sensor Measurements data struct __attribute__((packed)) sensorDataPacketStruct { uint32_t sensorNum; // Conductivity Sensor number i.e unit 1 to 6. float impFreq; // Impedance Frequency uint32_t impDataPoints; // Impedance Data Points. Hard coded to 1 float impRzMag; // Value of medianMag float impRzPhase; // Value of medianPhase float rtdFreq; // RTD Frequency. Hard coded to 0.0 uint32_t rtdDataPoints; // Impedance Data Points. Hard coded to 1 float rtdRzMag; // Value of rtd_resistance float rtdRzPhase; // RTD Rz Phase. Hard coded to 0.0 }; // Structure to transmit EEPROM data struct __attribute__((packed)) eepromDataPacketStruct { double doubleValue[DOUBLE_COUNT]; // Double Values stored in the EEPROM float floatValue[FLOAT_COUNT]; // Float Values stored in the EEPROM }; // Structure to transmit conductivity measurement settings struct __attribute__((packed)) measurementSettingsStruct { float SinFreq; float DacVoltPP; float BiasVolt; uint32_t HstiaRtiaSel; uint32_t AdcPgaGain; uint32_t DftNum; uint32_t ADCAvgNum; }; typedef enum Init_Status { INIT_STATUS_UNITIALIZED = 0, INIT_STATUS_IN_PROGRESS, INIT_STATUS_INITIALIZED, INIT_STATUS_FAILED }; typedef enum Update_cfg_Status { UPDATE_CFG_STATUS_ERR_UNRECOGNIZED_PARAM = 0, UPDATE_CFG_STATUS_NO_CHANGE_TO_TIA, UPDATE_CFG_STATUS_NO_CHANGE_TO_PGA, UPDATE_CFG_STATUS_NO_CHANGE_TO_DFT_NUM, UPDATE_CFG_STATUS_NO_CHANGE_TO_AVG_NUM, UPDATE_CFG_STATUS_SUCCESS }; // Update Measurement Settings Status typedef enum Mst_param_idx { CONDUCTIVITY_MST_PARAM_IDX_SINFREQ = 0, ///< SinFreq : Frequency of excitation signal CONDUCTIVITY_MST_PARAM_IDX_DACPP, ///< DacVoltPP : DAC output voltage in mV peak to peak. Maximum value is 800mVpp. Peak to peak voltage CONDUCTIVITY_MST_PARAM_IDX_BIAS, ///< BiasVolt : The excitation signal is DC+AC. This parameter decides the DC value in mV unit. 0.0mV means no DC bias. CONDUCTIVITY_MST_PARAM_IDX_RTIA, ///< HstiaRtiaSel : Valid param values ( 0, 1, 2, 3, 4, 5, 6, 7 ) CONDUCTIVITY_MST_PARAM_IDX_PGA, ///< AdcPgaGain : Valid param values ( 1, 1.5, 2, 4, 9 ) i.e interpreted as ( 0, 1, 2, 3, 4 ) respectively in Teensy. CONDUCTIVITY_MST_PARAM_IDX_DFTNUM, ///< DftNum : DFT number Valid param values ( 4096, 2048, 1024, 512, 256 ) i.e interpreted as ( 10, 9, 8, 7, 6 ) respectively in Teensy. CONDUCTIVITY_MST_PARAM_IDX_AVGNUM, ///< ADCAvgNum : Valid param values ( 2, 4, 8, 16 )i.e interpreted as ( 0, 1, 2, 3 ) respectively in Teensy. MAX_CONDUCTIVITY_MST_PARAM_IDX ///< Total number of Measurement settings parameters }; typedef enum Update_EEPROM_Status { UPDATE_EEPROM_STATUS_INVALID_CMD = 0, UPDATE_EEPROM_STATUS_NO_VALID_VALUES, UPDATE_EEPROM_STATUS_TOO_MANY_VALUES, UPDATE_EEPROM_STATUS_WAITING_FOR_CONFIRMATION, UPDATE_EEPROM_STATUS_CONFIRMATION_TIMEOUT, UPDATE_EEPROM_STATUS_ERR_DOUBLE_VALUES, UPDATE_EEPROM_STATUS_ERR_FLOAT_VALUES, UPDATE_EEPROM_STATUS_VALUES_VERIFIED, UPDATE_EEPROM_STATUS_OPERATION_ABORTED, UPDATE_EEPROM_STATUS_INVALID_RESPONSE, UPDATE_EEPROM_STATUS_SUCCESS }; #endif