Minor changes to support ADMW FWv1.17.75

Revision:
8:2f2775c34640
Parent:
6:9d393a9677f4
Child:
11:8e6023d2e584
--- a/inc/admw1001/admw1001_config.h	Tue Jun 18 09:28:16 2019 +0000
+++ b/inc/admw1001/admw1001_config.h	Thu Jun 20 18:13:57 2019 +0000
@@ -46,10 +46,6 @@
 #include "admw_platform.h"
 #include "admw1001_sensor_types.h"
 
-/* Undefine for versions prior to V2.3. */
-#undef __V2_3_CFG_FMT__
-
-
 /*! @addtogroup ADMW1001_Api
  *  @{
  */
@@ -62,7 +58,8 @@
 #define ADMW1001_SENSOR_COMMAND_MAX_LENGTH 7
 
 /*! ADMW1001 channel priority options */
-typedef enum {
+typedef enum
+{
     ADMW1001_CHANNEL_PRIORITY_0 = 0,
     ADMW1001_CHANNEL_PRIORITY_1,
     ADMW1001_CHANNEL_PRIORITY_2,
@@ -76,26 +73,27 @@
     ADMW1001_CHANNEL_PRIORITY_10,
     ADMW1001_CHANNEL_PRIORITY_11,
     ADMW1001_CHANNEL_PRIORITY_12,
-    ADMW1001_CHANNEL_PRIORITY_13,
-    ADMW1001_CHANNEL_PRIORITY_14,
-    ADMW1001_CHANNEL_PRIORITY_15,
 
     ADMW1001_CHANNEL_PRIORITY_HIGHEST = ADMW1001_CHANNEL_PRIORITY_0,
-    ADMW1001_CHANNEL_PRIORITY_LOWEST  = ADMW1001_CHANNEL_PRIORITY_15,
-} ADMW1001_CHANNEL_PRIORITY;
+    ADMW1001_CHANNEL_PRIORITY_LOWEST  = ADMW1001_CHANNEL_PRIORITY_12,
+
+}   ADMW1001_CHANNEL_PRIORITY;
 
 /*! ADMW1001 operating mode options */
-typedef enum {
+typedef enum
+{
     ADMW1001_OPERATING_MODE_SINGLECYCLE = 0,
     /*!< Executes a single measurement cycle and stops */
     ADMW1001_OPERATING_MODE_CONTINUOUS,
     /*!< Continuously executes measurement cycles */
     ADMW1001_OPERATING_MODE_MULTICYCLE,
     /*!< Executes a burst of measurement cycles, repeated at defined intervals */
-} ADMW1001_OPERATING_MODE;
+
+}   ADMW1001_OPERATING_MODE;
 
 /*! ADMW1001 data ready mode options */
-typedef enum {
+typedef enum
+{
     ADMW1001_DATAREADY_PER_CONVERSION = 0,
     /*!< The DATAREADY signal is asserted after completion of each conversion
      *   - a single data sample only from the latest completed conversion is
@@ -107,25 +105,24 @@
      *   - data samples only from the lastest completed measurement cycle are
      *     stored in this mode
      */
-    ADMW1001_DATAREADY_PER_MULTICYCLE_BURST,
-    /*!< The DATAREADY signal is asserted after completion of each burst of
-     *   measurement cycles
-     *   - applicable only when @ref ADMW1001_OPERATING_MODE_MULTICYCLE
-     *     is also selected
-     *   - data samples only from the lastest completed burst of measurement
-     *     cycles are stored in this mode
+    ADMW1001_DATAREADY_PER_FIFO_FILL,
+    /*!< The DATAREADY signal is asserted after each fill of the data FIFO
+     *   - applicable only when @ref ADMW1001_OPERATING_MODE_CONTINUOUS or
+     *     @ref ADMW1001_OPERATING_MODE_MULTICYCLE is also selected
      */
-} ADMW1001_DATAREADY_MODE;
+
+}   ADMW1001_DATAREADY_MODE;
 
 /*! ADMW1001 power mode options */
-typedef enum {
+typedef enum
+{
     ADMW1001_POWER_MODE_HIBERNATION = 0,
     /*!< module has entede hibernation mode. All analog circuitry is disabled. All peripherals disabled apart from the Wake-up pin functionality. */
     ADMW1001_POWER_MODE_ACTIVE,
     /*!< Part is fully powered up and either cycling through a sequence or awaiting a configuration */
-} ADMW1001_POWER_MODE;
 
-#ifdef __V2_3_CFG_FMT__
+}   ADMW1001_POWER_MODE;
+
 /*! ADMW1001 measurement analog filter settling options */
 typedef enum
 {
@@ -133,22 +130,24 @@
     /*!< Allow full settling time to elapse between every measurement from an analog sensor */
     ADMW1001_FILTER_SETTLING_FAST,
     /*!< Skip settling time between consecutive measurements from an analog sensor */
-} ADMW1001_FILTER_SETTLING;
-#endif
+
+}   ADMW1001_FILTER_SETTLING;
 
 /*! ADMW1001 measurement unit options
  *
  *  Optionally select a measurement unit for final conversion results.
  *  Currently applicable only to specific temperature sensor types.
  */
