ACK packet was not received in the sniffer

Hi,

I am trying to debug ESB packets with the following setup:

1. PRX (NRF52810)

2..PTX (NRF52810)

3. Sniffer (NRF52832) ( modified PRX so that it returns without ACK)

communication between PRX and PTX was fine as I was able to get the packet I have sent from PTX at the PRX end. I am receiving Acknowledgment from PRX.

but in the Sniffer I was unable to get the ACK packets. I tried so many times but only ACK packets were not received by the sniffer.

1. is there any difference between the ACK packet and the Normal PTX packet?

2.. Is the method I have used for Sniffing correct or not? ( I have attached a modified code sample )

Note: I wanted to develop a sniffer between PTX and PRX

static void on_radio_disabled_rx(void)
{
    bool            ack                = false;
    bool            retransmit_payload = false;
    bool            send_rx_event      = true;
    pipe_info_t *   p_pipe_info;

    NRF_LOG_INFO("Snipper1 on_radio_disabled_rx" );
    if (NRF_RADIO->CRCSTATUS == 0)
    {
        NRF_LOG_INFO("NRF_RADIO->CRCSTATUS == 0");
        clear_events_restart_rx();
        return;
    }

    if (m_rx_fifo.count >= NRF_ESB_RX_FIFO_SIZE)
    {
        NRF_LOG_INFO("m_rx_fifo.count >= NRF_ESB_RX_FIFO_SIZE");
        clear_events_restart_rx();
        return;
    }

    p_pipe_info = &m_rx_pipe_info[NRF_RADIO->RXMATCH];

    //Testing
    /*if (NRF_RADIO->RXCRC             == p_pipe_info->crc &&
        (m_rx_payload_buffer[1] >> 1) == p_pipe_info->pid
       )
    {
        retransmit_payload = true;
        send_rx_event = false;
    }*/

    p_pipe_info->pid = m_rx_payload_buffer[1] >> 1;
    p_pipe_info->crc = NRF_RADIO->RXCRC;

    if ((m_config_local.selective_auto_ack == false) || ((m_rx_payload_buffer[1] & 0x01) == 1))
    {
        ack = true;
    }
    int testIndex = 0;

    for(int i=0;i<m_rx_payload_buffer[0]+2;i++)
    {
      cTestBuffer[(nTestBufferIndex ) & (TEST_BUFFER_SIZE - 1)] = m_rx_payload_buffer[i];
      nTestBufferIndex ++;
    }
   
     cTestBuffer[(nTestBufferIndex ) & (TEST_BUFFER_SIZE - 1)] =  p_pipe_info->pid;
     nTestBufferIndex ++;
     memcpy(&cTestBuffer[(nTestBufferIndex ) & (TEST_BUFFER_SIZE - 1)], p_pipe_info->crc,2);
     nTestBufferIndex += 2;

    clear_events_restart_rx();
    return;
}

Related