@@ -49,7 +49,9 @@ LOG_MODULE_REGISTER(esb, CONFIG_ESB_LOG_LEVEL);
49
49
/* 4 Mb RX wait for acknowledgment time-out value. */
50
50
#define RX_ACK_TIMEOUT_US_4MBPS 160
51
51
52
- /* Minimum retransmit time */
52
+ /* Minimum retransmit time for the worst case scenario = 435.
53
+ * In general = wait_for_ack_timeout_us + ADDR_EVENT_LATENCY_US + ramp_up.
54
+ */
53
55
#define RETRANSMIT_DELAY_MIN 435
54
56
55
57
/* Radio Tx ramp-up time in microseconds. */
@@ -1029,8 +1031,6 @@ static bool update_radio_parameters(void)
1029
1031
params_valid &= update_radio_protocol ();
1030
1032
params_valid &= update_radio_crc ();
1031
1033
update_rf_payload_format (esb_cfg .payload_length );
1032
- params_valid &=
1033
- (esb_cfg .retransmit_delay >= RETRANSMIT_DELAY_MIN );
1034
1034
1035
1035
return params_valid ;
1036
1036
}
@@ -1899,7 +1899,17 @@ int esb_init(const struct esb_config *config)
1899
1899
memset (rx_pipe_info , 0 , sizeof (rx_pipe_info ));
1900
1900
memset (pids , 0 , sizeof (pids ));
1901
1901
1902
- update_radio_parameters ();
1902
+ if (!update_radio_parameters ()) {
1903
+ LOG_ERR ("Failed to update radio parameters" );
1904
+ return - EINVAL ;
1905
+ }
1906
+
1907
+ if (esb_cfg .retransmit_delay < RETRANSMIT_DELAY_MIN ) {
1908
+ LOG_ERR ("Configured retransmission delay is below the required minimum of %d us" ,
1909
+ RETRANSMIT_DELAY_MIN );
1910
+
1911
+ return - EINVAL ;
1912
+ }
1903
1913
1904
1914
/* Configure radio address registers according to ESB default values */
1905
1915
nrf_radio_base0_set (NRF_RADIO , 0xE7E7E7E7 );
0 commit comments