I'm working on a very simple Gazell build - basically the gzll_ack_payload example with some of it pulled out, since I'm working on a board with no LEDs or buttons to run that specific build against. It's a board with the nrf51822 onboard
The device is passing a single byte every few seconds with a call to nrf_gzll_add_packet_to_tx_fifo() but following the send, the device always goes into the nrf_gzll_device_tx_failed() call.
On the host side, it's receiving the payload in nrf_gzll_host_rx_data_ready() successfully and calling nrf_gzll_add_packet_to_tx_fifo() immediately after. That call returns success but the device never receives the Ack in return.
Following is my nrf_gzll_host_rx_data_ready() function on the host which is basically pulled straight out of the ack example:
void nrf_gzll_host_rx_data_ready(uint32_t pipe, nrf_gzll_host_rx_info_t rx_info) { uint32_t data_payload_length = NRF_GZLL_CONST_MAX_PAYLOAD_LENGTH; packet_received = true; pop_ok = nrf_gzll_fetch_packet_from_rx_fifo(pipe, data_payload, &data_payload_length); ack_payload[0] = inputVal; push_ok = nrf_gzll_add_packet_to_tx_fifo(PIPE_NUMBER,ack_payload,TX_PAYLOAD_LENGTH); // Debug output to serial char msg[128]; sprintf(msg,"%u ", data_payload[0]); serial(msg); }
The only significant change on the host side is I have enabled UART to pass information instead of the LED feedback from the example. I don't know if that could potentially be causing a conflict... Is there any way I could have configured the host to not return an Ack? I'm at a loss as to how to diagnose this problem. Could anyone give me a push in the right direction, by any chance?