Maxim Integrated / Mbed OS MAX5171BOB_Serial_Tester

Dependencies:   MaximTinyTester CmdLine MAX5171 USBDevice

Files at this revision

API Documentation at this revision

Comitter:
whismanoid
Date:
Fri Apr 03 06:27:43 2020 +0000
Parent:
22:a14c19b97d0b
Child:
24:3ef3dd32c7b5
Commit message:
Support MAX5171BOB Self Test

Changed in this revision

MAX5171.lib Show annotated file Show diff for this revision Revisions of this file
MaximTinyTester.lib Show annotated file Show diff for this revision Revisions of this file
Test_Main_MAX5171.cpp Show annotated file Show diff for this revision Revisions of this file
Test_Menu_MAX5171.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/MAX5171.lib	Thu Mar 12 23:37:48 2020 +0000
+++ b/MAX5171.lib	Fri Apr 03 06:27:43 2020 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/teams/MaximIntegrated/code/MAX5171/#e8c0dfaeb53b
+https://os.mbed.com/teams/MaximIntegrated/code/MAX5171/#f661c4a61207
--- a/MaximTinyTester.lib	Thu Mar 12 23:37:48 2020 +0000
+++ b/MaximTinyTester.lib	Fri Apr 03 06:27:43 2020 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/users/whismanoid/code/MaximTinyTester/#5b40b6370f8a
+https://os.mbed.com/users/whismanoid/code/MaximTinyTester/#bfa56dab822c
--- a/Test_Main_MAX5171.cpp	Thu Mar 12 23:37:48 2020 +0000
+++ b/Test_Main_MAX5171.cpp	Fri Apr 03 06:27:43 2020 +0000
@@ -1,4 +1,4 @@
-// /*******************************************************************************
+// /*******************************************************************************
 // * Copyright (C) 2020 Maxim Integrated Products, Inc., All Rights Reserved.
 // *
 // * Permission is hereby granted, free of charge, to any person obtaining a
@@ -76,6 +76,9 @@
 #if defined(TARGET_MAX32625MBED)
 #include "USBSerial.h"
 USBSerial serial; // virtual serial port over USB (DEV connector)
+#elif defined(TARGET_MAX32600MBED)
+#include "USBSerial.h"
+USBSerial serial; // virtual serial port over USB (DEV connector)
 #elif defined(TARGET_MAX32630MBED)
 #include "USBSerial.h"
 USBSerial serial; // virtual serial port over USB (DEV connector)
@@ -739,29 +742,33 @@
 #endif
 //--------------------------------------------------
 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
-    #define HAS_digitalInOut0 0 // P0_0 TARGET_MAX32625MBED D0
-    #define HAS_digitalInOut1 0 // P0_1 TARGET_MAX32625MBED D1
+    #define HAS_digitalInOut0 0
+    #define HAS_digitalInOut1 0
 #if APPLICATION_MAX11131
-    #define HAS_digitalInOut2 0 // P0_2 TARGET_MAX32625MBED D2 -- MAX11131 EOC DigitalIn
+    // D2 -- MAX11131 EOC DigitalIn
+    #define HAS_digitalInOut2 0
 #else
-    #define HAS_digitalInOut2 1 // P0_2 TARGET_MAX32625MBED D2
-#endif
-    #define HAS_digitalInOut3 1 // P0_3 TARGET_MAX32625MBED D3
-    #define HAS_digitalInOut4 1 // P0_4 TARGET_MAX32625MBED D4
-    #define HAS_digitalInOut5 1 // P0_5 TARGET_MAX32625MBED D5
-    #define HAS_digitalInOut6 1 // P0_6 TARGET_MAX32625MBED D6
-    #define HAS_digitalInOut7 1 // P0_7 TARGET_MAX32625MBED D7
+    #define HAS_digitalInOut2 1
+#endif
+    #define HAS_digitalInOut3 1
+    #define HAS_digitalInOut4 1
+    #define HAS_digitalInOut5 1
+    #define HAS_digitalInOut6 1
+    #define HAS_digitalInOut7 1
 #if APPLICATION_MAX5715
-    #define HAS_digitalInOut8 0 // P1_4 TARGET_MAX32625MBED D8 -- MAX5715 CLRb DigitalOut
+    // D8 -- MAX5715 CLRb DigitalOut
+    #define HAS_digitalInOut8 0
 #else
-    #define HAS_digitalInOut8 1 // P1_4 TARGET_MAX32625MBED D8
+    #define HAS_digitalInOut8 1
 #endif
 #if APPLICATION_MAX5715
-    #define HAS_digitalInOut9 0 // P1_5 TARGET_MAX32625MBED D9 -- MAX5715 LDACb DigitalOut
+    // D9 -- MAX5715 LDACb DigitalOut
+    #define HAS_digitalInOut9 0
 #elif APPLICATION_MAX11131
-    #define HAS_digitalInOut9 0 // P1_5 TARGET_MAX32625MBED D9 -- MAX11131 CNVST DigitalOut
+    // D9 -- MAX11131 CNVST DigitalOut
+    #define HAS_digitalInOut9 0
 #else
-    #define HAS_digitalInOut9 1 // P1_5 TARGET_MAX32625MBED D9
+    #define HAS_digitalInOut9 1
 #endif
 #if HAS_SPI
 // avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
@@ -955,6 +962,8 @@
     || HAS_digitalInOut14 || HAS_digitalInOut15 \
     || HAS_digitalInOut16 || HAS_digitalInOut17
 #define HAS_digitalInOuts 1
+#else
+#warning "Note: There are no digitalInOut resources defined"
 #endif
 
 // uncrustify-0.66.1 *INDENT-OFF*
@@ -1305,6 +1314,8 @@
     || HAS_analogIn12 || HAS_analogIn13 \
     || HAS_analogIn14 || HAS_analogIn15
 #define HAS_analogIns 1
+#else
+#warning "Note: There are no analogIn resources defined"
 #endif
 
 // DigitalInOut pin resource: print the pin index names to serial
@@ -1690,13 +1701,21 @@
 #define D13 P1_0
 #endif
 
-// example code declare SPI interface
+// example code declare SPI interface (GPIO controlled CS)
 #if defined(TARGET_MAX32625MBED)
 SPI spi(SPI1_MOSI, SPI1_MISO, SPI1_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625MBED: P1_1 P1_2 P1_0 Arduino 10-pin header D11 D12 D13
 DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32625MBED: P1_3 Arduino 10-pin header D10
 #elif defined(TARGET_MAX32600MBED)
 SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
 DigitalOut spi_cs(SPI2_SS); // Generic: Arduino 10-pin header D10
+#elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
+// TODO1: avoid resource conflict between P5_0, P5_1, P5_2 SPI and DigitalInOut
+// void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
+//
+// TODO1: NUCLEO_F446RE SPI not working; CS and MOSI data looks OK but no SCLK clock pulses.
+SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK); // mosi, miso, sclk spi1 TARGET_NUCLEO_F446RE: Arduino 10-pin header D11 D12 D13
+DigitalOut spi_cs(SPI_CS); // TARGET_NUCLEO_F446RE: PB_6 Arduino 10-pin header D10
+//
 #else
 SPI spi(D11, D12, D13); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
 DigitalOut spi_cs(D10); // Generic: Arduino 10-pin header D10
