X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=doc%2Ftxt%2Ftep119.txt;h=8f0e9c3bbe25da328e21cc5e2429d148fec7723b;hb=1a329382c4f4556fd52d85f4e3f4a67e54911682;hp=94580b31e4869ec2db68a4c321bd6360bf52d60a;hpb=e3c0b957baa23adb432835a3ca5f4e805a649b0d;p=tinyos-2.x.git diff --git a/doc/txt/tep119.txt b/doc/txt/tep119.txt index 94580b31..8f0e9c3b 100644 --- a/doc/txt/tep119.txt +++ b/doc/txt/tep119.txt @@ -195,12 +195,12 @@ then node B's metric value MUST be greater than node A's. Collection has a virtualized sending abstraction, the generic component CollectionSenderC:: - generic configuration CollectionSenderC(collection_id_t collectid) { - provides { - interface Send; - interface Packet; - } +generic configuration CollectionSenderC(collection_id_t collectid) { + provides { + interface Send; + interface Packet; } +} This abstraction follows a similar virtualization approach to AMSenderC [1_], except that it is parameterized by a collection_id_t @@ -228,36 +228,54 @@ such as queueing and timing. LinkEstimatorP estimates the quality of link to or from each neighbor. Link estimation can be done in a variety of ways, and we do not impose one here. It is decoupled from the establishment of -routes. There is a narrow interface (LinkEstimator) between the link -estimator and the routing engine. The one requirement is that the -quality returned is standardized. A larger return value from -LinkEstimator.getQuality(), LinkEstimator.getforwardQuality(), -LinkEstimator.getreserveQuality() MUST imply that the link to the -neighbor is estimated to be of a higher quality than the one that -results in a smaller return value. The range of value SHOULD be -[0,255] and the variation in link quality in that range SHOULD be -linear. Radio provided values such as LQI or RSI, beacon based link -estimation to compute ETX, or their combination are some possible -approaches to estimating link qualities. LinkEstimatorP MAY have its -own control messages to compute bi-directional link qualities:: - - typedef uint16_t neighbor_t +routes. There is a narrow interface (LinkEstimator and +NeighborTableEviction) between the link estimator and the routing +engine. The one requirement is that the quality returned is +standardized. A smaller return value from LinkEstimator.getQuality(), +LinkEstimator.getforwardQuality(), LinkEstimator.getreserveQuality() +MUST imply that the link to the neighbor is estimated to be of a +higher quality than the one that results in a smaller return +value. The range of value SHOULD be [0,255] and the variation in link +quality in that range SHOULD be linear. Radio provided values such as +LQI or RSI, beacon based link estimation to compute ETX, or their +combination are some possible approaches to estimating link +qualities. LinkEstimatorP MAY have its own control messages to compute +bi-directional link qualities. LinkEstimatorP provides calls (txAck(), +txNoAck(), and clearDLQ()) to update the link estimates based on +successful or unsuccessful data transmission to the neighbors. The +user of LinkEstimatorP can call insertNeighbor() to manually insert a +node in the neighbor table, pinNeighbor() to prevent a neighbor from +being evicted, and unpinNeighbor() to restore eviction policy:: + + typedef uint16_t neighbor_table_entry_t LinkEstimatorP { provides { + interface StdControl; + interface AMSend as Send; + interface Receive; interface LinkEstimator; - interface NeighborTable; + interface Init; + interface Packet; + interface LinkSrcPacket; } } interface LinkEstimator { - command uint8_t getLinkQuality(neighbot_t neighbor); - command uint8_t getReverseQuality(neighbot_t neighbor); - command uint8_t getForwardQuality(neighbot_t neighbor); + command uint8_t getLinkQuality(uint16_t neighbor); + command uint8_t getReverseQuality(uint16_t neighbor); + command uint8_t getForwardQuality(uint16_t neighbor); + command error_t insertNeighbor(am_addr_t neighbor); + command error_t pinNeighbor(am_addr_t neighbor); + command error_t unpinNeighbor(am_addr_t neighbor); + command error_t txAck(am_addr_t neighbor); + command error_t txNoAck(am_addr_t neighbor); + command error_t clearDLQ(am_addr_t neighbor); + event void evicted(am_addr_t neighbor); } - interface NeighborTable { - event void evicted(neighbot_t neighbor) + interface NeighborTableEviction { + event void evicted(uint16_t neighbor) }