Vybhav Kadaba / Mbed OS EV-PRO-MW1001_82_25

Files at this revision

API Documentation at this revision

Comitter:
Vkadaba
Date:
Fri Mar 06 17:03:18 2020 +0000
Parent:
50:d84305e5e1c0
Commit message:
1. Reverting Mbed firmware to support customers using ADMW1001 device firmware v82.25.; 2. New Mbed firmware will be available when ADMW1001 device firmware is released to the public. ; 3. SPI speed is reduced to 700KHz

Changed in this revision

bridge_4w_load_cell_config.c Show annotated file Show diff for this revision Revisions of this file
common/platform.h Show annotated file Show diff for this revision Revisions of this file
common/utils.c Show annotated file Show diff for this revision Revisions of this file
i2c0_sensirionSHT3X_config.c Show annotated file Show diff for this revision Revisions of this file
inc/admw1001/ADMW1001_REGISTERS.h Show annotated file Show diff for this revision Revisions of this file
inc/admw1001/ADMW1001_REGISTERS_typedefs.h Show annotated file Show diff for this revision Revisions of this file
inc/admw1001/admw1001_config.h Show annotated file Show diff for this revision Revisions of this file
inc/admw1001/admw1001_host_comms.h Show annotated file Show diff for this revision Revisions of this file
inc/admw1001/admw1001_lut_data.h Show annotated file Show diff for this revision Revisions of this file
inc/admw1001/admw1001_sensor_types.h Show annotated file Show diff for this revision Revisions of this file
inc/admw_api.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
multichannel_continuous_config.c Show annotated file Show diff for this revision Revisions of this file
multichannel_singlecycle_config.c Show annotated file Show diff for this revision Revisions of this file
rtd_3w_pt100_config.c Show annotated file Show diff for this revision Revisions of this file
rtd_4w_config.c Show annotated file Show diff for this revision Revisions of this file
src/admw_1001.c Show annotated file Show diff for this revision Revisions of this file
src/mbed/admw_spi.cpp Show annotated file Show diff for this revision Revisions of this file
thermocouple_typeJ_cjc0_config.c Show annotated file Show diff for this revision Revisions of this file
thermocouple_typeK_cjc0_config.c Show annotated file Show diff for this revision Revisions of this file
thermocouple_typeT_cjc0_config.c Show annotated file Show diff for this revision Revisions of this file
--- a/bridge_4w_load_cell_config.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/bridge_4w_load_cell_config.c	Fri Mar 06 17:03:18 2020 +0000
@@ -50,18 +50,15 @@
             .powerMode = ADMW1001_POWER_MODE_ACTIVE,
         },
         .measurement = {
-            .externalRefVoltage=0.0,
-            .AVDDVoltage=3.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
-            .groundSwitch = ADMW1001_ADC_GND_SW_CLOSED,
             .cycleInterval = 0,
             .RSenseValue = 1000.0,
         },
         .diagnostics = {
             .disableGlobalDiag = true,
             .disableMeasurementDiag = true,
-           // .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
+            .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
         },
         .channels = {
             [ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -77,7 +74,7 @@
                 .sensorParameter = 0.0,
                 .measurementsPerCycle = 1,
                 .cycleSkipCount = 0,
-                .extraSettlingTime = 5,
+                .extraSettlingTime = 4499.99986449257,
                 .priority = 0,
                 .adcChannelConfig = {
                     .sensor = ADMW1001_ADC_SENSOR_BRIDGE_4WIRE_1,
@@ -87,6 +84,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_CLOSED
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_AVDD,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -94,4 +92,4 @@
             },
         },
     },
-};
\ No newline at end of file
+};
--- a/common/platform.h	Mon Feb 17 11:23:39 2020 +0000
+++ b/common/platform.h	Fri Mar 06 17:03:18 2020 +0000
@@ -54,7 +54,6 @@
 #    define PLATFORM_SPI_MISO           D12
 #    define PLATFORM_SPI_SCK            D13
 #    define PLATFORM_SPI_CS             D10
-#    define PLATFORM_SPI_WAKEUP         D8
 #    define PLATFORM_GPIO_RESET         D6
 #    define PLATFORM_GPIO_ALERT_ERROR   D3
 #    define PLATFORM_GPIO_DATAREADY     D4
@@ -82,8 +81,7 @@
             .misoPin    = PLATFORM_SPI_MISO,        \
             .sckPin     = PLATFORM_SPI_SCK,         \
             .csPin      = PLATFORM_SPI_CS,          \
