clean up main.c

This commit is contained in:
hathach 2018-04-04 17:39:26 +07:00
parent 0ec010efa9
commit a80e029ae1
2 changed files with 25 additions and 46 deletions

View File

@ -95,8 +95,6 @@
#define BLEGATT_ATT_MTU_MAX 247 #define BLEGATT_ATT_MTU_MAX 247
enum { BLE_CONN_CFG_HIGH_BANDWIDTH = 1 }; enum { BLE_CONN_CFG_HIGH_BANDWIDTH = 1 };
// Adafruit for factory reset // Adafruit for factory reset
#define APPDATA_ADDR_START (BOOTLOADER_REGION_START-DFU_APP_DATA_RESERVED) #define APPDATA_ADDR_START (BOOTLOADER_REGION_START-DFU_APP_DATA_RESERVED)
STATIC_ASSERT( APPDATA_ADDR_START == 0xED000); STATIC_ASSERT( APPDATA_ADDR_START == 0xED000);
@ -115,11 +113,6 @@ bool _ota_update = false;
bool is_ota(void) { return _ota_update; } bool is_ota(void) { return _ota_update; }
void assert_nrf_callback(uint16_t line_num, const uint8_t * p_file_name)
{
app_error_handler(0xDEADBEEF, line_num, p_file_name);
}
static void button_pin_init(uint32_t pin) static void button_pin_init(uint32_t pin)
{ {
nrf_gpio_cfg_sense_input(pin, BUTTON_PULL, NRF_GPIO_PIN_SENSE_LOW); nrf_gpio_cfg_sense_input(pin, BUTTON_PULL, NRF_GPIO_PIN_SENSE_LOW);
@ -215,10 +208,6 @@ void blinky_ota_disconneted(void)
isOTAConnected = false; isOTAConnected = false;
} }
static void nrf_error_cb(uint32_t id, uint32_t pc, uint32_t info)
{
}
/**@brief Function for initializing the BLE stack. /**@brief Function for initializing the BLE stack.
* *
@ -257,8 +246,7 @@ static uint32_t ble_stack_init(bool init_softdevice)
#endif #endif
}; };
// equivalent to nrf_sdh_enable_request() APP_ERROR_CHECK( sd_softdevice_enable(&clock_cfg, app_error_fault_handler) );
APP_ERROR_CHECK( sd_softdevice_enable(&clock_cfg, nrf_error_cb) );
sd_nvic_EnableIRQ(SD_EVT_IRQn); sd_nvic_EnableIRQ(SD_EVT_IRQn);
/*------------- Configure BLE params -------------*/ /*------------- Configure BLE params -------------*/
@ -303,19 +291,6 @@ static uint32_t ble_stack_init(bool init_softdevice)
} }
/**
* @brief Function for event scheduler initialization.
*/
static void scheduler_init(void)
{
APP_SCHED_INIT(SCHED_MAX_EVENT_DATA_SIZE, SCHED_QUEUE_SIZE);
/* Initialize a blinky timer to show that we're in bootloader */
(void) app_timer_create(&blinky_timer_id, APP_TIMER_MODE_REPEATED, blinky_handler);
app_timer_start(blinky_timer_id, APP_TIMER_TICKS(LED_BLINK_INTERVAL), NULL);
}
/** /**
* @brief Function for bootloader main entry. * @brief Function for bootloader main entry.
*/ */
@ -333,11 +308,8 @@ int main(void)
// start bootloader either serial or ble // start bootloader either serial or ble
bool dfu_start = _ota_update || (NRF_POWER->GPREGRET == BOOTLOADER_DFU_SERIAL_MAGIC); bool dfu_start = _ota_update || (NRF_POWER->GPREGRET == BOOTLOADER_DFU_SERIAL_MAGIC);
if (dfu_start)
{
// Clear GPREGRET if it is our values // Clear GPREGRET if it is our values
NRF_POWER->GPREGRET = 0; if (dfu_start) NRF_POWER->GPREGRET = 0;
}
// Save bootloader version to pre-defined register, retrieved by application // Save bootloader version to pre-defined register, retrieved by application
BOOTLOADER_VERSION_REGISTER = (BOOTLOADER_VERSION); BOOTLOADER_VERSION_REGISTER = (BOOTLOADER_VERSION);
@ -348,8 +320,7 @@ int main(void)
APP_ERROR_CHECK_BOOL(NRF_FICR->CODEPAGESIZE == CODE_PAGE_SIZE); APP_ERROR_CHECK_BOOL(NRF_FICR->CODEPAGESIZE == CODE_PAGE_SIZE);
/* Initialize GPIOs /* Initialize GPIOs
* For metro52 LED_BLUE is muxed with FRESET * For metro52 LED_BLUE is muxed with FRESET */
*/
button_pin_init(BOOTLOADER_BUTTON); button_pin_init(BOOTLOADER_BUTTON);
button_pin_init(FRESET_BUTTON); button_pin_init(FRESET_BUTTON);
nrf_delay_us(100); // wait for the pin state is stable nrf_delay_us(100); // wait for the pin state is stable
@ -357,11 +328,15 @@ int main(void)
led_pin_init(LED_RED); led_pin_init(LED_RED);
led_pin_init(LED_BLUE); // on metro52 will override FRESET led_pin_init(LED_BLUE); // on metro52 will override FRESET
// Initialize timer module, already configred to use with the scheduler. // Init scheduler and timer (use scheduler)
// APP_TIMER_APPSH_INIT(APP_TIMER_PRESCALER, APP_TIMER_OP_QUEUE_SIZE, true); APP_SCHED_INIT(SCHED_MAX_EVENT_DATA_SIZE, SCHED_QUEUE_SIZE);
app_timer_init(); app_timer_init();
/* Initialize a blinky timer to show that we're in bootloader */
(void) app_timer_create(&blinky_timer_id, APP_TIMER_MODE_REPEATED, blinky_handler);
app_timer_start(blinky_timer_id, APP_TIMER_TICKS(LED_BLINK_INTERVAL), NULL);
// Init bootloader and SD
(void) bootloader_init(); (void) bootloader_init();
if (bootloader_dfu_sd_in_progress()) if (bootloader_dfu_sd_in_progress())
@ -370,18 +345,17 @@ int main(void)
APP_ERROR_CHECK(err_code); APP_ERROR_CHECK(err_code);
ble_stack_init(!sd_inited); ble_stack_init(!sd_inited);
scheduler_init();
err_code = bootloader_dfu_sd_update_finalize(); err_code = bootloader_dfu_sd_update_finalize();
APP_ERROR_CHECK(err_code); APP_ERROR_CHECK(err_code);
} }
else else
{ {
// If stack is present then continue initialization of bootloader.
ble_stack_init(!sd_inited); ble_stack_init(!sd_inited);
scheduler_init();
} }
/*------------- Determine DFU mode (Serial, OTA, FRESET or normal) -------------*/
/* For metro52 LED_BLUE is muxed with FRESET. We only init FRESET BUTTON /* For metro52 LED_BLUE is muxed with FRESET. We only init FRESET BUTTON
* as needed and reconfigure as LED BLUE when done. */ * as needed and reconfigure as LED BLUE when done. */
#ifdef BOARD_METRO52 #ifdef BOARD_METRO52
@ -409,12 +383,11 @@ int main(void)
{ {
/* Adafruit Modification /* Adafruit Modification
* Even DFU is not active, we still force an 1000 ms dfu serial mode when startup * Even DFU is not active, we still force an 1000 ms dfu serial mode when startup
* to support auto programming from Arduino IDE * to support auto programming from Arduino IDE */
*/
(void) bootloader_dfu_start(false, BOOTLOADER_STARTUP_DFU_INTERVAL); (void) bootloader_dfu_start(false, BOOTLOADER_STARTUP_DFU_INTERVAL);
} }
// Adafruit Factory reset /*------------- Adafruit Factory reset -------------*/
#ifdef BOARD_METRO52 #ifdef BOARD_METRO52
button_pin_init(FRESET_BUTTON); button_pin_init(FRESET_BUTTON);
nrf_delay_us(100); // wait for the pin state is stable nrf_delay_us(100); // wait for the pin state is stable
@ -431,6 +404,7 @@ int main(void)
adafruit_factory_reset(); adafruit_factory_reset();
} }
/*------------- Stop timer and jump to application -------------*/
app_timer_stop(blinky_timer_id); app_timer_stop(blinky_timer_id);
if (bootloader_app_is_valid(DFU_BANK_0_REGION_START) && !bootloader_dfu_sd_in_progress()) if (bootloader_app_is_valid(DFU_BANK_0_REGION_START) && !bootloader_dfu_sd_in_progress())
@ -521,6 +495,11 @@ void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info)
NVIC_SystemReset(); NVIC_SystemReset();
} }
void assert_nrf_callback(uint16_t line_num, const uint8_t * p_file_name)
{
app_error_handler(0xDEADBEEF, line_num, p_file_name);
}
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// tinyusb callbacks // tinyusb callbacks
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+