-typedef enum {
+typedef enum
+{
     ADMW1001_MEASUREMENT_UNIT_UNSPECIFIED = 0,
     /*!< No measurement unit specified */
     ADMW1001_MEASUREMENT_UNIT_CELSIUS,
     /*!< Celsius temperature unit - applicable to temperature sensors only */
     ADMW1001_MEASUREMENT_UNIT_FAHRENHEIT,
     /*!< Fahrenheit temperature unit - applicable to temperature sensors only */
-} ADMW1001_MEASUREMENT_UNIT;
+
+}   ADMW1001_MEASUREMENT_UNIT;
 
 /*! ADMW1001 Open-Sensor Diagnostics frequency
  *
@@ -160,7 +159,8 @@
  *  @note Open-sensor diagnostic checks, when performed, will add a delay to the
  *        start of the next measurement cycle.
  */
-typedef enum {
+typedef enum
+{
     ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED = 0,
     /*!< No Open-Sensor Detection is performed */
     ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_CYCLE,
@@ -169,13 +169,15 @@
     /*!< No Open-Sensor Detection is performed at intervals of 100 cycles */
     ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_1000_CYCLES,
     /*!< No Open-Sensor Detection is performed at intervals of 1001 cycles */
-} ADMW1001_OPEN_SENSOR_DIAGNOSTICS;
+
+}   ADMW1001_OPEN_SENSOR_DIAGNOSTICS;
 
 /*! ADMW1001 analog input signal amplification gain options
  *
  *  @note applicable only to ADC analog sensor channels
  */
-typedef enum {
+typedef enum
+{
     ADMW1001_ADC_RTD_CURVE_EUROPEAN = 0,
     /*!< EUROPEAN RTD curve used. */
     ADMW1001_ADC_RTD_CURVE_AMERICAN,
@@ -184,12 +186,14 @@
     /*!< JAPANESE RTD curve used. */
     ADMW1001_ADC_RTD_CURVE_ITS90,
     /*!< ITS90 RTD curve used. */
-} ADMW1001_ADC_RTD_CURVE;
+
+}   ADMW1001_ADC_RTD_CURVE;
 /*! ADMW1001 analog input signal amplification gain options
  *
  *  @note applicable only to ADC analog sensor channels
  */
-typedef enum {
+typedef enum
+{
     ADMW1001_ADC_GAIN_1X = 0,
     /*!< no amplification gain */
     ADMW1001_ADC_GAIN_2X,
@@ -206,26 +210,30 @@
     /*!< x64 amplification gain */
     ADMW1001_ADC_GAIN_128X,
     /*!< x128 amplification gain */
-} ADMW1001_ADC_GAIN;
+
+}   ADMW1001_ADC_GAIN;
 
 /*! ADMW1001 analog sensor excitation state options
  *
  *  @note applicable only to ADC analog sensor channels, and
  *        specific sensor types
  */
-typedef enum {
+typedef enum
+{
     ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
     /*!< Excitation for measurement is always on */
     ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
     /*!< Excitation for measurement is active only during measurement */
-} ADMW1001_ADC_EXC_STATE;
+
+}   ADMW1001_ADC_EXC_STATE;
 
 /*! ADMW1001 analog sensor excitation current output level options
  *
  *  @note applicable only to ADC analog sensor channels, and
  *        specific sensor types
  */
-typedef enum {
+typedef enum
+{
     ADMW1001_ADC_EXC_CURRENT_EXTERNAL = 0,
     /*!< External excitation is provided */ 
     ADMW1001_ADC_EXC_CURRENT_50uA,
@@ -238,13 +246,15 @@
     /*!< 500uA excitation current enabled */
     ADMW1001_ADC_EXC_CURRENT_1000uA,
     /*!< 1mA excitation current enabled */
-} ADMW1001_ADC_EXC_CURRENT;
+
+}   ADMW1001_ADC_EXC_CURRENT;
 
 /*! ADMW1001 analog sensor excitation current ratios used for diode sensor
  *
  *  @note applicable only to a diode sensor
  */
-typedef enum {
+typedef enum
+{
     ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_10UA_100UA = 0, 
     /**< 2 Current measurement 10uA 100uA        */
     ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_20UA_160UA,  
@@ -261,78 +271,98 @@
     /**< 3 current measuremetn 50uA 150uA 300uA  */
     ADMW1001_ADC_EXC_CURRENT_IOUT_DIODE_100UA_300UA_600UA,
     /**< 3 current measuremetn 100uA 300uA 600uA */
-} ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO;
+
+}   ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO;
 
 /*! ADMW1001 analog reference selection options
  *
  *  @note applicable only to ADC analog sensor channels, and
  *        specific sensor types
  */