-            .wakeupPin  = PLATFORM_SPI_WAKEUP,       \
-            .maxSpeedHz = 1000000,                  \
+            .maxSpeedHz = 700000,                  \
         },                                          \
         .gpio = {                                   \
             .resetPin     = PLATFORM_GPIO_RESET,    \
--- a/common/utils.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/common/utils.c	Fri Mar 06 17:03:18 2020 +0000
@@ -134,7 +134,7 @@
 {
 
     for (uint32_t i = 0; i < nNumSamples; i++) {
-        ADMW_LOG_INFO("Sample # %2d Channel # %2d :: Raw %X %f :: Processed %f :: flags:%s%s",
+        ADMW_LOG_INFO("Sample # %2d Channel # %2d :: Raw %0X %f :: Processed %f :: flags:%s%s",
                       i+1,
                       pSampleBuffer[i].channelId,
                       pSampleBuffer[i].rawValue, (pSampleBuffer[i].rawValue/1024.0),
--- a/i2c0_sensirionSHT3X_config.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/i2c0_sensirionSHT3X_config.c	Fri Mar 06 17:03:18 2020 +0000
@@ -57,7 +57,7 @@
         .diagnostics = {
             .disableGlobalDiag = true,
             .disableMeasurementDiag = true,
-            .osdFrequency = 0,
+            .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
         },
         .channels = {
             [ADMW1001_CH_ID_DIG_I2C_0] = {
@@ -67,7 +67,7 @@
                 .compensationChannel = ADMW1001_CH_ID_NONE,
                 .measurementUnit = ADMW1001_MEASUREMENT_UNIT_UNSPECIFIED,
                 .measurementsPerCycle = 1,
-                .extraSettlingTime = 15,
+                .extraSettlingTime = 15000,
                 .i2cChannelConfig = {
                     .sensor = ADMW1001_I2C_SENSOR_HUMIDITY_B,
                 },
--- a/inc/admw1001/ADMW1001_REGISTERS.h	Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/ADMW1001_REGISTERS.h	Fri Mar 06 17:03:18 2020 +0000
@@ -1,7 +1,7 @@
 /* ================================================================================
  
      Created by   : 
-     Created on   : 2020 Jan 08, 12:45 GMT Standard Time
+     Created on   : 2019 Oct 08, 09:43 GMT Daylight Time
 
      Project      :   ADMW1001_REGISTERS
      File         :   ADMW1001_REGISTERS.h
@@ -10,7 +10,7 @@
      !! ADI Confidential !!
        INTERNAL USE ONLY
 
-     Copyright (c) 2020 Analog Devices, Inc.  All Rights Reserved.
+     Copyright (c) 2019 Analog Devices, Inc.  All Rights Reserved.
      This software is proprietary and confidential to Analog Devices, Inc. and
      its licensors.
 
@@ -262,8 +262,6 @@
 #define REG_CORE_EXTERNAL_REFERENCE_RESISTOR 0x00000050            /*  CORE External Reference Resistor Value */
 #define REG_CORE_EXTERNAL_VOLTAGE_REFERENCE_RESET 0x3F99999A            /*      Reset Value for External_Voltage_Reference  */
 #define REG_CORE_EXTERNAL_VOLTAGE_REFERENCE  0x00000054            /*  CORE External Reference Information */
-#define REG_CORE_AVDD_VOLTAGE_RESET          0x40533333            /*      Reset Value for AVDD_Voltage  */
-#define REG_CORE_AVDD_VOLTAGE                0x00000058            /*  CORE AVDD Voltage */
 #define REG_CORE_DIAGNOSTICS_CONTROL_RESET   0x00000000            /*      Reset Value for Diagnostics_Control  */
 #define REG_CORE_DIAGNOSTICS_CONTROL         0x0000005C            /*  CORE Diagnostic Control */
 #define REG_CORE_DATA_FIFO_RESET             0x00000000            /*      Reset Value for Data_FIFO  */
@@ -279,7 +277,7 @@
 #define REG_CORE_LUT_DATA_RESET              0x00000000            /*      Reset Value for LUT_Data  */
 #define REG_CORE_LUT_DATA                    0x00000074            /*  CORE Data to Read/Write from Addressed LUT Entry */
 #define REG_CORE_REVISION_RESET              0x01000000            /*      Reset Value for Revision  */
-#define REG_CORE_REVISION                    0x0000008A            /*  CORE Hardware, Firmware Revision */
+#define REG_CORE_REVISION                    0x0000008C            /*  CORE Hardware, Firmware Revision */
 #define REG_CORE_CHANNEL_COUNTn_RESET        0x00000000            /*      Reset Value for Channel_Count[n]  */
 #define REG_CORE_CHANNEL_COUNT0_RESET        0x00000000            /*      Reset Value for REG_CORE_CHANNEL_COUNT0  */
 #define REG_CORE_CHANNEL_COUNT1_RESET        0x00000000            /*      Reset Value for REG_CORE_CHANNEL_COUNT1  */
@@ -582,6 +580,8 @@
 #define REG_CORE_SENSOR_GAIN8_RESET          0x3F800000            /*      Reset Value for REG_CORE_SENSOR_GAIN8  */
 #define REG_CORE_SENSOR_GAIN9_RESET          0x3F800000            /*      Reset Value for REG_CORE_SENSOR_GAIN9  */
 #define REG_CORE_SENSOR_GAIN10_RESET         0x3F800000            /*      Reset Value for REG_CORE_SENSOR_GAIN10  */
+#define REG_CORE_SENSOR_GAIN11_RESET         0x3F800000            /*      Reset Value for REG_CORE_SENSOR_GAIN11  */
+#define REG_CORE_SENSOR_GAIN12_RESET         0x3F800000            /*      Reset Value for REG_CORE_SENSOR_GAIN12  */
 #define REG_CORE_SENSOR_GAIN0                0x000000AC            /*  CORE Sensor Gain Adjustment */
 #define REG_CORE_SENSOR_GAIN1                0x000000EC            /*  CORE Sensor Gain Adjustment */
 #define REG_CORE_SENSOR_GAIN2                0x0000012C            /*  CORE Sensor Gain Adjustment */
@@ -593,8 +593,10 @@
 #define REG_CORE_SENSOR_GAIN8                0x000002AC            /*  CORE Sensor Gain Adjustment */
 #define REG_CORE_SENSOR_GAIN9                0x000002EC            /*  CORE Sensor Gain Adjustment */
 #define REG_CORE_SENSOR_GAIN10               0x0000032C            /*  CORE Sensor Gain Adjustment */
+#define REG_CORE_SENSOR_GAIN11               0x0000036C            /*  CORE Sensor Gain Adjustment */
+#define REG_CORE_SENSOR_GAIN12               0x000003AC            /*  CORE Sensor Gain Adjustment */
 #define REG_CORE_SENSOR_GAINn(i)             (REG_CORE_SENSOR_GAIN0 + ((i) * 64))
-#define REG_CORE_SENSOR_GAINn_COUNT          11
+#define REG_CORE_SENSOR_GAINn_COUNT          13
 #define REG_CORE_CHANNEL_SKIPn_RESET         0x00000000            /*      Reset Value for Channel_Skip[n]  */
 #define REG_CORE_CHANNEL_SKIP0_RESET         0x00000000            /*      Reset Value for REG_CORE_CHANNEL_SKIP0  */
 #define REG_CORE_CHANNEL_SKIP1_RESET         0x00000000            /*      Reset Value for REG_CORE_CHANNEL_SKIP1  */
@@ -624,35 +626,6 @@
 #define REG_CORE_CHANNEL_SKIP12              0x000003B2            /*  CORE Indicates If Channel Will Skip Some Measurement Cycles */
 #define REG_CORE_CHANNEL_SKIPn(i)            (REG_CORE_CHANNEL_SKIP0 + ((i) * 64))
 #define REG_CORE_CHANNEL_SKIPn_COUNT         13
-#define REG_CORE_SENSOR_PARAMETERn_RESET     0x7FC00000            /*      Reset Value for Sensor_Parameter[n]  */
-#define REG_CORE_SENSOR_PARAMETER0_RESET     0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER0  */
-#define REG_CORE_SENSOR_PARAMETER1_RESET     0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER1  */
-#define REG_CORE_SENSOR_PARAMETER2_RESET     0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER2  */
-#define REG_CORE_SENSOR_PARAMETER3_RESET     0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER3  */
-#define REG_CORE_SENSOR_PARAMETER4_RESET     0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER4  */
-#define REG_CORE_SENSOR_PARAMETER5_RESET     0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER5  */
-#define REG_CORE_SENSOR_PARAMETER6_RESET     0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER6  */
-#define REG_CORE_SENSOR_PARAMETER7_RESET     0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER7  */
-#define REG_CORE_SENSOR_PARAMETER8_RESET     0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER8  */
-#define REG_CORE_SENSOR_PARAMETER9_RESET     0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER9  */
-#define REG_CORE_SENSOR_PARAMETER10_RESET    0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER10  */
-#define REG_CORE_SENSOR_PARAMETER11_RESET    0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER11  */
-#define REG_CORE_SENSOR_PARAMETER12_RESET    0x7FC00000            /*      Reset Value for REG_CORE_SENSOR_PARAMETER12  */
-#define REG_CORE_SENSOR_PARAMETER0           0x000000B4            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER1           0x000000F4            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER2           0x00000134            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER3           0x00000174            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER4           0x000001B4            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER5           0x000001F4            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER6           0x00000234            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER7           0x00000274            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER8           0x000002B4            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER9           0x000002F4            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER10          0x00000334            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER11          0x00000374            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETER12          0x000003B4            /*  CORE Sensor Parameter Adjustment */
-#define REG_CORE_SENSOR_PARAMETERn(i)        (REG_CORE_SENSOR_PARAMETER0 + ((i) * 64))
-#define REG_CORE_SENSOR_PARAMETERn_COUNT     13
 #define REG_CORE_DIGITAL_SENSOR_CONFIGn_RESET 0x00000000            /*      Reset Value for Digital_Sensor_Config[n]  */
 #define REG_CORE_DIGITAL_SENSOR_CONFIG0_RESET 0x00000000            /*      Reset Value for REG_CORE_DIGITAL_SENSOR_CONFIG0  */
 #define REG_CORE_DIGITAL_SENSOR_CONFIG1_RESET 0x00000000            /*      Reset Value for REG_CORE_DIGITAL_SENSOR_CONFIG1  */
@@ -782,24 +755,16 @@
 /* -------------------------------------------------------------------------------------------------------------------------
           CORE_CYCLE_CONTROL                   Pos/Masks         Description
    ------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_CYCLE_CONTROL_PST_MEAS_EXC_CTRL 15            /*  Disable Current Sources After Measurement Completes */
 #define BITP_CORE_CYCLE_CONTROL_CYCLE_TIME_UNITS 14            /*  Units for Cycle Time */
 #define BITP_CORE_CYCLE_CONTROL_VBIAS        13            /*  Voltage Bias Global Enable */
-#define BITP_CORE_CYCLE_CONTROL_GND_SW_CTRL  12            /*  Ground Switch Cycle Control */
 #define BITP_CORE_CYCLE_CONTROL_CYCLE_TIME    0            /*  Time Between Measurement Cycles */
-#define BITM_CORE_CYCLE_CONTROL_PST_MEAS_EXC_CTRL 0x00008000    /*  Disable Current Sources After Measurement Completes */
 #define BITM_CORE_CYCLE_CONTROL_CYCLE_TIME_UNITS 0x00004000    /*  Units for Cycle Time */
 #define BITM_CORE_CYCLE_CONTROL_VBIAS        0x00002000    /*  Voltage Bias Global Enable */
-#define BITM_CORE_CYCLE_CONTROL_GND_SW_CTRL  0x00001000    /*  Ground Switch Cycle Control */
 #define BITM_CORE_CYCLE_CONTROL_CYCLE_TIME   0x00000FFF    /*  Time Between Measurement Cycles */
-#define ENUM_CORE_CYCLE_CONTROL_POWERCYCLE   0x00000000
-#define ENUM_CORE_CYCLE_CONTROL_ALWAYSON     0x00008000
 #define ENUM_CORE_CYCLE_CONTROL_MILLISECONDS 0x00000000            /*  Cycle_Time_Units: Milli-seconds */
 #define ENUM_CORE_CYCLE_CONTROL_SECONDS      0x00004000            /*  Cycle_Time_Units: Seconds */
 #define ENUM_CORE_CYCLE_CONTROL_VBIAS_DISABLE 0x00000000            /*  Vbias: Vbias disabled */
 #define ENUM_CORE_CYCLE_CONTROL_VBIAS_ENABLE 0x00002000            /*  Vbias: Enable Vbias output for the duration of a cycle */
-#define ENUM_CORE_CYCLE_CONTROL_CLOSE_SW     0x00000000            /*  GND_SW_CTRL: Ground Switch Closed */
-#define ENUM_CORE_CYCLE_CONTROL_CYCLE_SW     0x00001000            /*  GND_SW_CTRL: Ground Switch Opens outside of measurement cycle to conserve power */
 
 /* -------------------------------------------------------------------------------------------------------------------------
           CORE_FIFO_NUM_CYCLES                 Pos/Masks         Description
@@ -896,18 +861,16 @@
 #define BITM_CORE_EXTERNAL_VOLTAGE_REFERENCE_EXT_REFIN2_VALUE 0xFFFFFFFF    /*  Reference Input Value */
 
 /* -------------------------------------------------------------------------------------------------------------------------
-          CORE_AVDD_VOLTAGE                    Pos/Masks         Description
-   ------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_AVDD_VOLTAGE_AVDD_VOLTAGE   0            /*  AVDD Voltage */
-#define BITM_CORE_AVDD_VOLTAGE_AVDD_VOLTAGE  0xFFFFFFFF    /*  AVDD Voltage */
-
-/* -------------------------------------------------------------------------------------------------------------------------
           CORE_DIAGNOSTICS_CONTROL             Pos/Masks         Description
    ------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_DIAGNOSTICS_CONTROL_DIAG_OSD_FREQ  1            /*  Diagnostics Sensor Detect Frequency */
+#define BITP_CORE_DIAGNOSTICS_CONTROL_DIAG_OSD_FREQ  1            /*  Diagnostics Open Sensor Detect Frequency */
 #define BITP_CORE_DIAGNOSTICS_CONTROL_DIAG_MEAS_EN  0            /*  Diagnostics Measure Enable */
-#define BITM_CORE_DIAGNOSTICS_CONTROL_DIAG_OSD_FREQ 0x000000FE    /*  Diagnostics Sensor Detect Frequency */
+#define BITM_CORE_DIAGNOSTICS_CONTROL_DIAG_OSD_FREQ 0x00000006    /*  Diagnostics Open Sensor Detect Frequency */
 #define BITM_CORE_DIAGNOSTICS_CONTROL_DIAG_MEAS_EN 0x00000001    /*  Diagnostics Measure Enable */
+#define ENUM_CORE_DIAGNOSTICS_CONTROL_OCD_OFF 0x00000000            /*  Diag_OSD_Freq: No Open-Circuit Detection During Measurement */
+#define ENUM_CORE_DIAGNOSTICS_CONTROL_OCD_PER_1_CYCLE 0x00000002            /*  Diag_OSD_Freq: Open-Circuit Detection Performed Once Per Measurement Cycle */
+#define ENUM_CORE_DIAGNOSTICS_CONTROL_OCD_PER_10_CYCLES 0x00000004            /*  Diag_OSD_Freq: Open-Circuit Detection Performed Once Per Ten Measurement Cycles */
+#define ENUM_CORE_DIAGNOSTICS_CONTROL_OCD_PER_100_CYCLES 0x00000006            /*  Diag_OSD_Freq: Open-Circuit Detection Performed Once Per Hundred Measurement Cycles */
 
 /* -------------------------------------------------------------------------------------------------------------------------
           CORE_DATA_FIFO                       Pos/Masks         Description
@@ -939,7 +902,7 @@
           CORE_LUT_OFFSET                      Pos/Masks         Description
    ------------------------------------------------------------------------------------------------------------------------- */
 #define BITP_CORE_LUT_OFFSET_LUT_OFFSET       0            /*  Offset into the Lookup Table */
-#define BITM_CORE_LUT_OFFSET_LUT_OFFSET      0x000007FF    /*  Offset into the Lookup Table */
+#define BITM_CORE_LUT_OFFSET_LUT_OFFSET      0x00003FFF    /*  Offset into the Lookup Table */
 
 /* -------------------------------------------------------------------------------------------------------------------------
           CORE_LUT_DATA                        Pos/Masks         Description
@@ -986,7 +949,6 @@
 #define ENUM_CORE_SENSOR_TYPE_RTD_4W_PT100   0x00000060            /*  Sensor_Type: RTD 4 wire PT100 sensor */
 #define ENUM_CORE_SENSOR_TYPE_RTD_4W_PT1000  0x00000061            /*  Sensor_Type: RTD 4 wire PT1000 sensor */
 #define ENUM_CORE_SENSOR_TYPE_BRIDGE_4W      0x000000A9            /*  Sensor_Type: Bridge 4 wire sensor */
-#define ENUM_CORE_SENSOR_TYPE_VOLTAGE        0x00000200            /*  Sensor_Type: Voltage Input */
 #define ENUM_CORE_SENSOR_TYPE_CUSTOM1        0x00000400            /*  Sensor_Type: Custom1 */
 #define ENUM_CORE_SENSOR_TYPE_I2C_HUMIDITY_B 0x00000841            /*  Sensor_Type: I2C humidity sensor B */
 #define ENUM_CORE_SENSOR_TYPE_SENSOR_RESERVED_1 0x00000FE0            /*  Sensor_Type: RESERVED. NOT TO BE USED */
@@ -1038,18 +1000,8 @@
 /* -------------------------------------------------------------------------------------------------------------------------
           CORE_CHANNEL_EXCITATION[n]           Pos/Masks         Description
    ------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_CHANNEL_EXCITATION_IOUT_DIODE_RATIO  6            /*  Modify Current Ratios Used for Diode Sensor */
 #define BITP_CORE_CHANNEL_EXCITATION_IOUT_EXCITATION_CURRENT  0            /*  Current Source Value */
-#define BITM_CORE_CHANNEL_EXCITATION_IOUT_DIODE_RATIO 0x000001C0    /*  Modify Current Ratios Used for Diode Sensor */
 #define BITM_CORE_CHANNEL_EXCITATION_IOUT_EXCITATION_CURRENT 0x0000000F    /*  Current Source Value */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_2PT_10UA_100UA 0x00000000            /*  IOUT_Diode_Ratio: 2 Current measurement 10uA 100uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_2PT_20UA_160UA 0x00000040            /*  IOUT_Diode_Ratio: 2 Current measurement 20uA 160uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_2PT_50UA_300UA 0x00000080            /*  IOUT_Diode_Ratio: 2 Current measurement 50uA 300uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_2PT_100UA_600UA 0x000000C0            /*  IOUT_Diode_Ratio: 2 Current measurement 100uA 600uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_3PT_10UA_50UA_100UA 0x00000100            /*  IOUT_Diode_Ratio: 3 current measuremet 10uA 50uA 100uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_3PT_20UA_100UA_160UA 0x00000140            /*  IOUT_Diode_Ratio: 3 current measuremet 20uA 100uA 160uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_3PT_50UA_150UA_300UA 0x00000180            /*  IOUT_Diode_Ratio: 3 current measuremet 50uA 150uA 300uA */
-#define ENUM_CORE_CHANNEL_EXCITATION_DIODE_3PT_100UA_300UA_600UA 0x000001C0            /*  IOUT_Diode_Ratio: 3 current measuremet 100uA 300uA 600uA */
 #define ENUM_CORE_CHANNEL_EXCITATION_NONE    0x00000000            /*  IOUT_Excitation_Current: Excitation Current Disabled */
 #define ENUM_CORE_CHANNEL_EXCITATION_RESERVED 0x00000001            /*  IOUT_Excitation_Current: Reserved */
 #define ENUM_CORE_CHANNEL_EXCITATION_IEXC_10UA 0x00000002            /*  IOUT_Excitation_Current: 10 \mu;A */
@@ -1068,32 +1020,40 @@
 #define BITP_CORE_SETTLING_TIME_SETTLING_TIME  0            /*  Settling Time to Allow When Switching to Channel */
 #define BITM_CORE_SETTLING_TIME_SETTLING_TIME_UNITS 0x0000C000    /*  Units for Settling Time */
 #define BITM_CORE_SETTLING_TIME_SETTLING_TIME 0x00003FFF    /*  Settling Time to Allow When Switching to Channel */
-#define ENUM_CORE_SETTLING_TIME_MILLISECONDS 0x00000000            /*  Settling_Time_Units: Micro-seconds */
-#define ENUM_CORE_SETTLING_TIME_SECONDS      0x00004000            /*  Settling_Time_Units: Milli-seconds */
-#define ENUM_CORE_SETTLING_TIME_RESERVED     0x00008000            /*  Settling_Time_Units: Seconds */
+#define ENUM_CORE_SETTLING_TIME_MICROSECONDS 0x00000000            /*  Settling_Time_Units: Micro-seconds */
+#define ENUM_CORE_SETTLING_TIME_MILLISECONDS 0x00004000            /*  Settling_Time_Units: Milli-seconds */
+#define ENUM_CORE_SETTLING_TIME_SECONDS      0x00008000            /*  Settling_Time_Units: Seconds */
 #define ENUM_CORE_SETTLING_TIME_UNDEFINED    0x0000C000            /*  Settling_Time_Units: Undefined */
 
 /* -------------------------------------------------------------------------------------------------------------------------
           CORE_MEASUREMENT_SETUP[n]            Pos/Masks         Description
    ------------------------------------------------------------------------------------------------------------------------- */
 #define BITP_CORE_MEASUREMENT_SETUP_BUFFER_BYPASS 15            /*  Disable Buffers */
+#define BITP_CORE_MEASUREMENT_SETUP_GND_SW   13            /*  Ground Switch Selection */
 #define BITP_CORE_MEASUREMENT_SETUP_ADC_FILTER_TYPE 12            /*  ADC Digital Filter Type */
 #define BITP_CORE_MEASUREMENT_SETUP_CHOP_MODE 10            /*  Enabled and Disable Chop Mode */
+#define BITP_CORE_MEASUREMENT_SETUP_PST_MEAS_EXC_CTRL  9            /*  Disable Current Sources After Measurement Completes */
 #define BITP_CORE_MEASUREMENT_SETUP_NOTCH_EN_2  8            /*  Enable Notch 2 Filter Mode */
 #define BITP_CORE_MEASUREMENT_SETUP_ADC_SF    0            /*  ADC Digital Filter Speed */
 #define BITM_CORE_MEASUREMENT_SETUP_BUFFER_BYPASS 0x00008000    /*  Disable Buffers */
+#define BITM_CORE_MEASUREMENT_SETUP_GND_SW   0x00006000    /*  Ground Switch Selection */
 #define BITM_CORE_MEASUREMENT_SETUP_ADC_FILTER_TYPE 0x00001000    /*  ADC Digital Filter Type */
 #define BITM_CORE_MEASUREMENT_SETUP_CHOP_MODE 0x00000C00    /*  Enabled and Disable Chop Mode */
+#define BITM_CORE_MEASUREMENT_SETUP_PST_MEAS_EXC_CTRL 0x00000200    /*  Disable Current Sources After Measurement Completes */
 #define BITM_CORE_MEASUREMENT_SETUP_NOTCH_EN_2 0x00000100    /*  Enable Notch 2 Filter Mode */
 #define BITM_CORE_MEASUREMENT_SETUP_ADC_SF   0x0000007F    /*  ADC Digital Filter Speed */
 #define ENUM_CORE_MEASUREMENT_SETUP_BUFFERS_ENABLED 0x00000000            /*  Buffer_Bypass: Input buffers enabled */
 #define ENUM_CORE_MEASUREMENT_SETUP_BUFFERS_DISABLED 0x00008000            /*  Buffer_Bypass: Input buffers disabled */
+#define ENUM_CORE_MEASUREMENT_SETUP_GND_SW_OPEN 0x00000000            /*  GND_SW: GND_SW Open. The ground switch is not enabled for the sensor measurement */
+#define ENUM_CORE_MEASUREMENT_SETUP_GND_SW_CLOSED 0x00002000            /*  GND_SW: GND_SW Closed. The ground switch is enabled for the sensor measurement, bit wiil Remain Closed After the Measurement */
 #define ENUM_CORE_MEASUREMENT_SETUP_ENABLE_SINC4 0x00000000            /*  ADC_Filter_Type: Enabled SINC4 filter */
 #define ENUM_CORE_MEASUREMENT_SETUP_ENABLE_SINC3 0x00001000            /*  ADC_Filter_Type: Enabled SINC3 filter */
 #define ENUM_CORE_MEASUREMENT_SETUP_DISABLE_CHOP 0x00000000            /*  Chop_Mode: ADC front end chopping disabled */
 #define ENUM_CORE_MEASUREMENT_SETUP_HW_CHOP  0x00000400            /*  Chop_Mode: Hardware chopping enabled */
 #define ENUM_CORE_MEASUREMENT_SETUP_SW_CHOP  0x00000800            /*  Chop_Mode: SW chop enabled */
 #define ENUM_CORE_MEASUREMENT_SETUP_HW_SW_CHOP 0x00000C00            /*  Chop_Mode: Hardware and software chop enabled */
+#define ENUM_CORE_MEASUREMENT_SETUP_POWERCYCLE 0x00000000
+#define ENUM_CORE_MEASUREMENT_SETUP_ALWAYSON 0x00000200
 #define ENUM_CORE_MEASUREMENT_SETUP_NOTCH_DIS 0x00000000            /*  NOTCH_EN_2: Disable notch filter */
 #define ENUM_CORE_MEASUREMENT_SETUP_NOTCH_EN 0x00000100            /*  NOTCH_EN_2: Enable notch 2 filter option. */
 
@@ -1110,12 +1070,6 @@
 #define BITM_CORE_LOW_THRESHOLD_LIMIT_LOW_THRESHOLD 0xFFFFFFFF    /*  Lower Limit for Sensor Alert Comparison */
 
 /* -------------------------------------------------------------------------------------------------------------------------
-          CORE_IDEALITY_FACTOR[n]              Pos/Masks         Description
-   ------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_IDEALITY_FACTOR_IDEALITY_FACTOR  0            /*  Diode Ideality Factor, Default 1.003. */
-#define BITM_CORE_IDEALITY_FACTOR_IDEALITY_FACTOR 0xFFFFFFFF    /*  Diode Ideality Factor, Default 1.003. */
-
-/* -------------------------------------------------------------------------------------------------------------------------
           CORE_SENSOR_OFFSET[n]                Pos/Masks         Description
    ------------------------------------------------------------------------------------------------------------------------- */
 #define BITP_CORE_SENSOR_OFFSET_SENSOR_OFFSET  0            /*  Sensor Offset Adjustment */
@@ -1134,12 +1088,6 @@
 #define BITM_CORE_CHANNEL_SKIP_CHANNEL_SKIP  0x000000FF    /*  Indicates If Channel Will Skip Some Measurement Cycles */
 
 /* -------------------------------------------------------------------------------------------------------------------------
-          CORE_SENSOR_PARAMETER[n]             Pos/Masks         Description
-   ------------------------------------------------------------------------------------------------------------------------- */
-#define BITP_CORE_SENSOR_PARAMETER_SENSOR_PARAMETER  0            /*  Sensor Parameter Adjustment */
-#define BITM_CORE_SENSOR_PARAMETER_SENSOR_PARAMETER 0xFFFFFFFF    /*  Sensor Parameter Adjustment */
-
-/* -------------------------------------------------------------------------------------------------------------------------
           CORE_DIGITAL_SENSOR_CONFIG[n]        Pos/Masks         Description
    ------------------------------------------------------------------------------------------------------------------------- */
 #define BITP_CORE_DIGITAL_SENSOR_CONFIG_DIGITAL_SENSOR_DATA_BITS 11            /*  Number of Relevant Data Bits */
--- a/inc/admw1001/ADMW1001_REGISTERS_typedefs.h	Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/ADMW1001_REGISTERS_typedefs.h	Fri Mar 06 17:03:18 2020 +0000
@@ -1,7 +1,7 @@
 /* ================================================================================
  
      Created by   : 
-     Created on   : 2020 Jan 15, 14:45 GMT Standard Time
+     Created on   : 2019 Oct 08, 09:43 GMT Daylight Time
 
      Project      :   ADMW1001_REGISTERS
      File         :   ADMW1001_REGISTERS_typedefs.h
@@ -10,7 +10,7 @@
      !! ADI Confidential !!
        INTERNAL USE ONLY
 
-     Copyright (c) 2020 Analog Devices, Inc.  All Rights Reserved.
+     Copyright (c) 2019 Analog Devices, Inc.  All Rights Reserved.
      This software is proprietary and confidential to Analog Devices, Inc. and
      its licensors.
 
@@ -71,6 +71,38 @@
 
 /*@}*/
 
+/** @defgroup Interface_Config_B Interface Configuration B (Interface_Config_B) Register
+ *  Interface Configuration B (Interface_Config_B) Register.
+ *  @{
+ */
+
+/*  =========================================================================
+ *! \enum   ADMW_SPI_Interface_Config_B_Single_Inst
+ *! \brief  Select Streaming or Single Instruction Mode (Single_Inst) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  SPI_INTERFACE_CONFIG_B_STREAMING_MODE          = 0,  /**< Streaming mode is enabled          */
+  SPI_INTERFACE_CONFIG_B_SINGLE_INSTRUCTION_MODE = 1   /**< Single Instruction mode is enabled */
+} ADMW_SPI_Interface_Config_B_Single_Inst;
+
+
+/* ==========================================================================
+ *! \struct ADMW_SPI_Interface_Config_B_Struct
+ *! \brief  Interface Configuration B Register bit field structure
+ * ========================================================================== */
+typedef struct _ADMW_SPI_Interface_Config_B_t {
+  union {
+    struct {
+      uint8_t reserved0   :  7;
+      uint8_t Single_Inst :  1;  /**< Select Streaming or Single Instruction Mode */
+    };
+    uint8_t VALUE8;
+  };
+} ADMW_SPI_Interface_Config_B_t;
+
+/*@}*/
+
 /** @defgroup Chip_Type Chip Type (Chip_Type) Register
  *  Chip Type (Chip_Type) Register.
  *  @{
@@ -104,7 +136,8 @@
 typedef struct _ADMW_SPI_Product_ID_L_t {
   union {
     struct {
-      uint8_t Product_ID :  8;  /**< Product_ID[7:0] The Device Chip Type and Family */
+      uint8_t Product_ID_Trim_Bits :  4;  /**< These Bits Vary on Die Configured for Multiple Generics */
+      uint8_t Product_ID_Fixed_Bits :  4;  /**< Product_ID_Fixed_Bits[3:0] These Bits are Fixed on Die Configured for Multiple Generics */
     };
     uint8_t VALUE8;
   };
@@ -124,7 +157,7 @@
 typedef struct _ADMW_SPI_Product_ID_H_t {
   union {
     struct {
-      uint8_t Product_ID :  8;  /**< Product_ID[15:8] The Device Chip Type and Family */
+      uint8_t Product_ID_Fixed_Bits :  8;  /**< Product_ID_Fixed_Bits[11:4] These Bits are Fixed on Die Configured for Multiple Generics */
     };
     uint8_t VALUE8;
   };
@@ -132,6 +165,27 @@
 
 /*@}*/
 
+/** @defgroup Chip_Grade Chip Grade (Chip_Grade) Register
+ *  Chip Grade (Chip_Grade) Register.
+ *  @{
+ */
+
+/* ==========================================================================
+ *! \struct ADMW_SPI_Chip_Grade_Struct
+ *! \brief  Chip Grade Register bit field structure
+ * ========================================================================== */
+typedef struct _ADMW_SPI_Chip_Grade_t {
+  union {
+    struct {
+      uint8_t Device_Revision :  4;  /**< Device Hardware Revision */
+      uint8_t Grade           :  4;  /**< Device Performance Grade */
+    };
+    uint8_t VALUE8;
+  };
+} ADMW_SPI_Chip_Grade_t;
+
+/*@}*/
+
 /** @defgroup Scratch_Pad Scratch Pad (Scratch_Pad) Register
  *  Scratch Pad (Scratch_Pad) Register.
  *  @{
@@ -254,6 +308,85 @@
 
 /*@}*/
 
+/** @defgroup Transfer_Config Transfer Config (Transfer_Config) Register
+ *  Transfer Config (Transfer_Config) Register.
+ *  @{
+ */
+
+/*  =========================================================================
+ *! \enum   ADMW_SPI_Transfer_Config_Stream_Mode
+ *! \brief  When Streaming, Control Master to Slave Transfer (Stream_Mode) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  SPI_TRANSFER_CONFIG_UPDATE_ON_WRITE        = 0,  /**< Transfers after each byte/mulit-byte register */
+  SPI_TRANSFER_CONFIG_UPDATE_ON_ADDRESS_LOOP = 1   /**< Transfers when address loops                  */
+} ADMW_SPI_Transfer_Config_Stream_Mode;
+
+
+/* ==========================================================================
+ *! \struct ADMW_SPI_Transfer_Config_Struct
+ *! \brief  Transfer Config Register bit field structure
+ * ========================================================================== */
+typedef struct _ADMW_SPI_Transfer_Config_t {
+  union {
+    struct {
+      uint8_t reserved0   :  1;
+      uint8_t Stream_Mode :  1;  /**< When Streaming, Control Master to Slave Transfer */
+      uint8_t reserved2   :  6;
+    };
+    uint8_t VALUE8;
+  };
+} ADMW_SPI_Transfer_Config_t;
+
+/*@}*/
+
+/** @defgroup Interface_Config_C Interface Configuration C (Interface_Config_C) Register
+ *  Interface Configuration C (Interface_Config_C) Register.
+ *  @{
+ */
+
+/*  =========================================================================
+ *! \enum   ADMW_SPI_Interface_Config_C_Strict_Register_Access
+ *! \brief  Multibyte Registers Must Be Read or Written in Full (Strict_Register_Access) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  SPI_INTERFACE_CONFIG_C_NORMAL_ACCESS = 0,  /**< Normal mode, no access restrictions                              */
+  SPI_INTERFACE_CONFIG_C_STRICT_ACCESS = 1   /**< Strict mode, multi-byte registers require all bytes read/written */
+} ADMW_SPI_Interface_Config_C_Strict_Register_Access;
+
+
+/*  =========================================================================
+ *! \enum   ADMW_SPI_Interface_Config_C_CRC_Enable
+ *! \brief  CRC Enable (CRC_Enable) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  SPI_INTERFACE_CONFIG_C_DISABLED = 0,  /**< CRC Disabled */
+  SPI_INTERFACE_CONFIG_C_ENABLED  = 1   /**< CRC Enabled  */
+} ADMW_SPI_Interface_Config_C_CRC_Enable;
+
+
+/* ==========================================================================
+ *! \struct ADMW_SPI_Interface_Config_C_Struct
+ *! \brief  Interface Configuration C Register bit field structure
+ * ========================================================================== */
+typedef struct _ADMW_SPI_Interface_Config_C_t {
+  union {
+    struct {
+      uint8_t CRC_EnableB :  2;  /**< Inverted CRC Enable */
+      uint8_t reserved2   :  2;
+      uint8_t Send_Status :  1;  /**< Sends Status in 4-Wire Mode When Enabled */
+      uint8_t Strict_Register_Access :  1;  /**< Multibyte Registers Must Be Read or Written in Full */
+      uint8_t CRC_Enable             :  2;  /**< CRC Enable */
+    };
+    uint8_t VALUE8;
+  };
+} ADMW_SPI_Interface_Config_C_t;
+
+/*@}*/
+
 /** @defgroup Interface_Status_A Interface Status A (Interface_Status_A) Register
  *  Interface Status A (Interface_Status_A) Register.
  *  @{
@@ -297,6 +430,7 @@
   CORE_COMMAND_LATCH_CONFIG     = 7,   /**< Latch configuration.                           */
   CORE_COMMAND_LOAD_LUT         = 8,   /**< Load LUT from flash                            */
   CORE_COMMAND_SAVE_LUT         = 9,   /**< Save LUT to flash                              */
+  CORE_COMMAND_POWER_DOWN        = 20,  /**< Enter Low Power State                                             */
   CORE_COMMAND_LOAD_CONFIG_1    = 24,  /**< Load registers with configuration from flash   */
   CORE_COMMAND_SAVE_CONFIG_1    = 25   /**< Store current registers to flash configuration */
 } ADMW_CORE_Command_Special_Command;
@@ -341,8 +475,7 @@
 typedef enum
 {
   CORE_MODE_DRDY_PER_CONVERSION = 0,  /**< Data ready per conversion */
-  CORE_MODE_DRDY_PER_CYCLE      = 1,  /**< Data ready per cycle      */
-  CORE_MODE_DRDY_PER_FIFO_FILL  = 2
+  CORE_MODE_DRDY_PER_CYCLE      = 1   /**< Data ready per cycle      */
 } ADMW_CORE_Mode_Drdy_Mode;
 
 
@@ -401,17 +534,6 @@
  */
 
 /*  =========================================================================
- *! \enum   ADMW_CORE_Cycle_Control_GND_SW_CTRL
- *! \brief  Ground Switch Cycle Control (GND_SW_CTRL) Enumerations
- *  ========================================================================= */
-typedef enum
-{
-  CORE_CYCLE_CONTROL_OPEN_SW  = 0,  /**< Ground Switch Opens outside of measurement cycle to conserve power */
-  CORE_CYCLE_CONTROL_CLOSE_SW = 1   /**< Ground Switch Closed                                               */
-} ADMW_CORE_Cycle_Control_GND_SW_CTRL;
-
-
-/*  =========================================================================
  *! \enum   ADMW_CORE_Cycle_Control_Vbias
  *! \brief  Voltage Bias Global Enable (Vbias) Enumerations
  *  ========================================================================= */
@@ -433,17 +555,6 @@
 } ADMW_CORE_Cycle_Control_Cycle_Time_Units;
 
 
