]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - apps/tests/TestDhv/DhvInject.java
Merge TinyOS 2.1.1 into master.
[tinyos-2.x.git] / apps / tests / TestDhv / DhvInject.java
diff --git a/apps/tests/TestDhv/DhvInject.java b/apps/tests/TestDhv/DhvInject.java
new file mode 100644 (file)
index 0000000..5867b92
--- /dev/null
@@ -0,0 +1,71 @@
+
+import java.io.*;
+import net.tinyos.message.*;
+import net.tinyos.util.*;
+
+public class DhvInject implements MessageListener
+{
+    MoteIF mote;
+
+    DhvInject(DhvMsg dhvmsg) {
+        mote = new MoteIF(PrintStreamMessenger.err);
+        mote.registerListener(dhvmsg, this);
+    }
+
+    public synchronized void messageReceived(int dest_addr, Message message)
+    {
+       // do nothing for now
+    }
+
+    void sendDhvDataMsg(int key, long version, short[] data) {
+       int totalsize = DhvMsg.DEFAULT_MESSAGE_SIZE +
+           DhvDataMsg.DEFAULT_MESSAGE_SIZE +
+           DhvData.DEFAULT_MESSAGE_SIZE;
+       DhvMsg dm = new DhvMsg(totalsize);
+       dm.set_type((short)3);
+
+       DhvDataMsg ddm = new DhvDataMsg(dm, DhvMsg.DEFAULT_MESSAGE_SIZE);
+       ddm.set_key(key);
+        ddm.set_version(version << 16);
+        ddm.set_size((short)data.length);
+
+        DhvData dd = new DhvData(ddm, DhvDataMsg.DEFAULT_MESSAGE_SIZE); 
+        dd.set_data(data);
+
+        try {
+           mote.send(MoteIF.TOS_BCAST_ADDR, dd);
+       }
+        catch(IOException e) {
+           System.err.println("Cannot send message");
+       }
+    }
+
+    public static void main(String args[]) {
+       int i;
+
+        System.out.println("Usage: java DhvInject [key] [version] [hex data delimit space in quotes]");
+        int k = Integer.parseInt(args[0], 16);
+        long v = Long.parseLong(args[1]);
+        String hexdata[] = args[2].split(" ");
+       short d[];
+
+        if(hexdata.length > 16) {
+            System.err.println("Data too long, keep it <= 16 bytes please");
+       }
+
+       d = new short[hexdata.length];
+        for(i = 0; i < d.length; i++)
+            d[i] = Short.parseShort(hexdata[i], 16);
+
+        System.out.println("Key: " + k);
+        System.out.println("Version: " + v);
+        System.out.print("Data: ");
+        for(i = 0; i < d.length; i++) {
+            System.out.print(d[i] + " ");
+       }
+        System.out.println();
+
+        DhvInject dhvinject = new DhvInject(new DhvMsg());
+        dhvinject.sendDhvDataMsg(k, v, d);
+    }
+}