View File

@ -19,13 +19,13 @@
arm_target_device_name="nRF52840_xxAA" arm_target_device_name="nRF52840_xxAA"
arm_target_interface_type="SWD" arm_target_interface_type="SWD"
c_preprocessor_definitions="NRF52840_XXAA;__nRF_FAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;NO_VTOR_CONFIG;BOARD_FEATHER52840;BOOTLOADER_VERSION=0x06000001;S140;CONFIG_GPIO_AS_PINRESET;BLE_STACK_SUPPORT_REQD;SWI_DISABLE0;SOFTDEVICE_PRESENT;FLOAT_ABI_HARD;DFU_APP_DATA_RESERVED=7*4096" c_preprocessor_definitions="NRF52840_XXAA;__nRF_FAMILY;ARM_MATH_CM4;FLASH_PLACEMENT=1;NO_VTOR_CONFIG;BOARD_FEATHER52840;BOOTLOADER_VERSION=0x06000001;S140;CONFIG_GPIO_AS_PINRESET;BLE_STACK_SUPPORT_REQD;SWI_DISABLE0;SOFTDEVICE_PRESENT;FLOAT_ABI_HARD;DFU_APP_DATA_RESERVED=7*4096"
c_user_include_directories="$(TusbDir)/hw;$(TusbDir)/tinyusb;$(SdkDir);$(SdkDir)/device;$(SdkDir)/toolchain;$(SdkDir)/drivers_nrf/hal;$(SdkDir)/drivers_nrf/systick;$(SdkDir)/drivers_nrf/uart;$(SdkDir)/drivers_nrf/usbd;$(SdkDir)/drivers_nrf/common;$(SdkDir)/drivers_nrf/delay;$(SdkDir)/drivers_nrf/power;$(SdkDir)/drivers_nrf/clock;$(SdkDir)/drivers_nrf/pstorage;$(SdkDir)/external/fprintf;$(SdkDir)/libraries/util;$(SdkDir)/libraries/strerror;$(SdkDir)/libraries/atomic;$(SdkDir)/libraries/balloc;$(SdkDir)/libraries/experimental_log/src;$(SdkDir)/libraries/experimental_log;$(SdkDir)/libraries/experimental_section_vars;$(SdkDir)/libraries/experimental_memobj;$(SdkDir)/libraries/timer;$(SdkDir)/libraries/scheduler;$(SdkDir)/libraries/crc16;$(SdkDir)/libraries/util;$(SdkDir)/libraries/hci/config;$(SdkDir)/libraries/uart;$(SdkDir)/libraries/hci;$(SdkDir)/libraries/bootloader_dfu;$(SdkDir)/libraries/bootloader_dfu/hci_transport;$(SdkDir)/ble/common/;$(SdkDir)/ble/ble_services/ble_dfu;$(SdkDir)/ble/ble_services/ble_dis;$(SdDir)/s140/headers;$(SdDir)/s140/headers/nrf52;$(SdkDir)/toolchain/cmsis/include;../" c_user_include_directories="$(TusbDir);$(SdkDir);$(SdkDir)/device;$(SdkDir)/toolchain;$(SdkDir)/drivers_nrf/hal;$(SdkDir)/drivers_nrf/systick;$(SdkDir)/drivers_nrf/uart;$(SdkDir)/drivers_nrf/usbd;$(SdkDir)/drivers_nrf/common;$(SdkDir)/drivers_nrf/delay;$(SdkDir)/drivers_nrf/power;$(SdkDir)/drivers_nrf/clock;$(SdkDir)/drivers_nrf/pstorage;$(SdkDir)/external/fprintf;$(SdkDir)/libraries/util;$(SdkDir)/libraries/strerror;$(SdkDir)/libraries/atomic;$(SdkDir)/libraries/balloc;$(SdkDir)/libraries/experimental_log/src;$(SdkDir)/libraries/experimental_log;$(SdkDir)/libraries/experimental_section_vars;$(SdkDir)/libraries/experimental_memobj;$(SdkDir)/libraries/timer;$(SdkDir)/libraries/scheduler;$(SdkDir)/libraries/crc16;$(SdkDir)/libraries/util;$(SdkDir)/libraries/hci/config;$(SdkDir)/libraries/uart;$(SdkDir)/libraries/hci;$(SdkDir)/libraries/bootloader_dfu;$(SdkDir)/libraries/bootloader_dfu/hci_transport;$(SdkDir)/ble/common/;$(SdkDir)/ble/ble_services/ble_dfu;$(SdkDir)/ble/ble_services/ble_dis;$(SdDir)/s140/headers;$(SdDir)/s140/headers/nrf52;$(SdkDir)/toolchain/cmsis/include;../"
debug_register_definition_file="$(ProjectDir)/nrf52840_Registers.xml" debug_register_definition_file="$(ProjectDir)/nrf52840_Registers.xml"
debug_target_connection="J-Link" debug_target_connection="J-Link"
gcc_entry_point="Reset_Handler" gcc_entry_point="Reset_Handler"
linker_memory_map_file="$(ProjectDir)/nRF52840_xxAA_MemoryMap.xml" linker_memory_map_file="$(ProjectDir)/nRF52840_xxAA_MemoryMap.xml"
linker_section_placement_file="$(ProjectDir)/flash_placement.xml" linker_section_placement_file="$(ProjectDir)/flash_placement.xml"
macros="DeviceHeaderFile=$(PackagesDir)/nRF/CMSIS/Device/Include/nrf.h;DeviceLibraryIdentifier=M4lf;DeviceSystemFile=$(PackagesDir)/nRF/CMSIS/Device/Source/system_nrf52840.c;DeviceVectorsFile=$(PackagesDir)/nRF/Source/ses_nrf52840_Vectors.s;DeviceFamily=nRF;Target=nRF52840_xxAA;Placement=Flash;TusbDir=../../tinyusb;SdkDir=../../nRF5_SDK_11.0.0_89a8197/components;SdDir=../../softdevice/6.0.0" macros="DeviceHeaderFile=$(PackagesDir)/nRF/CMSIS/Device/Include/nrf.h;DeviceLibraryIdentifier=M4lf;DeviceSystemFile=$(PackagesDir)/nRF/CMSIS/Device/Source/system_nrf52840.c;DeviceVectorsFile=$(PackagesDir)/nRF/Source/ses_nrf52840_Vectors.s;DeviceFamily=nRF;Target=nRF52840_xxAA;Placement=Flash;TusbDir=../../lib/tinyusb/tinyusb;SdkDir=../../nRF5_SDK_11.0.0_89a8197/components;SdDir=../../softdevice/6.0.0"
project_directory="" project_directory=""
project_type="Executable" project_type="Executable"
target_reset_script="Reset();" target_reset_script="Reset();"
@ -52,8 +52,8 @@
<folder <folder
Name="tinyusb" Name="tinyusb"
exclude="" exclude=""
filter="*.h" filter="*.c;*.h"
path="../../tinyusb/tinyusb" path="../../lib/tinyusb/tinyusb"
recurse="Yes" /> recurse="Yes" />
<folder Name="sdk"> <folder Name="sdk">
<folder Name="components"> <folder Name="components">