@@ -1724,10 +1743,6 @@
 #define MAX5171_ONSPIPRINT 1
 #endif // MAX5171_ONSPIPRINT
 
-//----------------------------------------
-// Global I2C options
-//
-
 #define APPLICATION_ArduinoPinsMonitor 1
 
 //--------------------------------------------------
@@ -1804,6 +1819,43 @@
 #endif
 
 //--------------------------------------------------
+// functions tested by SelfTest()
+extern uint16_t fn_MAX5171_DACCodeOfVoltage(double voltageV);
+extern double fn_MAX5171_VoltageOfCode(int value_u14);
+extern void fn_MAX5171_Init(void);
+extern uint8_t fn_MAX5171_CODE_LOAD(int dacCodeLsbs);
+extern uint8_t fn_MAX5171_UPO_HIGH(void);
+extern uint8_t fn_MAX5171_UPO_LOW(void);
+
+//--------------------------------------------------
+// optional self-test groups for self test function SelfTest()
+// enable by changing the #define value from 0 to 1
+
+// SelfTest group DACCodeOfVoltage description:
+// Verify function DACCodeOfVoltage (enabled by default)
+#ifndef MAX5171_SELFTEST_DACCodeOfVoltage
+#define MAX5171_SELFTEST_DACCodeOfVoltage 1
+#endif
+
+// SelfTest group VoltageOfCode description:
+// Verify function VoltageOfCode (enabled by default)
+#ifndef MAX5171_SELFTEST_VoltageOfCode
+#define MAX5171_SELFTEST_VoltageOfCode 1
+#endif
+
+// SelfTest group CODE_LOAD description:
+// Verify function CODE_LOAD (enabled by default)
+#ifndef MAX5171_SELFTEST_CODE_LOAD
+#define MAX5171_SELFTEST_CODE_LOAD 1
+#endif
+
+// SelfTest group UPO description:
+// Verify User Programmable Output functions UPO_HIGH and UPO_LOW (enabled by default)
+#ifndef MAX5171_SELFTEST_UPO
+#define MAX5171_SELFTEST_UPO 1
+#endif
+
+//--------------------------------------------------
 // When user presses button BUTTON1, perform self test
 #if HAS_BUTTON1_DEMO_INTERRUPT
 void onButton1FallingEdge(void)
@@ -1850,6 +1902,806 @@
 #endif
     tinyTester.clear();
 
