/** * @brief Low level serial driver initialization. * * @notapi */ void sd_lld_init(void) { #if TIVA_SERIAL_USE_UART0 sdObjectInit(&SD1); iqObjectInit(&SD1.iqueue, sd_in_buf1, sizeof sd_in_buf1, NULL, &SD1); oqObjectInit(&SD1.oqueue, sd_out_buf1, sizeof sd_out_buf1, notify1, &SD1); SD1.uart = UART0_BASE; #endif #if TIVA_SERIAL_USE_UART1 sdObjectInit(&SD2); iqObjectInit(&SD2.iqueue, sd_in_buf2, sizeof sd_in_buf2, NULL, &SD2); oqObjectInit(&SD2.oqueue, sd_out_buf2, sizeof sd_out_buf2, notify2, &SD2); SD2.uart = UART1_BASE; #endif #if TIVA_SERIAL_USE_UART2 sdObjectInit(&SD3); iqObjectInit(&SD3.iqueue, sd_in_buf3, sizeof sd_in_buf3, NULL, &SD3); oqObjectInit(&SD3.oqueue, sd_out_buf3, sizeof sd_out_buf3, notify3, &SD3); SD3.uart = UART2_BASE; #endif #if TIVA_SERIAL_USE_UART3 sdObjectInit(&SD4); iqObjectInit(&SD4.iqueue, sd_in_buf4, sizeof sd_in_buf4, NULL, &SD4); oqObjectInit(&SD4.oqueue, sd_out_buf4, sizeof sd_out_buf4, notify4, &SD4); SD4.uart = UART3_BASE; #endif #if TIVA_SERIAL_USE_UART4 sdObjectInit(&SD5); iqObjectInit(&SD5.iqueue, sd_in_buf5, sizeof sd_in_buf5, NULL, &SD5); oqObjectInit(&SD5.oqueue, sd_out_buf5, sizeof sd_out_buf5, notify5, &SD5); SD5.uart = UART4_BASE; #endif #if TIVA_SERIAL_USE_UART5 sdObjectInit(&SD6); iqObjectInit(&SD6.iqueue, sd_in_buf6, sizeof sd_in_buf6, NULL, &SD6); oqObjectInit(&SD6.oqueue, sd_out_buf6, sizeof sd_out_buf6, notify6, &SD6); SD6.uart = UART5_BASE; #endif #if TIVA_SERIAL_USE_UART6 sdObjectInit(&SD7); iqObjectInit(&SD7.iqueue, sd_in_buf7, sizeof sd_in_buf7, NULL, &SD7); oqObjectInit(&SD7.oqueue, sd_out_buf7, sizeof sd_out_buf7, notify7, &SD7); SD7.uart = UART6_BASE; #endif #if TIVA_SERIAL_USE_UART7 sdObjectInit(&SD8); iqObjectInit(&SD8.iqueue, sd_in_buf8, sizeof sd_in_buf8, NULL, &SD8); oqObjectInit(&SD8.oqueue, sd_out_buf8, sizeof sd_out_buf8, notify8, &SD8); SD8.uart = UART7_BASE; #endif }
void sdObjectInit(SerialDriver *sdp, qnotify_t inotify, qnotify_t onotify) { sdp->vmt = &vmt; osalEventObjectInit(&sdp->event); sdp->state = SD_STOP; iqObjectInit(&sdp->iqueue, sdp->ib, SERIAL_BUFFERS_SIZE, inotify, sdp); oqObjectInit(&sdp->oqueue, sdp->ob, SERIAL_BUFFERS_SIZE, onotify, sdp); }
/** * @brief Initializes a generic full duplex driver object. * @details The HW dependent part of the initialization has to be performed * outside, usually in the hardware initialization code. * * @param[out] sdup pointer to a @p SerialUSBDriver structure * * @init */ void sduObjectInit(SerialUSBDriver *sdup) { sdup->vmt = &vmt; osalEventObjectInit(&sdup->event); sdup->state = SDU_STOP; iqObjectInit(&sdup->iqueue, sdup->ib, SERIAL_USB_BUFFERS_SIZE, inotify, sdup); oqObjectInit(&sdup->oqueue, sdup->ob, SERIAL_USB_BUFFERS_SIZE, onotify, sdup); }
/** * @brief Initializes a generic teensy HID debug driver object. * @details The HW dependent part of the initialization has to be performed * outside, usually in the hardware initialization code. * * @param[out] hiddp pointer to a @p HIDDebugDriver structure * * @init */ void hidDebugObjectInit(HIDDebugDriver *hiddp) { hiddp->vmt = &vmt; osalEventObjectInit(&hiddp->event); hiddp->state = HIDDEBUG_STOP; /* TODO: how to make sure the queue is non-existent? */ /* hiddp->iqueue = (input_queue_t)NULL; */ hiddp->ib = (uint8_t *)NULL; oqObjectInit(&hiddp->oqueue, hiddp->ob, HID_DEBUG_OUTPUT_BUFFER_SIZE, onotify, hiddp); /* create the flush timer here as well (TODO: need to clean up/integrate!) */ chVTObjectInit(&hid_debug_flush_timer); }
/** * @brief Low level serial driver initialization. * * @notapi */ void sd_lld_init(void) { #if STM32_SERIAL_USE_USART1 sdObjectInit(&SD1); iqObjectInit(&SD1.iqueue, sd_in_buf1, sizeof sd_in_buf1, NULL, &SD1); oqObjectInit(&SD1.oqueue, sd_out_buf1, sizeof sd_out_buf1, notify1, &SD1); SD1.usart = USART1; SD1.clock = STM32_USART1CLK; #if defined(STM32_USART1_NUMBER) nvicEnableVector(STM32_USART1_NUMBER, STM32_SERIAL_USART1_PRIORITY); #endif #endif #if STM32_SERIAL_USE_USART2 sdObjectInit(&SD2); iqObjectInit(&SD2.iqueue, sd_in_buf2, sizeof sd_in_buf2, NULL, &SD2); oqObjectInit(&SD2.oqueue, sd_out_buf2, sizeof sd_out_buf2, notify2, &SD2); SD2.usart = USART2; SD2.clock = STM32_USART2CLK; #if defined(STM32_USART2_NUMBER) nvicEnableVector(STM32_USART2_NUMBER, STM32_SERIAL_USART2_PRIORITY); #endif #endif #if STM32_SERIAL_USE_USART3 sdObjectInit(&SD3); iqObjectInit(&SD3.iqueue, sd_in_buf3, sizeof sd_in_buf3, NULL, &SD3); oqObjectInit(&SD3.oqueue, sd_out_buf3, sizeof sd_out_buf3, notify3, &SD3); SD3.usart = USART3; SD3.clock = STM32_USART3CLK; #if defined(STM32_USART3_NUMBER) nvicEnableVector(STM32_USART3_NUMBER, STM32_SERIAL_USART3_PRIORITY); #endif #endif #if STM32_SERIAL_USE_UART4 sdObjectInit(&SD4); iqObjectInit(&SD4.iqueue, sd_in_buf4, sizeof sd_in_buf4, NULL, &SD4); oqObjectInit(&SD4.oqueue, sd_out_buf4, sizeof sd_out_buf4, notify4, &SD4); SD4.usart = UART4; SD4.clock = STM32_UART4CLK; #if defined(STM32_UART4_NUMBER) nvicEnableVector(STM32_UART4_NUMBER, STM32_SERIAL_UART4_PRIORITY); #endif #endif #if STM32_SERIAL_USE_UART5 sdObjectInit(&SD5); iqObjectInit(&SD5.iqueue, sd_in_buf5, sizeof sd_in_buf5, NULL, &SD5); oqObjectInit(&SD5.oqueue, sd_out_buf5, sizeof sd_out_buf5, notify5, &SD5); SD5.usart = UART5; SD5.clock = STM32_UART5CLK; #if defined(STM32_UART5_NUMBER) nvicEnableVector(STM32_UART5_NUMBER, STM32_SERIAL_UART5_PRIORITY); #endif #endif #if STM32_SERIAL_USE_USART6 sdObjectInit(&SD6); iqObjectInit(&SD6.iqueue, sd_in_buf6, sizeof sd_in_buf6, NULL, &SD6); oqObjectInit(&SD6.oqueue, sd_out_buf6, sizeof sd_out_buf6, notify6, &SD6); SD6.usart = USART6; SD6.clock = STM32_USART6CLK; #if defined(STM32_USART6_NUMBER) nvicEnableVector(STM32_USART6_NUMBER, STM32_SERIAL_USART6_PRIORITY); #endif #endif #if STM32_SERIAL_USE_UART7 sdObjectInit(&SD7); iqObjectInit(&SD7.iqueue, sd_in_buf7, sizeof sd_in_buf7, NULL, &SD7); oqObjectInit(&SD7.oqueue, sd_out_buf7, sizeof sd_out_buf7, notify7, &SD7); SD7.usart = UART7; SD7.clock = STM32_UART7CLK; #if defined(STM32_UART7_NUMBER) nvicEnableVector(STM32_UART7_NUMBER, STM32_SERIAL_UART7_PRIORITY); #endif #endif #if STM32_SERIAL_USE_UART8 sdObjectInit(&SD8); iqObjectInit(&SD8.iqueue, sd_in_buf8, sizeof sd_in_buf8, NULL, &SD8); oqObjectInit(&SD8.oqueue, sd_out_buf8, sizeof sd_out_buf8, notify8, &SD8); SD8.usart = UART8; SD8.clock = STM32_UART8CLK; #if defined(STM32_UART8_NUMBER) nvicEnableVector(STM32_UART8_NUMBER, STM32_SERIAL_UART8_PRIORITY); #endif #endif #if STM32_SERIAL_USE_LPUART1 sdObjectInit(&LPSD1); iqObjectInit(&LPSD1.iqueue, sd_in_buflp1, sizeof sd_in_buflp1, NULL, &LPSD1); oqObjectInit(&LPSD1.oqueue, sd_out_buflp1, sizeof sd_out_buflp1, notifylp1, &LPSD1); LPSD1.usart = LPUART1; LPSD1.clock = STM32_LPUART1CLK; #if defined(STM32_LPUART1_NUMBER) nvicEnableVector(STM32_LPUART1_NUMBER, STM32_SERIAL_LPUART1_PRIORITY); #endif #endif #if STM32_SERIAL_USE_USART3 || STM32_SERIAL_USE_UART4 || \ STM32_SERIAL_USE_UART5 || STM32_SERIAL_USE_USART6 || \ STM32_SERIAL_USE_UART7 || STM32_SERIAL_USE_UART8 #if defined(STM32_USART3_8_HANDLER) nvicEnableVector(STM32_USART3_8_NUMBER, STM32_SERIAL_USART3_8_PRIORITY); #endif #endif }