-typedef enum {
-    ADMW1001_ADC_REFERENCE_NONE = 0,
-    /*!< No reference is selected */
-
-    ADMW1001_ADC_REFERENCE_RESISTOR_INTERNAL_1,
-    /*!< Internal reference resistor #1 (4320 ohms) is selected */
-    ADMW1001_ADC_REFERENCE_RESISTOR_INTERNAL_2,
-    /*!< Internal reference resistor #2 (10010 ohms) is selected */
-    ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
-    /*!< Internal ADC voltage reference (2.5V) is selected */
+typedef enum
+{
+    ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL = 0,
+    /*!< Internal VRef - 1.2V */
+    ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_1,
+    /*!< External reference voltage #1 */
+    ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_2,
+    /*!< External reference voltage #2 */
     ADMW1001_ADC_REFERENCE_VOLTAGE_AVDD,
     /*!< Analag Supply Voltage AVDD reference (typically 3.3V) is selected */
 
-    ADMW1001_ADC_REFERENCE_RESISTOR_EXTERNAL_1,
-    /*!< External user-supplied reference resistor #1 is selected
-     *
-     * @note reference resistor value externalRef1Value must be specified
-     * (see @ref ADMW1001_MEASUREMENT_CONFIG) */
-    ADMW1001_ADC_REFERENCE_RESISTOR_EXTERNAL_2,
-    /*!< External user-supplied reference resistor #2 is selected
-     *
-     * @note reference resistor value externalRef2Value must be specified
-     * (see @ref ADMW1001_MEASUREMENT_CONFIG) */
-    ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_1,
-    /*!< External user-supplied reference voltage #1 is selected
-     *
-     * @note reference voltage value externalRef1Value must be specified
-     * (see @ref ADMW1001_MEASUREMENT_CONFIG) */
-    ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_2,
-    /*!< External user-supplied reference voltage #2 is selected
-     *
-     * @note reference voltage value externalRef2Value must be specified
-     * (see @ref ADMW1001_MEASUREMENT_CONFIG) */
-    ADMW1001_ADC_REFERENCE_BRIDGE_EXCITATION,
-    /*!< Bridge Excition Voltage is selected as reference
-     *
-     * @note this reference MUST be selected for 4/6-wire bridge sensor types
-     * (see @ref ADMW1001_ADC_SENSOR_TYPE) */
-} ADMW1001_ADC_REFERENCE_TYPE;
+}   ADMW1001_ADC_REFERENCE_TYPE;
 
 /*! ADMW1001 ADC Reference configuration
  *
  *  @note applicable only to ADC analog sensor channels
  */
-typedef enum {
+typedef enum
+{
     ADMW1001_ADC_GND_SW_OPEN = 0,
     /*!< Ground switch not enabled for measurement. */
     ADMW1001_ADC_GND_SW_CLOSED,
-    /*!< Ground switch closed for measurement. */
-} ADMW1001_ADC_GND_SW;
+    /*!< Ground switch enabled for measurement. */
+
+}   ADMW1001_ADC_GND_SW;
+
+/*! ADMW1001 analog filter chop mode
+ *
+ *  @note applicable only to ADC analog sensor channels
+ */
+typedef enum
+{
+    ADMW1001_CHOP_MD_NONE = 0,
+    /*!< No chop performed. */
+    ADMW1001_CHOP_MD_HW,
+    /*!< Hardware only chop performed. */
+    ADMW1001_CHOP_MD_SW,
+    /*!< Software only chop performed. */
+    ADMW1001_CHOP_MD_HWSW,
+    /*!< Hardware and software chop performed. */
+    
+}   ADMW1001_CHOP_MD;
 
 /*! ADMW1001 analog filter selection options
  *
  *  @note applicable only to ADC analog sensor channels
  */
