Test program running on MAX32625MBED. Control through USB Serial commands using a terminal emulator such as teraterm or putty.

Dependencies:   MaximTinyTester CmdLine MAX541 USBDevice

Revision:
59:47538bcf6cda
Parent:
57:1c9da8e90737
Child:
64:a667cfd83492
--- a/Test_Menu_MAX11043.cpp	Fri Feb 14 03:22:31 2020 +0000
+++ b/Test_Menu_MAX11043.cpp	Mon Feb 17 23:35:43 2020 +0000
@@ -110,29 +110,54 @@
 // CODE GENERATOR: no Menu item hint in description
 // CODE GENERATOR: MAX11043 Command Name = RegName (MAX11043_CMD_enum_t commandByte) --> const char*
 // CODE GENERATOR: no Menu item hint in description
+// CODE GENERATOR: MAX11043 Command Name = Configure_XXXXX (uint8_t linef, uint8_t rate) --> uint8_t
+// CODE GENERATOR: Menu item hint description Menu item 'XX'
+// CODE GENERATOR: Menu item 'XX' -- Menu item XX
+// CODE GENERATOR: MAX11043 help: XX uint8_t linef, uint8_t rate -- Configure_XXXXX
+// CODE GENERATOR: MAX11043 helpString: 'XX linef=? rate=? -- Configure_XXXXX'
+// CODE GENERATOR: test menu case 'XX':
+// CODE GENERATOR:           helpString 'XX linef=? rate=? -- Configure_XXXXX'
+// CODE GENERATOR:           CMD_ 'None'
+// CODE GENERATOR:           CommandName 'Configure_XXXXX'
+// CODE GENERATOR:           CommandParamIn 'uint8_t linef, uint8_t rate'
+// CODE GENERATOR:           CommandReturnType 'uint8_t'
+// CODE GENERATOR:           CommandPre ''
+// CODE GENERATOR:           CommandDocParamIn ''
+// CODE GENERATOR:           CommandDocParamOut ''
+// CODE GENERATOR:           CommandPost ''
+// CODE GENERATOR:           CommandReturn '@return 1 on success; 0 on failure'
+// CODE GENERATOR: MAX11043 Command Name = Configure_XXXXY (uint8_t linef, uint8_t rate) --> uint8_t
+// CODE GENERATOR: Menu item hint description Menu item 'XY'
+// CODE GENERATOR: Menu item 'XY' -- Menu item XY
+// CODE GENERATOR: MAX11043 help: XY uint8_t linef, uint8_t rate -- Configure_XXXXY
+// CODE GENERATOR: MAX11043 helpString: 'XY linef=? rate=? -- Configure_XXXXY'
+// CODE GENERATOR: test menu case 'XY':
+// CODE GENERATOR:           helpString 'XY linef=? rate=? -- Configure_XXXXY'
+// CODE GENERATOR:           CMD_ 'None'
+// CODE GENERATOR:           CommandName 'Configure_XXXXY'
+// CODE GENERATOR:           CommandParamIn 'uint8_t linef, uint8_t rate'
+// CODE GENERATOR:           CommandReturnType 'uint8_t'
+// CODE GENERATOR:           CommandPre ''
+// CODE GENERATOR:           CommandDocParamIn ''
+// CODE GENERATOR:           CommandDocParamOut ''
+// CODE GENERATOR:           CommandPost ''
+// CODE GENERATOR:           CommandReturn '@return 1 on success; 0 on failure'
 // CODE GENERATOR: testMenuGlobalArgsDict scan global property list g_MAX11043_device
 
-// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.VRef_xxxxxx
-// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.VRef_xxxxxx argname = VRef_xxxxxx
-// CODE GENERATOR: testMenuGlobalArgsDict['VRef_xxxxxx']['alias'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['VRef_xxxxxx']['argtype'] = 'double'
-// CODE GENERATOR: testMenuGlobalArgsDict['VRef_xxxxxx']['usedByCommandName'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['VRef_xxxxxx']['usedBytestMenuItemName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.VRef
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.VRef argname = VRef
+// CODE GENERATOR: testMenuGlobalArgsDict['VRef']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['VRef']['argtype'] = 'double'
+// CODE GENERATOR: testMenuGlobalArgsDict['VRef']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['VRef']['usedBytestMenuItemName'] = 'None'
 
-// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.ctrl
-// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.ctrl shadow of argname = ctrl
-// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.ctrl argname = ctrl
-// CODE GENERATOR: testMenuGlobalArgsDict['ctrl']['alias'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['ctrl']['argtype'] = 'uint32_t'
-// CODE GENERATOR: testMenuGlobalArgsDict['ctrl']['usedByCommandName'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['ctrl']['usedBytestMenuItemName'] = 'None'
-
-// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.pgaGain
-// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.pgaGain argname = pgaGain
-// CODE GENERATOR: testMenuGlobalArgsDict['pgaGain']['alias'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['pgaGain']['argtype'] = 'uint8_t'
-// CODE GENERATOR: testMenuGlobalArgsDict['pgaGain']['usedByCommandName'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['pgaGain']['usedBytestMenuItemName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.config
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.config shadow of argname = config
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.config argname = config
+// CODE GENERATOR: testMenuGlobalArgsDict['config']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['config']['argtype'] = 'uint16_t'
+// CODE GENERATOR: testMenuGlobalArgsDict['config']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['config']['usedBytestMenuItemName'] = 'None'
 
 // CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.status
 // CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.status shadow of argname = status
@@ -142,19 +167,45 @@
 // CODE GENERATOR: testMenuGlobalArgsDict['status']['usedByCommandName'] = 'None'
 // CODE GENERATOR: testMenuGlobalArgsDict['status']['usedBytestMenuItemName'] = 'None'
 
-// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.data0
-// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.data0 shadow of argname = data0
-// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.data0 argname = data0
-// CODE GENERATOR: testMenuGlobalArgsDict['data0']['alias'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['data0']['argtype'] = 'uint32_t'
-// CODE GENERATOR: testMenuGlobalArgsDict['data0']['usedByCommandName'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['data0']['usedBytestMenuItemName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adca
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adca shadow of argname = ADCa
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adca argname = ADCa
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCa']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCa']['argtype'] = 'uint32_t'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCa']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCa']['usedBytestMenuItemName'] = 'None'
+
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adcb
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adcb shadow of argname = ADCb
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adcb argname = ADCb
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCb']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCb']['argtype'] = 'uint32_t'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCb']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCb']['usedBytestMenuItemName'] = 'None'
 
-// CODE GENERATOR: testMenuGlobalArgsDict skip array property g_MAX11043_device.AINcode[11]
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adcc
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adcc shadow of argname = ADCc
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adcc argname = ADCc
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCc']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCc']['argtype'] = 'uint32_t'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCc']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCc']['usedBytestMenuItemName'] = 'None'
+
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adcd
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adcd shadow of argname = ADCd
+// CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11043_device.adcd argname = ADCd
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCd']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCd']['argtype'] = 'uint32_t'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCd']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCd']['usedBytestMenuItemName'] = 'None'
+
 
 // CODE GENERATOR: scan testMenuCommand list for items that can be shortened to single character
+// CODE GENERATOR: multiple commands begin with character 'X'
 // CODE GENERATOR: shorten testMenuCommand to single character if unambiguous
 // CODE GENERATOR: testMenuCommand '!' already single character
+// CODE GENERATOR: cannot shorten testMenuCommand 'XX' to single character due to duplicates
+// CODE GENERATOR: cannot shorten testMenuCommand 'XY' to single character due to duplicates
 
 // CODE GENERATOR: help menu
 bool MAX11043_menu_help(CmdLine & cmdLine)
@@ -162,6 +213,12 @@
     // CODE GENERATOR: command: !
     // CODE GENERATOR: help: ! -- Init
     cmdLine.serial().printf("\r\n ! -- Init");
+    // CODE GENERATOR: command: XX
+    // CODE GENERATOR: help: XX linef=? rate=? -- Configure_XXXXX
+    cmdLine.serial().printf("\r\n XX linef=? rate=? -- Configure_XXXXX");
+    // CODE GENERATOR: command: XY
+    // CODE GENERATOR: help: XY linef=? rate=? -- Configure_XXXXY
+    cmdLine.serial().printf("\r\n XY linef=? rate=? -- Configure_XXXXY");
     //
     cmdLine.serial().printf("\r\n @ -- print MAX11043 configuration");
 
@@ -258,48 +315,70 @@
 
 // CODE GENERATOR: testMenuGlobalArgsDict Consolidate common/global argument parsing
 
