Test program running on MAX32625MBED. Control through USB Serial commands using a terminal emulator such as teraterm or putty.
Dependencies: MaximTinyTester MAX11410 CmdLine USBDevice
Test_Menu_MAX11410.cpp@35:8aa5dffe523d, 2019-11-11 (annotated)
- Committer:
- whismanoid
- Date:
- Mon Nov 11 23:30:04 2019 +0000
- Revision:
- 35:8aa5dffe523d
- Parent:
- 32:ad00de965151
- Child:
- 37:74aa97afa030
WIP 0x11 raw bitstream, *regname?, *regname=0x123456 commands
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
whismanoid | 35:8aa5dffe523d | 1 | // /******************************************************************************* |
whismanoid | 19:8f951e448ab1 | 2 | // * Copyright (C) 2019 Maxim Integrated Products, Inc., All Rights Reserved. |
whismanoid | 19:8f951e448ab1 | 3 | // * |
whismanoid | 19:8f951e448ab1 | 4 | // * Permission is hereby granted, free of charge, to any person obtaining a |
whismanoid | 19:8f951e448ab1 | 5 | // * copy of this software and associated documentation files (the "Software"), |
whismanoid | 19:8f951e448ab1 | 6 | // * to deal in the Software without restriction, including without limitation |
whismanoid | 19:8f951e448ab1 | 7 | // * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
whismanoid | 19:8f951e448ab1 | 8 | // * and/or sell copies of the Software, and to permit persons to whom the |
whismanoid | 19:8f951e448ab1 | 9 | // * Software is furnished to do so, subject to the following conditions: |
whismanoid | 19:8f951e448ab1 | 10 | // * |
whismanoid | 19:8f951e448ab1 | 11 | // * The above copyright notice and this permission notice shall be included |
whismanoid | 19:8f951e448ab1 | 12 | // * in all copies or substantial portions of the Software. |
whismanoid | 19:8f951e448ab1 | 13 | // * |
whismanoid | 19:8f951e448ab1 | 14 | // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
whismanoid | 19:8f951e448ab1 | 15 | // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
whismanoid | 19:8f951e448ab1 | 16 | // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
whismanoid | 19:8f951e448ab1 | 17 | // * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES |
whismanoid | 19:8f951e448ab1 | 18 | // * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
whismanoid | 19:8f951e448ab1 | 19 | // * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
whismanoid | 19:8f951e448ab1 | 20 | // * OTHER DEALINGS IN THE SOFTWARE. |
whismanoid | 19:8f951e448ab1 | 21 | // * |
whismanoid | 19:8f951e448ab1 | 22 | // * Except as contained in this notice, the name of Maxim Integrated |
whismanoid | 19:8f951e448ab1 | 23 | // * Products, Inc. shall not be used except as stated in the Maxim Integrated |
whismanoid | 19:8f951e448ab1 | 24 | // * Products, Inc. Branding Policy. |
whismanoid | 19:8f951e448ab1 | 25 | // * |
whismanoid | 19:8f951e448ab1 | 26 | // * The mere transfer of this software does not imply any licenses |
whismanoid | 19:8f951e448ab1 | 27 | // * of trade secrets, proprietary technology, copyrights, patents, |
whismanoid | 19:8f951e448ab1 | 28 | // * trademarks, maskwork rights, or any other form of intellectual |
whismanoid | 19:8f951e448ab1 | 29 | // * property whatsoever. Maxim Integrated Products, Inc. retains all |
whismanoid | 19:8f951e448ab1 | 30 | // * ownership rights. |
whismanoid | 19:8f951e448ab1 | 31 | // ******************************************************************************* |
whismanoid | 19:8f951e448ab1 | 32 | // */ |
whismanoid | 35:8aa5dffe523d | 33 | #include "CmdLine.h" |
whismanoid | 35:8aa5dffe523d | 34 | // CODE GENERATOR: class declaration and docstrings |
whismanoid | 35:8aa5dffe523d | 35 | // CODE GENERATOR: example code includes |
whismanoid | 35:8aa5dffe523d | 36 | // example code includes |
whismanoid | 35:8aa5dffe523d | 37 | // standard include for target platform -- Platform_Include_Boilerplate |
whismanoid | 19:8f951e448ab1 | 38 | #include "mbed.h" |
whismanoid | 35:8aa5dffe523d | 39 | // Platforms: |
whismanoid | 35:8aa5dffe523d | 40 | // - MAX32625MBED |
whismanoid | 35:8aa5dffe523d | 41 | // - supports mbed-os-5.11, requires USBDevice library |
whismanoid | 35:8aa5dffe523d | 42 | // - add https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/ |
whismanoid | 35:8aa5dffe523d | 43 | // - remove max32630fthr library (if present) |
whismanoid | 35:8aa5dffe523d | 44 | // - remove MAX32620FTHR library (if present) |
whismanoid | 35:8aa5dffe523d | 45 | // - MAX32600MBED |
whismanoid | 35:8aa5dffe523d | 46 | // - remove max32630fthr library (if present) |
whismanoid | 35:8aa5dffe523d | 47 | // - remove MAX32620FTHR library (if present) |
whismanoid | 35:8aa5dffe523d | 48 | // - Windows 10 note: Don't connect HDK until you are ready to load new firmware into the board. |
whismanoid | 35:8aa5dffe523d | 49 | // - NUCLEO_F446RE |
whismanoid | 35:8aa5dffe523d | 50 | // - remove USBDevice library |
whismanoid | 35:8aa5dffe523d | 51 | // - remove max32630fthr library (if present) |
whismanoid | 35:8aa5dffe523d | 52 | // - remove MAX32620FTHR library (if present) |
whismanoid | 35:8aa5dffe523d | 53 | // - NUCLEO_F401RE |
whismanoid | 35:8aa5dffe523d | 54 | // - remove USBDevice library |
whismanoid | 35:8aa5dffe523d | 55 | // - remove max32630fthr library (if present) |
whismanoid | 35:8aa5dffe523d | 56 | // - remove MAX32620FTHR library (if present) |
whismanoid | 35:8aa5dffe523d | 57 | // - MAX32630FTHR |
whismanoid | 35:8aa5dffe523d | 58 | // - #include "max32630fthr.h" |
whismanoid | 35:8aa5dffe523d | 59 | // - add http://os.mbed.org/teams/MaximIntegrated/code/max32630fthr/ |
whismanoid | 35:8aa5dffe523d | 60 | // - remove MAX32620FTHR library (if present) |
whismanoid | 35:8aa5dffe523d | 61 | // - MAX32620FTHR |
whismanoid | 35:8aa5dffe523d | 62 | // - #include "MAX32620FTHR.h" |
whismanoid | 35:8aa5dffe523d | 63 | // - remove max32630fthr library (if present) |
whismanoid | 35:8aa5dffe523d | 64 | // - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/ |
whismanoid | 35:8aa5dffe523d | 65 | // - not tested yet |
whismanoid | 35:8aa5dffe523d | 66 | // - MAX32625PICO |
whismanoid | 35:8aa5dffe523d | 67 | // - remove max32630fthr library (if present) |
whismanoid | 35:8aa5dffe523d | 68 | // - remove MAX32620FTHR library (if present) |
whismanoid | 35:8aa5dffe523d | 69 | // - not tested yet |
whismanoid | 35:8aa5dffe523d | 70 | // |
whismanoid | 35:8aa5dffe523d | 71 | // end Platform_Include_Boilerplate |
whismanoid | 19:8f951e448ab1 | 72 | #include "MAX11410.h" |
whismanoid | 19:8f951e448ab1 | 73 | #include "CmdLine.h" |
whismanoid | 35:8aa5dffe523d | 74 | // CODE GENERATOR: class declaration statement open |
whismanoid | 19:8f951e448ab1 | 75 | |
whismanoid | 35:8aa5dffe523d | 76 | // CODE GENERATOR: Test_Menu externs |
whismanoid | 35:8aa5dffe523d | 77 | #include "MAX11410.h" |
whismanoid | 35:8aa5dffe523d | 78 | extern MAX11410 g_MAX11410_device; // defined in main.cpp |
whismanoid | 19:8f951e448ab1 | 79 | |
whismanoid | 35:8aa5dffe523d | 80 | // CODE GENERATOR: build testMenuCommand list |
whismanoid | 35:8aa5dffe523d | 81 | // CODE GENERATOR: build testMenuGlobalArgsDict common/global argument list |
whismanoid | 35:8aa5dffe523d | 82 | // CODE GENERATOR: class member function declarations |
whismanoid | 35:8aa5dffe523d | 83 | // CODE GENERATOR: MAX11410 Command Name = Init (void) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 84 | // CODE GENERATOR: Menu item hint description Menu item '!' |
whismanoid | 35:8aa5dffe523d | 85 | // CODE GENERATOR: Menu item '!' -- Menu item ! |
whismanoid | 35:8aa5dffe523d | 86 | // CODE GENERATOR: test menu case '!': |
whismanoid | 35:8aa5dffe523d | 87 | // CODE GENERATOR: helpString '! -- Init' |
whismanoid | 35:8aa5dffe523d | 88 | // CODE GENERATOR: CMD_ 'None' |
whismanoid | 35:8aa5dffe523d | 89 | // CODE GENERATOR: CommandName 'Init' |
whismanoid | 35:8aa5dffe523d | 90 | // CODE GENERATOR: CommandParamIn 'void' |
whismanoid | 35:8aa5dffe523d | 91 | // CODE GENERATOR: CommandReturnType 'uint8_t' |
whismanoid | 35:8aa5dffe523d | 92 | // CODE GENERATOR: CommandPre '' |
whismanoid | 35:8aa5dffe523d | 93 | // CODE GENERATOR: CommandPost '' |
whismanoid | 35:8aa5dffe523d | 94 | // CODE GENERATOR: CommandReturn '@return 1 on success; 0 on failure' |
whismanoid | 35:8aa5dffe523d | 95 | // CODE GENERATOR: MAX11410 Command Name = VoltageOfCode (uint16_t value_u24) --> double |
whismanoid | 35:8aa5dffe523d | 96 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 97 | // CODE GENERATOR: MAX11410 Command Name = RegWrite (MAX11410_CMD_enum_t regAddress, uint32_t regData) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 98 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 99 | // CODE GENERATOR: CommandDescriptionCMDWord = CMD_1aaa_aaaa_REGISTER_READ |
whismanoid | 35:8aa5dffe523d | 100 | // CODE GENERATOR: MAX11410 Command Name = RegWrite CMD_1aaa_aaaa_REGISTER_READ (MAX11410_CMD_enum_t regAddress, uint32_t regData) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 101 | // CODE GENERATOR: MAX11410 Command Name = RegRead (MAX11410_CMD_enum_t regAddress, uint32_t* ptrRegData) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 102 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 103 | // CODE GENERATOR: CommandDescriptionCMDWord = CMD_1aaa_aaaa_REGISTER_READ |
whismanoid | 35:8aa5dffe523d | 104 | // CODE GENERATOR: MAX11410 Command Name = RegRead CMD_1aaa_aaaa_REGISTER_READ (MAX11410_CMD_enum_t regAddress, uint32_t* ptrRegData) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 105 | // CODE GENERATOR: MAX11410 Command Name = RegSize (MAX11410_CMD_enum_t regAddress) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 106 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 107 | // CODE GENERATOR: MAX11410 Command Name = RegName (MAX11410_CMD_enum_t regAddress) --> const char* |
whismanoid | 35:8aa5dffe523d | 108 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 109 | // CODE GENERATOR: MAX11410 Command Name = Configure_Voltage (MAX11410_AINP_SEL_enum_t channel_hi, MAX11410_AINN_SEL_enum_t channel_lo) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 110 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 111 | // CODE GENERATOR: MAX11410 Command Name = _TODO_MAX11410_Read_All_Voltages_ (MAX11410_AINP_SEL_enum_t channel_hi, MAX11410_AINN_SEL_enum_t channel_lo) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 112 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 113 | // CODE GENERATOR: MAX11410 Command Name = Measure_Voltage (MAX11410_AINP_SEL_enum_t channel_hi, MAX11410_AINN_SEL_enum_t channel_lo) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 114 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 115 | // CODE GENERATOR: MAX11410 Command Name = Configure_RTD (MAX11410_AINP_SEL_enum_t channel_RTD_Force, MAX11410_AINP_SEL_enum_t channel_RTD_Hi, MAX11410_AINN_SEL_enum_t channel_RTD_Lo) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 116 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 117 | // CODE GENERATOR: MAX11410 Command Name = Measure_RTD (MAX11410_AINP_SEL_enum_t channel_RTD_Force, MAX11410_AINP_SEL_enum_t channel_RTD_Hi, MAX11410_AINN_SEL_enum_t channel_RTD_Lo) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 118 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 119 | // CODE GENERATOR: MAX11410 Command Name = Configure_Thermocouple (MAX11410_AINP_SEL_enum_t channel_TC_Hi, MAX11410_AINN_SEL_enum_t channel_TC_Lo, MAX11410_AINP_SEL_enum_t channel_RTD_Hi, MAX11410_AINP_SEL_enum_t channel_RTD_Lo) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 120 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 121 | // CODE GENERATOR: MAX11410 Command Name = Measure_Thermocouple (MAX11410_AINP_SEL_enum_t channel_TC_Hi, MAX11410_AINN_SEL_enum_t channel_TC_Lo, MAX11410_AINP_SEL_enum_t channel_RTD_Hi, MAX11410_AINP_SEL_enum_t channel_RTD_Lo) --> uint8_t |
whismanoid | 35:8aa5dffe523d | 122 | // CODE GENERATOR: no Menu item hint in description |
whismanoid | 35:8aa5dffe523d | 123 | // CODE GENERATOR: testMenuGlobalArgsDict scan global property list g_MAX11410_device |
whismanoid | 35:8aa5dffe523d | 124 | |
whismanoid | 35:8aa5dffe523d | 125 | // CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11410_device.VRef |
whismanoid | 35:8aa5dffe523d | 126 | // CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11410_device.VRef argname = VRef |
whismanoid | 35:8aa5dffe523d | 127 | // CODE GENERATOR: testMenuGlobalArgsDict['VRef']['alias'] = 'None' |
whismanoid | 35:8aa5dffe523d | 128 | // CODE GENERATOR: testMenuGlobalArgsDict['VRef']['argtype'] = 'double' |
whismanoid | 35:8aa5dffe523d | 129 | // CODE GENERATOR: testMenuGlobalArgsDict['VRef']['usedByCommandName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 130 | // CODE GENERATOR: testMenuGlobalArgsDict['VRef']['usedBytestMenuItemName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 131 | |
whismanoid | 35:8aa5dffe523d | 132 | // CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11410_device.status |
whismanoid | 35:8aa5dffe523d | 133 | // CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11410_device.status shadow of argname = status |
whismanoid | 35:8aa5dffe523d | 134 | // CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11410_device.status argname = status |
whismanoid | 35:8aa5dffe523d | 135 | // CODE GENERATOR: testMenuGlobalArgsDict['status']['alias'] = 'None' |
whismanoid | 35:8aa5dffe523d | 136 | // CODE GENERATOR: testMenuGlobalArgsDict['status']['argtype'] = 'uint32_t' |
whismanoid | 35:8aa5dffe523d | 137 | // CODE GENERATOR: testMenuGlobalArgsDict['status']['usedByCommandName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 138 | // CODE GENERATOR: testMenuGlobalArgsDict['status']['usedBytestMenuItemName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 139 | |
whismanoid | 35:8aa5dffe523d | 140 | // CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11410_device.data0 |
whismanoid | 35:8aa5dffe523d | 141 | // CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11410_device.data0 shadow of argname = data0 |
whismanoid | 35:8aa5dffe523d | 142 | // CODE GENERATOR: testMenuGlobalArgsDict add global property g_MAX11410_device.data0 argname = data0 |
whismanoid | 35:8aa5dffe523d | 143 | // CODE GENERATOR: testMenuGlobalArgsDict['data0']['alias'] = 'None' |
whismanoid | 35:8aa5dffe523d | 144 | // CODE GENERATOR: testMenuGlobalArgsDict['data0']['argtype'] = 'uint32_t' |
whismanoid | 35:8aa5dffe523d | 145 | // CODE GENERATOR: testMenuGlobalArgsDict['data0']['usedByCommandName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 146 | // CODE GENERATOR: testMenuGlobalArgsDict['data0']['usedBytestMenuItemName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 147 | |
whismanoid | 35:8aa5dffe523d | 148 | |
whismanoid | 35:8aa5dffe523d | 149 | // CODE GENERATOR: scan testMenuCommand list for items that can be shortened to single character |
whismanoid | 35:8aa5dffe523d | 150 | // CODE GENERATOR: shorten testMenuCommand to single character if unambiguous |
whismanoid | 35:8aa5dffe523d | 151 | // CODE GENERATOR: testMenuCommand '!' already single character |
whismanoid | 35:8aa5dffe523d | 152 | |
whismanoid | 35:8aa5dffe523d | 153 | // CODE GENERATOR: help menu |
whismanoid | 35:8aa5dffe523d | 154 | bool MAX11410_menu_help(CmdLine & cmdLine) |
whismanoid | 35:8aa5dffe523d | 155 | { |
whismanoid | 35:8aa5dffe523d | 156 | // CODE GENERATOR: command: ! |
whismanoid | 35:8aa5dffe523d | 157 | // CODE GENERATOR: help: ! -- Init |
whismanoid | 35:8aa5dffe523d | 158 | cmdLine.serial().printf("\r\n ! -- Init"); |
whismanoid | 35:8aa5dffe523d | 159 | // |
whismanoid | 35:8aa5dffe523d | 160 | cmdLine.serial().printf("\r\n @ -- print MAX11410 configuration"); |
whismanoid | 35:8aa5dffe523d | 161 | // |
whismanoid | 35:8aa5dffe523d | 162 | } |
whismanoid | 19:8f951e448ab1 | 163 | |
whismanoid | 19:8f951e448ab1 | 164 | bool MAX11410_menu_onEOLcommandParser(CmdLine & cmdLine) |
whismanoid | 19:8f951e448ab1 | 165 | { |
whismanoid | 35:8aa5dffe523d | 166 | |
whismanoid | 35:8aa5dffe523d | 167 | // CODE GENERATOR: before switch (cmdLine[0]), test if buffer starts with a regName |
whismanoid | 35:8aa5dffe523d | 168 | // TODO: if buffer starts with a regName: |
whismanoid | 35:8aa5dffe523d | 169 | // for each reg value (0..n) if(cmdLine.has_keyword(device.regName(r))): |
whismanoid | 35:8aa5dffe523d | 170 | cmdLine.serial().printf(" scan RegName... "); |
whismanoid | 35:8aa5dffe523d | 171 | for (uint8_t regAddress = 0; regAddress < 0x80; regAddress++) |
whismanoid | 19:8f951e448ab1 | 172 | { |
whismanoid | 35:8aa5dffe523d | 173 | uint32_t regData = 0; |
whismanoid | 35:8aa5dffe523d | 174 | bool is_regname_query = false; |
whismanoid | 35:8aa5dffe523d | 175 | bool is_regname_assignment = false; |
whismanoid | 35:8aa5dffe523d | 176 | if (cmdLine.parse_uint32_dec(g_MAX11410_device.RegName((MAX11410::MAX11410_CMD_enum_t)regAddress), regData)) |
whismanoid | 19:8f951e448ab1 | 177 | { |
whismanoid | 35:8aa5dffe523d | 178 | cmdLine.serial().printf(" regAddress=0x%2.2X\r\n", (regAddress & 0xFF)); |
whismanoid | 35:8aa5dffe523d | 179 | cmdLine.serial().printf(" RegName=%s\r\n", g_MAX11410_device.RegName((MAX11410::MAX11410_CMD_enum_t)regAddress)); |
whismanoid | 35:8aa5dffe523d | 180 | // TODO: accept regName ’?’ as ‘RegRead‘ by name |
whismanoid | 35:8aa5dffe523d | 181 | is_regname_query = (cmdLine.chSeparator == '?'); |
whismanoid | 35:8aa5dffe523d | 182 | is_regname_assignment = (cmdLine.chSeparator == '='); |
whismanoid | 35:8aa5dffe523d | 183 | if (is_regname_query) |
whismanoid | 19:8f951e448ab1 | 184 | { |
whismanoid | 35:8aa5dffe523d | 185 | cmdLine.serial().printf(" RegRead"); |
whismanoid | 35:8aa5dffe523d | 186 | g_MAX11410_device.RegRead((MAX11410::MAX11410_CMD_enum_t)regAddress, ®Data); |
whismanoid | 35:8aa5dffe523d | 187 | cmdLine.serial().printf("regData=0x%6.6x\r\n", (regData & 0x00FFFFFF)); |
whismanoid | 35:8aa5dffe523d | 188 | } |
whismanoid | 35:8aa5dffe523d | 189 | // TODO: accept regName ’=0x123456’ as ‘RegWrite’ by name |
whismanoid | 35:8aa5dffe523d | 190 | if (is_regname_assignment) |
whismanoid | 35:8aa5dffe523d | 191 | { |
whismanoid | 35:8aa5dffe523d | 192 | cmdLine.serial().printf(" RegWrite"); |
whismanoid | 35:8aa5dffe523d | 193 | cmdLine.serial().printf("regData=0x%6.6x\r\n", (regData & 0x00FFFFFF)); |
whismanoid | 35:8aa5dffe523d | 194 | g_MAX11410_device.RegWrite((MAX11410::MAX11410_CMD_enum_t)regAddress, regData); |
whismanoid | 19:8f951e448ab1 | 195 | } |
whismanoid | 19:8f951e448ab1 | 196 | } |
whismanoid | 35:8aa5dffe523d | 197 | } // end for regAddr |
whismanoid | 35:8aa5dffe523d | 198 | |
whismanoid | 35:8aa5dffe523d | 199 | // CODE GENERATOR: testMenuGlobalArgsDict Consolidate common/global argument parsing |
whismanoid | 35:8aa5dffe523d | 200 | |
whismanoid | 35:8aa5dffe523d | 201 | // CODE GENERATOR: testMenuGlobalArgsDict['VRef']['alias'] = 'None' |
whismanoid | 35:8aa5dffe523d | 202 | // CODE GENERATOR: testMenuGlobalArgsDict['VRef']['argtype'] = 'double' |
whismanoid | 35:8aa5dffe523d | 203 | // CODE GENERATOR: testMenuGlobalArgsDict['VRef']['usedByCommandName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 204 | // CODE GENERATOR: testMenuGlobalArgsDict['VRef']['usedBytestMenuItemName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 205 | // parse argument double VRef |
whismanoid | 35:8aa5dffe523d | 206 | double VRef = g_MAX11410_device.VRef; // default to global property value |
whismanoid | 35:8aa5dffe523d | 207 | if (cmdLine.parse_double("VRef", VRef)) |
whismanoid | 28:d2ee1c57ff81 | 208 | { |
whismanoid | 35:8aa5dffe523d | 209 | g_MAX11410_device.VRef = VRef; // update global property value |
whismanoid | 28:d2ee1c57ff81 | 210 | } |
whismanoid | 35:8aa5dffe523d | 211 | |
whismanoid | 35:8aa5dffe523d | 212 | // CODE GENERATOR: testMenuGlobalArgsDict['data0']['alias'] = 'None' |
whismanoid | 35:8aa5dffe523d | 213 | // CODE GENERATOR: testMenuGlobalArgsDict['data0']['argtype'] = 'uint32_t' |
whismanoid | 35:8aa5dffe523d | 214 | // CODE GENERATOR: testMenuGlobalArgsDict['data0']['usedByCommandName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 215 | // CODE GENERATOR: testMenuGlobalArgsDict['data0']['usedBytestMenuItemName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 216 | // parse argument uint32_t data0 |
whismanoid | 35:8aa5dffe523d | 217 | uint32_t data0 = g_MAX11410_device.data0; // default to global property value |
whismanoid | 35:8aa5dffe523d | 218 | if (cmdLine.parse_uint32_dec("data0", data0)) |
whismanoid | 28:d2ee1c57ff81 | 219 | { |
whismanoid | 35:8aa5dffe523d | 220 | g_MAX11410_device.data0 = data0; // update global property value |
whismanoid | 28:d2ee1c57ff81 | 221 | } |
whismanoid | 35:8aa5dffe523d | 222 | |
whismanoid | 35:8aa5dffe523d | 223 | // CODE GENERATOR: testMenuGlobalArgsDict['status']['alias'] = 'None' |
whismanoid | 35:8aa5dffe523d | 224 | // CODE GENERATOR: testMenuGlobalArgsDict['status']['argtype'] = 'uint32_t' |
whismanoid | 35:8aa5dffe523d | 225 | // CODE GENERATOR: testMenuGlobalArgsDict['status']['usedByCommandName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 226 | // CODE GENERATOR: testMenuGlobalArgsDict['status']['usedBytestMenuItemName'] = 'None' |
whismanoid | 35:8aa5dffe523d | 227 | // parse argument uint32_t status |
whismanoid | 35:8aa5dffe523d | 228 | uint32_t status = g_MAX11410_device.status; // default to global property value |
whismanoid | 35:8aa5dffe523d | 229 | if (cmdLine.parse_uint32_dec("status", status)) |
whismanoid | 19:8f951e448ab1 | 230 | { |
whismanoid | 35:8aa5dffe523d | 231 | g_MAX11410_device.status = status; // update global property value |
whismanoid | 19:8f951e448ab1 | 232 | } |
whismanoid | 35:8aa5dffe523d | 233 | |
whismanoid | 35:8aa5dffe523d | 234 | switch (cmdLine[0]) |
whismanoid | 35:8aa5dffe523d | 235 | { |
whismanoid | 35:8aa5dffe523d | 236 | // CODE GENERATOR: generate @ command print global property values of g_MAX11410_device |
whismanoid | 29:7d0bc70036be | 237 | case '@': |
whismanoid | 29:7d0bc70036be | 238 | { |
whismanoid | 35:8aa5dffe523d | 239 | // CODE GENERATOR: @ command print double g_MAX11410_device.VRef |
whismanoid | 35:8aa5dffe523d | 240 | cmdLine.serial().printf("VRef = "); |
whismanoid | 35:8aa5dffe523d | 241 | cmdLine.serial().printf("%f\n", g_MAX11410_device.VRef); |
whismanoid | 35:8aa5dffe523d | 242 | // CODE GENERATOR: @ command print uint32_t g_MAX11410_device.status |
whismanoid | 35:8aa5dffe523d | 243 | cmdLine.serial().printf("status = "); |
whismanoid | 35:8aa5dffe523d | 244 | cmdLine.serial().printf("%d = 0x%8.8x\n", g_MAX11410_device.status, g_MAX11410_device.status); |
whismanoid | 35:8aa5dffe523d | 245 | // CODE GENERATOR: @ command print uint32_t g_MAX11410_device.data0 |
whismanoid | 35:8aa5dffe523d | 246 | cmdLine.serial().printf("data0 = "); |
whismanoid | 35:8aa5dffe523d | 247 | cmdLine.serial().printf("%d = 0x%8.8x\n", g_MAX11410_device.data0, g_MAX11410_device.data0); |
whismanoid | 35:8aa5dffe523d | 248 | return true; // command handled by MAX11410 |
whismanoid | 35:8aa5dffe523d | 249 | break; |
whismanoid | 35:8aa5dffe523d | 250 | } |
whismanoid | 35:8aa5dffe523d | 251 | // CODE GENERATOR: TODO1: generate GPIO commands for LDAC, CLR, etc. based on device driver function names |
whismanoid | 35:8aa5dffe523d | 252 | // case 'G'..'Z','g'..'z' are reserved for GPIO commands |
whismanoid | 35:8aa5dffe523d | 253 | // case 'A'..'F','a'..'f' may be available if not claimed by bitstream commands |
whismanoid | 35:8aa5dffe523d | 254 | |
whismanoid | 35:8aa5dffe523d | 255 | // CODE GENERATOR: test menu |
whismanoid | 35:8aa5dffe523d | 256 | // case '0'..'9','A'..'F','a'..'f' letters are reserved for bitstream commands |
whismanoid | 35:8aa5dffe523d | 257 | // has_register_write_command: case '0'..'9','A'..'F','a'..'f' letters are reserved for bitstream commands |
whismanoid | 35:8aa5dffe523d | 258 | // CODE GENERATOR: test menu case '!': |
whismanoid | 35:8aa5dffe523d | 259 | // CODE GENERATOR: helpString '! -- Init' |
whismanoid | 35:8aa5dffe523d | 260 | // CODE GENERATOR: CMD_ 'None' |
whismanoid | 35:8aa5dffe523d | 261 | // CODE GENERATOR: CommandName 'Init' |
whismanoid | 35:8aa5dffe523d | 262 | // CODE GENERATOR: CommandParamIn 'void' |
whismanoid | 35:8aa5dffe523d | 263 | // CODE GENERATOR: CommandReturnType 'uint8_t' |
whismanoid | 35:8aa5dffe523d | 264 | // CODE GENERATOR: CommandPre '' |
whismanoid | 35:8aa5dffe523d | 265 | // CODE GENERATOR: CommandPost '' |
whismanoid | 35:8aa5dffe523d | 266 | // CODE GENERATOR: CommandReturn '@return 1 on success; 0 on failure' |
whismanoid | 35:8aa5dffe523d | 267 | case '!': |
whismanoid | 35:8aa5dffe523d | 268 | { |
whismanoid | 35:8aa5dffe523d | 269 | // test menu command '!' handler: |
whismanoid | 35:8aa5dffe523d | 270 | // helpString='! -- Init' |
whismanoid | 35:8aa5dffe523d | 271 | // CMD_='None' |
whismanoid | 35:8aa5dffe523d | 272 | // CommandName='Init' |
whismanoid | 35:8aa5dffe523d | 273 | // CommandParamIn='void' |
whismanoid | 35:8aa5dffe523d | 274 | // CommandReturnType='uint8_t' |
whismanoid | 35:8aa5dffe523d | 275 | // @Pre='' |
whismanoid | 35:8aa5dffe523d | 276 | // @Post='' |
whismanoid | 35:8aa5dffe523d | 277 | // @Return='@return 1 on success; 0 on failure' |
whismanoid | 35:8aa5dffe523d | 278 | cmdLine.serial().printf("Init"); |
whismanoid | 35:8aa5dffe523d | 279 | // call function Init |
whismanoid | 35:8aa5dffe523d | 280 | uint8_t result = g_MAX11410_device.Init(); |
whismanoid | 35:8aa5dffe523d | 281 | cmdLine.serial().printf(" =%d", result); |
whismanoid | 35:8aa5dffe523d | 282 | return true; // command handled by MAX11410 |
whismanoid | 35:8aa5dffe523d | 283 | } // end case '!' |
whismanoid | 35:8aa5dffe523d | 284 | break; |
whismanoid | 35:8aa5dffe523d | 285 | |
whismanoid | 35:8aa5dffe523d | 286 | // has_register_write_command: case '0'..'9','A'..'F','a'..'f' letters are reserved for bitstream commands |
whismanoid | 35:8aa5dffe523d | 287 | case '0': case '1': case '2': case '3': case '4': |
whismanoid | 35:8aa5dffe523d | 288 | case '5': case '6': case '7': case '8': case '9': |
whismanoid | 35:8aa5dffe523d | 289 | case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': |
whismanoid | 35:8aa5dffe523d | 290 | case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': |
whismanoid | 35:8aa5dffe523d | 291 | { |
whismanoid | 35:8aa5dffe523d | 292 | // hexadecimal codes get parsed as bytecodes |
whismanoid | 30:9eb6eff512e7 | 293 | // |
whismanoid | 35:8aa5dffe523d | 294 | // parse_byteCount_byteList_dec() assumes all keyword args have already been removed from the buffer |
whismanoid | 35:8aa5dffe523d | 295 | // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT]; |
whismanoid | 35:8aa5dffe523d | 296 | #define MAX_SPI_BYTE_COUNT 32 |
whismanoid | 35:8aa5dffe523d | 297 | size_t byteCount = byteCount; |
whismanoid | 35:8aa5dffe523d | 298 | static char mosiData[MAX_SPI_BYTE_COUNT]; |
whismanoid | 35:8aa5dffe523d | 299 | static char misoData[MAX_SPI_BYTE_COUNT]; |
whismanoid | 35:8aa5dffe523d | 300 | if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData, |
whismanoid | 35:8aa5dffe523d | 301 | MAX_SPI_BYTE_COUNT)) |
whismanoid | 35:8aa5dffe523d | 302 | { |
whismanoid | 35:8aa5dffe523d | 303 | // if length is 1 byte then operation is RegRead, otherwise RegWrite |
whismanoid | 35:8aa5dffe523d | 304 | // register_read_function 'RegRead' |
whismanoid | 35:8aa5dffe523d | 305 | // register_write_function 'RegWrite' |
whismanoid | 35:8aa5dffe523d | 306 | // register_name_function 'RegName' |
whismanoid | 35:8aa5dffe523d | 307 | // register_size_function 'RegSize' |
whismanoid | 35:8aa5dffe523d | 308 | MAX11410::MAX11410_CMD_enum_t regAddress = (MAX11410::MAX11410_CMD_enum_t)((mosiData[0] &~ MAX11410::CMD_1aaa_aaaa_REGISTER_READ) & 0xFF); |
whismanoid | 35:8aa5dffe523d | 309 | cmdLine.serial().printf(" regAddress=0x%2.2x\r\n", (regAddress & 0xFF)); |
whismanoid | 35:8aa5dffe523d | 310 | cmdLine.serial().printf(" RegName=%s\r\n", g_MAX11410_device.RegName(regAddress)); |
whismanoid | 35:8aa5dffe523d | 311 | uint32_t regData = 0; |
whismanoid | 35:8aa5dffe523d | 312 | int regSize = g_MAX11410_device.RegSize(regAddress); |
whismanoid | 35:8aa5dffe523d | 313 | cmdLine.serial().printf(" RegSize=%d\r\n", regSize); |
whismanoid | 35:8aa5dffe523d | 314 | switch(regSize) |
whismanoid | 35:8aa5dffe523d | 315 | { |
whismanoid | 35:8aa5dffe523d | 316 | case 8: |
whismanoid | 35:8aa5dffe523d | 317 | regData = ((uint32_t)mosiData[1] & 0xFF); |
whismanoid | 35:8aa5dffe523d | 318 | break; |
whismanoid | 35:8aa5dffe523d | 319 | case 16: |
whismanoid | 35:8aa5dffe523d | 320 | regData = (((uint32_t)mosiData[1] & 0xFF) << 8) + ((uint32_t)mosiData[2] & 0xFF); |
whismanoid | 35:8aa5dffe523d | 321 | break; |
whismanoid | 35:8aa5dffe523d | 322 | case 24: |
whismanoid | 35:8aa5dffe523d | 323 | regData = (((uint32_t)mosiData[1] & 0xFF) << 16) + (((uint32_t)mosiData[2] & 0xFF) << 8) + ((uint32_t)mosiData[3] & 0xFF); |
whismanoid | 35:8aa5dffe523d | 324 | break; |
whismanoid | 35:8aa5dffe523d | 325 | } |
whismanoid | 35:8aa5dffe523d | 326 | if ((byteCount == 1) || (regAddress & MAX11410::CMD_1aaa_aaaa_REGISTER_READ)) |
whismanoid | 35:8aa5dffe523d | 327 | { |
whismanoid | 35:8aa5dffe523d | 328 | cmdLine.serial().printf(" RegRead"); |
whismanoid | 35:8aa5dffe523d | 329 | g_MAX11410_device.RegRead(regAddress, ®Data); |
whismanoid | 35:8aa5dffe523d | 330 | cmdLine.serial().printf("regData=0x%6.6x\r\n", (regData & 0x00FFFFFF)); |
whismanoid | 35:8aa5dffe523d | 331 | } |
whismanoid | 35:8aa5dffe523d | 332 | else |
whismanoid | 35:8aa5dffe523d | 333 | { |
whismanoid | 35:8aa5dffe523d | 334 | cmdLine.serial().printf(" RegWrite regData=0x%6.6X\r\n", (regData & 0x00FFFFFF)); |
whismanoid | 35:8aa5dffe523d | 335 | g_MAX11410_device.RegWrite(regAddress, regData); |
whismanoid | 35:8aa5dffe523d | 336 | } |
whismanoid | 35:8aa5dffe523d | 337 | // is there support function shadow regValue of regAddr? |
whismanoid | 35:8aa5dffe523d | 338 | } |
whismanoid | 35:8aa5dffe523d | 339 | return true; // command handled by MAX11410 |
whismanoid | 30:9eb6eff512e7 | 340 | // |
whismanoid | 35:8aa5dffe523d | 341 | } // end case '0'..'9','A'..'F','a'..'f' |
whismanoid | 29:7d0bc70036be | 342 | break; |
whismanoid | 19:8f951e448ab1 | 343 | } // end switch (cmdLine[0]) |
whismanoid | 35:8aa5dffe523d | 344 | return false; // command not handled by MAX11410 |
whismanoid | 19:8f951e448ab1 | 345 | } // end bool MAX11410_menu_onEOLcommandParser(CmdLine & cmdLine) |
whismanoid | 35:8aa5dffe523d | 346 | |
whismanoid | 35:8aa5dffe523d | 347 | // CODE GENERATOR: class declaration statement close |