Daiki Kato / mbed-os-lychee

Dependents:   mbed-os-example-blinky-gr-lychee GR-Boads_Camera_sample GR-Boards_Audio_Recoder GR-Boads_Camera_DisplayApp ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers tests.py Source File

tests.py

00001 """
00002 mbed SDK
00003 Copyright (c) 2011-2013 ARM Limited
00004 
00005 Licensed under the Apache License, Version 2.0 (the "License");
00006 you may not use this file except in compliance with the License.
00007 You may obtain a copy of the License at
00008 
00009     http://www.apache.org/licenses/LICENSE-2.0
00010 
00011 Unless required by applicable law or agreed to in writing, software
00012 distributed under the License is distributed on an "AS IS" BASIS,
00013 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014 See the License for the specific language governing permissions and
00015 limitations under the License.
00016 """
00017 from tools.paths import *
00018 from tools.data.support import *
00019 from argparse import ArgumentTypeError
00020 from utils import columnate
00021 
00022 try:
00023     import tools.private_settings as ps
00024 except:
00025     ps = object()
00026 
00027 TEST_CMSIS_LIB = join(TEST_DIR, "cmsis", "lib")
00028 TEST_MBED_LIB = join(TEST_DIR, "mbed", "env")
00029 
00030 PERIPHERALS = join(TEST_DIR, "peripherals")
00031 BENCHMARKS_DIR = join(TEST_DIR, "benchmarks")
00032 
00033 SD = join(TEST_DIR, "sd")
00034 TMP102 = join(PERIPHERALS, 'TMP102')
00035 AT30TSE75X = join(PERIPHERALS, 'AT30TSE75X')
00036 
00037 """
00038 Wiring:
00039   * Ground:
00040     * LPC1*: p1
00041     * KL25Z: GND
00042 
00043   * Vout
00044     * LPC1*: p40
00045     * KL25Z: P3V3
00046 
00047   * TMP102 (I2C):
00048       * LPC1*: (SDA=p28 , SCL=p27)
00049       * KL25Z: (SDA=PTC9, SCL=PTC8)
00050       * MAXWSNENV: (SDA=TP6, SCL=TP5)
00051 
00052   * digital_loop (Digital(In|Out|InOut), InterruptIn):
00053       * Arduino headers: (D0 <-> D7)
00054       * NUCLEO_*: (D2 <-> D9)
00055       * LPC1549: (D2 <-> D7)
00056       * LPC1*: (p5   <-> p25 )
00057       * KL25Z: (PTA5<-> PTC6)
00058       * MAXWSNENV: (TP3 <-> TP4)
00059       * MAX32600MBED: (P1_0 <-> P4_7)
00060       * VK_RZ_A1H: (P3_2 <-> P5_6)
00061 
00062   * port_loop (Port(In|Out|InOut)):
00063       * Arduino headers: (D0 <-> D7), (D1 <-> D6)
00064       * LPC1*: (p5   <-> p25), (p6   <-> p26)
00065       * KL25Z: (PTA5 <-> PTC6), (PTA4 <-> PTC5)
00066       * NUCLEO_F103RB: (PC_6 <-> PB_8), (PC_5 <-> PB_9)
00067       * MAXWSNENV: (TP1 <-> TP3), (TP2 <-> TP4)
00068       * MAX32600MBED: (P1_0 <-> P4_7), (P1_1 <-> P4_6)
00069       * VK_RZ_A1H: (P3_2 <-> P5_6), (P3_7 <-> P5_1)
00070 
00071   * analog_loop (AnalogIn, AnalogOut):
00072       * Arduino headers: (A0 <-> A5)
00073       * NUCLEO64: (A0 <-> A2)
00074       * NUCLEO144: (A0 <-> D13)
00075       * LPC1549: (A0 <-> D12)
00076       * LPC1*: (p17   <-> p18 )
00077       * KL25Z: (PTE30 <-> PTC2)
00078 
00079   * analog_pot (AnalogIn):
00080       * Arduino headers: (A0, A1)
00081       * VK_RZ_A1H: (AN0, AN1)
00082 
00083   * SD (SPI):
00084       * LPC1*: (mosi=p11 , miso=p12 , sclk=p13 , cs=p14 )
00085       * KL25Z: (mosi=PTD2, miso=PTD3, sclk=PTD1, cs=PTD0)
00086 
00087   * MMA7660 (I2C):
00088       * LPC1*: (SDA=p28 , SCL=p27)
00089 
00090   * i2c_loop:
00091       * LPC1768: (p28 <-> p9), (p27 <-> p10)
00092       * NUCLEO64: (D14 <-> D3), (D15 <-> D6)
00093       * NUCLEO144: (D14 <-> PB_11), (D15 <-> PB_10)
00094 
00095   * i2c_eeprom:
00096       * LPC1*: (SDA=p28 , SCL=p27)
00097       * KL25Z: (SDA=PTE0, SCL=PTE1)
00098       * VK_RZ_A1H:(SDA=P1_1, SCL=P1_0)
00099 
00100   * can_transceiver:
00101      * LPC1768: (RX=p9,   TX=p10)
00102      * LPC1549: (RX=D9,   TX=D8)
00103      * LPC4088: (RX=p9,   TX=p10)
00104      * VK_RZ_A1H:(RX=P5_9, TX=P5_10)
00105      * NUCLEO_F091RC: (RX=PA_11, TX=PA_12)
00106      * NUCLEO_F072RB: (RX=PA_11, TX=PA_12)
00107      * NUCLEO_F042K6: (RX=PA_11, TX=PA_12)
00108      * NUCLEO_F334R8: (RX=PA_11, TX=PA_12)
00109      * NUCLEO_F303RE: (RX=PA_11, TX=PA_12)
00110      * NUCLEO_F303K8: (RX=PA_11, TX=PA_12)
00111      * NUCLEO_F302R8: (RX=PA_11, TX=PA_12)
00112      * NUCLEO_F446RE: (RX=PA_11, TX=PA_12)
00113      * NUCLEO_F446ZE: (RX=PA_11, TX=PA_12)
00114      * DISCO_F469NI:  (RX=PB_8, TX=PB_9)
00115      * DISCO_F4269ZI: (RX=PA_11, TX=PA_12)
00116      * NUCLEO_F103RB: (RX=PA_11, TX=PA_12)
00117      * NUCLEO_F746ZG: (RX=PA_11, TX=PA_12)
00118      * DISCO_F746NG:  (RX=PB_8, TX=PB_9)
00119      * DISCO_L476VG:  (RX=PA_11, TX=PA_12)
00120      * NUCLEO_L476RG: (RX=PA_11, TX=PA_12)
00121      * NUCLEO_L432KC: (RX=PA_11, TX=PA_12)
00122      * DISCO_F303VC:  (RX=PA_11, TX=PA_12)
00123      * NUCLEO_F412ZG: (RX=PA_11, TX=PA_12)
00124 
00125 """
00126 TESTS = [
00127     # Automated MBED tests
00128     {
00129         "id": "MBED_A1", "description": "Basic",
00130         "source_dir": join(TEST_DIR, "mbed", "basic"),
00131         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00132         "automated": True,
00133     },
00134     {
00135         "id": "MBED_A2", "description": "Semihost file system",
00136         "source_dir": join(TEST_DIR, "mbed", "file"),
00137         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00138         "automated": True,
00139         "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
00140     },
00141     {
00142         "id": "MBED_A3", "description": "C++ STL",
00143         "source_dir": join(TEST_DIR, "mbed", "stl"),
00144         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00145         "automated": False,
00146     },
00147     {
00148         "id": "MBED_A4", "description": "I2C TMP102",
00149         "source_dir": join(TEST_DIR, "mbed", "i2c_TMP102"),
00150         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, TMP102],
00151         "automated": True,
00152         "peripherals": ["TMP102"]
00153     },
00154     {
00155         "id": "MBED_AT30TSE75X", "description": "I2C Temperature Sensor / EEPROM",
00156         "source_dir": join(TEST_DIR, "mbed", "i2c_at30tse75x"),
00157         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, AT30TSE75X],
00158         "automated": False,
00159         "peripherals": ["AT30TSE75X"]
00160     },
00161     {
00162         "id": "MBED_A5", "description": "DigitalIn DigitalOut",
00163         "source_dir": join(TEST_DIR, "mbed", "digitalin_digitalout"),
00164         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00165         "automated": True,
00166         "peripherals": ["digital_loop"]
00167     },
00168     {
00169         "id": "MBED_A6", "description": "DigitalInOut",
00170         "source_dir": join(TEST_DIR, "mbed", "digitalinout"),
00171         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00172         "automated": True,
00173         "peripherals": ["digital_loop"]
00174     },
00175     {
00176         "id": "MBED_A7", "description": "InterruptIn",
00177         "source_dir": join(TEST_DIR, "mbed", "interruptin"),
00178         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00179         "automated": True,
00180         "peripherals": ["digital_loop"]
00181     },
00182     {
00183         "id": "MBED_A8", "description": "Analog",
00184         "source_dir": join(TEST_DIR, "mbed", "analog"),
00185         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00186         "automated": True,
00187         "peripherals": ["analog_loop"],
00188         "mcu": ["LPC1768", "LPC2368", "LPC2460", "KL25Z", "K64F", "K66F", "K22F", "LPC4088", "LPC1549",
00189                 "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_F302R8", "NUCLEO_F303K8", "NUCLEO_F303RE", "NUCLEO_F207ZG",
00190                 "NUCLEO_F334R8", "NUCLEO_F303ZE", "NUCLEO_L053R8", "NUCLEO_L073RZ", "NUCLEO_L152RE",
00191                 "NUCLEO_F410RB", "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F429ZI",
00192                 "DISCO_F407VG", "NUCLEO_F746ZG", "NUCLEO_L476RG",
00193                 "DISCO_L053C8", "DISCO_F334C8", "DISCO_L476VG", "DISCO_F469NI", "DISCO_F429ZI", "DISCO_F769NI",
00194                 "ARCH_MAX", "MAX32600MBED", "MOTE_L152RC", "B96B_F446VE"]
00195     },
00196     {
00197         "id": "MBED_A9", "description": "Serial Echo at 115200",
00198         "source_dir": join(TEST_DIR, "mbed", "echo"),
00199         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00200         "automated": True,
00201         #"host_test": "echo"
00202     },
00203     {
00204         "id": "MBED_A10", "description": "PortOut PortIn",
00205         "source_dir": join(TEST_DIR, "mbed", "portout_portin"),
00206         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00207         "peripherals": ["port_loop"],
00208         "supported": DEFAULT_SUPPORT,
00209         "automated": True,
00210     },
00211     {
00212         "id": "MBED_A11", "description": "PortInOut",
00213         "source_dir": join(TEST_DIR, "mbed", "portinout"),
00214         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00215         "peripherals": ["port_loop"],
00216         "supported": DEFAULT_SUPPORT,
00217         "automated": True,
00218     },
00219     {
00220         "id": "MBED_A13", "description": "I2C MMA7660 accelerometer",
00221         "source_dir": join(TEST_DIR, "mbed", "i2c_MMA7660"),
00222         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'MMA7660')],
00223         "automated": True,
00224         "peripherals": ["MMA7660"]
00225     },
00226     {
00227         "id": "MBED_A14", "description": "I2C Master",
00228         "source_dir": join(TEST_DIR, "mbed", "i2c_master"),
00229         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00230     },
00231     {
00232         "id": "MBED_A15", "description": "I2C Slave",
00233         "source_dir": join(TEST_DIR, "mbed", "i2c_slave"),
00234         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00235     },
00236     {
00237         "id": "MBED_A16", "description": "SPI Master",
00238         "source_dir": join(TEST_DIR, "mbed", "spi_master"),
00239         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00240     },
00241     {
00242         "id": "MBED_A17", "description": "SPI Slave",
00243         "source_dir": join(TEST_DIR, "mbed", "spi_slave"),
00244         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00245     },
00246     {
00247         "id": "MBED_A18", "description": "Interrupt vector relocation",
00248         "source_dir": join(TEST_DIR, "mbed", "vtor_reloc"),
00249         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00250         "mcu": ["LPC1768"],
00251         "automated": True,
00252     },
00253     {
00254         "id": "MBED_A19", "description": "I2C EEPROM read/write test",
00255         "source_dir": join(TEST_DIR, "mbed", "i2c_eeprom"),
00256         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00257         "peripherals": ["24LC256"],
00258         "automated": True,
00259     },
00260     {
00261         "id": "MBED_A20", "description": "I2C master/slave test",
00262         "source_dir": join(TEST_DIR, "mbed", "i2c_master_slave"),
00263         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB,],
00264         "automated": True,
00265         "peripherals": ["i2c_loop"]
00266     },
00267     {
00268         "id": "MBED_A21", "description": "Call function before main (mbed_main)",
00269         "source_dir": join(TEST_DIR, "mbed", "call_before_main"),
00270         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00271         "automated": True,
00272     },
00273     {
00274         "id": "MBED_A22", "description": "SPIFI for LPC4088 (test 1)",
00275         "source_dir": join(TEST_DIR, "mbed", "spifi1"),
00276         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00277         "automated": True,
00278         "mcu": ["LPC4088","LPC4088_DM"]
00279     },
00280     {
00281         "id": "MBED_A23", "description": "SPIFI for LPC4088 (test 2)",
00282         "source_dir": join(TEST_DIR, "mbed", "spifi2"),
00283         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00284         "automated": True,
00285         "mcu": ["LPC4088","LPC4088_DM"]
00286     },
00287     {
00288         "id": "MBED_A24", "description": "Serial echo with RTS/CTS flow control",
00289         "source_dir": join(TEST_DIR, "mbed", "echo_flow_control"),
00290         "dependencies": [MBED_LIBRARIES],
00291         "automated": "True",
00292         "host_test": "echo_flow_control",
00293         "mcu": ["LPC1768"],
00294         "peripherals": ["extra_serial"]
00295     },
00296     {
00297         "id": "MBED_A25", "description": "I2C EEPROM line read/write test",
00298         "source_dir": join(TEST_DIR, "mbed", "i2c_eeprom_line"),
00299         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00300         "peripherals": ["24LC256"],
00301         "automated": True,
00302     },
00303     {
00304         "id": "MBED_A26", "description": "AnalogIn potentiometer test",
00305         "source_dir": join(TEST_DIR, "mbed", "analog_pot"),
00306         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00307         "peripherals": ["analog_pot"],
00308         "automated": True,
00309     },
00310     {
00311         "id": "MBED_A27", "description": "CAN loopback test",
00312         "source_dir": join(TEST_DIR, "mbed", "can_loopback"),
00313         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00314         "automated": True,
00315         "peripherals": ["can_transceiver"],
00316         "mcu": ["LPC1549", "LPC1768","B96B_F446VE", "VK_RZ_A1H",
00317                 "NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F207ZG",
00318         "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE","NUCLEO_F446ZE",
00319         "DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG",
00320         "DISCO_F746NG", "DISCO_L476VG", "NUCLEO_L476RG", "NUCLEO_L432KC",
00321         "DISCO_F769NI", "NUCLEO_F767ZI", "DISCO_F303VC", "NUCLEO_F412ZG"]
00322     },
00323     {
00324         "id": "MBED_A28", "description": "CAN loopback test",
00325         "source_dir": join(TEST_DIR, "mbed", "can_loopback"),
00326         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00327         "automated": True,
00328         "mcu": ["B96B_F446VE",
00329                 "NUCLEO_F091RC", "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F207ZG",
00330         "NUCLEO_F303RE", "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F446RE","NUCLEO_F446ZE",
00331         "DISCO_F469NI", "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG",
00332         "DISCO_F746NG", "DISCO_L476VG", "NUCLEO_L476RG", "NUCLEO_L432KC",
00333         "DISCO_F769NI", "NUCLEO_F767ZI", "DISCO_F303VC", "NUCLEO_F412ZG"]
00334     },
00335     {
00336         "id": "MBED_A29", "description": "i2c_master_slave_asynch",
00337         "source_dir": join(TEST_DIR, "mbed", "i2c_master_slave_asynch"),
00338         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00339         "automated": True,
00340         "peripherals": ["i2c_loop"]
00341     },
00342     {
00343         "id": "MBED_BLINKY", "description": "Blinky",
00344         "source_dir": join(TEST_DIR, "mbed", "blinky"),
00345         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00346         "automated": False,
00347     },
00348     {
00349         "id": "MBED_BUS", "description": "Blinky BUS",
00350         "source_dir": join(TEST_DIR, "mbed", "bus"),
00351         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00352         "automated": False,
00353     },
00354 
00355     {
00356         "id": "MBED_BUSOUT", "description": "BusOut",
00357         "source_dir": join(TEST_DIR, "mbed", "bus_out"),
00358         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00359         "exclude_mcu": ["NUCLEO_L011K4"],
00360         "automated": True,
00361     },
00362 
00363     # Size benchmarks
00364     {
00365         "id": "BENCHMARK_1", "description": "Size (c environment)",
00366         "source_dir": join(BENCHMARKS_DIR, "cenv"),
00367         "dependencies": [MBED_LIBRARIES]
00368     },
00369     {
00370         "id": "BENCHMARK_2", "description": "Size (float math)",
00371         "source_dir": join(BENCHMARKS_DIR, "float_math"),
00372         "dependencies": [MBED_LIBRARIES]
00373     },
00374     {
00375         "id": "BENCHMARK_3", "description": "Size (printf)",
00376         "source_dir": join(BENCHMARKS_DIR, "printf"),
00377         "dependencies": [MBED_LIBRARIES]
00378     },
00379     {
00380         "id": "BENCHMARK_4", "description": "Size (mbed libs)",
00381         "source_dir": join(BENCHMARKS_DIR, "mbed"),
00382         "dependencies": [MBED_LIBRARIES]
00383     },
00384     {
00385         "id": "BENCHMARK_5", "description": "Size (all)",
00386         "source_dir": join(BENCHMARKS_DIR, "all"),
00387         "dependencies": [MBED_LIBRARIES]
00388     },
00389 
00390 
00391     # Not automated MBED tests
00392     {
00393         "id": "MBED_1", "description": "I2C SRF08",
00394         "source_dir": join(TEST_DIR, "mbed", "i2c_SRF08"),
00395         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'SRF08')],
00396         "peripherals": ["SRF08"]
00397     },
00398     {
00399         "id": "MBED_2", "description": "stdio",
00400         "source_dir": join(TEST_DIR, "mbed", "stdio"),
00401         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00402         "automated": True,
00403         #"host_test": "stdio_auto"
00404     },
00405     {
00406         "id": "MBED_3", "description": "PortOut",
00407         "source_dir": join(TEST_DIR, "mbed", "portout"),
00408         "dependencies": [MBED_LIBRARIES],
00409     },
00410     {
00411         "id": "MBED_4", "description": "Sleep",
00412         "source_dir": join(TEST_DIR, "mbed", "sleep"),
00413         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00414         "mcu": ["LPC1768", "LPC11U24", "LPC4088","LPC4088_DM","NRF51822", "LPC11U68"]
00415     },
00416     {
00417         "id": "MBED_5", "description": "PWM",
00418         "source_dir": join(TEST_DIR, "mbed", "pwm"),
00419         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB]
00420     },
00421     {
00422         "id": "MBED_6", "description": "SW Reset",
00423         "source_dir": join(TEST_DIR, "mbed", "reset"),
00424         "dependencies": [MBED_LIBRARIES],
00425     },
00426     {
00427         "id": "MBED_7", "description": "stdio  benchmark",
00428         "source_dir": join(TEST_DIR, "mbed", "stdio_benchmark"),
00429         "dependencies": [MBED_LIBRARIES],
00430     },
00431     {
00432         "id": "MBED_8", "description": "SPI",
00433         "source_dir": join(TEST_DIR, "mbed", "spi"),
00434         "dependencies": [MBED_LIBRARIES],
00435     },
00436     {
00437         "id": "MBED_9", "description": "Sleep Timeout",
00438         "source_dir": join(TEST_DIR, "mbed", "sleep_timeout"),
00439         "dependencies": [MBED_LIBRARIES],
00440     },
00441     {
00442         "id": "MBED_10", "description": "Hello World",
00443         "source_dir": join(TEST_DIR, "mbed", "hello"),
00444         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00445         "automated": True,
00446         #"host_test": "hello_auto",
00447     },
00448     {
00449         "id": "MBED_11", "description": "Ticker Int",
00450         "source_dir": join(TEST_DIR, "mbed", "ticker"),
00451         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00452         "automated": True,
00453         #"host_test": "wait_us_auto",
00454     },
00455     {
00456         "id": "MBED_12", "description": "C++",
00457         "source_dir": join(TEST_DIR, "mbed", "cpp"),
00458         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00459         "automated": True
00460     },
00461     {
00462         "id": "MBED_13", "description": "Heap & Stack",
00463         "source_dir": join(TEST_DIR, "mbed", "heap_and_stack"),
00464         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00465     },
00466     {
00467         "id": "MBED_14", "description": "Serial Interrupt",
00468         "source_dir": join(TEST_DIR, "mbed", "serial_interrupt"),
00469         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00470     },
00471     {
00472         "id": "MBED_15", "description": "RPC",
00473         "source_dir": join(TEST_DIR, "mbed", "rpc"),
00474         "dependencies": [MBED_LIBRARIES, join(LIB_DIR, "rpc"), TEST_MBED_LIB],
00475         "automated": False,
00476         "mcu": ["LPC1768"]
00477     },
00478     {
00479         "id": "MBED_16", "description": "RTC",
00480         "source_dir": join(TEST_DIR, "mbed", "rtc"),
00481         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00482         "automated": True,
00483         "exclude_mcu": ["NRF51822", "NRF51822_BOOT", "NRF51822_OTA", "NRF51822_Y5_MBUG",
00484                         "NRF51_DK", "NRF51_DK_BOOT", "NRF51_DK_OTA",
00485                         "NRF51_MICROBIT", "NRF51_MICROBIT_B", "NRF51_MICROBIT_BOOT",
00486                         "NRF51_MICROBIT_B_BOOT", "NRF51_MICROBIT_B_OTA", "NRF51_MICROBIT_OTA",
00487                         "HRM1017", "HRM1017_BOOT", "HRM1701_OTA",
00488                         "NUCLEO_L011K4",
00489                         "TY51822R3", "TY51822R3_BOOT", "TY51822R3_OTA",
00490                         "NRF15_DONGLE", "NRF15_DONGLE_BOOT", "NRF15_DONGLE_OTA",
00491                         "ARCH_BLE", "ARCH_BLE_BOOT", "ARCH_BLE_OTA",
00492                         "ARCH_LINK", "ARCH_LINK_BOOT", "ARCH_LINK_OTA",
00493                         "RBLAB_BLENANO", "RBLAB_BLENANO_BOOT", "RBLAB_BLENANO_OTA",
00494                         "RBLAB_NRF51822", "RBLAB_NRF51822_BOOT", "RBLAB_NRF51822_OTA",
00495                         "SEEED_TINY_BLE", "SEEED_TINY_BLE_BOOT", "SEEED_TINY_BLE_OTA",
00496                         "WALLBOT_BLE", "WALLBOT_BLE_BOOT", "WALLBOT_BLE_OTA",
00497                         "DELTA_DFCM_NNN40", "DELTA_DFCM_NNN40_BOOT", "DELTA_DFCM_NNN40_OTA",
00498                         "LPC1114"],
00499         #"host_test": "rtc_auto",
00500     },
00501     {
00502         "id": "MBED_17", "description": "Serial Interrupt 2",
00503         "source_dir": join(TEST_DIR, "mbed", "serial_interrupt_2"),
00504         "dependencies": [MBED_LIBRARIES],
00505     },
00506     {
00507         "id": "MBED_18", "description": "Local FS Directory",
00508         "source_dir": join(TEST_DIR, "mbed", "dir"),
00509         "dependencies": [MBED_LIBRARIES],
00510     },
00511     {
00512         "id": "MBED_20", "description": "InterruptIn 2",
00513         "source_dir": join(TEST_DIR, "mbed", "interruptin_2"),
00514         "dependencies": [MBED_LIBRARIES],
00515     },
00516     {
00517         "id": "MBED_21", "description": "freopen Stream",
00518         "source_dir": join(TEST_DIR, "mbed", "freopen"),
00519         "dependencies": [MBED_LIBRARIES],
00520     },
00521     {
00522         "id": "MBED_22", "description": "Semihost",
00523         "source_dir": join(TEST_DIR, "mbed", "semihost"),
00524         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00525         "automated": True,
00526         "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
00527     },
00528     {
00529         "id": "MBED_23", "description": "Ticker Int us",
00530         "source_dir": join(TEST_DIR, "mbed", "ticker_2"),
00531         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00532         "automated": True,
00533         #"host_test": "wait_us_auto"
00534     },
00535     {
00536         "id": "MBED_24", "description": "Timeout Int us",
00537         "source_dir": join(TEST_DIR, "mbed", "timeout"),
00538         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00539         "automated": True,
00540         #"host_test": "wait_us_auto"
00541     },
00542     {
00543         "id": "MBED_25", "description": "Time us",
00544         "source_dir": join(TEST_DIR, "mbed", "time_us"),
00545         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00546         "automated": True,
00547         #"host_test": "wait_us_auto"
00548     },
00549     {
00550         "id": "MBED_26", "description": "Integer constant division",
00551         "source_dir": join(TEST_DIR, "mbed", "div"),
00552         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00553         "automated": True,
00554     },
00555     {
00556         "id": "MBED_27", "description": "SPI ADXL345",
00557         "source_dir": join(TEST_DIR, "mbed", "spi_ADXL345"),
00558         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'ADXL345')],
00559         "peripherals": ["ADXL345"]
00560     },
00561     {
00562         "id": "MBED_28", "description": "Interrupt chaining (InterruptManager)",
00563         "source_dir": join(TEST_DIR, "mbed", "interrupt_chaining"),
00564         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00565     },
00566     {
00567         "id": "MBED_29", "description": "CAN network test",
00568         "source_dir": join(TEST_DIR, "mbed", "can"),
00569         "dependencies": [MBED_LIBRARIES],
00570         "mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC",
00571                 "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE",
00572                 "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE","NUCLEO_F446ZE", "DISCO_F469NI", "NUCLEO_F207ZG",
00573                 "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG",
00574                 "NUCLEO_L476RG", "NUCLEO_L432KC", "DISCO_F303VC", "NUCLEO_F412ZG"]
00575     },
00576     {
00577         "id": "MBED_30", "description": "CAN network test using interrupts",
00578         "source_dir": join(TEST_DIR, "mbed", "can_interrupt"),
00579         "dependencies": [MBED_LIBRARIES],
00580         "mcu": ["LPC1768", "LPC4088", "LPC1549", "RZ_A1H", "B96B_F446VE", "NUCLEO_F091RC", "NUCLEO_F207ZG",
00581                 "NUCLEO_F072RB", "NUCLEO_F042K6", "NUCLEO_F334R8", "NUCLEO_F303RE",
00582                 "NUCLEO_F303K8", "NUCLEO_F302R8", "NUCLEO_F446RE", "NUCLEO_F446ZE", "DISCO_F469NI",
00583                 "DISCO_F429ZI", "NUCLEO_F103RB", "NUCLEO_F746ZG", "DISCO_F746NG",
00584                 "NUCLEO_L476RG", "NUCLEO_L432KC", "DISCO_F303VC", "NUCLEO_F412ZG"]
00585     },
00586     {
00587         "id": "MBED_31", "description": "PWM LED test",
00588         "source_dir": join(TEST_DIR, "mbed", "pwm_led"),
00589         "dependencies": [MBED_LIBRARIES],
00590     },
00591     {
00592         "id": "MBED_32", "description": "Pin toggling",
00593         "source_dir": join(TEST_DIR, "mbed", "pin_toggling"),
00594         "dependencies": [MBED_LIBRARIES],
00595     },
00596     {
00597         "id": "MBED_33", "description": "C string operations",
00598         "source_dir": join(TEST_DIR, "mbed", "cstring"),
00599         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00600         "automated": False,
00601     },
00602     {
00603         "id": "MBED_34", "description": "Ticker Two callbacks",
00604         "source_dir": join(TEST_DIR, "mbed", "ticker_3"),
00605         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00606         "automated": True,
00607         #"host_test": "wait_us_auto"
00608     },
00609     {
00610         "id": "MBED_35", "description": "SPI C12832 display",
00611         "source_dir": join(TEST_DIR, "mbed", "spi_C12832"),
00612         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'C12832')],
00613         "peripherals": ["C12832"],
00614         "automated": True,
00615     },
00616     {
00617         "id": "MBED_36", "description": "WFI correct behavior",
00618         "source_dir": join(TEST_DIR, "mbed", "wfi"),
00619         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00620         "automated": False
00621     },
00622     {
00623         "id": "MBED_37", "description": "Serial NC RX",
00624         "source_dir": join(TEST_DIR, "mbed", "serial_nc_rx"),
00625         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00626         "exclude_mcu": ["NUCLEO_L011K4"],
00627         "automated": True
00628     },
00629     {
00630         "id": "MBED_38", "description": "Serial NC TX",
00631         "source_dir": join(TEST_DIR, "mbed", "serial_nc_tx"),
00632         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00633         "exclude_mcu": ["NUCLEO_L011K4"],
00634         "automated": True
00635     },
00636     {
00637         "id": "MBED_39", "description": "Serial Complete",
00638         "source_dir": join(TEST_DIR, "mbed", "serial_complete"),
00639         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
00640         "automated": False
00641     },
00642 
00643     # CMSIS RTOS tests
00644     {
00645         "id": "CMSIS_RTOS_1", "description": "Basic",
00646         "source_dir": join(TEST_DIR, "rtos", "cmsis", "basic"),
00647         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00648     },
00649     {
00650         "id": "CMSIS_RTOS_2", "description": "Mutex",
00651         "source_dir": join(TEST_DIR, "rtos", "cmsis", "mutex"),
00652         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00653     },
00654     {
00655         "id": "CMSIS_RTOS_3", "description": "Semaphore",
00656         "source_dir": join(TEST_DIR, "rtos", "cmsis", "semaphore"),
00657         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00658     },
00659     {
00660         "id": "CMSIS_RTOS_4", "description": "Signals",
00661         "source_dir": join(TEST_DIR, "rtos", "cmsis", "signals"),
00662         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00663     },
00664     {
00665         "id": "CMSIS_RTOS_5", "description": "Queue",
00666         "source_dir": join(TEST_DIR, "rtos", "cmsis", "queue"),
00667         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00668     },
00669     {
00670         "id": "CMSIS_RTOS_6", "description": "Mail",
00671         "source_dir": join(TEST_DIR, "rtos", "cmsis", "mail"),
00672         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00673     },
00674     {
00675         "id": "CMSIS_RTOS_7", "description": "Timer",
00676         "source_dir": join(TEST_DIR, "rtos", "cmsis", "timer"),
00677         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00678     },
00679     {
00680         "id": "CMSIS_RTOS_8", "description": "ISR",
00681         "source_dir": join(TEST_DIR, "rtos", "cmsis", "isr"),
00682         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES],
00683     },
00684 
00685     # mbed RTOS tests
00686     {
00687         "id": "RTOS_1", "description": "Basic thread",
00688         "source_dir": join(TEST_DIR, "rtos", "mbed", "basic"),
00689         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00690         "automated": True,
00691         #"host_test": "wait_us_auto",
00692         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00693                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00694                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F412ZG", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00695                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00696                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00697                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303ZE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00698                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00699                 "NUMAKER_PFM_NUC472", "NUMAKER_PFM_M453",
00700                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00701     },
00702     {
00703         "id": "RTOS_2", "description": "Mutex resource lock",
00704         "source_dir": join(TEST_DIR, "rtos", "mbed", "mutex"),
00705         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00706         "automated": True,
00707         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00708                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00709                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F412ZG", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00710                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00711                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00712                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F103RB", "DISCO_F746NG",
00713                 "NUCLEO_F446ZE", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00714                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00715                 "NUMAKER_PFM_NUC472", "NUMAKER_PFM_M453",
00716                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00717     },
00718     {
00719         "id": "RTOS_3", "description": "Semaphore resource lock",
00720         "source_dir": join(TEST_DIR, "rtos", "mbed", "semaphore"),
00721         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00722         "automated": True,
00723         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00724                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00725                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F412ZG", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00726                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00727                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00728                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE",  "NUCLEO_F446ZE",
00729                 "NUCLEO_F103RB", "DISCO_F746NG",
00730                 "NUCLEO_F746ZG",  "MOTE_L152RC", "B96B_F446VE",
00731                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00732                 "NUMAKER_PFM_NUC472", "NUMAKER_PFM_M453",
00733                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00734     },
00735     {
00736         "id": "RTOS_4", "description": "Signals messaging",
00737         "source_dir": join(TEST_DIR, "rtos", "mbed", "signals"),
00738         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00739         "automated": True,
00740         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00741                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00742                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F412ZG", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00743                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00744                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00745                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE", "NUCLEO_F446RE", "NUCLEO_F446ZE",
00746                 "NUCLEO_F103RB", "DISCO_F746NG",
00747                 "NUCLEO_F746ZG",  "MOTE_L152RC", "B96B_F446VE",
00748                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00749                 "NUMAKER_PFM_NUC472", "NUMAKER_PFM_M453",
00750                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00751     },
00752     {
00753         "id": "RTOS_5", "description": "Queue messaging",
00754         "source_dir": join(TEST_DIR, "rtos", "mbed", "queue"),
00755         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00756         "automated": True,
00757         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00758                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00759                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F412ZG", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00760                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00761                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00762                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
00763                 "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00764                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00765                 "NUMAKER_PFM_NUC472", "NUMAKER_PFM_M453",
00766                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00767     },
00768     {
00769         "id": "RTOS_6", "description": "Mail messaging",
00770         "source_dir": join(TEST_DIR, "rtos", "mbed", "mail"),
00771         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00772         "automated": True,
00773         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00774                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00775                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F412ZG", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00776                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00777                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00778                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
00779                 "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00780                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00781                 "NUMAKER_PFM_NUC472", "NUMAKER_PFM_M453",
00782                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00783     },
00784     {
00785         "id": "RTOS_7", "description": "Timer",
00786         "source_dir": join(TEST_DIR, "rtos", "mbed", "timer"),
00787         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00788         "automated": True,
00789         #"host_test": "wait_us_auto",
00790         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00791                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00792                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F412ZG", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00793                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00794                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00795                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
00796                 "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00797                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00798                 "NUMAKER_PFM_NUC472", "NUMAKER_PFM_M453",
00799                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00800     },
00801     {
00802         "id": "RTOS_8", "description": "ISR (Queue)",
00803         "source_dir": join(TEST_DIR, "rtos", "mbed", "isr"),
00804         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
00805         "automated": True,
00806         "mcu": ["LPC1768", "LPC1549", "LPC11U24", "LPC812", "LPC2460", "LPC824", "SSCI824",
00807                 "KL25Z", "KL05Z", "K22F", "K64F", "K66F", "KL43Z", "KL46Z", "HEXIWEAR",
00808                 "RZ_A1H", "VK_RZ_A1H", "DISCO_F407VG", "DISCO_F429ZI", "NUCLEO_F411RE", "NUCLEO_F412ZG", "DISCO_F469NI", "NUCLEO_F410RB", "NUCLEO_F429ZI",
00809                 "NUCLEO_F401RE", "NUCLEO_F334R8", "DISCO_F334C8", "NUCLEO_F302R8", "NUCLEO_F303ZE", "NUCLEO_F070RB", "NUCLEO_F207ZG",
00810                 "NUCLEO_L073RZ", "NUCLEO_F072RB", "NUCLEO_F091RC", "NUCLEO_L432KC", "DISCO_L476VG", "NUCLEO_L476RG",
00811                 "DISCO_F401VC", "NUCLEO_F303RE", "NUCLEO_F303K8", "MAXWSNENV", "MAX32600MBED", "NUCLEO_L152RE",
00812                 "NUCLEO_F446RE", "NUCLEO_F446ZE", "NUCLEO_F103RB", "DISCO_F746NG", "NUCLEO_F746ZG", "MOTE_L152RC", "B96B_F446VE",
00813                 "EFM32HG_STK3400", "EFM32PG_STK3401", "EFM32LG_STK3600", "EFM32GG_STK3700", "EFM32WG_STK3800",
00814                 "NUMAKER_PFM_NUC472", "NUMAKER_PFM_M453",
00815                 "NRF51822", "NRF51_DK", "SEEED_TINY_BLE", "ARM_BEETLE_SOC", "NUCLEO_F767ZI", "DISCO_F769NI"],
00816     },
00817 
00818     # Networking Tests
00819     {
00820         "id": "NET_1", "description": "TCP client hello world",
00821         "source_dir": join(TEST_DIR, "net", "helloworld", "tcpclient"),
00822         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00823         "automated": True,
00824         "peripherals": ["ethernet"],
00825     },
00826     {
00827         "id": "NET_2", "description": "NIST Internet Time Service",
00828         "source_dir": join(TEST_DIR, "net", "helloworld", "udpclient"),
00829         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00830         "automated": True,
00831         "peripherals": ["ethernet"],
00832     },
00833     {
00834         "id": "NET_3", "description": "TCP echo server",
00835         "source_dir": join(TEST_DIR, "net", "echo", "tcp_server"),
00836         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00837         "automated": True,
00838         #"host_test" : "tcpecho_server_auto",
00839         "peripherals": ["ethernet"],
00840     },
00841     {
00842         "id": "NET_4", "description": "TCP echo client",
00843         "source_dir": join(TEST_DIR, "net", "echo", "tcp_client"),
00844         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00845         "automated": True,
00846         #"host_test": "tcpecho_client_auto",
00847         "peripherals": ["ethernet"]
00848     },
00849     {
00850         "id": "NET_5", "description": "UDP echo server",
00851         "source_dir": join(TEST_DIR, "net", "echo", "udp_server"),
00852         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00853         "automated": True,
00854         #"host_test" : "udpecho_server_auto",
00855         "peripherals": ["ethernet"]
00856     },
00857     {
00858         "id": "NET_6", "description": "UDP echo client",
00859         "source_dir": join(TEST_DIR, "net", "echo", "udp_client"),
00860         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00861         "automated": True,
00862         #"host_test" : "udpecho_client_auto",
00863         "peripherals": ["ethernet"],
00864     },
00865     {
00866         "id": "NET_7", "description": "HTTP client hello world",
00867         "source_dir": join(TEST_DIR, "net", "protocols", "HTTPClient_HelloWorld"),
00868         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00869         "automated": True,
00870         "peripherals": ["ethernet"],
00871     },
00872     {
00873         "id": "NET_8", "description": "NTP client",
00874         "source_dir": join(TEST_DIR, "net", "protocols", "NTPClient_HelloWorld"),
00875         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00876         "automated": True,
00877         "peripherals": ["ethernet"],
00878     },
00879     {
00880         "id": "NET_9", "description": "Multicast Send",
00881         "source_dir": join(TEST_DIR, "net", "helloworld", "multicast_send"),
00882         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
00883         "peripherals": ["ethernet"],
00884     },
00885     {
00886         "id": "NET_10", "description": "Multicast Receive",
00887         "source_dir": join(TEST_DIR, "net", "helloworld", "multicast_receive"),
00888         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
00889         "peripherals": ["ethernet"],
00890     },
00891     {
00892         "id": "NET_11", "description": "Broadcast Send",
00893         "source_dir": join(TEST_DIR, "net", "helloworld", "broadcast_send"),
00894         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
00895         "peripherals": ["ethernet"],
00896     },
00897     {
00898         "id": "NET_12", "description": "Broadcast Receive",
00899         "source_dir": join(TEST_DIR, "net", "helloworld", "broadcast_receive"),
00900         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
00901         "peripherals": ["ethernet"],
00902     },
00903     {
00904         "id": "NET_13", "description": "TCP client echo loop",
00905         "source_dir": join(TEST_DIR, "net", "echo", "tcp_client_loop"),
00906         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
00907         "automated": True,
00908         #"host_test": "tcpecho_client_auto",
00909         "peripherals": ["ethernet"],
00910     },
00911     {
00912         "id": "NET_14", "description": "UDP PHY/Data link layer",
00913         "source_dir": join(TEST_DIR, "net", "echo", "udp_link_layer"),
00914         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY],
00915         "automated": False,
00916         "host_test": "udp_link_layer_auto",
00917         "peripherals": ["ethernet"],
00918     },
00919 
00920     # u-blox tests
00921     {
00922         "id": "UB_1", "description": "u-blox USB modem: HTTP client",
00923         "source_dir": [join(TEST_DIR, "net", "cellular", "http", "ubloxusb"), join(TEST_DIR, "net", "cellular", "http", "common")],
00924         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, USB_HOST_LIBRARIES, UBLOX_LIBRARY],
00925         "supported": CORTEX_ARM_SUPPORT,
00926     },
00927     {
00928         "id": "UB_2", "description": "u-blox USB modem: SMS test",
00929         "source_dir": [join(TEST_DIR, "net", "cellular", "sms", "ubloxusb"), join(TEST_DIR, "net", "cellular", "sms", "common")],
00930         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, USB_HOST_LIBRARIES, UBLOX_LIBRARY],
00931         "supported": CORTEX_ARM_SUPPORT,
00932     },
00933 
00934     # USB Tests 
00935     # USB device test list
00936     {
00937         "id": "USB_1", "description": "Mouse",
00938         "source_dir": join(TEST_DIR, "usb", "device", "basic"),
00939         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00940     },
00941     {
00942         "id": "USB_2", "description": "Keyboard",
00943         "source_dir": join(TEST_DIR, "usb", "device", "keyboard"),
00944         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00945     },
00946     {
00947         "id": "USB_3", "description": "Mouse_Keyboard",
00948         "source_dir": join(TEST_DIR, "usb", "device", "keyboard"),
00949         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00950     },
00951     {
00952         "id": "USB_4", "description": "Serial Port",
00953         "source_dir": join(TEST_DIR, "usb", "device", "serial"),
00954         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00955     },
00956     {
00957         "id": "USB_5", "description": "Generic HID",
00958         "source_dir": join(TEST_DIR, "usb", "device", "raw_hid"),
00959         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00960     },
00961     {
00962         "id": "USB_6", "description": "MIDI",
00963         "source_dir": join(TEST_DIR, "usb", "device", "midi"),
00964         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00965     },
00966     {
00967         "id": "USB_7", "description": "AUDIO",
00968         "source_dir": join(TEST_DIR, "usb", "device", "audio"),
00969         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00970     },
00971     {
00972         "id": "USB_8", "description": "AUDIO_CB",
00973         "source_dir": join(TEST_DIR, "usb", "device", "audio_cb"),
00974         "dependencies": [MBED_LIBRARIES, USB_LIBRARIES],
00975     },
00976     # USB host test list
00977     {
00978         "id": "USB_10", "description": "MSD",
00979         "source_dir": join(TEST_DIR, "usb", "host", "mass_storage"),
00980         "dependencies": [MBED_LIBRARIES,  USB_HOST_LIBRARIES, RTOS],
00981     },
00982     {
00983         "id": "USB_11", "description": "mouse",
00984         "source_dir": join(TEST_DIR, "usb", "host", "mouse"),
00985         "dependencies": [MBED_LIBRARIES,  USB_HOST_LIBRARIES, RTOS],
00986     },
00987     # CMSIS DSP
00988     {
00989         "id": "CMSIS_DSP_1", "description": "FIR",
00990         "source_dir": join(TEST_DIR, "dsp", "cmsis", "fir_f32"),
00991         "dependencies": [MBED_LIBRARIES, DSP_LIBRARIES],
00992     },
00993 
00994     # mbed DSP
00995     {
00996         "id": "DSP_1", "description": "FIR",
00997         "source_dir": join(TEST_DIR, "dsp", "mbed", "fir_f32"),
00998         "dependencies": [MBED_LIBRARIES, DSP_LIBRARIES],
00999     },
01000 
01001     # KL25Z
01002     {
01003         "id": "KL25Z_1", "description": "LPTMR",
01004         "source_dir": join(TEST_DIR, "KL25Z", "lptmr"),
01005         "dependencies": [MBED_LIBRARIES],
01006         "supported": CORTEX_ARM_SUPPORT,
01007         "mcu": ["KL25Z"],
01008     },
01009     {
01010         "id": "KL25Z_2", "description": "PIT",
01011         "source_dir": join(TEST_DIR, "KL25Z", "pit"),
01012         "dependencies": [MBED_LIBRARIES],
01013         "supported": CORTEX_ARM_SUPPORT,
01014         "mcu": ["KL25Z"],
01015     },
01016     {
01017         "id": "KL25Z_3", "description": "TSI Touch Sensor",
01018         "source_dir": join(TEST_DIR, "mbed", "tsi"),
01019         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'TSI')],
01020         "mcu": ["KL25Z"],
01021     },
01022     {
01023         "id": "KL25Z_4", "description": "RTC",
01024         "source_dir": join(TEST_DIR, "KL25Z", "rtc"),
01025         "dependencies": [MBED_LIBRARIES],
01026         "mcu": ["KL25Z"],
01027     },
01028     {
01029         "id": "KL25Z_5", "description": "MMA8451Q accelerometer",
01030         "source_dir": join(TEST_DIR, "mbed", "i2c_MMA8451Q"),
01031         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, join(PERIPHERALS, 'MMA8451Q')],
01032         "mcu": ["KL25Z", "KL05Z", "KL46Z", "K20D50M"],
01033         "automated": True,
01034         },
01035 
01036     # Examples
01037     {
01038         "id": "EXAMPLE_1", "description": "/dev/null",
01039         "source_dir": join(TEST_DIR, "mbed", "dev_null"),
01040         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
01041         "exclude_mcu": ["NUCLEO_L011K4"],
01042         "automated": True,
01043         #"host_test" : "dev_null_auto",
01044     },
01045     {
01046         "id": "EXAMPLE_2", "description": "FS + RTOS",
01047         "source_dir": join(TEST_DIR, "mbed", "fs"),
01048         "dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, TEST_MBED_LIB],
01049     },
01050 
01051     # CPPUTEST Library provides Unit testing Framework
01052     #
01053     # To write TESTs and TEST_GROUPs please add CPPUTEST_LIBRARY to 'dependencies'
01054     #
01055     # This will also include:
01056     # 1. test runner - main function with call to CommandLineTestRunner::RunAllTests(ac, av)
01057     # 2. Serial console object to print test result on serial port console
01058     #
01059 
01060     # Unit testing with cpputest library
01061     {
01062         "id": "UT_1", "description": "Basic",
01063         "source_dir": join(TEST_DIR, "utest", "basic"),
01064         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01065         "automated": False,
01066     },
01067     {
01068         "id": "UT_2", "description": "Semihost file system",
01069         "source_dir": join(TEST_DIR, "utest", "semihost_fs"),
01070         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01071         "automated": False,
01072         "mcu": ["LPC1768", "LPC2368", "LPC11U24"]
01073     },
01074     {
01075         "id": "UT_3", "description": "General tests",
01076         "source_dir": join(TEST_DIR, "utest", "general"),
01077         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01078         "automated": False,
01079     },
01080     {
01081         "id": "UT_BUSIO", "description": "BusIn BusOut",
01082         "source_dir": join(TEST_DIR, "utest", "bus"),
01083         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01084         "automated": False,
01085     },
01086     {
01087         "id": "UT_I2C_EEPROM_ASYNCH", "description": "I2C Asynch eeprom",
01088         "source_dir": join(TEST_DIR, "utest", "i2c_eeprom_asynch"),
01089         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01090         "automated": False,
01091     },
01092     {
01093         "id": "UT_SERIAL_ASYNCH", "description": "Asynch serial test (req 2 serial peripherals)",
01094         "source_dir": join(TEST_DIR, "utest", "serial_asynch"),
01095         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01096         "automated": False,
01097     },
01098     {
01099         "id": "UT_SPI_ASYNCH", "description": "Asynch spi test",
01100         "source_dir": join(TEST_DIR, "utest", "spi_asynch"),
01101         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01102         "automated": False,
01103     },
01104     {
01105         "id": "UT_LP_TICKER", "description": "Low power ticker test",
01106         "source_dir": join(TEST_DIR, "utest", "lp_ticker"),
01107         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB, CPPUTEST_LIBRARY],
01108         "automated": False,
01109     },
01110 
01111     # Tests used for target information purposes
01112     {
01113         "id": "DTCT_1", "description": "Simple detect test",
01114         "source_dir": join(TEST_DIR, "mbed", "detect"),
01115         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
01116         "automated": True,
01117         #"host_test" : "detect_auto",
01118     },
01119 
01120 ]
01121 
01122 # Group tests with the same goals into categories
01123 GROUPS = {
01124     "core": ["MBED_A1", "MBED_A2", "MBED_A3", "MBED_A18"],
01125     "digital_io": ["MBED_A5", "MBED_A6", "MBED_A7", "MBED_A10", "MBED_A11"],
01126     "analog_io": ["MBED_A8"],
01127     "i2c": ["MBED_A19", "MBED_A20"],
01128     "spi": ["MBED_A12"],
01129 }
01130 GROUPS["rtos"] = [test["id"] for test in TESTS if test["id"].startswith("RTOS_")]
01131 GROUPS["net"] = [test["id"] for test in TESTS if test["id"].startswith("NET_")]
01132 GROUPS["automated"] = [test["id"] for test in TESTS if test.get("automated", False)]
01133 # Look for 'TEST_GROUPS' in mbed_settings.py and update the GROUPS dictionary
01134 # with the information in test_groups if found
01135 try:
01136     from mbed_settings import TEST_GROUPS
01137 except:
01138     TEST_GROUPS = {}
01139 GROUPS.update(TEST_GROUPS)
01140 
01141 class Test:
01142     DEFAULTS = {
01143         #'mcu': None,
01144         'description': None,
01145         'dependencies': None,
01146         'duration': 30,
01147         'host_test': 'host_test',
01148         'automated': False,
01149         'peripherals': None,
01150         #'supported': None,
01151         'source_dir': None,
01152         'extra_files': None
01153     }
01154     def __init__(self, n):
01155         self.n = n
01156         self.__dict__.update(Test.DEFAULTS)
01157         self.__dict__.update(TESTS[n])
01158 
01159     def is_supported(self, target, toolchain):
01160         if hasattr(self, 'mcu') and not target in self.mcu:
01161             return False
01162         if hasattr(self, 'exclude_mcu') and target in self.exclude_mcu:
01163             return False
01164         if not hasattr(self, 'supported'):
01165             return True
01166         return (target in self.supported) and (toolchain in self.supported[target])
01167 
01168     def get_description(self):
01169         if self.description:
01170             return self.description
01171         else:
01172             return self.id
01173 
01174     def __cmp__(self, other):
01175         return cmp(self.n, other.n)
01176 
01177     def __str__(self):
01178         return "[%3d] %s: %s" % (self.n, self.id, self.get_description())
01179 
01180     def __getitem__(self, key):
01181         if key == "id": return self.id
01182         elif key == "mcu": return self.mcu
01183         elif key == "exclude_mcu": return self.exclude_mcu
01184         elif key == "dependencies": return self.dependencies
01185         elif key == "description": return self.description
01186         elif key == "duration": return self.duration
01187         elif key == "host_test": return self.host_test
01188         elif key == "automated": return self.automated
01189         elif key == "peripherals": return self.peripherals
01190         elif key == "supported": return self.supported
01191         elif key == "source_dir": return self.source_dir
01192         elif key == "extra_files": return self.extra_files
01193         else:
01194             return None
01195 
01196 TEST_MAP = dict([(test['id'], Test(i)) for i, test in enumerate(TESTS)])
01197 
01198 # parser helpers
01199 def test_known(string):
01200     i = int(string)
01201     if i >= 0 and i < len(TESTS):
01202         return i
01203     else:
01204         raise ArgumentTypeError("{0} does not index a test. The accepted range is 0 to {1}\nThe test mapping is:\n{2}".format(i, len(TEST_MAP) - 1, columnate([str(i) + ":" + t['id'] for i,t in zip(range(len(TESTS)), TESTS)])))
01205 
01206 def test_name_known(string):
01207     if string not in TEST_MAP.keys() and \
01208        (getattr(ps, "test_alias", None) is None or \
01209         ps.test_alias.get(string, "") not in TEST_MAP.keys()):
01210         raise ArgumentTypeError("Program with name '{0}' not found. Supported tests are: \n{1}".format(string, columnate([t['id'] for t in TESTS])))
01211 
01212     return TEST_MAP[string].n