diff --git a/test_scripts/monitor.sh b/test_scripts/monitor.sh index 522b5e65bd589244fdd5a5f0d7790dc702d6866f..2342bbc4afe0a7a3e95e8a4b0f67adc3613ee53a 100755 --- a/test_scripts/monitor.sh +++ b/test_scripts/monitor.sh @@ -8,6 +8,14 @@ while true; do uptime TEMP=$( cat /sys/class/thermal/thermal_zone0/temp ) - echo "Temperature $TEMP" + echo "A53 Temperature $TEMP" + if [ -e /sys/class/thermal/thermal_zone1 ]; then + TEMP=$( cat /sys/class/thermal/thermal_zone1/temp ) + echo "GPU temp $TEMP" + fi + if [ -e /sys/class/thermal/thermal_zone2 ]; then + TEMP=$( cat /sys/class/thermal/thermal_zone2/temp ) + echo "VPU temp $TEMP" + fi sleep 30 done diff --git a/test_scripts/power_key.py b/test_scripts/power_key.py new file mode 100755 index 0000000000000000000000000000000000000000..588119693777ae51178d626024fbfb1365457680 --- /dev/null +++ b/test_scripts/power_key.py @@ -0,0 +1,56 @@ +#!/usr/bin/python + +from evdev import ecodes, InputDevice +from time import time +from select import select +import os +import sys + + +def main(): + dev = InputDevice('/dev/input/event3') + power_wait_time = 1.5 + suspend = False + + # wait for the key release event so that we can differentiate + # between long and short press + state = {} + + while True: + # Block for a 500ms or until there are events to be read. + r, _, _ = select([dev], [], [], 0.5) + + if r: + for event in dev.read(): + if event.type == ecodes.EV_KEY: + # When the key is pressed, record its timestamp. + if event.value == 1: + if event.code == ecodes.KEY_POWER and suspend: + print("ignoring power key on wakeup") + suspend = False + else: + state[event.code] = event.timestamp(), event + print("Key: %s %d %d pressed" % (ecodes.KEY[event.code], event.code, ecodes.KEY_POWER)) + + # When it's released check which key is is + if event.value == 0 and event.code in state: + delta = time() - event.timestamp() + print("Key: %s released %3.2f" % (ecodes.KEY[event.code], delta)) + if event.code == ecodes.KEY_POWER and delta < power_wait_time: + # short power key press suspend the system + suspend = True + os.system("systemctl suspend -q") + + del state[event.code] + + now = time() + for code, ts_event in list(state.items()): + ts, event = ts_event + delta = now - ts + if code == ecodes.KEY_POWER and delta >= power_wait_time and not suspend: + # power key held for more than power_wait_time shut down the system + os.system('shutdown -h now') + + +if __name__ == "__main__": + sys.exit(main(sys.argv)) diff --git a/test_scripts/static_test.sh b/test_scripts/static_test.sh new file mode 100755 index 0000000000000000000000000000000000000000..dfdc5c3be1d0bd5cadffb05c17661bd4ee2a605c --- /dev/null +++ b/test_scripts/static_test.sh @@ -0,0 +1,132 @@ +#!/bin/bash + +failures=0 +uname -a +uptime +if [ ! -e "/sys/class/thermal/thermal_zone0/temp" ]; then + echo "Thermal driver not loaded" + failures=$((${failures}+1)) +else + TEMP=$( cat /sys/class/thermal/thermal_zone0/temp ) + echo "A53 temp $TEMP" + if [ -e /sys/class/thermal/thermal_zone1 ]; then + TEMP=$( cat /sys/class/thermal/thermal_zone1/temp ) + echo "GPU temp $TEMP" + TEMP=$( cat /sys/class/thermal/thermal_zone2/temp ) + echo "VPU temp $TEMP" + else + echo "Multi TMU thermal driver not loaded" + fi +fi + +if [ -e "/sys/class/regulator/" ]; then + REGULATORS=$(ls -d /sys/class/regulator/*) + + for REG in ${REGULATORS}; do + NAME=$(cat ${REG}/name) + if [ -e ${REG}/state ]; then + STATE=$(cat ${REG}/state) + else + STATE="NA" + fi + STANDBY=$(cat ${REG}/suspend_mem_state) + USERS=$(cat ${REG}/num_users) + echo "Regulator ${NAME} ${STATE} standby ${STANDBY} users ${USERS}" + done +else + echo "Regulator driver not loaded" + failures=$((${failures}+1)) +fi + +TEST=$( lsusb | grep "Linux Foundation 3.0 root hub" ) +if [ -z "${TEST}" ]; then + echo "USB 3 subsystem failed to load" + failures=$((${failures}+1)) +fi + +TEST=$( lsusb | grep "Linux Foundation 2.0 root hub" ) +if [ -z "${TEST}" ]; then + echo "USB 2 subsystem failed to load" + failures=$((${failures}+1)) +fi + +TEST=$( lsusb | grep "Qualcomm / Option" ) +if [ -z "${TEST}" ]; then + echo "Qualcomm modem driver failed to load" + failures=$((${failures}+1)) +fi + +TEST=$( lsusb | grep "Super Top" ) +if [ -z "${TEST}" ]; then + echo "SD card driver failed to load" + failures=$((${failures}+1)) +fi + +TEST=$( ifconfig | grep "eth0" ) +if [ -z "${TEST}" ]; then + echo "Ethernet driver failed to load" + failures=$((${failures}+1)) +fi + +TEST=$( ifconfig | grep "usb0" ) +if [ -z "${TEST}" ]; then + echo "USB ethernet driver failed to load" + failures=$((${failures}+1)) +fi + +TEST=$( ifconfig | grep "usbcore" | grep "qmi_wwan" ) +echo $TEST +if [ -z "${TEST}" ]; then + echo "WWAN driver failed to load" + failures=$((${failures}+1)) +fi + +if [ -e "/dev/i2c-0" ]; then + TEST=$( i2cdetect -y 0 | grep "4b" ) + if [ -n "${TEST}" ]; then + echo "pmic driver failed to load" + failures=$((${failures}+1)) + fi + + TEST=$( i2cdetect -y 0 | grep "52" ) + if [ -n "${TEST}" ]; then + echo "USB type C driver failed to load" + failures=$((${failures}+1)) + fi + + TEST=$( i2cdetect -y 0 | grep "68" ) + if [ -n "${TEST}" ]; then + echo "rtc driver failed to load" + failures=$((${failures}+1)) + fi + + TEST=$( i2cdetect -y 0 | grep "6b" ) + if [ -n "${TEST}" ]; then + echo "charger driver failed to load" + failures=$((${failures}+1)) + fi +else + echo "i2c bus 0 failed to load" + failures=$((${failures}+1)) +fi + +if [ -e "/dev/i2c-2" ]; then + TEST=$( i2cdetect -y 2 | grep "1e" ) + if [ -n "${TEST}" ]; then + echo "magnetometer driver failed to load" + failures=$((${failures}+1)) + fi + + TEST=$( i2cdetect -y 2 | grep "5d" ) + if [ -n "${TEST}" ]; then + echo "touchscreen driver failed to load" + failures=$((${failures}+1)) + fi +else + echo "i2c bus 0 failed to load" + failures=$((${failures}+1)) +fi + +alsabat -D plughw:CARD=sgtl5000,DEV=0 -c2 --saveplay default_dual.wav --standalone + +echo "There were ${failures} static test failures" diff --git a/test_scripts/test_audio.py b/test_scripts/test_audio.py index 41878306e2f894f7529bf235edf9a532e3b48631..a86017be50d8d4e166c98afdb5be4ded2c29b12b 100644 --- a/test_scripts/test_audio.py +++ b/test_scripts/test_audio.py @@ -11,3 +11,7 @@ def test_headphone_detection(): "Check if we registered the headphone detection IRQ" f = open("/proc/interrupts") assert " HP_DET" in f.read() + +def test_sound_output(): + out = subprocess.check_output(["alsabat", "-D", "plughw:CARD=sgtl5000,DEV=0", "-c2", "--saveplay", "default_dual.wav", "--standalone"]) + assert(b"Return value is 0" in out) diff --git a/test_scripts/vibra_test.py b/test_scripts/vibra_test.py new file mode 100755 index 0000000000000000000000000000000000000000..5e1708a3faf89b5c68eb9543b51d775e76dfacde --- /dev/null +++ b/test_scripts/vibra_test.py @@ -0,0 +1,36 @@ +#!/usr/bin/python + +from evdev import ecodes, InputDevice, ff +import evdev +import time +import sys + + +def main(): + # Find first EV_FF capable event device (that we have permissions to use). + for name in evdev.list_devices(): + dev = InputDevice(name) + if ecodes.EV_FF in dev.capabilities(): + print("Found device: %s\n" % (name)) + break + + rumble = ff.Rumble(strong_magnitude=0x0000, weak_magnitude=0xffff) + # effect_type = ff.EffectType(ff_rumble_effect=rumble) + duration_ms = 1000 + + effect = ff.Effect( + ecodes.FF_RUMBLE, -1, 0, + ff.Trigger(0, 0), + ff.Replay(duration_ms, 0), + ff.EffectType(ff_rumble_effect=rumble) + ) + + repeat_count = 1 + effect_id = dev.upload_effect(effect) + dev.write(ecodes.EV_FF, effect_id, repeat_count) + time.sleep(duration_ms / 1000) + dev.erase_effect(effect_id) + + +if __name__ == "__main__": + sys.exit(main(sys.argv))