Gazell Route Communication

Hello,

there is A problem in the process of routing communication with 51802. The implementation flow of our routing communication is as follows: application layer message flow: A->B->C, and then C->B->A. This communication is completed. In this process, the detailed procedure is that before device A sends, the pipeline address is set to be the same as that of device B, and the DEVEICE state is sent. After the transmission is completed, the nrf_gzll_set_mode function is used to change the state of device A to HOST, and the pipeline address is set to the address of device A itself. After receiving the packet, the application layer of device B finds that the packet needs to be forwarded. Device B performs the same operation as device A and forwards the packet to device C. Device C sends the message through the serial port. After receiving the message, the external device replies through the serial port. Then the same process is repeated:C->B->A;

In the serial port of A->B->C->C's serial port->C-->B-> A path, through monitoring the air signal, we find that when BC is communicating with each other, the ACK signal of C is sent, but the callback function that has been received is not executed, so that our application layer cannot receive this message, and there is no way to complete the routing function. This exception is A-B-c-serial port C-B-A; Succeed once; A-B-C sends an ACK, but no packet is sent to the application layer. Fail once; This alternates;

If we use direct communication mode: A->C->C's serial port->C->A  path; This process does not have the above problems;

I hope you can understand the above expression, if you can get your answer, thank you very much

Parents Reply Children
  • Hi 

    There is a 2 bit counter (PID) in the packet header that is used to differentiate retransmitted packets from new packets, but if you reset or reconfigure Gazell in between each packet it is possible that the PID is reset as well, which will make the new packet look like a retransmit. 

    Could you run a test where you include an incrementing counter in each payload to avoid sending the same exact packet twice? 

    If this solves the problem then it is most likely related to the PID being identical. 

    Best regards
    Torbjørn

  • HI

    First of all, although we keep sending the same packets, a switch between DECEIVE and HOST is carried out between each packet. During the mode switch, GAZELL layers experience both disabled and enabled states.

    Second, If I use two different packets sent alternately, then each packet can be received normally.

    So do you have any better advice for me? Thank you very much

    Best regards

    fly

Related