+    // @test group DACCodeOfVoltage // Verify function DACCodeOfVoltage (enabled by default)
+    // @test group DACCodeOfVoltage tinyTester.blink_time_msec = 20 // quickly speed through the software verification
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'tinyTester.blink_time_msec = 20'
+    // docTest_item['remarks'] = 'quickly speed through the software verification'
+    // docTest_item['propName'] = 'tinyTester.blink_time_msec'
+    // docTest_item['propValue'] = '20'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage None quickly speed through the software verification
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.blink_time_msec"
+    // tinyTesterPropValue = "20"
+    tinyTester.blink_time_msec = 20;
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage tinyTester.print("VRef = 2.500  MAX5171 14-bit LSB = 0.00015V")
+    // docTest_item['actionType'] = 'print-string'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'tinyTester.print("VRef = 2.500  MAX5171 14-bit LSB = 0.00015V")'
+    // docTest_item['arglist'] = 'VRef = 2.500  MAX5171 14-bit LSB = 0.00015V'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage None 
+    // print-string
+    // tinyTesterFuncName = "tinyTester.print"
+    // tinyTesterPrintStringLiteral = "VRef = 2.500  MAX5171 14-bit LSB = 0.00015V"
+    tinyTester.print("VRef = 2.500  MAX5171 14-bit LSB = 0.00015V");
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage VRef = 2.500
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'VRef = 2.500'
+    // docTest_item['propName'] = 'VRef'
+    // docTest_item['propValue'] = '2.500'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage None 
+    // assign-propname-value
+    // tinyTesterPropName = "VRef"
+    // tinyTesterPropValue = "2.500"
+    g_MAX5171_device.VRef = 2.500;
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage tinyTester.err_threshold = 0.00015259720441921504 // 14-bit LSB (2.500/16383)
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'tinyTester.err_threshold = 0.00015259720441921504'
+    // docTest_item['remarks'] = '14-bit LSB (2.500/16383)'
+    // docTest_item['propName'] = 'tinyTester.err_threshold'
+    // docTest_item['propValue'] = '0.00015259720441921504'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage None 14-bit LSB (2.500/16383)
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.err_threshold"
+    // tinyTesterPropValue = "0.00015259720441921504"
+    tinyTester.err_threshold = 0.00015259720441921504;
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(2.499847412109375) expect 0x3FFF
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(2.499847412109375) expect 0x3FFF'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '2.499847412109375'
+    // docTest_item['expect-value'] = '0x3FFF'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)2.499847412109375), (uint16_t)0x3FFF); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)2.499847412109375, /* expect: */ (uint16_t)0x3FFF); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(2.49969482421875) expect 0x3FFE
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(2.49969482421875) expect 0x3FFE'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '2.49969482421875'
+    // docTest_item['expect-value'] = '0x3FFE'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)2.49969482421875), (uint16_t)0x3FFE); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)2.49969482421875, /* expect: */ (uint16_t)0x3FFE); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(2.499542236328125) expect 0x3FFD
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(2.499542236328125) expect 0x3FFD'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '2.499542236328125'
+    // docTest_item['expect-value'] = '0x3FFD'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)2.499542236328125), (uint16_t)0x3FFD); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)2.499542236328125, /* expect: */ (uint16_t)0x3FFD); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(2.4993896484375) expect 0x3FFC
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(2.4993896484375) expect 0x3FFC'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '2.4993896484375'
+    // docTest_item['expect-value'] = '0x3FFC'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)2.4993896484375), (uint16_t)0x3FFC); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)2.4993896484375, /* expect: */ (uint16_t)0x3FFC); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(1.250152587890625) expect 0x2001
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(1.250152587890625) expect 0x2001'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '1.250152587890625'
+    // docTest_item['expect-value'] = '0x2001'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)1.250152587890625), (uint16_t)0x2001); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)1.250152587890625, /* expect: */ (uint16_t)0x2001); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(1.25) expect 0x2000
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(1.25) expect 0x2000'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '1.25'
+    // docTest_item['expect-value'] = '0x2000'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)1.25), (uint16_t)0x2000); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)1.25, /* expect: */ (uint16_t)0x2000); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(1.249847412109375) expect 0x1FFF
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(1.249847412109375) expect 0x1FFF'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '1.249847412109375'
+    // docTest_item['expect-value'] = '0x1FFF'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)1.249847412109375), (uint16_t)0x1FFF); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)1.249847412109375, /* expect: */ (uint16_t)0x1FFF); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(1.24969482421875) expect 0x1FFE
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(1.24969482421875) expect 0x1FFE'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '1.24969482421875'
+    // docTest_item['expect-value'] = '0x1FFE'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)1.24969482421875), (uint16_t)0x1FFE); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)1.24969482421875, /* expect: */ (uint16_t)0x1FFE); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(0.000457763671875) expect 0x0003
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(0.000457763671875) expect 0x0003'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '0.000457763671875'
+    // docTest_item['expect-value'] = '0x0003'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)0.000457763671875), (uint16_t)0x0003); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)0.000457763671875, /* expect: */ (uint16_t)0x0003); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(0.00030517578125) expect 0x0002
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(0.00030517578125) expect 0x0002'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '0.00030517578125'
+    // docTest_item['expect-value'] = '0x0002'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)0.00030517578125), (uint16_t)0x0002); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)0.00030517578125, /* expect: */ (uint16_t)0x0002); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(0.000152587890625) expect 0x0001
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(0.000152587890625) expect 0x0001'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '0.000152587890625'
+    // docTest_item['expect-value'] = '0x0001'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)0.000152587890625), (uint16_t)0x0001); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)0.000152587890625, /* expect: */ (uint16_t)0x0001); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage DACCodeOfVoltage(0.00000) expect 0x0000
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'DACCodeOfVoltage(0.00000) expect 0x0000'
+    // docTest_item['funcName'] = 'DACCodeOfVoltage'
+    // docTest_item['arglist'] = '0.00000'
+    // docTest_item['expect-value'] = '0x0000'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage DACCodeOfVoltage 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.DACCodeOfVoltage((double)0.00000), (uint16_t)0x0000); // 
+    tinyTester.FunctionCall_Expect("MAX5171.DACCodeOfVoltage", fn_MAX5171_DACCodeOfVoltage, (double)0.00000, /* expect: */ (uint16_t)0x0000); // 
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group DACCodeOfVoltage tinyTester.blink_time_msec = 75 // default 75 resume hardware self test
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'DACCodeOfVoltage'
+    // docTest_item['action'] = 'tinyTester.blink_time_msec = 75'
+    // docTest_item['remarks'] = 'default 75 resume hardware self test'
+    // docTest_item['propName'] = 'tinyTester.blink_time_msec'
+    // docTest_item['propValue'] = '75'
+#if MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage None default 75 resume hardware self test
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.blink_time_msec"
+    // tinyTesterPropValue = "75"
+    tinyTester.blink_time_msec = 75;
+#endif // MAX5171_SELFTEST_DACCodeOfVoltage // group DACCodeOfVoltage
+
+    // @test group VoltageOfCode // Verify function VoltageOfCode (enabled by default)
+    // @test group VoltageOfCode tinyTester.blink_time_msec = 20 // quickly speed through the software verification
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'tinyTester.blink_time_msec = 20'
+    // docTest_item['remarks'] = 'quickly speed through the software verification'
+    // docTest_item['propName'] = 'tinyTester.blink_time_msec'
+    // docTest_item['propValue'] = '20'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode None quickly speed through the software verification
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.blink_time_msec"
+    // tinyTesterPropValue = "20"
+    tinyTester.blink_time_msec = 20;
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode tinyTester.print("VRef = 2.500  MAX5171 14-bit LSB = 0.00015V")
+    // docTest_item['actionType'] = 'print-string'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'tinyTester.print("VRef = 2.500  MAX5171 14-bit LSB = 0.00015V")'
+    // docTest_item['arglist'] = 'VRef = 2.500  MAX5171 14-bit LSB = 0.00015V'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode None 
+    // print-string
+    // tinyTesterFuncName = "tinyTester.print"
+    // tinyTesterPrintStringLiteral = "VRef = 2.500  MAX5171 14-bit LSB = 0.00015V"
+    tinyTester.print("VRef = 2.500  MAX5171 14-bit LSB = 0.00015V");
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VRef = 2.500
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VRef = 2.500'
+    // docTest_item['propName'] = 'VRef'
+    // docTest_item['propValue'] = '2.500'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode None 
+    // assign-propname-value
+    // tinyTesterPropName = "VRef"
+    // tinyTesterPropValue = "2.500"
+    g_MAX5171_device.VRef = 2.500;
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode tinyTester.err_threshold = 0.00015259720441921504 // 14-bit LSB (2.500/16383)
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'tinyTester.err_threshold = 0.00015259720441921504'
+    // docTest_item['remarks'] = '14-bit LSB (2.500/16383)'
+    // docTest_item['propName'] = 'tinyTester.err_threshold'
+    // docTest_item['propValue'] = '0.00015259720441921504'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode None 14-bit LSB (2.500/16383)
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.err_threshold"
+    // tinyTesterPropValue = "0.00015259720441921504"
+    tinyTester.err_threshold = 0.00015259720441921504;
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x3FFF) expect 2.499847412109375
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x3FFF) expect 2.499847412109375'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x3FFF'
+    // docTest_item['expect-value'] = '2.499847412109375'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x3FFF), (double)2.499847412109375); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x3FFF, /* expect: */ (double)2.499847412109375); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x3FFE) expect 2.49969482421875
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x3FFE) expect 2.49969482421875'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x3FFE'
+    // docTest_item['expect-value'] = '2.49969482421875'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x3FFE), (double)2.49969482421875); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x3FFE, /* expect: */ (double)2.49969482421875); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x3FFD) expect 2.499542236328125
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x3FFD) expect 2.499542236328125'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x3FFD'
+    // docTest_item['expect-value'] = '2.499542236328125'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x3FFD), (double)2.499542236328125); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x3FFD, /* expect: */ (double)2.499542236328125); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x3FFC) expect 2.4993896484375
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x3FFC) expect 2.4993896484375'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x3FFC'
+    // docTest_item['expect-value'] = '2.4993896484375'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x3FFC), (double)2.4993896484375); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x3FFC, /* expect: */ (double)2.4993896484375); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x2001) expect 1.250152587890625
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x2001) expect 1.250152587890625'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x2001'
+    // docTest_item['expect-value'] = '1.250152587890625'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x2001), (double)1.250152587890625); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x2001, /* expect: */ (double)1.250152587890625); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x2000) expect 1.25
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x2000) expect 1.25'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x2000'
+    // docTest_item['expect-value'] = '1.25'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x2000), (double)1.25); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x2000, /* expect: */ (double)1.25); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x1FFF) expect 1.249847412109375
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x1FFF) expect 1.249847412109375'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x1FFF'
+    // docTest_item['expect-value'] = '1.249847412109375'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x1FFF), (double)1.249847412109375); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x1FFF, /* expect: */ (double)1.249847412109375); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x1FFE) expect 1.24969482421875
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x1FFE) expect 1.24969482421875'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x1FFE'
+    // docTest_item['expect-value'] = '1.24969482421875'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x1FFE), (double)1.24969482421875); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x1FFE, /* expect: */ (double)1.24969482421875); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x0003) expect 0.000457763671875
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x0003) expect 0.000457763671875'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x0003'
+    // docTest_item['expect-value'] = '0.000457763671875'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x0003), (double)0.000457763671875); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x0003, /* expect: */ (double)0.000457763671875); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x0002) expect 0.00030517578125
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x0002) expect 0.00030517578125'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x0002'
+    // docTest_item['expect-value'] = '0.00030517578125'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x0002), (double)0.00030517578125); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x0002, /* expect: */ (double)0.00030517578125); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x0001) expect 0.000152587890625
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x0001) expect 0.000152587890625'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x0001'
+    // docTest_item['expect-value'] = '0.000152587890625'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x0001), (double)0.000152587890625); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x0001, /* expect: */ (double)0.000152587890625); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode VoltageOfCode(0x0000) expect 0.00000
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'VoltageOfCode(0x0000) expect 0.00000'
+    // docTest_item['funcName'] = 'VoltageOfCode'
+    // docTest_item['arglist'] = '0x0000'
+    // docTest_item['expect-value'] = '0.00000'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode VoltageOfCode 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.VoltageOfCode((uint16_t)0x0000), (double)0.00000); // 
+    tinyTester.FunctionCall_Expect("MAX5171.VoltageOfCode", fn_MAX5171_VoltageOfCode, (uint16_t)0x0000, /* expect: */ (double)0.00000); // 
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group VoltageOfCode tinyTester.blink_time_msec = 75 // default 75 resume hardware self test
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'VoltageOfCode'
+    // docTest_item['action'] = 'tinyTester.blink_time_msec = 75'
+    // docTest_item['remarks'] = 'default 75 resume hardware self test'
+    // docTest_item['propName'] = 'tinyTester.blink_time_msec'
+    // docTest_item['propValue'] = '75'
+#if MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode None default 75 resume hardware self test
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.blink_time_msec"
+    // tinyTesterPropValue = "75"
+    tinyTester.blink_time_msec = 75;
+#endif // MAX5171_SELFTEST_VoltageOfCode // group VoltageOfCode
+
+    // @test group CODE_LOAD // Verify function CODE_LOAD (enabled by default)
+    // @test group CODE_LOAD tinyTester.blink_time_msec = 75 // default 75 resume hardware self test
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.blink_time_msec = 75'
+    // docTest_item['remarks'] = 'default 75 resume hardware self test'
+    // docTest_item['propName'] = 'tinyTester.blink_time_msec'
+    // docTest_item['propValue'] = '75'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None default 75 resume hardware self test
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.blink_time_msec"
+    // tinyTesterPropValue = "75"
+    tinyTester.blink_time_msec = 75;
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD tinyTester.settle_time_msec = 500
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.settle_time_msec = 500'
+    // docTest_item['propName'] = 'tinyTester.settle_time_msec'
+    // docTest_item['propValue'] = '500'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.settle_time_msec"
+    // tinyTesterPropValue = "500"
+    tinyTester.settle_time_msec = 500;
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test Init()
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['action'] = 'Init()'
+    // docTest_item['funcName'] = 'Init'
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.Init(()), (void)None); // 
+    // tinyTester.FunctionCall_Expect("MAX5171.Init", fn_MAX5171_Init, /* empty docTest_argList */ /* empty expect: */ (void)None); // 
+    g_MAX5171_device.Init(); // 
+
+    // @test VRef expect 2.500 // Nominal Full-Scale Voltage Reference
+    // docTest_item['actionType'] = 'test-propname-expect-value'
+    // docTest_item['action'] = 'VRef expect 2.500'
+    // docTest_item['remarks'] = 'Nominal Full-Scale Voltage Reference'
+    // docTest_item['expect-value'] = '2.500'
+    // docTest_item['propName'] = 'VRef'
+    // test-propname-expect-value
+    tinyTester.Expect("MAX5171.VRef", g_MAX5171_device.VRef, /* expect: */ 2.500); // Nominal Full-Scale Voltage Reference
+
+    // @test group CODE_LOAD tinyTester.err_threshold = 0.050
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.err_threshold = 0.050'
+    // docTest_item['propName'] = 'tinyTester.err_threshold'
+    // docTest_item['propValue'] = '0.050'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.err_threshold"
+    // tinyTesterPropValue = "0.050"
+    tinyTester.err_threshold = 0.050;
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD tinyTester.print("100.0% of full scale REF(2.50V) = 2.50V Jumper FB=1-2")
+    // docTest_item['actionType'] = 'print-string'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.print("100.0% of full scale REF(2.50V) = 2.50V Jumper FB=1-2")'
+    // docTest_item['arglist'] = '100.0% of full scale REF(2.50V) = 2.50V Jumper FB=1-2'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // print-string
+    // tinyTesterFuncName = "tinyTester.print"
+    // tinyTesterPrintStringLiteral = "100.0% of full scale REF(2.50V) = 2.50V Jumper FB=1-2"
+    tinyTester.print("100.0% of full scale REF(2.50V) = 2.50V Jumper FB=1-2");
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD CODE_LOAD(0x3FFF) // 100.0% of full scale REF(2.50V) = 2.50V
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'CODE_LOAD(0x3FFF)'
+    // docTest_item['remarks'] = '100.0% of full scale REF(2.50V) = 2.50V'
+    // docTest_item['funcName'] = 'CODE_LOAD'
+    // docTest_item['arglist'] = '0x3FFF'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD CODE_LOAD 100.0% of full scale REF(2.50V) = 2.50V
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.CODE_LOAD((uint16_t)0x3FFF), (uint8_t)None); // 100.0% of full scale REF(2.50V) = 2.50V
+    // tinyTester.FunctionCall_Expect("MAX5171.CODE_LOAD", fn_MAX5171_CODE_LOAD, (uint16_t)0x3FFF, /* empty expect: */ (uint8_t)None); // 100.0% of full scale REF(2.50V) = 2.50V
+    g_MAX5171_device.CODE_LOAD((uint16_t)0x3FFF); // 100.0% of full scale REF(2.50V) = 2.50V
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD tinyTester.Wait_Output_Settling()
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.Wait_Output_Settling()'
+    // docTest_item['propName'] = 'Wait_Output_Settling'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.Wait_Output_Settling"
+    // docTest_argList = ""
+    tinyTester.Wait_Output_Settling(); // 
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD tinyTester.AnalogIn0_Read_Expect_voltageV(2.500)
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.AnalogIn0_Read_Expect_voltageV(2.500)'
+    // docTest_item['arglist'] = '2.500'
+    // docTest_item['propName'] = 'AnalogIn0_Read_Expect_voltageV'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.AnalogIn0_Read_Expect_voltageV"
+    // docTest_argList = "2.500"
+    tinyTester.AnalogIn0_Read_Expect_voltageV(2.500); // 
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD tinyTester.print("0.0% of full scale REF(2.50V) = 0.000V")
+    // docTest_item['actionType'] = 'print-string'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.print("0.0% of full scale REF(2.50V) = 0.000V")'
+    // docTest_item['arglist'] = '0.0% of full scale REF(2.50V) = 0.000V'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // print-string
+    // tinyTesterFuncName = "tinyTester.print"
+    // tinyTesterPrintStringLiteral = "0.0% of full scale REF(2.50V) = 0.000V"
+    tinyTester.print("0.0% of full scale REF(2.50V) = 0.000V");
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD CODE_LOAD(0x0000) // 0.0% of full scale REF(2.50V) = 0.000V
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'CODE_LOAD(0x0000)'
+    // docTest_item['remarks'] = '0.0% of full scale REF(2.50V) = 0.000V'
+    // docTest_item['funcName'] = 'CODE_LOAD'
+    // docTest_item['arglist'] = '0x0000'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD CODE_LOAD 0.0% of full scale REF(2.50V) = 0.000V
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.CODE_LOAD((uint16_t)0x0000), (uint8_t)None); // 0.0% of full scale REF(2.50V) = 0.000V
+    // tinyTester.FunctionCall_Expect("MAX5171.CODE_LOAD", fn_MAX5171_CODE_LOAD, (uint16_t)0x0000, /* empty expect: */ (uint8_t)None); // 0.0% of full scale REF(2.50V) = 0.000V
+    g_MAX5171_device.CODE_LOAD((uint16_t)0x0000); // 0.0% of full scale REF(2.50V) = 0.000V
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD tinyTester.Wait_Output_Settling()
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.Wait_Output_Settling()'
+    // docTest_item['propName'] = 'Wait_Output_Settling'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.Wait_Output_Settling"
+    // docTest_argList = ""
+    tinyTester.Wait_Output_Settling(); // 
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD tinyTester.AnalogIn0_Read_Expect_voltageV(0.0000)
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.AnalogIn0_Read_Expect_voltageV(0.0000)'
+    // docTest_item['arglist'] = '0.0000'
+    // docTest_item['propName'] = 'AnalogIn0_Read_Expect_voltageV'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.AnalogIn0_Read_Expect_voltageV"
+    // docTest_argList = "0.0000"
+    tinyTester.AnalogIn0_Read_Expect_voltageV(0.0000); // 
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD tinyTester.print("50.0% of full scale REF(2.50V) = 1.25V")
+    // docTest_item['actionType'] = 'print-string'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.print("50.0% of full scale REF(2.50V) = 1.25V")'
+    // docTest_item['arglist'] = '50.0% of full scale REF(2.50V) = 1.25V'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // print-string
+    // tinyTesterFuncName = "tinyTester.print"
+    // tinyTesterPrintStringLiteral = "50.0% of full scale REF(2.50V) = 1.25V"
+    tinyTester.print("50.0% of full scale REF(2.50V) = 1.25V");
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD CODE_LOAD(0x1FFF) // 50.0% of full scale REF(2.50V) = 1.25V
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'CODE_LOAD(0x1FFF)'
+    // docTest_item['remarks'] = '50.0% of full scale REF(2.50V) = 1.25V'
+    // docTest_item['funcName'] = 'CODE_LOAD'
+    // docTest_item['arglist'] = '0x1FFF'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD CODE_LOAD 50.0% of full scale REF(2.50V) = 1.25V
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.CODE_LOAD((uint16_t)0x1FFF), (uint8_t)None); // 50.0% of full scale REF(2.50V) = 1.25V
+    // tinyTester.FunctionCall_Expect("MAX5171.CODE_LOAD", fn_MAX5171_CODE_LOAD, (uint16_t)0x1FFF, /* empty expect: */ (uint8_t)None); // 50.0% of full scale REF(2.50V) = 1.25V
+    g_MAX5171_device.CODE_LOAD((uint16_t)0x1FFF); // 50.0% of full scale REF(2.50V) = 1.25V
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD tinyTester.Wait_Output_Settling()
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.Wait_Output_Settling()'
+    // docTest_item['propName'] = 'Wait_Output_Settling'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.Wait_Output_Settling"
+    // docTest_argList = ""
+    tinyTester.Wait_Output_Settling(); // 
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group CODE_LOAD tinyTester.AnalogIn0_Read_Expect_voltageV(1.2500)
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.AnalogIn0_Read_Expect_voltageV(1.2500)'
+    // docTest_item['arglist'] = '1.2500'
+    // docTest_item['propName'] = 'AnalogIn0_Read_Expect_voltageV'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.AnalogIn0_Read_Expect_voltageV"
+    // docTest_argList = "1.2500"
+    tinyTester.AnalogIn0_Read_Expect_voltageV(1.2500); // 
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group UPO // Verify User Programmable Output functions UPO_HIGH and UPO_LOW (enabled by default)
+    // @test group UPO tinyTester.blink_time_msec = 75 // default 75 resume hardware self test
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'UPO'
+    // docTest_item['action'] = 'tinyTester.blink_time_msec = 75'
+    // docTest_item['remarks'] = 'default 75 resume hardware self test'
+    // docTest_item['propName'] = 'tinyTester.blink_time_msec'
+    // docTest_item['propValue'] = '75'
+#if MAX5171_SELFTEST_UPO // group UPO None default 75 resume hardware self test
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.blink_time_msec"
+    // tinyTesterPropValue = "75"
+    tinyTester.blink_time_msec = 75;
+#endif // MAX5171_SELFTEST_UPO // group UPO
+
+    // @test group UPO tinyTester.settle_time_msec = 500 // default 250
+    // docTest_item['actionType'] = 'assign-propname-value'
+    // docTest_item['group-id-value'] = 'UPO'
+    // docTest_item['action'] = 'tinyTester.settle_time_msec = 500'
+    // docTest_item['remarks'] = 'default 250'
+    // docTest_item['propName'] = 'tinyTester.settle_time_msec'
+    // docTest_item['propValue'] = '500'
+#if MAX5171_SELFTEST_UPO // group UPO None default 250
+    // assign-propname-value
+    // tinyTesterPropName = "tinyTester.settle_time_msec"
+    // tinyTesterPropValue = "500"
+    tinyTester.settle_time_msec = 500;
+#endif // MAX5171_SELFTEST_UPO // group UPO
+
+    // @test group UPO UPO_HIGH()
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'UPO'
+    // docTest_item['action'] = 'UPO_HIGH()'
+    // docTest_item['funcName'] = 'UPO_HIGH'
+#if MAX5171_SELFTEST_UPO // group UPO UPO_HIGH 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.UPO_HIGH(()), (uint8_t)None); // 
+    // tinyTester.FunctionCall_Expect("MAX5171.UPO_HIGH", fn_MAX5171_UPO_HIGH, /* empty docTest_argList */ /* empty expect: */ (uint8_t)None); // 
+    g_MAX5171_device.UPO_HIGH(); // 
+#endif // MAX5171_SELFTEST_UPO // group UPO
+
+    // @test group UPO tinyTester.Wait_Output_Settling()
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'UPO'
+    // docTest_item['action'] = 'tinyTester.Wait_Output_Settling()'
+    // docTest_item['propName'] = 'Wait_Output_Settling'
+#if MAX5171_SELFTEST_UPO // group UPO None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.Wait_Output_Settling"
+    // docTest_argList = ""
+    tinyTester.Wait_Output_Settling(); // 
+#endif // MAX5171_SELFTEST_UPO // group UPO
+
+    // @test group CODE_LOAD tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command")
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command")'
+    // docTest_item['arglist'] = 'UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command"'
+    // docTest_item['propName'] = 'DigitalIn_Read_Expect_WarnOnly'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.DigitalIn_Read_Expect_WarnOnly"
+    // docTest_argList = "UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command""
+    tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command"); // 
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group UPO UPO_LOW()
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'UPO'
+    // docTest_item['action'] = 'UPO_LOW()'
+    // docTest_item['funcName'] = 'UPO_LOW'
+#if MAX5171_SELFTEST_UPO // group UPO UPO_LOW 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.UPO_LOW(()), (uint8_t)None); // 
+    // tinyTester.FunctionCall_Expect("MAX5171.UPO_LOW", fn_MAX5171_UPO_LOW, /* empty docTest_argList */ /* empty expect: */ (uint8_t)None); // 
+    g_MAX5171_device.UPO_LOW(); // 
+#endif // MAX5171_SELFTEST_UPO // group UPO
+
+    // @test group UPO tinyTester.Wait_Output_Settling()
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'UPO'
+    // docTest_item['action'] = 'tinyTester.Wait_Output_Settling()'
+    // docTest_item['propName'] = 'Wait_Output_Settling'
+#if MAX5171_SELFTEST_UPO // group UPO None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.Wait_Output_Settling"
+    // docTest_argList = ""
+    tinyTester.Wait_Output_Settling(); // 
+#endif // MAX5171_SELFTEST_UPO // group UPO
+
+    // @test group CODE_LOAD tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 0, "UPO_pin is low after MAX5171 UPO_LOW command")
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 0, "UPO_pin is low after MAX5171 UPO_LOW command")'
+    // docTest_item['arglist'] = 'UPO_pin, "UPO", 0, "UPO_pin is low after MAX5171 UPO_LOW command"'
+    // docTest_item['propName'] = 'DigitalIn_Read_Expect_WarnOnly'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.DigitalIn_Read_Expect_WarnOnly"
+    // docTest_argList = "UPO_pin, "UPO", 0, "UPO_pin is low after MAX5171 UPO_LOW command""
+    tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 0, "UPO_pin is low after MAX5171 UPO_LOW command"); // 
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
+    // @test group UPO UPO_HIGH()
+    // docTest_item['actionType'] = 'call-function'
+    // docTest_item['group-id-value'] = 'UPO'
+    // docTest_item['action'] = 'UPO_HIGH()'
+    // docTest_item['funcName'] = 'UPO_HIGH'
+#if MAX5171_SELFTEST_UPO // group UPO UPO_HIGH 
+    // call-function
+    // ASSERT_EQ(g_MAX5171_device.UPO_HIGH(()), (uint8_t)None); // 
+    // tinyTester.FunctionCall_Expect("MAX5171.UPO_HIGH", fn_MAX5171_UPO_HIGH, /* empty docTest_argList */ /* empty expect: */ (uint8_t)None); // 
+    g_MAX5171_device.UPO_HIGH(); // 
+#endif // MAX5171_SELFTEST_UPO // group UPO
+
+    // @test group UPO tinyTester.Wait_Output_Settling()
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'UPO'
+    // docTest_item['action'] = 'tinyTester.Wait_Output_Settling()'
+    // docTest_item['propName'] = 'Wait_Output_Settling'
+#if MAX5171_SELFTEST_UPO // group UPO None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.Wait_Output_Settling"
+    // docTest_argList = ""
+    tinyTester.Wait_Output_Settling(); // 
+#endif // MAX5171_SELFTEST_UPO // group UPO
+
+    // @test group CODE_LOAD tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command")
+    // docTest_item['actionType'] = 'call-tinytester-function'
+    // docTest_item['group-id-value'] = 'CODE_LOAD'
+    // docTest_item['action'] = 'tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command")'
+    // docTest_item['arglist'] = 'UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command"'
+    // docTest_item['propName'] = 'DigitalIn_Read_Expect_WarnOnly'
+#if MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD None 
+    // call-tinytester-function
+    // tinyTesterFuncName = "tinyTester.DigitalIn_Read_Expect_WarnOnly"
+    // docTest_argList = "UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command""
+    tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command"); // 
+#endif // MAX5171_SELFTEST_CODE_LOAD // group CODE_LOAD
+
     //
 #if INJECT_SELFTEST_FAIL
     // Test of the pass/fail report mechanism