-/*  =========================================================================
- *! \enum   ADMW_CORE_Cycle_Control_PST_MEAS_EXC_CTRL
- *! \brief  Disable Current Sources After Measurement Completes (PST_MEAS_EXC_CTRL) Enumerations
- *  ========================================================================= */
-typedef enum
-{
-  CORE_CYCLE_CONTROL_POWERCYCLE = 0,  /**<  */
-  CORE_CYCLE_CONTROL_ALWAYSON   = 1   /**<  */
-} ADMW_CORE_Cycle_Control_PST_MEAS_EXC_CTRL;
-
-
 /* ==========================================================================
  *! \struct ADMW_CORE_Cycle_Control_Struct
  *! \brief  Measurement Cycle Register bit field structure
@@ -452,10 +563,10 @@
   union {
     struct {
       uint16_t Cycle_Time : 12;  /**< Time Between Measurement Cycles */
-      uint16_t GND_SW_CTRL :  1;  /**< Ground Switch Cycle Control */
-      uint16_t Vbias       :  1;  /**< Voltage Bias Global Enable */
+      uint16_t reserved12 :  1;
+      uint16_t Vbias      :  1;  /**< Voltage Bias Global Enable */
       uint16_t Cycle_Time_Units :  1;  /**< Units for Cycle Time */
-      uint16_t PST_MEAS_EXC_CTRL :  1;  /**< Disable Current Sources After Measurement Completes */
+      uint16_t reserved15       :  1;
     };
     uint16_t VALUE16;
   };
@@ -561,10 +672,9 @@
       uint16_t Sensor_OverRange   :  1;  /**< Indicates If the Sensor is Overrange */
       uint16_t CJ_Soft_Fault      :  1;  /**< Cold Junction Soft Fault */
       uint16_t CJ_Hard_Fault      :  1;  /**< Cold Junction Hard Fault */
-      uint16_t ADC_Input_OverRange : 1;  /**< Indicates the ADC Input is Overrange */
-      uint16_t Sensor_HardFault    : 1;  /**< Indicates Sensor Hard Fault */
-      uint16_t Threshold_Exceeded  : 1;      
-      uint16_t reserved7           :  7;
+      uint16_t ADC_Input_OverRange :  1;  /**< Indicates the ADC Input is Overrange */
+      uint16_t Sensor_HardFault    :  1;  /**< Indicates Sensor Hard Fault */
+      uint16_t reserved8           :  8;
     };
     uint16_t VALUE16;
   };
@@ -631,32 +741,24 @@
 } ADMW_CORE_External_Voltage_Reference_t;
 
 /*@}*/
-
-/** @defgroup AVDD_Voltage AVDD Voltage (AVDD_Voltage) Register
- *  AVDD Voltage (AVDD_Voltage) Register.
- *  @{
- */
-
-/* ==========================================================================
- *! \struct ADMW_CORE_AVDD_Voltage_Struct
- *! \brief  AVDD Voltage Register bit field structure
- * ========================================================================== */
-typedef struct _ADMW_CORE_AVDD_Voltage_t {
-  union {
-    struct {
-      float Avdd_Voltage;  /**< AVDD Voltage */
-    };
-    float VALUE32;
-  };
-} ADMW_CORE_AVDD_Voltage_t;
-
-/*@}*/
-
 /** @defgroup Diagnostics_Control Diagnostic Control (Diagnostics_Control) Register
  *  Diagnostic Control (Diagnostics_Control) Register.
  *  @{
  */
 
+/*  =========================================================================
+ *! \enum   ADMW_CORE_Diagnostics_Control_Diag_OSD_Freq
+ *! \brief  Diagnostics Open Sensor Detect Frequency (Diag_OSD_Freq) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  CORE_DIAGNOSTICS_CONTROL_OCD_OFF            = 0,  /**< No Open-Circuit Detection During Measurement                         */
+  CORE_DIAGNOSTICS_CONTROL_OCD_PER_1_CYCLE    = 1,  /**< Open-Circuit Detection Performed Once Per Measurement Cycle          */
+  CORE_DIAGNOSTICS_CONTROL_OCD_PER_10_CYCLES  = 2,  /**< Open-Circuit Detection Performed Once Per Ten Measurement Cycles     */
+  CORE_DIAGNOSTICS_CONTROL_OCD_PER_100_CYCLES = 3   /**< Open-Circuit Detection Performed Once Per Hundred Measurement Cycles */
+} ADMW_CORE_Diagnostics_Control_Diag_OSD_Freq;
+
+
 /* ==========================================================================
  *! \struct ADMW_CORE_Diagnostics_Control_Struct
  *! \brief  Diagnostic Control Register bit field structure
@@ -665,7 +767,8 @@
   union {
     struct {
       uint8_t Diag_Meas_En :  1;  /**< Diagnostics Measure Enable */
-      uint8_t Diag_OSD_Freq :  7;  /**< Diagnostics Open Sensor Detect Frequency */
+      uint8_t Diag_OSD_Freq :  2;  /**< Diagnostics Open Sensor Detect Frequency */
+      uint8_t reserved3     :  5;
     };
     uint8_t VALUE8;
   };
@@ -777,8 +880,8 @@
 typedef struct _ADMW_CORE_LUT_Offset_t {
   union {
     struct {
-      uint16_t LUT_Offset : 11;  /**< Offset into the Lookup Table */
-      uint16_t reserved11 :  5;
+      uint16_t LUT_Offset : 14;  /**< Offset into the Lookup Table */
+      uint16_t reserved14 :  2;
     };
     uint16_t VALUE16;
   };
@@ -891,7 +994,6 @@
   CORE_SENSOR_TYPE_RTD_4W_PT100      = 96,    /**< RTD 4 wire PT100 sensor    */
   CORE_SENSOR_TYPE_RTD_4W_PT1000     = 97,    /**< RTD 4 wire PT1000 sensor   */
   CORE_SENSOR_TYPE_BRIDGE_4W         = 169,   /**< Bridge 4 wire sensor       */
-  CORE_SENSOR_TYPE_VOLTAGE           = 512,   /**< Voltage Input              */
   CORE_SENSOR_TYPE_CUSTOM1           = 1024,  /**< Custom1                    */
   CORE_SENSOR_TYPE_I2C_HUMIDITY_B    = 2113,  /**< I2C humidity sensor B      */
   CORE_SENSOR_TYPE_SENSOR_RESERVED_1 = 4064,  /**< RESERVED. NOT TO BE USED   */
@@ -939,9 +1041,10 @@
  *  ========================================================================= */
 typedef enum
 {
-  CORE_SENSOR_DETAILS_LUT_DEFAULT  = 0,  /**< Default lookup table for selected sensor type */
-  CORE_SENSOR_DETAILS_LUT_CUSTOM   = 1,  /**< User defined custom lookup table.             */
-  CORE_SENSOR_DETAILS_LUT_RESERVED = 2   /**< Reserved                                      */
+  CORE_SENSOR_DETAILS_LUT_DEFAULT  = 0,  /**< Default lookup table for selected sensor type        */
+  CORE_SENSOR_DETAILS_LUT_UNITY    = 1,  /**< Unity lookup table. 1:1 mapping from input to output */
+  CORE_SENSOR_DETAILS_LUT_CUSTOM   = 2,  /**< User defined custom lookup table.                    */
+  CORE_SENSOR_DETAILS_LUT_RESERVED = 3   /**< Reserved                                             */
 } ADMW_CORE_Sensor_Details_LUT_Select;
 
 
@@ -1036,23 +1139,6 @@
 } ADMW_CORE_Channel_Excitation_IOUT_Excitation_Current;
 
 
-/*  =========================================================================
- *! \enum   ADMW_CORE_Channel_Excitation_IOUT_Diode_Ratio
- *! \brief  Modify Current Ratios Used for Diode Sensor (IOUT_Diode_Ratio) Enumerations
- *  ========================================================================= */
-typedef enum
-{
-  CORE_CHANNEL_EXCITATION_DIODE_2PT_10UA_100UA        = 0,  /**< 2 Current measurement 10uA 100uA       */
-  CORE_CHANNEL_EXCITATION_DIODE_2PT_20UA_160UA        = 1,  /**< 2 Current measurement 20uA 160uA       */
-  CORE_CHANNEL_EXCITATION_DIODE_2PT_50UA_300UA        = 2,  /**< 2 Current measurement 50uA 300uA       */
-  CORE_CHANNEL_EXCITATION_DIODE_2PT_100UA_600UA       = 3,  /**< 2 Current measurement 100uA 600uA      */
-  CORE_CHANNEL_EXCITATION_DIODE_3PT_10UA_50UA_100UA   = 4,  /**< 3 current measuremet 10uA 50uA 100uA   */
-  CORE_CHANNEL_EXCITATION_DIODE_3PT_20UA_100UA_160UA  = 5,  /**< 3 current measuremet 20uA 100uA 160uA  */
-  CORE_CHANNEL_EXCITATION_DIODE_3PT_50UA_150UA_300UA  = 6,  /**< 3 current measuremet 50uA 150uA 300uA  */
-  CORE_CHANNEL_EXCITATION_DIODE_3PT_100UA_300UA_600UA = 7   /**< 3 current measuremet 100uA 300uA 600uA */
-} ADMW_CORE_Channel_Excitation_IOUT_Diode_Ratio;
-
-
 /* ==========================================================================
  *! \struct ADMW_CORE_Channel_Excitation_Struct
  *! \brief  Excitation Current Register bit field structure
@@ -1061,9 +1147,7 @@
   union {
     struct {
       uint16_t IOUT_Excitation_Current :  4;  /**< Current Source Value */
-      uint16_t reserved4               :  2;
-      uint16_t IOUT_Diode_Ratio        :  3;  /**< Modify Current Ratios Used for Diode Sensor */
-      uint16_t reserved9               :  7;
+      uint16_t reserved4               : 12;
     };
     uint16_t VALUE16;
   };
@@ -1076,6 +1160,19 @@
  *  @{
  */
 
+/*  =========================================================================
+ *! \enum   ADMW_CORE_Settling_Time_Settling_Time_Units
+ *! \brief  Units for Settling Time (Settling_Time_Units) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  CORE_SETTLING_TIME_MICROSECONDS = 0,  /**< Micro-seconds */
+  CORE_SETTLING_TIME_MILLISECONDS = 1,  /**< Milli-seconds */
+  CORE_SETTLING_TIME_SECONDS      = 2,  /**< Seconds       */
+  CORE_SETTLING_TIME_UNDEFINED    = 3   /**< Undefined     */
+} ADMW_CORE_Settling_Time_Settling_Time_Units;
+
+
 /* ==========================================================================
  *! \struct ADMW_CORE_Settling_Time_Struct
  *! \brief  Settling Time Register bit field structure
@@ -1083,8 +1180,8 @@
 typedef struct _ADMW_CORE_Settling_Time_t {
   union {
     struct {
-      uint16_t Settling_Time :  8;  /**< Additional Settling Time in Milliseconds. Max 255ms */
-      uint16_t reserved8     :  8;
+      uint16_t Settling_Time : 14;  /**< Settling Time to Allow When Switching to Channel */
+      uint16_t Settling_Time_Units :  2;  /**< Units for Settling Time */
     };
     uint16_t VALUE16;
   };
