Module 55 - T308

T308: Acceptance Testing for Advanced Transportation Controller (ATC) Application Programming Interface (API) Software

HTML of the Student Supplement

(Note: This document has been converted from the Student Supplement to 508-compliant HTML. The formatting has been adjusted for 508 compliance, but all the original text content is included, plus additional text descriptions for the images, photos and/or diagrams have been provided below.)

T308: Acceptance Testing for Advanced Transportation Controller Application Programming Interface Software

Table of Contents

1. Module Description - 2

2. Introduction/Purpose - 2

3. Samples/Examples - 3

4. Reference to Other Standards - 10

5. Glossary - 11

6. References - 13

7. Study Questions - 14

8. Icon Guide - 15

1. Module Description

Module T308: Acceptance Test for Advanced Transportation Controller Application Programming Interface Software provides training for the testing API Software. The API Software is to conform to the ATC 5402 v02 Standard.

The following are recommended prerequisites in the ATC curriculum for students taking this course.

The following are recommended prerequisites in the testing curriculum for students taking this course.

2. Introduction/Purpose

The Advanced Transportation Controller (ATC) family of standards provides an open architecture hardware and software platform that can support a wide variety of Intelligent Transportation Systems (ITS) field applications. These standards are characterized by their modularity, support of multiple and concurrent application programs, and design to facilitate the adoption of new technologies.

The ATC 5401 Application Programming Interface (API) Standard v02 defines API Software that provides both user and programmatic interfaces for transportation controller units that conform to the ATC 5201 Transportation Controller Standard (ATC units). The API Software allows application programs to be written so that they may run on any ATC unit regardless of the manufacturer. It also allows multiple application programs to be compatible on a single ATC unit by sharing the fixed resources of the controller.

As part of the API Reference Implementation (APIRI) Project, the API Validation Suite (APIVS) software was developed that may be used to test API Software resident on an ATC unit. The APIVS Software is maintained in an open source software (OSS) environment and is available to anyone. Test documentation based on IEEE 829-2008 that leverages that APIVS Software is also provided.

Module T308 focuses on testing the API Software based on the ATC 5401 Standard. At the conclusion of this module, participants will be able to: understand the purpose of the APIVS Software; use test documentation to specify API Software acceptance testing; use the APIVS Software to perform API Software testing; and interpret and report the results of testing.

3. Samples/Examples

From the ATC APIRI Test Plan v01.05, Section 3, Features to be Tested, Table 1.

