Hi, Digging deeper into CpmModelC, I think there is missing a safety statement in the shouldReceive function.
I think many people use the link gain generator based on a topology file (see TOSSIM tutorial on the wiki). The tool output a link gain for every pair of nodes in the network, thus the SNR for some of these links is negative (for nodes that are very far apart). Alas, the CpmModelC file in TOSSIM does not check that, and even call the PER function for such a SNR, which obviously should never yield a successfully decoded packet (the receiver would not even sync on the preamble, since it's just noise..). The effect is that it creates wormholes, specially with extremly bad links. i.e. WIth a SNR of -50 db, the probability of passing the packet is 1 %. Here is an excerpt of the CpmModel output: DEBUG (33): SNR is 3.520000, PRR is 0.066555 DEBUG (29): SNR is 0.600000, PRR is 0.000001 DEBUG (27): SNR is -25.840000, PRR is 0.010087 DEBUG (26): SNR is 6.990000, PRR is 0.877191 DEBUG (28): SNR is 15.200000, PRR is 1.000000 DEBUG (32): SNR is -12.300000, PRR is 0.007021 DEBUG (31): SNR is -13.620000, PRR is 0.007780 Simple fix would be to check the SNR for positivity before calling the rather computationally expensive prr_estimate_from_snr() function. Any negative SNR should yield a probability of zero for receiving the packet. Please, can someone confirm what I just stated? Thank you, Alban _______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
