#! /usr/bin/python -i

from usbterm import *

def enable(what="usb/hk/direna/pressure"):
    Cmd("altera/fifo/reset 0xf0")
    Cmd("direna/enable %s" % what)

def disable(what="off"):
    Cmd("direna/enable %s" % what)

def nsamples(n):
    Cmd("direna/nsamples %d" % n)

def thres(c, v):
    Cmd("direna/threshold %d %d" % (c,v))

def tmask(m):
    Cmd("direna/triggermask 0x%05x" % m)

def adcmask(m):
    Cmd("direna/adcmask 0x%05x" % m)

def initialize():
    Cmd("direna/init")

def pulse(i, r=None):
    if r:
        for j in range(16):
            Cmd("direna/pulse/set %d %d (%d) (%d)" % ((j,)+tuple(r[j])))
    try:
        for c in i:
            Cmd("direna/pulse/send %d" % c)
    except TypeError:
        if 0 <= i < 16:
            Cmd("direna/pulse/send %d" % i)

def peek(c):
    a = cmd("alt/send %d 4" % (0x8204+c)).split()[3]
    b = cmd("alt/send %d 4" % (0x8224+c)).split()[3]
    o = cmd("alt/send %d 4" % (0x8244+c)).split()[3]
    return (a,b,o)

def streamon():
    Cmd("var/set ssp_idleword = 0")
    Cmd("altera/register 2 0") # SPI IDLE
    Cmd("direna/fifos/on")
    Cmd("altera/stream/usb")

def streamoff():
    Cmd("altera/idle 0x8001 96")
    Cmd("direna/fifos/off")
    Cmd("altera/sync 0x8001")

try:
    execfile("direnarc.py")
except IOError, e:
    print >>sys.stderr, e