Test ID Document Name Brief Description
APIRI.TDS.2001 APIRI Test Design Specification 1 Test All APIRI FPUI Required Features
APIRI.TDS.3001 APIRI Test Design Specification 2 Test All APIRI FIO Required Features
APIRI.TDS.4001 APIRI Test Design Specification 3 Test All APIRI TOD Required Features
APIRI.TCS.2010 APIRI Test Case Specification 1 FPUI Text UI Virtual Displays
APIRI.TCS.2020 APIRI Test Case Specification 2 FPUI Front Panel Manager
APIRI.TCS.2030 APIRI Test Case Specification 3 FPUI Character Set and Screen Attributes
APIRI.TCS.2040 APIRI Test Case Specification 4 FPUI Reading and Writing Data
APIRI.TCS.2050 APIRI Test Case Specification 5 FPUI Special Characters
APIRI.TCS.2070 APIRI Test Case Specification 6 FPUI Key Mapping
APIRI.TCS.2080 APIRI Test Case Specification 7 FPUI Asynchronous Notification and Focus
APIRI.TCS.2090 APIRI Test Case Specification 8 FPUI Raw Data Handling
APIRI.TCS.2100 APIRI Test Case Specification 9 API Version Information (All Libraries)
APIRI.TCS.3010 APIRI Test Case Specification 10 General FIO Operations
APIRI.TCS.3020 APIRI Test Case Specification 11 FIO Inputs and Outputs
APIRI.TCS.3030 APIRI Test Case Specification 12 FIO Channel Mapping
APIRI.TCS.3040 APIRI Test Case Specification 13 FIO Filtered Inputs and Transition Buffering
APIRI.TCS.3050 APIRI Test Case Specification 14 FIO Frame Frequency
APIRI.TCS.3060 APIRI Test Case Specification 15 FIO Failed State and Fault Monitoring
APIRI.TCS.3070 APIRI Test Case Specification 16 FIO Watchdog Outputs
APIRI.TCS.3080 APIRI Test Case Specification 17 FIO Device Status
APIRI.TCS.3090 APIRI Test Case Specification 18 FIO Health Monitor
APIRI.TCS.3100 APIRI Test Case Specification 19 FIO CMU Configuration
APIRI.TCS.3110 APIRI Test Case Specification 20 FIO Module Status
APIRI.TCS.3120 APIRI Test Case Specification 21 FIO Asynchronous Notification
APIRI.TCS.3130 APIRI Test Case Specification 22 FIO Dark Channel Mapping
APIRI.TCS.4010 APIRI Test Case Specification 23 TOD Time Handling Functions
APIRI.TCS.6010 APIRI Test Case Specification 24 FPM and ATC Configuration Menu
APIRI.TCS.6020 APIRI Test Case Specification 25 System Configuration Utilities
APIRI.TCS.6030 APIRI Test Case Specification 26 Intrinsic API Requirements
APIRI.TCS.6040 APIRI Test Case Specification 27 FIO Serial Ports and Status Counters
APIRI.TCS.7010 APIRI Test Case Specification 28 FPUI Display Presence and Size
APIRI.TCS.7020 APIRI Test Case Specification 29 FPUI Bell Activation and App Termination
APIRI.TCS.7030 APIRI Test Case Specification 30 Test FPUI Display Graphics
APIRI.TCS.7040 APIRI Test Case Specification 31 FPUI Display Focus
APIRI.TCS.7050 APIRI Test Case Specification 32 System Configuration Menu Display
APIRI.TPS.1001 APIRI Test Procedure Specification 1 Auto-Execute Selected APIRI Script(s)
APIRI.TPS.6010 APIRI Test Procedure Specification 2 FPM and ATC Configuration Menu
APIRI.TPS.6020 APIRI Test Procedure Specification 3 System Configuration Utilities
APIRI.TPS.6030 APIRI Test Procedure Specification 4 Intrinsic API Requirements
APIRI.TPS.6040 APIRI Test Procedure Specification 5 FIO Serial Ports and Status Counters
APIRI.TPS.7010 APIRI Test Procedure Specification 6 FPUI Display Presence and Size
APIRI.TPS.7020 APIRI Test Procedure Specification 7 FPUI Bell Activation and App Termination
APIRI.TPS.7040 APIRI Test Procedure Specification 9 FPUI Display Focus
APIRI.TPS.7050 APIRI Test Procedure Specification 1C System Configuration Menu Display

The runAPIVS.sh Linux Shell Script.

#!/bin/sh

# ATC 5401 API Reference Implementation Project

#

# Filename: runAPIVS

# File Type: Linux shell script

# Test Case: many

# Description: run VSE from USB at startup on specific test cases

#

# Date Revision Description

# 2/24/16 1.0 initial release

# start async loopback driver; add symbolic links insmod /media/sda1/APIVS/bin/tty0tty.ko

ln -s /dev/tnt0 /dev/sp6_loopback_a

ln -s /dev/tnt1 /dev/sp6_loopback_b

# start the API Front Panel Manager (loopback mode)

modprobe front_panel

FrontPanelManager /dev/sp6_loopback_a 1>/dev/null 2>&1 &

MasterSelection 1>/dev/null 2>&1 &

# start sync loopback driver; fio driver; add symbolic links rmmod fiodriver

insmod /media/sda1/APIVS/bin/virtual-loopback-sync.ko

insmod /media/sda1/APIVS/bin/fiodriver.ko apivs=1

ln -s /dev/vlsync0 /dev/sp3s_loopback_a

ln -s /dev/vlsync1 /dev/sp3s_loopback_b

ln -s /dev/vlsync2 /dev/sp5s_loopback_a

ln -s /dev/vlsync3 /dev/sp5s_loopback_b

ln -s /dev/vlsync4 /dev/sp8s_loopback_a

ln -s /dev/vlsync5 /dev/sp8s_loopback_b

# initialize test counters pass_count=0 fail_count=0

# a couple of useful subroutines

clear_test_line() {

printf "\x1B[3;1f" >/dev/sp6

printf " " >/dev/sp6

printf "\x1B[3;1f" >/dev/sp6

}

print_test_result() {

if [ "$?" == "0" ]; then

printf "PASS" >/dev/sp6

pass_count=$((pass_count + 1))

else

printf "FAIL" >/dev/sp6

fail_count=$((fail_count + 1)); fi

printf "\x1B[8;1f" >/dev/sp6

printf "Test cases passed:%d failed:%d" "$pass_count" "$fail_count" >/dev/sp6

# keep backlight on

printf "\033[<5h" >/dev/sp6

sleep 1

}

