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 Eric
Try to use
nrf_esb_config.selective_auto_ack = true; rx_payload.noack = true;
on the "relay" and only
nrf_esb_config.selective_auto_ack = true;on the two other devices.
Does this fix your issue?
Regards,
Sigurd Hellesvik
Hi,
I tried to turn off ack
But there are still out of synchronization
Any of my products can be used as "relay"
So their program are the same
Under this premise, all products (including "relay")
Both lines of code will be executed
nrf_esb_config.selective_auto_ack = true; rx_payload.noack = true;
==================
I'm thinking about a problem
"relay" after pairing with mobile phone
"relay" sends an instruction to notify the nearby device to turn off Bluetooth
Do you think this way can solve the synchronization problem?
Thank you
Have in mind that when you are not using ACK, it is a chance that one or both devices will not receive the packet. 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?
Kenneth
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.
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