This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

BLUETOOTH & USBD CDC ACM WRITE PACKETS LOSS

Hi I'm new with programming nrf52840 dongle (I'm using Ubuntu),

I try to wrote this code taking inspiration from the nRF5_SDK_15.0.0_a53641a (peripheral/usbd_cdc_acm and peripheral/radio/trasmitter) because I want to capture bluetooth data and send them via serial.

Once I program my dongle, then I use screen to see /dev/ttyACMx but I realized I did not capture all the data.
Can someone help me to understand where I'm wrong?

Thanks in advance.

this is the main function:

int main(void)
{
    ret_code_t ret;
    ret = nrf_drv_clock_init();
    APP_ERROR_CHECK(ret);
    nrf_drv_clock_lfclk_request(NULL);

    while(!nrf_drv_clock_lfclk_is_running())
    {
        // Just waiting
    }

    ret = app_timer_init();
    APP_ERROR_CHECK(ret);

    ret = nrf_cli_init(&m_cli_cdc_acm, NULL, true, true, NRF_LOG_SEVERITY_INFO);
    APP_ERROR_CHECK(ret);

    usbd_init();

    ret = nrf_cli_start(&m_cli_cdc_acm);
    APP_ERROR_CHECK(ret);

    int channel = 37;
    my_radio_configure(BLE_1MB, channel);

    NRF_RADIO->PACKETPTR = (uint32_t) packet;

    int last_atts = 0;

    while (true)
    {
        UNUSED_RETURN_VALUE(NRF_LOG_PROCESS());
       #if CLI_OVER_USB_CDC_ACM && APP_USBD_CONFIG_EVENT_QUEUE_ENABLE
    berga
        while (app_usbd_event_queue_process())
        {
            /* Nothing to do */
        }
       #endif
        uint32_t received = read_packet();

        if(received == 0) continue;
        char m_tx_buffer[2000];
        sprintf(m_tx_buffer, "[%d]:packet: ", cnt);
        cnt++;

        int kk;
        for(kk = 0; kk < 20; kk ++) {
                sprintf(m_tx_buffer + strlen(m_tx_buffer), "%02X ", packet[kk]);
        }
        sprintf(m_tx_buffer + strlen(m_tx_buffer), "\r\n");
        size_t size = strlen(m_tx_buffer) + 1;
        last_atts = 0;

        do{     last_atts ++;
                ret = app_usbd_cdc_acm_write(&nrf_cli_cdc_acm, m_tx_buffer, size);
                //if(ret == NRF_SUCCESS) break;
        }while(ret != NRF_SUCCESS);
        
        //nrf_delay_ms(1000);
        // nrf_cli_process(&m_cli_cdc_acm);
    }
}

Parents Reply Children
No Data
Related