-// CODE GENERATOR: testMenuGlobalArgsDict['VRef_xxxxxx']['alias'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['VRef_xxxxxx']['argtype'] = 'double'
-// CODE GENERATOR: testMenuGlobalArgsDict['VRef_xxxxxx']['usedByCommandName'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['VRef_xxxxxx']['usedBytestMenuItemName'] = 'None'
-                    // parse argument double VRef_xxxxxx
-        double VRef_xxxxxx = g_MAX11043_device.VRef_xxxxxx; // default to global property value
-        if (cmdLine.parse_double("VRef_xxxxxx", VRef_xxxxxx))
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCa']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCa']['argtype'] = 'uint32_t'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCa']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCa']['usedBytestMenuItemName'] = 'None'
+                    // parse argument uint32_t ADCa
+        uint32_t ADCa = 0; // ~~~ g_MAX11043_device.__WARNING_no_match_for_argname_ADCa_in_MAX11043_device_t__; // default to global property value
+        if (cmdLine.parse_uint32_dec("ADCa", ADCa))
         {
-            g_MAX11043_device.VRef_xxxxxx = VRef_xxxxxx; // update global property value
+            // g_MAX11043_device.__WARNING_no_match_for_argname_ADCa_in_MAX11043_device_t__ = ADCa; // update global property value
+        }
+
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCb']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCb']['argtype'] = 'uint32_t'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCb']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCb']['usedBytestMenuItemName'] = 'None'
+                    // parse argument uint32_t ADCb
+        uint32_t ADCb = 0; // ~~~ g_MAX11043_device.__WARNING_no_match_for_argname_ADCb_in_MAX11043_device_t__; // default to global property value
+        if (cmdLine.parse_uint32_dec("ADCb", ADCb))
+        {
+            // g_MAX11043_device.__WARNING_no_match_for_argname_ADCb_in_MAX11043_device_t__ = ADCb; // update global property value
         }
 
-// CODE GENERATOR: testMenuGlobalArgsDict['ctrl']['alias'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['ctrl']['argtype'] = 'uint32_t'
-// CODE GENERATOR: testMenuGlobalArgsDict['ctrl']['usedByCommandName'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['ctrl']['usedBytestMenuItemName'] = 'None'
-                    // parse argument uint32_t ctrl
-        uint32_t ctrl = g_MAX11043_device.ctrl; // default to global property value
-        if (cmdLine.parse_uint32_dec("ctrl", ctrl))
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCc']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCc']['argtype'] = 'uint32_t'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCc']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCc']['usedBytestMenuItemName'] = 'None'
+                    // parse argument uint32_t ADCc
+        uint32_t ADCc = 0; // ~~~ g_MAX11043_device.__WARNING_no_match_for_argname_ADCc_in_MAX11043_device_t__; // default to global property value
+        if (cmdLine.parse_uint32_dec("ADCc", ADCc))
         {
-            g_MAX11043_device.ctrl = ctrl; // update global property value
+            // g_MAX11043_device.__WARNING_no_match_for_argname_ADCc_in_MAX11043_device_t__ = ADCc; // update global property value
         }
 
-// CODE GENERATOR: testMenuGlobalArgsDict['data0']['alias'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['data0']['argtype'] = 'uint32_t'
-// CODE GENERATOR: testMenuGlobalArgsDict['data0']['usedByCommandName'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['data0']['usedBytestMenuItemName'] = 'None'
-                    // parse argument uint32_t data0
-        uint32_t data0 = g_MAX11043_device.data0; // default to global property value
-        if (cmdLine.parse_uint32_dec("data0", data0))
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCd']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCd']['argtype'] = 'uint32_t'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCd']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['ADCd']['usedBytestMenuItemName'] = 'None'
+                    // parse argument uint32_t ADCd
+        uint32_t ADCd = 0; // ~~~ g_MAX11043_device.__WARNING_no_match_for_argname_ADCd_in_MAX11043_device_t__; // default to global property value
+        if (cmdLine.parse_uint32_dec("ADCd", ADCd))
         {
-            g_MAX11043_device.data0 = data0; // update global property value
+            // g_MAX11043_device.__WARNING_no_match_for_argname_ADCd_in_MAX11043_device_t__ = ADCd; // update global property value
         }
 
