* updated with code optimizations in serial apis.

pull/1214/head
akhilpanayam 2015-06-29 17:14:17 +05:30
parent 4dd6e5304d
commit e22f425486
1 changed files with 3 additions and 7 deletions

View File

@ -34,6 +34,7 @@
uint8_t serial_get_index(serial_t *obj); uint8_t serial_get_index(serial_t *obj);
IRQn_Type get_serial_irq_num (serial_t *obj);
static uint32_t serial_irq_ids[USART_NUM] = {0}; static uint32_t serial_irq_ids[USART_NUM] = {0};
static uart_irq_handler irq_handler; static uart_irq_handler irq_handler;
@ -224,7 +225,6 @@ void serial_init(serial_t *obj, PinName tx, PinName rx)
pSERIAL_S(obj)->pinmux_pad2 = padsetting[2];//EDBG_CDC_SERCOM_PINMUX_PAD2; pSERIAL_S(obj)->pinmux_pad2 = padsetting[2];//EDBG_CDC_SERCOM_PINMUX_PAD2;
pSERIAL_S(obj)->pinmux_pad3 = padsetting[3];//EDBG_CDC_SERCOM_PINMUX_PAD3; pSERIAL_S(obj)->pinmux_pad3 = padsetting[3];//EDBG_CDC_SERCOM_PINMUX_PAD3;
sercom_index = _sercom_get_sercom_inst_index(pUSART_S(obj));
pm_index = sercom_index + PM_APBCMASK_SERCOM0_Pos; pm_index = sercom_index + PM_APBCMASK_SERCOM0_Pos;
gclk_index = sercom_index + SERCOM0_GCLK_ID_CORE; gclk_index = sercom_index + SERCOM0_GCLK_ID_CORE;
@ -287,6 +287,7 @@ void serial_init(serial_t *obj, PinName tx, PinName rx)
void serial_free(serial_t *obj) void serial_free(serial_t *obj)
{ {
serial_irq_ids[serial_get_index(obj)] = 0; serial_irq_ids[serial_get_index(obj)] = 0;
disable_usart(obj);
} }
void serial_baud(serial_t *obj, int baudrate) void serial_baud(serial_t *obj, int baudrate)
@ -435,30 +436,25 @@ void serial_set_flow_control(serial_t *obj, FlowControl type, PinName rxflow, Pi
switch ((int)pUSART_S(obj)) { switch ((int)pUSART_S(obj)) {
case UART_0: case UART_0:
irq_n = SERCOM0_IRQn;
vector = (uint32_t)uart0_irq; vector = (uint32_t)uart0_irq;
break; break;
case UART_1: case UART_1:
irq_n = SERCOM1_IRQn;
vector = (uint32_t)uart1_irq; vector = (uint32_t)uart1_irq;
break; break;
case UART_2: case UART_2:
irq_n = SERCOM2_IRQn;
vector = (uint32_t)uart2_irq; vector = (uint32_t)uart2_irq;
break; break;
case UART_3: case UART_3:
irq_n = SERCOM3_IRQn;
vector = (uint32_t)uart3_irq; vector = (uint32_t)uart3_irq;
break; break;
case UART_4: case UART_4:
irq_n = SERCOM4_IRQn;
vector = (uint32_t)uart4_irq; vector = (uint32_t)uart4_irq;
break; break;
case UART_5: case UART_5:
irq_n = SERCOM5_IRQn;
vector = (uint32_t)uart5_irq; vector = (uint32_t)uart5_irq;
break; break;
} }
irq_n = get_serial_irq_num(obj);
disable_usart(obj); disable_usart(obj);
//TODO : assert for rxflow and txflow pis to be added //TODO : assert for rxflow and txflow pis to be added