-typedef enum {
+typedef enum
+{
     ADMW1001_ADC_FILTER_SINC4 = 0,
-    /*!< SINC4 filter
-     *
-     * @note The number of input samples to be averaged by the filter
-     *       must be specified by fs (see @ref ADMW1001_ADC_FILTER_CONFIG).
-     *       The fs value affects the output sample rate and settling times
-     *       of the ADC */
+    /*!< SINC4 - 4th order sinc response filter */
     ADMW1001_ADC_FILTER_SINC3,
-} ADMW1001_ADC_FILTER_TYPE;
+    /*!< SINC3 - 3rd order sinc response filter */
+
+}   ADMW1001_ADC_FILTER_TYPE;
+
+/*! ADMW1001 Sinc Filter range (SF)
+ *
+ *  @note applicable only to ADC analog sensor channels
+ *  @note SF must be set in conjunction with chop mode 
+ *  and sinc filter type to achieve the desired sampling rate.
+ */
+typedef enum
+{
+    ADMW1001_SF_976HZ  = 0,
+    /*!< SF setting for 976Hz sample rate. */
+    ADMW1001_SF_488HZ  = 1,
+    /*!< SF setting for 488Hz sample rate. */
+    ADMW1001_SF_244HZ  = 3,
+    /*!< SF setting for 244Hz sample rate. */
+    ADMW1001_SF_122HZ  = 7,
+    /*!< SF setting for 122Hz sample rate. */
+    ADMW1001_SF_61HZ   = 31,
+    /*!< SF setting for 61Hz sample rate. */
+    ADMW1001_SF_30P5HZ = 51,
+    /*!< SF setting for 61Hz sample rate. */
+    ADMW1001_SF_10HZ   = 124,
+    /*!< SF setting for 10Hz sample rate. */
+    ADMW1001_SF_8P24HZ = 125,
+    /*!< SF setting for 8.24Hz sample rate. */
+    ADMW1001_SF_5HZ    = 127,
+    /*!< SF setting for 5Hz sample rate. */
+
+}   ADMW1001_SINC_FILTER_RANGE;
 
 /*! ADMW1001 I2C clock speed options
  *
@@ -340,11 +370,12 @@
  */
 typedef enum
 {
-  ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_100K = 0,
+    ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_100K = 0,
     /*!< 100kHz I2C clock speed */
-  ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_400K,
+    ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_400K,
     /*!< 400kHz I2C clock speed */
-} ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED;
+
+}   ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED;
 
 /*! ADMW1001 SPI mode options
  *
@@ -352,15 +383,16 @@
  */
 typedef enum
 {
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_0 = 0,
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_0 = 0,
     /*!< SPI mode 0 Clock Polarity = 0 Clock Phase = 0 */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_1,
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_1,
     /*!< SPI mode 0 Clock Polarity = 0 Clock Phase = 1 */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_2,
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_2,
     /*!< SPI mode 0 Clock Polarity = 1 Clock Phase = 0 */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_3,
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_3,
     /*!< SPI mode 0 Clock Polarity = 1 Clock Phase = 1 */
-} ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE;
+
+}   ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE;
 
 /*! ADMW1001 SPI clock speed options
  *
@@ -368,60 +400,66 @@
  */
 typedef enum
 {
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_13MHZ = 0,
-    /*!< SPI Clock Speed configured to 13MHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_6_5MHZ,
-    /*!< SPI Clock Speed configured to 6.5MHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_3_25MHZ,
-    /*!< SPI Clock Speed configured to 3.25MHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_1_625MHZ,
-    /*!< SPI Clock Speed configured to 1.625MHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_812KHZ,
-    /*!< SPI Clock Speed configured to 812kHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_406KHZ,
-    /*!< SPI Clock Speed configured to 406kHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_203KHZ,
-    /*!< SPI Clock Speed configured to 203kHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_101KHZ,
-    /*!< SPI Clock Speed configured to 101kHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_50KHZ,
-    /*!< SPI Clock Speed configured to 50kHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_25KHZ,
-    /*!< SPI Clock Speed configured to 25kHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_12KHZ,
-    /*!< SPI Clock Speed configured to 12kHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_6KHZ,
-    /*!< SPI Clock Speed configured to 6kHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_3KHZ,
-    /*!< SPI Clock Speed configured to 3kHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_1_5KHZ,
-    /*!< SPI Clock Speed configured to 1.5kHz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_793HZ,
-    /*!< SPI Clock Speed configured to 793hz */
-  ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_396HZ,
-    /*!< SPI Clock Speed configured to 396hz */
-} ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK;
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_8MHZ = 0,
+    /*!< SPI Clock Speed configured to 8MHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_4MHZ,
+    /*!< SPI Clock Speed configured to 4MHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_2MHZ,
+    /*!< SPI Clock Speed configured to 2MHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_1MHZ,
+    /*!< SPI Clock Speed configured to 1MHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_500KHZ,
+    /*!< SPI Clock Speed configured to 500kHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_250KHZ,
+    /*!< SPI Clock Speed configured to 250kHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_125KHZ,
+    /*!< SPI Clock Speed configured to 125kHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_62P5KHZ,
+    /*!< SPI Clock Speed configured to 62.5kHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_31P3KHZ,
+    /*!< SPI Clock Speed configured to 31.3kHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_15P6KHZ,
+    /*!< SPI Clock Speed configured to 15.6kHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_7P8KHZ,
+    /*!< SPI Clock Speed configured to 7.8kHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_3P9KHZ,
+    /*!< SPI Clock Speed configured to 3.9kHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_1P9KHZ,
+    /*!< SPI Clock Speed configured to 1.9kHz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_977HZ,
+    /*!< SPI Clock Speed configured to 977Hz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_488HZ,
+    /*!< SPI Clock Speed configured to 488Hz */
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_244HZ,
+    /*!< SPI Clock Speed configured to 244Hz */
+
+}   ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK;
 
 /*! ADMW1001 Power Configuration options */
-typedef struct {
+typedef struct
+{
     ADMW1001_POWER_MODE        powerMode;
     /*!< Power mode selection */
-} ADMW1001_POWER_CONFIG;
+
+}   ADMW1001_POWER_CONFIG;
 
 /*! ADMW1001 Multi-Cycle Configuration options
  *
  * @note required only when ADMW1001_OPERATING_MODE_MULTICYCLE is selected
  *       as the operatingMode (@ref ADMW1001_MEASUREMENT_CONFIG)
  */
-typedef struct {
-    uint32_t                         cyclesPerBurst;
+typedef struct
+{
+    uint32_t    cyclesPerBurst;
     /*!< Number of cycles to complete for a single burst */
-    uint32_t                         burstInterval;
+    uint32_t    burstInterval;
     /*!< Interval, in seconds, between each successive burst of cycles */
-} ADMW1001_MULTICYCLE_CONFIG;
+
+}   ADMW1001_MULTICYCLE_CONFIG;
 
 /*! ADMW1001 Measurement Configuration options */
