Hello,
After decided and tried porting nrf_esb from the example code to my project, now I am stuck with changing the content of the payload.
I changed the payload using:
for (uint8_t i = 0; i < tx_payload.length; i++) { tx_payload.data[i] += 1; // printf("tx_payload.data[%d]: %x\r\n", i, tx_payload.data[i]); }
And here's my handler:
void nrf_esb_event_handler(nrf_esb_evt_t const * p_event) { nrf_gpio_pin_toggle(LED_2); printf("handler\r\n"); // NRF_LOG_INFO("Inside handler!"); // NRF_LOG_FLUSH(); switch (p_event->evt_id) { case NRF_ESB_EVENT_TX_SUCCESS: // NRF_LOG_INFO("Packet sending succeeded!"); printf("sent? PID: %x\r\n", tx_payload.pid); nrf_esb_pop_tx(); break; case NRF_ESB_EVENT_TX_FAILED: (void) nrf_esb_flush_tx(); (void) nrf_esb_start_tx(); //NRF_LOG_INFO("Packet sending failed!"); break; case NRF_ESB_EVENT_RX_RECEIVED: // Get the most recent element from the RX FIFO. while (nrf_esb_read_rx_payload(&rx_payload) == NRF_SUCCESS) { printf("Received a packet. ID: %x:\r\n", rx_payload.pid); for (uint8_t i = 0; i < rx_payload.length; i++) { printf("rx_payload.data[%d]: %x\r\n", i, rx_payload.data[i]); } // Set LEDs identical to the ones on the PTX. // NRF_LOG_INFO("Packet Received!"); } //nrf_esb_flush_rx(); break; } // NRF_LOG_INFO("Exit!"); // NRF_LOG_FLUSH(); //nrf_gpio_pin_toggle(LED_2); }
Every time a "send packet command" is fired, it should increment the content inside tx_payload by 1 then send it.
Upon printing data, it always print the old data. Printing on the receiver will not happen if I did not fire sending on sender. The only way to print a new data is to reset it first.
Is this the correct way to use nrf_esb? or is it not?
Thank you,
Winz