Test program running on MAX32625MBED. Control through USB Serial commands using a terminal emulator such as teraterm or putty.
Dependencies: MaximTinyTester MAX11131 CmdLine MAX541 USBDevice
Diff: Test_Menu_MAX11131.cpp
- Revision:
- 28:298907617848
- Parent:
- 11:38b95a59de02
- Child:
- 29:c4975953cb65
--- a/Test_Menu_MAX11131.cpp Fri Sep 27 21:14:58 2019 -0700 +++ b/Test_Menu_MAX11131.cpp Tue Apr 13 21:27:18 2021 -0700 @@ -1,5 +1,5 @@ // /******************************************************************************* -// * Copyright (C) 2019 Maxim Integrated Products, Inc., All Rights Reserved. +// * Copyright (C) 2021 Maxim Integrated Products, Inc., All Rights Reserved. // * // * Permission is hereby granted, free of charge, to any person obtaining a // * copy of this software and associated documentation files (the "Software"), @@ -30,648 +30,1011 @@ // * ownership rights. // ******************************************************************************* // */ - +// example code includes +// standard include for target platform -- Platform_Include_Boilerplate #include "mbed.h" +// Platforms: +// - MAX32625MBED +// - supports mbed-os-5.11, requires USBDevice library +// - add https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/ +// - remove max32630fthr library (if present) +// - remove MAX32620FTHR library (if present) +// - MAX32600MBED +// - Please note the last supported version is Mbed OS 6.3. +// - remove max32630fthr library (if present) +// - remove MAX32620FTHR library (if present) +// - Windows 10 note: Don't connect HDK until you are ready to load new firmware into the board. +// - NUCLEO_F446RE +// - remove USBDevice library +// - remove max32630fthr library (if present) +// - remove MAX32620FTHR library (if present) +// - NUCLEO_F401RE +// - remove USBDevice library +// - remove max32630fthr library (if present) +// - remove MAX32620FTHR library (if present) +// - MAX32630FTHR +// - #include "max32630fthr.h" +// - add http://developer.mbed.org/teams/MaximIntegrated/code/max32630fthr/ +// - remove MAX32620FTHR library (if present) +// - MAX32620FTHR +// - #include "MAX32620FTHR.h" +// - remove max32630fthr library (if present) +// - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/ +// - not tested yet +// - MAX32625PICO +// - #include "max32625pico.h" +// - add https://os.mbed.com/users/switches/code/max32625pico/ +// - remove max32630fthr library (if present) +// - remove MAX32620FTHR library (if present) +// - not tested yet +// - see https://os.mbed.com/users/switches/code/max32625pico/ +// - see https://os.mbed.com/users/switches/code/PICO_board_demo/ +// - see https://os.mbed.com/users/switches/code/PICO_USB_I2C_SPI/ +// - see https://os.mbed.com/users/switches/code/SerialInterface/ +// - Note: To load the MAX32625PICO firmware, hold the button while +// connecting the USB cable, then copy firmware bin file +// to the MAINTENANCE drive. +// - see https://os.mbed.com/platforms/MAX32625PICO/ +// - see https://os.mbed.com/teams/MaximIntegrated/wiki/MAX32625PICO-Firmware-Updates +// +// end Platform_Include_Boilerplate #include "MAX11131.h" #include "CmdLine.h" +#include "MaximTinyTester.h" -//-------------------------------------------------- -// tolerate AT commands, which may be sent during probe, such as: -// AT -// AT+CGMI -- request manufacturer identification AT+CMGI=? -// AT+CGMM -- request manufacturer model -// AT%IPSYS? -// ATE0 -- echo disable -// ATV1 -- verbose result codes OK | ERROR | NO CARRIER -// AT+CMEE=1 -// ATX4 -// AT&C1 -// ATE0 -// AT+CMEE=1 -// AT+GCAP -// ATI -// AT+CPIN? -// AT+CGMM -#ifndef IGNORE_AT_COMMANDS -#define IGNORE_AT_COMMANDS 1 -#endif +#include "MAX11131.h" +extern MAX11131 g_MAX11131_device; // defined in main.cpp + + + +// CODE GENERATOR: MAX11131 needs print_value(CmdLine& cmdLine, int16_t value_u12, int channelId) +//---------------------------------------- +void print_value(CmdLine& cmdLine, int16_t value_u12, int channelId) +{ + int channelPairIndex = channelId / 2; + // format: 1 0 0 0 1 UCH0/1 UCH2/3 UCH4/5 UCH6/7 UCH8/9 UCH10/11 UCH12/13 UCH14/15 PDIFF_COM x x + // unused variable: int UCHn = (g_MAX11131_device.UNIPOLAR >> (10 - channelPairIndex)) & 0x01; + int BCHn = (g_MAX11131_device.BIPOLAR >> (10 - channelPairIndex)) & 0x01; + // unused variable: int RANGEn = (g_MAX11131_device.RANGE >> (10 - channelPairIndex)) & 0x01; + // + cmdLine.serial().printf(" ch="); + // TODO1: if CHANID=0 don't print ch=channelId + if ((g_MAX11131_device.isExternalClock == 0) || (g_MAX11131_device.chan_id_0_1 == 1)) + { + // Internal clock modes always use channel ID. + // External clock modes use channel ID if ADC_MODE_CONTROL.CHAN_ID is 1. + cmdLine.serial().printf("%d", channelId); + } else { + cmdLine.serial().printf("?"); + } + if (BCHn) + { + cmdLine.serial().printf(" xb="); + cmdLine.serial().printf("%d", g_MAX11131_device.TwosComplementValue(value_u12)); + } + else + { + cmdLine.serial().printf(" xu="); + cmdLine.serial().printf("%d", value_u12); + } + // dtostrf width and precision: 2.5v / 4096 LSB = 0.0006103515625 volts per LSB + cmdLine.serial().printf(" = 0x%4.4x = %6.4fV", (value_u12 & 0xFFFF), g_MAX11131_device.VoltageOfCode(value_u12, channelId)); +} + +// CODE GENERATOR: MAX11131 needs AINcode_print_value_chanID(CmdLine& cmdLine, int nWords) +//---------------------------------------- +// read data words +// @pre RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data +// @pre AINcode[NUM_CHANNELS] contains the latest readings in LSBs +// For internal clock modes, the data format always includes the channel address. +// misoData16 = CH[3:0] DATA[11:0] +void AINcode_print_value_chanID(CmdLine& cmdLine, int nWords) +{ + cmdLine.serial().printf("\r\nScanRead_nWords_chanID nWords="); + cmdLine.serial().printf("%d\r\n", nWords); + for (int index = 0; index < nWords; index++) { + //~ int16_t misoData16 = MAX11131_ScanRead(); + // For internal clock modes, the data format always includes the channel address. + // misoData16 = CH[3:0] DATA[11:0] + int16_t value_u12 = (g_MAX11131_device.RAW_misoData16[index] & 0x0FFF); + int channelId = ((g_MAX11131_device.RAW_misoData16[index] >> 12) & 0x000F); + // diagnostic: print raw MISO data + cmdLine.serial().printf(" MAX11131.MISO["); + cmdLine.serial().printf("%d", index); + cmdLine.serial().printf("]=0x"); + cmdLine.serial().printf("%0x4.4x", (g_MAX11131_device.RAW_misoData16[index] & 0xFFFF)); + cmdLine.serial().printf(":"); + print_value(cmdLine, value_u12, channelId); + cmdLine.serial().printf("\r\n"); + } +} -extern MAX11131 g_MAX11131_device; // defined in main.cpp -extern void AINcode_print_value_externalClock(CmdLine& cmdLine, int nWords); // defined in main.cpp -extern void AINcode_print_value_chanID(CmdLine& cmdLine, int nWords); // defined in main.cpp -extern void AINcode_print_value_chanID_mean(CmdLine& cmdLine, int nWords); // defined in main.cpp -extern void MAX11131_print_register_verbose(CmdLine& cmdLine, int16_t registerData); // defined in main.cpp +// CODE GENERATOR: MAX11131 needs AINcode_print_value_externalClock(CmdLine& cmdLine, int nWords) +//---------------------------------------- +// read data words +// @pre RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data +// @pre AINcode[NUM_CHANNELS] contains the latest readings in LSBs +// For external clock modes, the data format returned depends on the CHAN_ID bit. +// when CHAN_ID = 0: misoData16 = 0 DATA[11:0] x x x +// when CHAN_ID = 1: misoData16 = CH[3:0] DATA[11:0] +void AINcode_print_value_externalClock(CmdLine& cmdLine, int nWords) +{ + // For external clock modes, the data format returned depends on the CHAN_ID bit. + // when CHAN_ID = 0: misoData16 = 0 DATA[11:0] x x x + // when CHAN_ID = 1: misoData16 = CH[3:0] DATA[11:0] + // For internal clock modes, the data format always includes the channel address. + // misoData16 = CH[3:0] DATA[11:0] + if (g_MAX11131_device.chan_id_0_1 != 0) { + AINcode_print_value_chanID(cmdLine, nWords); + return; + } + cmdLine.serial().printf("\r\nScanRead_nWords_externalClock nWords="); + cmdLine.serial().printf("%d\r\n", nWords); + for (int index = 0; index < nWords; index++) { + // int16_t misoData16 = MAX11131_ScanRead(); + int16_t value_u12 = ((g_MAX11131_device.RAW_misoData16[index] >> 3) & 0x0FFF); + int channelId = g_MAX11131_device.channelNumber_0_15; + // diagnostic: print raw MISO data + cmdLine.serial().printf(" MAX11131.MISO["); + cmdLine.serial().printf("%d", index); + cmdLine.serial().printf("]=0x"); + cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.RAW_misoData16[index] & 0xFFFF)); + cmdLine.serial().printf(":"); + print_value(cmdLine, value_u12, channelId); + cmdLine.serial().printf("\r\n"); + } +} + +// CODE GENERATOR: MAX11131 needs AINcode_print_value_chanID_mean(CmdLine& cmdLine, int nWords) +//---------------------------------------- +// read data words and calculate mean, stddev +// @pre RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data +// @pre AINcode[NUM_CHANNELS] contains the latest readings in LSBs +void AINcode_print_value_chanID_mean(CmdLine& cmdLine, int nWords) +{ + cmdLine.serial().printf("\r\nScanRead_nWords_chanID_mean nWords="); + cmdLine.serial().printf("%d\r\n", nWords); + double Sx = 0; + double Sxx = 0; + for (int index = 0; index < nWords; index++) { + //~ int16_t misoData16 = MAX11131_ScanRead(); + // For internal clock modes, the data format always includes the channel address. + // misoData16 = CH[3:0] DATA[11:0] + int16_t value_u12 = (g_MAX11131_device.RAW_misoData16[index] & 0x0FFF); + int channelId = ((g_MAX11131_device.RAW_misoData16[index] >> 12) & 0x000F); + // TODO: sign-extend value_s12 from value_u12 + // + cmdLine.serial().printf("n="); + cmdLine.serial().printf("%d", index); + print_value(cmdLine, value_u12, channelId); + // + Sx = Sx + value_u12; + Sxx = Sxx + ((double)value_u12 * value_u12); + cmdLine.serial().printf(" Sx=%f", Sx); + cmdLine.serial().printf(" Sxx=%f", Sxx); + cmdLine.serial().printf("\r\n"); + } + double mean = Sx / nWords; + cmdLine.serial().printf(" mean=%f", mean); + cmdLine.serial().printf("=0x%4.4x", (int)mean); + // calculate standard deviation from N, Sx, Sxx + if (nWords >= 2) + { + double variance = (Sxx - ( Sx * Sx / nWords) ) / (nWords - 1); + cmdLine.serial().printf(" variance=%f", variance); + // stddev = square root of variance + double stddev = sqrt(variance); + cmdLine.serial().printf(" stddev=%f", stddev); + } + cmdLine.serial().printf("\r\n"); +} + +void MAX11131_menu_help(CmdLine & cmdLine) +{ + cmdLine.serial().printf("\r\n ! -- Init"); + cmdLine.serial().printf("\r\n 0 NumWords=? -- ReadAINcode"); + cmdLine.serial().printf("\r\n 1 ch=? pm=? id=? -- ScanManual"); + cmdLine.serial().printf("\r\n 2 ch=? av=? n=? swcnv=? pm=? -- ScanRepeat"); + cmdLine.serial().printf("\r\n 3 ch=? av=? pm=? swcnv=? -- ScanStandardInternalClock"); + cmdLine.serial().printf("\r\n 4 ch=? pm=? id=? -- ScanStandardExternalClock"); + cmdLine.serial().printf("\r\n 5 ch=? av=? pm=? swcnv=? -- ScanUpperInternalClock"); + cmdLine.serial().printf("\r\n 6 ch=? pm=? id=? -- ScanUpperExternalClock"); + cmdLine.serial().printf("\r\n 7 enableMask=? av=? pm=? swcnv=? -- ScanCustomInternalClock"); + cmdLine.serial().printf("\r\n 8 enableMask=? pm=? id=? -- ScanCustomExternalClock"); + cmdLine.serial().printf("\r\n 9 channelsPattern...=? pm=? id=? -- ScanSampleSetExternalClock"); + cmdLine.serial().printf("\r\n IB ch=? -- Reconfigure_DifferentialBipolarFSVref"); + cmdLine.serial().printf("\r\n IR ch=? -- Reconfigure_DifferentialBipolarFS2Vref"); + cmdLine.serial().printf("\r\n IS ch=? -- Reconfigure_SingleEnded"); + cmdLine.serial().printf("\r\n IU ch=? -- Reconfigure_DifferentialUnipolar"); + // + cmdLine.serial().printf("\r\n @ -- print MAX11131 configuration"); + + // + // case 'G'..'Z','g'..'z' are reserved for GPIO commands + // case 'A'..'F','a'..'f' may be available if not claimed by bitstream commands + cmdLine.serial().printf("\r\n C -- CNVST output PulseLow"); // TODO: ExternFunctionGPIOPinCommand testMenuGPIOItemsDict + cmdLine.serial().printf("\r\n E -- EOC input value"); // TODO: ExternFunctionGPIOPinCommand testMenuGPIOItemsDict + + // +} bool MAX11131_menu_onEOLcommandParser(CmdLine & cmdLine) { + + + // parse argument int16_t ADC_CONFIGURATION + int16_t ADC_CONFIGURATION = g_MAX11131_device.ADC_CONFIGURATION; // default to global property value + if (cmdLine.parse_int16_dec("ADC_CONFIGURATION", ADC_CONFIGURATION)) + { + g_MAX11131_device.ADC_CONFIGURATION = ADC_CONFIGURATION; // update global property value + } + + // parse argument int16_t ADC_MODE_CONTROL + int16_t ADC_MODE_CONTROL = g_MAX11131_device.ADC_MODE_CONTROL; // default to global property value + if (cmdLine.parse_int16_dec("ADC_MODE_CONTROL", ADC_MODE_CONTROL)) + { + g_MAX11131_device.ADC_MODE_CONTROL = ADC_MODE_CONTROL; // update global property value + } + + // parse argument int16_t BIPOLAR + int16_t BIPOLAR = g_MAX11131_device.BIPOLAR; // default to global property value + if (cmdLine.parse_int16_dec("BIPOLAR", BIPOLAR)) + { + g_MAX11131_device.BIPOLAR = BIPOLAR; // update global property value + } + + // parse argument int16_t CSCAN0 + int16_t CSCAN0 = g_MAX11131_device.CSCAN0; // default to global property value + if (cmdLine.parse_int16_dec("CSCAN0", CSCAN0)) + { + g_MAX11131_device.CSCAN0 = CSCAN0; // update global property value + } + + // parse argument int16_t CSCAN1 + int16_t CSCAN1 = g_MAX11131_device.CSCAN1; // default to global property value + if (cmdLine.parse_int16_dec("CSCAN1", CSCAN1)) + { + g_MAX11131_device.CSCAN1 = CSCAN1; // update global property value + } + + // parse argument uint16_t NumWords + uint16_t NumWords = g_MAX11131_device.NumWords; // default to global property value + if (cmdLine.parse_uint16_dec("NumWords", NumWords)) + { + g_MAX11131_device.NumWords = NumWords; // update global property value + } + + // parse argument uint8_t PowerManagement_0_2 + uint8_t PowerManagement_0_2 = g_MAX11131_device.PowerManagement_0_2; // default to global property value + if (cmdLine.parse_uint8_dec("PowerManagement_0_2", PowerManagement_0_2)) + { + g_MAX11131_device.PowerManagement_0_2 = PowerManagement_0_2; // update global property value + } + // "pm" is an alias for argument "PowerManagement_0_2" + if (cmdLine.parse_uint8_dec("pm", PowerManagement_0_2)) + { + g_MAX11131_device.PowerManagement_0_2 = PowerManagement_0_2; // update global property value + } + + // parse argument int16_t RANGE + int16_t RANGE = g_MAX11131_device.RANGE; // default to global property value + if (cmdLine.parse_int16_dec("RANGE", RANGE)) + { + g_MAX11131_device.RANGE = RANGE; // update global property value + } + + // parse argument int16_t SAMPLESET + int16_t SAMPLESET = g_MAX11131_device.SAMPLESET; // default to global property value + if (cmdLine.parse_int16_dec("SAMPLESET", SAMPLESET)) + { + g_MAX11131_device.SAMPLESET = SAMPLESET; // update global property value + } + + // parse argument uint8_t SPI_MOSI_Semantic + uint8_t SPI_MOSI_Semantic = g_MAX11131_device.SPI_MOSI_Semantic; // default to global property value + if (cmdLine.parse_uint8_dec("SPI_MOSI_Semantic", SPI_MOSI_Semantic)) + { + g_MAX11131_device.SPI_MOSI_Semantic = SPI_MOSI_Semantic; // update global property value + } + + // parse argument uint8_t ScanMode + uint8_t ScanMode = g_MAX11131_device.ScanMode; // default to global property value + if (cmdLine.parse_uint8_dec("ScanMode", ScanMode)) + { + g_MAX11131_device.ScanMode = ScanMode; // update global property value + } + + // parse argument int16_t UNIPOLAR + int16_t UNIPOLAR = g_MAX11131_device.UNIPOLAR; // default to global property value + if (cmdLine.parse_int16_dec("UNIPOLAR", UNIPOLAR)) + { + g_MAX11131_device.UNIPOLAR = UNIPOLAR; // update global property value + } + + // parse argument double VRef + double VRef = g_MAX11131_device.VRef; // default to global property value + if (cmdLine.parse_double("VRef", VRef)) + { + g_MAX11131_device.VRef = VRef; // update global property value + } + + // parse argument uint8_t average_0_4_8_16_32 + uint8_t average_0_4_8_16_32 = g_MAX11131_device.average_0_4_8_16_32; // default to global property value + if (cmdLine.parse_uint8_dec("average_0_4_8_16_32", average_0_4_8_16_32)) + { + g_MAX11131_device.average_0_4_8_16_32 = average_0_4_8_16_32; // update global property value + } + // "av" is an alias for argument "average_0_4_8_16_32" + if (cmdLine.parse_uint8_dec("av", average_0_4_8_16_32)) + { + g_MAX11131_device.average_0_4_8_16_32 = average_0_4_8_16_32; // update global property value + } + + // parse argument uint8_t chan_id_0_1 + uint8_t chan_id_0_1 = g_MAX11131_device.chan_id_0_1; // default to global property value + if (cmdLine.parse_uint8_dec("chan_id_0_1", chan_id_0_1)) + { + g_MAX11131_device.chan_id_0_1 = chan_id_0_1; // update global property value + } + // "id" is an alias for argument "chan_id_0_1" + if (cmdLine.parse_uint8_dec("id", chan_id_0_1)) + { + g_MAX11131_device.chan_id_0_1 = chan_id_0_1; // update global property value + } + + // parse argument uint8_t channelNumber_0_15 + uint8_t channelNumber_0_15 = g_MAX11131_device.channelNumber_0_15; // default to global property value + if (cmdLine.parse_uint8_dec("channelNumber_0_15", channelNumber_0_15)) + { + g_MAX11131_device.channelNumber_0_15 = channelNumber_0_15; // update global property value + } + // "ch" is an alias for argument "channelNumber_0_15" + if (cmdLine.parse_uint8_dec("ch", channelNumber_0_15)) + { + g_MAX11131_device.channelNumber_0_15 = channelNumber_0_15; // update global property value + } + + // parse argument int16_t enabledChannelsMask + int16_t enabledChannelsMask = g_MAX11131_device.enabledChannelsMask; // default to global property value + if (cmdLine.parse_int16_dec("enabledChannelsMask", enabledChannelsMask)) + { + g_MAX11131_device.enabledChannelsMask = enabledChannelsMask; // update global property value + } + // "enableMask" is an alias for argument "enabledChannelsMask" + if (cmdLine.parse_int16_dec("enableMask", enabledChannelsMask)) + { + g_MAX11131_device.enabledChannelsMask = enabledChannelsMask; // update global property value + } + + // parse argument uint8_t enabledChannelsPatternLength_1_256 + uint8_t enabledChannelsPatternLength_1_256 = g_MAX11131_device.enabledChannelsPatternLength_1_256; // default to global property value + if (cmdLine.parse_uint8_dec("enabledChannelsPatternLength_1_256", enabledChannelsPatternLength_1_256)) + { + g_MAX11131_device.enabledChannelsPatternLength_1_256 = enabledChannelsPatternLength_1_256; // update global property value + } + + // parse argument uint8_t isExternalClock + uint8_t isExternalClock = g_MAX11131_device.isExternalClock; // default to global property value + if (cmdLine.parse_uint8_dec("isExternalClock", isExternalClock)) + { + g_MAX11131_device.isExternalClock = isExternalClock; // update global property value + } + + // parse argument uint8_t nscan_4_8_12_16 + uint8_t nscan_4_8_12_16 = g_MAX11131_device.nscan_4_8_12_16; // default to global property value + if (cmdLine.parse_uint8_dec("nscan_4_8_12_16", nscan_4_8_12_16)) + { + g_MAX11131_device.nscan_4_8_12_16 = nscan_4_8_12_16; // update global property value + } + // "n" is an alias for argument "nscan_4_8_12_16" + if (cmdLine.parse_uint8_dec("n", nscan_4_8_12_16)) + { + g_MAX11131_device.nscan_4_8_12_16 = nscan_4_8_12_16; // update global property value + } + + // parse argument uint8_t swcnv_0_1 + uint8_t swcnv_0_1 = g_MAX11131_device.swcnv_0_1; // default to global property value + if (cmdLine.parse_uint8_dec("swcnv_0_1", swcnv_0_1)) + { + g_MAX11131_device.swcnv_0_1 = swcnv_0_1; // update global property value + } + // "swcnv" is an alias for argument "swcnv_0_1" + if (cmdLine.parse_uint8_dec("swcnv", swcnv_0_1)) + { + g_MAX11131_device.swcnv_0_1 = swcnv_0_1; // update global property value + } + switch (cmdLine[0]) { + case '@': + { + cmdLine.serial().printf("ADC_MODE_CONTROL = "); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.ADC_MODE_CONTROL, g_MAX11131_device.ADC_MODE_CONTROL); + cmdLine.serial().printf("ADC_CONFIGURATION = "); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.ADC_CONFIGURATION, g_MAX11131_device.ADC_CONFIGURATION); + cmdLine.serial().printf("UNIPOLAR = "); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.UNIPOLAR, g_MAX11131_device.UNIPOLAR); + cmdLine.serial().printf("BIPOLAR = "); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.BIPOLAR, g_MAX11131_device.BIPOLAR); + cmdLine.serial().printf("RANGE = "); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.RANGE, g_MAX11131_device.RANGE); + cmdLine.serial().printf("CSCAN0 = "); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.CSCAN0, g_MAX11131_device.CSCAN0); + cmdLine.serial().printf("CSCAN1 = "); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.CSCAN1, g_MAX11131_device.CSCAN1); + cmdLine.serial().printf("SAMPLESET = "); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.SAMPLESET, g_MAX11131_device.SAMPLESET); + cmdLine.serial().printf("enabledChannelsPatternLength_1_256 = "); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.enabledChannelsPatternLength_1_256, g_MAX11131_device.enabledChannelsPatternLength_1_256); + for(int index = 0; (index < g_MAX11131_device.enabledChannelsPatternLength_1_256) && (index < 16); index++) { + cmdLine.serial().printf("enabledChannelsPattern[%d] = ", index); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.enabledChannelsPattern[index], g_MAX11131_device.enabledChannelsPattern[index]); + } + cmdLine.serial().printf("SPI_MOSI_Semantic = "); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.SPI_MOSI_Semantic, g_MAX11131_device.SPI_MOSI_Semantic); + cmdLine.serial().printf("NumWords = "); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.NumWords, g_MAX11131_device.NumWords); + cmdLine.serial().printf("isExternalClock = "); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.isExternalClock, g_MAX11131_device.isExternalClock); + cmdLine.serial().printf("ScanMode = "); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.ScanMode, g_MAX11131_device.ScanMode); + cmdLine.serial().printf("channelNumber_0_15 = "); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.channelNumber_0_15, g_MAX11131_device.channelNumber_0_15); + cmdLine.serial().printf("PowerManagement_0_2 = "); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.PowerManagement_0_2, g_MAX11131_device.PowerManagement_0_2); + cmdLine.serial().printf("chan_id_0_1 = "); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.chan_id_0_1, g_MAX11131_device.chan_id_0_1); + cmdLine.serial().printf("average_0_4_8_16_32 = "); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.average_0_4_8_16_32, g_MAX11131_device.average_0_4_8_16_32); + cmdLine.serial().printf("nscan_4_8_12_16 = "); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.nscan_4_8_12_16, g_MAX11131_device.nscan_4_8_12_16); + cmdLine.serial().printf("swcnv_0_1 = "); + cmdLine.serial().printf("%d = 0x%2.2x\r\n", g_MAX11131_device.swcnv_0_1, g_MAX11131_device.swcnv_0_1); + cmdLine.serial().printf("enabledChannelsMask = "); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.enabledChannelsMask, g_MAX11131_device.enabledChannelsMask); + for(int index = 0; (index < 16) && (index < 16); index++) { + cmdLine.serial().printf("AINcode[%d] = ", index); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.AINcode[index], g_MAX11131_device.AINcode[index]); + } + for(int index = 0; (index < 256) && (index < 16); index++) { + cmdLine.serial().printf("RAW_misoData16[%d] = ", index); + cmdLine.serial().printf("%d = 0x%4.4x\r\n", g_MAX11131_device.RAW_misoData16[index], g_MAX11131_device.RAW_misoData16[index]); + } + cmdLine.serial().printf("VRef = "); + cmdLine.serial().printf("%1.6f\r\n", g_MAX11131_device.VRef); + return true; // command handled by MAX11131 + break; + } + // case 'G'..'Z','g'..'z' are reserved for GPIO commands + // case 'A'..'F','a'..'f' may be available if not claimed by bitstream commands + case 'C': + { + // TODO output PulseLow + g_MAX11131_device.CNVSToutputPulseLow(); + return true; // command handled by MAX11131 + break; + } + case 'E': + { + // TODO capture and print input Value + cmdLine.serial().printf("%d", g_MAX11131_device.EOCinputValue()); + return true; // command handled by MAX11131 + break; + } + // case '0'..'9','A'..'F','a'..'f' letters are reserved for bitstream commands + case '!': + { + // test menu command '!' handler: + // helpString='! -- Init' + // CMD_='None' + // CommandName='Init' + // CommandParamIn='void' + // CommandReturnType='void' + // @Pre=' // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords' + // @Pre=' // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords' + // @Pre=' // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords' + // @Param[in]='' + // @Param[out]='' + // @Post=' // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data' + // @Post=' // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs' + // displayPost='' + // @Return='' + // @Test='@test tinyTester.blink_time_msec = 75 // default 75 resume hardware self test' + // @Test='@test tinyTester.print("1.0: Test Scan_0100_StandardExt -- verify SPI (VDD, GND, SCLK, MOSI, MISO, CS)")' + // @Test='@test SPIoutputCS(0)' + // @Test='@test SPIwrite16bits(0x8000)' + // @Test='@test SPIoutputCS(1)' + cmdLine.serial().printf("Init"); + // call function Init + g_MAX11131_device.Init(); + return true; // command handled by MAX11131 + } // end case '!' + break; case '0': { - // recommended for hex command codes 00..0F - // VERIFY: console menu command 0 int16_t MAX11131_ScanRead(void); - // TODO: cmdLine.serial().printf("\r\n 0 n=? -- MAX11131_ScanRead"); - if (cmdLine.parse_uint16_dec("n", g_MAX11131_device.NumWords)) - { - } - cmdLine.serial().printf("ScanRead NumWords=%d", g_MAX11131_device.NumWords); - if (g_MAX11131_device.isExternalClock) - { - cmdLine.serial().printf(" External Clock"); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); - } - else - { - cmdLine.serial().printf(" Internal Clock"); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords); - } - return true; // command was handled by MAX11131 - } + // test menu command '0' handler: + // helpString='0 NumWords=? -- ReadAINcode' + // CMD_='SCAN_0000_NOP' + // CommandName='ReadAINcode' + // CommandParamIn='void' + // CommandReturnType='void' + // @Pre='@pre one of the Scan functions was called, setting g_MAX11131_device.NumWords' + // @Param[in]='@param[in] g_MAX11131_device.NumWords: number of words to be read from the FIFO' + // @Param[out]='' + // @Post='@post g_MAX11131_device.RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data' + // @Post='@post g_MAX11131_device.AINcode[NUM_CHANNELS] contains the latest readings in LSBs' + // @Return='' + // exception MAX11131 Menu item '0' ReadAINcode logic flow -- omit ReadAINcode call here, will be handled in postprocessing + cmdLine.serial().printf("ReadAINcode"); + // + // CODE GENERATOR: MAX11131 ReadAINCode and print data + if (g_MAX11131_device.isExternalClock) + { + cmdLine.serial().printf(" External Clock"); + // + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); + } + else + { + cmdLine.serial().printf(" Internal Clock"); + // + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords); + } + return true; // command handled by MAX11131 + } // end case '0' break; case '1': { - // recommended for hex command codes 10..1F - // VERIFY: console menu command 1 MAX11131_ScanManual(int channelNumber_0_15, int PowerManagement_0_2, int chan_id_0_1); - // TODO: cmdLine.serial().printf("\r\n 1 ch=? pm=? id=? -- MAX11131_ScanManual"); - if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15)) - { - } - if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2)) - { - } - if (cmdLine.parse_byte_dec("id", g_MAX11131_device.chan_id_0_1)) - { - } - cmdLine.serial().printf("ScanManual ch=%d pm=%d id=%d\r\n", - g_MAX11131_device.channelNumber_0_15, - g_MAX11131_device.PowerManagement_0_2, - g_MAX11131_device.chan_id_0_1); - // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2 - // VERIFY: replace argument with driver global; g_MAX11131_device.chan_id_0_1 replaces chan_id_0_1 - // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15 - g_MAX11131_device.NumWords = g_MAX11131_device.ScanManual(); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); - return true; // command was handled by MAX11131 - } + // test menu command '1' handler: + // helpString='1 ch=? pm=? id=? -- ScanManual' + // CMD_='SCAN_0001_Manual' + // CommandName='ScanManual' + // CommandParamIn='void' + // CommandReturnType='int' + // @Pre='' + // @Param[in]='@param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number' + // @Param[in]='@param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby' + // @Param[in]='@param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID' + // @Param[out]='' + // @Post='@post NumWords = number of words to be read from the FIFO' + // @Return='@return number of ScanRead() words needed to retrieve the data.' + cmdLine.serial().printf("ScanManual"); + // call function ScanManual + int result = g_MAX11131_device.ScanManual(); + cmdLine.serial().printf(" =%d\r\n", result); + // + // CODE GENERATOR: MAX11131 post-ScanManual ReadAINCode and print data + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); + return true; // command handled by MAX11131 + } // end case '1' break; case '2': { - // recommended for hex command codes 20..2F - // VERIFY: console menu command 2 int MAX11131_ScanRepeat(uint8_t channelNumber_0_15, uint8_t average_0_4_8_16_32, uint8_t nscan_4_8_12_16, uint8_t PowerManagement_0_2, uint8_t swcnv_0_1); - // TODO: cmdLine.serial().printf("\r\n 2 ch=? av=? n=? pm=? swcnv=? -- MAX11131_ScanRepeat"); - // VERIFY: update value of g_MAX11131_device.channelNumber_0_15 from strCommandArgs - // VERIFY: update value of g_MAX11131_device.average_0_4_8_16_32 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.nscan_4_8_12_16 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.swcnv_0_1 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs - // VERIFY: parse strCommandArgs for additional arguments including key=value pairs - if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15)) - { - } - if (cmdLine.parse_byte_dec("av", g_MAX11131_device.average_0_4_8_16_32)) - { - } - if (cmdLine.parse_byte_dec("n", g_MAX11131_device.nscan_4_8_12_16)) - { - } - if (cmdLine.parse_byte_dec("swcnv", g_MAX11131_device.swcnv_0_1)) - { - } - if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2)) - { - } - cmdLine.serial().printf( - "ScanRepeat ch=%d average_0_4_8_16_32:%d nscan_4_8_12_16:%d swcnv=%d pm=%d\r\n", - g_MAX11131_device.channelNumber_0_15, - g_MAX11131_device.average_0_4_8_16_32, - g_MAX11131_device.nscan_4_8_12_16, - g_MAX11131_device.swcnv_0_1, - g_MAX11131_device.PowerManagement_0_2); - // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2 - // VERIFY: replace argument with driver global; g_MAX11131_device.swcnv_0_1 replaces swcnv_0_1 - // VERIFY: replace argument with driver global; g_MAX11131_device.nscan_4_8_12_16 replaces nscan_4_8_12_16 - // VERIFY: replace argument with driver global; g_MAX11131_device.average_0_4_8_16_32 replaces average_0_4_8_16_32 - // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15 - g_MAX11131_device.NumWords = g_MAX11131_device.ScanRepeat(); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_chanID_mean(cmdLine, g_MAX11131_device.NumWords); - return true; // command was handled by MAX11131 - } + // test menu command '2' handler: + // helpString='2 ch=? av=? n=? swcnv=? pm=? -- ScanRepeat' + // CMD_='SCAN_0010_Repeat' + // CommandName='ScanRepeat' + // CommandParamIn='void' + // CommandReturnType='int' + // @Pre='' + // @Param[in]='@param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number' + // @Param[in]='@param[in] g_MAX11131_device.average_0_4_8_16_32: Number of samples averaged per ScanRead() word.' + // @Param[in]='@param[in] g_MAX11131_device.nscan_4_8_12_16: Number of ScanRead() words to report.' + // @Param[in]='@param[in] g_MAX11131_device.swcnv_0_1: ADC_MODE_CONTROL.SWCNV' + // @Param[in]='@param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby' + // @Param[out]='' + // @Post='@post NumWords = number of words to be read from the FIFO' + // @Return='@return number of ScanRead() words needed to retrieve the data.' + cmdLine.serial().printf("ScanRepeat"); + // call function ScanRepeat + int result = g_MAX11131_device.ScanRepeat(); + cmdLine.serial().printf(" =%d\r\n", result); + // + // CODE GENERATOR: MAX11131 post-ScanRepeat ReadAINCode and print data + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_chanID_mean(cmdLine, g_MAX11131_device.NumWords); + return true; // command handled by MAX11131 + } // end case '2' break; case '3': { - // recommended for hex command codes 30..3F - // VERIFY: console menu command 3 MAX11131_ScanStandardInternalClock(int channelNumber_0_15, int average_0_4_8_16_32, int PowerManagement_0_2, int swcnv_0_1); - // TODO: cmdLine.serial().printf("\r\n 3 ch=? av=? pm=? swcnv=? -- MAX11131_ScanStandardIntClock"); - // VERIFY: update value of g_MAX11131_device.channelNumber_0_15 from strCommandArgs - // VERIFY: update value of g_MAX11131_device.average_0_4_8_16_32 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.swcnv_0_1 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs - if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15)) - { - } - if (cmdLine.parse_byte_dec("av", g_MAX11131_device.average_0_4_8_16_32)) - { - } - if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2)) - { - } - if (cmdLine.parse_byte_dec("swcnv", g_MAX11131_device.swcnv_0_1)) - { - } - cmdLine.serial().printf("ScanStandardInternalClock ch=%d average_0_4_8_16_32:%d swcnv=%d pm=%d\r\n", - g_MAX11131_device.channelNumber_0_15, - g_MAX11131_device.average_0_4_8_16_32, - g_MAX11131_device.swcnv_0_1, - g_MAX11131_device.PowerManagement_0_2 - ); - // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2 - // VERIFY: replace argument with driver global; g_MAX11131_device.swcnv_0_1 replaces swcnv_0_1 - // VERIFY: replace argument with driver global; g_MAX11131_device.average_0_4_8_16_32 replaces average_0_4_8_16_32 - // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15 - g_MAX11131_device.NumWords = g_MAX11131_device.ScanStandardInternalClock(); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords); - return true; // command was handled by MAX11131 - } + // test menu command '3' handler: + // helpString='3 ch=? av=? pm=? swcnv=? -- ScanStandardInternalClock' + // CMD_='SCAN_0011_StandardInternalClock' + // CommandName='ScanStandardInternalClock' + // CommandParamIn='void' + // CommandReturnType='int' + // @Pre='' + // @Param[in]='@param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number' + // @Param[in]='@param[in] g_MAX11131_device.average_0_4_8_16_32: Number of samples averaged per ScanRead() word.' + // @Param[in]='@param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby' + // @Param[in]='@param[in] g_MAX11131_device.swcnv_0_1: ADC_MODE_CONTROL.SWCNV' + // @Param[out]='' + // @Post='@post NumWords = number of words to be read from the FIFO' + // @Return='@return number of ScanRead() words needed to retrieve the data.' + cmdLine.serial().printf("ScanStandardInternalClock"); + // call function ScanStandardInternalClock + int result = g_MAX11131_device.ScanStandardInternalClock(); + cmdLine.serial().printf(" =%d\r\n", result); + // + // CODE GENERATOR: MAX11131 post-ScanStandardInternalClock ReadAINCode and print data + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords); + return true; // command handled by MAX11131 + } // end case '3' break; case '4': { - // recommended for hex command codes 40..4F - // VERIFY: console menu command 4 MAX11131_ScanStandardExternalClock(int channelNumber_0_15, int PowerManagement_0_2, int chan_id_0_1); - // TODO: cmdLine.serial().printf("\r\n 4 ch=? pm=? id=? -- MAX11131_ScanStandardExtClock"); - // VERIFY: update value of g_MAX11131_device.channelNumber_0_15 from strCommandArgs - // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.chan_id_0_1 option from strCommandArgs - if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15)) - { - } - if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2)) - { - } - if (cmdLine.parse_byte_dec("id", g_MAX11131_device.chan_id_0_1)) - { - } - cmdLine.serial().printf("ScanStandardExternalClock ch=%d pm=%d id=%d\r\n", - g_MAX11131_device.channelNumber_0_15, - g_MAX11131_device.PowerManagement_0_2, - g_MAX11131_device.chan_id_0_1 - ); - // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2 - // VERIFY: replace argument with driver global; g_MAX11131_device.chan_id_0_1 replaces chan_id_0_1 - // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15 - g_MAX11131_device.NumWords = g_MAX11131_device.ScanStandardExternalClock(); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); - return true; // command was handled by MAX11131 - } + // test menu command '4' handler: + // helpString='4 ch=? pm=? id=? -- ScanStandardExternalClock' + // CMD_='SCAN_0100_StandardExternalClock' + // CommandName='ScanStandardExternalClock' + // CommandParamIn='void' + // CommandReturnType='int' + // @Pre='' + // @Param[in]='@param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number' + // @Param[in]='@param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby' + // @Param[in]='@param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID' + // @Param[out]='' + // @Post='@post NumWords = number of words to be read from the FIFO' + // @Return='@return number of ScanRead() words needed to retrieve the data.' + cmdLine.serial().printf("ScanStandardExternalClock"); + // call function ScanStandardExternalClock + int result = g_MAX11131_device.ScanStandardExternalClock(); + cmdLine.serial().printf(" =%d\r\n", result); + // + // CODE GENERATOR: MAX11131 post-ScanStandardExternalClock ReadAINCode and print data + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); + return true; // command handled by MAX11131 + } // end case '4' break; case '5': { - // recommended for hex command codes 50..5F - // VERIFY: console menu command 5 MAX11131_ScanUpperInternalClock(int channelNumber_0_15, int average_0_4_8_16_32, int PowerManagement_0_2, int swcnv_0_1); - // TODO: cmdLine.serial().printf("\r\n 5 ch=? av=? pm=? swcnv=? -- MAX11131_ScanUpperIntClock"); - // VERIFY: update value of g_MAX11131_device.channelNumber_0_15 from strCommandArgs - // VERIFY: update value of g_MAX11131_device.average_0_4_8_16_32 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.swcnv_0_1 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs - if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15)) - { - } - if (cmdLine.parse_byte_dec("av", g_MAX11131_device.average_0_4_8_16_32)) - { - } - if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2)) - { - } - if (cmdLine.parse_byte_dec("swcnv", g_MAX11131_device.swcnv_0_1)) - { - } - cmdLine.serial().printf("ScanUpperInternalClock ch=%d average_0_4_8_16_32:%d swcnv=%d pm=%d\r\n", - g_MAX11131_device.channelNumber_0_15, - g_MAX11131_device.average_0_4_8_16_32, - g_MAX11131_device.swcnv_0_1, - g_MAX11131_device.PowerManagement_0_2 - ); - // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2 - // VERIFY: replace argument with driver global; g_MAX11131_device.swcnv_0_1 replaces swcnv_0_1 - // VERIFY: replace argument with driver global; g_MAX11131_device.average_0_4_8_16_32 replaces average_0_4_8_16_32 - // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15 - g_MAX11131_device.NumWords = g_MAX11131_device.ScanUpperInternalClock(); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords); - return true; // command was handled by MAX11131 - } + // test menu command '5' handler: + // helpString='5 ch=? av=? pm=? swcnv=? -- ScanUpperInternalClock' + // CMD_='SCAN_0101_UpperInternalClock' + // CommandName='ScanUpperInternalClock' + // CommandParamIn='void' + // CommandReturnType='int' + // @Pre='' + // @Param[in]='@param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number' + // @Param[in]='@param[in] g_MAX11131_device.average_0_4_8_16_32: Number of samples averaged per ScanRead() word.' + // @Param[in]='@param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby' + // @Param[in]='@param[in] g_MAX11131_device.swcnv_0_1: ADC_MODE_CONTROL.SWCNV' + // @Param[out]='' + // @Post='@post NumWords = number of words to be read from the FIFO' + // @Return='@return number of ScanRead() words needed to retrieve the data.' + cmdLine.serial().printf("ScanUpperInternalClock"); + // call function ScanUpperInternalClock + int result = g_MAX11131_device.ScanUpperInternalClock(); + cmdLine.serial().printf(" =%d\r\n", result); + // + // CODE GENERATOR: MAX11131 post-ScanUpperInternalClock ReadAINCode and print data + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords); + return true; // command handled by MAX11131 + } // end case '5' break; case '6': { - // recommended for hex command codes 60..6F - // VERIFY: console menu command 6 MAX11131_ScanUpperExternalClock(int channelNumber_0_15, int PowerManagement_0_2, int chan_id_0_1); - // TODO: cmdLine.serial().printf("\r\n 6 ch=? pm=? id=? -- MAX11131_ScanUpperExtClock"); - // VERIFY: update value of g_MAX11131_device.channelNumber_0_15 from strCommandArgs - // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.chan_id_0_1 option from strCommandArgs - if (cmdLine.parse_byte_dec("ch", g_MAX11131_device.channelNumber_0_15)) - { - } - if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2)) - { - } - if (cmdLine.parse_byte_dec("id", g_MAX11131_device.chan_id_0_1)) - { - } - cmdLine.serial().printf("ScanUpperExternalClock ch=%d pm=%d id=%d\r\n", - g_MAX11131_device.channelNumber_0_15, - g_MAX11131_device.PowerManagement_0_2, - g_MAX11131_device.chan_id_0_1 - ); - // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2 - // VERIFY: replace argument with driver global; g_MAX11131_device.chan_id_0_1 replaces chan_id_0_1 - // VERIFY: replace argument with driver global; g_MAX11131_device.channelNumber_0_15 replaces channelNumber_0_15 - g_MAX11131_device.NumWords = g_MAX11131_device.ScanUpperExternalClock(); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); - return true; // command was handled by MAX11131 - } + // test menu command '6' handler: + // helpString='6 ch=? pm=? id=? -- ScanUpperExternalClock' + // CMD_='SCAN_0110_UpperExternalClock' + // CommandName='ScanUpperExternalClock' + // CommandParamIn='void' + // CommandReturnType='int' + // @Pre='' + // @Param[in]='@param[in] g_MAX11131_device.channelNumber_0_15: AIN Channel Number' + // @Param[in]='@param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby' + // @Param[in]='@param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID' + // @Param[out]='' + // @Post='@post NumWords = number of words to be read from the FIFO' + // @Return='@return number of ScanRead() words needed to retrieve the data.' + cmdLine.serial().printf("ScanUpperExternalClock"); + // call function ScanUpperExternalClock + int result = g_MAX11131_device.ScanUpperExternalClock(); + cmdLine.serial().printf(" =%d\r\n", result); + // + // CODE GENERATOR: MAX11131 post-ScanUpperExternalClock ReadAINCode and print data + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); + return true; // command handled by MAX11131 + } // end case '6' break; case '7': { - // recommended for hex command codes 70..7F - // VERIFY: console menu command 7 MAX11131_ScanCustomInternalClock(int16_t enabledChannelsMask, int average_0_4_8_16_32, int PowerManagement_0_2, int swcnv_0_1); - // TODO: cmdLine.serial().printf("\r\n 7 enableMask=0xffff av=? pm=? swcnv=? -- MAX11131_ScanCustomIntClock"); - // VERIFY: update value of g_MAX11131_device.average_0_4_8_16_32 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.swcnv_0_1 option from strCommandArgs - // VERIFY: update value of g_MAX11131_device.PowerManagement_0_2 option from strCommandArgs - if (cmdLine.parse_int16_hex("enableMask", g_MAX11131_device.enabledChannelsMask)) - { - // TODO1: get g_MAX11131_device.enabledChannelsMask from strCommandArgs - } - if (cmdLine.parse_byte_dec("av", g_MAX11131_device.average_0_4_8_16_32)) - { - } - if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2)) - { - } - if (cmdLine.parse_byte_dec("swcnv", g_MAX11131_device.swcnv_0_1)) - { - } - cmdLine.serial().printf( - "ScanCustomInternalClock enabledChannelsMask:0x%4.4x average_0_4_8_16_32:%d pm=%d swcnv=%d\r\n", - (g_MAX11131_device.enabledChannelsMask & 0xFFFF), - g_MAX11131_device.average_0_4_8_16_32, - g_MAX11131_device.PowerManagement_0_2, - g_MAX11131_device.swcnv_0_1 - ); - // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2 - // VERIFY: replace argument with driver global; g_MAX11131_device.swcnv_0_1 replaces swcnv_0_1 - // VERIFY: replace argument with driver global; g_MAX11131_device.average_0_4_8_16_32 replaces average_0_4_8_16_32 - // VERIFY: replace argument with driver global; g_MAX11131_device.enabledChannelsMask replaces enabledChannelsMask - g_MAX11131_device.NumWords = g_MAX11131_device.ScanCustomInternalClock(); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords); - return true; // command was handled by MAX11131 - } + // test menu command '7' handler: + // helpString='7 enableMask=? av=? pm=? swcnv=? -- ScanCustomInternalClock' + // CMD_='SCAN_0111_CustomInternalClock' + // CommandName='ScanCustomInternalClock' + // CommandParamIn='void' + // CommandReturnType='int' + // @Pre='' + // @Param[in]='@param[in] g_MAX11131_device.enabledChannelsMask: Bitmap of AIN Channels to scan.' + // @Param[in]='@param[in] g_MAX11131_device.average_0_4_8_16_32: Number of samples averaged per ScanRead() word.' + // @Param[in]='@param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby' + // @Param[in]='@param[in] g_MAX11131_device.swcnv_0_1: ADC_MODE_CONTROL.SWCNV' + // @Param[out]='' + // @Post='@post NumWords = number of words to be read from the FIFO' + // @Return='@return number of ScanRead() words needed to retrieve the data.' + cmdLine.serial().printf("ScanCustomInternalClock"); + // call function ScanCustomInternalClock + int result = g_MAX11131_device.ScanCustomInternalClock(); + cmdLine.serial().printf(" =%d\r\n", result); + // + // CODE GENERATOR: MAX11131 post-ScanCustomInternalClock ReadAINCode and print data + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_chanID(cmdLine, g_MAX11131_device.NumWords); + return true; // command handled by MAX11131 + } // end case '7' break; case '8': { - // recommended for hex command codes 80..8F - // VERIFY: console menu command 8 MAX11131_ScanCustomExternalClock(int16_t enabledChannelsMask, int PowerManagement_0_2, int chan_id_0_1); - // TODO: cmdLine.serial().printf("\r\n 8 enableMask=0xffff pm=0 id=1 -- MAX11131_ScanCustomExtClock"); - if (cmdLine.parse_int16_hex("enableMask", g_MAX11131_device.enabledChannelsMask)) - { - // TODO1: get g_MAX11131_device.enabledChannelsMask from strCommandArgs - } - if (cmdLine.parse_byte_dec("pm", g_MAX11131_device.PowerManagement_0_2)) - { - } - if (cmdLine.parse_byte_dec("id", g_MAX11131_device.chan_id_0_1)) - { - } - cmdLine.serial().printf("ScanCustomExternalClock enabledChannelsMask:0x%4.4x pm=%d id=%d\r\n", - (g_MAX11131_device.enabledChannelsMask & 0xFFFF), - g_MAX11131_device.PowerManagement_0_2, - g_MAX11131_device.chan_id_0_1 - ); - // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2 - // VERIFY: replace argument with driver global; g_MAX11131_device.chan_id_0_1 replaces chan_id_0_1 - // VERIFY: replace argument with driver global; g_MAX11131_device.enabledChannelsMask replaces enabledChannelsMask - g_MAX11131_device.NumWords = g_MAX11131_device.ScanCustomExternalClock(); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); - return true; // command was handled by MAX11131 - } + // test menu command '8' handler: + // helpString='8 enableMask=? pm=? id=? -- ScanCustomExternalClock' + // CMD_='SCAN_1000_CustomExternalClock' + // CommandName='ScanCustomExternalClock' + // CommandParamIn='void' + // CommandReturnType='int' + // @Pre='' + // @Param[in]='@param[in] g_MAX11131_device.enabledChannelsMask: Bitmap of AIN Channels to scan.' + // @Param[in]='@param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby' + // @Param[in]='@param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID' + // @Param[out]='' + // @Post='@post NumWords = number of words to be read from the FIFO' + // @Return='@return number of ScanRead() words needed to retrieve the data.' + cmdLine.serial().printf("ScanCustomExternalClock"); + // call function ScanCustomExternalClock + int result = g_MAX11131_device.ScanCustomExternalClock(); + cmdLine.serial().printf(" =%d\r\n", result); + // + // CODE GENERATOR: MAX11131 post-ScanCustomExternalClock ReadAINCode and print data + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); + return true; // command handled by MAX11131 + } // end case '8' break; case '9': { - // recommended for hex command codes 90..9F - // VERIFY: console menu command 9 MAX11131_ScanSampleSetExternalClock(uint8_t enabledChannelsPatternLength_1_256, int16_t enabledChannelsPattern[], int PowerManagement_0_2, int chan_id_0_1); - // TODO: cmdLine.serial().printf("\r\n 9 channelsPattern... pm=? id=? | len=? -- MAX11131_ScanSampleSetExtClock"); - // - // get MAX11131 Sampleset channel selection pattern parse_strCommandArgs(strCommandArgs); - // cmdLine.parse_byteCount_byteList_dec(byteCount, mosiData, MAX_SPI_BYTE_COUNT) - // into g_MAX11131_device.enabledChannelsPatternLength_1_256 - // into g_MAX11131_device.enabledChannelsPattern[0..255] - size_t numValues; - char valueList[256]; - if (cmdLine.parse_byteCount_byteList_dec( numValues, valueList, 256)) - { - // first value is the "9" command itself - g_MAX11131_device.enabledChannelsPatternLength_1_256 = numValues - 1; - // copy valueList[1, ...] into g_MAX11131_device.enabledChannelsPattern[0, ...] - for (size_t index = 0; index < (numValues - 1); index++) - { - g_MAX11131_device.enabledChannelsPattern[index] = valueList[1 + index]; - } - } - // - cmdLine.serial().printf("ScanSampleSetExternalClock enabledChannelsPattern:{ "); - int index; - for (index = 0; index < g_MAX11131_device.enabledChannelsPatternLength_1_256; index++) - { - //~ Serial.print( ((g_enabledChannelsPattern[index] >> 4) & 0x000F), DEC); - //~ Serial.print(" "); - cmdLine.serial().printf("AIN%d ", ((g_MAX11131_device.enabledChannelsPattern[index]) & 0x000F)); - } - cmdLine.serial().printf("}"); - cmdLine.serial().printf(" pm=%d id=%d\r\n", g_MAX11131_device.PowerManagement_0_2, - g_MAX11131_device.chan_id_0_1); - // VERIFY: replace argument with driver global; g_MAX11131_device.PowerManagement_0_2 replaces PowerManagement_0_2 - // VERIFY: replace argument with driver global; g_MAX11131_device.chan_id_0_1 replaces chan_id_0_1 - g_MAX11131_device.NumWords = g_MAX11131_device.ScanSampleSetExternalClock(); - // - // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] - // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords - g_MAX11131_device.ReadAINcode(); - // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data - // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs - // - AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); - return true; // command was handled by MAX11131 - } + // test menu command '9' handler: + // helpString='9 channelsPattern...=? pm=? id=? -- ScanSampleSetExternalClock' + // CMD_='SCAN_1001_SampleSetExternalClock' + // CommandName='ScanSampleSetExternalClock' + // CommandParamIn='void' + // CommandReturnType='int' + // @Pre='@pre g_MAX11131_device.enabledChannelsPatternLength_1_256: number of channel selections' + // @Pre='@pre g_MAX11131_device.enabledChannelsPattern: array containing channel selection pattern' + // @Param[in]='@param[in] g_MAX11131_device.enabledChannelsPattern: array of channel select, one channel per byte' + // @Param[in]='@param[in] g_MAX11131_device.PowerManagement_0_2: 0=Normal, 1=AutoShutdown, 2=AutoStandby' + // @Param[in]='@param[in] g_MAX11131_device.chan_id_0_1: ADC_MODE_CONTROL.CHAN_ID' + // @Param[out]='' + // @Post='@post NumWords = number of words to be read from the FIFO' + // @Return='@return number of ScanRead() words needed to retrieve the data.' + // exception MAX11131 Menu item '9' ScanSampleSetExternalClock + // parse channelsPattern using parse_byteCount_byteList_dec(size_t& byteCount, char *mosiDataBuf, size_t mosiDataBufSize) + size_t byteCount = g_MAX11131_device.enabledChannelsPatternLength_1_256; + char *mosiDataBuf = (char *)g_MAX11131_device.enabledChannelsPattern; // cast from uint8_t* + size_t mosiDataBufSize = sizeof(g_MAX11131_device.enabledChannelsPattern); + cmdLine.parse_byteCount_byteList_dec(byteCount, mosiDataBuf, mosiDataBufSize); + g_MAX11131_device.enabledChannelsPatternLength_1_256 = byteCount; + cmdLine.serial().printf("ScanSampleSetExternalClock"); + // call function ScanSampleSetExternalClock + int result = g_MAX11131_device.ScanSampleSetExternalClock(); + cmdLine.serial().printf(" =%d\r\n", result); + // + // CODE GENERATOR: MAX11131 post-ScanSampleSetExternalClock ReadAINCode and print data + // Read raw ADC codes from device into AINcode[] and RAW_misoData16[] + // @pre one of the MAX11311_Scan functions was called, setting g_MAX11131_device.NumWords + g_MAX11131_device.ReadAINcode(); + // @post RAW_misoData16[index] contains the raw SPI Master-In,Slave-Out data + // @post AINcode[NUM_CHANNELS] contains the latest readings in LSBs + // + AINcode_print_value_externalClock(cmdLine, g_MAX11131_device.NumWords); + return true; // command handled by MAX11131 + } // end case '9' break; - case 'a': case 'A': + case 'I': // (multiple characters) (testMenuFirstCharHandler="I"): { - // recommended for hex command codes A0..AF - switch (cmdLine[1]) - { - case 't': case 'T': -#if IGNORE_AT_COMMANDS -# if HAS_DAPLINK_SERIAL - cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str()); -# endif // HAS_DAPLINK_SERIAL - // AT command: skip the prompt to avoid confusing modem detector - return false; // command not handled -#endif // IGNORE_AT_COMMANDS - } - } - break; - case 'b': case 'B': - { - // recommended for hex command codes B0..BF - } - break; - case 'c': case 'C': - { - // recommended for hex command codes C0..CF - } - break; - case 'd': case 'D': - { - // recommended for hex command codes D0..DF - } - break; - case 'e': case 'E': - { - // recommended for hex command codes E0..EF - } - break; - case 'f': case 'F': - { - // recommended for hex command codes F0..FF - } - break; - case 'x': case 'X': - { - } - break; - case 'y': case 'Y': - { - } - break; - case 'i': case 'I': - { - // TODO: cmdLine.serial().printf("\r\n ISc) IUc) IBc) IRc) reconfigure channel single-ended/unipolar/bipolar/range"); - char strChannelId[3]; - strChannelId[0] = cmdLine[2]; - strChannelId[1] = cmdLine[3]; - strChannelId[2] = '\0'; - int channelId_0_15 = strtoul(strChannelId, NULL, 10); // strtol(str, NULL, 10): get decimal value switch (cmdLine[1]) { - case 's': case 'S': - g_MAX11131_device.Reconfigure_SingleEnded(channelId_0_15); - break; - case 'u': case 'U': - g_MAX11131_device.Reconfigure_DifferentialUnipolar(channelId_0_15); - break; - case 'b': case 'B': - g_MAX11131_device.Reconfigure_DifferentialBipolarFSVref(channelId_0_15); - break; - case 'r': case 'R': - g_MAX11131_device.Reconfigure_DifferentialBipolarFS2Vref(channelId_0_15); - break; - } - // char cmd1 = strCommandArgs[0]; - // strCommandArgs.remove(0, 1); // unsigned int index, unsigned int count - // // get argument int channelId_0_15 - // // parse_strCommandArgs(strCommandArgs); - // int channelId_0_15 = strtoul(strCommandArgs.c_str(), NULL, 10); // strtol(str, NULL, 10): get decimal value - // if (cmd1 == 'S') { - // MAX11131_Reconfigure_SingleEnded(channelId_0_15); - // } - // else if (cmd1 == 'U') { - // MAX11131_Reconfigure_DifferentialUnipolar(channelId_0_15); - // } - // else if (cmd1 == 'B') { - // MAX11131_Reconfigure_DifferentialBipolarFSVref(channelId_0_15); - // } - // else if (cmd1 == 'R') { - // MAX11131_Reconfigure_DifferentialBipolarFS2Vref(channelId_0_15); - // } - return true; // command was handled by MAX11131 - } - break; - case '@': - { - // TODO: cmdLine.serial().printf("\r\n @ -- print MAX11131 configuration"); - // print shadow register configuration - // - cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.ADC_MODE_CONTROL & 0xFFFF)); - MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.ADC_MODE_CONTROL); - cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.ADC_CONFIGURATION & 0xFFFF)); - MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.ADC_CONFIGURATION); - cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.UNIPOLAR & 0xFFFF)); - MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.UNIPOLAR); - cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.BIPOLAR & 0xFFFF)); - MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.BIPOLAR); - cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.RANGE & 0xFFFF)); - MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.RANGE); - cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.CSCAN0 & 0xFFFF)); - MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.CSCAN0); - cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.CSCAN1 & 0xFFFF)); - MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.CSCAN1); - cmdLine.serial().printf("0x%4.4x", (g_MAX11131_device.SAMPLESET & 0xFFFF)); - MAX11131_print_register_verbose(cmdLine, g_MAX11131_device.SAMPLESET); - // - // VERIFY: print shadow SAMPLESET pattern entry - int entryIndex; - for (entryIndex = 0; entryIndex < g_MAX11131_device.enabledChannelsPatternLength_1_256; - entryIndex += 4) - { - uint16_t pack4channels = 0; - pack4channels |= (((g_MAX11131_device.enabledChannelsPattern[entryIndex + 0]) & 0x0F) << 12); - if ((entryIndex + 1) < g_MAX11131_device.enabledChannelsPatternLength_1_256) { - pack4channels |= (((g_MAX11131_device.enabledChannelsPattern[entryIndex + 1]) & 0x0F) << 8); - } - if ((entryIndex + 2) < g_MAX11131_device.enabledChannelsPatternLength_1_256) { - pack4channels |= (((g_MAX11131_device.enabledChannelsPattern[entryIndex + 2]) & 0x0F) << 4); - } - if ((entryIndex + 3) < g_MAX11131_device.enabledChannelsPatternLength_1_256) { - pack4channels |= ((g_MAX11131_device.enabledChannelsPattern[entryIndex + 3]) & 0x0F); - } - //~ SPIwrite16bits(pack4channels); - cmdLine.serial().printf(" 0x%4.4x", (pack4channels & 0xFFFF)); - // decode SAMPLESET channel select pattern - cmdLine.serial().printf(" SampleSet Entry: AIN%d AIN%d AIN%d AIN%d\r\n", - ((pack4channels >> 12) & 0x000F), - ((pack4channels >> 8) & 0x000F), - ((pack4channels >> 4) & 0x000F), - ((pack4channels ) & 0x000F) - ); - } - //cmdLine.serial().printf(" SAMPLESET enabledChannelsPattern:{ "); - //int index; - //for (index = 0; index < g_MAX11131_device.enabledChannelsPatternLength_1_256; index++) - //{ - // //~ cmdLine.serial().printf( ((g_enabledChannelsPattern[index] >> 4) & 0x000F), DEC); - // //~ cmdLine.serial().printf(" "); - // cmdLine.serial().printf("AIN"); - // cmdLine.serial().printf( ((g_MAX11131_device.enabledChannelsPattern[index]) & 0x000F), DEC); - // cmdLine.serial().printf(" "); - //} - //cmdLine.serial().printf("}"); - // - // Menu @) print MAX11131 configuration AND g_MAX11131_device globals - // - cmdLine.serial().printf("SPI_MOSI_Semantic=%d\r\n", (g_MAX11131_device.SPI_MOSI_Semantic & 0xFFFF)); - cmdLine.serial().printf("NumWords=%d\r\n", (g_MAX11131_device.NumWords & 0xFFFF)); - cmdLine.serial().printf("isExternalClock=%d\r\n", (g_MAX11131_device.isExternalClock & 0xFFFF)); - cmdLine.serial().printf("ScanMode=%d\r\n", (g_MAX11131_device.ScanMode & 0xFFFF)); - cmdLine.serial().printf("channelNumber_0_15=%d\r\n", - (g_MAX11131_device.channelNumber_0_15 & 0xFFFF)); - cmdLine.serial().printf("PowerManagement_0_2=%d\r\n", - (g_MAX11131_device.PowerManagement_0_2 & 0xFFFF)); - cmdLine.serial().printf("chan_id_0_1=%d\r\n", (g_MAX11131_device.chan_id_0_1 & 0xFFFF)); - cmdLine.serial().printf("average_0_4_8_16_32=%d\r\n", - (g_MAX11131_device.average_0_4_8_16_32 & 0xFFFF)); - cmdLine.serial().printf("nscan_4_8_12_16=%d\r\n", (g_MAX11131_device.nscan_4_8_12_16 & 0xFFFF)); - cmdLine.serial().printf("swcnv_0_1=%d\r\n", (g_MAX11131_device.swcnv_0_1 & 0xFFFF)); - cmdLine.serial().printf("enabledChannelsMask=0x%4.4x\r\n", - (g_MAX11131_device.enabledChannelsMask & 0xFFFF)); - // - cmdLine.serial().printf("VRef=%5.3fV\r\n", g_MAX11131_device.VRef); - // dtostrf width and precision: 3.3V / 1024 LSB = 0.00322265625 volts per LSB - // - return true; // command was handled by MAX11131 - } - //case '&': - //{ - // // TODO: cmdLine.serial().printf("\r\n & -- MAX11131_Example_ScanManual"); - //} + case 'B': // (nested inside case 'I') + { + // test menu command 'IB' handler: + // helpString='IB ch=? -- Reconfigure_DifferentialBipolarFSVref' + // CMD_='None' + // CommandName='Reconfigure_DifferentialBipolarFSVref' + // CommandParamIn='int channel_0_15' + // CommandReturnType='void' + // @Pre='' + // @Param[in]='' + // @Param[out]='' + // @Post='' + // displayPost='' + // @Return='' + // parse argument list + // parse argument int channel_0_15 + int channel_0_15 = 0; // --- g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__; // default to global property value + if (cmdLine.parse_int_dec("channel_0_15", channel_0_15)) + { + // g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__ = channel_0_15; // update global property value + } + // "ch" is an alias for argument "channel_0_15" + if (cmdLine.parse_int_dec("ch", channel_0_15)) + { + // g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__ = channel_0_15; // update global property value + } + // print arguments + cmdLine.serial().printf("Reconfigure_DifferentialBipolarFSVref"); + cmdLine.serial().printf(" channel_0_15=%d", channel_0_15); + cmdLine.serial().printf("\r\n"); + // call function Reconfigure_DifferentialBipolarFSVref(channel_0_15) + g_MAX11131_device.Reconfigure_DifferentialBipolarFSVref(channel_0_15); + return true; // command handled by MAX11131 + } // end nested case 'IB' + break; + case 'R': // (nested inside case 'I') + { + // test menu command 'IR' handler: + // helpString='IR ch=? -- Reconfigure_DifferentialBipolarFS2Vref' + // CMD_='None' + // CommandName='Reconfigure_DifferentialBipolarFS2Vref' + // CommandParamIn='int channel_0_15' + // CommandReturnType='void' + // @Pre='' + // @Param[in]='' + // @Param[out]='' + // @Post='' + // displayPost='' + // @Return='' + // parse argument list + // parse argument int channel_0_15 + int channel_0_15 = 0; // --- g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__; // default to global property value + if (cmdLine.parse_int_dec("channel_0_15", channel_0_15)) + { + // g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__ = channel_0_15; // update global property value + } + // "ch" is an alias for argument "channel_0_15" + if (cmdLine.parse_int_dec("ch", channel_0_15)) + { + // g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__ = channel_0_15; // update global property value + } + // print arguments + cmdLine.serial().printf("Reconfigure_DifferentialBipolarFS2Vref"); + cmdLine.serial().printf(" channel_0_15=%d", channel_0_15); + cmdLine.serial().printf("\r\n"); + // call function Reconfigure_DifferentialBipolarFS2Vref(channel_0_15) + g_MAX11131_device.Reconfigure_DifferentialBipolarFS2Vref(channel_0_15); + return true; // command handled by MAX11131 + } // end nested case 'IR' + break; + case 'S': // (nested inside case 'I') + { + // test menu command 'IS' handler: + // helpString='IS ch=? -- Reconfigure_SingleEnded' + // CMD_='None' + // CommandName='Reconfigure_SingleEnded' + // CommandParamIn='int channel_0_15' + // CommandReturnType='void' + // @Pre='' + // @Param[in]='' + // @Param[out]='' + // @Post='' + // displayPost='' + // @Return='' + // parse argument list + // parse argument int channel_0_15 + int channel_0_15 = 0; // --- g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__; // default to global property value + if (cmdLine.parse_int_dec("channel_0_15", channel_0_15)) + { + // g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__ = channel_0_15; // update global property value + } + // "ch" is an alias for argument "channel_0_15" + if (cmdLine.parse_int_dec("ch", channel_0_15)) + { + // g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__ = channel_0_15; // update global property value + } + // print arguments + cmdLine.serial().printf("Reconfigure_SingleEnded"); + cmdLine.serial().printf(" channel_0_15=%d", channel_0_15); + cmdLine.serial().printf("\r\n"); + // call function Reconfigure_SingleEnded(channel_0_15) + g_MAX11131_device.Reconfigure_SingleEnded(channel_0_15); + return true; // command handled by MAX11131 + } // end nested case 'IS' + break; + case 'U': // (nested inside case 'I') + { + // test menu command 'IU' handler: + // helpString='IU ch=? -- Reconfigure_DifferentialUnipolar' + // CMD_='None' + // CommandName='Reconfigure_DifferentialUnipolar' + // CommandParamIn='int channel_0_15' + // CommandReturnType='void' + // @Pre='' + // @Param[in]='' + // @Param[out]='' + // @Post='' + // displayPost='' + // @Return='' + // parse argument list + // parse argument int channel_0_15 + int channel_0_15 = 0; // --- g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__; // default to global property value + if (cmdLine.parse_int_dec("channel_0_15", channel_0_15)) + { + // g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__ = channel_0_15; // update global property value + } + // "ch" is an alias for argument "channel_0_15" + if (cmdLine.parse_int_dec("ch", channel_0_15)) + { + // g_MAX11131_device.__WARNING_no_match_for_argname_channel_0_15_in_MAX11131_device_t__ = channel_0_15; // update global property value + } + // print arguments + cmdLine.serial().printf("Reconfigure_DifferentialUnipolar"); + cmdLine.serial().printf(" channel_0_15=%d", channel_0_15); + cmdLine.serial().printf("\r\n"); + // call function Reconfigure_DifferentialUnipolar(channel_0_15) + g_MAX11131_device.Reconfigure_DifferentialUnipolar(channel_0_15); + return true; // command handled by MAX11131 + } // end nested case 'IU' + break; + } // end nested switch (cmdLine[1]) inside case 'I' break; - case '~': // TODO: IGNORE_AT_COMMANDS -- ignore ~~~ modem command - { - // TODO: '~' is not recommended for menu commands, interferes with ssh -#if IGNORE_AT_COMMANDS -# if HAS_DAPLINK_SERIAL - cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str()); -# endif // HAS_DAPLINK_SERIAL -#endif // IGNORE_AT_COMMANDS - } - break; - case '+': // TODO: IGNORE_AT_COMMANDS -- ignore +++ modem command - { -#if IGNORE_AT_COMMANDS -# if HAS_DAPLINK_SERIAL - cmdLine_DAPLINKserial.serial().printf("\r\n ignore AT command \"%s\"\r\n", cmdLine.str()); -# endif // HAS_DAPLINK_SERIAL -#endif // IGNORE_AT_COMMANDS - } - break; + } // end case 'I' } // end switch (cmdLine[0]) - return false; // command not handled + return false; // command not handled by MAX11131 } // end bool MAX11131_menu_onEOLcommandParser(CmdLine & cmdLine)