-typedef struct {
+typedef struct
+{
     ADMW1001_OPERATING_MODE    operatingMode;
     /*!< Operating mode - specifies how measurement cycles are scheduled */
     ADMW1001_DATAREADY_MODE    dataReadyMode;
@@ -431,12 +469,6 @@
      *   are scheduled.  Applicable only when operatingMode is
      *   ADMW1001_OPERATING_MODE_MULTICYCLE
      */
-    uint32_t                    cycleInterval;
-    /*!< Cycle interval - specifies the time interval between the start of each
-     *   successive measurement cycle.  Applicable only when operatingMode is
-     *   not ADMW1001_OPERATING_MODE_SINGLECYCLE
-     */
-#ifdef __V2_3_CFG_FMT__
     ADMW1001_FILTER_SETTLING   filterSettling;
     /*!< Analog filter settling - specifies the policy for settling time
      *   between consecutive measurements from an analog channel in a multi-
@@ -444,64 +476,70 @@
      *   configurations, settling time is always skipped between consecutive
      *   measurements in a measurement cycle.
      */
-#endif
-    float32_t                        externalRef1Value;
-    /*!< Resistance/voltage value connected to external reference input #1.
+    uint8_t                     reserved0[3];
+    /*!< Reserved for future use and ensure word alignment.
+     */ 
+    uint32_t                    cycleInterval;
+    /*!< Cycle interval - specifies the time interval between the start of each
+     *   successive measurement cycle.  Applicable only when operatingMode is
+     *   not ADMW1001_OPERATING_MODE_SINGLECYCLE
+     */
+    bool                        vBiasEnable;
+    /*!< Enable voltage Bias output of ADC
+     */
+    float32_t                   externalRef1Value;
+    /*!< Voltage value connected to external reference input #1.
      *   Applicable only if the selected reference type is
-     *   ADMW1001_ADC_REFERENCE_RESISTOR_EXTERNAL_1 or
-     *   ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_1
+     *   voltage.
      *   (see @ref ADMW1001_ADC_REFERENCE_TYPE)
      */    
-    bool                             enableExternalFlash;
-    /*!< Enable the use of external flash memory for storage of samples.
-     */
-} ADMW1001_MEASUREMENT_CONFIG;
+    uint32_t                    reserved1[4];
+    /*!< Reserved for future use and ensure word alignment.
+     */ 
+
+}   ADMW1001_MEASUREMENT_CONFIG;
 
 /*! ADMW1001 ADC Excitation Current output configuration
  *
  *  @note applicable only to ADC analog sensor channels, and
  *        specific sensor types
  */
-typedef struct {
+typedef struct
+{
     ADMW1001_ADC_EXC_STATE                excitationState;
     /*!< Excitation current state */
     ADMW1001_ADC_EXC_CURRENT              outputLevel;
     /*!< Excitation current output level */
     ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO  diodeRatio;
     /*!< Excitation current output diode ratio */
-} ADMW1001_ADC_EXC_CURRENT_CONFIG;
+
+}   ADMW1001_ADC_EXC_CURRENT_CONFIG;
 
 /*! ADMW1001 ADC Filter configuration
  *
  *  @note applicable only to ADC analog sensor channels
  */
-typedef struct {
-    ADMW1001_ADC_FILTER_TYPE   type;
+typedef struct
+{
+    ADMW1001_ADC_FILTER_TYPE    type;
     /*!< Filter type selection */
-    uint32_t                    sf;
-    /*!< SF value used along with filter type to determine speed */
-    bool                  filterChop;
+    ADMW1001_SINC_FILTER_RANGE  sf;
+    /*!< SF value used along with filter type and chop mode to determine speed */
+    ADMW1001_CHOP_MD            filterChop;
     /*!< Enable filter chop */
-    bool                  notch1p2;
+    bool                        notch1p2;
     /*!< Enable Notch 2 Filter Mode */
-    ADMW1001_ADC_GND_SW             groundSwitch;
+    ADMW1001_ADC_GND_SW         groundSwitch;
     /*!< Option to open or close sensor ground switch */
-} ADMW1001_ADC_FILTER_CONFIG;
 
-/*! ADMW1001 ADC Referemce configuration
- *
- *  @note applicable only to ADC analog sensor channels
- */
-typedef struct {
-    ADMW1001_ADC_REFERENCE_TYPE    type;
-    /*!< Filter type selection */
-} ADMW1001_ADC_REFERENCE_CONFIG;
+}   ADMW1001_ADC_FILTER_CONFIG;
 
 /*! ADMW1001 ADC analog channel configuration details
  *
  *  @note applicable only to ADC analog sensor channels
  */
-typedef struct {
+typedef struct
+{
     ADMW1001_ADC_SENSOR_TYPE        sensor;
     /*!< Sensor type selection */
     ADMW1001_ADC_RTD_CURVE          rtdCurve;
@@ -512,11 +550,30 @@
     /*!< ADC Excitation Current configuration */
     ADMW1001_ADC_FILTER_CONFIG      filter;
     /*!< ADC Filter configuration */
-    ADMW1001_ADC_REFERENCE_CONFIG   reference;
+    ADMW1001_ADC_REFERENCE_TYPE     reference;
     /*!< ADC Reference configuration */
-    bool                             enableVbias;
-    /*!< Option to enable internal ADC voltage bias */
-} ADMW1001_ADC_CHANNEL_CONFIG;
+    uint8_t                         reserved0[3];
+    /*!< Reserved for future use and ensure word alignment. */
+    uint32_t                        reserved1[6];
+    /*!< Reserved for future use and ensure word alignment. */
+
+}   ADMW1001_ADC_CHANNEL_CONFIG;
+
+/*! ADMW1001 look-up table selection
+ *  Select table used to linearise the measurement.
+ */
+typedef enum
+{
+    ADMW1001_LUT_DEFAULT  = 0,
+    /*!< Default LUT */
+    ADMW1001_LUT_UNITY    = 1,
+    /*!< Unity LUT */
+    ADMW1001_LUT_CUSTOM   = 2,
+    /*!< User defined custom LUT */
+    ADMW1001_LUT_RESERVED = 3,
+    /*!< Reserved for future use */
+    
+}   ADMW1001_LUT_SELECT;
 
 /*! ADMW1001 digital sensor data encoding
  *
@@ -524,7 +581,7 @@
  */
 typedef enum
 {
-    ADMW1001_DIGITAL_SENSOR_DATA_CODING_NONE,
+    ADMW1001_DIGITAL_SENSOR_DATA_CODING_NONE = 0,
     /**< None/Invalid - data format is ignored if coding is set to this value */
     ADMW1001_DIGITAL_SENSOR_DATA_CODING_UNIPOLAR,
     /**< Unipolar - unsigned integer values */
@@ -533,13 +590,15 @@
     ADMW1001_DIGITAL_SENSOR_DATA_CODING_OFFSET_BINARY,
     /**< Offset Binary - used to represent signed values with unsigned integers,
      *   with the mid-range value representing 0 */
-} ADMW1001_DIGITAL_SENSOR_DATA_CODING;
+
+}   ADMW1001_DIGITAL_SENSOR_DATA_CODING;
 
 /*! ADMW1001 digital sensor data format configuration
  *
  *  @note applicable only to SPI and I2C digital sensor channels
  */