@@ -1109,6 +1206,17 @@
 
 
 /*  =========================================================================
+ *! \enum   ADMW_CORE_Measurement_Setup_PST_MEAS_EXC_CTRL
+ *! \brief  Disable Current Sources After Measurement Completes (PST_MEAS_EXC_CTRL) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  CORE_MEASUREMENT_SETUP_POWERCYCLE = 0,  /**<  */
+  CORE_MEASUREMENT_SETUP_ALWAYSON   = 1   /**<  */
+} ADMW_CORE_Measurement_Setup_PST_MEAS_EXC_CTRL;
+
+
+/*  =========================================================================
  *! \enum   ADMW_CORE_Measurement_Setup_Chop_Mode
  *! \brief  Enabled and Disable Chop Mode (Chop_Mode) Enumerations
  *  ========================================================================= */
@@ -1133,6 +1241,17 @@
 
 
 /*  =========================================================================
+ *! \enum   ADMW_CORE_Measurement_Setup_GND_SW
+ *! \brief  Ground Switch Selection (GND_SW) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  CORE_MEASUREMENT_SETUP_GND_SW_OPEN   = 0,  /**< GND_SW Open. The ground switch is not enabled for the sensor measurement                                             */
+  CORE_MEASUREMENT_SETUP_GND_SW_CLOSED = 1   /**< GND_SW Closed. The ground switch is enabled for the sensor measurement, bit wiil Remain Closed After the Measurement */
+} ADMW_CORE_Measurement_Setup_GND_SW;
+
+
+/*  =========================================================================
  *! \enum   ADMW_CORE_Measurement_Setup_Buffer_Bypass
  *! \brief  Disable Buffers (Buffer_Bypass) Enumerations
  *  ========================================================================= */
@@ -1153,12 +1272,12 @@
       uint32_t ADC_SF     :  7;  /**< ADC Digital Filter Speed */
       uint32_t reserved7  :  1;
       uint32_t NOTCH_EN_2 :  1;  /**< Enable Notch 2 Filter Mode */
-      uint32_t reserved9  :  1;
-      uint32_t Chop_Mode  :  2;  /**< Enabled and Disable Chop Mode */
-      uint32_t ADC_Filter_Type :  1;  /**< ADC Digital Filter Type */
-      uint32_t reserved13      :  2;
-      uint32_t Buffer_Bypass   :  1;  /**< Disable Buffers */
-      uint32_t reserved16      : 16;
+      uint32_t PST_MEAS_EXC_CTRL :  1;  /**< Disable Current Sources After Measurement Completes */
+      uint32_t Chop_Mode         :  2;  /**< Enabled and Disable Chop Mode */
+      uint32_t ADC_Filter_Type   :  1;  /**< ADC Digital Filter Type */
+      uint32_t GND_SW            :  2;  /**< Ground Switch Selection */
+      uint32_t Buffer_Bypass     :  1;  /**< Disable Buffers */
+      uint32_t reserved16        : 16;
     };
     uint32_t VALUE32;
   };
@@ -1206,26 +1325,6 @@
 
 /*@}*/
 
-/** @defgroup Ideality_Factor Diode Ideality Factor Register (Ideality_Factor) Register
- *  Diode Ideality Factor Register (Ideality_Factor) Register.
- *  @{
- */
-
-/* ==========================================================================
- *! \struct ADMW_CORE_Ideality_Factor_Struct
- *! \brief  Diode Ideality Factor Register bit field structure
- * ========================================================================== */
-typedef struct _ADMW_CORE_Ideality_Factor_t {
-  union {
-    struct {
-      float32_t Ideality_Factor;  /**< Diode Ideality Factor, Default 1.003. */
-    };
-    float32_t VALUE32;
-  };
-} ADMW_CORE_Ideality_Factor_t;
-
-/*@}*/
-
 /** @defgroup Sensor_Offset Sensor Offset Adjustment (Sensor_Offset) Register
  *  Sensor Offset Adjustment (Sensor_Offset) Register.
  *  @{
@@ -1287,26 +1386,6 @@
 
 /*@}*/
 
-/** @defgroup Sensor_Parameter Sensor Parameter Adjustment (Sensor_Parameter) Register
- *  Sensor Parameter Adjustment (Sensor_Parameter) Register.
- *  @{
- */
-
-/* ==========================================================================
- *! \struct ADMW_CORE_Sensor_Parameter_Struct
- *! \brief  Sensor Parameter Adjustment Register bit field structure
- * ========================================================================== */
-typedef struct _ADMW_CORE_Sensor_Parameter_t {
-  union {
-    struct {
-      float Sensor_Parameter;  /**< Sensor Parameter Adjustment */
-    };
-    float VALUE32;
-  };
-} ADMW_CORE_Sensor_Parameter_t;
-
-/*@}*/
-
 /** @defgroup Digital_Sensor_Config Digital Sensor Data Coding (Digital_Sensor_Config) Register
  *  Digital Sensor Data Coding (Digital_Sensor_Config) Register.
  *  @{
@@ -1371,6 +1450,17 @@
  */
 
 /*  =========================================================================
+ *! \enum   ADMW_CORE_Digital_Sensor_Comms_Digital_Sensor_Comms_En
+ *! \brief  Enable Digital Sensor Communications Register Parameters (Digital_Sensor_Comms_En) Enumerations
+ *  ========================================================================= */
+typedef enum
+{
+  CORE_DIGITAL_SENSOR_COMMS_DIGITAL_COMMS_DEFAULT = 0,  /**< Default parameters used for digital sensor communications       */
+  CORE_DIGITAL_SENSOR_COMMS_DIGITAL_COMMS_USER    = 1   /**< User supplied parameters used for digital sensor communications */
+} ADMW_CORE_Digital_Sensor_Comms_Digital_Sensor_Comms_En;
+
+
+/*  =========================================================================
  *! \enum   ADMW_CORE_Digital_Sensor_Comms_SPI_Clock
  *! \brief  Controls Clock Frequency for SPI Sensors (SPI_Clock) Enumerations
  *  ========================================================================= */
@@ -1428,12 +1518,12 @@
 typedef struct _ADMW_CORE_Digital_Sensor_Comms_t {
   union {
     struct {
-      uint16_t reserved0  :  1;
-      uint16_t SPI_Clock  :  4;  /**< Controls Clock Frequency for SPI Sensors */
-      uint16_t I2C_Clock  :  2;  /**< Controls SCLK Frequency for I2C Sensors */
-      uint16_t reserved7  :  3;
-      uint16_t SPI_Mode   :  2;  /**< Configuration for Sensor SPI Protocol */
-      uint16_t reserved12 :  4;
+      uint16_t Digital_Sensor_Comms_En :  1;  /**< Enable Digital Sensor Communications Register Parameters */
+      uint16_t SPI_Clock               :  4;  /**< Controls Clock Frequency for SPI Sensors */
+      uint16_t I2C_Clock               :  2;  /**< Controls SCLK Frequency for I2C Sensors */
+      uint16_t reserved7               :  3;
+      uint16_t SPI_Mode                :  2;  /**< Configuration for Sensor SPI Protocol */
+      uint16_t reserved12              :  4;
     };
     uint16_t VALUE16;
   };
--- a/inc/admw1001/admw1001_config.h	Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/admw1001_config.h	Fri Mar 06 17:03:18 2020 +0000
@@ -58,8 +58,7 @@
 #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,
@@ -80,8 +79,7 @@
 }   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,
@@ -92,8 +90,7 @@
 }   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
@@ -114,18 +111,16 @@
 }   ADMW1001_DATAREADY_MODE;
 
 /*! ADMW1001 power mode options */
-typedef enum
-{
-    ADMW1001_POWER_MODE_ACTIVE = 0,
+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_HIBERNATION,
-    /*!< module has entede hibernation mode. All analog circuitry is disabled. All peripherals disabled apart from the Wake-up pin functionality. */
 
 }   ADMW1001_POWER_MODE;
 
 /*! ADMW1001 measurement analog filter settling options */
