minimalist hardware testing support

Dependents:   MAX5715BOB_Tester MAX11131BOB_Tester MAX5171BOB_Tester MAX11410BOB_Tester ... more

Committer:
whismanoid
Date:
Fri Sep 27 21:16:09 2019 -0700
Revision:
4:63d97c7be309
Parent:
3:080aa1bb1bc0
Child:
5:67a1cd5a67cc
Added tag 2019-09-27_r1.0 for changeset 080aa1bb1bc0

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 3:080aa1bb1bc0 39 #ifndef LED_ON
whismanoid 3:080aa1bb1bc0 40 # define LED_ON 0
whismanoid 3:080aa1bb1bc0 41 #endif
whismanoid 3:080aa1bb1bc0 42 #ifndef LED_OFF
whismanoid 3:080aa1bb1bc0 43 # define LED_OFF 1
whismanoid 3:080aa1bb1bc0 44 #endif
whismanoid 3:080aa1bb1bc0 45
whismanoid 0:93d4119d3f14 46 MaximTinyTester::MaximTinyTester(CmdLine& AssociatedCmdLine,
whismanoid 0:93d4119d3f14 47 AnalogIn& analogInPin0,
whismanoid 0:93d4119d3f14 48 AnalogIn& analogInPin1,
whismanoid 0:93d4119d3f14 49 AnalogIn& analogInPin2,
whismanoid 0:93d4119d3f14 50 AnalogIn& analogInPin3,
whismanoid 0:93d4119d3f14 51 AnalogIn& analogInPin4,
whismanoid 1:f98ddb04f9e0 52 AnalogIn& analogInPin5,
whismanoid 1:f98ddb04f9e0 53 DigitalOut& m_RFailLED,
whismanoid 1:f98ddb04f9e0 54 DigitalOut& m_GPassLED,
whismanoid 1:f98ddb04f9e0 55 DigitalOut& m_BBusyLED)
whismanoid 0:93d4119d3f14 56 : associatedCmdLine(AssociatedCmdLine)
whismanoid 0:93d4119d3f14 57 , analogInPin0(analogInPin0)
whismanoid 0:93d4119d3f14 58 , analogInPin1(analogInPin1)
whismanoid 0:93d4119d3f14 59 , analogInPin2(analogInPin2)
whismanoid 0:93d4119d3f14 60 , analogInPin3(analogInPin3)
whismanoid 0:93d4119d3f14 61 , analogInPin4(analogInPin4)
whismanoid 0:93d4119d3f14 62 , analogInPin5(analogInPin5)
whismanoid 1:f98ddb04f9e0 63 , m_RFailLED(m_RFailLED)
whismanoid 1:f98ddb04f9e0 64 , m_GPassLED(m_GPassLED)
whismanoid 1:f98ddb04f9e0 65 , m_BBusyLED(m_BBusyLED)
whismanoid 0:93d4119d3f14 66 {
whismanoid 0:93d4119d3f14 67 nPass = 0;
whismanoid 0:93d4119d3f14 68 nFail = 0;
whismanoid 0:93d4119d3f14 69 err_threshold = 0.030; // 30mV
whismanoid 0:93d4119d3f14 70 input_timeout_time_msec = 250;
whismanoid 0:93d4119d3f14 71 settle_time_msec = 250;
whismanoid 1:f98ddb04f9e0 72 blink_time_msec = 75;
whismanoid 0:93d4119d3f14 73 analogInPin_fullScaleVoltage[0] = 3.300;
whismanoid 0:93d4119d3f14 74 analogInPin_fullScaleVoltage[1] = 3.300;
whismanoid 0:93d4119d3f14 75 analogInPin_fullScaleVoltage[2] = 3.300;
whismanoid 0:93d4119d3f14 76 analogInPin_fullScaleVoltage[3] = 3.300;
whismanoid 0:93d4119d3f14 77 analogInPin_fullScaleVoltage[4] = 3.300;
whismanoid 0:93d4119d3f14 78 analogInPin_fullScaleVoltage[5] = 3.300;
whismanoid 0:93d4119d3f14 79 }
whismanoid 0:93d4119d3f14 80
whismanoid 0:93d4119d3f14 81 /** reset the pass/fail counters.
whismanoid 0:93d4119d3f14 82 *
whismanoid 0:93d4119d3f14 83 * @post nPass and nFail are reset to 0
whismanoid 0:93d4119d3f14 84 *
whismanoid 0:93d4119d3f14 85 */
whismanoid 0:93d4119d3f14 86 void MaximTinyTester::clear(void)
whismanoid 0:93d4119d3f14 87 {
whismanoid 0:93d4119d3f14 88 nPass = 0;
whismanoid 0:93d4119d3f14 89 nFail = 0;
whismanoid 3:080aa1bb1bc0 90 // PinName NC means NOT_CONNECTED; DigitalOut::is_connected() returns false
whismanoid 3:080aa1bb1bc0 91 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 92 m_RFailLED = LED_ON;
whismanoid 3:080aa1bb1bc0 93 }
whismanoid 3:080aa1bb1bc0 94 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 95 m_GPassLED = LED_ON;
whismanoid 3:080aa1bb1bc0 96 }
whismanoid 3:080aa1bb1bc0 97 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 98 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 99 }
whismanoid 0:93d4119d3f14 100 }
whismanoid 0:93d4119d3f14 101
whismanoid 0:93d4119d3f14 102 /** report that a test has completed with success.
whismanoid 0:93d4119d3f14 103 *
whismanoid 0:93d4119d3f14 104 * @post nPass is increased by 1
whismanoid 0:93d4119d3f14 105 *
whismanoid 0:93d4119d3f14 106 */
whismanoid 0:93d4119d3f14 107 void MaximTinyTester::PASS()
whismanoid 0:93d4119d3f14 108 {
whismanoid 0:93d4119d3f14 109 ++nPass;
whismanoid 1:f98ddb04f9e0 110 // m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 111 // pulse blue LED during test to indicate activity
whismanoid 3:080aa1bb1bc0 112 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 113 m_GPassLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 114 }
whismanoid 3:080aa1bb1bc0 115 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 116 m_BBusyLED = LED_ON;
whismanoid 3:080aa1bb1bc0 117 }
whismanoid 1:f98ddb04f9e0 118 wait_ms(blink_time_msec); // delay
whismanoid 3:080aa1bb1bc0 119 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 120 m_GPassLED = LED_ON;
whismanoid 3:080aa1bb1bc0 121 }
whismanoid 3:080aa1bb1bc0 122 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 123 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 124 }
whismanoid 1:f98ddb04f9e0 125 wait_ms(blink_time_msec); // delay
whismanoid 0:93d4119d3f14 126 associatedCmdLine.serial().printf("\r\n+PASS ");
whismanoid 0:93d4119d3f14 127 }
whismanoid 0:93d4119d3f14 128
whismanoid 0:93d4119d3f14 129 /** report that a test has completed with failure.
whismanoid 0:93d4119d3f14 130 *
whismanoid 0:93d4119d3f14 131 * @post nFail is increased by 1
whismanoid 0:93d4119d3f14 132 *
whismanoid 0:93d4119d3f14 133 */
whismanoid 0:93d4119d3f14 134 void MaximTinyTester::FAIL()
whismanoid 0:93d4119d3f14 135 {
whismanoid 0:93d4119d3f14 136 ++nFail;
whismanoid 1:f98ddb04f9e0 137 // m_RFailLED = LED_ON; m_GPassLED = LED_ON; m_BBusyLED = LED_ON;
whismanoid 1:f98ddb04f9e0 138 // pulse blue LED during test to indicate activity
whismanoid 3:080aa1bb1bc0 139 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 140 m_RFailLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 141 }
whismanoid 3:080aa1bb1bc0 142 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 143 m_BBusyLED = LED_ON;
whismanoid 3:080aa1bb1bc0 144 }
whismanoid 1:f98ddb04f9e0 145 wait_ms(blink_time_msec); // delay
whismanoid 3:080aa1bb1bc0 146 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 147 m_RFailLED = LED_ON;
whismanoid 3:080aa1bb1bc0 148 }
whismanoid 3:080aa1bb1bc0 149 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 150 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 151 }
whismanoid 1:f98ddb04f9e0 152 wait_ms(blink_time_msec); // delay
whismanoid 0:93d4119d3f14 153 associatedCmdLine.serial().printf("\r\n-FAIL ");
whismanoid 0:93d4119d3f14 154 #if USE_LEDS
whismanoid 0:93d4119d3f14 155 rgb_led.red(); // diagnostic rbg led RED
whismanoid 0:93d4119d3f14 156 //~ rgb_led.green(); // diagnostic rbg led GREEN
whismanoid 0:93d4119d3f14 157 //~ rgb_led.blue(); // diagnostic rbg led BLUE
whismanoid 0:93d4119d3f14 158 //~ rgb_led.white(); // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 0:93d4119d3f14 159 //~ rgb_led.cyan(); // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 0:93d4119d3f14 160 //~ rgb_led.magenta(); // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 0:93d4119d3f14 161 //~ rgb_led.yellow(); // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 0:93d4119d3f14 162 //~ rgb_led.black(); // diagnostic rbg led BLACK
whismanoid 0:93d4119d3f14 163 #endif // USE_LEDS
whismanoid 0:93d4119d3f14 164 }
whismanoid 0:93d4119d3f14 165
whismanoid 0:93d4119d3f14 166 /** Report number of pass and number of fail test results
whismanoid 0:93d4119d3f14 167 */
whismanoid 0:93d4119d3f14 168 void MaximTinyTester::Report_Summary(void)
whismanoid 0:93d4119d3f14 169 {
whismanoid 0:93d4119d3f14 170 associatedCmdLine.serial().printf("\r\nSummary: %d PASS %d FAIL\r\n", nPass, nFail);
whismanoid 0:93d4119d3f14 171 //~ associatedCmdLine.serial().printf(g_SelfTest_nPass);
whismanoid 0:93d4119d3f14 172 //~ associatedCmdLine.serial().printf(" PASS ");
whismanoid 0:93d4119d3f14 173 //~ associatedCmdLine.serial().printf(g_SelfTest_nFail);
whismanoid 0:93d4119d3f14 174 //~ associatedCmdLine.serial().printf(" FAIL\r\n");
whismanoid 0:93d4119d3f14 175 if (nFail == 0) {
whismanoid 3:080aa1bb1bc0 176 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 177 m_RFailLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 178 }
whismanoid 3:080aa1bb1bc0 179 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 180 m_GPassLED = LED_ON;
whismanoid 3:080aa1bb1bc0 181 }
whismanoid 3:080aa1bb1bc0 182 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 183 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 184 }
whismanoid 1:f98ddb04f9e0 185 //~ rgb_led.green(); // diagnostic rbg led GREEN
whismanoid 1:f98ddb04f9e0 186 }
whismanoid 1:f98ddb04f9e0 187 else {
whismanoid 3:080aa1bb1bc0 188 if (m_RFailLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 189 m_RFailLED = LED_ON;
whismanoid 3:080aa1bb1bc0 190 }
whismanoid 3:080aa1bb1bc0 191 if (m_GPassLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 192 m_GPassLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 193 }
whismanoid 3:080aa1bb1bc0 194 if (m_BBusyLED.is_connected()) {
whismanoid 3:080aa1bb1bc0 195 m_BBusyLED = LED_OFF;
whismanoid 3:080aa1bb1bc0 196 }
whismanoid 0:93d4119d3f14 197 //~ rgb_led.red(); // diagnostic rbg led RED
whismanoid 0:93d4119d3f14 198 }
whismanoid 0:93d4119d3f14 199 }
whismanoid 0:93d4119d3f14 200
whismanoid 0:93d4119d3f14 201 /** Test a software function
whismanoid 0:93d4119d3f14 202 *
whismanoid 0:93d4119d3f14 203 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 0:93d4119d3f14 204 *
whismanoid 0:93d4119d3f14 205 * @param[in] functionUnderTest points to the function under test
whismanoid 0:93d4119d3f14 206 *
whismanoid 0:93d4119d3f14 207 * @param[in] voltageV is a test argument given to the function under test
whismanoid 0:93d4119d3f14 208 *
whismanoid 0:93d4119d3f14 209 * @param[in] expect_result contains the expected result
whismanoid 0:93d4119d3f14 210 *
whismanoid 0:93d4119d3f14 211 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 212 *
whismanoid 0:93d4119d3f14 213 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 214 *
whismanoid 0:93d4119d3f14 215 */
whismanoid 0:93d4119d3f14 216 bool MaximTinyTester::FunctionCall_Expect(const char *nameOfFunctionUnderTest,
whismanoid 0:93d4119d3f14 217 Callback<uint16_t(double)> functionUnderTest,
whismanoid 0:93d4119d3f14 218 double voltageV, uint16_t expect_result)
whismanoid 0:93d4119d3f14 219 {
whismanoid 0:93d4119d3f14 220 uint16_t actual_result = functionUnderTest(voltageV);
whismanoid 0:93d4119d3f14 221 if (actual_result != expect_result)
whismanoid 0:93d4119d3f14 222 {
whismanoid 0:93d4119d3f14 223 FAIL();
whismanoid 0:93d4119d3f14 224 associatedCmdLine.serial().printf("%s(%6.4fV)", nameOfFunctionUnderTest, voltageV);
whismanoid 0:93d4119d3f14 225 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 0:93d4119d3f14 226 associatedCmdLine.serial().printf(" but got %d", actual_result);
whismanoid 0:93d4119d3f14 227 return false;
whismanoid 0:93d4119d3f14 228 }
whismanoid 0:93d4119d3f14 229 else
whismanoid 0:93d4119d3f14 230 {
whismanoid 0:93d4119d3f14 231 PASS();
whismanoid 0:93d4119d3f14 232 associatedCmdLine.serial().printf("%s(%6.4fV)", nameOfFunctionUnderTest, voltageV);
whismanoid 0:93d4119d3f14 233 associatedCmdLine.serial().printf(" expect %d", expect_result);
whismanoid 0:93d4119d3f14 234 return true;
whismanoid 0:93d4119d3f14 235 }
whismanoid 0:93d4119d3f14 236 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 237 }
whismanoid 0:93d4119d3f14 238
whismanoid 0:93d4119d3f14 239 /** Test a software function
whismanoid 0:93d4119d3f14 240 *
whismanoid 0:93d4119d3f14 241 * @param[in] nameOfFunctionUnderTest is the user-facing name of the function under test
whismanoid 0:93d4119d3f14 242 *
whismanoid 0:93d4119d3f14 243 * @param[in] functionUnderTest points to the function under test
whismanoid 0:93d4119d3f14 244 *
whismanoid 0:93d4119d3f14 245 * @param[in] value_u16 is a test argument given to the function under test
whismanoid 0:93d4119d3f14 246 *
whismanoid 0:93d4119d3f14 247 * @param[in] expect_result contains the expected result
whismanoid 0:93d4119d3f14 248 *
whismanoid 0:93d4119d3f14 249 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 250 *
whismanoid 0:93d4119d3f14 251 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 252 *
whismanoid 0:93d4119d3f14 253 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 254 *
whismanoid 0:93d4119d3f14 255 */
whismanoid 0:93d4119d3f14 256 bool MaximTinyTester::FunctionCall_Expect(const char *nameOfFunctionUnderTest,
whismanoid 0:93d4119d3f14 257 Callback<double(uint16_t)> functionUnderTest,
whismanoid 0:93d4119d3f14 258 uint16_t value_u16, double expect_result)
whismanoid 0:93d4119d3f14 259 {
whismanoid 0:93d4119d3f14 260 double actual_result = functionUnderTest(value_u16);
whismanoid 0:93d4119d3f14 261 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 262 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 263 {
whismanoid 0:93d4119d3f14 264 PASS();
whismanoid 0:93d4119d3f14 265 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, value_u16);
whismanoid 0:93d4119d3f14 266 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 0:93d4119d3f14 267 return true;
whismanoid 0:93d4119d3f14 268 }
whismanoid 0:93d4119d3f14 269 else
whismanoid 0:93d4119d3f14 270 {
whismanoid 0:93d4119d3f14 271 FAIL();
whismanoid 0:93d4119d3f14 272 associatedCmdLine.serial().printf("%s(%d)", nameOfFunctionUnderTest, value_u16);
whismanoid 0:93d4119d3f14 273 associatedCmdLine.serial().printf(" expect %6.6f", expect_result);
whismanoid 0:93d4119d3f14 274 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 275 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 276 return false;
whismanoid 0:93d4119d3f14 277 }
whismanoid 0:93d4119d3f14 278 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 279 }
whismanoid 0:93d4119d3f14 280
whismanoid 0:93d4119d3f14 281 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 282 *
whismanoid 0:93d4119d3f14 283 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 284 *
whismanoid 0:93d4119d3f14 285 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 286 *
whismanoid 0:93d4119d3f14 287 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 288 *
whismanoid 0:93d4119d3f14 289 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 290 *
whismanoid 0:93d4119d3f14 291 */
whismanoid 0:93d4119d3f14 292 bool MaximTinyTester::AnalogIn0_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 293 {
whismanoid 0:93d4119d3f14 294 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 2:9b20cadbfa15 295 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 296 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 297 {
whismanoid 2:9b20cadbfa15 298 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 299 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 300 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 301 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 302 }
whismanoid 0:93d4119d3f14 303
whismanoid 0:93d4119d3f14 304 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 305 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 306 float normValue_0_1 = analogInPin0.read();
whismanoid 0:93d4119d3f14 307 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 308 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 309 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 310 {
whismanoid 0:93d4119d3f14 311 PASS();
whismanoid 0:93d4119d3f14 312 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 313 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 314 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 315 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 316 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 317 );
whismanoid 0:93d4119d3f14 318 //
whismanoid 0:93d4119d3f14 319 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 320 return true;
whismanoid 0:93d4119d3f14 321 }
whismanoid 0:93d4119d3f14 322 else
whismanoid 0:93d4119d3f14 323 {
whismanoid 0:93d4119d3f14 324 FAIL();
whismanoid 0:93d4119d3f14 325 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 326 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 327 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 328 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 329 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 330 );
whismanoid 0:93d4119d3f14 331 //
whismanoid 0:93d4119d3f14 332 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 333 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 334 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 335 }
whismanoid 0:93d4119d3f14 336 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 337 return false;
whismanoid 0:93d4119d3f14 338 }
whismanoid 0:93d4119d3f14 339
whismanoid 0:93d4119d3f14 340 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 341 *
whismanoid 0:93d4119d3f14 342 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 343 *
whismanoid 0:93d4119d3f14 344 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 345 *
whismanoid 0:93d4119d3f14 346 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 347 *
whismanoid 0:93d4119d3f14 348 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 349 *
whismanoid 0:93d4119d3f14 350 */
whismanoid 0:93d4119d3f14 351 bool MaximTinyTester::AnalogIn1_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 352 {
whismanoid 0:93d4119d3f14 353 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[1];
whismanoid 2:9b20cadbfa15 354 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 355 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 356 {
whismanoid 2:9b20cadbfa15 357 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 358 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 359 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 360 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 361 }
whismanoid 0:93d4119d3f14 362
whismanoid 0:93d4119d3f14 363 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 364 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 365 float normValue_0_1 = analogInPin1.read();
whismanoid 0:93d4119d3f14 366 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 367 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 368 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 369 {
whismanoid 0:93d4119d3f14 370 PASS();
whismanoid 0:93d4119d3f14 371 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 372 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 373 associatedCmdLine.serial().printf("AIN1 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 374 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 375 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 376 );
whismanoid 0:93d4119d3f14 377 //
whismanoid 0:93d4119d3f14 378 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 379 return true;
whismanoid 0:93d4119d3f14 380 }
whismanoid 0:93d4119d3f14 381 else
whismanoid 0:93d4119d3f14 382 {
whismanoid 0:93d4119d3f14 383 FAIL();
whismanoid 0:93d4119d3f14 384 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 385 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 386 associatedCmdLine.serial().printf("AIN1 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 387 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 388 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 389 );
whismanoid 0:93d4119d3f14 390 //
whismanoid 0:93d4119d3f14 391 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 392 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 393 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 394 }
whismanoid 0:93d4119d3f14 395 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 396 return false;
whismanoid 0:93d4119d3f14 397 }
whismanoid 0:93d4119d3f14 398
whismanoid 0:93d4119d3f14 399 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 400 *
whismanoid 0:93d4119d3f14 401 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 402 *
whismanoid 0:93d4119d3f14 403 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 404 *
whismanoid 0:93d4119d3f14 405 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 406 *
whismanoid 0:93d4119d3f14 407 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 408 *
whismanoid 0:93d4119d3f14 409 */
whismanoid 0:93d4119d3f14 410 bool MaximTinyTester::AnalogIn2_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 411 {
whismanoid 0:93d4119d3f14 412 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[2];
whismanoid 2:9b20cadbfa15 413 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 414 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 415 {
whismanoid 2:9b20cadbfa15 416 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 417 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 418 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 419 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 420 }
whismanoid 0:93d4119d3f14 421
whismanoid 0:93d4119d3f14 422 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 423 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 424 float normValue_0_1 = analogInPin2.read();
whismanoid 0:93d4119d3f14 425 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 426 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 427 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 428 {
whismanoid 0:93d4119d3f14 429 PASS();
whismanoid 0:93d4119d3f14 430 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 431 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 432 associatedCmdLine.serial().printf("AIN2 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 433 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 434 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 435 );
whismanoid 0:93d4119d3f14 436 //
whismanoid 0:93d4119d3f14 437 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 438 return true;
whismanoid 0:93d4119d3f14 439 }
whismanoid 0:93d4119d3f14 440 else
whismanoid 0:93d4119d3f14 441 {
whismanoid 0:93d4119d3f14 442 FAIL();
whismanoid 0:93d4119d3f14 443 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 444 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 445 associatedCmdLine.serial().printf("AIN2 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 446 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 447 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 448 );
whismanoid 0:93d4119d3f14 449 //
whismanoid 0:93d4119d3f14 450 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 451 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 452 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 453 }
whismanoid 0:93d4119d3f14 454 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 455 return false;
whismanoid 0:93d4119d3f14 456 }
whismanoid 0:93d4119d3f14 457
whismanoid 0:93d4119d3f14 458 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 459 *
whismanoid 0:93d4119d3f14 460 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 461 *
whismanoid 0:93d4119d3f14 462 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 463 *
whismanoid 0:93d4119d3f14 464 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 465 *
whismanoid 0:93d4119d3f14 466 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 467 *
whismanoid 0:93d4119d3f14 468 */
whismanoid 0:93d4119d3f14 469 bool MaximTinyTester::AnalogIn3_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 470 {
whismanoid 0:93d4119d3f14 471 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[3];
whismanoid 2:9b20cadbfa15 472 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 473 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 474 {
whismanoid 2:9b20cadbfa15 475 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 476 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 477 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 478 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 479 }
whismanoid 0:93d4119d3f14 480
whismanoid 0:93d4119d3f14 481 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 482 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 483 float normValue_0_1 = analogInPin3.read();
whismanoid 0:93d4119d3f14 484 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 485 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 486 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 487 {
whismanoid 0:93d4119d3f14 488 PASS();
whismanoid 0:93d4119d3f14 489 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 490 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 491 associatedCmdLine.serial().printf("AIN3 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 492 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 493 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 494 );
whismanoid 0:93d4119d3f14 495 //
whismanoid 0:93d4119d3f14 496 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 497 return true;
whismanoid 0:93d4119d3f14 498 }
whismanoid 0:93d4119d3f14 499 else
whismanoid 0:93d4119d3f14 500 {
whismanoid 0:93d4119d3f14 501 FAIL();
whismanoid 0:93d4119d3f14 502 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 503 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 504 associatedCmdLine.serial().printf("AIN3 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 505 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 506 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 507 );
whismanoid 0:93d4119d3f14 508 //
whismanoid 0:93d4119d3f14 509 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 510 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 511 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 512 }
whismanoid 0:93d4119d3f14 513 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 514 return false;
whismanoid 0:93d4119d3f14 515 }
whismanoid 0:93d4119d3f14 516
whismanoid 0:93d4119d3f14 517 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 518 *
whismanoid 0:93d4119d3f14 519 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 520 *
whismanoid 0:93d4119d3f14 521 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 522 *
whismanoid 0:93d4119d3f14 523 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 524 *
whismanoid 0:93d4119d3f14 525 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 526 *
whismanoid 0:93d4119d3f14 527 */
whismanoid 0:93d4119d3f14 528 bool MaximTinyTester::AnalogIn4_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 529 {
whismanoid 0:93d4119d3f14 530 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[4];
whismanoid 2:9b20cadbfa15 531 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 532 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 533 {
whismanoid 2:9b20cadbfa15 534 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 535 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 536 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 537 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 538 }
whismanoid 0:93d4119d3f14 539
whismanoid 0:93d4119d3f14 540 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 541 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 542 float normValue_0_1 = analogInPin4.read();
whismanoid 0:93d4119d3f14 543 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 544 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 545 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 546 {
whismanoid 0:93d4119d3f14 547 PASS();
whismanoid 0:93d4119d3f14 548 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 549 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 550 associatedCmdLine.serial().printf("AIN4 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 551 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 552 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 553 );
whismanoid 0:93d4119d3f14 554 //
whismanoid 0:93d4119d3f14 555 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 556 return true;
whismanoid 0:93d4119d3f14 557 }
whismanoid 0:93d4119d3f14 558 else
whismanoid 0:93d4119d3f14 559 {
whismanoid 0:93d4119d3f14 560 FAIL();
whismanoid 0:93d4119d3f14 561 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 562 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 563 associatedCmdLine.serial().printf("AIN4 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 564 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 565 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 566 );
whismanoid 0:93d4119d3f14 567 //
whismanoid 0:93d4119d3f14 568 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 569 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 570 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 571 }
whismanoid 0:93d4119d3f14 572 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 573 return false;
whismanoid 0:93d4119d3f14 574 }
whismanoid 0:93d4119d3f14 575
whismanoid 0:93d4119d3f14 576 /** Test an analog voltage input to the platform (output from the device under test)
whismanoid 0:93d4119d3f14 577 *
whismanoid 0:93d4119d3f14 578 * @param[in] expect_result contains the expected voltage
whismanoid 0:93d4119d3f14 579 *
whismanoid 0:93d4119d3f14 580 * @pre err_threshold determines how closely the result must match the expected value
whismanoid 0:93d4119d3f14 581 *
whismanoid 0:93d4119d3f14 582 * @post nPass and nFail counters are updated
whismanoid 0:93d4119d3f14 583 *
whismanoid 0:93d4119d3f14 584 * @return true if success, false if test failed
whismanoid 0:93d4119d3f14 585 *
whismanoid 0:93d4119d3f14 586 */
whismanoid 0:93d4119d3f14 587 bool MaximTinyTester::AnalogIn5_Read_Expect_voltageV(double expect_result)
whismanoid 0:93d4119d3f14 588 {
whismanoid 0:93d4119d3f14 589 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[5];
whismanoid 2:9b20cadbfa15 590 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 591 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 592 {
whismanoid 2:9b20cadbfa15 593 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 594 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 595 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 596 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 597 }
whismanoid 0:93d4119d3f14 598
whismanoid 0:93d4119d3f14 599 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 600 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 601 float normValue_0_1 = analogInPin5.read();
whismanoid 0:93d4119d3f14 602 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 603 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 604 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 605 {
whismanoid 0:93d4119d3f14 606 PASS();
whismanoid 0:93d4119d3f14 607 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 608 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 609 associatedCmdLine.serial().printf("AIN5 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 610 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 611 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 612 );
whismanoid 0:93d4119d3f14 613 //
whismanoid 0:93d4119d3f14 614 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 615 return true;
whismanoid 0:93d4119d3f14 616 }
whismanoid 0:93d4119d3f14 617 else
whismanoid 0:93d4119d3f14 618 {
whismanoid 0:93d4119d3f14 619 FAIL();
whismanoid 0:93d4119d3f14 620 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 621 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 622 associatedCmdLine.serial().printf("AIN5 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 623 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 624 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 625 );
whismanoid 0:93d4119d3f14 626 //
whismanoid 0:93d4119d3f14 627 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 628 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 629 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 630 }
whismanoid 0:93d4119d3f14 631 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 632 return false;
whismanoid 0:93d4119d3f14 633 }
whismanoid 0:93d4119d3f14 634
whismanoid 0:93d4119d3f14 635 bool MaximTinyTester::AnalogIn_Read_Expect_voltageV(AnalogIn& analogInPin, double expect_result)
whismanoid 0:93d4119d3f14 636 {
whismanoid 0:93d4119d3f14 637 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[0];
whismanoid 2:9b20cadbfa15 638 // skip if expect_result exceeds ADC full scale
whismanoid 2:9b20cadbfa15 639 if (adc_full_scale_voltage < expect_result)
whismanoid 2:9b20cadbfa15 640 {
whismanoid 2:9b20cadbfa15 641 // print a warning message that we can't perform the measurement
whismanoid 2:9b20cadbfa15 642 associatedCmdLine.serial().printf("\r\n..... AIN full scale %1.3fV < expect %6.6f cannot perform measurement",
whismanoid 2:9b20cadbfa15 643 adc_full_scale_voltage, expect_result);
whismanoid 2:9b20cadbfa15 644 return true; // ignore, test conditions are invalid; do not call PASS() or FAIL()
whismanoid 2:9b20cadbfa15 645 }
whismanoid 0:93d4119d3f14 646
whismanoid 0:93d4119d3f14 647 // TODO: tinyTester.Analog_Input_Expect_V replaces SelfTest_AnalogInput_Expect_ch_V
whismanoid 0:93d4119d3f14 648 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 649 float normValue_0_1 = analogInPin.read();
whismanoid 0:93d4119d3f14 650 double actual_result = normValue_0_1 * adc_full_scale_voltage;
whismanoid 0:93d4119d3f14 651 double err_result = (actual_result - expect_result);
whismanoid 0:93d4119d3f14 652 if (( -err_threshold < err_result) && ( err_result < err_threshold))
whismanoid 0:93d4119d3f14 653 {
whismanoid 0:93d4119d3f14 654 PASS();
whismanoid 0:93d4119d3f14 655 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 656 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 657 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 658 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 659 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 660 );
whismanoid 0:93d4119d3f14 661 //
whismanoid 0:93d4119d3f14 662 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 663 return true;
whismanoid 0:93d4119d3f14 664 }
whismanoid 0:93d4119d3f14 665 else
whismanoid 0:93d4119d3f14 666 {
whismanoid 0:93d4119d3f14 667 FAIL();
whismanoid 0:93d4119d3f14 668 //~ SelfTest_print_VoltageOfCode(cmdLine, value_u12);
whismanoid 0:93d4119d3f14 669 // Platform board uses simple analog inputs
whismanoid 0:93d4119d3f14 670 associatedCmdLine.serial().printf("AIN0 = %7.3f%% = %1.3fV ",
whismanoid 0:93d4119d3f14 671 normValue_0_1 * 100.0,
whismanoid 0:93d4119d3f14 672 normValue_0_1 * adc_full_scale_voltage
whismanoid 0:93d4119d3f14 673 );
whismanoid 0:93d4119d3f14 674 //
whismanoid 0:93d4119d3f14 675 associatedCmdLine.serial().printf(" expect %6.6f +/- %6.6f", expect_result, err_threshold);
whismanoid 0:93d4119d3f14 676 associatedCmdLine.serial().printf(" but got %6.6f", actual_result);
whismanoid 0:93d4119d3f14 677 associatedCmdLine.serial().printf(" err=%6.6f", err_result);
whismanoid 0:93d4119d3f14 678 }
whismanoid 0:93d4119d3f14 679 //~ associatedCmdLine.serial().printf("\r\n");
whismanoid 0:93d4119d3f14 680 return false;
whismanoid 0:93d4119d3f14 681 }
whismanoid 0:93d4119d3f14 682
whismanoid 0:93d4119d3f14 683 bool MaximTinyTester::DigitalIn_Read_Expect_WarnOnly(DigitalIn& digitalInPin, const char* pinName, int expect_result, const char *expect_description)
whismanoid 0:93d4119d3f14 684 {
whismanoid 0:93d4119d3f14 685 int actual_UPO_value = -1;
whismanoid 0:93d4119d3f14 686 for (int retry_count = 0; retry_count < 10; retry_count++) {
whismanoid 0:93d4119d3f14 687 actual_UPO_value = digitalInPin.read(); // g_MAX5171_device.UPOinputValue();
whismanoid 0:93d4119d3f14 688 if (actual_UPO_value == expect_result) {
whismanoid 0:93d4119d3f14 689 PASS();
whismanoid 0:93d4119d3f14 690 associatedCmdLine.serial().printf("%s signal=%d %s", pinName, expect_result, expect_description);
whismanoid 0:93d4119d3f14 691 return true;
whismanoid 0:93d4119d3f14 692 }
whismanoid 0:93d4119d3f14 693 // UPO condition not met, retry for a while until give up
whismanoid 0:93d4119d3f14 694 wait_ms(input_timeout_time_msec / 10); // delay
whismanoid 0:93d4119d3f14 695 }
whismanoid 0:93d4119d3f14 696 associatedCmdLine.serial().printf("\r\n!WARN "); // SelfTest_FAIL(cmdLine);
whismanoid 0:93d4119d3f14 697 associatedCmdLine.serial().printf("expected %s signal=%d %s", pinName, expect_result, expect_description);
whismanoid 0:93d4119d3f14 698 associatedCmdLine.serial().printf(", but got actual %s=%d", pinName, actual_UPO_value);
whismanoid 0:93d4119d3f14 699 associatedCmdLine.serial().printf(", missing %s connections?", pinName);
whismanoid 0:93d4119d3f14 700 return false;
whismanoid 0:93d4119d3f14 701 }
whismanoid 0:93d4119d3f14 702
whismanoid 0:93d4119d3f14 703 void MaximTinyTester::Wait_Output_Settling()
whismanoid 0:93d4119d3f14 704 {
whismanoid 0:93d4119d3f14 705 wait_ms(settle_time_msec); // delay
whismanoid 0:93d4119d3f14 706 }
whismanoid 0:93d4119d3f14 707
whismanoid 0:93d4119d3f14 708
whismanoid 0:93d4119d3f14 709 // End of file