reset_modules() {

# start the API Front Panel Manager (loopback mode)

killall MasterSelection

killall FrontPanelManager

rmmod front_panel

modprobe front_panel

FrontPanelManager /dev/sp6_loopback_a 1>/dev/null 2>&1 & MasterSelection 1>/dev/null 2>&1 &

# start fio driver

rmmod fiodriver

insmod /media/sda1/APIVS/bin/fiodriver.ko apivs=1

}

misc_test_C6020() {

#Check for uClibc load object identifier (APIVS[3.8])

LD_TRACE_LOADED_OBJECTS=1 vse | grep -q "ld-uClibc"

if [ $? != 0 ]

then

echo "$(date -u): vse is not compatible with uClibc" >/tmp/C6020_log.txt

retval=1

else

echo "$(date -u): vse is compatible with uClibc" >/tmp/C6020_log.txt

retval=0

fi

mv /tmp/C6020_log.txt ./ sync

return $retval

}

misc_test_C6030() {

#Check for ELF format (APIR3.5.2[5]) elfmagic="7f454c46"

FILES="/usr/lib/libfpui.so

/usr/lib/libfio.so

/usr/lib/libtod.so"

for f in $FILES do

if [ $(od -An -N4 -tx4 <$f) == $elfmagic ];

then

echo "$(date -u): $f is ELF format file" >>/tmp/C6030_log.txt

retval=0

else

echo "$(date -u): $f is not ELF format file" >>/tmp/C6030_log.txt

retval=1

fi

done

mv /tmp/C6030_log.txt ./ sync

return $retval

}

# set the conformance level this run (1,2,3)

LEVEL=3

# delete old log files? (FALSE will append if exists)

DELETE_LOGS=TRUE

# how many times to run?

loop_count=1

# loop through all specified test cases

while [ $loop_count -ge 1 ]

do

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1110_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1110... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1110_in.xml -o C1110_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1120_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1120... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1120_in.xml -o C1120_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1130_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1130... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1130_in.xml -o C1130_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1150_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1150... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1150_in.xml -o C1150_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1160_log.xml; fi

clear_test_line; printf "Testing APIVS.TCS.1160... " >/dev/sp6

vse -L $LEVEL -c ./VS_config_1.txt -i C1160_in.xml -o C1160_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1310_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1310... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1310_in.xml -o C1310_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1320_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1320... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1320_in.xml -o C1320_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1330_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1330... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1330_in.xml -o C1330_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1350_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1350... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1350_in.xml -o C1350_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1410_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1410... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1410_in.xml -o C1410_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1420_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1420... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1420_in.xml -o C1420_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1430_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1430... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1430_in.xml -o C1430_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C1450_log.xml; fi clear_test_line; printf "Testing APIVS.TCS.1450... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C1450_in.xml -o C1450_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C2010_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.2010... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C2010_in.xml -o C2010_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C2020_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.2020... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C2020_in.xml -o C2020_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C2030_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.2030... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C2030_in.xml -o C2030_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C2040_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.2040... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C2040_in.xml -o C2040_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C2050_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.2050... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C2050_in.xml -o C2050_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C2070_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.2070... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C2070_in.xml -o C2070_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C2080_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.2080... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C2080_in.xml -o C2080_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C2 0 9 0_log.xml; fi

clear_test_line; printf "Testing APIRI.TCS.2090... " >/dev/sp6

vse -L $LEVEL -c ./VS_config_1.txt -i C2090_in.xml -o C2090_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C2100_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.2100... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C2100_in.xml -o C2100_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3010_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3010... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3010_in.xml -o C3010_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3020_log.xml; fi

clear_test_line; printf "Testing APIRI.TCS.3020... " >/dev/sp6

vse -L $LEVEL -c ./VS_config_1.txt -i C3020_in.xml -o C3020_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3030_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3030... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3030_in.xml -o C3030_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3040_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3040... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3040_in.xml -o C3040_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3050_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3050... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3050_in.xml -o C3050_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3060_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3060... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3060_in.xml -o C3060_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3070_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3070... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3070_in.xml -o C3070_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3080_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3080... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3080_in.xml -o C3080_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3090_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3090... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3090_in.xml -o C3090_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3100_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3100... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3100_in.xml -o C3100_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3110_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3110... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3110_in.xml -o C3110_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3120_log.xml; fi

