Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tx confirmed messages hanges, while receiving Class C Multicast #44

Closed
DaniKoller opened this issue Feb 1, 2016 · 4 comments
Closed

Comments

@DaniKoller
Copy link

When sending confirmed messages (from several nodes) at same time the nodes will go back in to Idle State (LoRaMacState is MAC_IDLE) after a while (when all the retransmission is done). But when the concentrator sends concurrently unconfirmed messages to a multicast address (to all nodes), the nodes state machine will hange on some nodes -> LoRaMacState is MAC_TX_RUNNING and the timer TxTimeout is no more running. I tried with 10 nodes (V4.0.0 Stack) and one concentrator.

@djaeckle
Copy link

djaeckle commented Feb 1, 2016

Hi DaniKoller,

thanks for the report. Could you provide more details please?

  1. What do you mean by concurrently?
  2. Does the node receive the multicast successfully?
  3. Does the node send the frame successfully, before it stays in state MAC_TX_RUNNING?

Thanks in advance.

@DaniKoller
Copy link
Author

Hi,

  1. I use the IMST ExpLoRa-Studio and send ClassC unconfirmed messages (by Button) during the confirming (concentrator) and retransmission (slave) communication.
  2. Mostly all Nodes will receive the multicast, but sometimes not all (but that is ok i will send multicast 3 times in a short Interval 2..5s and in a long interval). When a node is in hanging state, the multicast is still working (indicating 1s before the other nodes).
  3. The Concentrator side show also the confirm was ok, but the node never make a ConfirmCallback.

This attachment is done by only 1 node :
concentrator_1_node
node

best regards
Daniel

@djaeckle
Copy link

djaeckle commented Feb 3, 2016

Hi Daniel,

first of all, thanks for the feedback and the log. I'm not familiar with the IMST ExpLoRa-Studio, but what I understood from the log is the following ( please correct me, if I'm wrong ):

  1. Node sends a frame
  2. Server answers with an Ack frame
  3. Sever sends multicast frames

I guess the issue occurs when the node receives frame number 407. I noticed that the timestamps of 406 and 407 are equal. So I assume, that the server sends 407 immediatly after frame 406.

I think this issue occurs, when the node receives frame 406 and frame 407 in sequence, without handling frame 406 in the event handler in between. In this case, frame 407 overwrites the internal state and the "Ack received" status of the previous frame status is lost.

However, to be 100% sure, it would be nice, if you could validate, if the following patch resolves the issue. Please add the function call

OnMacStateCheckTimerEvent( );

at the end of the function OnRadioRxDone. Please note, that this patch might not be the final solution to solve the issue - its for testing purposes only and might change in the next release.

@DaniKoller
Copy link
Author

Hi Daniel,

thanks a lot, it seems to work with the patch ..

INFO : I guess the ExpLoRaStudio TimeStamps are not the real sending time on the concentrator

kind regards
Daniel

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants