You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
850 B
Plaintext
43 lines
850 B
Plaintext
#include "serial.h"
|
|
#include "usb_start.h"
|
|
|
|
#define MAX_PRINTF_BUFFER (64)
|
|
|
|
static uint8_t printf_buffer[MAX_PRINTF_BUFFER];
|
|
static volatile bool b_usb_ready = false;
|
|
|
|
static bool usb_cb_state_c(usb_cdc_control_signal_t state)
|
|
{
|
|
if(state.rs232.DTR == 1)
|
|
{
|
|
b_usb_ready = true;
|
|
}
|
|
else
|
|
{
|
|
b_usb_ready = false;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void arc_serial_init()
|
|
{
|
|
memset(printf_buffer, '\0', MAX_PRINTF_BUFFER);
|
|
usb_init();
|
|
while(!cdcdf_acm_is_enabled()){}
|
|
cdcdf_acm_register_callback(CDCDF_ACM_CB_STATE_C, (FUNC_PTR)usb_cb_state_c);
|
|
while(!b_usb_ready);
|
|
delay_ms(2000);
|
|
}
|
|
|
|
uint8_t arc_printf(const char* fmt, ...)
|
|
{
|
|
while(!b_usb_ready){}
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
vsprintf(printf_buffer, fmt, args);
|
|
va_end(args);
|
|
volatile int32_t ret = cdcdf_acm_write(printf_buffer, (uint32_t)(strlen((const char*)printf_buffer)));
|
|
return 0;
|
|
}
|
|
|