def disableEvent(self): e = Event() e.cmd = self.AUDIO_EVENT_CMD e.src = eaddr.NETWORK e.data[0] = pack('>H', 0) #Requesting Change e.data[1] = pack('>H', 0) #Set Channel to Off return e
def ping(self): # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = 0x08 e.data[0] = 0x1234 e.data[1] = 0x5678 ea = eaddr.TXDest() for i in self.pingtgts: ea[i] = 1 self.eio.sendEvent(ea, e) starttime = time.time() PINGWAIT = 1.0 eventsrxed = [] while len(eventsrxed) < len(self.pingtgts): erx = self.eio.getEvents(blocking=False) if erx != None: for eias in erx: print eias eventsrxed += erx if time.time() > starttime + PINGWAIT: break rxset = set() for e in eventsrxed: rxset.add(e.src) missing = self.pingtgts.difference(rxset) return (rxset, missing)
def pingset(dspboardaddrs): eio = NetEventIO("10.0.0.2") eio.addRXMask(0xF1, xrange(256)) eio.start() # Create event and set mask N = 40 x = n.zeros(N) for i in range(N): e = Event() e.src = eaddr.NETWORK e.cmd = 0xF0 e.data[0] = 0x1234 ea = eaddr.TXDest() for d in dspboardaddrs: ea[d] = 1 eio.sendEvent(ea, e) erx = eio.getEvents() x[i] = len(erx) eio.stop() pylab.figure() pylab.hist(x)
def youare(devicenums): eio = NetEventIO("10.0.0.2") for d in devicenums: eio.addRXMask(xrange(256), int(d)) eio.start() EVENTCMD_YOUARE = 0x01 for i in devicenums: devicelinknum = int(i) for device in xrange(4): e = Event() e.cmd = EVENTCMD_YOUARE e.src = eaddr.NETWORK deviceid = 8 + devicelinknum * 4 + device e.data[0] = deviceid ea = eaddr.TXDest() ea[deviceid] = 1 print "Sending youare for ", deviceid, e reallysend(eio, ea, e) eio.stop()
def grabMemIF(eio): # select debug interface e = Event() e.src = src e.cmd = ECMD_WRITE e.data[0] = memdebug.ifsel e.data[1] = 0x0001 ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e)
def read_memready(eio): e = Event() e.src = mysrc() e.cmd = ECMD_READ e.data[0] = memdebug.memready ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e) e = eio.getEvents() print e[0].data[1]
def getBufferAddress(eio): e = Event() e.src = mysrc() e.cmd = ECMD_READ e.data[0] = memdebug.addr e.data[1] = 0 ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e) erx = eio.getEvents() return erx[0].data[1]
def setLED(addrs, stateon): e = Event() e.src = eaddr.NETWORK e.cmd = CMD if stateon: e.data[0] = 0xFFFF else: e.data[0] = 0x0000 ea = eaddr.TXDest() for i in addrs: ea[i] = 1 eio.sendEvent(ea, e)
def setBufferAddress(eio, addr): """ assumes EIO is running, receiving correct masks """ e = Event() e.src = mysrc() e.cmd = ECMD_WRITE e.data[0] = memdebug.addr e.data[1] = addr ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e)
def loopback_test(): """ Send an event to the jtag interface and get a response """ jtagio = JTAGEventIO() jtagio.addRXMask(xrange(256), eaddr.JTAG) a = Event() a.cmd = 0x30 a.src = eaddr.JTAG a.data[0] = 0x0123 a.data[1] = 0x4567 a.data[2] = 0x89AB a.data[3] = 0xCDEF a.data[4] = 0xAABB jtagio.start() ea = eaddr.TXDest() ea[eaddr.JTAG] = 1 jtagio.sendEvent(ea, a) print jtagio.getEvents()[0] jtagio.stop()
def getnonce(eio): e = Event() e.src = mysrc() e.cmd = ECMD_READ e.data[0] = memdebug.nonce ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e) es = eio.getEvents() e = es[0] return e.data[1]
def word_write(eio, addr, data): setBufferAddress(eio, addr) a = getBufferAddress(eio) if addr != a : raise Exception("error on address readback, addr= %4.4X, read address %4.4X" % (addr, a)) # write the word e = Event() e.src = src e.cmd = ECMD_WRITE e.data[0] = memdebug.bufferwr e.data[1] = data ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e)
def execute_txn(eio, type): nonce = np.random.randint(0, 2**16) e = Event() e.src = mysrc() e.cmd = ECMD_WRITE e.data[0] = type e.data[1] = nonce ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e) # now loop until done! noncerx = None while noncerx != nonce: noncerx = getnonce(eio) print "not done yet %4.4X != %4.4X" %( nonce, noncerx) print "Done"
def enableEvent(self): e = Event() e.cmd = self.AUDIO_EVENT_CMD e.src = eaddr.NETWORK e.data[0] = pack('>H', 0) #Requesting Change e.data[1] = pack('>H', 1) #Set Channel to On e.data[2] = pack('>H', self.selectedSubChan) e.data[3] = pack('>H', 32000) return e
def getLinkCycleCount(self, DEVN): # now get all of the counter events rx_set = {} for i in range(DEVN): e = Event() e.src = self.src e.cmd = 0x21 e.data[0] = i ea = eaddr.TXDest() ea[eaddr.SYSCONTROL] = 1 self.eio.sendEvent(ea, e) erx = self.eio.getEvents() rx_set[i] = erx cyclecnt = [] for i in range(DEVN): cyclecnt.append(rx_set[i][0].data[2]) return cyclecnt
def getDLTiming(self): # now get the debug counters e = Event() e.src = self.src e.cmd = 0x22 ea = eaddr.TXDest() ea[eaddr.SYSCONTROL] = 1 self.eio.sendEvent(ea, e) erx = self.eio.getEvents() for e in erx: debug_event = erx[0] timings = [] for ei in range(4): tpos = (debug_event.data[ei] >> 8 ) & 0xFF tlen = debug_event.data[ei] & 0xFF timings.append((tpos, tlen)) return timings
def debug(dspboardaddrs): eio = NetEventIO("10.0.0.2") eio.addRXMask(0x38, dspboardaddrs) eio.start() print "Sending to ", dspboardaddrs # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = 0x38 for d in dspboardaddrs: ea = eaddr.TXDest() ea[d] = 1 eio.sendEvent(ea, e) print "sending", e erx = eio.getEvents() print erx[0] eio.stop()
def debug_dump_read(eio): """ read each reg and dump the value there """ for regi in range(16): e = Event() e.src = src e.cmd = ECMD_READ e.data[0] = regi e.data[1] = 0 ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e) erx = eio.getEvents() assert erx[0].cmd == ECMD_READ print erx[0] d = erx[0].data[1]
def getEvents(self, blocking=True): """ Slightly different semantics, can't handle null event cmd, which should be fine as we'll never return it anyway """ while True: IR = USER3 resp = self._callJtag(IR, "00 00 00 00 00 00 00 00 00 00 00 00") e = Event() octets = resp.split() e.cmd = int(octets[0], 16) e.src = int(octets[1], 16) for epos in range(5): e.data[epos] = (int(octets[2 + epos * 2], 16) << 8) | int(octets[3 + epos * 2], 16) if e.cmd == 0: if not blocking: return [] else: return [e]
def word_read(eio, addr): setBufferAddress(eio, addr) a = getBufferAddress(eio) assert addr == a # write the wordg e = Event() e.src = src e.cmd = ECMD_READ e.data[0] = memdebug.bufferrd e.data[1] = addr ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e) erx = eio.getEvents() assert erx[0].cmd == ECMD_READ d = erx[0].data[1] d2 = erx[0].data[2] return d
def getLinkStatus(self, DEVN): # get the link status event e = Event() e.src = self.src e.cmd = 0x20 ea = eaddr.TXDest() ea[eaddr.SYSCONTROL] = 1 self.eio.sendEvent(ea, e) erx = self.eio.getEvents() linkstatus_event = erx[0] # now parse the link status event status = [] for i in range(DEVN): if (linkstatus_event.data[1] >> i) & 0x1 > 0: status.append(True) else: status.append(False) return status
def ping_digital_out(ip): addr = DIGITAL_OUT eio = NetEventIO(ip) eio.addRXMask(PING_RESPONSE_CMD, [addr]) eio.start() e = Event() e.src = eaddr.NETWORK e.cmd = 0x08 e.data[0] = 0x1234 e.data[1] = 0x5678 ea = eaddr.TXDest() ea[addr] = 1 eio.sendEvent(ea, e) erx = eio.getEvents(blocking=True) for e in erx: print e eio.stop()
def set_rowtgt_address(eio, addr): e = Event() e.src = mysrc() e.cmd = ECMD_WRITE e.data[0] = memdebug.rowtgt e.data[1] = addr ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e) e = Event() e.src = mysrc() e.cmd = ECMD_READ e.data[0] = memdebug.rowtgt e.data[1] = 0 ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 reallysend(eio, ea, e) erx = eio.getEvents() assert addr == erx[0].data[1]
def sendCommandAndBlock(self, acqboardcmd): """ acqboardcmd is an AcqBoardCommand object whose state represents the most recent state change to the board; we retreive the encoded string with acqboardcmd.latestString and the most recent commandID with . """ # setup rx self.eio.addRXMask(self.CMDFIBERRESP, xrange(256) ) SRC = 3 acmdstr = acqboardcmd.latestString # this is a total hack, we extract out the command byte bytes = struct.unpack("BBBBBB", acmdstr) cmdid = bytes[0] >> 4 cmd = bytes[0] & 0xF assert cmdid == acqboardcmd.cmdid self.eio.start() ea = eaddr.TXDest() ea[:] = 1 e = Event() e.cmd = self.CMDFIBERCMD e.src = SRC e.data[0] = (cmdid << 8) | cmd e.data[1] = bytes[4] << 8 | bytes[3] e.data[2] = bytes[2] << 8 | bytes[1] ## Substantial debugging #cmdtuple = (0x50, 4, (cmdid << 8) | (cmd & 0xF), 1, 0, 0, 0) #self.pne.sendEvent(addrtuple, cmdtuple) print "sending event", e self.eio.sendEvent(ea, e) success = False while success == False: erx = self.eio.getEvents() # extract out events for e in erx: #print e if e.cmd == self.CMDFIBERRESP: # and e.src == self.DESTSRCID: # response; extract out bits cmdid = e.data[0] if cmdid == acqboardcmd.cmdid: success = True self.eio.stop()
def readreg(val): e = Event() e.src = src e.cmd = 0x30 e.data[0] = 0 e.data[1] = val e.data[2] = 0 e.data[3] = 0 ea = eaddr.TXDest() ea[eaddr.NETCONTROL] = 1 while True: try: eio.sendEvent(ea, e) break except IOError: pass erx = eio.getEvents() cntevt = erx[0] return "%4.4X %4.4X" % (cntevt.data[1], cntevt.data[2])
ECMD_ECHOPROC_BENCHMARK_RESP = 0xF4 dspboardaddrs = [int(x) for x in sys.argv[1:]] eio = NetEventIO("10.0.0.2") eio.addRXMask(ECMD_ECHOPROC_MEMCHECK_RESP, dspboardaddrs) eio.addRXMask(ECMD_ECHOPROC_BENCHMARK_RESP, dspboardaddrs) eio.start() for d in dspboardaddrs: print "Device %02x ----------------------------------------" % (d,) # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = ECMD_ECHOPROC_MEMCHECK ea = eaddr.TXDest() ea[d] = 1 eio.sendEvent(ea, e) erx = eio.getEvents() memsize = erx[0].data[1] print "heap use: %2.2fk" % (memsize/ 1000.0 ) # get the benchmarks: for i in range(3): eb = Event() eb.src = eaddr.NETWORK
def digital_out(ip): addr = ADDR_DIGITAL_OUT eio = NetEventIO(ip) eio.addRXMask(xrange(256), [addr]) eio.start() vals = True while True: e = Event() e.src = eaddr.NETWORK e.cmd = DIGITALOUT_WRITE e.data[0] = 0xFFFF e.data[1] = 0xFFFF if vals: e.data[2] = 0xFFFF e.data[3] = 0xFFFF else: e.data[2] = 0x0 e.data[3] = 0x0 ea = eaddr.TXDest() ea[addr] = 1 eio.sendEvent(ea, e) # now read e = Event() e.src = eaddr.NETWORK e.cmd = DIGITALOUT_READ ea = eaddr.TXDest() ea[addr] = 1 eio.sendEvent(ea, e) erx = eio.getEvents(blocking=True) for e in erx: print e vals = not vals time.sleep(0.2) eio.stop()
def main(): dspaddrs = set() for who in sys.argv[2:]: if '-' in who: # this is a range (startstr, endstr) = who.split("-") for r in range(int(startstr), int(endstr)+1): dspaddrs.add(r) else: dspaddrs.add(int(who)) if len(dspaddrs) == 0: raise Exception("Must specify at least one dsp board target") eio = NetEventIO("10.0.0.2") #DSPBOARDADDR = tgt for d in dspaddrs: eio.addRXMask(xrange(256), d) eio.start() ea = eaddr.TXDest() for d in dspaddrs: ea[d] = 1 print "Asserting DSP reset" e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPRESET e.data[0] = 0x0000 reallysend(eio, ea, e) print "Deasserting DSP reset" e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPRESET e.data[0] = 0xFFFF reallysend(eio, ea, e) print "Acquiring DSP SPI interface for FPGA" e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPSPIEN e.data[0] = 0xFFFF reallysend(eio, ea, e) print "Deasserting SPISS" e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPSPISS e.data[0] = 0xFFFF reallysend(eio, ea, e) print "Reasserting SPISS" e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPSPISS e.data[0] = 0x0000 reallysend(eio, ea, e) time.sleep(1) # load up the blocks and send blocks = loadfiles() blockpos = 0 for byteblock in blocks: MAXLEN = 1024 chunks = chunk(byteblock, MAXLEN) print "byteblock, len = ", len(byteblock), len(chunks), "chunks" cpos = 0 for b in chunks: pos = 0 while pos < len(b): bytes = b[pos:pos+2] words = struct.unpack(">H", bytes) e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DATABUF e.data[0] = words[0] e.data[1] = pos / 2 ea = eaddr.TXDest() for d in dspaddrs: ea[d] = 1 reallysend(eio, ea, e) # idempotent pos += 2 e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DATABUFTX # this is the length e.data[0] = pos/2 # now the nonce e.data[1] = cpos * 256 + pos ea = eaddr.TXDest() for d in dspaddrs: ea[d] = 1 reallysend(eio, ea, e) print "sent databuftx event, blockpos =%d, block len = %d, chunk number %d" % (blockpos, len(b), cpos) # we need to get events from everyone ecnt = 0 while ecnt < len(dspaddrs): erx = eio.getEvents() for q in erx: ecnt += 1 print "Heard back from ", q.src, q cpos += 1 blockpos += 1 e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPSPISS e.data[0] = 0xFFFF ea = eaddr.TXDest() for d in dspaddrs: ea[d] = 1 reallysend(eio, ea, e) # Give DSP control of SPI interface e = Event() e.src = eaddr.NETWORK e.cmd = EVENTRXCMD_DSPSPIEN e.data[0] = 0x0000 ea = eaddr.TXDest() for d in dspaddrs: ea[d] = 1 reallysend(eio, ea, e) time.sleep(1) # now send all of the UART settings e = Event() e.src = eaddr.NETWORK e.cmd = 0x37 for d in dspaddrs: e.data[0] = d e.data[1] = d e.data[2] = d e.data[3] = d e.data[4] = d ea = eaddr.TXDest() ea[d] = 1 reallysend(eio, ea, e) eio.stop()
""" Try and PING the DSPboard """ import sys from somapynet.event import Event from somapynet import eaddr from somapynet.neteventio import NetEventIO import struct import time eio = NetEventIO("10.0.0.2") DSPBOARDADDR = int(sys.argv[1]) eio.addRXMask(xrange(256), DSPBOARDADDR) eio.start() # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = 0xF2 e.data[0] = int(sys.argv[2]) ea = eaddr.TXDest() ea[DSPBOARDADDR] = 1 eio.sendEvent(ea, e) eio.stop()
(options, args) = parser.parse_args() # args are the non-captured arguments devices = [int(x) for x in args] if options.query: eio = NetEventIO("10.0.0.2") thresholds = {} for d in devices: eio.addRXMask(ECMD_RESPONSE, d) eio.start() for chan in range(4): e = Event() e.src = eaddr.NETWORK e.cmd = ECMD_QUERY e.data[0] = PARAM_THRESHOLD e.data[1] = chan ea = eaddr.TXDest() for d in devices: ea[d] = 1 eio.sendEvent(ea, e) erx = eio.getEvents() for e in erx: if e.cmd == ECMD_RESPONSE and e.data[0] == PARAM_THRESHOLD: if e.src not in thresholds: thresholds[e.src] = {}
# this is a range (startstr, endstr) = who.split("-") for r in range(int(startstr), int(endstr) + 1): dspaddrs.add(r) else: dspaddrs.add(int(who)) if len(dspaddrs) == 0: raise Exception("Must specify at least one dsp board target") eio.start() CMD = 0xF2 # Create event and set mask while (1): e = Event() e.src = eaddr.NETWORK e.cmd = CMD e.data[0] = 0xFFFF ea = eaddr.TXDest() for i in dspaddrs: ea[i] = 1 eio.sendEvent(ea, e) #rint "on" time.sleep(delay) e = Event() e.src = eaddr.NETWORK e.cmd = CMD
funcs = {8: print_name, 9: print_version, 10: print_hash, 11: print_build_time} somaip = sys.argv[1] eio = NetEventIO(somaip) DSPBOARDADDR = int(sys.argv[2]) ECMD_VERSION_QUERY = 0x04 eio.addRXMask(ECMD_VERSION_QUERY, DSPBOARDADDR) eio.start() for field in range(0, 4): # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = ECMD_VERSION_QUERY e.data[0] = (1 << 15) | field ea = eaddr.TXDest() ea[DSPBOARDADDR] = 1 eio.sendEvent(ea, e) erx = eio.getEvents() for q in erx: print q #funcs[field](q) eio.stop()
ECMD_ECHOPROC_BENCHMARK = 0xF4 ECMD_ECHOPROC_BENCHMARK_RESP = 0xF4 dspboardaddrs = [int(x) for x in sys.argv[1:]] eio = NetEventIO("10.0.0.2") eio.addRXMask(ECMD_ECHOPROC_MEMCHECK_RESP, dspboardaddrs) eio.addRXMask(ECMD_ECHOPROC_BENCHMARK_RESP, dspboardaddrs) eio.start() for d in dspboardaddrs: print "Device %02x ----------------------------------------" % (d, ) # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = ECMD_ECHOPROC_MEMCHECK ea = eaddr.TXDest() ea[d] = 1 eio.sendEvent(ea, e) erx = eio.getEvents() memsize = erx[0].data[1] print "heap use: %2.2fk" % (memsize / 1000.0) # get the benchmarks: for i in range(3): eb = Event() eb.src = eaddr.NETWORK
from somapynet import eaddr from somapynet.neteventio import NetEventIO import struct import time eio = NetEventIO("10.0.0.2") DSPBOARDADDR = int(sys.argv[1]) ECMD_ECHOPROC_MEMCHECK = 0xF8 ECMD_ECHOPROC_MEMCHECK_RESP = 0xF9 eio.addRXMask(ECMD_ECHOPROC_MEMCHECK_RESP, xrange(256)) eio.start() # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = ECMD_ECHOPROC_MEMCHECK ea = eaddr.TXDest() ea[DSPBOARDADDR] = 1 eio.sendEvent(ea, e) erx = eio.getEvents() for q in erx: print q eio.stop()
from somapynet import eaddr from somapynet.neteventio import NetEventIO import struct import time eio = NetEventIO("10.0.0.2") DSPBOARDADDR = int(sys.argv[1]) eio.addRXMask(xrange(256), DSPBOARDADDR) eio.start() # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = 0x37 e.data[0] = DSPBOARDADDR e.data[1] = DSPBOARDADDR e.data[2] = DSPBOARDADDR e.data[3] = DSPBOARDADDR e.data[4] = DSPBOARDADDR ea = eaddr.TXDest() ea[DSPBOARDADDR] = 1 eio.sendEvent(ea, e) eio.stop()
if '-' in who: # this is a range (startstr, endstr) = who.split("-") for r in range(int(startstr), int(endstr) + 1): pingtgts.add(r) else: pingtgts.add(int(who)) for i in pingtgts: eio.addRXMask(xrange(256), i) eio.addRXMask(xrange(256), xrange(1, 0x4c)) eio.start() # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = 0xF0 e.data[0] = 0x1234 ea = eaddr.TXDest() for i in pingtgts: ea[i] = 1 eio.sendEvent(ea, e) starttime = time.time() PINGWAIT = 1.0 eventsrxed = [] while len(eventsrxed) < len(pingtgts): erx = eio.getEvents(blocking=False)
from somapynet import eaddr from somapynet.neteventio import NetEventIO import struct import time somaIP = "127.0.0.1" eio = NetEventIO(somaIP) dev = 40 eio.addRXMask(xrange(256), dev) eio.start() e = Event() e.src = eaddr.NETWORK e.cmd = 0x30 e.data[0] = 1 e.data[1] = 1 e.data[2] = 1 e.data[3] = 0 ea = eaddr.TXDest() ea[dev] = 1 eio.sendEvent(ea, e) for i in range(100): erx = eio.getEvents(blocking=True) for e in erx: print e
import sys sys.path.append("../") from somapynet.event import Event from somapynet import eaddr from somapynet.neteventio import NetEventIO eio = NetEventIO("10.0.0.2") ECMD_PINGREQ = 0x08 ECMD_PINGRESP = 0x09 eio.addRXMask(ECMD_PINGRESP, eaddr.SYSCONTROL) eio.start() e = Event() e.src = eaddr.NETWORK e.cmd = ECMD_PINGREQ ea = eaddr.TXDest() ea[eaddr.SYSCONTROL] = 1 print "sending request", e eio.sendEvent(ea, e) eio.sendEvent(ea, e) eio.sendEvent(ea, e) eio.sendEvent(ea, e) rxevents = [] while len(rxevents) < 4: erx = eio.getEvents() rxevents += erx print "responses"
from somapynet import eaddr from somapynet.neteventio import NetEventIO import jtag if sys.argv[1] == "jtag": eio = jtag.JTAGEventIO() src = eaddr.JTAG else: eio = NetEventIO("10.0.0.2") src = eaddr.NETWORK eio.addRXMask(xrange(256), eaddr.SYSCONTROL) eio.start() e = Event() e.src = src e.cmd = 0x20 ea = eaddr.TXDest() ea[eaddr.SYSCONTROL] = 1 eio.sendEvent(ea, e) erx = eio.getEvents() linkstatus_event = erx[0] print "link status event:", linkstatus_event # now get all of the counter events DEVN = 4 rx_set = {} for i in range(DEVN):
for who in sys.argv[1:]: if '-' in who: # this is a range (startstr, endstr) = who.split("-") for r in range(int(startstr), int(endstr) + 1): stattgts.add(r) else: stattgts.add(int(who)) for i in stattgts: eio.addRXMask(xrange(256), i) eio.start() # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = 0x40 # query link status status e.data[0] = 0 # param 0 , link status e.data[1] = 0 ea = eaddr.TXDest() for i in stattgts: ea[i] = 1 eio.sendEvent(ea, e) stats = {} erx = eio.getEvents() for q in erx: stats[q.src] = q.data[1]
from somapynet.neteventio import NetEventIO import struct import time eio = NetEventIO("10.0.0.2") DSPBOARDADDR = int(sys.argv[1]) eio.addRXMask([0xF6], DSPBOARDADDR) eio.start() CMD = 0xF6 # Create event and set mask N = 8 e = Event() e.src = eaddr.NETWORK e.cmd = CMD ea = eaddr.TXDest() ea[DSPBOARDADDR] = 1 eio.sendEvent(ea, e) # now wait for response erx = eio.getEvents() for q in erx: print q eio.stop()
import struct import time somaip = sys.argv[1] eio = NetEventIO(somaip) DSPBOARDADDR = int(sys.argv[2]) eio.addRXMask(xrange(256), DSPBOARDADDR) eio.start() # Create event and set mask e = Event() e.src = eaddr.NETWORK e.cmd = 0x40 # query link status status e.data[0] = 0 # param 0 , link status e.data[1] = 0 ea = eaddr.TXDest() ea[DSPBOARDADDR] = 1 eio.sendEvent(ea, e) print "acq link status query sent, waiting for response" erx = eio.getEvents() for q in erx: print q if erx[0].data[1] == 1: