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; }