Hi Omprakash,
Thanks very much for the reply. I also have a small irrelevant
question here. I am doing some experiments about the performance of
the new 4bit link estimator using tmotes, which use Chipcon CC2420
radio chip. I noticed in the chips/cc2420/packet/CC2420PacketP.nc, a
channel is considered of high quality when the LQI value is greater
then 105 (line 107). That's where the white_bit come from. I am
wondering why LQI > 105 indicates a high channel quality? Is there
any physical or empirical reason behind the value?
Tao
On Mon, Aug 11, 2008 at 5:17 PM, Omprakash Gnawali <[EMAIL PROTECTED]> wrote:
> On Mon, Aug 11, 2008 at 5:10 PM, Tao Liu <[EMAIL PROTECTED]> wrote:
>> Hi all,
>>
>> I am studying the 4bitle link estimator in the TinyOS 2. In the
>> tos/lib/net/4bitle/LinkEstimatorP.nc (line 647), the 4bit estimator
>> signals the CompareBit.shouldInsert() event when it received a beacon
>> message from a new neighbor when there is no room left in the neighbor
>> table, and the only implementation of CompareBit.shouldInsert I can
>> find is in the tos/lib/net/ctp/CtpRoutingEngineP.nc, starting from
>> line 634:
>>
>> /* This should see if the node should be inserted in the table.
>> * If the white_bit is set, this means the LL believes this is a good
>> * first hop link.
>> * The link will be recommended for insertion if it is better* than some
>> * link in the routing table that is not our parent.
>> * We are comparing the path quality up to the node, and ignoring the link
>> * quality from us to the node. This is because of a couple of things:
>> * 1. because of the white bit, we assume that the 1-hop to the candidate
>> * link is good (say, etx=1)
>> * 2. we are being optimistic to the nodes in the table, by ignoring the
>> * 1-hop quality to them (which means we are assuming it's 1 as well)
>> * This actually sets the bar a little higher for replacement
>> * 3. this is faster
>> * 4. it doesn't require the link estimator to have stabilized on a link
>> */
>> event bool CompareBit.shouldInsert(message_t *msg, void* payload,
>> uint8_t len, bool white_bit) {
>> bool found = FALSE;
>> uint16_t pathEtx;
>> //uint16_t linkEtx = evaluateEtx(0);
>> uint16_t neighEtx;
>> int i;
>> routing_table_entry* entry;
>> ctp_routing_header_t* rcvBeacon;
>>
>> if ((call AMPacket.type(msg) != AM_CTP_ROUTING) ||
>> (len != sizeof(ctp_routing_header_t)))
>> return FALSE;
>>
>> /* 1.determine this packet's path quality */
>> rcvBeacon = (ctp_routing_header_t*)payload;
>>
>> if (rcvBeacon->parent == INVALID_ADDR)
>> return FALSE;
>> /* the node is a root, recommend insertion! */
>> if (rcvBeacon->etx == 0) {
>> return TRUE;
>> }
>>
>> pathEtx = rcvBeacon->etx; // + linkEtx;
>>
>> /* 2. see if we find some neighbor that is worse */
>> for (i = 0; i < routingTableActive && !found; i++) {
>> entry = &routingTable[i];
>> //ignore parent, since we can't replace it
>> if (entry->neighbor == routeInfo.parent)
>> continue;
>> neighEtx = entry->info.etx;
>> //neighEtx = evaluateEtx(call
>> LinkEstimator.getLinkQuality(entry->neighbor));
>> found |= (pathEtx < neighEtx);
>> }
>> return found;
>> }
>>
>> According to the comment, this event should do the comparison based on
>> the white_bit argument. However, the actual code here does not take
>> the white_bit into account. Instead, it just compare the path ETX
>> value of the new beacon message with the neighbors that is already in
>> the routing table (different from the neighbor table in the link
>> estimator).
>>
>> When the 4bit link estimator signals the CompareBit.shouldInsert
>> event, the white_bit is set to true if the LQI value in the message
>> header indicates the wireless channel quality is high; false
>> otherwise. Can somebody explain why the white_bit is ignored here? Or
>> it's just I missed something?
>>
>
> You did not miss anything :)
>
> We found this problem about two weeks ago but it was too close to the
> 2.1 release and did not update the code. The comparison statement
> disappeared when we did code refactoring as we moved from experiments
> to code in the repository.
>
> I am redoing some of the experiments before I update the code so stay tuned.
>
> - om_p
>
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help