-// CODE GENERATOR: testMenuGlobalArgsDict['pgaGain']['alias'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['pgaGain']['argtype'] = 'uint8_t'
-// CODE GENERATOR: testMenuGlobalArgsDict['pgaGain']['usedByCommandName'] = 'None'
-// CODE GENERATOR: testMenuGlobalArgsDict['pgaGain']['usedBytestMenuItemName'] = 'None'
-                    // parse argument uint8_t pgaGain
-        uint8_t pgaGain = g_MAX11043_device.pgaGain; // default to global property value
-        if (cmdLine.parse_uint8_dec("pgaGain", pgaGain))
+// CODE GENERATOR: testMenuGlobalArgsDict['VRef']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['VRef']['argtype'] = 'double'
+// CODE GENERATOR: testMenuGlobalArgsDict['VRef']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['VRef']['usedBytestMenuItemName'] = 'None'
+                    // parse argument double VRef
+        double VRef = g_MAX11043_device.VRef; // default to global property value
+        if (cmdLine.parse_double("VRef", VRef))
         {
-            g_MAX11043_device.pgaGain = pgaGain; // update global property value
+            g_MAX11043_device.VRef = VRef; // update global property value
+        }
+
+// CODE GENERATOR: testMenuGlobalArgsDict['config']['alias'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['config']['argtype'] = 'uint16_t'
+// CODE GENERATOR: testMenuGlobalArgsDict['config']['usedByCommandName'] = 'None'
+// CODE GENERATOR: testMenuGlobalArgsDict['config']['usedBytestMenuItemName'] = 'None'
+                    // parse argument uint16_t config
+        uint16_t config = g_MAX11043_device.config; // default to global property value
+        if (cmdLine.parse_uint16_dec("config", config))
+        {
+            g_MAX11043_device.config = config; // update global property value
         }
 
 // CODE GENERATOR: testMenuGlobalArgsDict['status']['alias'] = 'None'
@@ -356,10 +435,10 @@
             // read "all" registers by name
             // TODO: KLUDGE: this constant array should live in the device driver, not the menu
             const MAX11043::MAX11043_CMD_enum_t readAllStatusList[] = {
-                    MAX11043::CMD_0000_0010_d24_Rd00_ADCa,
-                    MAX11043::CMD_0000_0110_d24_Rd01_ADCb,
-                    MAX11043::CMD_0000_1010_d24_Rd02_ADCc,
-                    MAX11043::CMD_0000_1110_d24_Rd03_ADCd,
+                    MAX11043::CMD_0000_0010_d16o8_Rd00_ADCa,
+                    MAX11043::CMD_0000_0110_d16o8_Rd01_ADCb,
+                    MAX11043::CMD_0000_1010_d16o8_Rd02_ADCc,
+                    MAX11043::CMD_0000_1110_d16o8_Rd03_ADCd,
                     MAX11043::CMD_0001_1110_d8_Rd07_Status,
                     MAX11043::CMD_0010_0010_d16_Rd08_Configuration,
                     MAX11043::CMD_0010_0110_d16_Rd09_DAC,
@@ -391,26 +470,27 @@
 // CODE GENERATOR: generate @ command print global property values of  g_MAX11043_device
         case '@':
         {
-// CODE GENERATOR: @ command print double g_MAX11043_device.VRef_xxxxxx
-                    cmdLine.serial().printf("VRef_xxxxxx = ");
-                    cmdLine.serial().printf("%f\r\n", g_MAX11043_device.VRef_xxxxxx);
-// CODE GENERATOR: @ command print uint32_t g_MAX11043_device.ctrl
-                    cmdLine.serial().printf("ctrl = ");
-                    cmdLine.serial().printf("%d = 0x%8.8x\r\n", g_MAX11043_device.ctrl, g_MAX11043_device.ctrl);
-// CODE GENERATOR: @ command print uint8_t g_MAX11043_device.pgaGain
-                    cmdLine.serial().printf("pgaGain = ");
-                    cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11043_device.pgaGain, g_MAX11043_device.pgaGain);
+// CODE GENERATOR: @ command print double g_MAX11043_device.VRef
+                    cmdLine.serial().printf("VRef = ");
+                    cmdLine.serial().printf("%f\r\n", g_MAX11043_device.VRef);
+// CODE GENERATOR: @ command print uint16_t g_MAX11043_device.config
+                    cmdLine.serial().printf("config = ");
+                    cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11043_device.config, g_MAX11043_device.config);
 // CODE GENERATOR: @ command print uint32_t g_MAX11043_device.status
                     cmdLine.serial().printf("status = ");
                     cmdLine.serial().printf("%d = 0x%8.8x\r\n", g_MAX11043_device.status, g_MAX11043_device.status);
-// CODE GENERATOR: @ command print uint32_t g_MAX11043_device.data0
-                    cmdLine.serial().printf("data0 = ");
-                    cmdLine.serial().printf("%d = 0x%8.8x\r\n", g_MAX11043_device.data0, g_MAX11043_device.data0);
-// CODE GENERATOR: @ command print uint32_t array g_MAX11043_device.AINcode[0..10]
-                for(int index = 0; (index < 11) && (index < 16); index++) {
-                    cmdLine.serial().printf("AINcode[%d] = ", index);
-                    cmdLine.serial().printf("%d = 0x%8.8x\r\n", g_MAX11043_device.AINcode[index], g_MAX11043_device.AINcode[index]);
-                }
+// CODE GENERATOR: @ command print uint32_t g_MAX11043_device.adca
+                    cmdLine.serial().printf("adca = ");
+                    cmdLine.serial().printf("%d = 0x%8.8x\r\n", g_MAX11043_device.adca, g_MAX11043_device.adca);
+// CODE GENERATOR: @ command print uint32_t g_MAX11043_device.adcb
+                    cmdLine.serial().printf("adcb = ");
+                    cmdLine.serial().printf("%d = 0x%8.8x\r\n", g_MAX11043_device.adcb, g_MAX11043_device.adcb);
+// CODE GENERATOR: @ command print uint32_t g_MAX11043_device.adcc
+                    cmdLine.serial().printf("adcc = ");
+                    cmdLine.serial().printf("%d = 0x%8.8x\r\n", g_MAX11043_device.adcc, g_MAX11043_device.adcc);
+// CODE GENERATOR: @ command print uint32_t g_MAX11043_device.adcd
+                    cmdLine.serial().printf("adcd = ");
+                    cmdLine.serial().printf("%d = 0x%8.8x\r\n", g_MAX11043_device.adcd, g_MAX11043_device.adcd);
                     return true; // command handled by MAX11043
             break;
         }
@@ -578,6 +658,118 @@
         } // end case '!'
         break;
 
