Transmitting Raw frame using 802.15.4 with a custom SFD.

Hi all,

I am attempting to transmit a frame using 802.15.4 protocol using the nrf_radio.

The current way I am attempting to transmit a frame is defining a custom frame (p_data) (So I know what to expect on the other side) and then calling: 

     
while (1)
    {
        LOG_INF("TX Attempted");
        nrf_radio_sfd_set(NRF_RADIO, CUSTOM_SFD);

        const nrf_802154_transmitted_frame_props_t props = {
            .is_secured = false,
            .dynamic_data_is_set = false};

        const nrf_802154_transmit_metadata_t metadata = {
            .frame_props = props,
            .cca = false};
        nrf_802154_transmit_raw(p_data, &metadata);
        // Repeat every 1 second
        k_sleep(K_MSEC(1000));
    }
The way I'm setting up the radio is:
 
 LOG_INF("Initialising Radio...");
    nrf_802154_init();
    LOG_INF("Radio Initialised!");

    nrf_802154_channel_set(channel_num);
    LOG_INF("TX Initialised");

    nrf_802154_promiscuous_set(true);
    nrf_802154_auto_ack_set(false);
The way I'm catching the transmission/the lack of is: 
void nrf_802154_tx_started(const uint8_t *p_frame)
{
    LOG_INF("TX Started");
}

void nrf_802154_transmitted_raw(uint8_t *p_frame,
                                const nrf_802154_transmit_done_metadata_t *p_metadata)
{
    LOG_INF("Trnsmitted");
}

void nrf_802154_transmit_failed(uint8_t *p_frame,
                                nrf_802154_tx_error_t error,
                                const nrf_802154_transmit_done_metadata_t *p_metadata)
{
    LOG_INF("Trasmit Failed: %02x", error);
}
Defining these in my header so that I could override the weak pointer provided by the library. 
With the code provided I get the "transmit_failed" to trigger with the error 0x05, or 
NRF_802154_TX_ERROR_NO_ACK .
The issue is that our system does not provide the ACK frames and so it will not notify the transmitter of reception of frame. 
Is there a way to 'command' the transmitter to just send the frames "out and about" without receiving back ACK frame and let the receiver handle the frame? 
In which way can this be disabled? 
If you need any more code or clarification, please ask! 
Thanks. 
EDIT 1: So, it appears that there was a little bug in how the frames were being caught on the receiving side, and that the transmitter was sending the frames anyway. They are now being properly received. 
But I will leave the question up because: The transmitter still yields a "Transmit Fail nrf_802154_tx_error_t 0x05 (NRF_802154_TX_ERROR_NO_ACK)" and I would like to get remove the need for it to require the ACK frame, if it's possible, of course, without diving into bare-metal (Register) programming, because that might make the code harder to maintain. 
Parents Reply Children
No Data
Related