Skip to content

Radio: PANIC NULL transition (PREAMBLE while RX FIFO full) #71

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

Open
cire831 opened this issue Jun 1, 2018 · 0 comments
Open

Radio: PANIC NULL transition (PREAMBLE while RX FIFO full) #71

cire831 opened this issue Jun 1, 2018 · 0 comments

Comments

@cire831
Copy link
Contributor

cire831 commented Jun 1, 2018

We panic with a null transition. looks like a PREAMBLE_DETECT event occurred while we are still processing an older packet (in the fifo).

We need to review the interrupt processing order.

example:

  fsm_transition_t *fsm_select_transition(fsm_event_t ev, fsm_state_t st) {
    fsm_transition_t *ev_list;
    fsm_transition_t *trans;
    fsm_event_t n_events;

    n_events = NELEMS(fsm_events_group);
    if (ev >= n_events)
      __PANIC_RADIO(80, ev, st, 0, 0);

    trans = NULL;
    for (ev_list = (fsm_transition_t *) fsm_events_group[ev];
         ev_list && (ev_list->action != A_BREAK); ev_list++) {
      if ((ev_list->current_state == st) || (ev_list->current_state == S_DEFAULT)) {
        trans = ev_list;
        break;
      }
    }
    if (trans == NULL)
      __PANIC_RADIO(81, ev, st, 0, 0);
    return trans;
  }

we panic with the event E_PREAMBLE_DETECT.

And the fsm trace is:

t   109: time:0xc4557572(0x74  )  E_PREAMBLE_DETECT  S_RX_ON                    A_RX_START  S_RX_ACTIVE       
t   110: time:0xc4566849(0x12  )      E_SYNC_DETECT  S_RX_ACTIVE                     A_NOP  S_RX_ACTIVE       
t   111: time:0xc456b953(0x4ef )        E_RX_THRESH  S_RX_ACTIVE             A_RX_FETCH_FF  S_RX_ACTIVE       
t   112: time:0xc45713fe(0x4e2 )        E_RX_THRESH  S_RX_ACTIVE             A_RX_FETCH_FF  S_RX_ACTIVE       
t   113: time:0xc4576ed4(0x4e2 )        E_RX_THRESH  S_RX_ACTIVE             A_RX_FETCH_FF  S_RX_ACTIVE       

and spi traffic:

18  0xc4576dac  blen:slen 8:8, int_status_rsp_s  0101 0123 0089 0014    ph_pend:  RX_FIFO_ALMOST_FULL ph_status:  PACKET_SENT TX_FIFO_ALMOST_EMPTY RX_FIFO_ALMOST_FULL modem_status:  RSSI SYNC_DETECT chip_status:  STATE_CHANGE CHIP_READY
19  0xc4576e28  fast_frr_s  0800 0050   state: RX, rssi: 80
20  0xc4576e76  fast_frr_s  08   
21  0xc4576eb4  fast_frr_s  50   
22  0xc4576f80  1500   PARSE ERROR: fifo_info_rsp_s  1500 
23  0xc457701d  blen:slen 2:2, fifo_info_rsp_s  1c40   Container({'rx_fifo_count': 28, 'tx_fifo_space': 64, 'cts': 255})
24  0xc4577096  fast_frr_s  0800 1050   state: RX modem_pend:  RSSI_JUMP, rssi: 80
25  0xc4577143  fast_frr_s  0800 1050   state: RX modem_pend:  RSSI_JUMP, rssi: 80
26  0xc457739a  || SPI_REC_RX_FIFO  00  0x1c  cfff fce3 c7f7 efdd 5bfb bcdb b5fd 9fff   
27  0xc457742e  fast_frr_s  0900 1450   state: 0 modem_pend:  RSSI_JUMP INVALID_PREAMBLE, rssi: 80
28  0xc4577546  0x20 20 
29  0xc457764e  blen:slen 8:8, int_status_rsp_s  0002 0022 1489 0014    modem_pend:  RSSI_JUMP INVALID_PREAMBLE ph_status:  PACKET_SENT TX_FIFO_ALMOST_EMPTY modem_status:  RSSI SYNC_DETECT chip_status:  STATE_CHANGE CHIP_READY
30  0xc45776ca  fast_frr_s  0900 0050   state: 0, rssi: 80
31  0xc4577748  fast_frr_s  0900 0050   state: 0, rssi: 80
32  0xc4577862  0x20 20 
33  0xc457796a  blen:slen 8:8, int_status_rsp_s  0000 0022 0089 0014    ph_status:  PACKET_SENT TX_FIFO_ALMOST_EMPTY modem_status:  RSSI SYNC_DETECT chip_status:  STATE_CHANGE CHIP_READY
34  0xc45779e6  fast_frr_s  0900 0050   state: 0, rssi: 80
35  0xc457f357  fast_frr_s  0800 1650   state: RX modem_pend:  RSSI_JUMP INVALID_PREAMBLE PREAMBLE_DETECT, rssi: 80
36  0xc457f3d8  fast_frr_s  0800 1650   state: RX modem_pend:  RSSI_JUMP INVALID_PREAMBLE PREAMBLE_DETECT, rssi: 80
37  0xc457f4f0  0x20 20 
38  0xc457f5f8  blen:slen 8:8, int_status_rsp_s  0206 0022 168b 1014    modem_pend:  RSSI_JUMP INVALID_PREAMBLE PREAMBLE_DETECT chip_pend:  STATE_CHANGE ph_status:  PACKET_SENT TX_FIFO_ALMOST_EMPTY modem_status:  RSSI PREAMBLE_DETECT SYNC_DETECT chip_status:  STATE_CHANGE CHIP_READY
39  0xc457f674  fast_frr_s  0800 0050   state: RX, rssi: 80
40  0xc457f6c2  fast_frr_s  08   
41  0xc457f700  fast_frr_s  50   
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

1 participant