@@ -1861,6 +2713,96 @@
     tinyTester.Report_Summary();
 }
 
+//--------------------------------------------------
+// selfTestFunctionClosures[functionName]['functionName'] = 'DACCodeOfVoltage'
+// selfTestFunctionClosures[functionName]['argListDeclaration'] = 'double voltageV'
+// selfTestFunctionClosures[functionName]['returnType'] = 'uint16_t'
+// selfTestFunctionClosures[functionName]['argNames'] = 'voltageV'
+// CommandParamIn_declaration = 'double voltageV'
+// argNames_recast_implementation = '(double)voltageV'
+//--------------------------------------------------
+// selftest: define function under test
+// uint16_t MAX5171::DACCodeOfVoltage(double voltageV)
+uint16_t fn_MAX5171_DACCodeOfVoltage(double voltageV)
+{
+    return g_MAX5171_device.DACCodeOfVoltage((double)voltageV);
+}
+
+//--------------------------------------------------
+// selfTestFunctionClosures[functionName]['functionName'] = 'VoltageOfCode'
+// selfTestFunctionClosures[functionName]['argListDeclaration'] = 'uint16_t value_u14'
+// selfTestFunctionClosures[functionName]['returnType'] = 'double'
+// selfTestFunctionClosures[functionName]['argNames'] = 'value_u14'
+// CommandParamIn_declaration = 'int value_u14'
+// argNames_recast_implementation = '(uint16_t)value_u14'
+//--------------------------------------------------
+// selftest: define function under test
+// double MAX5171::VoltageOfCode(uint16_t value_u14)
+double fn_MAX5171_VoltageOfCode(int value_u14)
+{
+    return g_MAX5171_device.VoltageOfCode((uint16_t)value_u14);
+}
+
+//--------------------------------------------------
+// selfTestFunctionClosures[functionName]['functionName'] = 'Init'
+// selfTestFunctionClosures[functionName]['argListDeclaration'] = 'void'
+// selfTestFunctionClosures[functionName]['returnType'] = 'void'
+// selfTestFunctionClosures[functionName]['argNames'] = ''
+// CommandParamIn_declaration = 'void'
+// argNames_recast_implementation = ''
+//--------------------------------------------------
+// selftest: define function under test
+// void MAX5171::Init(void)
+void fn_MAX5171_Init(void)
+{
+    return g_MAX5171_device.Init();
+}
+
+//--------------------------------------------------
+// selfTestFunctionClosures[functionName]['functionName'] = 'CODE_LOAD'
+// selfTestFunctionClosures[functionName]['argListDeclaration'] = 'uint16_t dacCodeLsbs'
+// selfTestFunctionClosures[functionName]['returnType'] = 'uint8_t'
+// selfTestFunctionClosures[functionName]['argNames'] = 'dacCodeLsbs'
+// CommandParamIn_declaration = 'int dacCodeLsbs'
+// argNames_recast_implementation = '(uint16_t)dacCodeLsbs'
+//--------------------------------------------------
+// selftest: define function under test
+// uint8_t MAX5171::CODE_LOAD(uint16_t dacCodeLsbs)
+uint8_t fn_MAX5171_CODE_LOAD(int dacCodeLsbs)
+{
+    return g_MAX5171_device.CODE_LOAD((uint16_t)dacCodeLsbs);
+}
+
+//--------------------------------------------------
+// selfTestFunctionClosures[functionName]['functionName'] = 'UPO_HIGH'
+// selfTestFunctionClosures[functionName]['argListDeclaration'] = 'void'
+// selfTestFunctionClosures[functionName]['returnType'] = 'uint8_t'
+// selfTestFunctionClosures[functionName]['argNames'] = ''
+// CommandParamIn_declaration = 'void'
+// argNames_recast_implementation = ''
+//--------------------------------------------------
+// selftest: define function under test
+// uint8_t MAX5171::UPO_HIGH(void)
+uint8_t fn_MAX5171_UPO_HIGH(void)
+{
+    return g_MAX5171_device.UPO_HIGH();
+}
+
+//--------------------------------------------------
+// selfTestFunctionClosures[functionName]['functionName'] = 'UPO_LOW'
+// selfTestFunctionClosures[functionName]['argListDeclaration'] = 'void'
+// selfTestFunctionClosures[functionName]['returnType'] = 'uint8_t'
+// selfTestFunctionClosures[functionName]['argNames'] = ''
+// CommandParamIn_declaration = 'void'
+// argNames_recast_implementation = ''
+//--------------------------------------------------
+// selftest: define function under test
+// uint8_t MAX5171::UPO_LOW(void)
+uint8_t fn_MAX5171_UPO_LOW(void)
+{
+    return g_MAX5171_device.UPO_LOW();
+}
+
 
 //--------------------------------------------------
 inline void print_command_prompt()