-typedef enum
-{
+typedef enum {
     ADMW1001_FILTER_SETTLING_ALWAYS = 0,
     /*!< Allow full settling time to elapse between every measurement from an analog sensor */
     ADMW1001_FILTER_SETTLING_FAST,
@@ -138,8 +133,7 @@
  *  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,
@@ -149,8 +143,30 @@
 
 }   ADMW1001_MEASUREMENT_UNIT;
 
-typedef enum
-{
+/*! ADMW1001 Open-Sensor Diagnostics frequency
+ *
+ *  Select the per-cycle frequency at which open-sensor diagnostic
+ *  checks should be performed.  Open-sensor diagnostic checks typically require
+ *  specific or time-consuming processing which cannot be executed while a
+ *  measurement cycle is running.
+ *
+ *  @note Open-sensor diagnostic checks, when performed, will add a delay to the
+ *        start of the next measurement cycle.
+ */
+typedef enum {
+    ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED = 0,
+    /*!< No Open-Sensor Detection is performed */
+    ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_CYCLE,
+    /*!< No Open-Sensor Detection is performed prior to each cycle */
+    ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_100_CYCLES,
+    /*!< 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;
+
+
+typedef enum {
     ADMW1001_BUFFER_BYPASSS_DISABLED = 0,
     /*!< Buffer Bypass Disabled */
     ADMW1001_BUFFER_BYPASSS_ENABLED,
@@ -162,8 +178,7 @@
  *
  *  @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,
@@ -178,8 +193,7 @@
  *
  *  @note applicable only to ADC analog sensor channels
  */
-typedef enum
-{
+typedef enum {
     ADMW1001_ADC_GAIN_1X = 0,
     /*!< no amplification gain */
     ADMW1001_ADC_GAIN_2X,
@@ -204,13 +218,11 @@
  *  @note applicable only to ADC analog sensor channels, and
  *        specific sensor types
  */
-typedef enum
-{
-    ADMW1001_ADC_EXC_STATE_CYCLE_POWER = 0,
+typedef enum {
+    ADMW1001_ADC_EXC_STATE_CYCLE_POWER=0,
     /*!< Excitation for measurement is active only during measurement */
     ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
     /*!< Excitation for measurement is always on */
-
 }   ADMW1001_ADC_EXC_STATE;
 
 /*! ADMW1001 analog sensor excitation current output level options
@@ -218,8 +230,7 @@
  *  @note applicable only to ADC analog sensor channels, and
  *        specific sensor types
  */
-typedef enum
-{
+typedef enum {
     ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT = -1,
     /*!< NO External excitation is provided */
     ADMW1001_ADC_EXC_CURRENT_EXTERNAL = 0,
@@ -241,8 +252,7 @@
  *
  *  @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,
@@ -267,8 +277,7 @@
  *  @note applicable only to ADC analog sensor channels, and
  *        specific sensor types
  */
-typedef enum
-{
+typedef enum {
     ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL = 0,
     /*!< Internal VRef - 1.2V */
     ADMW1001_ADC_REFERENCE_VOLTAGE_EXTERNAL_1,
@@ -284,8 +293,7 @@
  *
  *  @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,
@@ -297,8 +305,7 @@
  *
  *  @note applicable only to ADC analog sensor channels
  */
-typedef enum
-{
+typedef enum {
     ADMW1001_CHOP_MD_NONE = 0,
     /*!< No chop performed. */
     ADMW1001_CHOP_MD_HW,
@@ -314,8 +321,7 @@
  *
  *  @note applicable only to ADC analog sensor channels
  */
-typedef enum
-{
+typedef enum {
     ADMW1001_ADC_FILTER_SINC4 = 0,
     /*!< SINC4 - 4th order sinc response filter */
     ADMW1001_ADC_FILTER_SINC3,
@@ -329,8 +335,7 @@
  *  @note SF must be set in conjunction with chop mode
  *  and sinc filter type to achieve the desired sampling rate.
  */
-typedef enum
-{
+typedef enum {
     ADMW1001_SF_976HZ  = 0,
     /*!< SF setting for 976Hz sample rate. */
     ADMW1001_SF_488HZ  = 1,
@@ -356,8 +361,7 @@
  *
  *  @note applicable only for I2C sensors
  */
-typedef enum
-{
+typedef enum {
     ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_100K = 0,
     /*!< 100kHz I2C clock speed */
     ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_400K,
@@ -369,8 +373,7 @@
  *
  *  @note applicable only for SPI sensors
  */
-typedef enum
-{
+typedef enum {
     ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_0 = 0,
     /*!< SPI mode 0 Clock Polarity = 0 Clock Phase = 0 */
     ADMW1001_DIGITAL_SENSOR_COMMS_SPI_MODE_1,
@@ -386,8 +389,7 @@
  *
  *  @note applicable only for SPI sensors
  */
-typedef enum
-{
+typedef enum {
     ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_8MHZ = 0,
     /*!< SPI Clock Speed configured to 8MHz */
     ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK_4MHZ,
@@ -424,8 +426,7 @@
 }   ADMW1001_DIGITAL_SENSOR_COMMS_SPI_CLOCK;
 
 /*! ADMW1001 Power Configuration options */
-typedef struct
-{
+typedef struct {
     ADMW1001_POWER_MODE        powerMode;
     /*!< Power mode selection */
 
@@ -436,8 +437,7 @@
  * @note required only when ADMW1001_OPERATING_MODE_MULTICYCLE is selected
  *       as the operatingMode (@ref ADMW1001_MEASUREMENT_CONFIG)
  */
-typedef struct
-{
+typedef struct {
     uint32_t    cyclesPerBurst;
     /*!< Number of cycles to complete for a single burst */
     uint32_t    burstInterval;
@@ -446,8 +446,7 @@
 }   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;
@@ -464,13 +463,8 @@
      *   configurations, settling time is always skipped between consecutive
      *   measurements in a measurement cycle.
      */
-    uint8_t                      excitationState;
-    /*!< Excitation current state */
-    uint8_t                         groundSwitch;
-    /*!< Option to open or close sensor ground switch */
-    uint8_t                     fifoNumCycles;
-    /*!< Specifies the number of cycles to fill a FIFO buffer
-     *   Applicable only when operatingMode is ADMW1001_OPERATING_MODE_CONTINUOUS
+    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
@@ -491,12 +485,7 @@
     float32_t                   externalRefVoltage;
     /*!< External Reference Voltage.
      */
-    float32_t                   AVDDVoltage;
-    /*!< AVDD Voltage.
-     */
-    uint32_t                    reserved1[1];
-    /*!< Reserved for future use and ensure word alignment.
-     */
+    uint32_t                    reserved1[2];
 
 }   ADMW1001_MEASUREMENT_CONFIG;
 
@@ -505,13 +494,13 @@
  *  @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 */
-    float32_t                             idealityRatio;
 
 }   ADMW1001_ADC_EXC_CURRENT_CONFIG;
 
@@ -519,8 +508,7 @@
  *
  *  @note applicable only to ADC analog sensor channels
  */
-typedef struct
-{
+typedef struct {
     ADMW1001_ADC_FILTER_TYPE    type;
     /*!< Filter type selection */
     ADMW1001_SINC_FILTER_RANGE  sf;
@@ -529,6 +517,8 @@
     /*!< Enable filter chop */
     bool                        notch1p2;
     /*!< Enable Notch 2 Filter Mode */
+    ADMW1001_ADC_GND_SW         groundSwitch;
+    /*!< Option to open or close sensor ground switch */
 
 }   ADMW1001_ADC_FILTER_CONFIG;
 
@@ -536,8 +526,7 @@
  *
  *  @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;
@@ -549,9 +538,10 @@
     ADMW1001_ADC_FILTER_CONFIG      filter;
     /*!< ADC Filter configuration */
     ADMW1001_ADC_REFERENCE_TYPE     reference;
+    bool                        vBiasEnable;
     /*!< ADC Reference configuration */
     uint8_t                         bufferBypass;
-     /*!< Buffer Bypass configuration */
+    /*!< Buffer Bypass configuration */
     uint8_t                         reserved0[2];
     /*!< Reserved for future use and ensure word alignment. */
     uint32_t                        reserved1[6];
@@ -562,13 +552,14 @@
 /*! ADMW1001 look-up table selection
  *  Select table used to linearise the measurement.
  */
-typedef enum
-{
+typedef enum {
     ADMW1001_LUT_DEFAULT  = 0,
     /*!< Default LUT */
-    ADMW1001_LUT_CUSTOM   = 1,
+    ADMW1001_LUT_UNITY    = 1,
+    /*!< Unity LUT */
+    ADMW1001_LUT_CUSTOM   = 2,
     /*!< User defined custom LUT */
-    ADMW1001_LUT_RESERVED = 2,
+    ADMW1001_LUT_RESERVED = 3,
     /*!< Reserved for future use */
 
 }   ADMW1001_LUT_SELECT;
@@ -577,8 +568,7 @@
  *
  *  @note applicable only to SPI and I2C digital sensor channels
  */
-typedef enum
-{
+typedef enum {
     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,
@@ -595,8 +585,7 @@
  *
  *  @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;
@@ -618,8 +607,7 @@
  *
  *  @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;
@@ -631,8 +619,7 @@
  *
  *  @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
@@ -649,8 +636,7 @@
  *
  *  @note applicable only to digital sensor channels
  */
-typedef struct
-{
+typedef struct {
     bool                                            useCustomCommsConfig;
     /*!< Optional parameter to enable user digital communication settings */
     ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED   i2cClockSpeed;
@@ -666,8 +652,7 @@
  *
  *  @note applicable only to I2C digital sensor channels
  */
-typedef struct
-{
+typedef struct {
     ADMW1001_I2C_SENSOR_TYPE                sensor;
     /*!< Sensor type selection */
     uint8_t                                 deviceAddress;
@@ -708,8 +693,7 @@
  *
  *  @note applicable only to SPI digital sensor channels
  */
-typedef struct
-{
+typedef struct {
     ADMW1001_SPI_SENSOR_TYPE        sensor;
     /*!< Sensor type selection */
     uint8_t                         reserved[2];
@@ -745,8 +729,7 @@
 }   ADMW1001_SPI_CHANNEL_CONFIG;
 
 /*! ADMW1001 Measurement Channel configuration details */
-typedef struct
-{
+typedef struct {
     bool                                enableChannel;
     /*!< Option to include this channel in normal measurement cycles */
     bool                                disablePublishing;
@@ -811,7 +794,7 @@
      */
     uint32_t                            extraSettlingTime;
     /*!< A minimum settling time is applied internally for each channel, based
-     *   on the sensor type.  However, additional settling time (milliseconds)
+     *   on the sensor type.  However, additional settling time (microseconds)
      *   can optionally be specified.  Set to 0 if not required.
      */
     ADMW1001_CHANNEL_PRIORITY           priority;
@@ -823,8 +806,7 @@
      *   ID.  Lower numbers indicate higher priority, with 0 being the highest.
      *   Set to 0 if not required.
      */
-    union
-    {
+    union {
         ADMW1001_ADC_CHANNEL_CONFIG     adcChannelConfig;
         /*!< ADC channel configuration - applicable only to ADC channels */
         ADMW1001_I2C_CHANNEL_CONFIG     i2cChannelConfig;
@@ -840,8 +822,7 @@
 }   ADMW1001_CHANNEL_CONFIG;
 
 /*! ADMW1001 Diagnostics configuration details */
-typedef struct
-{
+typedef struct {
     bool                                disableGlobalDiag;
     /*!< Option to disable the following diagnostic checks on the ADC:
      *   - Reference Detection errors
@@ -858,7 +839,7 @@
      *   temperature of the ADMW1001 has exceeded critical limits
      */
 
-    uint8_t    osdFrequency;
+    ADMW1001_OPEN_SENSOR_DIAGNOSTICS    osdFrequency;
     /*!< Option to enable Open-Circuit Detection at a selected cycle interval */
 
 }   ADMW1001_DIAGNOSTICS_CONFIG;
@@ -866,8 +847,7 @@
 typedef uint16_t ADMW1001_ADVANCED_ACCESS_KEY;
 
 /*! ADMW1001 Device configuration details */
-typedef struct
-{
+typedef struct {
     ADMW1001_POWER_CONFIG           power;
     /*!< Power configuration details */
     ADMW1001_MEASUREMENT_CONFIG     measurement;
--- a/inc/admw1001/admw1001_host_comms.h	Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/admw1001_host_comms.h	Fri Mar 06 17:03:18 2020 +0000
@@ -80,18 +80,21 @@
  */
 #define ADMW1001_HOST_COMMS_MAX_RETRIES (10)
 
+
 /*! ADMW1001 Sensor Result bit field structure */
-typedef struct _ADMW1001_Sensor_Result_t
-{
-    float32_t   Sensor_Result;      /**< Linearized and compensated sensor result */
-    uint32_t    Channel_ID :  4;    /**< Indicates which channel this result corresponds to */
-    uint32_t    Ch_Error   :  1;    /**< Indicates Error on channel */
-    uint32_t    Ch_Alert   :  1;    /**< Indicates Alert on channel */
-    uint32_t    Ch_Raw     :  1;    /**< Indicates if Raw sensor data field is valid */
-    uint32_t    Ch_Valid   :  1;    /**< Indicates if this Result structure is valid */
-    uint32_t    Status     : 24;    /**< Reserved for future use */
-    float32_t   Raw_Sample;         /**< Raw sensor data value */
-
-}   ADMW1001_Sensor_Result_t;
+typedef struct ADMW1001_Sensor_Result_t {
+    union {
+        struct {
+            float32_t Sensor_Result;      /**< Linearized and compensated sensor result */
+            uint32_t Channel_ID    :  4;  /**< Indicates which channel this result corresponds to */
+            uint32_t Ch_Error      :  1;  /**< Indicates Error on channel */
+            uint32_t Ch_Alert      :  1;  /**< Indicates Alert on channel */
+            uint32_t Ch_Raw        :  1;  /**< Indicates if Raw sensor data field is valid */
+            uint32_t Ch_Valid      :  1;  /**< Indicates if this Result structure is valid */
+            uint32_t Raw_Sample    : 24;  /**< Raw sensor data value */
+        };
+        uint64_t VALUE64;
+   };
+} ADMW1001_Sensor_Result_t;
 
 #endif /* __ADMW1001_HOST_COMMS_H__ */
--- a/inc/admw1001/admw1001_lut_data.h	Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/admw1001_lut_data.h	Fri Mar 06 17:03:18 2020 +0000
@@ -57,15 +57,14 @@
 #endif
 
 /*! LUT data validation signature */
-#define ADMW_LUT_SIGNATURE  0x4C555473
+#define ADMW_LUT_SIGNATURE 0x4C555473
 
 /*! LUT data CRC-16-CCITT seed value */
-#define ADMW_LUT_CRC_SEED   0x4153
+#define ADMW_LUT_CRC_SEED  0x4153
 
 /*! LUT maximum allowed size  */
 #define ADMW_LUT_MAX_SIZE 10240U
 
-#define MAX_LUT_NUM_ENTRIES 16
 /*! Linearisation look-up table / co-efficient list geometry */
 typedef enum {
     ADMW1001_LUT_GEOMETRY_RESERVED = 0x00,
@@ -74,6 +73,12 @@
     /**< 1D/2D equation coefficient list */
     ADMW1001_LUT_GEOMETRY_NES_1D = 0x02,
     /**< 1-dimensional not-equally-spaced look-up table */
+    ADMW1001_LUT_GEOMETRY_NES_2D = 0x03,
+    /**< 2-dimensional not-equally-spaced look-up table */
+    ADMW1001_LUT_GEOMETRY_ES_1D = 0x04,
+    /**< 1-dimensional equally-spaced look-up table */
+    ADMW1001_LUT_GEOMETRY_ES_2D = 0x05,
+    /**< 2-dimensional equally-spaced look-up table */
 } ADMW1001_LUT_GEOMETRY;
 
 /*! Linearisation equation type */
@@ -215,22 +220,22 @@
 /*! Macro to calculate the number of elements in
  * a @ref ADMW1001_LUT_1D_NES table */
 #define ADMW1001_LUT_1D_NES_NELEMENTS(_t) \
-        ((_t).nElements * 2)
+    ((_t).nElements * 2)
 
 /*! Macro to calculate the number of elements in
  * a @ref ADMW1001_LUT_2D_ES table */
 #define ADMW1001_LUT_2D_ES_NELEMENTS(_t)  \
-        ((_t).nElementsX * (_t).nElementsX)
+    ((_t).nElementsX * (_t).nElementsX)
 
 /*! Macro to calculate the number of elements in
  * a @ref ADMW1001_LUT_2D_NES table */
 #define ADMW1001_LUT_2D_NES_NELEMENTS(_t)                         \
-        ((_t).nElementsX + (_t).nElementsY + ((_t).nElementsX * (_t).nElementsY))
+    ((_t).nElementsX + (_t).nElementsY + ((_t).nElementsX * (_t).nElementsY))
 
 /*! Macro to calculate the number of elements in
  * a @ref ADMW1001_LUT_2D_POLYN_COEFF_LIST table */
 #define ADMW1001_LUT_2D_POLYN_COEFF_LIST_NELEMENTS(_t)    \
-        (((_t).maxDegree + 1) * ((_t).maxDegree + 2) / 2)
+    (((_t).maxDegree + 1) * ((_t).maxDegree + 2) / 2)
 
 /*! Macro to calculate the storage size in bytes of
  * a @ref ADMW1001_LUT_COEFF_LIST table */
@@ -265,15 +270,14 @@
 /*! Look-Up Table descriptor */
 typedef union __attribute__((packed, aligned(4))) {
     struct {
-        uint16_t geometry   : 4;    /**< ADMW1001_LUT_GEOMETRY */
-        uint8_t  channel    : 2;    /**< ADMW1001_ADC_CHANNEL */
-        uint16_t equation   : 6;    /**< ADMW1001_LUT_EQUATION */
-        uint16_t dir        : 4;    /**< ADMW1001_LUT_TC_DIRECTION */
-        uint16_t sensor     : 12;   /**< ADMW1001_ADC_SENSOR_TYPE */
-        uint16_t dataType   : 4;    /**< ADMW1001_LUT_DATA_TYPE */
-        uint16_t length;            /**< Length (bytes) of table data section
-                                        (excl. this header) */
-        uint16_t crc16;             /**< CRC-16-CCITT of the data */
+        uint16_t geometry  : 6; /**< ADMW1001_LUT_GEOMETRY */
+        uint16_t equation  : 6; /**< ADMW1001_LUT_EQUATION */
+        uint16_t dir   : 4;     /**< ADMW1001_LUT_TC_DIRECTION */
+        uint16_t sensor : 12;   /**< ADMW1001_ADC_SENSOR_TYPE */
+        uint16_t dataType : 4;  /**< ADMW1001_LUT_DATA_TYPE */
+        uint16_t length;        /**< Length (bytes) of table data section
+                                     (excl. this header) */
+        uint16_t crc16;         /**< CRC-16-CCITT of the data */
     };
     uint64_t value64;
 } ADMW1001_LUT_DESCRIPTOR;
@@ -329,7 +333,7 @@
 typedef struct __attribute__((packed, aligned(4))) {
     ADMW1001_LUT_HEADER header;
     /*!< LUT data top-level header structure */
-    ADMW1001_LUT_TABLE tables[1];
+    ADMW1001_LUT_TABLE tables[];
         /*!< Variable-length array of one-or-more look-up table structures */
 } ADMW1001_LUT;
 
--- a/inc/admw1001/admw1001_sensor_types.h	Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw1001/admw1001_sensor_types.h	Fri Mar 06 17:03:18 2020 +0000
@@ -102,6 +102,11 @@
  */
 typedef enum
 {
+    ADMW1001_ADC_SENSOR_THERMOCOUPLE_T = 0,
+    /*!< Standard T-type Thermocouple temperature sensor
+     *
+     * @note For use with Analog Sensor channels only
+     */
     ADMW1001_ADC_SENSOR_THERMOCOUPLE_J = 1,
     /*!< Standard J-type Thermocouple temperature sensor
      *
@@ -112,313 +117,150 @@
      *
      * @note For use with Analog Sensor channels only
      */
-     ADMW1001_ADC_SENSOR_THERMOCOUPLE_E = 3,
-    /*!< Standard E-type Thermocouple temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Analog Sensor channels only
-     */
-     ADMW1001_ADC_SENSOR_THERMOCOUPLE_N = 4,
-    /*!< Standard N-type Thermocouple temperature sensor with default
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_THERMOCOUPLE_1 = 8,
+    /*!< Standard thermocouple temperature sensor
      *
      * @note For use with Analog Sensor channels only
      */
-     ADMW1001_ADC_SENSOR_THERMOCOUPLE_R = 5,
-    /*!< Standard R-type Thermocouple temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Analog Sensor channels only
-     */
-     ADMW1001_ADC_SENSOR_THERMOCOUPLE_S = 6,
-    /*!< Standard S-type Thermocouple temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Analog Sensor channels only
-     */
-      ADMW1001_ADC_SENSOR_THERMOCOUPLE_T = 7,
-    /*!< Standard T-type Thermocouple temperature sensor
+    ADMW1001_ADC_SENSOR_THERMOCOUPLE_2 = 9,
+    /*!< Standard thermocouple temperature sensor
      *
      * @note For use with Analog Sensor channels only
      */
-     ADMW1001_ADC_SENSOR_THERMOCOUPLE_B = 8,
-    /*!< Standard B-type Thermocouple temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Analog Sensor channels only
-     */
-     ADMW1001_ADC_SENSOR_THERMOCOUPLE_CUSTOM = 9,
-    /*!< CUSTOM -type Thermocouple temperature sensor with custom
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_THERMOCOUPLE_3 = 10,
+    /*!< Standard thermocouple temperature sensor
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100_DEF_L1 = 32,
-    /*!< Standard 2-wire PT100 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000_DEF_L1 = 33,
-    /*!< Standard 2-wire PT1000 RTD temperature sensor with default
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_THERMOCOUPLE_4 = 11,
+    /*!< Standard thermocouple temperature sensor
      *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
+     * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT10 = 34,
-    /*!< Standard 2-wire PT10 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT50 = 35,
-    /*!< Standard 2-wire PT50 RTD temperature sensor with default
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100 = 32,
+    /*!< Standard 2-wire PT100 RTD temperature sensor
      *
      * @note For use with Cold-Juction Compensation and Analog Sensor channels
      *       only
      */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100 = 36,
-    /*!< Standard 2-wire PT100 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT200 = 37,
-    /*!< Standard 2-wire PT200 RTD temperature sensor with default
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000 = 33,
+    /*!< Standard 2-wire PT1000 RTD temperature
      *
      * @note For use with Cold-Juction Compensation and Analog Sensor channels
      *       only
      */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT500 = 38,
-    /*!< Standard 2-wire PT500 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000 = 39,
-    /*!< Standard 2-wire PT1000 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000_0P00375 = 40,
-    /*!< Standard 2-wire PT1000 RTD temperature sensor with alpha 0.00375
-     *   linearisation
+    ADMW1001_ADC_SENSOR_RTD_2WIRE_1 = 40,
+    /*!< 2-wire RTD temperature sensor
      *
      * @note For use with Cold-Juction Compensation and Analog Sensor channels
      *       only
      */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_NI120 = 41,
-    /*!< Standard 2-wire NI120 RTD temperature sensor
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_2WIRE_CUSTOM = 42,
-    /*!< 2-wire Custom RTD temperature sensor with user-defined linearisation and
-     *   default configuration options
+    ADMW1001_ADC_SENSOR_RTD_2WIRE_2 = 41,
+    /*!< 2-wire RTD temperature sensor
      *
      * @note For use with Cold-Juction Compensation and Analog Sensor channels
      *       only
      */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT100_DEF_L1 = 64,
-    /*!< Standard 3-wire PT100 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Analog Sensor channels only
-     */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000_DEF_L1 = 65,
-    /*!< Standard 3-wire PT1000 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Analog Sensor channels only
-     */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT10 = 66,
-    /*!< Standard 3-wire PT10 RTD temperature sensor with default
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_RTD_2WIRE_3 = 42,
+    /*!< 2-wire RTD temperature sensor
      *
      * @note For use with Cold-Juction Compensation and Analog Sensor channels
      *       only
      */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT50 = 67,
-    /*!< Standard 3-wire PT50 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT100 = 68,
-    /*!< Standard 3-wire PT100 RTD temperature sensor with default
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_RTD_2WIRE_4 = 43,
+    /*!< 2-wire RTD temperature sensor
      *
      * @note For use with Cold-Juction Compensation and Analog Sensor channels
      *       only
      */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT200 = 69,
-    /*!< Standard 3-wire PT200 RTD temperature sensor with default
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT100 = 64,
+    /*!< Standard 3-wire PT100 RTD temperature sensor
      *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT500 = 70,
-    /*!< Standard 3-wire PT500 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000 = 71,
-    /*!< Standard 3-wire PT1000 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
+     * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000_0P00375 = 72,
-    /*!< Standard 3-wire PT1000 RTD temperature sensor with alpha 0.00375
-     *   linearisation
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_NI120 = 73,
-    /*!< Standard 3-wire NI120 RTD temperature sensor
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_3WIRE_CUSTOM = 74,
-    /*!< 3-wire Custom RTD temperature sensor with user-defined linearisation and
-     *   default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100_DEF_L1 = 96,
-    /*!< Standard 4-wire PT100 RTD temperature sensor with default
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000 = 65,
+    /*!< Standard 3-wire PT1000 RTD temperature sensor
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000_DEF_L1 = 97,
-    /*!< Standard 4-wire PT1000 RTD temperature sensor with default
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_RTD_3WIRE_1 = 72,
+    /*!< 3-wire RTD temperature sensor
+     *
+     * @note For use with Analog Sensor channels only
+     */
+    ADMW1001_ADC_SENSOR_RTD_3WIRE_2 = 73,
+    /*!< 3-wire RTD temperature sensor
+     *
+     * @note For use with Analog Sensor channels only
+     */
+    ADMW1001_ADC_SENSOR_RTD_3WIRE_3 = 74,
+    /*!< 3-wire RTD temperature sensor
+     *
+     * @note For use with Analog Sensor channels only
+     */
+    ADMW1001_ADC_SENSOR_RTD_3WIRE_4 = 75,
+    /*!< 3-wire RTD temperature sensor
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT10 = 98,
-    /*!< Standard 4-wire PT10 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT50 = 99,
-    /*!< Standard 4-wire PT50 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100 = 100,
-    /*!< Standard 4-wire PT100 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT200 = 101,
-    /*!< Standard 4-wire PT200 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT500 = 102,
-    /*!< Standard 4-wire PT500 RTD temperature sensor with default
-     *   linearisation and default configuration options
+    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100 = 96,
+    /*!< Standard 4-wire PT100 RTD temperature sensor
      *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
+     * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000 = 103,
-    /*!< Standard 4-wire PT1000 RTD temperature sensor with default
-     *   linearisation and default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000_0P00375 = 104,
-    /*!< Standard 4-wire PT1000 RTD temperature sensor with alpha 0.00375
-     *   linearisation
+    ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000 = 97,
+    /*!< Standard 4-wire PT1000 RTD temperature sensor
      *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_NI120 = 105,
-    /*!< Standard 4-wire NI120 RTD temperature sensor
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
+     * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_RTD_4WIRE_CUSTOM = 106,
-    /*!< 4-wire Custom RTD temperature sensor with user-defined linearisation and
-     *   default configuration options
-     *
-     * @note For use with Cold-Juction Compensation and Analog Sensor channels
-     *       only
-     */
-    ADMW1001_ADC_SENSOR_THERMISTOR_44004_44033_2P252K_AT_25C = 128,
-    /*!< Standard 2.252kOhm NTC Thermistor
+    ADMW1001_ADC_SENSOR_RTD_4WIRE_1 = 104,
+    /*!< 4-wire RTD temperature sensor
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_THERMISTOR_44005_44030_3K_AT_25C = 129,    
-    /*!< Standard 3kOhm NTC Thermistor
+    ADMW1001_ADC_SENSOR_RTD_4WIRE_2 = 105,
+    /*!< 4-wire RTD temperature sensor
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_THERMISTOR_44007_44034_5K_AT_25C = 130,    
-    /*!< Standard 5kOhm NTC Thermistor
+    ADMW1001_ADC_SENSOR_RTD_4WIRE_3 = 106,
+    /*!< 4-wire RTD temperature sensor
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_THERMISTOR_44006_44031_10K_AT_25C = 131,   
+    ADMW1001_ADC_SENSOR_RTD_4WIRE_4 = 107,
+    /*!< 4-wire RTD temperature sensor
+     *
+     * @note For use with Analog Sensor channels only
+     */
+    ADMW1001_ADC_SENSOR_THERMISTOR_A_10K = 128,
     /*!< Standard 10kOhm NTC Thermistor
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_THERMISTOR_44008_44032_30K_AT_25C = 132,   
-    /*!< Standard 30kOhm NTC Thermistor
+    ADMW1001_ADC_SENSOR_THERMISTOR_B_10K = 129,
+    /*!< Standard 10kOhm NTC Thermistor
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_THERMISTOR_YSI_400 = 133,    
-    /*!< Standard YSI400 NTC Thermistor
+    ADMW1001_ADC_SENSOR_THERMISTOR_1 = 136,
+    /*!< Thermistor sensor
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_THERMISTOR_SPECTRUM_1003K_1K = 134,        
-    /*!< Standard 1kOhm NTC Thermistor
+    ADMW1001_ADC_SENSOR_THERMISTOR_2 = 137,
+    /*!< Thermistor sensor with user-defined linearisation and
+     *   default configuration options
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_THERMISTOR_CUSTOM_STEINHART_HART = 135,    
-    /*!< CUSTOM Equation NTC Thermistor
+    ADMW1001_ADC_SENSOR_THERMISTOR_3 = 138,
+    /*!< Thermistor sensor
      *
      * @note For use with Analog Sensor channels only
      */
-    ADMW1001_ADC_SENSOR_THERMISTOR_CUSTOM_TABLE = 136,             
-    /*!< Custom Table NTC Thermistor
+    ADMW1001_ADC_SENSOR_THERMISTOR_4 = 139,
+    /*!< Thermistor sensor
      *
      * @note For use with Analog Sensor channels only
      */
@@ -470,11 +312,46 @@
      * @note For use with Analog Sensor channels only
      * @note Bridge Excitation Voltage must be selected as reference
      */
-    ADMW1001_ADC_SENSOR_DIODE = 224,
-    /*!< Standard Diode current temperature sensor
+    ADMW1001_ADC_SENSOR_DIODE_2C_TYPEA = 224,
+    /*!< Standard Diode two current temperature sensor
+     *
+     * @note For use with  Analog Sensor channels only
+     */
+    ADMW1001_ADC_SENSOR_DIODE_3C_TYPEA = 225,
+    /*!< Standard Diode three current temperature sensor
+     *
+     * @note For use with  Analog Sensor channels only
+     */
+    ADMW1001_ADC_SENSOR_DIODE_2C_1 = 232,
+    /*!< Standard Diode two current sensor
+     *
+     * @note For use with  Analog Sensor channels only
+     */
+    ADMW1001_ADC_SENSOR_DIODE_3C_1 = 233,
+    /*!< Standard Diode three current sensor
      *
      * @note For use with  Analog Sensor channels only
      */
+    ADMW1001_ADC_SENSOR_MICROPHONE_A = 256,
+    /*!< Generic microphone sensor without external amplifier
+     *
+     * @note For use with Analog Sensor channels only
+     */
+    ADMW1001_ADC_SENSOR_MICROPHONE_B = 257,
+    /*!< Generic microphone sensor with external amplifier and bias
+     *
+     * @note For use with Analog Sensor channels only
+     */
+    ADMW1001_ADC_SENSOR_MICROPHONE_1 = 264,
+    /*!< Generic microphone sensor without external amplifier
+     *
+     * @note For use with Analog Sensor channels only
+     */
+    ADMW1001_ADC_SENSOR_MICROPHONE_2 = 265,
+    /*!< Generic microphone sensor with external amplifier and bias
+     *
+     * @note For use with Analog Sensor channels only
+     */
     ADMW1001_ADC_SENSOR_VOLTAGE = 512,
     /*!< Generic voltage sensor
      *
@@ -608,12 +485,6 @@
      *
      * @note For use with I2C Digital Sensor channels only
      */
-     ADMW1001_I2C_SENSOR_TEMPERATURE_ADT742X = 2218,
-    /*!< ADT742X sensor
-     *   Note: the ADT742X Temperature sensor.
-     *
-     * @note For use with I2C Digital Sensor channels only
-     */
     ADMW1001_I2C_SENSOR_CO2_A = 2224,
     /*!< Sensirion SCD30 C02 sensor
      *   Note: the SCD30 is a combined CO2, Humidity and Temperature sensor.
@@ -621,8 +492,6 @@
      *
      * @note For use with I2C Digital Sensor channels only
      */
-     
-     
 
 }   ADMW1001_I2C_SENSOR_TYPE;
 
--- a/inc/admw_api.h	Mon Feb 17 11:23:39 2020 +0000
+++ b/inc/admw_api.h	Fri Mar 06 17:03:18 2020 +0000
@@ -172,8 +172,6 @@
     /*!< Device summary status snapshot when the sample was recorded */
     uint32_t                      channelId;
     /*!< The measurement channel from which this sample was obtained */
-    uint8_t                      measurementStatus;
-    /*!< The measurement status from the DMZ layer */
     uint32_t                      rawValue;
     /*!< The raw (unprocessed) value obtained directly from the measurement
      *   channel, if available
@@ -207,16 +205,7 @@
 
 }   ADMW_USER_CONFIG_SLOT;
 
-/*! Identifiers for the user configuration slots in persistent memory. */
-typedef enum
-{
-    ADMW_FLASH_LUT_CHANNEL_0=0,
-    ADMW_FLASH_LUT_CHANNEL_1,
-    ADMW_FLASH_LUT_CHANNEL_2,
-    ADMW_FLASH_LUT_CHANNEL_3,
-    
 
-}   ADMW_USER_LUT_CONFIG_SLOT;
 
 typedef struct
 {
@@ -701,7 +690,7 @@
     bool *pbCommandRunning);
 
 ADMW_RESULT admw1001_sendRun( ADMW_DEVICE_HANDLE   const hDevice);
-ADMW_RESULT admw_deviceInformation(ADMW_DEVICE_HANDLE hDevice);
+ADMW_RESULT deviceInformation(ADMW_DEVICE_HANDLE hDevice);
 
 #ifdef __cplusplus
 }
--- a/main.cpp	Mon Feb 17 11:23:39 2020 +0000
+++ b/main.cpp	Fri Mar 06 17:03:18 2020 +0000
@@ -56,10 +56,7 @@
 extern ADMW_CONFIG multichannel_continuous_config;
 extern ADMW_CONFIG multichannel_singlecycle_config;
 extern ADMW_CONFIG i2c0_sensirionSHT3X_config;
-/* Use the following config if adding a configuration file from measureware designer*/
-extern ADMW_CONFIG measureware_config;
-
-/* Change the following pointer to load or change the configurations  */
+/* Change the following pointer to select any of the configurations above */
 static ADMW_CONFIG *pSelectedConfig = &thermocouple_typeK_cjc0_config;
 
 static ADMW_CONNECTION connectionInfo = PLATFORM_CONNECTION_INFO;
@@ -67,7 +64,6 @@
 
 int main()
 {
-
     ADMW_RESULT res;
     ADMW_STATUS status;
     ADMW_DEVICE_HANDLE hDevice;
@@ -123,7 +119,7 @@
      * Check device status after updating the configuration
      */
     res = admw_GetStatus(hDevice, &status);
-    admw_deviceInformation(hDevice);
+    deviceInformation(hDevice);
     if (res != ADMW_SUCCESS) {
         ADMW_LOG_ERROR("Failed to retrieve device status");
         return res;
--- a/multichannel_continuous_config.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/multichannel_continuous_config.c	Fri Mar 06 17:03:18 2020 +0000
@@ -42,7 +42,7 @@
 #include "admw_config_types.h"
 
 ADMW_CONFIG multichannel_continuous_config = {
-     .versionId = { .major = 2, .minor = 0 },
+    .versionId = { .major = 2, .minor = 0 },
     .productId = ADMW_PRODUCT_ID_ADMW1001,
     .admw1001 = {
         .power = {
@@ -52,18 +52,14 @@
             .externalRefVoltage=0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
-            .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,                
-            .groundSwitch = ADMW1001_ADC_GND_SW_CLOSED,             
-            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
-            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,              
             .cycleInterval = 0,
             .vBiasEnable = true,
-            .RSenseValue = 1000.0,          
+            .RSenseValue = 1000.0,
         },
         .diagnostics = {
             .disableGlobalDiag = true,
             .disableMeasurementDiag = true,
-            .osdFrequency = 0,
+            .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
         },
         .channels = {
             [ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -86,6 +82,7 @@
                     .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
                     .gain = ADMW1001_ADC_GAIN_1X,
                     .current = {
+                        .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
                         .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
                         .diodeRatio = 0,
                     },
@@ -94,6 +91,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -119,6 +117,7 @@
                     .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
                     .gain = ADMW1001_ADC_GAIN_8X,
                     .current = {
+                        .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
                         .outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
                         .diodeRatio = 0,
                     },
@@ -127,6 +126,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/multichannel_singlecycle_config.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/multichannel_singlecycle_config.c	Fri Mar 06 17:03:18 2020 +0000
@@ -52,8 +52,6 @@
             .externalRefVoltage=0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_SINGLECYCLE,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
-            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
-            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,             
             .cycleInterval = 0,
             .vBiasEnable = true,
             .RSenseValue = 1000.0,
@@ -61,7 +59,7 @@
         .diagnostics = {
             .disableGlobalDiag = true,
             .disableMeasurementDiag = true,
-            .osdFrequency = 0,
+            .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
         },
         .channels = {
             [ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -84,6 +82,7 @@
                     .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
                     .gain = ADMW1001_ADC_GAIN_1X,
                     .current = {
+                        .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
                         .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
                         .diodeRatio = 0,
                     },
@@ -92,6 +91,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -117,6 +117,7 @@
                     .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
                     .gain = ADMW1001_ADC_GAIN_8X,
                     .current = {
+                        .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
                         .outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
                         .diodeRatio = 0,
                     },
@@ -125,6 +126,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/rtd_3w_pt100_config.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/rtd_3w_pt100_config.c	Fri Mar 06 17:03:18 2020 +0000
@@ -53,8 +53,6 @@
         .externalRefVoltage =0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
-            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
-            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,              
             .cycleInterval = 0,
             .vBiasEnable = false,
         .RSenseValue = 1000.0, 
@@ -62,7 +60,7 @@
         .diagnostics = {
             .disableGlobalDiag = true,
             .disableMeasurementDiag = true,
-            .osdFrequency = 0,
+            .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
         },
         .channels = {
             [ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -85,6 +83,7 @@
                     .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
                     .gain = ADMW1001_ADC_GAIN_1X,
                     .current = {
+                        .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
                         .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
                         .diodeRatio = 0,
                     },
@@ -93,6 +92,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                 },
--- a/rtd_4w_config.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/rtd_4w_config.c	Fri Mar 06 17:03:18 2020 +0000
@@ -51,16 +51,15 @@
         },
         .measurement = {
             .externalRefVoltage = 0.0,
-            .operatingMode = ADMW1001_OPERATING_MODE_SINGLECYCLE,
+            .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
-            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
-            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,             
             .cycleInterval = 0,
             .RSenseValue = 1000.0, 
         },
         .diagnostics = {
             .disableGlobalDiag = true,
             .disableMeasurementDiag = true,
+            .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
         },
         .channels = {
             [ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -82,6 +81,7 @@
                     .sensor = ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100,
                     .gain = ADMW1001_ADC_GAIN_1X,
                     .current = {
+                        .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
                         .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
                         .diodeRatio = 0,
                     },
@@ -91,6 +91,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/src/admw_1001.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/src/admw_1001.c	Fri Mar 06 17:03:18 2020 +0000
@@ -388,7 +388,7 @@
     return ADMW_SUCCESS;
 }
 
-ADMW_RESULT admw_deviceInformation(ADMW_DEVICE_HANDLE hDevice)
+ADMW_RESULT deviceInformation(ADMW_DEVICE_HANDLE hDevice)
 {
     uint16_t nAddress = REG_CORE_REVISION;
     char nData[ADMW_VERSION_REG_VAL_SIZE];  //4 Bytes of version register data
@@ -401,7 +401,7 @@
     } else {
         char buffer[ADMW_FORMATTED_VERSION_SIZE]; //00.00.0000  8 digits + 2 Bytes "." + one null character at the end
         strcat(nData, buffer);
-        ADMW_LOG_INFO("Firmware Version Id is %X.%X.%X",nData[3],nData[2],nData[0]);
+        ADMW_LOG_INFO("Firmware Version Id is %X.%X",nData[2],nData[0]);
     }
     return ADMW_SUCCESS;
 }
@@ -433,8 +433,8 @@
 
     if (bWaitForCompletion) {
         do {
-            /* Allow a minimum 100usec delay for status update before checking */
-            admw_TimeDelayUsec(100);
+            /* Allow a minimum 50usec delay for status update before checking */
+            admw_TimeDelayUsec(50);
 
             eRet = admw_GetCommandRunningState(hDevice, &bCommandRunning);
             if (eRet)
@@ -648,6 +648,7 @@
 
     for (unsigned i = 0; i < nRequested; i++) {
         bool bHoldCs = true;
+
         /* Keep the CS signal asserted for all but the last sample */
         if ((i + 1) == nRequested)
             bHoldCs = false;
@@ -777,8 +778,8 @@
                            nAddress);
             return eRet;
         }
-        wait_ms(100);
-        //admw_TimeDelayUsec(ADMW1001_HOST_COMMS_XFER_DELAY);
+
+        admw_TimeDelayUsec(ADMW1001_HOST_COMMS_XFER_DELAY);
     } while ((commandResponse[0] != ADMW1001_HOST_COMMS_CMD_RESP_0) ||
              (commandResponse[1] != ADMW1001_HOST_COMMS_CMD_RESP_1));
 
@@ -908,9 +909,9 @@
         *peOperatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS;
 
     if (eMeasurementMode == ADMW_MEASUREMENT_MODE_OMIT_RAW) {
-        *pnBytesPerSample = 8;
+        *pnBytesPerSample = 5;
     } else {
-        *pnBytesPerSample = 12;
+        *pnBytesPerSample = 8;
     }
 
     for (ADMW1001_CH_ID chId = ADMW1001_CH_ID_ANLG_1_UNIVERSAL;
@@ -925,26 +926,29 @@
         READ_REG_U8(hDevice, channelCountReg.VALUE8, CORE_CHANNEL_COUNTn(chId));
         READ_REG_U32(hDevice, sensorDetailsReg.VALUE32, CORE_SENSOR_DETAILSn(chId));
 
-        if (channelCountReg.Channel_Enable && !sensorDetailsReg.Do_Not_Publish) {
+        if (channelCountReg.Channel_Enable && !sensorDetailsReg.Do_Not_Publish)
+        {
             unsigned nActualChannels = 1;
 
-            if (chId == ADMW1001_CH_ID_DIG_SPI_0) {
+            if (chId == ADMW1001_CH_ID_DIG_SPI_0)
+            {
                 /* Some sensors automatically generate samples on additional
                  * "virtual" channels so these channels must be counted as
                  * active when those sensors are selected and we use the count
                  * from the corresponding "physical" channel
                  */
-#if 0 /* SPI sensors arent supported at present to be added back once there is
+#if 0 /* SPI sensors arent supported at present to be added back once there is 
        * support for these sensors
        */
                 ADMW_CORE_Sensor_Type_t sensorTypeReg;
 
                 READ_REG_U16(hDevice, sensorTypeReg.VALUE16, CORE_SENSOR_TYPEn(chId));
-
+      
                 if ((sensorTypeReg.Sensor_Type >=
-                        CORE_SENSOR_TYPE_SPI_ACCELEROMETER_A) &&
-                        (sensorTypeReg.Sensor_Type <=
-                         CORE_SENSOR_TYPE_SPI_ACCELEROMETER_B)) {
+                    CORE_SENSOR_TYPE_SPI_ACCELEROMETER_A) &&
+                    (sensorTypeReg.Sensor_Type <=
+                    CORE_SENSOR_TYPE_SPI_ACCELEROMETER_B))
+                {
                     nActualChannels += 2;
                 }
 #endif
@@ -967,30 +971,14 @@
 
     if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_CONVERSION) {
         *pnSamplesPerDataready = 1;
-    } else if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_CYCLE) {
+    } else {
         *pnSamplesPerDataready = nSamplesPerCycle;
-    } else if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_FIFO_FILL) {
-        ADMW_CORE_Fifo_Num_Cycles_t fifoNumCyclesReg;
-
-        READ_REG_U8(hDevice, fifoNumCyclesReg.VALUE8, CORE_FIFO_NUM_CYCLES);
-
-        *pnSamplesPerDataready = nSamplesPerCycle * fifoNumCyclesReg.Fifo_Num_Cycles;
-    } else {
-        ADMW_LOG_ERROR("Invalid DRDY mode %d specified",
-                       modeReg.Drdy_Mode);
-        return ADMW_INVALID_PARAM;
     }
 
     if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_CONVERSION) {
         *peDataReadyMode = ADMW1001_DATAREADY_PER_CONVERSION;
-    } else if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_CYCLE) {
+    } else {
         *peDataReadyMode = ADMW1001_DATAREADY_PER_CYCLE;
-    } else if (modeReg.Drdy_Mode == CORE_MODE_DRDY_PER_FIFO_FILL) {
-        *peDataReadyMode = ADMW1001_DATAREADY_PER_FIFO_FILL;
-    } else {
-        ADMW_LOG_ERROR("Invalid DRDY mode %d specified",
-                       modeReg.Drdy_Mode);
-        return ADMW_INVALID_PARAM;
     }
 
     return ADMW_SUCCESS;
@@ -1015,7 +1003,7 @@
     ADMW_DEVICE_HANDLE hDevice,
     ADMW1001_POWER_MODE powerMode)
 {
-    ADMW_CORE_Power_Config_t powerConfigReg = { 0 };
+    ADMW_CORE_Power_Config_t powerConfigReg;
 
     if (powerMode == ADMW1001_POWER_MODE_HIBERNATION) {
         powerConfigReg.Power_Mode_MCU = CORE_POWER_CONFIG_HIBERNATION;
@@ -1050,13 +1038,13 @@
     ADMW_DEVICE_HANDLE hDevice,
     float32_t RSenseValue)
 {
-    ADMW_CORE_External_Reference_Resistor_t RefResistorConfigReg;
-
-    RefResistorConfigReg.Ext_Refin1_Value = RSenseValue;
-
-    WRITE_REG_FLOAT(hDevice, RefResistorConfigReg.VALUE32, CORE_EXTERNAL_REFERENCE_RESISTOR);
-
-    return ADMW_SUCCESS;
+   ADMW_CORE_External_Reference_Resistor_t RefResistorConfigReg;
+  
+   RefResistorConfigReg.Ext_Refin1_Value = RSenseValue;
+   
+   WRITE_REG_FLOAT(hDevice, RefResistorConfigReg.VALUE32, CORE_EXTERNAL_REFERENCE_RESISTOR);
+   
+   return ADMW_SUCCESS;
 
 }
 static ADMW_RESULT admw_SetMode(
@@ -1082,8 +1070,6 @@
         modeReg.Drdy_Mode = CORE_MODE_DRDY_PER_CONVERSION;
     } else if (eDataReadyMode == ADMW1001_DATAREADY_PER_CYCLE) {
         modeReg.Drdy_Mode = CORE_MODE_DRDY_PER_CYCLE;
-    } else if (eDataReadyMode == ADMW1001_DATAREADY_PER_FIFO_FILL) {
-        modeReg.Drdy_Mode = CORE_MODE_DRDY_PER_FIFO_FILL;
     } else {
         ADMW_LOG_ERROR("Invalid data-ready mode %d specified", eDataReadyMode);
         return ADMW_INVALID_PARAM;
@@ -1096,19 +1082,18 @@
 
 ADMW_RESULT admw_SetCycleControl(ADMW_DEVICE_HANDLE hDevice,
                                  uint32_t           nCycleInterval,
-                                 bool               vBiasEnable,
-                                 bool           vPostExecCurrentState,
-                                 bool               vGroundSwitch)
+                                 bool               vBiasEnable)
 {
     ADMW_CORE_Cycle_Control_t cycleControlReg;
 
     cycleControlReg.VALUE16 = REG_RESET_VAL(CORE_CYCLE_CONTROL);
 
-    if (nCycleInterval < (1 << 12)) {
-        cycleControlReg.Cycle_Time_Units = CORE_CYCLE_CONTROL_SECONDS;
+    if (nCycleInterval < (1000 * (1 << 12))) {
+        cycleControlReg.Cycle_Time_Units = CORE_CYCLE_CONTROL_MILLISECONDS;
+        nCycleInterval /= 1000;
     } else {
-        ADMW_LOG_ERROR("Invalid nCycleInterval %d specified", nCycleInterval);
-        return ADMW_INVALID_PARAM;
+        cycleControlReg.Cycle_Time_Units = CORE_CYCLE_CONTROL_SECONDS;
+        nCycleInterval /= 1000000;
     }
 
     if (vBiasEnable == true) {
@@ -1117,32 +1102,6 @@
     CHECK_REG_FIELD_VAL(CORE_CYCLE_CONTROL_CYCLE_TIME, nCycleInterval);
     cycleControlReg.Cycle_Time = nCycleInterval;
 
-    switch(vPostExecCurrentState) {
-        case ADMW1001_ADC_EXC_STATE_CYCLE_POWER:
-            cycleControlReg.PST_MEAS_EXC_CTRL = CORE_CYCLE_CONTROL_POWERCYCLE;
-            break;
-        case ADMW1001_ADC_EXC_STATE_ALWAYS_ON:
-            cycleControlReg.PST_MEAS_EXC_CTRL = CORE_CYCLE_CONTROL_ALWAYSON;
-            break;
-        default:
-            ADMW_LOG_ERROR("Invalid Post measurement Excitation Current state %d specified",
-                           vPostExecCurrentState);
-            return ADMW_INVALID_PARAM;
-    }
-
-    switch(vGroundSwitch) {
-        case ADMW1001_ADC_GND_SW_OPEN:
-            cycleControlReg.GND_SW_CTRL = CORE_CYCLE_CONTROL_OPEN_SW;
-            break;
-        case ADMW1001_ADC_GND_SW_CLOSED:
-            cycleControlReg.GND_SW_CTRL = CORE_CYCLE_CONTROL_CLOSE_SW;
-            break;
-        default:
-            ADMW_LOG_ERROR("Invalid ground switch state %d specified",
-                           vGroundSwitch);
-            return ADMW_INVALID_PARAM;
-    }
-
     WRITE_REG_U16(hDevice, cycleControlReg.VALUE16, CORE_CYCLE_CONTROL);
 
     return ADMW_SUCCESS;
@@ -1155,14 +1114,6 @@
 
     return ADMW_SUCCESS;
 }
-static ADMW_RESULT admw_SetFifoNumCycles(
-    ADMW_DEVICE_HANDLE hDevice,
-    uint8_t fifoNumCycles)
-{
-    WRITE_REG_U8(hDevice, fifoNumCycles, CORE_FIFO_NUM_CYCLES);
-
-    return ADMW_SUCCESS;
-}
 
 static ADMW_RESULT admw_SetExternalReferenceValues(
     ADMW_DEVICE_HANDLE hDevice,
@@ -1172,15 +1123,6 @@
 
     return ADMW_SUCCESS;
 }
-static ADMW_RESULT admw_SetAVDDVoltage(
-    ADMW_DEVICE_HANDLE hDevice,
-    float32_t AVDDVoltage)
-{
-
-    WRITE_REG_FLOAT(hDevice, AVDDVoltage, CORE_AVDD_VOLTAGE);
-
-    return ADMW_SUCCESS;
-}
 
 ADMW_RESULT admw1001_SetMeasurementConfig(
     ADMW_DEVICE_HANDLE hDevice,
@@ -1197,25 +1139,13 @@
     }
 
     eRet = admw_SetCycleControl(hDevice, pMeasConfig->cycleInterval,
-                                pMeasConfig->vBiasEnable,
-                                pMeasConfig->excitationState,
-                                pMeasConfig->groundSwitch );
+                                pMeasConfig->vBiasEnable);
     if (eRet != ADMW_SUCCESS) {
         ADMW_LOG_ERROR("Failed to set cycle control");
         return eRet;
     }
 
-    if (pMeasConfig->fifoNumCycles > 0) {
-        eRet = admw_SetFifoNumCycles(hDevice,
-                                     pMeasConfig->fifoNumCycles);
-    }
-
-    if (eRet != ADMW_SUCCESS) {
-        ADMW_LOG_ERROR("Failed to set the FIFO number of cycles.");
-        return eRet;
-    }
-
-    if(pMeasConfig->externalRef1Value > 0) {
+    if(pMeasConfig->externalRef1Value>0) {
         eRet = admw_SetExternalReferenceValues(hDevice,
                                                pMeasConfig->externalRef1Value);
     }
@@ -1225,30 +1155,23 @@
         return eRet;
     }
 
-    if((pMeasConfig->AVDDVoltage >= 3.0) && (pMeasConfig->AVDDVoltage <= 3.6)) {
-        eRet = admw_SetAVDDVoltage(hDevice,
-                                   pMeasConfig->AVDDVoltage);
-    }
-
-    if (eRet != ADMW_SUCCESS) {
-        ADMW_LOG_ERROR("Failed to set AVDD Voltge");
-        return eRet;
-    }
-
     eRet = admw_SetRSenseValue(hDevice, pMeasConfig->RSenseValue);
-    if (eRet != ADMW_SUCCESS) {
+    if (eRet != ADMW_SUCCESS)
+    {
         ADMW_LOG_ERROR("Failed to set RSenseValue");
         return eRet;
     }
-
+    
     eRet = admw_SetExternalReferenceVoltage(hDevice, pMeasConfig->externalRefVoltage);
-    if (eRet != ADMW_SUCCESS) {
+    if (eRet != ADMW_SUCCESS)
+    {
         ADMW_LOG_ERROR("Failed to set External reference Voltage");
         return eRet;
-    }
-
+    }    
+          
     return ADMW_SUCCESS;
 }
+
 ADMW_RESULT admw1001_SetDiagnosticsConfig(
     ADMW_DEVICE_HANDLE hDevice,
     ADMW1001_DIAGNOSTICS_CONFIG *pDiagnosticsConfig)
@@ -1262,16 +1185,26 @@
     else
         diagnosticsControlReg.Diag_Meas_En = 1;
 
-    if(pDiagnosticsConfig->osdFrequency <= 0x7F)
+    switch (pDiagnosticsConfig->osdFrequency)
     {
-      diagnosticsControlReg.Diag_OSD_Freq = pDiagnosticsConfig->osdFrequency;
-    }
-    else
-    {
+    case ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED:
+        diagnosticsControlReg.Diag_OSD_Freq = CORE_DIAGNOSTICS_CONTROL_OCD_OFF;
+        break;
+    case ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_CYCLE:
+        diagnosticsControlReg.Diag_OSD_Freq = CORE_DIAGNOSTICS_CONTROL_OCD_PER_1_CYCLE;
+        break;
+    case ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_100_CYCLES:
+        diagnosticsControlReg.Diag_OSD_Freq = CORE_DIAGNOSTICS_CONTROL_OCD_PER_10_CYCLES;
+        break;
+    case ADMW1001_OPEN_SENSOR_DIAGNOSTICS_PER_1000_CYCLES:
+        diagnosticsControlReg.Diag_OSD_Freq = CORE_DIAGNOSTICS_CONTROL_OCD_PER_100_CYCLES;
+        break;
+    default:
         ADMW_LOG_ERROR("Invalid open-sensor diagnostic frequency %d specified",
                         pDiagnosticsConfig->osdFrequency);
         return ADMW_INVALID_PARAM;
     }
+
     WRITE_REG_U8(hDevice, diagnosticsControlReg.VALUE8, CORE_DIAGNOSTICS_CONTROL);
 
     return ADMW_SUCCESS;
@@ -1349,37 +1282,18 @@
 
     /* Ensure that the sensor type is valid for this channel */
     switch(sensorType) {
-        case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT10:
-
-        case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT50:
-        case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100:
-        case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT200:
-        case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT500:
-        case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000:
-        case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000_0P00375:
-        case ADMW1001_ADC_SENSOR_RTD_2WIRE_NI120:
-        case ADMW1001_ADC_SENSOR_RTD_2WIRE_CUSTOM:
-        case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT10:
-
-        case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT50:
+        case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT100:
+        case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000:
+        case ADMW1001_ADC_SENSOR_RTD_3WIRE_1:
+        case ADMW1001_ADC_SENSOR_RTD_3WIRE_2:
+        case ADMW1001_ADC_SENSOR_RTD_3WIRE_3:
+        case ADMW1001_ADC_SENSOR_RTD_3WIRE_4:
         case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT100:
-        case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT200:
-        case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT500:
         case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000:
-        case ADMW1001_ADC_SENSOR_RTD_4WIRE_PT1000_0P00375:
-        case ADMW1001_ADC_SENSOR_RTD_4WIRE_NI120:
-        case ADMW1001_ADC_SENSOR_RTD_4WIRE_CUSTOM:
-        case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT10:
-
-        case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT50:
-        case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT100:
-        case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT200:
-        case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT500:
-        case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000:
-        case ADMW1001_ADC_SENSOR_RTD_3WIRE_PT1000_0P00375 :
-
-        case ADMW1001_ADC_SENSOR_RTD_3WIRE_NI120:
-        case ADMW1001_ADC_SENSOR_RTD_3WIRE_CUSTOM:
+        case ADMW1001_ADC_SENSOR_RTD_4WIRE_1:
+        case ADMW1001_ADC_SENSOR_RTD_4WIRE_2:
+        case ADMW1001_ADC_SENSOR_RTD_4WIRE_3:
+        case ADMW1001_ADC_SENSOR_RTD_4WIRE_4:
         case ADMW1001_ADC_SENSOR_BRIDGE_4WIRE_1:
         case ADMW1001_ADC_SENSOR_BRIDGE_4WIRE_2:
         case ADMW1001_ADC_SENSOR_BRIDGE_4WIRE_3:
@@ -1388,23 +1302,29 @@
         case ADMW1001_ADC_SENSOR_BRIDGE_6WIRE_2:
         case ADMW1001_ADC_SENSOR_BRIDGE_6WIRE_3:
         case ADMW1001_ADC_SENSOR_BRIDGE_6WIRE_4:
-        case ADMW1001_ADC_SENSOR_DIODE:
-        case ADMW1001_ADC_SENSOR_THERMISTOR_44004_44033_2P252K_AT_25C:
-        case ADMW1001_ADC_SENSOR_THERMISTOR_44005_44030_3K_AT_25C:
-        case ADMW1001_ADC_SENSOR_THERMISTOR_44007_44034_5K_AT_25C:
-        case ADMW1001_ADC_SENSOR_THERMISTOR_44006_44031_10K_AT_25C:
-        case ADMW1001_ADC_SENSOR_THERMISTOR_44008_44032_30K_AT_25C:
-        case ADMW1001_ADC_SENSOR_THERMISTOR_YSI_400:
-        case ADMW1001_ADC_SENSOR_THERMISTOR_SPECTRUM_1003K_1K:
-        case ADMW1001_ADC_SENSOR_THERMISTOR_CUSTOM_STEINHART_HART:
-        case ADMW1001_ADC_SENSOR_THERMISTOR_CUSTOM_TABLE:
+        case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100:
+        case ADMW1001_ADC_SENSOR_RTD_2WIRE_PT1000:
+        case ADMW1001_ADC_SENSOR_RTD_2WIRE_1:
+        case ADMW1001_ADC_SENSOR_RTD_2WIRE_2:
+        case ADMW1001_ADC_SENSOR_RTD_2WIRE_3:
+        case ADMW1001_ADC_SENSOR_RTD_2WIRE_4:
+        case ADMW1001_ADC_SENSOR_DIODE_2C_TYPEA:
+        case ADMW1001_ADC_SENSOR_DIODE_3C_TYPEA:
+        case ADMW1001_ADC_SENSOR_DIODE_2C_1:
+        case ADMW1001_ADC_SENSOR_DIODE_3C_1:
+        case ADMW1001_ADC_SENSOR_THERMISTOR_A_10K:
+        case ADMW1001_ADC_SENSOR_THERMISTOR_B_10K:
+        case ADMW1001_ADC_SENSOR_THERMISTOR_1:
+        case ADMW1001_ADC_SENSOR_THERMISTOR_2:
+        case ADMW1001_ADC_SENSOR_THERMISTOR_3:
+        case ADMW1001_ADC_SENSOR_THERMISTOR_4:
         case ADMW1001_ADC_SENSOR_SINGLE_ENDED_ABSOLUTE:
         case ADMW1001_ADC_SENSOR_DIFFERENTIAL_ABSOLUTE:
         case ADMW1001_ADC_SENSOR_SINGLE_ENDED_RATIO:
         case ADMW1001_ADC_SENSOR_DIFFERENTIAL_RATIO:
-
-            if (! (ADMW1001_CHANNEL_IS_ADC_CJC(eChannelId) ||
-                    ADMW1001_CHANNEL_IS_ADC(eChannelId) )) {
+            if (! (ADMW1001_CHANNEL_IS_ADC_SENSOR(eChannelId) ||
+                   ADMW1001_CHANNEL_IS_ADC_CJC(eChannelId) || ADMW1001_CHANNEL_IS_ADC(eChannelId) ))
+            {
                 ADMW_LOG_ERROR(
                     "Invalid ADC sensor type %d specified for channel %d",
                     sensorType, eChannelId);
@@ -1419,12 +1339,10 @@
         case ADMW1001_ADC_SENSOR_THERMOCOUPLE_J:
         case ADMW1001_ADC_SENSOR_THERMOCOUPLE_K:
         case ADMW1001_ADC_SENSOR_THERMOCOUPLE_T:
-        case ADMW1001_ADC_SENSOR_THERMOCOUPLE_E:
-        case ADMW1001_ADC_SENSOR_THERMOCOUPLE_N:
-        case ADMW1001_ADC_SENSOR_THERMOCOUPLE_R:
-        case ADMW1001_ADC_SENSOR_THERMOCOUPLE_S:
-        case ADMW1001_ADC_SENSOR_THERMOCOUPLE_B:
-        case ADMW1001_ADC_SENSOR_THERMOCOUPLE_CUSTOM:
+        case ADMW1001_ADC_SENSOR_THERMOCOUPLE_1:
+        case ADMW1001_ADC_SENSOR_THERMOCOUPLE_2:
+        case ADMW1001_ADC_SENSOR_THERMOCOUPLE_3:
+        case ADMW1001_ADC_SENSOR_THERMOCOUPLE_4:
             if (! ADMW1001_CHANNEL_IS_ADC_VOLTAGE(eChannelId)) {
                 ADMW_LOG_ERROR(
                     "Invalid ADC sensor type %d specified for channel %d",
@@ -1575,6 +1493,7 @@
 
     switch (pChannelConfig->lutSelect) {
         case ADMW1001_LUT_DEFAULT:
+        case ADMW1001_LUT_UNITY:
         case ADMW1001_LUT_CUSTOM:
             sensorDetailsReg.LUT_Select = pChannelConfig->lutSelect;
             break;
@@ -1597,8 +1516,9 @@
     ADMW_CORE_Measurement_Setup_t MeasSetupReg;
     ADMW1001_ADC_FILTER_CONFIG *pFilterConfig = &pAdcChannelConfig->filter;
     MeasSetupReg.VALUE32 = REG_RESET_VAL(CORE_MEASUREMENT_SETUPn);
+    MeasSetupReg.PST_MEAS_EXC_CTRL = pAdcChannelConfig->current.excitationState;
     MeasSetupReg.Buffer_Bypass = pAdcChannelConfig->bufferBypass;
-
+    
     if (pFilterConfig->type == ADMW1001_ADC_FILTER_SINC4) {
         MeasSetupReg.ADC_Filter_Type = CORE_MEASUREMENT_SETUP_ENABLE_SINC4;
         MeasSetupReg.ADC_SF = pFilterConfig->sf;
@@ -1619,6 +1539,19 @@
     else
         MeasSetupReg.NOTCH_EN_2 = 0;
 
+    switch(pFilterConfig->groundSwitch) {
+        case ADMW1001_ADC_GND_SW_OPEN:
+            MeasSetupReg.GND_SW = CORE_MEASUREMENT_SETUP_GND_SW_OPEN;
+            break;
+        case ADMW1001_ADC_GND_SW_CLOSED:
+            MeasSetupReg.GND_SW = CORE_MEASUREMENT_SETUP_GND_SW_CLOSED;
+            break;
+        default:
+            ADMW_LOG_ERROR("Invalid ground switch state %d specified",
+                           pFilterConfig->groundSwitch);
+            return ADMW_INVALID_PARAM;
+    }
+
     WRITE_REG_U32(hDevice, MeasSetupReg.VALUE32, CORE_MEASUREMENT_SETUPn(eChannelId));
 
     return ADMW_SUCCESS;
@@ -1684,7 +1617,7 @@
     }
 
     eRet = admw_SetChannelAdcMeasurementSetup(hDevice, eChannelId,
-            pAdcChannelConfig);
+                                         pAdcChannelConfig);
     if (eRet != ADMW_SUCCESS) {
         ADMW_LOG_ERROR("Failed to set ADC filter for channel %d",
                        eChannelId);
@@ -1831,7 +1764,6 @@
     switch(sensorType) {
         case ADMW1001_I2C_SENSOR_HUMIDITY_A:
         case ADMW1001_I2C_SENSOR_HUMIDITY_B:
-        case ADMW1001_I2C_SENSOR_TEMPERATURE_ADT742X:
             sensorTypeReg.Sensor_Type = sensorType;
             break;
         default:
@@ -1865,6 +1797,7 @@
     digitalSensorComms.VALUE16 = REG_RESET_VAL(CORE_DIGITAL_SENSOR_COMMSn);
 
     if(pDigitalComms->useCustomCommsConfig) {
+        digitalSensorComms.Digital_Sensor_Comms_En = 1;
 
         if(pDigitalComms->i2cClockSpeed == ADMW1001_DIGITAL_SENSOR_COMMS_I2C_CLOCK_SPEED_100K) {
             digitalSensorComms.I2C_Clock = CORE_DIGITAL_SENSOR_COMMS_I2C_100K;
@@ -1944,9 +1877,10 @@
                                pDigitalComms->spiClock);
                 return ADMW_INVALID_PARAM;
         }
+    } else {
+        digitalSensorComms.Digital_Sensor_Comms_En = 0;
     }
 
-
     WRITE_REG_U16(hDevice, digitalSensorComms.VALUE16, CORE_DIGITAL_SENSOR_COMMSn(eChannelId));
 
     return ADMW_SUCCESS;
@@ -2157,6 +2091,16 @@
 {
     ADMW_CORE_Settling_Time_t settlingTimeReg;
 
+    if (nSettlingTime < (1 << 12)) {
+        settlingTimeReg.Settling_Time_Units = CORE_SETTLING_TIME_MICROSECONDS;
+    } else if (nSettlingTime < (1000 * (1 << 12))) {
+        settlingTimeReg.Settling_Time_Units = CORE_SETTLING_TIME_MILLISECONDS;
+        nSettlingTime /= 1000;
+    } else {
+        settlingTimeReg.Settling_Time_Units = CORE_SETTLING_TIME_SECONDS;
+        nSettlingTime /= 1000000;
+    }
+
     CHECK_REG_FIELD_VAL(CORE_SETTLING_TIME_SETTLING_TIME, nSettlingTime);
     settlingTimeReg.Settling_Time = nSettlingTime;
 
@@ -2322,7 +2266,8 @@
     }
 
     eRet = admw1001_SetDiagnosticsConfig(hDevice, &pDeviceConfig->diagnostics);
-    if (eRet) {
+    if (eRet)
+    {
         ADMW_LOG_ERROR("Failed to set diagnostics configuration");
         return eRet;
     }
@@ -2347,7 +2292,6 @@
 {
     ADMW1001_LUT_HEADER *pLutHeader = &pLutData->header;
     ADMW1001_LUT_TABLE  *pLutTable = pLutData->tables;
-
     unsigned actualLength = 0;
 
     if (pLutData->header.signature != ADMW_LUT_SIGNATURE) {
@@ -2355,10 +2299,7 @@
                        ADMW_LUT_SIGNATURE, pLutHeader->signature);
         return ADMW_INVALID_SIGNATURE;
     }
-    if ((pLutData->tables->descriptor.geometry!= ADMW1001_LUT_GEOMETRY_NES_1D) &&
-            (pLutData->tables->data.lut1dNes.nElements > MAX_LUT_NUM_ENTRIES)) {
-        return ADMW_INVALID_PARAM;
-    }
+
     for (unsigned i = 0; i < pLutHeader->numTables; i++) {
         ADMW1001_LUT_DESCRIPTOR *pDesc = &pLutTable->descriptor;
         ADMW1001_LUT_TABLE_DATA *pData = &pLutTable->data;
@@ -2381,6 +2322,14 @@
                 }
                 break;
             case ADMW1001_LUT_GEOMETRY_NES_1D:
+            case ADMW1001_LUT_GEOMETRY_NES_2D:
+            case ADMW1001_LUT_GEOMETRY_ES_1D:
+            case ADMW1001_LUT_GEOMETRY_ES_2D:
+                if (pDesc->equation != ADMW1001_LUT_EQUATION_LUT) {
+                    ADMW_LOG_ERROR("Invalid equation %u specified for LUT table %u",
+                                   pDesc->equation, i);
+                    return ADMW_INVALID_PARAM;
+                }
                 break;
             default:
                 ADMW_LOG_ERROR("Invalid geometry %u specified for LUT table %u",
@@ -2430,6 +2379,7 @@
 
     return ADMW_SUCCESS;
 }
+
 ADMW_RESULT admw1001_SetLutDataRaw(
     ADMW_DEVICE_HANDLE    const hDevice,
     ADMW1001_LUT_RAW   * const pLutData)
@@ -2446,11 +2396,22 @@
     switch (pDesc->geometry) {
         case ADMW1001_LUT_GEOMETRY_COEFFS:
             if (pDesc->equation == ADMW1001_LUT_EQUATION_BIVARIATE_POLYN)
+                *pLength = ADMW1001_LUT_2D_POLYN_COEFF_LIST_SIZE(pData->coeffList2d);
+            else
                 *pLength = ADMW1001_LUT_COEFF_LIST_SIZE(pData->coeffList);
             break;
         case ADMW1001_LUT_GEOMETRY_NES_1D:
             *pLength = ADMW1001_LUT_1D_NES_SIZE(pData->lut1dNes);
             break;
+        case ADMW1001_LUT_GEOMETRY_NES_2D:
+            *pLength = ADMW1001_LUT_2D_NES_SIZE(pData->lut2dNes);
+            break;
+        case ADMW1001_LUT_GEOMETRY_ES_1D:
+            *pLength = ADMW1001_LUT_1D_ES_SIZE(pData->lut1dEs);
+            break;
+        case ADMW1001_LUT_GEOMETRY_ES_2D:
+            *pLength = ADMW1001_LUT_2D_ES_SIZE(pData->lut2dEs);
+            break;
         default:
             ADMW_LOG_ERROR("Invalid LUT table geometry %d specified\r\n",
                            pDesc->geometry);
--- a/src/mbed/admw_spi.cpp	Mon Feb 17 11:23:39 2020 +0000
+++ b/src/mbed/admw_spi.cpp	Fri Mar 06 17:03:18 2020 +0000
@@ -1,5 +1,5 @@
 /******************************************************************************
-Copyright 2017 (c) Analog Devices, Inc.
+Copyright 2019 (c) Analog Devices, Inc.
 
 All rights reserved.
 
@@ -106,22 +106,15 @@
     pCtx->_spi->format(ADMW_SPI_FRAME_SIZE, 1);
     
     int rc = 0;
-   
-    *(pCtx->_wakeup) = 1;
-     wait_ms(0.03);
     
     *(pCtx->_cs) = 0;
     
-     
-    
     rc  = pCtx->_spi->write((char*)(pTxData), pTxData ? nLength : 0,
                      (char*)(pRxData), pRxData ? nLength : 0);
     
     if ((rc < 0) || !bCsHold)
         *(pCtx->_cs) = 1;
     
-       *(pCtx->_wakeup) = 0;
-       
     if (rc < 0)
     {
         ADMW_LOG_ERROR("Failed to complete SPI transfer");
@@ -147,9 +140,7 @@
     int rc = 0;
     
     SpiContext_t *pCtx = (SpiContext_t*)hDevice;
-
-    *(pCtx->_wakeup) = 1;
-     wait_ms(0.03);    
+    
     *(pCtx->_cs) = 0;
     
     rc  = pCtx->_spi->write((char*)(pTxData), pTxData ? nLength : 0,
@@ -157,9 +148,7 @@
     
     if ((rc < 0) || !bCsHold)
         *(pCtx->_cs) = 1;
- 
-    *(pCtx->_wakeup) = 0;
-        
+    
     if (rc < 0)
     {
         ADMW_LOG_ERROR("Failed to complete SPI transfer");
@@ -190,4 +179,4 @@
 
 /*!
  * @}
- */
\ No newline at end of file
+ */
--- a/thermocouple_typeJ_cjc0_config.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/thermocouple_typeJ_cjc0_config.c	Fri Mar 06 17:03:18 2020 +0000
@@ -55,15 +55,13 @@
             .externalRefVoltage = 0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
-            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
-            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,             
             .cycleInterval = 0,
             .RSenseValue = 1000.0,  
         },
         .diagnostics = {
             .disableGlobalDiag = true,
             .disableMeasurementDiag = true,
-            .osdFrequency = 0,
+            .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
         },
         .channels = {
             [ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -85,6 +83,7 @@
                     .sensor = ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100,
                     .gain = ADMW1001_ADC_GAIN_1X,
                     .current = {
+                        .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
                         .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
                         .diodeRatio = 0,
                     },
@@ -94,6 +93,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -122,6 +122,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
--- a/thermocouple_typeK_cjc0_config.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/thermocouple_typeK_cjc0_config.c	Fri Mar 06 17:03:18 2020 +0000
@@ -54,11 +54,9 @@
             .powerMode = ADMW1001_POWER_MODE_ACTIVE,
         },
         .measurement = {
-            .externalRefVoltage = 0.0,
+            .externalRefVoltage=0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
-            .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE,
-            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
-            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,
+            .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
             .cycleInterval = 0,
             .vBiasEnable = true,
             .RSenseValue = 1000.0,
@@ -66,7 +64,7 @@
         .diagnostics = {
             .disableGlobalDiag = true,
             .disableMeasurementDiag = true,
-            .osdFrequency = 0,
+            .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
         },
         .channels = {
             [ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -74,23 +72,31 @@
                 .disablePublishing = false,
                 .compensationChannel = ADMW1001_CH_ID_NONE,
                 .lutSelect = ADMW1001_LUT_DEFAULT,
-                .measurementUnit = ADMW1001_MEASUREMENT_UNIT_UNSPECIFIED,
-                .lowThreshold = 0,
-                .highThreshold = 45359.2,
-                .measurementsPerCycle = 1,
+                .measurementUnit = ADMW1001_MEASUREMENT_UNIT_CELSIUS,
+                .lowThreshold = -50,
+                .highThreshold = 250,
+                .offsetAdjustment = 0.0,
+                .gainAdjustment = 0.0,
+                .sensorParameter = 0.0,
+                .measurementsPerCycle = 10,
+                .cycleSkipCount = 0,
+                .extraSettlingTime = 0,
+                .priority = 0,
                 .adcChannelConfig = {
                     .sensor = ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100,
                     .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
                     .gain = ADMW1001_ADC_GAIN_1X,
                     .current = {
+                        .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
                         .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
-                        .diodeRatio = (ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO)0,
+                        .diodeRatio = 0,
                     },
                     .filter = {
                         .type = ADMW1001_ADC_FILTER_SINC3,
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = false,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -107,23 +113,25 @@
                 .offsetAdjustment = 0.0,
                 .gainAdjustment = 0.0,
                 .sensorParameter = 0.0,
-                .measurementsPerCycle = 1,
+                .measurementsPerCycle = 10,
                 .cycleSkipCount = 0,
-                .extraSettlingTime = 0,
-                .priority = ADMW1001_CHANNEL_PRIORITY_0,
+                .extraSettlingTime = 4499.99986449257,
+                .priority = 0,
                 .adcChannelConfig = {
                     .sensor = ADMW1001_ADC_SENSOR_THERMOCOUPLE_K,
                     .rtdCurve = ADMW1001_ADC_RTD_CURVE_EUROPEAN,
                     .gain = ADMW1001_ADC_GAIN_8X,
                     .current = {
+                        .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,
                         .outputLevel = ADMW1001_ADC_NO_EXTERNAL_EXC_CURRENT,
-                        .diodeRatio = (ADMW1001_ADC_EXC_CURRENT_DIODE_RATIO)0,
+                        .diodeRatio = 0,
                     },
                     .filter = {
                         .type = ADMW1001_ADC_FILTER_SINC3,
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
-                        .notch1p2 = true,
+                        .notch1p2 = false,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -131,4 +139,5 @@
             },
         },
     },
-};
\ No newline at end of file
+};
+
--- a/thermocouple_typeT_cjc0_config.c	Mon Feb 17 11:23:39 2020 +0000
+++ b/thermocouple_typeT_cjc0_config.c	Fri Mar 06 17:03:18 2020 +0000
@@ -52,15 +52,13 @@
             .externalRefVoltage = 0.0,
             .operatingMode = ADMW1001_OPERATING_MODE_CONTINUOUS,
             .dataReadyMode = ADMW1001_DATAREADY_PER_CYCLE, // FIX: Temporarily all values from json are hardcoded to this one in the Contracts.FileGenerator - > file translations!!
-            .excitationState= ADMW1001_ADC_EXC_STATE_CYCLE_POWER,                
-            .groundSwitch = ADMW1001_ADC_GND_SW_OPEN,              
             .cycleInterval = 0,
             .RSenseValue = 1000.0, 
         },
         .diagnostics = {
             .disableGlobalDiag = true,
             .disableMeasurementDiag = true,
-            .osdFrequency = 0,
+            .osdFrequency = ADMW1001_OPEN_SENSOR_DIAGNOSTICS_DISABLED,
         },
         .channels = {
             [ADMW1001_CH_ID_ANLG_1_UNIVERSAL] = {
@@ -82,6 +80,7 @@
                     .sensor = ADMW1001_ADC_SENSOR_RTD_2WIRE_PT100,
                     .gain = ADMW1001_ADC_GAIN_1X,
                     .current = {
+                        .excitationState= ADMW1001_ADC_EXC_STATE_ALWAYS_ON,
                         .outputLevel = ADMW1001_ADC_EXC_CURRENT_250uA,
                         .diodeRatio = 0,
                     },
@@ -91,6 +90,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,
@@ -119,6 +119,7 @@
                         .sf = ADMW1001_SF_8P24HZ,
                         .chopMode = ADMW1001_CHOP_MD_SW,
                         .notch1p2 = true,
+                        .groundSwitch = ADMW1001_ADC_GND_SW_OPEN
                     },
                     .reference = ADMW1001_ADC_REFERENCE_VOLTAGE_INTERNAL,
                     .bufferBypass = ADMW1001_BUFFER_BYPASSS_DISABLED,