You might want to look into various time synchronization methods.
Search this list for pointers.
MS
Tal Rusak wrote:
Thanks for your reply.
The application is as follows: I have two motes connected to two
internet-enabled PC's. One acts as a sender, the other as a receiver.
However, due to the channel condition the receiver may not always
receive every sent packet. Nonetheless, the receiver must make
certain measurements at the time that it would have received the
packet, regardless of whether or not the packet is actually received.
For example, I need to measure the RSSI at this time. This is why I
cannot depend on the receive event.
I was thinking of using the application in question to send a message
to both the motes by using two serial forwarders, one on each PC. In
this way, it may be possible to coordinate the timing closely enough.
I am not sure what a significant time-delay is; I will try to run
some experiments later today to figure this out.
Any ideas will be greatly appreciated.
Thanks,
Tal
You're pretty much facing a One-Port One-Message limitation.
Hacking MoteIF to do two sends under the covers isn't going
to save you much time. About the only way you could get two
messages to go out, nearly, simultaneously is to ensure that
each sender is running on a separate processor that is not
sharing any resources. What do you consider to be "substantial
time lag/drift/jitter"?
Perhaps if you describe your application requirements we could
be of more help...
MS
Tal Rusak wrote:
Instantiating two MoteIF object appears to work in principle.
However, this will require two calls to send:
moteIF0.send(0, payload);
moteIF1.send(1, payload);
I am not sure if this will introduce substantial time
lag/drift/jitter. Is there any obvious way around this limit? For
example, is it safe to modify the function
synchronized public void send(int moteId, Message m)
on line 145 of MoteIF.java to include two send commands, such as
sender0.send(modeId, m);
sender1.send(modeId, m);
which may introduce less time lag?
Also, is there a way to broadcast a serial packet using this
function
(for example, by adding a loop)?
I'm just not if such modifications will disrupt the thread
synchronization in the java programs and/or if it may introduce race
conditions in these programs.
Thanks,
Tal
On Jan 9, 2008, at 9:35 AM, Tal Rusak wrote:
Hi,
I need to use one packet source (i.e., a program sending
packets to
motes over the serial port) to communicate with two SerialForwarders
on
two different machines, forwarding the packets generated to both. Is
this
possible, and if so, how?
If this is not possible directly, does anyone have a good
workaround?
Just instantiate two MoteIF objects?
Phil
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
--
Platform: WinXP/Cygwin
TinyOS version: 1.x, Boomerang
Programmer: MIB510
Device(s): Mica2, MicaZ, Tmote
Sensor board: homebrew
--
Platform: WinXP/Cygwin
TinyOS version: 1.x, Boomerang
Programmer: MIB510
Device(s): Mica2, MicaZ, Tmote
Sensor board: homebrew
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help