@@ -2332,10 +3274,12 @@
                     // %SD -- SPI diagnostic messages enable
                     if (g_MAX5171_device.onSPIprint) {
                         g_MAX5171_device.onSPIprint = NULL;
+                        // no g_MAX5171_device.futility_countdown_limit property; device_has_property(Device, 'futility_countdown_limit') != None is false
                     }
                     else {
                         void onSPIprint_handler(size_t byteCount, uint8_t mosiData[], uint8_t misoData[]);
                         g_MAX5171_device.onSPIprint = onSPIprint_handler;
+                        // no g_MAX5171_device.futility_countdown_limit property; device_has_property(Device, 'futility_countdown_limit') is false
                     }
                     break;
                 case 'W': case 'R': case 'w': case 'r':
@@ -2618,7 +3562,7 @@
 // Optional Diagnostic function to print SPI transactions
 void onSPIprint_handler(size_t byteCount, uint8_t mosiData[], uint8_t misoData[])
 {
-    cmdLine_serial.serial().printf("\r\nSPI MOSI->");
+    cmdLine_serial.serial().printf("\r\n      SPI MOSI->");
     for (uint8_t index = 0; index < byteCount; index++) {
         cmdLine_serial.serial().printf(" 0x%2.2X", mosiData[index]);
     }
@@ -2640,31 +3584,7 @@
 # endif
     cmdLine_serial.serial().printf("\r\nMAX5171_Init()");
 
-    // Initialize MAX5171 and verify device ID
-    if (g_MAX5171_device.Init() == 0)
-    {  // init failed; try "safe mode" SPI at slower SCLK rate
-        cmdLine_serial.serial().printf("\r\nMAX5171 Init failed; retry at SPI SCLK frequency 2000000 Hz\r\n");
-
-        g_SPI_SCLK_Hz = 2000000;
-        g_MAX5171_device.spi_frequency(2000000);
-        g_MAX5171_device.Init();
-    }
-    if (g_SPI_SCLK_Hz > g_MAX5171_device.get_spi_frequency())
-    {  // Device limits SPI SCLK frequency
-        g_SPI_SCLK_Hz = g_MAX5171_device.get_spi_frequency();
-        cmdLine_serial.serial().printf("\r\nMAX5171 limits SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
-
-        g_MAX5171_device.Init();
-    }
-    if (g_MAX5171_device.get_spi_frequency() > g_SPI_SCLK_Hz)
-    {  // Platform limits SPI SCLK frequency
-        g_MAX5171_device.spi_frequency(g_SPI_SCLK_Hz);
-        cmdLine_serial.serial().printf("\r\nPlatform limits MAX5171 SPI SCLK frequency to %ld Hz\r\n", g_SPI_SCLK_Hz);
-
-        g_MAX5171_device.Init();
-    }
-    g_SPI_dataMode = g_MAX5171_device.get_spi_dataMode();
-
+    g_MAX5171_device.Init();     // defined in #include MAX5171.h
 # if MAX5171_ONSPIPRINT
   // Optional Diagnostic function to print SPI transactions
   g_MAX5171_device.onSPIprint = onSPIprint_handler;
@@ -2746,6 +3666,31 @@
 
     //print_banner();
 
+#if HAS_I2C
+// i2c init
+// declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
+//    i2cMaster.frequency(g_I2C_SCL_Hz);
+#else
+    // Ensure that the unused I2C pins do not interfere with analog inputs A4 and A5
+#if HAS_digitalInOut14
+    // DigitalInOut digitalInOut14(P1_6, PIN_INPUT, PullUp, 1); // P1_6 TARGET_MAX32635MBED A4/SDA (10pin digital connector)
+    digitalInOut14.input();
+#endif
+#if HAS_digitalInOut15
+    // DigitalInOut digitalInOut15(P1_7, PIN_INPUT, PullUp, 1); // P1_7 TARGET_MAX32635MBED A5/SCL (10pin digital connector)
+    digitalInOut15.input();
+#endif
+#if HAS_digitalInOut16
+    // DigitalInOut mode can be one of PullUp, PullDown, PullNone, OpenDrain
+    // PullUp-->3.4V, PullDown-->1.7V, PullNone-->3.5V, OpenDrain-->0.00V
+    //DigitalInOut digitalInOut16(P3_4, PIN_INPUT, OpenDrain, 0); // P3_4 TARGET_MAX32635MBED A4/SDA (6pin analog connector)
+    digitalInOut16.input();
+#endif
+#if HAS_digitalInOut17
+    //DigitalInOut digitalInOut17(P3_5, PIN_INPUT, OpenDrain, 0); // P3_5 TARGET_MAX32635MBED A5/SCL (6pin analog connector)
+    digitalInOut17.input();
+#endif
+#endif // HAS_I2C
 
 
 #if USE_LEDS
@@ -2811,13 +3756,17 @@
 // #if USE_LEDS
 //     rgb_led.white();     // diagnostic rbg led RED+GREEN+BLUE=WHITE
 // #endif // USE_LEDS
-    led1 = LED_ON;
-    led2 = LED_ON;
-    led3 = LED_ON;
+    if (led1.is_connected()) {
+        led1 = LED_ON;
+    }
+    if (led2.is_connected()) {
+        led2 = LED_ON;
+    }
+    if (led3.is_connected()) {
+        led3 = LED_ON;
+    }
 
     InitializeConfiguration();
-    g_MAX5171_device.Init();
-
         // example code: serial port banner message
     #if defined(TARGET_MAX32625MBED)
         serial.printf("MAX32625MBED ");
@@ -2873,4 +3822,3 @@
         }
     }     // while(1)
 }
