phattaradanai / libxbee

Automatically exported from code.google.com/p/libxbee
0 stars 0 forks source link

Can't catch transmission failures #12

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
It seems that when using a connection with acknowledgments disabled or in 
broadcast mode, the frameId is set to 0 and therefore no Tx response is 
returned from the module. 
This means that there's no simple way to know if there was a transmission 
failure (e.g., CCA Failure)

Original issue reported on code.google.com by eduardo...@gmail.com on 30 May 2013 at 5:15

GoogleCodeExporter commented 8 years ago
This is true - I don't think there is anything I can do about that.

With ACKs disabled... you are actively asking not to receive them.
When considering broadcast messages over a number of network technologies, they 
usually don't get responses (I don't know any that do).

If you want to know about failures, I suggest that you leave them enabled.
It might help me to understand / provide support if you described what you are 
trying to do?

Attie

Original comment by attie@attie.co.uk on 30 May 2013 at 5:43

GoogleCodeExporter commented 8 years ago
In the application I consider, XBee modules operate in a peer-to-peer network. 
The wireless medium is highly congested due to the presence of a large number 
of devices constantly transmitting data. For this reason, the use of 
acknowledgments is discouraged (it would increase the occupancy of the 
channel). Despite of that, the upper layers must be notified of transmission 
errors (i.e., basically CSMA/CA failures) which would trigger some strategies 
to make a better use of the channel. 

Original comment by eduardo...@gmail.com on 30 May 2013 at 10:19

GoogleCodeExporter commented 8 years ago
I see - you raise an interesting point.

I've just had a quick look through the XBee manuals...
There is a CCA (Clear Channel Assessment) failure flag which is probably what 
you're referring to.

I don't think there is a way to do what you're after using XBee modules though.
It sounds like you want to know about PHY and MAC (addresing, etc...) level 
errors without wanting to know if the message actually made it to the end or 
not... which is a bit odd if you ask me.

If you don't care if it gets to the other end, then why do you care if an 
address lookup or CCA fails?
Don't forget that on XBee Series 1 modules, if the remote address isn't there, 
then the only way you know it's not there is due to the fact that you didn't 
get an ACK in response.
With the meshing modules this is slightly more complex, but I have a feeling 
that you'll still just 'not hear back' if you address a module that doesn't 
exist.

There's also the other point, that if you disable ACKs at this level, then 
you'll likely have to add functionality at a higher level to ensure reliable 
communications - and that'll probably have a higher overhead.

If you're interested only in CCA failures, then checkout the 'EC' AT command.
Watch it, and when it bumps up then you had a failure! And don't forget to 
reset it, because it saturates instead of rolling.

Original comment by attie@attie.co.uk on 2 Jun 2013 at 8:00