samd: convert_tdio requires enable/disable

This commit is contained in:
Ryan 2019-05-16 13:18:05 -07:00
parent c1b3d0c629
commit cd325dfe52
3 changed files with 18 additions and 4 deletions

View File

@ -321,10 +321,15 @@ static bool cmd_debug_bmp(target *t, int argc, const char **argv)
static bool cmd_convert_tdio(target *t, int argc, const char **argv) static bool cmd_convert_tdio(target *t, int argc, const char **argv)
{ {
(void)t; (void)t;
(void) argc;
(void) argv;
usbuart_convert_tdio(0); uint8_t val;
if (argc > 1) {
val = (!strcmp(argv[1], "enable")) ? true : false;
usbuart_convert_tdio(val);
} else {
gdb_outf("Convert_tdio: %s\n",(usbuart_convert_tdio_enabled()) ?
"enabled" : "disabled");
}
return true; return true;
} }

View File

@ -220,5 +220,6 @@ static inline int platform_hwversion(void)
void uart_pop(void); void uart_pop(void);
int usbuart_convert_tdio(uint32_t arg); int usbuart_convert_tdio(uint32_t arg);
int usbuart_convert_tdio_enabled(void);
void print_serial(void); void print_serial(void);
#endif #endif

View File

@ -96,12 +96,15 @@ void usbuart_init(void)
usart_enable_tx_interrupt(USART_NUM); usart_enable_tx_interrupt(USART_NUM);
} }
static uint8_t convert_tdio_enabled;
int usbuart_convert_tdio(uint32_t arg) int usbuart_convert_tdio(uint32_t arg)
{ {
(void) arg; (void) arg;
if (USART_NUM) { convert_tdio_enabled = arg;
if (!convert_tdio_enabled) {
usart_disable(1); usart_disable(1);
USART_NUM = 0; USART_NUM = 0;
usbuart_init(); usbuart_init();
@ -131,6 +134,11 @@ int usbuart_convert_tdio(uint32_t arg)
} }
int usbuart_convert_tdio_enabled(void)
{
return convert_tdio_enabled;
}
void usbuart_set_line_coding(struct usb_cdc_line_coding *coding) void usbuart_set_line_coding(struct usb_cdc_line_coding *coding)
{ {
uint8_t sbmode = (coding->bCharFormat == 2) ? 1 : 0; uint8_t sbmode = (coding->bCharFormat == 2) ? 1 : 0;