2014-11-25 18:10:05 +01:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
import time
|
|
|
|
import curses
|
|
|
|
import atexit
|
2016-04-09 21:03:17 +02:00
|
|
|
import sys
|
2014-11-25 18:10:05 +01:00
|
|
|
|
|
|
|
import pigpio
|
|
|
|
|
|
|
|
GPIOS=32
|
|
|
|
|
|
|
|
MODES=["INPUT", "OUTPUT", "ALT5", "ALT4", "ALT0", "ALT1", "ALT2", "ALT3"]
|
|
|
|
|
|
|
|
def cleanup():
|
|
|
|
curses.nocbreak()
|
|
|
|
curses.echo()
|
|
|
|
curses.endwin()
|
|
|
|
pi.stop()
|
|
|
|
|
|
|
|
pi = pigpio.pi()
|
2016-04-09 21:03:17 +02:00
|
|
|
if not pi.connected:
|
|
|
|
sys.exit(1)
|
2014-11-25 18:10:05 +01:00
|
|
|
|
|
|
|
stdscr = curses.initscr()
|
|
|
|
curses.noecho()
|
|
|
|
curses.cbreak()
|
|
|
|
|
|
|
|
atexit.register(cleanup)
|
|
|
|
|
|
|
|
cb = []
|
|
|
|
|
|
|
|
for g in range(GPIOS):
|
|
|
|
cb.append(pi.callback(g, pigpio.EITHER_EDGE))
|
|
|
|
|
|
|
|
# disable gpio 28 as the PCM clock is swamping the system
|
|
|
|
|
|
|
|
cb[28].cancel()
|
|
|
|
|
|
|
|
stdscr.nodelay(1)
|
|
|
|
|
|
|
|
stdscr.addstr(0, 23, "Status of gpios 0-31", curses.A_REVERSE)
|
|
|
|
|
|
|
|
while True:
|
|
|
|
|
|
|
|
for g in range(GPIOS):
|
|
|
|
tally = cb[g].tally()
|
|
|
|
mode = pi.get_mode(g)
|
|
|
|
|
2016-04-09 21:03:17 +02:00
|
|
|
col = (g // 11) * 25
|
2014-11-25 18:10:05 +01:00
|
|
|
row = (g % 11) + 2
|
|
|
|
|
|
|
|
stdscr.addstr(row, col, "{:2}".format(g), curses.A_BOLD)
|
|
|
|
|
|
|
|
stdscr.addstr(
|
|
|
|
"={} {:>6}: {:<10}".format(pi.read(g), MODES[mode], tally))
|
|
|
|
|
|
|
|
stdscr.refresh()
|
|
|
|
|
|
|
|
time.sleep(0.1)
|
|
|
|
|
|
|
|
c = stdscr.getch()
|
|
|
|
|
|
|
|
if c != curses.ERR:
|
|
|
|
break
|
|
|
|
|