clear_test_line; printf "Testing APIRI.TCS.3120... " >/dev/sp6

vse -L $LEVEL -c ./VS_config_1.txt -i C3120_in.xml -o C3120_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C3130_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.3130... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C3130_in.xml -o C3130_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C4010_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.4010... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C4010_in.xml -o C4010_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C6010_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.6010... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C6010_in.xml -o C6010_log.xml

print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C6020_log.txt; fi clear_test_line; printf "Testing APIRI.TCS.6020... " >/dev/sp6 misc_test_C6020 print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C6030_log.txt; fi clear_test_line; printf "Testing APIRI.TCS.6030... " >/dev/sp6 misc_test_C6030 print_test_result

reset_modules

if [ "$DELETE_LOGS" == TRUE ]; then rm C7030_log.xml; fi clear_test_line; printf "Testing APIRI.TCS.7030... " >/dev/sp6 vse -L $LEVEL -c ./VS_config_1.txt -i C7030_in.xml -o C7030_log.xml

print_test_result

mv /tmp/*log.xml ./ sync

loop_count=$((loop_count - 1))

done

4. Reference to Other Standards

Institute of Electrical and Electronics Engineers, IEEE Std 830-1998, IEEE Recommended Practice for Software Requirements Specifications. IEEE, 1998.
http://standards.ieee.org/index.html

Institute of Transportation Engineers, ATC5401 Application Programming Interface (API) Standard for the Advanced Transportation Controller (ATC) v02. ATC Joint Committee, 15 September 2013.
https://www.ite.org/technical-resources/topics/standards//

Institute of Transportation Engineers, User Comment Draft ATC 5201 Advanced Transportation Controller (ATC) Standard Version 06.10. ATC Joint Committee, 30 July 2012.
https://www.ite.org/technical-resources/topics/standards/

National Electrical Manufacturers Association, NEMA Standards Publication TS 2-2003 v02.06 Traffic Controller Assemblies with NTCIP Requirements. NEMA, 2003.
https://www.nema.org/Standards/ComplimentaryDocuments/Contents%20and%20Scope%20TS%2 02-2003%20(R2008).pdf

5. Glossary

To include additional descriptions/acronyms used primarily in the module.

Term Definition
AASHTO American Association of State Highway and Transportation Officials.
API Application Programming Interface.
API Utilities API software that is used for setting system-wide purposes on an ATC controller unit.
APIRI Project Entire project managed by ATC APIRI PMP v01.01 Project Management Plan (PMP) for the Advanced Transportation Controller (ATC) Application Programming Interface (API) Reference Implementation Project including software, hardware and documentation.
APIRI Software API Reference Implementation (software). API software developed as part of the ATC APIRI Project.
APIVS Software API Validation Suite Software.
Application Program Any program designed to perform a specific function directly for the user or, in some cases, for another application program. Examples of application programs include word processors, database programs, Web browsers and traffic control programs. Application programs use the services of a computer's O/S and other supporting programs such as an application programming interface.
ATC Advanced Transportation Controller.
ATC Device Drivers Low-level software not included in a typical Linux distribution that is necessary for ATC-specific devices to operate in a Linux O/S environment.
Board Support Package Software usually provided by processor board manufacturers that provide a consistent software interface for the unique architecture of the board. In the case of the ATC, the Board Support Package also includes the O/S.
BOM Bill of Materials. A list of the raw materials, sub-assemblies, intermediate assemblies, sub-components, parts and the quantities of each needed to manufacture an end product.
BSP See Board Support Package.
ConOps Concept of Operations.
CPU Central Processing Unit. A programmable logic device that performs the instruction, logic and mathematical processing in a computer.
Device Driver A software routine that links a peripheral device to the operating system. It acts like a translator between a device and the application programs that use it.
FIO Field Input and Output.
FPUI Front Panel User Interface.
H/W Hardware.
I/O Input/Output.
IEC International Electrotechnical Commission.
IEEE Institute of Electrical and Electronics Engineers.
ISO International Organization for Standardization.
ITE Institute of Transportation Engineers.
ITS Intelligent Transportation Systems.
JC Joint Committee.
JPO Joint Program Office.
Linux Low-level software that is freely available in the Linux community for use with common hardware components operating in a standard fashion.
Linux Kernel The Unix-like operating system kernel that was begun by Linus Torvalds in 1991. The Linux Kernel provides general O/S functionality. This includes functions for things typical in any computer system such as file I/O, serial I/O, interprocess communication and process scheduling. It also includes Linux utility functions necessary to run programs such as shell scripts and console commands. It is generally available as open source (free to the public). The Linux Kernel referenced in this standard is defined in the ATC Controller Standard Section 4.3.5, Appendix A and Appendix B.
Loopback Driver A virtual device driver that loops back the output ports to a device to the input ports from a device without actually going through the physical device.
Mechanical Drawing A drawing to scale of a machine, machine component, or device from which dimensions can be taken for manufacturing.
N/A Not Applicable.
O/S Operating System.
Operational User A technician or transportation engineer who uses the controller to perform its operational tasks.
PCB Printed Circuit Board.
PMP Project Management Plan.
RI Reference Implementation.
RTC Real-Time Clock.
S/W Software.
Schematic Diagram A diagram that shows, by means of graphic symbols, the electrical connections and functions of a specific circuit arrangement.
SDD Software Design Document or Software Design Description.
SDO Standards Development Organization.
SE Systems Engineer.
Software The process of evaluating software during or at the end of the development
Validation Process to determine whether it satisfies specified requirements.
SOW Statement of Work.
SRS Software Requirements Specification.
TBD To Be Determined.
Tester A user developer, test engineer or test technician capable of operating the API Validation Suite described by this document.
TFCS Transportation Field Cabinet System.
TOD Time of Day.
TOPR Task Order Proposal Request.
US United States.
USDOT United States Department of Transportation.
User Developer A software developer that designs and develops programs for controllers.
Walkthrough A step-by-step presentation by the author of a document in order to gather information and to establish a common understanding of its content.
WG Working Group.
XML Extensible Markup Language.

6. References

Application Programming Interface (API) Reference Implementation Project Website
http://www.ite.org/standards/atcapi/referenceimplementation.asp

API Reference Implementation (APIRI) Repository
https://github.com/apiriadmin/APIRI

API Validation Suite (APIVS) Repository
https://github.com/apiriadmin/APIVS

Notepad++. General purpose editing tool for software related files Color coding and formatting of XML text files
http://notepad-plus-plus.org

XML Differences. Online comparison of XML files.
www.corefiling.com/opensource/xmldiff.html

XmlGrid. Online editor displays in formatted XML text or in grids (tables).

XML Viewer. Online editor displays in formatted XML text or in tree view.
www.codebeautify.org/xmlviewer

7. Study Questions

To include the quiz/poll questions and answer choices as presented in the PowerPoint slide to allow students to either follow along with the recording or refer to the quiz at a later date in the supplement.

1. What controller software is NOT traditionally tested by agencies?

  1. Data Collection Software
  2. Signal Control Software
  3. Application Programming Interface Software
  4. Ramp Meter Software

2. What document is used to specify the inputs and outputs for a particular test of the API Software?

  1. Test Design
  2. Test Procedure Specification
  3. Test Plan
  4. Test Case Specification

3. What is not an appropriate reason to edit the runAPIVS shell script?

  1. Turn off all test output
  2. Change the number of iterations on a test
  3. Change the conformance report logging
  4. Select a subset of the existing test cases

4. True or False: It's a good idea to always log as much information as possible on all tests.

  1. True
  2. False

8. Icon Guide

The following icons are used throughout the module to visually indicate the corresponding learning concept listed out below, and/or to highlight a specific point in the training material.

1) Background information: General knowledge that is available elsewhere and is outside the module being presented. This will be used primarily in the beginning of the slide set when reviewing information readers are expected to already know.

Background information icon indicates general knowledge that is available elsewhere and is outside the module being presented.

2) Tools/Applications: An industry-specific item a person would use to accomplish a specific task, and application of that tool to fit the need.

Tools/Applications icon. An industry-specific item a person would use to accomplish a specific task, and applying that tool to fit your need.

3) Remember: Used when referencing something already discussed in the module that is necessary to recount.

Remember icon. Used when referencing something already discussed in the module that is necessary to recount.

4) Refer to Student Supplement: Items or information that are further explained/detailed in the Student Supplement.

Supplement icon indicating items or information that are further explained/detailed in the Student Supplement.

5) Example: Can be real-world (case study), hypothetical, a sample of a table, etc.

Example icon. Can be real-world (case study), hypothetical, a sample of a table, etc.

6) Checklist: Used to indicate a process that is being laid out sequentially.

Checklist icon used to indicate a process that is being laid out sequentially.