static int f_uread(int uart, int numchars) { if (_argc < 1 || _argc > 2) { return -1; } if (uart < 0 || uart >= CONFIG_UART_CNT) { return -1; } if (_argc == 1) { numchars = 0x7fffffff; } int l = UART_rx_available(_UART(uart)); l = MIN(l, numchars); int ix = 0; while (ix++ < l) { print("%c", UART_get_char(_UART(uart))); } print("\n%i bytes read\n", l); return 0; }
static int f_uconf(int uart, int speed) { if (_argc != 2) { return -1; } if (IS_STRING(uart) || IS_STRING(speed) || uart < 0 || uart >= CONFIG_UART_CNT) { return -1; } UART_config(_UART(uart), speed, UART_DATABITS_8, UART_STOPBITS_1, UART_PARITY_NONE, UART_FLOWCONTROL_NONE, TRUE); return 0; }
static int f_uwrite(int uart, char* data) { if (_argc != 2 || !IS_STRING(data)) { return -1; } if (uart < 0 || uart >= CONFIG_UART_CNT) { return -1; } char c; while ((c = *data++) != 0) { UART_put_char(_UART(uart), c); } return 0; }
void CLI_init() { if (__dbg_magic != 0x43215678) { __dbg_magic = 0x43215678; SYS_dbg_level(D_WARN); SYS_dbg_mask_set(0); } memset(&cli_state, 0, sizeof(cli_state)); DBG(D_CLI, D_DEBUG, "CLI init\n"); UART_set_callback(_UART(UARTSTDIN), CLI_uart_check_char, NULL); #ifdef CONFIG_ARCHID_VCD USB_SER_set_rx_callback(usb_rx_cb, NULL); #endif print ("\n"); cli_print_app_name(); print("\n\n"); print("build : %i\n", SYS_build_number()); print("build date: %i\n", SYS_build_date()); print("\ntype '?' or 'help' for list of commands\n\n"); print(CLI_PROMPT); }
void UART_init() { memset(__uart_vec, 0, sizeof(__uart_vec)); int uc = 0; #ifdef CONFIG_UART1 _UART(uc++)->hw = USART1; UART_config(_UART(uc-1), UART1_SPEED, UART_DATABITS_8, UART_STOPBITS_1, UART_PARITY_NONE, UART_FLOWCONTROL_NONE, TRUE); UART_TX_IRQ_OFF(_UART(uc-1)); #endif #ifdef CONFIG_UART2 _UART(uc++)->hw = USART2; UART_config(_UART(uc-1), UART2_SPEED, UART_DATABITS_8, UART_STOPBITS_1, UART_PARITY_NONE, UART_FLOWCONTROL_NONE, TRUE); UART_TX_IRQ_OFF(_UART(uc-1)); #endif #ifdef CONFIG_UART3 _UART(uc++)->hw = USART3; UART_config(_UART(uc-1), UART3_SPEED, UART_DATABITS_8, UART_STOPBITS_1, UART_PARITY_NONE, UART_FLOWCONTROL_NONE, TRUE); UART_TX_IRQ_OFF(_UART(uc-1)); #endif #ifdef CONFIG_UART4 _UART(uc++)->hw = UART4; UART_config(_UART(uc-1), UART4_SPEED, UART_DATABITS_8, UART_STOPBITS_1, UART_PARITY_NONE, UART_FLOWCONTROL_NONE, TRUE); UART_TX_IRQ_OFF(_UART(uc-1)); #endif }
void UART4_IRQHandler(void) { TRACE_IRQ_ENTER(UART4_IRQn); UART_irq(_UART(1)); TRACE_IRQ_EXIT(UART4_IRQn); }
void USART2_IRQHandler(void) { TRACE_IRQ_ENTER(USART2_IRQn); UART_irq(_UART(0)); TRACE_IRQ_EXIT(USART2_IRQn); }