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.h
whismanoid 0:93d4119d3f14 35 // *********************************************************************
whismanoid 0:93d4119d3f14 36
whismanoid 0:93d4119d3f14 37 // Prevent multiple declaration
whismanoid 0:93d4119d3f14 38 #ifndef __MaximTinyTester_H__
whismanoid 0:93d4119d3f14 39 #define __MaximTinyTester_H__
whismanoid 0:93d4119d3f14 40
whismanoid 0:93d4119d3f14 41 #include "mbed.h"
whismanoid 0:93d4119d3f14 42 #include "CmdLine.h" // https://whismanoid@os.mbed.com/users/whismanoid/code/CmdLine/
whismanoid 0:93d4119d3f14 43
whismanoid 0:93d4119d3f14 44 /**
whismanoid 0:93d4119d3f14 45 * @brief MaximTinyTester class supports software and hardware testing
whismanoid 0:93d4119d3f14 46 *
whismanoid 0:93d4119d3f14 47 */
whismanoid 0:93d4119d3f14 48 class MaximTinyTester
whismanoid 0:93d4119d3f14 49 {
whismanoid 0:93d4119d3f14 50 protected:
whismanoid 0:93d4119d3f14 51 CmdLine& associatedCmdLine;
whismanoid 0:93d4119d3f14 52
whismanoid 0:93d4119d3f14 53 public:
whismanoid 3:080aa1bb1bc0 54 /** Constructor for MaximTinyTester class.
whismanoid 3:080aa1bb1bc0 55 *
whismanoid 3:080aa1bb1bc0 56 * @param[in] AssociatedCmdLine = reference to serial CmdLine
whismanoid 3:080aa1bb1bc0 57 * @param[in] analogInPin0 = port for analog input measurement
whismanoid 3:080aa1bb1bc0 58 * @param[in] analogInPin1 = port for analog input measurement
whismanoid 3:080aa1bb1bc0 59 * @param[in] analogInPin2 = port for analog input measurement
whismanoid 3:080aa1bb1bc0 60 * @param[in] analogInPin3 = port for analog input measurement
whismanoid 3:080aa1bb1bc0 61 * @param[in] analogInPin4 = port for analog input measurement
whismanoid 3:080aa1bb1bc0 62 * @param[in] analogInPin5 = port for analog input measurement
whismanoid 3:080aa1bb1bc0 63 * @param[in] m_RFailLED = port for red LED; use NC if not connected
whismanoid 3:080aa1bb1bc0 64 * @param[in] m_GPassLED = port for green LED; use NC if not connected
whismanoid 3:080aa1bb1bc0 65 * @param[in] m_BBusyLED = port for blue LED; use NC if not connected
whismanoid 3:080aa1bb1bc0 66 *
whismanoid 3:080aa1bb1bc0 67 */
whismanoid 0:93d4119d3f14 68 MaximTinyTester(CmdLine& AssociatedCmdLine,
whismanoid 0:93d4119d3f14 69 AnalogIn& analogInPin0,
whismanoid 0:93d4119d3f14 70 AnalogIn& analogInPin1,
whismanoid 0:93d4119d3f14 71 AnalogIn& analogInPin2,
whismanoid 0:93d4119d3f14 72 AnalogIn& analogInPin3,
whismanoid 0:93d4119d3f14 73 AnalogIn& analogInPin4,
whismanoid 1:f98ddb04f9e0 74 AnalogIn& analogInPin5,
whismanoid 1:f98ddb04f9e0 75 DigitalOut& m_RFailLED,
whismanoid 1:f98ddb04f9e0 76 DigitalOut& m_GPassLED,
whismanoid 1:f98ddb04f9e0 77 DigitalOut& m_BBusyLED);
whismanoid 0:93d4119d3f14 78
whismanoid 0:93d4119d3f14 79 AnalogIn& analogInPin0;
whismanoid 0:93d4119d3f14 80 AnalogIn& analogInPin1;
whismanoid 0:93d4119d3f14 81 AnalogIn& analogInPin2;
whismanoid 0:93d4119d3f14 82 AnalogIn& analogInPin3;
whismanoid 0:93d4119d3f14 83 AnalogIn& analogInPin4;
whismanoid 0:93d4119d3f14 84 AnalogIn& analogInPin5;
whismanoid 0:93d4119d3f14 85 float analogInPin_fullScaleVoltage[6];
whismanoid 0:93d4119d3f14 86
whismanoid 1:f98ddb04f9e0 87 // MaximTinyTester add LED indicators m_RFailLED, m_GPassLED, m_BBusyLED
whismanoid 1:f98ddb04f9e0 88 DigitalOut& m_RFailLED;
whismanoid 1:f98ddb04f9e0 89 DigitalOut& m_GPassLED;
whismanoid 1:f98ddb04f9e0 90 DigitalOut& m_BBusyLED;
whismanoid 1:f98ddb04f9e0 91 int blink_time_msec;
whismanoid 1:f98ddb04f9e0 92
whismanoid 0:93d4119d3f14 93 /** err_threshold determines how closely a float or double result must match the expected value
whismanoid 0:93d4119d3f14 94 */
whismanoid 0:93d4119d3f14 95 double err_threshold;
whismanoid 0:93d4119d3f14 96
whismanoid 0:93d4119d3f14 97 void clear();
whismanoid 0:93d4119d3f14 98
whismanoid 0:93d4119d3f14 99 /** serial returns reference to the associated serial port */
whismanoid 0:93d4119d3f14 100 CmdLine& cmdLine(void) const {
whismanoid 0:93d4119d3f14 101 return associatedCmdLine;
whismanoid 0:93d4119d3f14 102 };
whismanoid 0:93d4119d3f14 103
whismanoid 0:93d4119d3f14 104 int nPass;
whismanoid 0:93d4119d3f14 105 int nFail;
whismanoid 0:93d4119d3f14 106
whismanoid 0:93d4119d3f14 107 void PASS();
whismanoid 0:93d4119d3f14 108
whismanoid 0:93d4119d3f14 109 void FAIL();
whismanoid 0:93d4119d3f14 110
whismanoid 0:93d4119d3f14 111 void Report_Summary(void);
whismanoid 0:93d4119d3f14 112
whismanoid 0:93d4119d3f14 113 bool FunctionCall_Expect(const char *nameOfFunctionUnderTest,
whismanoid 0:93d4119d3f14 114 Callback<uint16_t(double)> functionUnderTest,
whismanoid 0:93d4119d3f14 115 double voltageV, uint16_t expect_result);
whismanoid 0:93d4119d3f14 116
whismanoid 0:93d4119d3f14 117 bool FunctionCall_Expect(const char *nameOfFunctionUnderTest,
whismanoid 0:93d4119d3f14 118 Callback<double(uint16_t)> functionUnderTest,
whismanoid 0:93d4119d3f14 119 uint16_t value_u16, double expect_result);
whismanoid 0:93d4119d3f14 120
whismanoid 0:93d4119d3f14 121 int input_timeout_time_msec;
whismanoid 0:93d4119d3f14 122
whismanoid 0:93d4119d3f14 123 bool AnalogIn0_Read_Expect_voltageV(double expect_result);
whismanoid 0:93d4119d3f14 124 bool AnalogIn1_Read_Expect_voltageV(double expect_result);
whismanoid 0:93d4119d3f14 125 bool AnalogIn2_Read_Expect_voltageV(double expect_result);
whismanoid 0:93d4119d3f14 126 bool AnalogIn3_Read_Expect_voltageV(double expect_result);
whismanoid 0:93d4119d3f14 127 bool AnalogIn4_Read_Expect_voltageV(double expect_result);
whismanoid 0:93d4119d3f14 128 bool AnalogIn5_Read_Expect_voltageV(double expect_result);
whismanoid 0:93d4119d3f14 129
whismanoid 0:93d4119d3f14 130 bool AnalogIn_Read_Expect_voltageV(AnalogIn& analogInPin, double expect_result);
whismanoid 0:93d4119d3f14 131
whismanoid 0:93d4119d3f14 132 bool DigitalIn_Read_Expect_WarnOnly(DigitalIn& digitalInPin, const char* pinName, int expect_result, const char *expect_description);
whismanoid 0:93d4119d3f14 133
whismanoid 0:93d4119d3f14 134 int settle_time_msec;
whismanoid 0:93d4119d3f14 135
whismanoid 0:93d4119d3f14 136 void Wait_Output_Settling();
whismanoid 0:93d4119d3f14 137
whismanoid 0:93d4119d3f14 138 };
whismanoid 0:93d4119d3f14 139
whismanoid 0:93d4119d3f14 140 #endif // __MaximTinyTester_H__
whismanoid 0:93d4119d3f14 141
whismanoid 0:93d4119d3f14 142 // End of file