Hi Romain, On Fri, Jun 17, 2011 at 9:15 AM, Romain Bornet <[email protected]> wrote: > Hi, > > I'm currently porting TinyOS to a new architecture and I am now > working on the radio stack/driver and base my my implementation on the > existing rfxlink stack and drivers. > > II noticed that the RadioCCA interface is implemented in all rfxlink > radio drivers (RF230, RF212 from TinyOS trunk and ATM128RFA1 from szte > svn repository) but is wired in none of the radio stacks xxxRadioC.nc. > The only place where CCA is used is in the CSMA Layer but this layer > is "bypassed" in all stacks and a DummyLayerC is wired instead of > CsmaLayerC/P. > > components new DummyLayerC() as CsmaLayerC; > > - Am I correct or did I miss something ?
You are completely right in your analysis. > - How/where is CCA performed in current rfxlink radio implementations ? Practically, for most radios it is much cheaper to perform the CCA check just before the transmission, and in fact this is sometimes automatically performed. For te RF212 and RF230 chips the radio go into RX state if a valid preamble is found, so that essentially performs a very rudimentary CCA check. It also checks the RSSI just before transmission, and that seems to work. > - Should I simply wire a "real" CsmaLayerC instead of the DummyLayerC > to have CCA performed ? You can write it and it might do some real good. It takes time to perform the check (140 us for RF230), so it is always possible that you detect nothing, but by the time you try to send the packet then it will be busy. Anyhow, you can interpret it and it should eliminate some collisions at the cost of throughput. If the CCA check fails, then the transmit should return EFAIL. > components new CsmaLayerC(); > instead of > components new DummyLayerC() as CsmaLayerC; > > > Thanks in advance for your help and hints, > Romain Best, Miklos _______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
