diff --git a/lib/sdk/components/libraries/hci/hci_slip.c b/lib/sdk/components/libraries/hci/hci_slip.c index d5d0a68..90b2e74 100644 --- a/lib/sdk/components/libraries/hci/hci_slip.c +++ b/lib/sdk/components/libraries/hci/hci_slip.c @@ -44,7 +44,9 @@ #include "app_uart.h" #include "nrf_error.h" +#ifdef NRF52840_XXAA #include "tusb.h" +#endif #define APP_SLIP_END 0xC0 /**< SLIP code for identifying the beginning and end of a packet frame.. */ #define APP_SLIP_ESC 0xDB /**< SLIP escape code. This code is used to specify that the following character is specially encoded. */ @@ -119,14 +121,21 @@ static uint32_t send_tx_byte_end(void); */ uint32_t (*send_tx_byte) (void) = send_tx_byte_default; -static uint32_t usb_uart_put(char ch) +#ifdef NRF52840_XXAA + +static uint32_t serial_put(char ch) { return tud_cdc_write_char(ch) ? NRF_SUCCESS : NRF_ERROR_NO_MEM; } +#else + +#define serial_put app_uart_put + +#endif static uint32_t send_tx_byte_end(void) { - uint32_t err_code = usb_uart_put(APP_SLIP_END); + uint32_t err_code = serial_put(APP_SLIP_END); if ((err_code == NRF_SUCCESS) && (m_tx_buffer_index == 0)) { @@ -140,7 +149,7 @@ static uint32_t send_tx_byte_end(void) static uint32_t send_tx_byte_default(void) { - uint32_t err_code = usb_uart_put(mp_tx_buffer[m_tx_buffer_index]); + uint32_t err_code = serial_put(mp_tx_buffer[m_tx_buffer_index]); if (err_code == NRF_SUCCESS) { @@ -158,11 +167,11 @@ static uint32_t send_tx_byte_encoded(void) switch (mp_tx_buffer[m_tx_buffer_index]) { case APP_SLIP_END: - err_code = usb_uart_put(APP_SLIP_ESC_END); + err_code = serial_put(APP_SLIP_ESC_END); break; case APP_SLIP_ESC: - err_code = usb_uart_put(APP_SLIP_ESC_ESC); + err_code = serial_put(APP_SLIP_ESC_ESC); break; default: @@ -182,7 +191,7 @@ static uint32_t send_tx_byte_encoded(void) static uint32_t send_tx_byte_esc(void) { - uint32_t err_code = usb_uart_put(APP_SLIP_ESC); + uint32_t err_code = serial_put(APP_SLIP_ESC); if (err_code == NRF_SUCCESS) { @@ -339,7 +348,25 @@ static bool rx_buffer_overflowed(void) return false; } -#if 0 +#ifdef NRF52840_XXAA + +static uint32_t slip_uart_open(void) +{ + m_current_state = SLIP_READY; + return NRF_SUCCESS; +} + +void tud_cdc_rx_cb(uint8_t port) +{ + while ( tud_cdc_available() && !rx_buffer_overflowed() ) + { + int8_t ch = tud_cdc_read_char(); + handle_rx_byte((uint8_t) ch); + } +} + +#else + /** @brief Function for handling the UART module event. It parses events from the UART when * bytes are received/transmitted. * @@ -371,7 +398,7 @@ static uint32_t slip_uart_open(void) HCI_UART_TX_PIN, HCI_UART_RTS_PIN, HCI_UART_CTS_PIN, - (app_uart_flow_control_t)HCI_UART_FLOW_CONTROL, + HCI_UART_FLOW_CONTROL, false, HCI_UART_BAUDRATE }; @@ -387,22 +414,6 @@ static uint32_t slip_uart_open(void) } return err_code; } -#else - -static uint32_t slip_uart_open(void) -{ - m_current_state = SLIP_READY; - return NRF_SUCCESS; -} - -void tud_cdc_rx_cb(uint8_t port) -{ - while ( tud_cdc_available() && !rx_buffer_overflowed() ) - { - int8_t ch = tud_cdc_read_char(); - handle_rx_byte((uint8_t) ch); - } -} #endif @@ -433,11 +444,11 @@ uint32_t hci_slip_open() uint32_t hci_slip_close() { m_current_state = SLIP_OFF; -#if 0 +#ifdef NRF52840_XXAA + return NRF_SUCCESS; +#else uint32_t err_code = app_uart_close(); return err_code; -#else - return NRF_SUCCESS; #endif } diff --git a/lib/sdk11/components/libraries/bootloader_dfu/bootloader.c b/lib/sdk11/components/libraries/bootloader_dfu/bootloader.c index 73ca715..e145409 100644 --- a/lib/sdk11/components/libraries/bootloader_dfu/bootloader.c +++ b/lib/sdk11/components/libraries/bootloader_dfu/bootloader.c @@ -25,11 +25,13 @@ #include "crc16.h" #include "pstorage.h" #include "app_scheduler.h" -#include "nrf_delay.h" +#include "nrfx.h" #include "app_timer.h" +#ifdef NRF52840_XXAA #include "tusb.h" +#endif #define APP_TIMER_PRESCALER 0 @@ -125,11 +127,10 @@ static void wait_for_events(void) // Event received. Process it from the scheduler. app_sched_execute(); - // USB stack +#ifdef NRF52840_XXAA tusb_task(); - - // Send out cdc's data tud_cdc_write_flush(); +#endif if ((m_update_status == BOOTLOADER_COMPLETE) || (m_update_status == BOOTLOADER_TIMEOUT) || @@ -415,7 +416,7 @@ uint32_t bootloader_dfu_sd_update_continue(void) // Ensure that flash operations are not executed within the first 100 ms seconds to allow // a debugger to be attached. - nrf_delay_ms(100); + NRFX_DELAY_MS(100); err_code = dfu_sd_image_swap(); APP_ERROR_CHECK(err_code); diff --git a/src/Makefile b/src/Makefile index b4aa315..15cd311 100644 --- a/src/Makefile +++ b/src/Makefile @@ -142,10 +142,8 @@ C_SOURCE_FILES += $(SDK_PATH)/libraries/hci/hci_slip.c C_SOURCE_FILES += $(SDK_PATH)/libraries/hci/hci_transport.c C_SOURCE_FILES += $(SDK_PATH)/libraries/util/nrf_assert.c -#C_SOURCE_FILES += $(SDK_PATH)/libraries/uart/app_uart.c -#C_SOURCE_FILES += $(SDK_PATH)/drivers_nrf/uart/nrf_drv_uart.c -#C_SOURCE_FILES += $(SDK_PATH)/drivers_nrf/common/nrf_drv_common.c + C_SOURCE_FILES += $(SDK_PATH)/drivers_nrf/hal/nrf_nvmc.c @@ -175,6 +173,12 @@ else C_SOURCE_FILES += $(NRFX_PATH)/mdk/system_nrf52.c +C_SOURCE_FILES += $(SDK_PATH)/libraries/uart/app_uart.c +C_SOURCE_FILES += $(SDK_PATH)/drivers_nrf/uart/nrf_drv_uart.c +C_SOURCE_FILES += $(SDK_PATH)/drivers_nrf/common/nrf_drv_common.c + +IPATH += $(SDK_PATH)/drivers_nrf/common +IPATH += $(SDK_PATH)/drivers_nrf/uart endif @@ -185,7 +189,7 @@ endif ifneq ($(IS_NRF52840),) ASM_SOURCE_FILES = $(NRFX_PATH)/mdk/gcc_startup_nrf52840.S else -#ASM_SOURCE_FILES = $(NRFX_PATH)/mdk/gcc_startup_nrf52.S +ASM_SOURCE_FILES = $(NRFX_PATH)/mdk/gcc_startup_nrf52.S endif #****************************************************************************** @@ -220,11 +224,10 @@ IPATH += $(SDK_PATH)/libraries/hci/config IPATH += $(SDK_PATH)/libraries/uart IPATH += $(SDK_PATH)/libraries/hci -#IPATH += $(SDK_PATH)/drivers_nrf/common + #IPATH += $(SDK_PATH)/drivers_nrf/hal #IPATH += $(SDK_PATH)/drivers_nrf/config IPATH += $(SDK_PATH)/drivers_nrf/delay -#IPATH += $(SDK_PATH)/drivers_nrf/uart #IPATH += $(SDK_PATH)/drivers_nrf/power # Softdevice