Hello Nordic Engineer,
I'm a beginner
In this GitHub
If I add code after 473 lines
rx_payload.noack = true
what will the final result be?
Thanks
Hello Nordic Engineer,
I'm a beginner
In this GitHub
If I add code after 473 lines
rx_payload.noack = true
what will the final result be?
Thanks
Hi ,
Can you answer this question, please?
Thank you
Hi,
Thank you for your reply
I want to discuss the content of your reply in two parts
Have in mind that when you are not using ACK, it is a chance that one or both devices will not receive the packet.
In my understanding, TX can send data to Rx
If RX wants to send data to TX, it must use ACK
RX can choose to turn off ack (do not send response to TX)
TX can also choose to turn off ack (no response is received)
Do I have a wrong understanding? (If I'm wrong, hope you can correct me)
=========================
So just to make sure I don't misunderstand the problem here, are some packets received from the relay, or are no packet received from the relay?
"Relay" will only receive BLE data and send ESB_ ptx
As for other Devices, they have the functions of TX and RX at the same time
Thank you
eric_cheng said:RX can choose to turn off ack (do not send response to TX)
This is not possible, it's only the TX that can control whether it want an ACK or not.
eric_cheng said:TX can also choose to turn off ack (no response is received)
Correct.
I don't quite understand the specific effect...
But I turned them all off
nrf_esb_config.selective_auto_ack = true; rx_payload.noack = true;
=========================
I describe my current approach
Can you correct me if I'm doing something wrong?
I used Timer1 to switch TX and RX In 《timer_event_handler》
state = !state;
if(state == true)
{
//memcpy(&nrf_esb_config, &tmp_config, sizeof(nrf_esb_config_t));
nrf_esb_config.payload_length = 2;
nrf_esb_config.protocol = NRF_ESB_PROTOCOL_ESB_DPL;
nrf_esb_config.retransmit_delay = 1000;
nrf_esb_config.bitrate = NRF_ESB_BITRATE_2MBPS;
nrf_esb_config.event_handler = nrf_esb_event_handler;
nrf_esb_config.mode = NRF_ESB_MODE_PTX;
nrf_esb_config.tx_output_power = NRF_ESB_TX_POWER_4DBM;
nrf_esb_config.selective_auto_ack = true;
nrf_esb_config.radio_irq_priority = 0;
}
else
{
//memcpy(&nrf_esb_config, &tmp_config, sizeof(nrf_esb_config_t));
nrf_esb_config.payload_length = 8;
nrf_esb_config.protocol = NRF_ESB_PROTOCOL_ESB_DPL;
nrf_esb_config.bitrate = NRF_ESB_BITRATE_2MBPS;
nrf_esb_config.mode = NRF_ESB_MODE_PRX;
nrf_esb_config.event_handler = nrf_esb_event_handler;
nrf_esb_config.selective_auto_ack = true;
nrf_esb_config.radio_irq_priority = 0;
}
I don't know if it is correct to use timer to change TX and RX?
Thank you
I don't quite understand the specific effect...
But I turned them all off
nrf_esb_config.selective_auto_ack = true; rx_payload.noack = true;
=========================
I describe my current approach
Can you correct me if I'm doing something wrong?
I used Timer1 to switch TX and RX In 《timer_event_handler》
state = !state;
if(state == true)
{
//memcpy(&nrf_esb_config, &tmp_config, sizeof(nrf_esb_config_t));
nrf_esb_config.payload_length = 2;
nrf_esb_config.protocol = NRF_ESB_PROTOCOL_ESB_DPL;
nrf_esb_config.retransmit_delay = 1000;
nrf_esb_config.bitrate = NRF_ESB_BITRATE_2MBPS;
nrf_esb_config.event_handler = nrf_esb_event_handler;
nrf_esb_config.mode = NRF_ESB_MODE_PTX;
nrf_esb_config.tx_output_power = NRF_ESB_TX_POWER_4DBM;
nrf_esb_config.selective_auto_ack = true;
nrf_esb_config.radio_irq_priority = 0;
}
else
{
//memcpy(&nrf_esb_config, &tmp_config, sizeof(nrf_esb_config_t));
nrf_esb_config.payload_length = 8;
nrf_esb_config.protocol = NRF_ESB_PROTOCOL_ESB_DPL;
nrf_esb_config.bitrate = NRF_ESB_BITRATE_2MBPS;
nrf_esb_config.mode = NRF_ESB_MODE_PRX;
nrf_esb_config.event_handler = nrf_esb_event_handler;
nrf_esb_config.selective_auto_ack = true;
nrf_esb_config.radio_irq_priority = 0;
}
I don't know if it is correct to use timer to change TX and RX?
Thank you