-typedef struct {
+typedef struct
+{
     ADMW1001_DIGITAL_SENSOR_DATA_CODING coding;
     /**< Data Encoding of Sensor Result */
     bool littleEndian;
@@ -552,24 +611,30 @@
     /**< Number of relevant data bits to extract from the data frame */
     uint8_t bitOffset;
     /**< Data bit offset, relative to data alignment within the data frame */
-} ADMW1001_DIGITAL_SENSOR_DATA_FORMAT;
+    uint8_t reserved[2];
+    /*!< Reserved for future use and ensure word alignment. */
+
+}   ADMW1001_DIGITAL_SENSOR_DATA_FORMAT;
 
 /*! ADMW1001 digital sensor command
  *
  *  @note applicable only to SPI and I2C digital sensor channels
  */
-typedef struct {
+typedef struct
+{
     uint8_t command[ADMW1001_SENSOR_COMMAND_MAX_LENGTH];
     /*!< Optional command bytes to send to the device */
     uint8_t commandLength;
     /*!< Number of valid command bytes.  Set to 0 if unused */
-} ADMW1001_DIGITAL_SENSOR_COMMAND;
+
+}   ADMW1001_DIGITAL_SENSOR_COMMAND;
 
 /*! ADMW1001 digital sensor calibration param
  *
  *  @note applicable only to digital sensor channels
  */
-typedef struct {
+typedef struct
+{
     uint32_t calibrationParam;
     /*!< Independently established environmental variable used during calibration
      *   of a digital sensor. Used only if the sensor supports calibration
@@ -577,68 +642,80 @@
      */
     bool enableCalibrationParam;
     /*!< Allow Calibration_Parameter to be used during calibration of any digital sensor */
-} ADMW1001_DIGITAL_CALIBRATION_COMMAND;
+    uint8_t                         reserved[3];
+    /*!< Reserved for future use and ensure word alignment. */
+
+}   ADMW1001_DIGITAL_CALIBRATION_COMMAND;
 
 /*! ADMW1001 digital sensor communication config
  *
  *  @note applicable only to digital sensor channels
  */
-typedef struct {
-    bool  useCustomCommsConfig;
+typedef struct
+{
+    bool                                            useCustomCommsConfig;
     /*!< Optional parameter to enable user digital communication settings */
-    ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED     i2cClockSpeed;
+    ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED   i2cClockSpeed;
     /*!< Optional parameter to configure specific i2c speed for i2c sensor */
-    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE            spiMode;
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE          spiMode;
     /*!< Optional parameter to configure specific spi mode for spi sensor */
-    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK           spiClock;
+    ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK         spiClock;
     /*!< Optional parameter to configure specific spi clock for spi sensor */
-} ADMW1001_DIGITAL_SENSOR_COMMS;
+
+}   ADMW1001_DIGITAL_SENSOR_COMMS;
 
 /*! ADMW1001 I2C digital channel configuration details
  *
  *  @note applicable only to I2C digital sensor channels
  */
