Hi,
I am running a bug checker on packet injection in tinyos. Specifically I am
using RadioCounttoLeds. For injecting packets I translated the code given
in lesson 11 of tossim, test.py to C code, following:
from TOSSIM import *
import sys
t = Tossim([])
r = t.radio()
f = open("topo.txt", "r")
lines = f.readlines()
for line in lines:
s = line.split()
if (len(s) > 0):
print " ", s[0], " ", s[1], " ", s[2];
r.add(int(s[0]), int(s[1]), float(s[2]))
t.addChannel("RadioCountToLedsC", sys.stdout)
t.addChannel("Boot", sys.stdout)
t.getNode(1).bootAtTime(100001);
t.getNode(2).bootAtTime(800008);
t.getNode(3).bootAtTime(1800009);
r.setNoise(1, -100.0, 5.0)
r.setNoise(2, -100.0, 5.0)
r.setNoise(3, -100.0, 5.0)
for i in range(0, 100):
t.runNextEvent()
I get the dbg output as predicted:
EBUG (3): Application booted again.
DEBUG (3): Application booted a third time.
DEBUG (1): RadioCountToLedsC: timer fired, counter is 1.
DEBUG (1): RadioCountToLedsC: packet sent.
DEBUG (2): RadioCountToLedsC: timer fired, counter is 1.
DEBUG (2): RadioCountToLedsC: packet sent.
DEBUG (3): RadioCountToLedsC: timer fired, counter is 1.
DEBUG (3): RadioCountToLedsC: packet sent.
DEBUG (1): Received packet of length 2.
DEBUG (3): Received packet of lengt2.
DEBUG (2): Received packet of length 2.
DEBUG (1): RadioCountToLedsC: timer fired, counter is 2.
DEBUG (1): RadioCountToLedsC: packet sent.
DEBUG (2): RadioCountToLedsC: timer fired, counter is 2.
DEBUG (2): RadioCountToLedsC: packet sent.
DEBUG (3): RadioCountToLedsC: timer fired, counter is 2.
DEBUG (3): RadioCountToLedsC: packet sent.
DEBUG (1): Received packet of length 2.
But, I don't get an Packet dbg messages, even though I have added the packet
channel and added dbg statements to sim_packet.
However, when I convert the following packet injection code from python to
C. (I need C because the bug checker needs a C entry point)
import sys
from TOSSIM import *
from RadioCountMsg import *
t = Tossim([])
m = t.mac();
r = t.radio();
t.addChannel("RadioCountToLedsC", sys.stdout);
t.addChannel("LedsC", sys.stdout);
for i in range(0, 2):
m = t.getNode(i);
m.bootAtTime((31 + t.ticksPerSecond() / 10) * i + 1);
f = open("topo.txt", "r")
lines = f.readlines()
for line in lines:
s = line.split()
if (len(s) > 0):
if (s[0] == "gain"):
r.add(int(s[1]), int(s[2]), float(s[3]))
elif (s[0] == "noise"):
r.setNoise(int(s[1]), float(s[2]), float(s[3]))
for i in range(0, 60):
t.runNextEvent();
msg = RadioCountMsg()
msg.set_counter(7);
pkt = t.newPacket();
pkt.setData(msg.data)
pkt.setType(msg.get_amType())
pkt.setDestination(0)
print "Delivering " + msg.__str__() + " to 0 at " + str(t.time() + 3);
pkt.deliver(0, t.time() + 3)
for i in range(0, 20):
t.runNextEvent();
it prints the dbg statements in sim_packet. I was wondering how the previous
packets get delivered, I understand that the AMSend and AMReceive interfaces
get mapped to TossimActiveMessageP.c in tos/lib/tossim/ what I want to know
is when does this transition to C code, because essentially I need access to
the packet as soon as it is created.
Thanks,
Nazia
because the bug checker needs C code. I added dbg statements to sim_packet.c
because I assume that code should be called. I get the dbg statements
----- End forwarded message -----
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help