--- /dev/null
+
+module TestDipP {
+ 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 dip_test_msg_t {
+ nx_am_addr_t id;
+ nx_uint8_t count;
+ nx_uint8_t isOk;
+ } dip_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("TestDipP","Updating data items\n");
+ /*
+ call DisseminationUpdate1.change(&data);
+ */
+ call DisseminationUpdate50.change(&data);
+ call DisseminationUpdate25.change(&data);
+ call DisseminationUpdate47.change(&data);
+ call DisseminationUpdate7.change(&data);
+ call DisseminationUpdate43.change(&data);
+ call DisseminationUpdate58.change(&data);
+ call DisseminationUpdate48.change(&data);
+ call DisseminationUpdate45.change(&data);
+ }
+ }
+
+ event void SerialControl.stopDone(error_t err) {
+
+ }
+
+ event void Boot.booted() {
+ call SerialControl.start();
+ dbg("TestDipP", "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() {
+ dip_test_msg_t* dipTestMsgPtr;
+
+ if(count < newCount) {
+ count++;
+ }
+ dbg("TestDipP", "Got an update, %u complete now at %s\n", count, sim_time_string());
+ call Leds.led0Toggle();
+
+ dipTestMsgPtr = (dip_test_msg_t*) call SerialSend.getPayload(&testMsg, 0);
+ dipTestMsgPtr->id = TOS_NODE_ID;
+ dipTestMsgPtr->count = count;
+ dipTestMsgPtr->isOk = okBit;
+ call SerialSend.send(0, &testMsg, sizeof(dip_test_msg_t));
+
+
+ if(newCount == count) {
+ dbg("TestDipP","Dissemination COMPLETE!\n");
+ call Leds.set(7);
+ }
+
+ }
+
+ event void SerialSend.sendDone(message_t* message, error_t err) {
+
+ }
+}