]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - apps/tests/TestDhv/TestDhvP.nc
Merge TinyOS 2.1.1 into master.
[tinyos-2.x.git] / apps / tests / TestDhv / TestDhvP.nc
diff --git a/apps/tests/TestDhv/TestDhvP.nc b/apps/tests/TestDhv/TestDhvP.nc
new file mode 100644 (file)
index 0000000..5c75d2f
--- /dev/null
@@ -0,0 +1,674 @@
+
+module TestDhvP {
+  uses interface Leds;
+  uses interface StdControl;
+
+  /*
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate1;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue1;
+  */
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate1;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue1;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate2;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue2;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate3;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue3;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate4;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue4;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate5;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue5;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate6;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue6;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate7;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue7;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate8;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue8;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate9;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue9;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate10;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue10;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate11;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue11;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate12;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue12;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate13;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue13;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate14;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue14;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate15;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue15;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate16;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue16;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate17;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue17;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate18;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue18;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate19;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue19;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate20;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue20;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate21;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue21;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate22;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue22;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate23;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue23;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate24;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue24;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate25;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue25;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate26;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue26;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate27;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue27;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate28;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue28;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate29;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue29;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate30;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue30;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate31;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue31;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate32;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue32;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate33;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue33;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate34;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue34;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate35;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue35;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate36;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue36;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate37;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue37;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate38;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue38;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate39;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue39;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate40;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue40;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate41;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue41;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate42;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue42;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate43;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue43;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate44;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue44;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate45;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue45;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate46;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue46;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate47;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue47;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate48;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue48;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate49;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue49;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate50;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue50;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate51;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue51;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate52;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue52;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate53;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue53;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate54;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue54;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate55;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue55;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate56;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue56;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate57;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue57;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate58;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue58;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate59;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue59;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate60;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue60;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate61;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue61;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate62;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue62;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate63;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue63;
+
+  uses interface DisseminationUpdate<uint16_t> as DisseminationUpdate64;
+  uses interface DisseminationValue<uint16_t> as DisseminationValue64;
+
+
+  uses interface Boot;
+  uses interface AMSend as SerialSend;
+  uses interface SplitControl as SerialControl;
+}
+
+implementation {
+  typedef nx_struct dhv_test_msg_t {
+    nx_am_addr_t id;
+    nx_uint8_t count;
+    nx_uint8_t isOk;
+  } dhv_test_msg_t;
+
+  message_t testMsg;
+
+  uint8_t okBit = 1;
+  uint16_t data;
+  uint8_t count = 0;
+  /*
+  uint8_t newCount = N;
+  */
+  uint8_t newCount = 8;
+
+  void bookkeep();
+
+  event void SerialControl.startDone(error_t err) {
+    call StdControl.start();
+    if(TOS_NODE_ID == 1) {
+      data = 0xBEEF;
+      dbg("TestDhvP","Updating data items\n");
+      /*
+      call DisseminationUpdate1.change(&data);
+      */
+      call DisseminationUpdate18.change(&data);
+      call DisseminationUpdate61.change(&data);
+      call DisseminationUpdate21.change(&data);
+      call DisseminationUpdate53.change(&data);
+      call DisseminationUpdate17.change(&data);
+      call DisseminationUpdate19.change(&data);
+      call DisseminationUpdate11.change(&data);
+      call DisseminationUpdate36.change(&data);
+    }
+  }
+  
+  event void SerialControl.stopDone(error_t err) {
+    
+  }
+
+  event void Boot.booted() {
+    call SerialControl.start();
+    dbg("TestDhvP", "Booted at %s\n", sim_time_string());
+  }
+  /*
+  event void DisseminationValue1.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue1.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+  */
+
+  event void DisseminationValue1.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue1.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue2.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue2.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue3.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue3.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue4.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue4.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue5.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue5.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue6.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue6.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue7.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue7.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue8.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue8.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue9.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue9.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue10.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue10.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue11.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue11.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue12.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue12.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue13.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue13.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue14.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue14.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue15.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue15.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue16.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue16.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue17.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue17.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue18.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue18.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue19.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue19.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue20.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue20.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue21.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue21.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue22.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue22.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue23.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue23.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue24.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue24.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue25.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue25.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue26.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue26.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue27.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue27.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue28.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue28.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue29.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue29.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue30.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue30.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue31.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue31.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue32.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue32.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue33.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue33.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue34.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue34.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue35.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue35.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue36.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue36.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue37.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue37.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue38.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue38.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue39.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue39.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue40.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue40.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue41.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue41.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue42.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue42.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue43.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue43.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue44.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue44.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue45.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue45.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue46.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue46.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue47.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue47.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue48.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue48.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue49.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue49.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue50.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue50.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue51.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue51.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue52.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue52.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue53.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue53.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue54.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue54.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue55.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue55.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue56.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue56.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue57.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue57.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue58.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue58.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue59.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue59.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue60.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue60.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue61.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue61.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue62.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue62.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue63.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue63.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+  event void DisseminationValue64.changed() {
+    uint16_t val = *(uint16_t*) call DisseminationValue64.get();
+    if(val != 0xBEEF) { return; }
+    bookkeep();
+  }
+
+
+  void bookkeep() {
+    dhv_test_msg_t* dhvTestMsgPtr;
+
+    if(count < newCount) {
+      count++;
+    }
+    dbg("TestDhvP", "Got an update, %u complete now at %s\n", count, sim_time_string());
+    call Leds.led0Toggle();
+
+    dhvTestMsgPtr = (dhv_test_msg_t*) call SerialSend.getPayload(&testMsg, 0);
+    dhvTestMsgPtr->id = TOS_NODE_ID;
+    dhvTestMsgPtr->count = count;
+    dhvTestMsgPtr->isOk = okBit;
+    call SerialSend.send(0, &testMsg, sizeof(dhv_test_msg_t));
+    
+
+    if(newCount == count) {
+      dbg("TestDhvP","Dissemination COMPLETE!\n");
+      call Leds.set(7);
+    }
+    
+  }
+
+  event void SerialSend.sendDone(message_t* message, error_t err) {
+
+  }
+}