def init_sim_sf(port): """ Initializes the SF Link. Returns (sf or None, summary) """ if not port: log.info("SerialForward-link not enabled (--sf-port to enabled)") return (None, Summary.user_disabled()) try: from TOSSIM import SerialForwarder forwarder = SerialForwarder(port) except: exc = sys.exc_info()[1] log.warn("Disabled SerialForward: %s" % exc) return (None, Summary.error(exc)) else: log.info("Started mote SerialForward-link on port %d" % port) return (forwarder, Summary.enabled("Port %s" % port))
from tossim_topo import Topo, TopoGen tossim = Topo.TossimTopo(TOSSIM, vars if vars is not None else []) tossim_topo = tossim T = tossim # (Required for this setup) Schedule python events "in mote # time". This provides the periodic time reporting. It is also # extremely useful to setup events that occur when a node is booted. from tossim_evt.TossimEvent import * tossim_event = TossimEvent(tossim) # (Optional) Enable to forward packets from mote serial to SF. This # is not strictly required for TReact but allows another application # to simultaneously monitor normal mote output. from TOSSIM import SerialForwarder sf = SerialForwarder(9002) # (Required for this setup) Manage simulation time. This can be # disabled but it requires disabling a "core" module. from TossimSync import TossimSync from act import TimeControl time_control = TimeControl.Remote(tossim, TossimSync(), tossim_event) # (Required) Start packet injector. print "starting injector" from simsf_inject.SFInject import SFInject injector = SFInject(9091).start() # (Required) Create the main reactor. For consistency with modules, # the global variable 'R' should be used. print "creating reactor"