able to build with pca10056 & feather52832

This commit is contained in:
hathach 2018-08-07 14:32:46 +07:00
parent a12239359c
commit dfd5613a7e
3 changed files with 53 additions and 38 deletions

View File

@ -44,7 +44,9 @@
#include "app_uart.h" #include "app_uart.h"
#include "nrf_error.h" #include "nrf_error.h"
#ifdef NRF52840_XXAA
#include "tusb.h" #include "tusb.h"
#endif
#define APP_SLIP_END 0xC0 /**< SLIP code for identifying the beginning and end of a packet frame.. */ #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. */ #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; 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; 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) 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)) 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) 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) 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]) switch (mp_tx_buffer[m_tx_buffer_index])
{ {
case APP_SLIP_END: case APP_SLIP_END:
err_code = usb_uart_put(APP_SLIP_ESC_END); err_code = serial_put(APP_SLIP_ESC_END);
break; break;
case APP_SLIP_ESC: case APP_SLIP_ESC:
err_code = usb_uart_put(APP_SLIP_ESC_ESC); err_code = serial_put(APP_SLIP_ESC_ESC);
break; break;
default: default:
@ -182,7 +191,7 @@ static uint32_t send_tx_byte_encoded(void)
static uint32_t send_tx_byte_esc(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) if (err_code == NRF_SUCCESS)
{ {
@ -339,7 +348,25 @@ static bool rx_buffer_overflowed(void)
return false; 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 /** @brief Function for handling the UART module event. It parses events from the UART when
* bytes are received/transmitted. * bytes are received/transmitted.
* *
@ -371,7 +398,7 @@ static uint32_t slip_uart_open(void)
HCI_UART_TX_PIN, HCI_UART_TX_PIN,
HCI_UART_RTS_PIN, HCI_UART_RTS_PIN,
HCI_UART_CTS_PIN, HCI_UART_CTS_PIN,
(app_uart_flow_control_t)HCI_UART_FLOW_CONTROL, HCI_UART_FLOW_CONTROL,
false, false,
HCI_UART_BAUDRATE HCI_UART_BAUDRATE
}; };
@ -387,22 +414,6 @@ static uint32_t slip_uart_open(void)
} }
return err_code; 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 #endif
@ -433,11 +444,11 @@ uint32_t hci_slip_open()
uint32_t hci_slip_close() uint32_t hci_slip_close()
{ {
m_current_state = SLIP_OFF; m_current_state = SLIP_OFF;
#if 0 #ifdef NRF52840_XXAA
return NRF_SUCCESS;
#else
uint32_t err_code = app_uart_close(); uint32_t err_code = app_uart_close();
return err_code; return err_code;
#else
return NRF_SUCCESS;
#endif #endif
} }

View File

@ -25,11 +25,13 @@
#include "crc16.h" #include "crc16.h"
#include "pstorage.h" #include "pstorage.h"
#include "app_scheduler.h" #include "app_scheduler.h"
#include "nrf_delay.h"
#include "nrfx.h"
#include "app_timer.h" #include "app_timer.h"
#ifdef NRF52840_XXAA
#include "tusb.h" #include "tusb.h"
#endif
#define APP_TIMER_PRESCALER 0 #define APP_TIMER_PRESCALER 0
@ -125,11 +127,10 @@ static void wait_for_events(void)
// Event received. Process it from the scheduler. // Event received. Process it from the scheduler.
app_sched_execute(); app_sched_execute();
// USB stack #ifdef NRF52840_XXAA
tusb_task(); tusb_task();
// Send out cdc's data
tud_cdc_write_flush(); tud_cdc_write_flush();
#endif
if ((m_update_status == BOOTLOADER_COMPLETE) || if ((m_update_status == BOOTLOADER_COMPLETE) ||
(m_update_status == BOOTLOADER_TIMEOUT) || (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 // Ensure that flash operations are not executed within the first 100 ms seconds to allow
// a debugger to be attached. // a debugger to be attached.
nrf_delay_ms(100); NRFX_DELAY_MS(100);
err_code = dfu_sd_image_swap(); err_code = dfu_sd_image_swap();
APP_ERROR_CHECK(err_code); APP_ERROR_CHECK(err_code);

View File

@ -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/hci/hci_transport.c
C_SOURCE_FILES += $(SDK_PATH)/libraries/util/nrf_assert.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 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 += $(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 endif
@ -185,7 +189,7 @@ endif
ifneq ($(IS_NRF52840),) ifneq ($(IS_NRF52840),)
ASM_SOURCE_FILES = $(NRFX_PATH)/mdk/gcc_startup_nrf52840.S ASM_SOURCE_FILES = $(NRFX_PATH)/mdk/gcc_startup_nrf52840.S
else else
#ASM_SOURCE_FILES = $(NRFX_PATH)/mdk/gcc_startup_nrf52.S ASM_SOURCE_FILES = $(NRFX_PATH)/mdk/gcc_startup_nrf52.S
endif endif
#****************************************************************************** #******************************************************************************
@ -220,11 +224,10 @@ IPATH += $(SDK_PATH)/libraries/hci/config
IPATH += $(SDK_PATH)/libraries/uart IPATH += $(SDK_PATH)/libraries/uart
IPATH += $(SDK_PATH)/libraries/hci IPATH += $(SDK_PATH)/libraries/hci
#IPATH += $(SDK_PATH)/drivers_nrf/common
#IPATH += $(SDK_PATH)/drivers_nrf/hal #IPATH += $(SDK_PATH)/drivers_nrf/hal
#IPATH += $(SDK_PATH)/drivers_nrf/config #IPATH += $(SDK_PATH)/drivers_nrf/config
IPATH += $(SDK_PATH)/drivers_nrf/delay IPATH += $(SDK_PATH)/drivers_nrf/delay
#IPATH += $(SDK_PATH)/drivers_nrf/uart
#IPATH += $(SDK_PATH)/drivers_nrf/power #IPATH += $(SDK_PATH)/drivers_nrf/power
# Softdevice # Softdevice