minimalist hardware testing support

Dependents:   MAX5715BOB_Tester MAX11131BOB_Tester MAX5171BOB_Tester MAX11410BOB_Tester ... more

Committer:
whismanoid
Date:
Fri Jun 21 10:52:47 2019 +0000
Revision:
1:f98ddb04f9e0
Parent:
0:93d4119d3f14
Child:
2:9b20cadbfa15
add LED indicators m_PassLED, m_FailLED, m_BusyLED; ; pulse blue LED during test to indicate activity

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 0:93d4119d3f14 1 // /*******************************************************************************
whismanoid 0:93d4119d3f14 2 // * Copyright (C) 2019 Maxim Integrated Products, Inc., All Rights Reserved.
whismanoid 0:93d4119d3f14 3 // *
whismanoid 0:93d4119d3f14 4 // * Permission is hereby granted, free of charge, to any person obtaining a
whismanoid 0:93d4119d3f14 5 // * copy of this software and associated documentation files (the "Software"),
whismanoid 0:93d4119d3f14 6 // * to deal in the Software without restriction, including without limitation
whismanoid 0:93d4119d3f14 7 // * the rights to use, copy, modify, merge, publish, distribute, sublicense,
whismanoid 0:93d4119d3f14 8 // * and/or sell copies of the Software, and to permit persons to whom the
whismanoid 0:93d4119d3f14 9 // * Software is furnished to do so, subject to the following conditions:
whismanoid 0:93d4119d3f14 10 // *
whismanoid 0:93d4119d3f14 11 // * The above copyright notice and this permission notice shall be included
whismanoid 0:93d4119d3f14 12 // * in all copies or substantial portions of the Software.
whismanoid 0:93d4119d3f14 13 // *
whismanoid 0:93d4119d3f14 14 // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
whismanoid 0:93d4119d3f14 15 // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
whismanoid 0:93d4119d3f14 16 // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
whismanoid 0:93d4119d3f14 17 // * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
whismanoid 0:93d4119d3f14 18 // * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
whismanoid 0:93d4119d3f14 19 // * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
whismanoid 0:93d4119d3f14 20 // * OTHER DEALINGS IN THE SOFTWARE.
whismanoid 0:93d4119d3f14 21 // *
whismanoid 0:93d4119d3f14 22 // * Except as contained in this notice, the name of Maxim Integrated
whismanoid 0:93d4119d3f14 23 // * Products, Inc. shall not be used except as stated in the Maxim Integrated
whismanoid 0:93d4119d3f14 24 // * Products, Inc. Branding Policy.
whismanoid 0:93d4119d3f14 25 // *
whismanoid 0:93d4119d3f14 26 // * The mere transfer of this software does not imply any licenses
whismanoid 0:93d4119d3f14 27 // * of trade secrets, proprietary technology, copyrights, patents,
whismanoid 0:93d4119d3f14 28 // * trademarks, maskwork rights, or any other form of intellectual
whismanoid 0:93d4119d3f14 29 // * property whatsoever. Maxim Integrated Products, Inc. retains all
whismanoid 0:93d4119d3f14 30 // * ownership rights.
whismanoid 0:93d4119d3f14 31 // *******************************************************************************
whismanoid 0:93d4119d3f14 32 // */
whismanoid 0:93d4119d3f14 33 // *********************************************************************
whismanoid 0:93d4119d3f14 34 // @file MaximTinyTester.cpp
whismanoid 0:93d4119d3f14 35 // *********************************************************************
whismanoid 0:93d4119d3f14 36
whismanoid 0:93d4119d3f14 37 #include "MaximTinyTester.h"
whismanoid 0:93d4119d3f14 38
whismanoid 0:93d4119d3f14 39 MaximTinyTester::MaximTinyTester(CmdLine& AssociatedCmdLine,
whismanoid 0:93d4119d3f14 40 AnalogIn& analogInPin0,
whismanoid 0:93d4119d3f14 41 AnalogIn& analogInPin1,
whismanoid 0:93d4119d3f14 42 AnalogIn& analogInPin2,
whismanoid 0:93d4119d3f14 43 AnalogIn& analogInPin3,
whismanoid 0:93d4119d3f14 44 AnalogIn& analogInPin4,
whismanoid 1:f98ddb04f9e0 45 AnalogIn& analogInPin5,
whismanoid 1:f98ddb04f9e0 46 DigitalOut& m_RFailLED,
whismanoid 1:f98ddb04f9e0 47 DigitalOut& m_GPassLED,
whismanoid 1:f98ddb04f9e0 48 DigitalOut& m_BBusyLED)
whismanoid 0:93d4119d3f14 49 : associatedCmdLine(AssociatedCmdLine)
whismanoid 0:93d4119d3f14 50 , analogInPin0(analogInPin0)
whismanoid 0:93d4119d3f14 51 , analogInPin1(analogInPin1)
whismanoid 0:93d4119d3f14 52 , analogInPin2(analogInPin2)
whismanoid 0:93d4119d3f14 53 , analogInPin3(analogInPin3)
whismanoid 0:93d4119d3f14 54 , analogInPin4(analogInPin4)
whismanoid 0:93d4119d3f14 55 , analogInPin5(analogInPin5)
whismanoid 1:f98ddb04f9e0 56 , m_RFailLED(m_RFailLED)
whismanoid 1:f98ddb04f9e0 57 , m_GPassLED(m_GPassLED)
whismanoid 1:f98ddb04f9e0 58 , m_BBusyLED(m_BBusyLED)
whismanoid 0:93d4119d3f14 59 {
whismanoid 0:93d4119d3f14 60 nPass = 0;
whismanoid 0:93d4119d3f14 61 nFail = 0;
whismanoid 0:93d4119d3f14 62 err_threshold = 0.030; // 30mV
whismanoid 0:93d4119d3f14 63 input_timeout_time_msec = 250;
whismanoid 0:93d4119d3f14 64 settle_time_msec = 250;
whismanoid 1:f98ddb04f9e0 65 blink_time_msec = 75;
whismanoid 0:93d4119d3f14 66 analogInPin_fullScaleVoltage[0] = 3.300;
whismanoid 0:93d4119d3f14 67 analogInPin_fullScaleVoltage[1] = 3.300;
whismanoid 0:93d4119d3f14 68 analogInPin_fullScaleVoltage[2] = 3.300;
whismanoid 0:93d4119d3f14 69 analogInPin_fullScaleVoltage[3] = 3.300;
whismanoid 0:93d4119d3f14 70 analogInPin_fullScaleVoltage[4] = 3.300;
whismanoid 0:93d4119d3f14 71 analogInPin_fullScaleVoltage[5] = 3.300;
whismanoid 0:93d4119d3f14 72 }
whismanoid 0:93d4119d3f14 73
whismanoid 0:93d4119d3f14 74 /** reset the pass/fail counters.
whismanoid 0:93d4119d3f14 75 *
whismanoid 0:93d4119d3f14 76 * @post nPass and nFail are reset to 0
whismanoid 0:93d4119d3f14 77 *
whismanoid 0:93d4119d3f14 78 */
whismanoid 0:93d4119d3f14 79 void MaximTinyTester::clear(void)
whismanoid 0:93d4119d3f14 80 {
whismanoid 0:93d4119d3f14 81 nPass = 0;
whismanoid 0:93d4119d3f14 82 nFail = 0;
whismanoid 1:f98ddb04f9e0 83 m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_OFF;
whismanoid 0:93d4119d3f14 84 }
whismanoid 0:93d4119d3f14 85
whismanoid 0:93d4119d3f14 86 /** report that a test has completed with success.
whismanoid 0:93d4119d3f14 87 *
whismanoid 0:93d4119d3f14 88 * @post nPass is increased by 1
whismanoid 0:93d4119d3f14 89 *
whismanoid 0:93d4119d3f14 90 */
whismanoid 0:93d4119d3f14 91 void MaximTinyTester::PASS()
whismanoid 0:93d4119d3f14 92 {
whismanoid 0:93d4119d3f14 93 ++nPass;
whismanoid 1:f98ddb04f9e0 94 // m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 95 // pulse blue LED during test to indicate activity
whismanoid 1:f98ddb04f9e0 96 m_GPassLED = LED_OFF; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 97 wait_ms(blink_time_msec); // delay
whismanoid 1:f98ddb04f9e0 98 m_GPassLED = LED_ON; m_BBusyLED = LED_OFF;
whismanoid 1:f98ddb04f9e0 99 wait_ms(blink_time_msec); // delay
whismanoid 0:93d4119d3f14 100 associatedCmdLine.serial().printf("\r\n+PASS ");
whismanoid 0:93d4119d3f14 101 }
whismanoid 0:93d4119d3f14 102
whismanoid 0:93d4119d3f14 103 /** report that a test has completed with failure.
whismanoid 0:93d4119d3f14 104 *
whismanoid 0:93d4119d3f14 105 * @post nFail is increased by 1
whismanoid 0:93d4119d3f14 106 *
whismanoid 0:93d4119d3f14 107 */
whismanoid 0:93d4119d3f14 108 void MaximTinyTester::FAIL()
whismanoid 0:93d4119d3f14 109 {
whismanoid 0:93d4119d3f14 110 ++nFail;
whismanoid 1:f98ddb04f9e0 111 // m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 112 // pulse blue LED during test to indicate activity
whismanoid 1:f98ddb04f9e0 113 m_RFailLED = LED_OFF; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 114 wait_ms(blink_time_msec); // delay
whismanoid 1:f98ddb04f9e0 115 m_RFailLED = LED_ON; m_BBusyLED = LED_OFF;
whismanoid 1:f98ddb04f9e0 116 wait_ms(blink_time_msec); // delay
whismanoid 0:93d4119d3f14 117 associatedCmdLine.serial().printf("\r\n-FAIL ");
whismanoid 0:93d4119d3f14 118 #if USE_LEDS
whismanoid 0:93d4119d3f14 119 rgb_led.red(); // diagnostic rbg led RED
whismanoid 0:93d4119d3f14 120 //~ rgb_led.green(); // diagnostic rbg led GREEN
whismanoid 0:93d4119d3f14 121 //~ rgb_led.blue(); // diagnostic rbg led BLUE
whismanoid 0:93d4119d3f14 122 //~ rgb_led.white(); // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 0:93d4119d3f14 123 //~ rgb_led.cyan(); // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 0:93d4119d3f14 124 //~ rgb_led.magenta(); // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 0:93d4119d3f14 125 //~ rgb_led.yellow(); // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:93d4119d3f14 126 //~ rgb_led.black(); // diagnostic rbg led BLACK
whismanoid 0:93d4119d3f14 127 #endif // USE_LEDS
whismanoid 0:93d4119d3f14 128 }
whismanoid 0:93d4119d3f14 129
whismanoid 0:93d4119d3f14 130 /** Report number of pass and number of fail test results
whismanoid 0:93d4119d3f14 131 */
whismanoid 0:93d4119d3f14 132 void MaximTinyTester::Report_Summary(void)
whismanoid 0:93d4119d3f14 133 {
whismanoid 0:93d4119d3f14 134 associatedCmdLine.serial().printf("\r\nSummary: %d PASS %d FAIL\r\n", nPass, nFail);
whismanoid 0:93d4119d3f14 135 //~ associatedCmdLine.serial().printf(g_SelfTest_nPass);
whismanoid 0:93d4119d3f14 136 //~ associatedCmdLine.serial().printf(" PASS ");
whismanoid 0:93d4119d3f14 137 //~ associatedCmdLine.serial().printf(g_SelfTest_nFail);
whismanoid 0:93d4119d3f14 138 //~ associatedCmdLine.serial().printf(" FAIL\r\n");
whismanoid 0:93d4119d3f14 139 if (nFail == 0) {
whismanoid 1:f98ddb04f9e0 140 m_RFailLED = LED_OFF; m_GPassLED = LED_ON; m_BBusyLED = LED_OFF;
whismanoid 1:f98ddb04f9e0 141 //~ rgb_led.green(); // diagnostic rbg led GREEN
whismanoid 1:f98ddb04f9e0 142 }
whismanoid 1:f98ddb04f9e0 143 else {
whismanoid 1:f98ddb04f9e0 144 m_RFailLED = LED_ON; m_GPassLED = LED_OFF; m_BBusyLED = LED_OFF;
whismanoid 0:93d4119d3f14 145 //~ rgb_led.red(); // diagnostic rbg led RED
whismanoid 0:93d4119d3f14 146 }
whismanoid 0:93d4119d3f14 147 }
whismanoid 0:93d4119d3f14 148
whismanoid 0:93d4119d3f14 149 /** Test a software function
whismanoid 0:93d4119d3f14 150 *
whismanoid 0:93d4119d3f14 151 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 0:93d4119d3f14 152 *
whismanoid 0:93d4119d3f14 153 * @param[in] functionUnderTest points to the function under test
whismanoid 0:93d4119d3f14 154 *
whismanoid 0:93d4119d3f14 155 * @param[in] voltageV is a test argument given to the function under test
whismanoid 0:93d4119d3f14 156 *
whismanoid 0:93d4119d3f14 157 * @param[in] expect_result contains the expected result
whismanoid 0:93d4119d3f14 158 *
whismanoid 0:93d4119d3f14 159 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 160 *
whismanoid 0:93d4119d3f14 161 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 162 *
whismanoid 0:93d4119d3f14 163 */
whismanoid 0:93d4119d3f14 164 bool MaximTinyTester::FunctionCall_Expect(const char *nameOfFunctionUnderTest,
whismanoid 0:93d4119d3f14 165 Callback<uint16_t(double)> functionUnderTest,
whismanoid 0:93d4119d3f14 166 double voltageV, uint16_t expect_result)
whismanoid 0:93d4119d3f14 167 {
whismanoid 0:93d4119d3f14 168 uint16_t actual_result = functionUnderTest(voltageV);
whismanoid 0:93d4119d3f14 169 if (actual_result != expect_result)
whismanoid 0:93d4119d3f14 170 {
whismanoid 0:93d4119d3f14 171 FAIL();
whismanoid 0:93d4119d3f14 172 associatedCmdLine.serial().printf("%s(%6.4fV)", nameOfFunctionUnderTest, voltageV);
whismanoid 0:93d4119d3f14 173 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 0:93d4119d3f14 174 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 0:93d4119d3f14 175 return false;
whismanoid 0:93d4119d3f14 176 }
whismanoid 0:93d4119d3f14 177 else
whismanoid 0:93d4119d3f14 178 {
whismanoid 0:93d4119d3f14 179 PASS();
whismanoid 0:93d4119d3f14 180 associatedCmdLine.serial().printf("%s(%6.4fV)", nameOfFunctionUnderTest, voltageV);
whismanoid 0:93d4119d3f14 181 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 0:93d4119d3f14 182 return true;
whismanoid 0:93d4119d3f14 183 }
whismanoid 0:93d4119d3f14 184 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 185 }
whismanoid 0:93d4119d3f14 186
whismanoid 0:93d4119d3f14 187 /** Test a software function
whismanoid 0:93d4119d3f14 188 *
whismanoid 0:93d4119d3f14 189 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 0:93d4119d3f14 190 *
whismanoid 0:93d4119d3f14 191 * @param[in] functionUnderTest points to the function under test
whismanoid 0:93d4119d3f14 192 *
whismanoid 0:93d4119d3f14 193 * @param[in] value_u16 is a test argument given to the function under test
whismanoid 0:93d4119d3f14 194 *
whismanoid 0:93d4119d3f14 195 * @param[in] expect_result contains the expected result
whismanoid 0:93d4119d3f14 196 *
whismanoid 0:93d4119d3f14 197 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 198 *
whismanoid 0:93d4119d3f14 199 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 200 *
whismanoid 0:93d4119d3f14 201 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 202 *
whismanoid 0:93d4119d3f14 203 */
whismanoid 0:93d4119d3f14 204 bool MaximTinyTester::FunctionCall_Expect(const char *nameOfFunctionUnderTest,
whismanoid 0:93d4119d3f14 205 Callback<double(uint16_t)> functionUnderTest,
whismanoid 0:93d4119d3f14 206 uint16_t value_u16, double expect_result)
whismanoid 0:93d4119d3f14 207 {
whismanoid 0:93d4119d3f14 208 double actual_result = functionUnderTest(value_u16);
whismanoid 0:93d4119d3f14 209 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 210 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 211 {
whismanoid 0:93d4119d3f14 212 PASS();
whismanoid 0:93d4119d3f14 213 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, value_u16);
whismanoid 0:93d4119d3f14 214 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 0:93d4119d3f14 215 return true;
whismanoid 0:93d4119d3f14 216 }
whismanoid 0:93d4119d3f14 217 else
whismanoid 0:93d4119d3f14 218 {
whismanoid 0:93d4119d3f14 219 FAIL();
whismanoid 0:93d4119d3f14 220 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, value_u16);
whismanoid 0:93d4119d3f14 221 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 0:93d4119d3f14 222 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 223 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 224 return false;
whismanoid 0:93d4119d3f14 225 }
whismanoid 0:93d4119d3f14 226 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 227 }
whismanoid 0:93d4119d3f14 228
whismanoid 0:93d4119d3f14 229 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 230 *
whismanoid 0:93d4119d3f14 231 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 232 *
whismanoid 0:93d4119d3f14 233 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 234 *
whismanoid 0:93d4119d3f14 235 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 236 *
whismanoid 0:93d4119d3f14 237 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 238 *
whismanoid 0:93d4119d3f14 239 */
whismanoid 0:93d4119d3f14 240 bool MaximTinyTester::AnalogIn0_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 241 {
whismanoid 0:93d4119d3f14 242 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 0:93d4119d3f14 243
whismanoid 0:93d4119d3f14 244 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 245 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 246 float normValue_0_1 = analogInPin0.read();
whismanoid 0:93d4119d3f14 247 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 248 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 249 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 250 {
whismanoid 0:93d4119d3f14 251 PASS();
whismanoid 0:93d4119d3f14 252 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 253 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 254 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 255 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 256 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 257 );
whismanoid 0:93d4119d3f14 258 //
whismanoid 0:93d4119d3f14 259 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 260 return true;
whismanoid 0:93d4119d3f14 261 }
whismanoid 0:93d4119d3f14 262 else
whismanoid 0:93d4119d3f14 263 {
whismanoid 0:93d4119d3f14 264 FAIL();
whismanoid 0:93d4119d3f14 265 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 266 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 267 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 268 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 269 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 270 );
whismanoid 0:93d4119d3f14 271 //
whismanoid 0:93d4119d3f14 272 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 273 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 274 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 275 }
whismanoid 0:93d4119d3f14 276 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 277 return false;
whismanoid 0:93d4119d3f14 278 }
whismanoid 0:93d4119d3f14 279
whismanoid 0:93d4119d3f14 280 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 281 *
whismanoid 0:93d4119d3f14 282 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 283 *
whismanoid 0:93d4119d3f14 284 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 285 *
whismanoid 0:93d4119d3f14 286 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 287 *
whismanoid 0:93d4119d3f14 288 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 289 *
whismanoid 0:93d4119d3f14 290 */
whismanoid 0:93d4119d3f14 291 bool MaximTinyTester::AnalogIn1_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 292 {
whismanoid 0:93d4119d3f14 293 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[1];
whismanoid 0:93d4119d3f14 294
whismanoid 0:93d4119d3f14 295 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 296 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 297 float normValue_0_1 = analogInPin1.read();
whismanoid 0:93d4119d3f14 298 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 299 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 300 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 301 {
whismanoid 0:93d4119d3f14 302 PASS();
whismanoid 0:93d4119d3f14 303 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 304 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 305 associatedCmdLine.serial().printf("AIN1 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 306 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 307 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 308 );
whismanoid 0:93d4119d3f14 309 //
whismanoid 0:93d4119d3f14 310 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 311 return true;
whismanoid 0:93d4119d3f14 312 }
whismanoid 0:93d4119d3f14 313 else
whismanoid 0:93d4119d3f14 314 {
whismanoid 0:93d4119d3f14 315 FAIL();
whismanoid 0:93d4119d3f14 316 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 317 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 318 associatedCmdLine.serial().printf("AIN1 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 319 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 320 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 321 );
whismanoid 0:93d4119d3f14 322 //
whismanoid 0:93d4119d3f14 323 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 324 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 325 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 326 }
whismanoid 0:93d4119d3f14 327 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 328 return false;
whismanoid 0:93d4119d3f14 329 }
whismanoid 0:93d4119d3f14 330
whismanoid 0:93d4119d3f14 331 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 332 *
whismanoid 0:93d4119d3f14 333 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 334 *
whismanoid 0:93d4119d3f14 335 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 336 *
whismanoid 0:93d4119d3f14 337 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 338 *
whismanoid 0:93d4119d3f14 339 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 340 *
whismanoid 0:93d4119d3f14 341 */
whismanoid 0:93d4119d3f14 342 bool MaximTinyTester::AnalogIn2_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 343 {
whismanoid 0:93d4119d3f14 344 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[2];
whismanoid 0:93d4119d3f14 345
whismanoid 0:93d4119d3f14 346 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 347 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 348 float normValue_0_1 = analogInPin2.read();
whismanoid 0:93d4119d3f14 349 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 350 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 351 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 352 {
whismanoid 0:93d4119d3f14 353 PASS();
whismanoid 0:93d4119d3f14 354 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 355 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 356 associatedCmdLine.serial().printf("AIN2 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 357 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 358 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 359 );
whismanoid 0:93d4119d3f14 360 //
whismanoid 0:93d4119d3f14 361 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 362 return true;
whismanoid 0:93d4119d3f14 363 }
whismanoid 0:93d4119d3f14 364 else
whismanoid 0:93d4119d3f14 365 {
whismanoid 0:93d4119d3f14 366 FAIL();
whismanoid 0:93d4119d3f14 367 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 368 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 369 associatedCmdLine.serial().printf("AIN2 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 370 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 371 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 372 );
whismanoid 0:93d4119d3f14 373 //
whismanoid 0:93d4119d3f14 374 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 375 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 376 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 377 }
whismanoid 0:93d4119d3f14 378 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 379 return false;
whismanoid 0:93d4119d3f14 380 }
whismanoid 0:93d4119d3f14 381
whismanoid 0:93d4119d3f14 382 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 383 *
whismanoid 0:93d4119d3f14 384 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 385 *
whismanoid 0:93d4119d3f14 386 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 387 *
whismanoid 0:93d4119d3f14 388 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 389 *
whismanoid 0:93d4119d3f14 390 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 391 *
whismanoid 0:93d4119d3f14 392 */
whismanoid 0:93d4119d3f14 393 bool MaximTinyTester::AnalogIn3_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 394 {
whismanoid 0:93d4119d3f14 395 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[3];
whismanoid 0:93d4119d3f14 396
whismanoid 0:93d4119d3f14 397 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 398 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 399 float normValue_0_1 = analogInPin3.read();
whismanoid 0:93d4119d3f14 400 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 401 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 402 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 403 {
whismanoid 0:93d4119d3f14 404 PASS();
whismanoid 0:93d4119d3f14 405 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 406 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 407 associatedCmdLine.serial().printf("AIN3 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 408 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 409 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 410 );
whismanoid 0:93d4119d3f14 411 //
whismanoid 0:93d4119d3f14 412 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 413 return true;
whismanoid 0:93d4119d3f14 414 }
whismanoid 0:93d4119d3f14 415 else
whismanoid 0:93d4119d3f14 416 {
whismanoid 0:93d4119d3f14 417 FAIL();
whismanoid 0:93d4119d3f14 418 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 419 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 420 associatedCmdLine.serial().printf("AIN3 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 421 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 422 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 423 );
whismanoid 0:93d4119d3f14 424 //
whismanoid 0:93d4119d3f14 425 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 426 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 427 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 428 }
whismanoid 0:93d4119d3f14 429 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 430 return false;
whismanoid 0:93d4119d3f14 431 }
whismanoid 0:93d4119d3f14 432
whismanoid 0:93d4119d3f14 433 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 434 *
whismanoid 0:93d4119d3f14 435 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 436 *
whismanoid 0:93d4119d3f14 437 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 438 *
whismanoid 0:93d4119d3f14 439 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 440 *
whismanoid 0:93d4119d3f14 441 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 442 *
whismanoid 0:93d4119d3f14 443 */
whismanoid 0:93d4119d3f14 444 bool MaximTinyTester::AnalogIn4_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 445 {
whismanoid 0:93d4119d3f14 446 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[4];
whismanoid 0:93d4119d3f14 447
whismanoid 0:93d4119d3f14 448 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 449 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 450 float normValue_0_1 = analogInPin4.read();
whismanoid 0:93d4119d3f14 451 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 452 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 453 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 454 {
whismanoid 0:93d4119d3f14 455 PASS();
whismanoid 0:93d4119d3f14 456 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 457 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 458 associatedCmdLine.serial().printf("AIN4 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 459 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 460 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 461 );
whismanoid 0:93d4119d3f14 462 //
whismanoid 0:93d4119d3f14 463 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 464 return true;
whismanoid 0:93d4119d3f14 465 }
whismanoid 0:93d4119d3f14 466 else
whismanoid 0:93d4119d3f14 467 {
whismanoid 0:93d4119d3f14 468 FAIL();
whismanoid 0:93d4119d3f14 469 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 470 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 471 associatedCmdLine.serial().printf("AIN4 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 472 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 473 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 474 );
whismanoid 0:93d4119d3f14 475 //
whismanoid 0:93d4119d3f14 476 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 477 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 478 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 479 }
whismanoid 0:93d4119d3f14 480 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 481 return false;
whismanoid 0:93d4119d3f14 482 }
whismanoid 0:93d4119d3f14 483
whismanoid 0:93d4119d3f14 484 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 485 *
whismanoid 0:93d4119d3f14 486 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 487 *
whismanoid 0:93d4119d3f14 488 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 489 *
whismanoid 0:93d4119d3f14 490 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 491 *
whismanoid 0:93d4119d3f14 492 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 493 *
whismanoid 0:93d4119d3f14 494 */
whismanoid 0:93d4119d3f14 495 bool MaximTinyTester::AnalogIn5_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 496 {
whismanoid 0:93d4119d3f14 497 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[5];
whismanoid 0:93d4119d3f14 498
whismanoid 0:93d4119d3f14 499 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 500 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 501 float normValue_0_1 = analogInPin5.read();
whismanoid 0:93d4119d3f14 502 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 503 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 504 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 505 {
whismanoid 0:93d4119d3f14 506 PASS();
whismanoid 0:93d4119d3f14 507 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 508 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 509 associatedCmdLine.serial().printf("AIN5 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 510 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 511 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 512 );
whismanoid 0:93d4119d3f14 513 //
whismanoid 0:93d4119d3f14 514 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 515 return true;
whismanoid 0:93d4119d3f14 516 }
whismanoid 0:93d4119d3f14 517 else
whismanoid 0:93d4119d3f14 518 {
whismanoid 0:93d4119d3f14 519 FAIL();
whismanoid 0:93d4119d3f14 520 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 521 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 522 associatedCmdLine.serial().printf("AIN5 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 523 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 524 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 525 );
whismanoid 0:93d4119d3f14 526 //
whismanoid 0:93d4119d3f14 527 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 528 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 529 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 530 }
whismanoid 0:93d4119d3f14 531 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 532 return false;
whismanoid 0:93d4119d3f14 533 }
whismanoid 0:93d4119d3f14 534
whismanoid 0:93d4119d3f14 535 bool MaximTinyTester::AnalogIn_Read_Expect_voltageV(AnalogIn& analogInPin, double expect_result)
whismanoid 0:93d4119d3f14 536 {
whismanoid 0:93d4119d3f14 537 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 0:93d4119d3f14 538
whismanoid 0:93d4119d3f14 539 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 540 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 541 float normValue_0_1 = analogInPin.read();
whismanoid 0:93d4119d3f14 542 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 543 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 544 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 545 {
whismanoid 0:93d4119d3f14 546 PASS();
whismanoid 0:93d4119d3f14 547 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 548 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 549 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 550 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 551 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 552 );
whismanoid 0:93d4119d3f14 553 //
whismanoid 0:93d4119d3f14 554 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 555 return true;
whismanoid 0:93d4119d3f14 556 }
whismanoid 0:93d4119d3f14 557 else
whismanoid 0:93d4119d3f14 558 {
whismanoid 0:93d4119d3f14 559 FAIL();
whismanoid 0:93d4119d3f14 560 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 561 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 562 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 563 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 564 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 565 );
whismanoid 0:93d4119d3f14 566 //
whismanoid 0:93d4119d3f14 567 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 568 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 569 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 570 }
whismanoid 0:93d4119d3f14 571 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 572 return false;
whismanoid 0:93d4119d3f14 573 }
whismanoid 0:93d4119d3f14 574
whismanoid 0:93d4119d3f14 575 bool MaximTinyTester::DigitalIn_Read_Expect_WarnOnly(DigitalIn& digitalInPin, const char* pinName, int expect_result, const char *expect_description)
whismanoid 0:93d4119d3f14 576 {
whismanoid 0:93d4119d3f14 577 int actual_UPO_value = -1;
whismanoid 0:93d4119d3f14 578 for (int retry_count = 0; retry_count < 10; retry_count++) {
whismanoid 0:93d4119d3f14 579 actual_UPO_value = digitalInPin.read(); // g_MAX5171_device.UPOinputValue();
whismanoid 0:93d4119d3f14 580 if (actual_UPO_value == expect_result) {
whismanoid 0:93d4119d3f14 581 PASS();
whismanoid 0:93d4119d3f14 582 associatedCmdLine.serial().printf("%s signal=%d %s", pinName, expect_result, expect_description);
whismanoid 0:93d4119d3f14 583 return true;
whismanoid 0:93d4119d3f14 584 }
whismanoid 0:93d4119d3f14 585 // UPO condition not met, retry for a while until give up
whismanoid 0:93d4119d3f14 586 wait_ms(input_timeout_time_msec / 10); // delay
whismanoid 0:93d4119d3f14 587 }
whismanoid 0:93d4119d3f14 588 associatedCmdLine.serial().printf("\r\n!WARN "); // SelfTest_FAIL(cmdLine);
whismanoid 0:93d4119d3f14 589 associatedCmdLine.serial().printf("expected %s signal=%d %s", pinName, expect_result, expect_description);
whismanoid 0:93d4119d3f14 590 associatedCmdLine.serial().printf(", but got actual %s=%d", pinName, actual_UPO_value);
whismanoid 0:93d4119d3f14 591 associatedCmdLine.serial().printf(", missing %s connections?", pinName);
whismanoid 0:93d4119d3f14 592 return false;
whismanoid 0:93d4119d3f14 593 }
whismanoid 0:93d4119d3f14 594
whismanoid 0:93d4119d3f14 595 void MaximTinyTester::Wait_Output_Settling()
whismanoid 0:93d4119d3f14 596 {
whismanoid 0:93d4119d3f14 597 wait_ms(settle_time_msec); // delay
whismanoid 0:93d4119d3f14 598 }
whismanoid 0:93d4119d3f14 599
whismanoid 0:93d4119d3f14 600
whismanoid 0:93d4119d3f14 601 // End of file