def setupSim(): global data, nodeState, minSeqNo, maxSeqNo, currentSeqNo global numNodes, totalFinished, out, firstExecution, init_event # only execute once for all input files if (firstExecution): # uart_event = interp.addEventHandler(printUART, UARTMsgSentEvent) radio_event = interp.addEventHandler(printRadio, RadioMsgSentEvent) dbg_event = interp.addEventHandler(printDBG, DebugMsgEvent) adc_event = interp.addEventHandler(ADCread, ADCDataReadyEvent) firstExecution = False print("Preparing to simulate using " + filename) dataList = parseInput.parseFile("xsm",filename) data = dataList[0] nodeState = dataList[1] minSeqNo = dataList[2] maxSeqNo = dataList[3] currentSeqNo = {} for i in nodeState.keys(): currentSeqNo[i] = 0 totalFinished = 0 numNodes = len(nodeState) sleep(2) # wait for simulator to catch up and update 'motes' # Check that we have more simulated motes than the largest moteID # otherwise, the script will never end. (use 'motes' from simcore) if (max(nodeState.keys()) > len(motes)): batchOut.write("Skipping file %s.\n" %filename) batchOut.write("\t File has largest mote ID = %d. The simulator is only simulating %d nodes.\n" %(max(nodeState.keys()), len(motes))) batchOut.write("\t The simulator needs to simulate 1 node more than the largest mote ID.\n") print("Skipping file %s." %filename) print("\t File has largest mote ID = %d. The simulator is only simulating %d nodes." %(max(nodeState.keys()), len(motes))) print("\t The simulator needs to simulate 1 node more than the largest mote ID.") nextFile() else: out = open(outFilename,'w') print("Outputting to %s" %outFilename) init_event = interp.addEventHandler(handleInit, TossimInitEvent) sim.resume() # in case the init event was signaled before scheduling the handler print "Simulation with " + str(numNodes) + " nodes"
def setupSim(): global data, nodeState, minSeqNo, maxSeqNo, currentSeqNo global numNodes, totalFinished, out print("Preparing to simulate using " + filename) dataList = parseInput.parseFile("xsm",filename) data = dataList[0] nodeState = dataList[1] minSeqNo = dataList[2] maxSeqNo = dataList[3] currentSeqNo = {} for i in nodeState.keys(): currentSeqNo[i] = 0 totalFinished = 0 numNodes = len(nodeState) sleep(1) #make sure that the simulator has time to update 'motes' # Check that we have more simulated motes than the largest moteID # otherwise, the script will never end. (use 'motes' from simcore) if (max(nodeState.keys()) >= len(motes)): simLog.write("Skipping file %s.\n" %filename) simLog.write("\t File has largest mote ID = %d. The simulator is only simulating %d nodes.\n" %(max(nodeState.keys()), len(motes))) simLog.write("\t The simulator needs to simulate 1 node more than the largest mote ID.\n") print("Skipping file %s." %filename) print("\t File has largest mote ID = %d. The simulator is only simulating %d nodes." %(max(nodeState.keys()), len(motes))) print("\t The simulator needs to simulate 1 node more than the largest mote ID.") else: out = open(outFilename,'w') print("Outputting to %s" %outFilename) print "Simulation with " + str(numNodes) + " nodes" #uart_event = interp.addEventHandler(printUART, UARTMsgSentEvent) radio_event = interp.addEventHandler(printRadio, RadioMsgSentEvent) dbg_event = interp.addEventHandler(printDBG, DebugMsgEvent) adc_event = interp.addEventHandler(ADCread, ADCDataReadyEvent) init_event = interp.addEventHandler(handleInit, TossimInitEvent) sim.resume() #in case we miss an init_event signaled earlier