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

Dependencies:   MaximTinyTester MAX11410 CmdLine USBDevice

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?

UserRevisionLine numberNew 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, &regData);
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, &regData);
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