-
--- a/Test_Menu_MAX5171.cpp	Thu Mar 12 23:37:48 2020 +0000
+++ b/Test_Menu_MAX5171.cpp	Fri Apr 03 06:27:43 2020 +0000
@@ -153,17 +153,82 @@
                     // CMD_='None'
                     // CommandName='Init'
                     // CommandParamIn='void'
-                    // CommandReturnType='uint8_t'
+                    // CommandReturnType='void'
                     // @Pre=''
                     // @Param[in]=''
                     // @Param[out]=''
                     // @Post=''
                     // displayPost=''
-                    // @Return='@return 1 on success; 0 on failure'
+                    // @Return=''
+                    // @Test='@test group DACCodeOfVoltage // Verify function DACCodeOfVoltage (enabled by default)'
+                    // @Test='@test group DACCodeOfVoltage tinyTester.blink_time_msec = 20 // quickly speed through the software verification'
+                    // @Test='@test group DACCodeOfVoltage tinyTester.print("VRef = 2.500  MAX5171 14-bit LSB = 0.00015V")'
+                    // @Test='@test group DACCodeOfVoltage VRef = 2.500'
+                    // @Test='@test group DACCodeOfVoltage tinyTester.err_threshold = 0.00015259720441921504 // 14-bit LSB (2.500/16383)'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(2.499847412109375) expect 0x3FFF'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(2.49969482421875) expect 0x3FFE'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(2.499542236328125) expect 0x3FFD'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(2.4993896484375) expect 0x3FFC'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(1.250152587890625) expect 0x2001'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(1.25) expect 0x2000'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(1.249847412109375) expect 0x1FFF'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(1.24969482421875) expect 0x1FFE'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(0.000457763671875) expect 0x0003'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(0.00030517578125) expect 0x0002'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(0.000152587890625) expect 0x0001'
+                    // @Test='@test group DACCodeOfVoltage DACCodeOfVoltage(0.00000) expect 0x0000'
+                    // @Test='@test group DACCodeOfVoltage tinyTester.blink_time_msec = 75 // default 75 resume hardware self test'
+                    // @Test='@test group VoltageOfCode // Verify function VoltageOfCode (enabled by default)'
+                    // @Test='@test group VoltageOfCode tinyTester.blink_time_msec = 20 // quickly speed through the software verification'
+                    // @Test='@test group VoltageOfCode tinyTester.print("VRef = 2.500  MAX5171 14-bit LSB = 0.00015V")'
+                    // @Test='@test group VoltageOfCode VRef = 2.500'
+                    // @Test='@test group VoltageOfCode tinyTester.err_threshold = 0.00015259720441921504 // 14-bit LSB (2.500/16383)'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x3FFF) expect 2.499847412109375'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x3FFE) expect 2.49969482421875'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x3FFD) expect 2.499542236328125'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x3FFC) expect 2.4993896484375'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x2001) expect 1.250152587890625'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x2000) expect 1.25'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x1FFF) expect 1.249847412109375'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x1FFE) expect 1.24969482421875'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x0003) expect 0.000457763671875'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x0002) expect 0.00030517578125'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x0001) expect 0.000152587890625'
+                    // @Test='@test group VoltageOfCode VoltageOfCode(0x0000) expect 0.00000'
+                    // @Test='@test group VoltageOfCode tinyTester.blink_time_msec = 75 // default 75 resume hardware self test'
+                    // @Test='@test group CODE_LOAD // Verify function CODE_LOAD (enabled by default)'
+                    // @Test='@test group CODE_LOAD tinyTester.blink_time_msec = 75 // default 75 resume hardware self test'
+                    // @Test='@test group CODE_LOAD tinyTester.settle_time_msec = 500'
+                    // @Test='@test Init()'
+                    // @Test='@test VRef expect 2.500 // Nominal Full-Scale Voltage Reference'
+                    // @Test='@test group CODE_LOAD tinyTester.err_threshold = 0.050'
+                    // @Test='@test group CODE_LOAD tinyTester.print("100.0% of full scale REF(2.50V) = 2.50V Jumper FB=1-2")'
+                    // @Test='@test group CODE_LOAD CODE_LOAD(0x3FFF) // 100.0% of full scale REF(2.50V) = 2.50V'
+                    // @Test='@test group CODE_LOAD tinyTester.Wait_Output_Settling()'
+                    // @Test='@test group CODE_LOAD tinyTester.AnalogIn0_Read_Expect_voltageV(2.500)'
+                    // @Test='@test group CODE_LOAD tinyTester.print("0.0% of full scale REF(2.50V) = 0.000V")'
+                    // @Test='@test group CODE_LOAD CODE_LOAD(0x0000) // 0.0% of full scale REF(2.50V) = 0.000V'
+                    // @Test='@test group CODE_LOAD tinyTester.Wait_Output_Settling()'
+                    // @Test='@test group CODE_LOAD tinyTester.AnalogIn0_Read_Expect_voltageV(0.0000)'
+                    // @Test='@test group CODE_LOAD tinyTester.print("50.0% of full scale REF(2.50V) = 1.25V")'
+                    // @Test='@test group CODE_LOAD CODE_LOAD(0x1FFF) // 50.0% of full scale REF(2.50V) = 1.25V'
+                    // @Test='@test group CODE_LOAD tinyTester.Wait_Output_Settling()'
+                    // @Test='@test group CODE_LOAD tinyTester.AnalogIn0_Read_Expect_voltageV(1.2500)'
+                    // @Test='@test group UPO // Verify User Programmable Output functions UPO_HIGH and UPO_LOW (enabled by default)'
+                    // @Test='@test group UPO tinyTester.blink_time_msec = 75 // default 75 resume hardware self test'
+                    // @Test='@test group UPO tinyTester.settle_time_msec = 500 // default 250'
+                    // @Test='@test group UPO UPO_HIGH()'
+                    // @Test='@test group UPO tinyTester.Wait_Output_Settling()'
+                    // @Test='@test group CODE_LOAD tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command")'
+                    // @Test='@test group UPO UPO_LOW()'
+                    // @Test='@test group UPO tinyTester.Wait_Output_Settling()'
+                    // @Test='@test group CODE_LOAD tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 0, "UPO_pin is low after MAX5171 UPO_LOW command")'
+                    // @Test='@test group UPO UPO_HIGH()'
+                    // @Test='@test group UPO tinyTester.Wait_Output_Settling()'
+                    // @Test='@test group CODE_LOAD tinyTester.DigitalIn_Read_Expect_WarnOnly(UPO_pin, "UPO", 1, "UPO_pin is high after MAX5171 UPO_HIGH command")'
                     cmdLine.serial().printf("Init");
                     // call function Init
-                    uint8_t result = g_MAX5171_device.Init();
-                    cmdLine.serial().printf(" =%d\r\n", result);
+                    g_MAX5171_device.Init();
                     return true; // command handled by MAX5171
         } // end case '!'
         break;