def main(mode): comm = iinic.USBComm() if Config.ON_DEVICE else iinic.NetComm() nic = iinic.NIC(comm) frameLayer = FrameLayer(nic) myId = frameLayer.getMyId() print >> sys.stderr, 'NIC initialized. My id is', frameLayer.getMyId() dispatcher = Dispatcher(frameLayer) if mode == 'd': sample = SampleProto() dispatcher.registerProto(sample, 'sample') pp = PingPongProto() dispatcher.registerProto(pp, 'ping-pong') try: dispatcher.registerProto(sample, 'sample') except: pass # yes, we expected you, Mr. Exception dispatcher.scheduleCallback(sample.sampleCallback, time.time()+1) dispatcher.scheduleCallback(sampleCallback, time.time()+2) dispatcher.scheduleRepeatingCallback(sampleCallback, time.time()+3, 10) dispatcher.loop() if mode == 'r': monitor = MonitorProto() dispatcher.registerProto(monitor, 'monitor') dispatcher.loop() if mode == 's': frameLayer.sendFrame('s', myId, 0, 'blah') approx = frameLayer.nic.get_approx_timing() # TODO: expose this method frameLayer.sendFrame('x', myId, 0, 'blah blah', approx + 2000000)