+// CODE GENERATOR: top of loop: testMenuCommand="XX", testMenuFirstCharHandler="None"
+// CODE GENERATOR: test menu case 'XX':
+// CODE GENERATOR:           helpString 'XX linef=? rate=? -- Configure_XXXXX'
+// CODE GENERATOR:           CMD_ 'None'
+// CODE GENERATOR:           CommandName 'Configure_XXXXX'
+// CODE GENERATOR:           CommandParamIn 'uint8_t linef, uint8_t rate'
+// CODE GENERATOR:           CommandReturnType 'uint8_t'
+// CODE GENERATOR:           CommandPre ''
+// CODE GENERATOR:           CommandDocParamIn ''
+// CODE GENERATOR:           CommandDocParamOut ''
+// CODE GENERATOR:           CommandPost ''
+// CODE GENERATOR:           CommandReturn '@return 1 on success; 0 on failure'
+        case 'X': // (multiple characters) (testMenuFirstCharHandler="X"):
+        {
+            switch (cmdLine[1])
+            {
+                case 'X': // (nested inside case 'X')
+                {
+                    // test menu command 'XX' handler:
+                    // helpString='XX linef=? rate=? -- Configure_XXXXX'
+                    // CMD_='None'
+                    // CommandName='Configure_XXXXX'
+                    // CommandParamIn='uint8_t linef, uint8_t rate'
+                    // CommandReturnType='uint8_t'
+                    // @Pre=''
+                    // @Param[in]=''
+                    // @Param[out]=''
+                    // @Post=''
+                    // displayPost=''
+                    // @Return='@return 1 on success; 0 on failure'
+                    // parse argument list
+                    // parse argument uint8_t linef
+                    uint8_t linef = 0; // --- g_MAX11043_device.__WARNING_no_match_for_argname_linef_in_MAX11043_device_t__; // default to global property value
+                    if (cmdLine.parse_uint8_dec("linef", linef))
+                    {
+                        // g_MAX11043_device.__WARNING_no_match_for_argname_linef_in_MAX11043_device_t__ = linef; // update global property value
+                    }
+                    // parse argument uint8_t rate
+                    uint8_t rate = 0; // --- g_MAX11043_device.__WARNING_no_match_for_argname_rate_in_MAX11043_device_t__; // default to global property value
+                    if (cmdLine.parse_uint8_dec("rate", rate))
+                    {
+                        // g_MAX11043_device.__WARNING_no_match_for_argname_rate_in_MAX11043_device_t__ = rate; // update global property value
+                    }
+                    // print arguments
+                    cmdLine.serial().printf("Configure_XXXXX");
+                    cmdLine.serial().printf(" linef=%d", linef);
+                    cmdLine.serial().printf(" rate=%d", rate);
+                    cmdLine.serial().printf("\r\n");
+                    // call function Configure_XXXXX(linef, rate)
+                    uint8_t result = g_MAX11043_device.Configure_XXXXX(linef, rate);
+                    cmdLine.serial().printf(" =%d\r\n", result);
+                    return true; // command handled by MAX11043
+// CODE GENERATOR: bottom of loop: testMenuCommand="XX", testMenuFirstCharHandler="X"
+                } // end nested case 'XX'
+                break;
+
+// CODE GENERATOR: top of loop: testMenuCommand="XY", testMenuFirstCharHandler="X"
+// CODE GENERATOR: top of loop: nested switch "X" is currently open
+// CODE GENERATOR: test menu case 'XY':
+// CODE GENERATOR:           helpString 'XY linef=? rate=? -- Configure_XXXXY'
+// CODE GENERATOR:           CMD_ 'None'
+// CODE GENERATOR:           CommandName 'Configure_XXXXY'
+// CODE GENERATOR:           CommandParamIn 'uint8_t linef, uint8_t rate'
+// CODE GENERATOR:           CommandReturnType 'uint8_t'
+// CODE GENERATOR:           CommandPre ''
+// CODE GENERATOR:           CommandDocParamIn ''
+// CODE GENERATOR:           CommandDocParamOut ''
+// CODE GENERATOR:           CommandPost ''
+// CODE GENERATOR:           CommandReturn '@return 1 on success; 0 on failure'
+                case 'Y': // (nested inside case 'X')
+                {
+                    // test menu command 'XY' handler:
+                    // helpString='XY linef=? rate=? -- Configure_XXXXY'
+                    // CMD_='None'
+                    // CommandName='Configure_XXXXY'
+                    // CommandParamIn='uint8_t linef, uint8_t rate'
+                    // CommandReturnType='uint8_t'
+                    // @Pre=''
+                    // @Param[in]=''
+                    // @Param[out]=''
+                    // @Post=''
+                    // displayPost=''
+                    // @Return='@return 1 on success; 0 on failure'
+                    // parse argument list
+                    // parse argument uint8_t linef
+                    uint8_t linef = 0; // --- g_MAX11043_device.__WARNING_no_match_for_argname_linef_in_MAX11043_device_t__; // default to global property value
+                    if (cmdLine.parse_uint8_dec("linef", linef))
+                    {
+                        // g_MAX11043_device.__WARNING_no_match_for_argname_linef_in_MAX11043_device_t__ = linef; // update global property value
+                    }
+                    // parse argument uint8_t rate
+                    uint8_t rate = 0; // --- g_MAX11043_device.__WARNING_no_match_for_argname_rate_in_MAX11043_device_t__; // default to global property value
+                    if (cmdLine.parse_uint8_dec("rate", rate))
+                    {
+                        // g_MAX11043_device.__WARNING_no_match_for_argname_rate_in_MAX11043_device_t__ = rate; // update global property value
+                    }
+                    // print arguments
+                    cmdLine.serial().printf("Configure_XXXXY");
+                    cmdLine.serial().printf(" linef=%d", linef);
+                    cmdLine.serial().printf(" rate=%d", rate);
+                    cmdLine.serial().printf("\r\n");
+                    // call function Configure_XXXXY(linef, rate)
+                    uint8_t result = g_MAX11043_device.Configure_XXXXY(linef, rate);
+                    cmdLine.serial().printf(" =%d\r\n", result);
+                    return true; // command handled by MAX11043
+// CODE GENERATOR: bottom of loop: testMenuCommand="XY", testMenuFirstCharHandler="X"
+                } // end nested case 'XY'
+                break;
+
+            } // end nested switch (cmdLine[1]) inside case 'X'
+            break;
+        } // end case 'X'
         // has_register_write_command: case '0'..'9','A'..'F','a'..'f' letters are reserved for bitstream commands
         case '0': case '1': case '2': case '3': case '4':
         case '5': case '6': case '7': case '8': case '9':