-typedef struct {
-    ADMW1001_I2C_SENSOR_TYPE        sensor;
+typedef struct
+{
+    ADMW1001_I2C_SENSOR_TYPE                sensor;
     /*!< Sensor type selection */
-    uint32_t                              deviceAddress;
+    uint8_t                                 deviceAddress;
     /*!< I2C device address (7-bit) */
-    ADMW1001_DIGITAL_SENSOR_COMMAND configurationCommand;
+    uint8_t                                 reserved;
+    /*!< Reserved for future use and ensure word alignment. */
+    ADMW1001_DIGITAL_SENSOR_COMMAND         configurationCommand;
     /*!< Optional configuration command to send to the device at start-up.
      *   A default configuration command will be used if this is not specified.
      *   Applicable only to specific I2C sensor types.
      */
-    ADMW1001_DIGITAL_SENSOR_COMMAND dataRequestCommand;
+    ADMW1001_DIGITAL_SENSOR_COMMAND         dataRequestCommand;
     /*!< Optional data request command to send to the device for each sample.
      *   A default data request command will be used if this is not specified.
      *   Applicable only to specific I2C sensor types.
      */
-    ADMW1001_DIGITAL_SENSOR_DATA_FORMAT dataFormat;
+    ADMW1001_DIGITAL_SENSOR_DATA_FORMAT     dataFormat;
     /*!< Optional data format configuration to parse/extract data from the device.
      *   A default data format will be used if this is not specified.
      *   Applicable only to specific I2C sensor types
      */
-    ADMW1001_DIGITAL_CALIBRATION_COMMAND digitalCalibrationParam;
+    ADMW1001_DIGITAL_CALIBRATION_COMMAND    digitalCalibrationParam;
     /*!< This is used to supply an independently established environmental variable
      *   that must be used during calibration of a [digital] sensor which a)
      *   supports calibration and b) expects an environmental parameter.
      *   An example is a CO2 sensor, which may require the CO2 concentration level
      *   when performing a calibration
      */
-    ADMW1001_DIGITAL_SENSOR_COMMS configureComms;
+    ADMW1001_DIGITAL_SENSOR_COMMS           configureComms;
     /*!< Optional configuration to setup a user communication config.
      *   A default configuration  will be used if this is not specified.
      *   Applicable only to specific I2C sensor types.
      */
-} ADMW1001_I2C_CHANNEL_CONFIG;
+
+}   ADMW1001_I2C_CHANNEL_CONFIG;
 
 /*! ADMW1001 SPI digital channel configuration details
  *
  *  @note applicable only to SPI digital sensor channels
  */
-typedef struct {
+typedef struct
+{
     ADMW1001_SPI_SENSOR_TYPE        sensor;
     /*!< Sensor type selection */
+    uint8_t                         reserved[2];
+    /*!< Reserved for future use and ensure word alignment. */    
     ADMW1001_DIGITAL_SENSOR_COMMAND configurationCommand;
     /*!< Optional configuration command to send to the device at start-up.
      *   A default configuration command will be used if this is not specified.
@@ -661,84 +738,85 @@
      *   An example is a CO2 sensor, which may require the CO2 concentration level
      *   when performing a calibration
      */
-    ADMW1001_DIGITAL_SENSOR_COMMS configureComms;
+    ADMW1001_DIGITAL_SENSOR_COMMS       configureComms;
     /*!< Optional configuration to setup a user communication config.
      *   A default configuration  will be used if this is not specified.
      *   Applicable only to specific SPI sensor types.
      */
-} ADMW1001_SPI_CHANNEL_CONFIG;
 
+}   ADMW1001_SPI_CHANNEL_CONFIG;
 
 /*! ADMW1001 Measurement Channel configuration details */
