From 5941e488eec8788182d5f627b21facf867a0152d Mon Sep 17 00:00:00 2001 From: kaisenl Date: Thu, 3 Jan 2008 21:30:34 +0000 Subject: [PATCH] Changed DIP to Dip --- tos/lib/net/dip/AMDIPC.nc | 29 ----- tos/lib/net/dip/AMDipC.nc | 29 +++++ tos/lib/net/dip/{AMDIPP.nc => AMDipP.nc} | 28 ++-- tos/lib/net/dip/DIPDataC.nc | 27 ---- tos/lib/net/dip/DIPLogicC.nc | 48 ------- tos/lib/net/dip/DIPSummaryC.nc | 22 ---- tos/lib/net/dip/DIPVectorC.nc | 23 ---- tos/lib/net/dip/DIPVersionC.nc | 14 -- tos/lib/net/dip/{DIP.h => Dip.h} | 0 tos/lib/net/dip/DipDataC.nc | 27 ++++ tos/lib/net/dip/{DIPDataP.nc => DipDataP.nc} | 42 +++--- tos/lib/net/dip/DipLogicC.nc | 48 +++++++ .../net/dip/{DIPLogicP.nc => DipLogicP.nc} | 120 +++++++++--------- tos/lib/net/dip/DipSummaryC.nc | 22 ++++ .../dip/{DIPSummaryP.nc => DipSummaryP.nc} | 50 ++++---- ...IPTrickleMilliC.nc => DipTrickleMilliC.nc} | 6 +- ...IPTrickleMilliP.nc => DipTrickleMilliP.nc} | 14 +- tos/lib/net/dip/DipVectorC.nc | 23 ++++ .../net/dip/{DIPVectorP.nc => DipVectorP.nc} | 36 +++--- tos/lib/net/dip/DipVersionC.nc | 14 ++ .../dip/{DIPVersionP.nc => DipVersionP.nc} | 30 ++--- tos/lib/net/dip/DisseminationC.nc | 6 +- tos/lib/net/dip/DisseminatorC.nc | 16 +-- tos/lib/net/dip/DisseminatorP.nc | 10 +- tos/lib/net/dip/README | 17 ++- .../{DIPDecision.nc => DipDecision.nc} | 2 +- .../{DIPEstimates.nc => DipEstimates.nc} | 4 +- .../dip/interfaces/{DIPHelp.nc => DipHelp.nc} | 4 +- .../{DIPReceive.nc => DipReceive.nc} | 2 +- .../dip/interfaces/{DIPSend.nc => DipSend.nc} | 2 +- ...{DIPTrickleTimer.nc => DipTrickleTimer.nc} | 4 +- .../{DIPVersion.nc => DipVersion.nc} | 4 +- 32 files changed, 366 insertions(+), 357 deletions(-) delete mode 100644 tos/lib/net/dip/AMDIPC.nc create mode 100644 tos/lib/net/dip/AMDipC.nc rename tos/lib/net/dip/{AMDIPP.nc => AMDipP.nc} (66%) delete mode 100644 tos/lib/net/dip/DIPDataC.nc delete mode 100644 tos/lib/net/dip/DIPLogicC.nc delete mode 100644 tos/lib/net/dip/DIPSummaryC.nc delete mode 100644 tos/lib/net/dip/DIPVectorC.nc delete mode 100644 tos/lib/net/dip/DIPVersionC.nc rename tos/lib/net/dip/{DIP.h => Dip.h} (100%) create mode 100644 tos/lib/net/dip/DipDataC.nc rename tos/lib/net/dip/{DIPDataP.nc => DipDataP.nc} (68%) create mode 100644 tos/lib/net/dip/DipLogicC.nc rename tos/lib/net/dip/{DIPLogicP.nc => DipLogicP.nc} (62%) create mode 100644 tos/lib/net/dip/DipSummaryC.nc rename tos/lib/net/dip/{DIPSummaryP.nc => DipSummaryP.nc} (84%) rename tos/lib/net/dip/{DIPTrickleMilliC.nc => DipTrickleMilliC.nc} (93%) rename tos/lib/net/dip/{DIPTrickleMilliP.nc => DipTrickleMilliP.nc} (93%) create mode 100644 tos/lib/net/dip/DipVectorC.nc rename tos/lib/net/dip/{DIPVectorP.nc => DipVectorP.nc} (79%) create mode 100644 tos/lib/net/dip/DipVersionC.nc rename tos/lib/net/dip/{DIPVersionP.nc => DipVersionP.nc} (70%) rename tos/lib/net/dip/interfaces/{DIPDecision.nc => DipDecision.nc} (79%) rename tos/lib/net/dip/interfaces/{DIPEstimates.nc => DipEstimates.nc} (92%) rename tos/lib/net/dip/interfaces/{DIPHelp.nc => DipHelp.nc} (89%) rename tos/lib/net/dip/interfaces/{DIPReceive.nc => DipReceive.nc} (69%) rename tos/lib/net/dip/interfaces/{DIPSend.nc => DipSend.nc} (84%) rename tos/lib/net/dip/interfaces/{DIPTrickleTimer.nc => DipTrickleTimer.nc} (97%) rename tos/lib/net/dip/interfaces/{DIPVersion.nc => DipVersion.nc} (59%) diff --git a/tos/lib/net/dip/AMDIPC.nc b/tos/lib/net/dip/AMDIPC.nc deleted file mode 100644 index c1e05136..00000000 --- a/tos/lib/net/dip/AMDIPC.nc +++ /dev/null @@ -1,29 +0,0 @@ -#include - -configuration AMDIPC { - provides interface DIPSend; - provides interface DIPReceive as DataReceive; - provides interface DIPReceive as VectorReceive; - provides interface DIPReceive as SummaryReceive; -} - -implementation { - components AMDIPP; - components new AMSenderC(AM_DIP) as SendC; - components new AMReceiverC(AM_DIP) as ReceiveC; - - AMDIPP.NetAMSend -> SendC.AMSend; - AMDIPP.NetReceive -> ReceiveC.Receive; - - components MainC; - MainC.SoftwareInit -> AMDIPP.Init; - AMDIPP.Boot -> MainC; - - components ActiveMessageC; - AMDIPP.AMSplitControl -> ActiveMessageC; - - DIPSend = AMDIPP.DIPSend; - DataReceive = AMDIPP.DIPDataReceive; - VectorReceive = AMDIPP.DIPVectorReceive; - SummaryReceive = AMDIPP.DIPSummaryReceive; -} diff --git a/tos/lib/net/dip/AMDipC.nc b/tos/lib/net/dip/AMDipC.nc new file mode 100644 index 00000000..2935a1f4 --- /dev/null +++ b/tos/lib/net/dip/AMDipC.nc @@ -0,0 +1,29 @@ +#include + +configuration AMDipC { + provides interface DipSend; + provides interface DipReceive as DataReceive; + provides interface DipReceive as VectorReceive; + provides interface DipReceive as SummaryReceive; +} + +implementation { + components AMDipP; + components new AMSenderC(AM_DIP) as SendC; + components new AMReceiverC(AM_DIP) as ReceiveC; + + AMDipP.NetAMSend -> SendC.AMSend; + AMDipP.NetReceive -> ReceiveC.Receive; + + components MainC; + MainC.SoftwareInit -> AMDipP.Init; + AMDipP.Boot -> MainC; + + components ActiveMessageC; + AMDipP.AMSplitControl -> ActiveMessageC; + + DipSend = AMDipP.DipSend; + DataReceive = AMDipP.DipDataReceive; + VectorReceive = AMDipP.DipVectorReceive; + SummaryReceive = AMDipP.DipSummaryReceive; +} diff --git a/tos/lib/net/dip/AMDIPP.nc b/tos/lib/net/dip/AMDipP.nc similarity index 66% rename from tos/lib/net/dip/AMDIPP.nc rename to tos/lib/net/dip/AMDipP.nc index 7900dfbf..48e3c677 100644 --- a/tos/lib/net/dip/AMDIPP.nc +++ b/tos/lib/net/dip/AMDipP.nc @@ -1,11 +1,11 @@ -module AMDIPP { +module AMDipP { provides interface Init; - provides interface DIPSend; - provides interface DIPReceive as DIPDataReceive; - provides interface DIPReceive as DIPVectorReceive; - provides interface DIPReceive as DIPSummaryReceive; + provides interface DipSend; + provides interface DipReceive as DipDataReceive; + provides interface DipReceive as DipVectorReceive; + provides interface DipReceive as DipSummaryReceive; uses interface AMSend as NetAMSend; uses interface Receive as NetReceive; @@ -27,7 +27,7 @@ implementation { call AMSplitControl.start(); return; } - dbg("AMDIPP", "ActiveMessageC started!\n"); + dbg("AMDipP", "ActiveMessageC started!\n"); } event void AMSplitControl.stopDone(error_t err) { } @@ -37,9 +37,9 @@ implementation { return SUCCESS; } - command error_t DIPSend.send(uint8_t len) { + command error_t DipSend.send(uint8_t len) { error_t err; - dbg("AMDIPP", "Attempting to send data in the air\n"); + dbg("AMDipP", "Attempting to send data in the air\n"); err = call NetAMSend.send(AM_BROADCAST_ADDR, &am_msg, len); if(err == SUCCESS) { busy = TRUE; @@ -47,7 +47,7 @@ implementation { return err; } - command void* DIPSend.getPayloadPtr() { + command void* DipSend.getPayloadPtr() { // returns NULL if message is busy if(busy) { return NULL; @@ -55,12 +55,12 @@ implementation { return call NetAMSend.getPayload(&am_msg, 0); } - command uint8_t DIPSend.maxPayloadLength() { + command uint8_t DipSend.maxPayloadLength() { return call NetAMSend.maxPayloadLength(); } event void NetAMSend.sendDone(message_t* msg, error_t err) { - dbg("AMDIPP", "Data send successfully in the air\n"); + dbg("AMDipP", "Data send successfully in the air\n"); if(msg == &am_msg) { busy = FALSE; } @@ -75,13 +75,13 @@ implementation { type = dmsg->type; switch(type) { case ID_DIP_DATA: - signal DIPDataReceive.receive(dmsg->content, len); + signal DipDataReceive.receive(dmsg->content, len); break; case ID_DIP_VECTOR: - signal DIPVectorReceive.receive(dmsg->content, len); + signal DipVectorReceive.receive(dmsg->content, len); break; case ID_DIP_SUMMARY: - signal DIPSummaryReceive.receive(dmsg->content, len); + signal DipSummaryReceive.receive(dmsg->content, len); break; } return msg; diff --git a/tos/lib/net/dip/DIPDataC.nc b/tos/lib/net/dip/DIPDataC.nc deleted file mode 100644 index 5f98992f..00000000 --- a/tos/lib/net/dip/DIPDataC.nc +++ /dev/null @@ -1,27 +0,0 @@ - -configuration DIPDataC { - provides interface DIPDecision; - - uses interface DIPSend as DataSend; - uses interface DIPReceive as DataReceive; - - uses interface DisseminationUpdate[dip_key_t key]; - uses interface DisseminationValue[dip_key_t key]; - - uses interface DIPHelp; - uses interface DIPEstimates; -} - -implementation { - components DIPDataP; - DIPDecision = DIPDataP; - DataSend = DIPDataP; - DataReceive = DIPDataP; - DisseminationUpdate = DIPDataP; - DisseminationValue = DIPDataP; - DIPHelp = DIPDataP; - DIPEstimates = DIPDataP; - - components LedsC; - DIPDataP.Leds -> LedsC; -} diff --git a/tos/lib/net/dip/DIPLogicC.nc b/tos/lib/net/dip/DIPLogicC.nc deleted file mode 100644 index 5f849367..00000000 --- a/tos/lib/net/dip/DIPLogicC.nc +++ /dev/null @@ -1,48 +0,0 @@ - -#include - -configuration DIPLogicC { - provides interface DisseminationUpdate[dip_key_t key]; - - provides interface StdControl; -} - -implementation { - components DIPLogicP; - DisseminationUpdate = DIPLogicP; - StdControl = DIPLogicP; - - components MainC; - MainC.SoftwareInit -> DIPLogicP; - DIPLogicP.Boot -> MainC; - - components DIPTrickleMilliC; - DIPLogicP.DIPTrickleTimer -> DIPTrickleMilliC; - - components DIPVersionC; - DIPLogicP.VersionUpdate -> DIPVersionC; - DIPLogicP.DIPHelp -> DIPVersionC; - - components AMDIPC; - - components DIPDataC; - DIPLogicP.DIPDataDecision -> DIPDataC; - DIPDataC.DataSend -> AMDIPC.DIPSend; - DIPDataC.DataReceive -> AMDIPC.DataReceive; - DIPDataC.DIPHelp -> DIPVersionC; - DIPDataC.DIPEstimates -> DIPLogicP; - - components DIPVectorC; - DIPLogicP.DIPVectorDecision -> DIPVectorC; - DIPVectorC.VectorSend -> AMDIPC.DIPSend; - DIPVectorC.VectorReceive -> AMDIPC.VectorReceive; - DIPVectorC.DIPHelp -> DIPVersionC; - DIPVectorC.DIPEstimates -> DIPLogicP; - - components DIPSummaryC; - DIPLogicP.DIPSummaryDecision -> DIPSummaryC; - DIPSummaryC.SummarySend -> AMDIPC.DIPSend; - DIPSummaryC.SummaryReceive -> AMDIPC.SummaryReceive; - DIPSummaryC.DIPHelp -> DIPVersionC; - DIPSummaryC.DIPEstimates -> DIPLogicP; -} diff --git a/tos/lib/net/dip/DIPSummaryC.nc b/tos/lib/net/dip/DIPSummaryC.nc deleted file mode 100644 index cb1d1770..00000000 --- a/tos/lib/net/dip/DIPSummaryC.nc +++ /dev/null @@ -1,22 +0,0 @@ - -configuration DIPSummaryC { - provides interface DIPDecision; - - uses interface DIPSend as SummarySend; - uses interface DIPReceive as SummaryReceive; - - uses interface DIPHelp; - uses interface DIPEstimates; -} - -implementation { - components DIPSummaryP; - DIPDecision = DIPSummaryP; - SummarySend = DIPSummaryP; - SummaryReceive = DIPSummaryP; - DIPHelp = DIPSummaryP; - DIPEstimates = DIPSummaryP; - - components RandomC; - DIPSummaryP.Random -> RandomC; -} diff --git a/tos/lib/net/dip/DIPVectorC.nc b/tos/lib/net/dip/DIPVectorC.nc deleted file mode 100644 index 14d79f7a..00000000 --- a/tos/lib/net/dip/DIPVectorC.nc +++ /dev/null @@ -1,23 +0,0 @@ - -configuration DIPVectorC { - provides interface DIPDecision; - - uses interface DIPSend as VectorSend; - uses interface DIPReceive as VectorReceive; - - uses interface DIPHelp; - uses interface DIPEstimates; -} - -implementation { - components DIPVectorP; - DIPDecision = DIPVectorP; - VectorSend = DIPVectorP; - VectorReceive = DIPVectorP; - DIPHelp = DIPVectorP; - DIPEstimates = DIPVectorP; - - components RandomC; - DIPVectorP.Random -> RandomC; - -} diff --git a/tos/lib/net/dip/DIPVersionC.nc b/tos/lib/net/dip/DIPVersionC.nc deleted file mode 100644 index fbf3c94e..00000000 --- a/tos/lib/net/dip/DIPVersionC.nc +++ /dev/null @@ -1,14 +0,0 @@ - -#include - -configuration DIPVersionC { - provides interface DIPHelp; - - provides interface DisseminationUpdate[dip_key_t key]; -} - -implementation { - components DIPVersionP; - DIPHelp = DIPVersionP; - DisseminationUpdate = DIPVersionP; -} diff --git a/tos/lib/net/dip/DIP.h b/tos/lib/net/dip/Dip.h similarity index 100% rename from tos/lib/net/dip/DIP.h rename to tos/lib/net/dip/Dip.h diff --git a/tos/lib/net/dip/DipDataC.nc b/tos/lib/net/dip/DipDataC.nc new file mode 100644 index 00000000..0fd2a4d9 --- /dev/null +++ b/tos/lib/net/dip/DipDataC.nc @@ -0,0 +1,27 @@ + +configuration DipDataC { + provides interface DipDecision; + + uses interface DipSend as DataSend; + uses interface DipReceive as DataReceive; + + uses interface DisseminationUpdate[dip_key_t key]; + uses interface DisseminationValue[dip_key_t key]; + + uses interface DipHelp; + uses interface DipEstimates; +} + +implementation { + components DipDataP; + DipDecision = DipDataP; + DataSend = DipDataP; + DataReceive = DipDataP; + DisseminationUpdate = DipDataP; + DisseminationValue = DipDataP; + DipHelp = DipDataP; + DipEstimates = DipDataP; + + components LedsC; + DipDataP.Leds -> LedsC; +} diff --git a/tos/lib/net/dip/DIPDataP.nc b/tos/lib/net/dip/DipDataP.nc similarity index 68% rename from tos/lib/net/dip/DIPDataP.nc rename to tos/lib/net/dip/DipDataP.nc index 02a14b53..27451206 100644 --- a/tos/lib/net/dip/DIPDataP.nc +++ b/tos/lib/net/dip/DipDataP.nc @@ -1,17 +1,17 @@ -#include +#include -module DIPDataP { - provides interface DIPDecision; +module DipDataP { + provides interface DipDecision; - uses interface DIPSend as DataSend; - uses interface DIPReceive as DataReceive; + uses interface DipSend as DataSend; + uses interface DipReceive as DataReceive; uses interface DisseminationUpdate[dip_key_t key]; uses interface DisseminationValue[dip_key_t key]; - uses interface DIPHelp; - uses interface DIPEstimates; + uses interface DipHelp; + uses interface DipEstimates; uses interface Leds; } @@ -19,15 +19,15 @@ module DIPDataP { implementation { uint8_t commRate = 0; - command uint8_t DIPDecision.getCommRate() { + command uint8_t DipDecision.getCommRate() { return commRate; } - command void DIPDecision.resetCommRate() { + command void DipDecision.resetCommRate() { commRate = 0; } - command error_t DIPDecision.send() { + command error_t DipDecision.send() { // Scan all estimates and send the highest estimate in deterministic order dip_index_t i; dip_index_t high_i; @@ -39,7 +39,7 @@ implementation { dip_data_msg_t* ddmsg; const dip_data_t* data; - ests = call DIPEstimates.getEstimates(); + ests = call DipEstimates.getEstimates(); high_i = 0; high_est = 0; for(i = 0; i < UQCOUNT_DIP; i++) { @@ -48,8 +48,8 @@ implementation { high_est = ests[i]; } } - key = call DIPHelp.indexToKey(high_i); - ver = call DIPHelp.keyToVersion(key); + key = call DipHelp.indexToKey(high_i); + ver = call DipHelp.keyToVersion(key); data = call DisseminationValue.get[key](); dmsg = (dip_msg_t*) call DataSend.getPayloadPtr(); if(dmsg == NULL) { @@ -63,8 +63,8 @@ implementation { ddmsg->size = sizeof(dip_data_t); memcpy(ddmsg->data, data, sizeof(dip_data_t)); - call DIPEstimates.decEstimateByKey(key); - dbg("DIPDataP", "Data sent with key %x and version %08x\n", key, ver); + call DipEstimates.decEstimateByKey(key); + dbg("DipDataP", "Data sent with key %x and version %08x\n", key, ver); return call DataSend.send(sizeof(dip_data_msg_t) + sizeof(dip_msg_t) + sizeof(dip_data_t)); } @@ -79,20 +79,20 @@ implementation { ddmsg = (dip_data_msg_t*) payload; key = ddmsg->key; msgVer = ddmsg->version; - myVer = call DIPHelp.keyToVersion(key); - dbg("DIPDataP", "Data rcved with key %x and version %08x\n", key, msgVer); + myVer = call DipHelp.keyToVersion(key); + dbg("DipDataP", "Data rcved with key %x and version %08x\n", key, msgVer); // TODO: handle the invalid versions if(myVer < msgVer) { call DisseminationUpdate.change[key]((dip_data_t*)ddmsg->data); - call DIPHelp.setVersion(key, msgVer); - call DIPEstimates.setDataEstimate(key); + call DipHelp.setVersion(key, msgVer); + call DipEstimates.setDataEstimate(key); } else if (myVer > msgVer) { - call DIPEstimates.setDataEstimate(key); + call DipEstimates.setDataEstimate(key); } else { - call DIPEstimates.decEstimateByKey(key); + call DipEstimates.decEstimateByKey(key); } } diff --git a/tos/lib/net/dip/DipLogicC.nc b/tos/lib/net/dip/DipLogicC.nc new file mode 100644 index 00000000..8fad75d4 --- /dev/null +++ b/tos/lib/net/dip/DipLogicC.nc @@ -0,0 +1,48 @@ + +#include + +configuration DipLogicC { + provides interface DisseminationUpdate[dip_key_t key]; + + provides interface StdControl; +} + +implementation { + components DipLogicP; + DisseminationUpdate = DipLogicP; + StdControl = DipLogicP; + + components MainC; + MainC.SoftwareInit -> DipLogicP; + DipLogicP.Boot -> MainC; + + components DipTrickleMilliC; + DipLogicP.DipTrickleTimer -> DipTrickleMilliC; + + components DipVersionC; + DipLogicP.VersionUpdate -> DipVersionC; + DipLogicP.DipHelp -> DipVersionC; + + components AMDipC; + + components DipDataC; + DipLogicP.DipDataDecision -> DipDataC; + DipDataC.DataSend -> AMDipC.DipSend; + DipDataC.DataReceive -> AMDipC.DataReceive; + DipDataC.DipHelp -> DipVersionC; + DipDataC.DipEstimates -> DipLogicP; + + components DipVectorC; + DipLogicP.DipVectorDecision -> DipVectorC; + DipVectorC.VectorSend -> AMDipC.DipSend; + DipVectorC.VectorReceive -> AMDipC.VectorReceive; + DipVectorC.DipHelp -> DipVersionC; + DipVectorC.DipEstimates -> DipLogicP; + + components DipSummaryC; + DipLogicP.DipSummaryDecision -> DipSummaryC; + DipSummaryC.SummarySend -> AMDipC.DipSend; + DipSummaryC.SummaryReceive -> AMDipC.SummaryReceive; + DipSummaryC.DipHelp -> DipVersionC; + DipSummaryC.DipEstimates -> DipLogicP; +} diff --git a/tos/lib/net/dip/DIPLogicP.nc b/tos/lib/net/dip/DipLogicP.nc similarity index 62% rename from tos/lib/net/dip/DIPLogicP.nc rename to tos/lib/net/dip/DipLogicP.nc index 3fd52a61..8b36f8cd 100644 --- a/tos/lib/net/dip/DIPLogicP.nc +++ b/tos/lib/net/dip/DipLogicP.nc @@ -1,20 +1,20 @@ -#include +#include -module DIPLogicP { +module DipLogicP { provides interface DisseminationUpdate[dip_key_t key]; - provides interface DIPEstimates; + provides interface DipEstimates; provides interface Init; provides interface StdControl; uses interface Boot; - uses interface DIPTrickleTimer; + uses interface DipTrickleTimer; uses interface DisseminationUpdate as VersionUpdate[dip_key_t key]; - uses interface DIPDecision as DIPDataDecision; - uses interface DIPDecision as DIPVectorDecision; - uses interface DIPDecision as DIPSummaryDecision; - uses interface DIPHelp; + uses interface DipDecision as DipDataDecision; + uses interface DipDecision as DipVectorDecision; + uses interface DipDecision as DipSummaryDecision; + uses interface DipHelp; } implementation { @@ -34,19 +34,19 @@ implementation { DIP_DATA_ESTIMATE = getDataEstimate(UQCOUNT_DIP); DIP_MAX_ESTIMATE = getMaxEstimate(UQCOUNT_DIP); DIP_VECTOR_ESTIMATE = DIP_DATA_ESTIMATE - 1; - totalPossible = call DIPEstimates.estimateToHashlength(0); - dbg("DIPLogicP", "Real Total: %u, DIP Total: %u\n", UQCOUNT_DIP, totalPossible); + totalPossible = call DipEstimates.estimateToHashlength(0); + dbg("DipLogicP", "Real Total: %u, Dip Total: %u\n", UQCOUNT_DIP, totalPossible); if(totalPossible < UQCOUNT_DIP) { DIP_DATA_ESTIMATE++; DIP_MAX_ESTIMATE++; DIP_VECTOR_ESTIMATE++; - totalPossible = call DIPEstimates.estimateToHashlength(0); + totalPossible = call DipEstimates.estimateToHashlength(0); } - dbg("DIPLogicP", "Real Total: %u, DIP New Total: %u\n", UQCOUNT_DIP, totalPossible); - dbg("DIPLogicP","DATA_ESTIMATE initialized to %u\n", DIP_DATA_ESTIMATE); - dbg("DIPLogicP","MAX_ESTIMATE initialized to %u\n", DIP_MAX_ESTIMATE); - dbg("DIPLogicP","VECT_ESTIMATE initialized to %u\n", DIP_VECTOR_ESTIMATE); - dbg("DIPLogicP","DIP ready\n"); + dbg("DipLogicP", "Real Total: %u, DIP New Total: %u\n", UQCOUNT_DIP, totalPossible); + dbg("DipLogicP","DATA_ESTIMATE initialized to %u\n", DIP_DATA_ESTIMATE); + dbg("DipLogicP","MAX_ESTIMATE initialized to %u\n", DIP_MAX_ESTIMATE); + dbg("DipLogicP","VECT_ESTIMATE initialized to %u\n", DIP_VECTOR_ESTIMATE); + dbg("DipLogicP","DIP ready\n"); return SUCCESS; } @@ -56,25 +56,25 @@ implementation { } command error_t StdControl.start() { - return call DIPTrickleTimer.start(); + return call DipTrickleTimer.start(); } command error_t StdControl.stop() { - call DIPTrickleTimer.stop(); + call DipTrickleTimer.stop(); return SUCCESS; } command void DisseminationUpdate.change[dip_key_t key](dip_data_t* val) { dip_index_t i; - dbg("DIPLogicP","App notified key %x is new\n", key); - i = call DIPHelp.keyToIndex(key); + dbg("DipLogicP","App notified key %x is new\n", key); + i = call DipHelp.keyToIndex(key); estimates[i] = DIP_DATA_ESTIMATE; call VersionUpdate.change[key](val); - call DIPTrickleTimer.reset(); + call DipTrickleTimer.reset(); } - event uint32_t DIPTrickleTimer.requestWindowSize() { + event uint32_t DipTrickleTimer.requestWindowSize() { dip_index_t i; dip_estimate_t max = 0; @@ -92,69 +92,69 @@ implementation { } } - dbg("DIPLogicP", "Window size requested, give %u\n", windowSize); + dbg("DipLogicP", "Window size requested, give %u\n", windowSize); return windowSize; } - event void DIPTrickleTimer.fired() { + event void DipTrickleTimer.fired() { dip_index_t i; uint8_t decision; - dbg("DIPLogicP","Trickle Timer fired!\n"); + dbg("DipLogicP","Trickle Timer fired!\n"); for(i = 0; i < UQCOUNT_DIP; i++) { - dbg("DIPLogicP","Index-%u Estimate-%u\n", i, estimates[i]); + dbg("DipLogicP","Index-%u Estimate-%u\n", i, estimates[i]); } decision = sendDecision(); switch(decision) { case ID_DIP_INVALID: - dbg("DIPLogicP", "Decision to SUPPRESS\n"); + dbg("DipLogicP", "Decision to SUPPRESS\n"); break; case ID_DIP_SUMMARY: - dbg("DIPLogicP", "Decision to SUMMARY\n"); - call DIPSummaryDecision.send(); + dbg("DipLogicP", "Decision to SUMMARY\n"); + call DipSummaryDecision.send(); break; case ID_DIP_VECTOR: - dbg("DIPLogicP", "Decision to VECTOR\n"); - call DIPVectorDecision.send(); + dbg("DipLogicP", "Decision to VECTOR\n"); + call DipVectorDecision.send(); break; case ID_DIP_DATA: - dbg("DIPLogicP", "Decision to DATA\n"); - call DIPDataDecision.send(); + dbg("DipLogicP", "Decision to DATA\n"); + call DipDataDecision.send(); break; } - call DIPDataDecision.resetCommRate(); - call DIPVectorDecision.resetCommRate(); - call DIPSummaryDecision.resetCommRate(); + call DipDataDecision.resetCommRate(); + call DipVectorDecision.resetCommRate(); + call DipSummaryDecision.resetCommRate(); } - command dip_estimate_t* DIPEstimates.getEstimates() { + command dip_estimate_t* DipEstimates.getEstimates() { return estimates; } - command void DIPEstimates.decEstimateByIndex(dip_index_t i) { + command void DipEstimates.decEstimateByIndex(dip_index_t i) { if(estimates[i] != 0) { estimates[i] = estimates[i] - 1; } } - command void DIPEstimates.decEstimateByKey(dip_key_t key) { + command void DipEstimates.decEstimateByKey(dip_key_t key) { dip_index_t i; - i = call DIPHelp.keyToIndex(key); - call DIPEstimates.decEstimateByIndex(i); + i = call DipHelp.keyToIndex(key); + call DipEstimates.decEstimateByIndex(i); } - command dip_estimate_t DIPEstimates.hashlengthToEstimate(dip_hashlen_t len) { + command dip_estimate_t DipEstimates.hashlengthToEstimate(dip_hashlen_t len) { if(len == UQCOUNT_DIP) { len = totalPossible; } return DIP_MAX_ESTIMATE - diplog(DIP_SUMMARY_VALUES_PER_PACKET, len); } - command dip_hashlen_t DIPEstimates.estimateToHashlength(dip_estimate_t est) { + command dip_hashlen_t DipEstimates.estimateToHashlength(dip_estimate_t est) { uint8_t expt, base; uint16_t val; @@ -181,30 +181,30 @@ implementation { return counter - 1; } - command void DIPEstimates.setDataEstimate(dip_key_t key) { + command void DipEstimates.setDataEstimate(dip_key_t key) { dip_index_t i; - i = call DIPHelp.keyToIndex(key); + i = call DipHelp.keyToIndex(key); estimates[i] = DIP_DATA_ESTIMATE; - call DIPTrickleTimer.reset(); + call DipTrickleTimer.reset(); } - command void DIPEstimates.setVectorEstimate(dip_key_t key) { + command void DipEstimates.setVectorEstimate(dip_key_t key) { dip_index_t i; - i = call DIPHelp.keyToIndex(key); + i = call DipHelp.keyToIndex(key); if(estimates[i] < DIP_VECTOR_ESTIMATE) { estimates[i] = DIP_VECTOR_ESTIMATE; } - call DIPTrickleTimer.reset(); + call DipTrickleTimer.reset(); } - command void DIPEstimates.setSummaryEstimateByIndex(dip_index_t ind, + command void DipEstimates.setSummaryEstimateByIndex(dip_index_t ind, dip_estimate_t est) { if(estimates[ind] < est) { estimates[ind] = est; } - call DIPTrickleTimer.reset(); + call DipTrickleTimer.reset(); } uint16_t dipexp(uint16_t base, uint16_t expt) { @@ -250,14 +250,14 @@ implementation { uint16_t E, D, L, V, C; - allEsts = call DIPEstimates.getEstimates(); + allEsts = call DipEstimates.getEstimates(); highEst = 0; - dataCommRate = call DIPDataDecision.getCommRate(); - vectorCommRate = call DIPVectorDecision.getCommRate(); - summaryCommRate = call DIPSummaryDecision.getCommRate(); + dataCommRate = call DipDataDecision.getCommRate(); + vectorCommRate = call DipVectorDecision.getCommRate(); + summaryCommRate = call DipSummaryDecision.getCommRate(); if(dataCommRate > 1) { - dbg("DIPLogicP", "Heard data\n"); + dbg("DipLogicP", "Heard data\n"); return ID_DIP_INVALID; } @@ -270,12 +270,12 @@ implementation { // didn't send or hear data at this point if(vectorCommRate + summaryCommRate > 1) { - dbg("DIPLogicP", "Heard an advertisement\n"); + dbg("DipLogicP", "Heard an advertisement\n"); return ID_DIP_INVALID; } // corner case, if hash is too short - if(call DIPEstimates.estimateToHashlength(highEst) <= DIP_VECTOR_VALUES_PER_PACKET) { + if(call DipEstimates.estimateToHashlength(highEst) <= DIP_VECTOR_VALUES_PER_PACKET) { return ID_DIP_VECTOR; } @@ -284,10 +284,10 @@ implementation { if(C == 0) C = 1; // don't want to divide by zero E = highEst; D = DIP_DATA_ESTIMATE; - L = call DIPEstimates.estimateToHashlength(E); + L = call DipEstimates.estimateToHashlength(E); V = DIP_VECTOR_VALUES_PER_PACKET; - dbg("DIPLogicP", "D=%u, E=%u, L=%u, V=%u, C=%u\n", D, E, L, V, C); + dbg("DipLogicP", "D=%u, E=%u, L=%u, V=%u, C=%u\n", D, E, L, V, C); if((D - E) < (L / (C * V))) { return ID_DIP_SUMMARY; } diff --git a/tos/lib/net/dip/DipSummaryC.nc b/tos/lib/net/dip/DipSummaryC.nc new file mode 100644 index 00000000..5d228182 --- /dev/null +++ b/tos/lib/net/dip/DipSummaryC.nc @@ -0,0 +1,22 @@ + +configuration DipSummaryC { + provides interface DipDecision; + + uses interface DipSend as SummarySend; + uses interface DipReceive as SummaryReceive; + + uses interface DipHelp; + uses interface DipEstimates; +} + +implementation { + components DipSummaryP; + DipDecision = DipSummaryP; + SummarySend = DipSummaryP; + SummaryReceive = DipSummaryP; + DipHelp = DipSummaryP; + DipEstimates = DipSummaryP; + + components RandomC; + DipSummaryP.Random -> RandomC; +} diff --git a/tos/lib/net/dip/DIPSummaryP.nc b/tos/lib/net/dip/DipSummaryP.nc similarity index 84% rename from tos/lib/net/dip/DIPSummaryP.nc rename to tos/lib/net/dip/DipSummaryP.nc index 7b49e305..805831c9 100644 --- a/tos/lib/net/dip/DIPSummaryP.nc +++ b/tos/lib/net/dip/DipSummaryP.nc @@ -1,16 +1,16 @@ // Need to deal with non powers of base for the length of the hash -#include +#include -module DIPSummaryP { - provides interface DIPDecision; +module DipSummaryP { + provides interface DipDecision; - uses interface DIPSend as SummarySend; - uses interface DIPReceive as SummaryReceive; + uses interface DipSend as SummarySend; + uses interface DipReceive as SummaryReceive; - uses interface DIPHelp; - uses interface DIPEstimates; + uses interface DipHelp; + uses interface DipEstimates; uses interface Random; } @@ -32,15 +32,15 @@ implementation { // this can be combined with pairs_t in DIPVectorP maybe? dip_estimate_t shadowEstimates[UQCOUNT_DIP]; - command uint8_t DIPDecision.getCommRate() { + command uint8_t DipDecision.getCommRate() { return commRate; } - command void DIPDecision.resetCommRate() { + command void DipDecision.resetCommRate() { commRate = 0; } - command error_t DIPDecision.send() { + command error_t DipDecision.send() { dip_index_t i, j, left, right; dip_version_t* allVers; dip_estimate_t* allEsts; @@ -53,8 +53,8 @@ implementation { dmsg->type = ID_DIP_SUMMARY; dsmsg = (dip_summary_msg_t*) dmsg->content; - allVers = call DIPHelp.getAllVersions(); - allEsts = call DIPEstimates.getEstimates(); + allVers = call DipHelp.getAllVersions(); + allEsts = call DipEstimates.getEstimates(); salt = call Random.rand32(); for(i = 0; i < UQCOUNT_DIP; i++) { @@ -63,14 +63,14 @@ implementation { for(i = 0; i < DIP_SUMMARY_ENTRIES_PER_PACKET; i += 3) { findRangeShadow(&left, &right); - dbg("DIPSummaryP", "Found range %u, %u\n", left, right); + dbg("DipSummaryP", "Found range %u, %u\n", left, right); dsmsg->info[i] = buildRange(left, right); dsmsg->info[i+1] = computeHash(left, right, allVers, salt); dsmsg->info[i+2] = computeBloomHash(left, right, allVers, salt); for(j = left; j < right; j++) { shadowEstimates[j] = 0; } - dbg("DIPSummaryP", "Hash Entry: %08x %08x %08x\n", + dbg("DipSummaryP", "Hash Entry: %08x %08x %08x\n", dsmsg->info[i], dsmsg->info[i+1], dsmsg->info[i+2]); } @@ -100,7 +100,7 @@ implementation { dsmsg = (dip_summary_msg_t*) payload; unitlen = dsmsg->unitLen; salt = dsmsg->salt; - allVers = call DIPHelp.getAllVersions(); + allVers = call DipHelp.getAllVersions(); for(i = 0; i < unitlen; i += 3) { splitRange(dsmsg->info[i], &left, &right); @@ -141,8 +141,8 @@ implementation { est1 = est2; } } - len = call DIPEstimates.estimateToHashlength(est1); - dbg("DIPSummaryP","Highest key at %u with estimate %u and thus len %u\n", + len = call DipEstimates.estimateToHashlength(est1); + dbg("DipSummaryP","Highest key at %u with estimate %u and thus len %u\n", highIndex, est1, len); // initialize bounds on range @@ -161,12 +161,12 @@ implementation { est1 = shadowEstimates[i]; highEstSum += est1; } - dbg("DIPSummaryP", "First range: %u, %u = %u\n", LBound, LBound + len, + dbg("DipSummaryP", "First range: %u, %u = %u\n", LBound, LBound + len, highEstSum); // iterate through the range runEstSum = highEstSum; - dbg("DIPSummaryP", "Iterating from %u to %u\n", LBound, RBound); + dbg("DipSummaryP", "Iterating from %u to %u\n", LBound, RBound); for(i = LBound ; i + len <= RBound; i++) { est1 = shadowEstimates[i]; est2 = shadowEstimates[i + len]; @@ -175,7 +175,7 @@ implementation { if(runEstSum > highEstSum) { highEstSum = runEstSum; highIndex = i + 1; - dbg("DIPSummaryP", "Next range: %u, %u = %u\n", highIndex, + dbg("DipSummaryP", "Next range: %u, %u = %u\n", highIndex, highIndex + len, highEstSum); } } @@ -238,7 +238,7 @@ implementation { dip_index_t i; for(i = left; i < right; i++) { - call DIPEstimates.decEstimateByIndex(i); + call DipEstimates.decEstimateByIndex(i); } } @@ -251,19 +251,19 @@ implementation { uint32_t indexSeqPair[2]; uint32_t bit; - est = call DIPEstimates.hashlengthToEstimate(right - left) + 1; // + 1 to improve search + est = call DipEstimates.hashlengthToEstimate(right - left) + 1; // + 1 to improve search for(i = left; i < right; i++) { indexSeqPair[0] = i; indexSeqPair[1] = data[i]; bit = computeHash(0, 2, indexSeqPair, salt) % 32; - key = call DIPHelp.indexToKey(i); + key = call DipHelp.indexToKey(i); if(bHash & (1 << bit)) { //set estimate only if better - call DIPEstimates.setSummaryEstimateByIndex(i, est); + call DipEstimates.setSummaryEstimateByIndex(i, est); } else { dbg("DisseminationDebug", "Key %x definitely different\n", key); - call DIPEstimates.setVectorEstimate(key); + call DipEstimates.setVectorEstimate(key); } } } diff --git a/tos/lib/net/dip/DIPTrickleMilliC.nc b/tos/lib/net/dip/DipTrickleMilliC.nc similarity index 93% rename from tos/lib/net/dip/DIPTrickleMilliC.nc rename to tos/lib/net/dip/DipTrickleMilliC.nc index 197e271a..fc553e7d 100644 --- a/tos/lib/net/dip/DIPTrickleMilliC.nc +++ b/tos/lib/net/dip/DipTrickleMilliC.nc @@ -40,11 +40,11 @@ */ -configuration DIPTrickleMilliC { - provides interface DIPTrickleTimer as TrickleTimer; +configuration DipTrickleMilliC { + provides interface DipTrickleTimer as TrickleTimer; } implementation { - components DIPTrickleMilliP as TrickleP; + components DipTrickleMilliP as TrickleP; components MainC, RandomC; components new TimerMilliC() as PeriodicIntervalTimer; components new TimerMilliC() as SingleEventTimer; diff --git a/tos/lib/net/dip/DIPTrickleMilliP.nc b/tos/lib/net/dip/DipTrickleMilliP.nc similarity index 93% rename from tos/lib/net/dip/DIPTrickleMilliP.nc rename to tos/lib/net/dip/DipTrickleMilliP.nc index 99ca4ecb..f8d3e2b6 100644 --- a/tos/lib/net/dip/DIPTrickleMilliP.nc +++ b/tos/lib/net/dip/DipTrickleMilliP.nc @@ -39,12 +39,12 @@ */ #include -#include +#include -module DIPTrickleMilliP { +module DipTrickleMilliP { provides { interface Init; - interface DIPTrickleTimer as TrickleTimer; + interface DipTrickleTimer as TrickleTimer; } uses { interface Timer as PeriodicIntervalTimer; @@ -67,7 +67,7 @@ implementation { */ command error_t TrickleTimer.start() { call PeriodicIntervalTimer.startOneShot(period); - dbg("DIPTrickleMilliP", + dbg("DipTrickleMilliP", "Starting trickle timer @ %s\n", sim_time_string()); return SUCCESS; } @@ -77,7 +77,7 @@ implementation { */ command void TrickleTimer.stop() { call PeriodicIntervalTimer.stop(); - dbg("DIPTrickleMilliP", + dbg("DipTrickleMilliP", "Stopping trickle timer @ %s\n", sim_time_string()); } @@ -89,7 +89,7 @@ implementation { period = DIP_TAU_LOW; call PeriodicIntervalTimer.stop(); call PeriodicIntervalTimer.startOneShot(period); - dbg("DIPTrickleMilliP", + dbg("DipTrickleMilliP", "Resetting trickle timer @ %s\n", sim_time_string()); } @@ -104,7 +104,7 @@ implementation { uint32_t dtfire; dtfire = (call Random.rand16() % (period / 2)) + (period / 2); - dbg("DIPTrickleMilliP", "Scheduling Trickle event with %u\n", dtfire); + dbg("DipTrickleMilliP", "Scheduling Trickle event with %u\n", dtfire); call SingleEventTimer.startOneShot(dtfire); period = signal TrickleTimer.requestWindowSize(); call PeriodicIntervalTimer.startOneShot(period); diff --git a/tos/lib/net/dip/DipVectorC.nc b/tos/lib/net/dip/DipVectorC.nc new file mode 100644 index 00000000..a906da8e --- /dev/null +++ b/tos/lib/net/dip/DipVectorC.nc @@ -0,0 +1,23 @@ + +configuration DipVectorC { + provides interface DipDecision; + + uses interface DipSend as VectorSend; + uses interface DipReceive as VectorReceive; + + uses interface DipHelp; + uses interface DipEstimates; +} + +implementation { + components DipVectorP; + DipDecision = DipVectorP; + VectorSend = DipVectorP; + VectorReceive = DipVectorP; + DipHelp = DipVectorP; + DipEstimates = DipVectorP; + + components RandomC; + DipVectorP.Random -> RandomC; + +} diff --git a/tos/lib/net/dip/DIPVectorP.nc b/tos/lib/net/dip/DipVectorP.nc similarity index 79% rename from tos/lib/net/dip/DIPVectorP.nc rename to tos/lib/net/dip/DipVectorP.nc index 4f775174..a892ad46 100644 --- a/tos/lib/net/dip/DIPVectorP.nc +++ b/tos/lib/net/dip/DipVectorP.nc @@ -1,14 +1,14 @@ -#include +#include -module DIPVectorP { - provides interface DIPDecision; +module DipVectorP { + provides interface DipDecision; - uses interface DIPSend as VectorSend; - uses interface DIPReceive as VectorReceive; + uses interface DipSend as VectorSend; + uses interface DipReceive as VectorReceive; - uses interface DIPHelp; - uses interface DIPEstimates; + uses interface DipHelp; + uses interface DipEstimates; uses interface Random; } @@ -24,15 +24,15 @@ implementation { int myComparator(const void* a, const void* b); void randomizeRun(pairs_t* localPairs, dip_index_t length); - command uint8_t DIPDecision.getCommRate() { + command uint8_t DipDecision.getCommRate() { return commRate; } - command void DIPDecision.resetCommRate() { + command void DipDecision.resetCommRate() { commRate = 0; } - command error_t DIPDecision.send() { + command error_t DipDecision.send() { dip_index_t i, j, r; dip_key_t sendkey; dip_estimate_t* ests; @@ -45,10 +45,10 @@ implementation { return FAIL; } - ests = call DIPEstimates.getEstimates(); + ests = call DipEstimates.getEstimates(); // get all estimates and sort for(i = 0; i < UQCOUNT_DIP; i++) { - pairs[i].key = call DIPHelp.indexToKey(i); + pairs[i].key = call DipHelp.indexToKey(i); pairs[i].estimate = ests[i]; } qsort(pairs, UQCOUNT_DIP, sizeof(pairs_t), myComparator); @@ -73,9 +73,9 @@ implementation { i += 2, j++) { sendkey = pairs[j].key; dvmsg->vector[i] = sendkey; - dvmsg->vector[i+1] = call DIPHelp.keyToVersion(sendkey); + dvmsg->vector[i+1] = call DipHelp.keyToVersion(sendkey); // adjust estimate - call DIPEstimates.decEstimateByKey(sendkey); + call DipEstimates.decEstimateByKey(sendkey); } return call VectorSend.send(sizeof(dip_msg_t) + sizeof(dip_vector_msg_t) + @@ -98,17 +98,17 @@ implementation { for(i = 0; i < unitlen; i += 2) { vectorkey = dvmsg->vector[i]; vectorver = dvmsg->vector[i+1]; - myver = call DIPHelp.keyToVersion(vectorkey); + myver = call DipHelp.keyToVersion(vectorkey); // TODO: handle the invalid versions if(myver < vectorver) { - call DIPEstimates.setVectorEstimate(vectorkey); + call DipEstimates.setVectorEstimate(vectorkey); } else if(myver > vectorver) { - call DIPEstimates.setDataEstimate(vectorkey); + call DipEstimates.setDataEstimate(vectorkey); } else if(myver == vectorver) { - call DIPEstimates.decEstimateByKey(vectorkey); + call DipEstimates.decEstimateByKey(vectorkey); } } diff --git a/tos/lib/net/dip/DipVersionC.nc b/tos/lib/net/dip/DipVersionC.nc new file mode 100644 index 00000000..8a80e32f --- /dev/null +++ b/tos/lib/net/dip/DipVersionC.nc @@ -0,0 +1,14 @@ + +#include + +configuration DipVersionC { + provides interface DipHelp; + + provides interface DisseminationUpdate[dip_key_t key]; +} + +implementation { + components DipVersionP; + DipHelp = DipVersionP; + DisseminationUpdate = DipVersionP; +} diff --git a/tos/lib/net/dip/DIPVersionP.nc b/tos/lib/net/dip/DipVersionP.nc similarity index 70% rename from tos/lib/net/dip/DIPVersionP.nc rename to tos/lib/net/dip/DipVersionP.nc index 9c2afefa..87922a15 100644 --- a/tos/lib/net/dip/DIPVersionP.nc +++ b/tos/lib/net/dip/DipVersionP.nc @@ -1,6 +1,6 @@ -module DIPVersionP { - provides interface DIPHelp; +module DipVersionP { + provides interface DipHelp; provides interface DisseminationUpdate[dip_key_t key]; } @@ -13,16 +13,16 @@ implementation { dip_version_t versions[UQCOUNT_DIP]; dip_index_t count = 0; - command void DIPHelp.registerKey(dip_key_t key) { + command void DipHelp.registerKey(dip_key_t key) { dip_index_t i; keys[count] = key; count = count + 1; if(count == UQCOUNT_DIP) { qsort(keys, UQCOUNT_DIP, sizeof(dip_key_t), lessThan); - dbg("DIPVersionP","Key registration complete!\n"); + dbg("DipVersionP","Key registration complete!\n"); for(i = 0; i < UQCOUNT_DIP; i++) { - dbg("DIPVersionP","Key %x\n", keys[i]); + dbg("DipVersionP","Key %x\n", keys[i]); } } } @@ -31,7 +31,7 @@ implementation { dip_index_t i; dip_version_t ver; - i = call DIPHelp.keyToIndex(key); + i = call DipHelp.keyToIndex(key); ver = versions[i]; // the version has node ID embedded in it, so need to do some shifts @@ -44,7 +44,7 @@ implementation { versions[i] = ver; } - command dip_index_t DIPHelp.keyToIndex(dip_key_t key) { + command dip_index_t DipHelp.keyToIndex(dip_key_t key) { dip_index_t answer; dip_index_t i; @@ -56,30 +56,30 @@ implementation { break; } } - dbg("DIPVersionP", "Converting key %x to index %u\n", key, answer); + dbg("DipVersionP", "Converting key %x to index %u\n", key, answer); return answer; } - command dip_key_t DIPHelp.indexToKey(dip_index_t ind) { + command dip_key_t DipHelp.indexToKey(dip_index_t ind) { return keys[ind]; } - command dip_version_t DIPHelp.keyToVersion(dip_key_t key) { + command dip_version_t DipHelp.keyToVersion(dip_key_t key) { dip_index_t i; - i = call DIPHelp.keyToIndex(key); + i = call DipHelp.keyToIndex(key); return versions[i]; } - command void DIPHelp.setVersion(dip_key_t key, dip_version_t ver) { + command void DipHelp.setVersion(dip_key_t key, dip_version_t ver) { dip_index_t i; - i = call DIPHelp.keyToIndex(key); + i = call DipHelp.keyToIndex(key); versions[i] = ver; - dbg("DIPVersionP","Setting key %x at index %u to version %x\n", key, i, ver); + dbg("DipVersionP","Setting key %x at index %u to version %x\n", key, i, ver); } - command dip_version_t* DIPHelp.getAllVersions() { + command dip_version_t* DipHelp.getAllVersions() { return versions; } diff --git a/tos/lib/net/dip/DisseminationC.nc b/tos/lib/net/dip/DisseminationC.nc index 438a3b3e..fac6b683 100644 --- a/tos/lib/net/dip/DisseminationC.nc +++ b/tos/lib/net/dip/DisseminationC.nc @@ -1,11 +1,11 @@ -#include +#include configuration DisseminationC { provides interface StdControl; } implementation { - components DIPLogicC; - StdControl = DIPLogicC; + components DipLogicC; + StdControl = DipLogicC; } diff --git a/tos/lib/net/dip/DisseminatorC.nc b/tos/lib/net/dip/DisseminatorC.nc index 5826f465..539e405d 100644 --- a/tos/lib/net/dip/DisseminatorC.nc +++ b/tos/lib/net/dip/DisseminatorC.nc @@ -1,4 +1,4 @@ -#include +#include /* * Copyright (c) 2006 Arch Rock Corporation @@ -62,16 +62,16 @@ implementation { components LedsC; DisseminatorP.Leds -> LedsC; - components DIPLogicC; - DisseminatorP.DIPDisseminationUpdate -> DIPLogicC.DisseminationUpdate[key]; + components DipLogicC; + DisseminatorP.DipDisseminationUpdate -> DipLogicC.DisseminationUpdate[key]; - components DIPVersionC; - DisseminatorP.DIPHelp -> DIPVersionC; + components DipVersionC; + DisseminatorP.DipHelp -> DipVersionC; components MainC; MainC.SoftwareInit -> DisseminatorP; - components DIPDataC; - DIPDataC.DisseminationUpdate[key] -> DisseminatorP.DataDisseminationUpdate; - DIPDataC.DisseminationValue[key] -> DisseminatorP.DataDisseminationValue; + components DipDataC; + DipDataC.DisseminationUpdate[key] -> DisseminatorP.DataDisseminationUpdate; + DipDataC.DisseminationValue[key] -> DisseminatorP.DataDisseminationValue; } diff --git a/tos/lib/net/dip/DisseminatorP.nc b/tos/lib/net/dip/DisseminatorP.nc index 15ec04cd..b3c2ed1b 100644 --- a/tos/lib/net/dip/DisseminatorP.nc +++ b/tos/lib/net/dip/DisseminatorP.nc @@ -50,8 +50,8 @@ generic module DisseminatorP(typedef t, dip_key_t key) { provides interface Init; - uses interface DisseminationUpdate as DIPDisseminationUpdate; - uses interface DIPHelp; + uses interface DisseminationUpdate as DipDisseminationUpdate; + uses interface DipHelp; uses interface Leds; } @@ -63,7 +63,7 @@ implementation { } command error_t Init.init() { - call DIPHelp.registerKey(key); + call DipHelp.registerKey(key); return SUCCESS; } @@ -82,9 +82,9 @@ implementation { command void AppDisseminationUpdate.change( t* newVal ) { memcpy( &valueCache, newVal, sizeof(t) ); /* Increment the counter and append the local node ID later. */ - /* DIPLogicC doesn't care what the data actually is, + /* DipLogicC doesn't care what the data actually is, it just wants the key, so we cast it recklessly */ - call DIPDisseminationUpdate.change((dip_data_t*)newVal); + call DipDisseminationUpdate.change((dip_data_t*)newVal); } command const dip_data_t* DataDisseminationValue.get() { diff --git a/tos/lib/net/dip/README b/tos/lib/net/dip/README index 48ae6118..c8022efc 100644 --- a/tos/lib/net/dip/README +++ b/tos/lib/net/dip/README @@ -1,12 +1,21 @@ -Title: DIP +Title: Dip Author: Kaisen Lin ------------------ -DIP is a dissemination protocol for detecting and disseminating new -items in a network. It uses the same interfaces as Drip. +Dip is a dissemination protocol for detecting and disseminating new +items in a network. It uses the same interfaces as Drip. It improves +node density and item scalability by sending only one packet per +interval rather than many. If the network is small and with very few +data items, Drip may be more efficient due to Dip's advertisement +overhead. -Data disseminated under DIP cannot be larger than 16 bytes. It was not + + +Notes: +------ + +Data disseminated under Dip cannot be larger than 16 bytes. It was not designed for large data items, but rather for many small data items. Ties, like Drip, are handled with higher node IDs serving as diff --git a/tos/lib/net/dip/interfaces/DIPDecision.nc b/tos/lib/net/dip/interfaces/DipDecision.nc similarity index 79% rename from tos/lib/net/dip/interfaces/DIPDecision.nc rename to tos/lib/net/dip/interfaces/DipDecision.nc index 86f00913..e285392b 100644 --- a/tos/lib/net/dip/interfaces/DIPDecision.nc +++ b/tos/lib/net/dip/interfaces/DipDecision.nc @@ -1,5 +1,5 @@ -interface DIPDecision { +interface DipDecision { command uint8_t getCommRate(); command void resetCommRate(); command error_t send(); diff --git a/tos/lib/net/dip/interfaces/DIPEstimates.nc b/tos/lib/net/dip/interfaces/DipEstimates.nc similarity index 92% rename from tos/lib/net/dip/interfaces/DIPEstimates.nc rename to tos/lib/net/dip/interfaces/DipEstimates.nc index 512c5bf0..c9b5a20d 100644 --- a/tos/lib/net/dip/interfaces/DIPEstimates.nc +++ b/tos/lib/net/dip/interfaces/DipEstimates.nc @@ -1,7 +1,7 @@ -#include +#include -interface DIPEstimates { +interface DipEstimates { command dip_estimate_t* getEstimates(); command void decEstimateByIndex(dip_index_t i); command void decEstimateByKey(dip_key_t key); diff --git a/tos/lib/net/dip/interfaces/DIPHelp.nc b/tos/lib/net/dip/interfaces/DipHelp.nc similarity index 89% rename from tos/lib/net/dip/interfaces/DIPHelp.nc rename to tos/lib/net/dip/interfaces/DipHelp.nc index 7b812711..d1864ea4 100644 --- a/tos/lib/net/dip/interfaces/DIPHelp.nc +++ b/tos/lib/net/dip/interfaces/DipHelp.nc @@ -1,7 +1,7 @@ -#include +#include -interface DIPHelp { +interface DipHelp { command void registerKey(dip_key_t key); command dip_index_t keyToIndex(dip_key_t key); diff --git a/tos/lib/net/dip/interfaces/DIPReceive.nc b/tos/lib/net/dip/interfaces/DipReceive.nc similarity index 69% rename from tos/lib/net/dip/interfaces/DIPReceive.nc rename to tos/lib/net/dip/interfaces/DipReceive.nc index 98f6b9b3..9dbd72a7 100644 --- a/tos/lib/net/dip/interfaces/DIPReceive.nc +++ b/tos/lib/net/dip/interfaces/DipReceive.nc @@ -1,4 +1,4 @@ -interface DIPReceive { +interface DipReceive { event void receive(void* payload, uint8_t len); } diff --git a/tos/lib/net/dip/interfaces/DIPSend.nc b/tos/lib/net/dip/interfaces/DipSend.nc similarity index 84% rename from tos/lib/net/dip/interfaces/DIPSend.nc rename to tos/lib/net/dip/interfaces/DipSend.nc index 2ee59986..9709b7f5 100644 --- a/tos/lib/net/dip/interfaces/DIPSend.nc +++ b/tos/lib/net/dip/interfaces/DipSend.nc @@ -1,5 +1,5 @@ -interface DIPSend { +interface DipSend { command error_t send(uint8_t len); command void* getPayloadPtr(); command uint8_t maxPayloadLength(); diff --git a/tos/lib/net/dip/interfaces/DIPTrickleTimer.nc b/tos/lib/net/dip/interfaces/DipTrickleTimer.nc similarity index 97% rename from tos/lib/net/dip/interfaces/DIPTrickleTimer.nc rename to tos/lib/net/dip/interfaces/DipTrickleTimer.nc index 30237602..e436b679 100644 --- a/tos/lib/net/dip/interfaces/DIPTrickleTimer.nc +++ b/tos/lib/net/dip/interfaces/DipTrickleTimer.nc @@ -46,7 +46,7 @@ */ -interface DIPTrickleTimer { +interface DipTrickleTimer { /** * Start the trickle timer. At boot, the timer period is its maximum @@ -77,7 +77,7 @@ interface DIPTrickleTimer { event void fired(); /** - * Compute the window size based on DIP's estimates + * Compute the window size based on Dip's estimates */ event uint32_t requestWindowSize(); diff --git a/tos/lib/net/dip/interfaces/DIPVersion.nc b/tos/lib/net/dip/interfaces/DipVersion.nc similarity index 59% rename from tos/lib/net/dip/interfaces/DIPVersion.nc rename to tos/lib/net/dip/interfaces/DipVersion.nc index 80c4ceac..c431ec5a 100644 --- a/tos/lib/net/dip/interfaces/DIPVersion.nc +++ b/tos/lib/net/dip/interfaces/DipVersion.nc @@ -1,7 +1,7 @@ -#include +#include -interface DIPVersion { +interface DipVersion { command void setVersion(); command void incVersion(); } \ No newline at end of file -- 2.39.2