#!/bin/bash

loudly() {
    echo running: $*
    eval $*
    echo
}

if [ "$1" = '-r' ] ; then
    shift 1;
    echo 8 > /proc/sys/kernel/printk

    loudly rmmod pc8736x_gpio scx200_gpio nsc_gpio leds_net48xx led_class ledtrig_heartbeat
    modprobe nsc_gpio bitpos=1
    modprobe pc8736x_gpio
    modprobe scx200_gpio 
fi


# these run forever :(
#loudly cat /dev/led
#loudly cat /dev/gpio-17

cd ~/pinlab
loudly check12 -r -d /dev/gpio- 31
loudly check12 -r -d /dev/scxio- 31

loudly cat /sys/devices/platform/scx200_gpio.0/port_0_value
loudly cat /sys/devices/platform/pc8736x_gpio.0/port_*_value

show_vals() {
    for N in $*; do
	loudly cat /sys/devices/platform/pc8736x_gpio.0/bit_${N}.*_value
	loudly cat /sys/devices/platform/pc8736x_gpio.0/port_${N}_value
    done
}

show_configs() {    
    for N in $*; do
	loudly cat /sys/devices/platform/pc8736x_gpio.0/port_${N}_output_enabled
	loudly cat /sys/devices/platform/pc8736x_gpio.0/port_${N}_pullup_enabled
	loudly cat /sys/devices/platform/pc8736x_gpio.0/port_${N}_debounced
	loudly cat /sys/devices/platform/pc8736x_gpio.0/port_${N}_totem
	loudly cat /sys/devices/platform/pc8736x_gpio.0/port_${N}_locked
    done
}

show_prop() {
    local prop=$1
    shift
    for N in $*; do
	loudly cat /sys/devices/platform/pc8736x_gpio.0/port_${N}_${prop}
    done
}

echo 8 > /proc/sys/kernel/printk

show_vals
loudly check12 -cv -d /dev/gpio- 0 7
show_prop debounced		0 1 2 3		# ports 0,1=ff, 2,3=0
show_prop pullup_enabled	0 1 2 3



scan_test() {

    loudly scansimple -d /dev/led
    loudly scansimple -d /dev/gpio-17
    
    loudly scansimple -d /sys/devices/platform/scx200_gpio.0/bit_0.20_value
    loudly scansimple -d /sys/devices/platform/pc8736x_gpio.0/bit_2.1_value
    
    loudly scansimple -b -d /sys/devices/platform/scx200_gpio.0/bit_0.20_value
    loudly scansimple -b -d /sys/devices/platform/pc8736x_gpio.0/bit_2.1_value
}

if [ "$1" = '-s' ] ; then
    shift 1;
    scan_test
fi


#######################

todo() {

    echo <<EOF

	toggle prop on bit-wide, see on bit-wide and portwide

loudly check12 -cv -d /dev/gpio- 8 15
show_configs 1

loudly check12 -cv -d /dev/gpio- 16 23
show_configs 2

loudly check12 -cv -d /dev/gpio- 24 31
show_configs 3



ports 0,1 has debounce on all bits, ports 2,3 do not
pullups enabled everywhere, except unimplemeed bits: 3.[567]

EOF