-typedef struct {
-    bool                                 enableChannel;
+typedef struct
+{
+    bool                                enableChannel;
     /*!< Option to include this channel in normal measurement cycles */
-    bool                                 disablePublishing;
+    bool                                disablePublishing;
     /*!< Option to disable publishing of data samples from this channel.  The
      *   channel may still be included in measurement cycles, but data samples
      *   obtained from this channel will not be published.  This is typically
      *   used for channels which are required only as a compensation reference
      *   for another channel (e.g. Cold-Junction Compensation channels).
      */
-    ADMW1001_CHANNEL_ID                compensationChannel;
-    /*!< Optional compensation channel.  Set to ADMW1001_CHANNEL_ID_NONE if not
+    ADMW1001_CH_ID                      compensationChannel;
+    /*!< Optional compensation channel.  Set to ADMW1001_CH_ID_NONE if not
      *   required.  Typically used for thermocouple sensors that require a
      *   separate measurement of the "cold-junction" temperature, which can be
      *   be provided by an RTD temperature sensor connected on a separate
      *   "compensation channel" */
-    bool                                 enableUnityLut;
-    /*!< Option to choose the LUT for calculations, this implies that the
+    ADMW1001_LUT_SELECT                 lutSelect;
+    /*!<Select Look Up Table LUT for calculations, this implies that the
      * fundamental measurement for the sensor (typically mV or Ohms)
-     * would be returned as the measurement result.
+     * 0 = default, 1= unity, 2 = custom
      */
-    ADMW1001_MEASUREMENT_UNIT          measurementUnit;
+    ADMW1001_MEASUREMENT_UNIT           measurementUnit;
     /*!< Optional measurement unit selection for conversion results.  Applicable
      *   only for certain sensor types.  Set to
      *   ADMW1001_MEASUREMENT_UNIT_DEFAULT if not applicable.
      */
-    float32_t                            lowThreshold;
+    float32_t                           lowThreshold;
     /*!< Optional minimum threshold value for each processed sample, to be
      *   checked prior to publishing.  A channel ALERT condition is raised
      *   if the processed value is lower than this threshold.  Set to NaN
      *   if not required.
      */
-    float32_t                            highThreshold;
+    float32_t                           highThreshold;
     /*!< Optional maximum threshold value for each processed sample, to be
      *   checked prior to publishing.  A channel ALERT condition is raised
      *   if the processed value is higher than this threshold.  Set to NaN
      *   if not required.
      */
-    float32_t                            offsetAdjustment;
+    float32_t                           offsetAdjustment;
     /*!< Optional offset adjustment value applied to each processed sample.
      *   Set to NaN or 0.0 if not required.
      */
-    float32_t                            gainAdjustment;
+    float32_t                           gainAdjustment;
     /*!< Optional gain adjustment value applied to each processed sample.
      *   Set to NaN or 1.0 if not required.
      */
-    float32_t                            sensorParameter;
+    float32_t                           sensorParameter;
     /*!< Optional sensor parameter adjustment.
      *   Set to NaN or 0 if not required.
      */
-    uint32_t                             measurementsPerCycle;
+    uint32_t                            measurementsPerCycle;
     /*!< The number of measurements to obtain from this channel within each
      *   cycle.  Each enabled channel is measured in turn, until the number of
      *   measurements requested for the channel has been reached.  A different
      *   number of measurements-per-cycle may be specified for each channel.
      */
-    uint32_t                             cycleSkipCount;
+    uint32_t                            cycleSkipCount;
     /*!< Optional number of cycles to skip, such that this channel is included
      *   in the sequence in only one of every (cycleSkipCount + 1) cycles that
      *   occur.  If set to 0 (default), this channel is included in every cycle;
      *   if set to 1, this channel is included in every 2nd cycle; if set to 2,
      *   this channel is included in every 3rd cycle, and so on.
      */
-    uint32_t                             extraSettlingTime;
+    uint32_t                            extraSettlingTime;
     /*!< A minimum settling time is applied internally for each channel, based
      *   on the sensor type.  However, additional settling time (microseconds)
      *   can optionally be specified.  Set to 0 if not required.
      */
-    ADMW1001_CHANNEL_PRIORITY          priority;
+    ADMW1001_CHANNEL_PRIORITY           priority;
     /*!< By default, channels are arranged in the measurement sequence based on
      *   ascending order of channel ID.  However, a priority-level may be
      *   specified per channel to force a different ordering of the channels,
@@ -747,48 +825,51 @@
      *   ID.  Lower numbers indicate higher priority, with 0 being the highest.
      *   Set to 0 if not required.
      */
-    union {
-        ADMW1001_ADC_CHANNEL_CONFIG adcChannelConfig;
+    union 
+    {
+        ADMW1001_ADC_CHANNEL_CONFIG     adcChannelConfig;
         /*!< ADC channel configuration - applicable only to ADC channels */
-        ADMW1001_I2C_CHANNEL_CONFIG i2cChannelConfig;
+        ADMW1001_I2C_CHANNEL_CONFIG     i2cChannelConfig;
         /*!< I2C channel configuration - applicable only to I2C channels */
-        ADMW1001_SPI_CHANNEL_CONFIG spiChannelConfig;
+        ADMW1001_SPI_CHANNEL_CONFIG     spiChannelConfig;
         /*!< SPI channel configuration - applicable only to SPI channels */
     };
     /*!< Only one of adcChannelConfig, i2cChannelConfig, spiChannelConfig
      *  is required, depending on the channel designation
      *   (analog, I2C, SPI)
      */
-} ADMW1001_CHANNEL_CONFIG;
+
+}   ADMW1001_CHANNEL_CONFIG;
 
 /*! ADMW1001 Diagnostics configuration details */
-typedef struct {
-    bool                                   disableGlobalDiag;
+typedef struct
+{
+    bool                                disableGlobalDiag;
     /*!< Option to disable the following diagnostic checks on the ADC:
      *   - Reference Detection errors
      *   - Input under-/over-voltage errors
      *   - Calibration, Conversion and Saturation errors
      */
-    bool                                   disableMeasurementDiag;
+    bool                                disableMeasurementDiag;
     /*!< Option to disable additional checks per measurement channel:
      *   - High/low threshold limit violation
      */
-#ifdef __V2_3_CFG_FMT__
-    bool                                   disableCriticalTempAbort;
+
+    bool                                disableCriticalTempAbort;
     /*!< Option to disable abort of measurement cycle if the operating
      *   temperature of the ADMW1001 has exceeded critical limits
      */
-#endif
-    ADMW1001_OPEN_SENSOR_DIAGNOSTICS osdFrequency;
+
+    ADMW1001_OPEN_SENSOR_DIAGNOSTICS    osdFrequency;
     /*!< Option to enable Open-Circuit Detection at a selected cycle interval */
-} ADMW1001_DIAGNOSTICS_CONFIG;
 
-#ifdef __V2_3_CFG_FMT__
+}   ADMW1001_DIAGNOSTICS_CONFIG;
+
 typedef uint16_t ADMW1001_ADVANCED_ACCESS_KEY;
-#endif
 
 /*! ADMW1001 Device configuration details */
-typedef struct {
+typedef struct
+{
     ADMW1001_POWER_CONFIG           power;
     /*!< Power configuration details */
     ADMW1001_MEASUREMENT_CONFIG     measurement;
@@ -797,11 +878,10 @@
     /*!< FFT configuration details */
     ADMW1001_CHANNEL_CONFIG         channels[ADMW1001_MAX_CHANNELS];
     /*!< Channel-specific configuration details */
-#ifdef __V2_3_CFG_FMT__
     ADMW1001_ADVANCED_ACCESS_KEY    advancedAccessKey;
-#endif
     /*!< Key to enable access to advanced sensor configuration options */
-} ADMW1001_CONFIG;
+
+}   ADMW1001_CONFIG;
 
 #ifdef __cplusplus
 }