1
0
mirror of git://projects.qi-hardware.com/ben-wpan.git synced 2024-11-05 14:25:01 +02:00
ben-wpan/prod/atusb

165 lines
4.2 KiB
Bash
Executable File

#!/bin/sh
. ./Common
USB_ID=20b7:1540
CLOCK_DRIFT_PPM=50
enumerate()
{
step "Enumeration"
cmd "usbwait -t 5 $USB_ID && echo okay"
expect okay
}
led()
{
#
# BBBBBBBB CCCCCCCC DDDDDDDD
# 01234567 01234567 01234567
#
# -xxxS-L- -x-----n InMM-S--
# T E R RSIO C
#
step "LED"
cmd "echo >/dev/tty; \
echo 'Press [P]ass if the LED blinks, [F]ail if not' \
>/dev/tty; \
atrf-gpio -c -p \
xxxxxx1x.xxxxxxxx.xxxxxxxx \
delay=50 \
xxxxxx0x.xxxxxxxx.xxxxxxxx \
delay=200"
doit
}
gpio_usb()
{
# P_ON state (after reset; transceiver pull-up/downs active)
#
# BBBBBBBB CCCCCCCC DDDDDDDD
# 01234567 01234567 01234567
#
# -xxxS-L- -x-----n InMM-S--
# T E R RSIO C
#
# Pull in P_ON v ^ -^-v v
#
step "GPIO scan (P_ON)"
cmd "$LOCAL_EXEC atrf-gpio -d $LOCAL_DUT -p \
HHHHoHxH.HxHxHxHh.ohzoHoHH '# reset state (H)' \
HHHH0HxH.HxHxHxHh.ohzoHoHH '# test SLP_TR (0)' \
HHHHoH0H.HxHxHxHh.ohzoHoHH '# test LED (0)' \
HHHHoHxH.HxHxHxHh.LhzoHoHH '# test IRQ_RF (0)' \
HHHHoHxH.HxHxHxHh.o0zoHoHH '# test nSEL (0)' \
HHHHoHxH.HxHxHxHh.ohz0HoHH '# test MOSI (0)' \
HHHHoHxH.HxHxHxHh.ohzoH0HH '# test SCLK (0)' \
0000o0x0.0x0x0x0h.ohzo0o00 '# reset state (0)' \
000010x0.0x0x0x0h.ohzo0o00 '# test SLP_TR (1)' \
0000o010.0x0x0x0h.ohzo0o00 '# test LED (1)' \
0000o0x0.0x0x0x0h.o1zo0o00 '# test nSEL (1)' \
0000o0x0.0x0x0x0h.ohz10o00 '# test MOSI (1)' \
0000o0x0.0x0x0x0h.ohzo0100 '# test SCLK (1)'"
doit
# TRX_OFF state (transceiver pull-up/downs inactive)
# -xxxS-L- -x-----n InMM-S--
# T E R RSIO C
step "GPIO scan (TRX_OFF)"
cmd "$LOCAL_EXEC atrf-gpio -d $LOCAL_DUT \
HHHH0HzH.HxHxHHHh.oHHHHHHH '# TRX_OFF state (H)' \
0HHH0HzH.HxHxHHHh.oHHHHHHH '# test B0' \
H0HH0HzH.HxHxHHHh.oHHHHHHH '# test B1 (ICSP SCK)' \
HH0H0HzH.HxHxHHHh.oHHHHHHH '# test B2 (ICSP MOSI)' \
HHH00HzH.HxHxHHHh.oHHHHHHH '# test B3 (ICSP MISO)' \
HHHH00zH.HxHxHHHh.oHHHHHHH '# test B5' \
HHHH0H0H.HxHxHHHh.oHHHHHHH '# test B6 (LED, 0)' \
HHHH0H1H.HxHxHHHh.oHHHHHHH '# test B6 (LED, 1)' \
HHHH0Hz0.HxHxHHHh.oHHHHHHH '# test B7' \
HHHH0HzH.0xHxHHHh.oHHHHHHH '# test C0' \
HHHH0HzH.Hx0xHHHh.oHHHHHHH '# test C2' \
HHHH0HzH.HxHx0HHh.oHHHHHHH '# test C4' \
HHHH0HzH.HxHxH0Hh.oHHHHHHH '# test C5' \
HHHH0HzH.HxHxHH0h.oHHHHHHH '# test C6' \
HHHH0HzH.HxHxHHH1.oHHHHHHH '# test C7 (nRST_RF)' \
HHHH0HzH.HxHxHHHh.0HHHHHHH '# test D0 (IRQ_RF)' \
HHHH0HzH.HxHxHHHh.o0zHHHHH '# test D1 (nSS)' \
HHHH0HzH.HxHxHHHh.oH0HHHHH '# test D2 (MISO)' \
HHHH0HzH.HxHxHHHh.oHz0HHHH '# test D3 (MOSI)' \
HHHH0HzH.HxHxHHHh.oHzH0HHH '# test D4' \
HHHH0HzH.HxHxHHHh.oHzHH0HH '# test D5 (SCLK)' \
HHHH0HzH.HxHxHHHh.oHzHHH0H '# test D6' \
HHHH0HzH.HxHxHHHh.oHzHHHH0 '# test D7' \
HHHH0HzH.HxHxHHHh.oHzHHHHH '# test LED'"
doit
# INT
# -xxxS-L- -x-----n InMM-S--
# T E R RSIO C
step "GPIO scan (INT)"
cmd "$LOCAL_EXEC atrf-gpio -d $LOCAL_DUT -p \
xxxxxxxx.xxxxxxxx.oxxxxxxx '# reset state' \
0x04=1 '# IRQ_POLARITY = 1' \
xxxxxxxx.xxxxxxxx.hxxxxxxx '# test INT (1)' \
xxxxxxxx.xxxxxxxx.h0xxxxxx '# test INT (2)' \
xxxxxxxx.xxxxxxxx.h1xxxxxx '# restore nSEL' \
0x04=0 '# IRQ_POLARITY = 0' \
xxxxxxxx.xxxxxxxx.o1xxxxxx '# test INT again'"
doit
# SLP_TR
# -xxxS-L- -x-----n InMM-S--
# T E R RSIO C
step "GPIO scan (SLP_TR)"
cmd "$LOCAL_EXEC atrf-gpio -d $LOCAL_DUT \
02=9 delay '# enter PLL_ON' \
02:9/0x1f '# verify state' \
frame '# one-byte frame' \
0xf: '# clear interrupts' \
0xe=8 '# enable TRX_END intr' \
xxxxxxxx.xxxxxxxx.oxxxxxxx '# confirm INT' \
slp_tr delay '# send frame' \
xxxxxxxx.xxxxxxxx.hxxxxxxx '# check INT'"
doit
# nRST
step "GPIO scan (nRST)"
cmd "$LOCAL_EXEC atrf-gpio -d $LOCAL_DUT \
02:8/0x1f '# verify TRX_OFF' \
reset '# reset transceiver' \
02:0/0x1f '# verify P_ON'"
doit
}
xtal_usb()
{
step "Crystal frequency"
cmd "$LOCAL_EXEC atrf-xtal -d $LOCAL_DUT -p $CLOCK_DRIFT_PPM"
expect_re ppm # we catch any problems via the exit code
}
begin usb.profile
enumerate
led
# power ?
gpio_usb
identify
xtal_usb
spectrum
transmit