Hi team,
I have to create a program which sends messages from one dongle to another. Now I have ported radio transmit and receive + USB CDC ACM programs for two 52840 dongles. Also each of them can be seen as USB serial devices and can output messages on the terminal. Now, I can transmit only integers... How to transmit chars? When I try to use sprintf function I get hieroglyphs on the terminal. Also I tried to set packet variable with some chars on the tx side and then I got ASCII values in the other side... Thanks for the answers.
Rx dongle main():
ret_code_t ret;
static const app_usbd_config_t usbd_config = {
.ev_state_proc = usbd_user_ev_handler
};
bsp_board_init(BSP_INIT_LEDS);
nrf_drv_clock_init();
nrf_drv_clock_hfclk_request(NULL); // for HF 32MHz external X-tal
while(!nrf_drv_clock_hfclk_is_running()) ; // Just waiting
nrf_drv_clock_lfclk_request(NULL); // for LF 32.768kHz external X-tal
while(!nrf_drv_clock_lfclk_is_running()) ;
/// end clock set
/// end clock set
app_usbd_serial_num_generate();
ret = app_usbd_init(&usbd_config);
APP_ERROR_CHECK(ret);
app_usbd_class_inst_t const * class_cdc_acm = app_usbd_cdc_acm_class_inst_get(&m_app_cdc_acm);
ret = app_usbd_class_append(class_cdc_acm);
APP_ERROR_CHECK(ret);
if (USBD_POWER_DETECTION) {
ret = app_usbd_power_events_enable();
APP_ERROR_CHECK(ret);
}
else {
app_usbd_enable();
app_usbd_start();
}
radio_configure();
NRF_RADIO->PACKETPTR = (uint32_t)&packet;
while(true)
{
uint32_t received = read_packet();
char result[3];
sprintf(result,"%ul",received);
size_t size = sprintf(m_tx_buffer,result, frame_counter);
ret = app_usbd_cdc_acm_write(&m_app_cdc_acm, m_tx_buffer, size);
if (ret == NRF_SUCCESS)
{
++frame_counter;
}
nrf_delay_ms(10);
}
}
Tx dongle main():
ret_code_t ret;
static const app_usbd_config_t usbd_config = {
.ev_state_proc = usbd_user_ev_handler
};
bsp_board_init(BSP_INIT_LEDS);
nrf_drv_clock_init();
nrf_drv_clock_hfclk_request(NULL); // for HF 32MHz external X-tal
while(!nrf_drv_clock_hfclk_is_running()) ; // Just waiting
nrf_drv_clock_lfclk_request(NULL); // for LF 32.768kHz external X-tal
while(!nrf_drv_clock_lfclk_is_running()) ; // Just waiting
app_usbd_serial_num_generate();
ret = app_usbd_init(&usbd_config);
APP_ERROR_CHECK(ret);
app_usbd_class_inst_t const * class_cdc_acm = app_usbd_cdc_acm_class_inst_get(&m_app_cdc_acm);
ret = app_usbd_class_append(class_cdc_acm);
APP_ERROR_CHECK(ret);
if (USBD_POWER_DETECTION) {
ret = app_usbd_power_events_enable();
APP_ERROR_CHECK(ret);
}
else {
app_usbd_enable();
app_usbd_start();
}
radio_configure();
NRF_RADIO->PACKETPTR = (uint32_t)&packet; // Set payload pointer
while(true)
{
app_usbd_event_queue_process();
if (packet != 0) {
send_packet();
m_send_flag;
static int frame_counter;
nrf_delay_ms(10);
}
}
}