Allow for single-tap reset when requested
This commit is contained in:
parent
563f15158d
commit
fe5cbd8183
12
src/main.c
12
src/main.c
@ -61,6 +61,7 @@
|
|||||||
#include "nrf_error.h"
|
#include "nrf_error.h"
|
||||||
|
|
||||||
#include "boards.h"
|
#include "boards.h"
|
||||||
|
#include "uf2/uf2.h"
|
||||||
|
|
||||||
#include "pstorage_platform.h"
|
#include "pstorage_platform.h"
|
||||||
#include "nrf_mbr.h"
|
#include "nrf_mbr.h"
|
||||||
@ -112,6 +113,8 @@ void usb_teardown(void);
|
|||||||
#define BOOTLOADER_VERSION_REGISTER NRF_TIMER2->CC[0]
|
#define BOOTLOADER_VERSION_REGISTER NRF_TIMER2->CC[0]
|
||||||
#define DFU_SERIAL_STARTUP_INTERVAL 1000
|
#define DFU_SERIAL_STARTUP_INTERVAL 1000
|
||||||
|
|
||||||
|
#define APP_ASKS_FOR_SINGLE_TAP_RESET() (*((uint32_t*)(USER_FLASH_START + 0x200)) == 0x87eeb07c)
|
||||||
|
|
||||||
// These value must be the same with one in dfu_transport_ble.c
|
// These value must be the same with one in dfu_transport_ble.c
|
||||||
#define BLEGAP_EVENT_LENGTH 6
|
#define BLEGAP_EVENT_LENGTH 6
|
||||||
#define BLEGATT_ATT_MTU_MAX 247
|
#define BLEGATT_ATT_MTU_MAX 247
|
||||||
@ -200,6 +203,9 @@ int main(void)
|
|||||||
bool const valid_app = bootloader_app_is_valid(DFU_BANK_0_REGION_START);
|
bool const valid_app = bootloader_app_is_valid(DFU_BANK_0_REGION_START);
|
||||||
bool const just_start_app = valid_app && !dfu_start && (*dbl_reset_mem) == DFU_DBL_RESET_APP;
|
bool const just_start_app = valid_app && !dfu_start && (*dbl_reset_mem) == DFU_DBL_RESET_APP;
|
||||||
|
|
||||||
|
if (!just_start_app && APP_ASKS_FOR_SINGLE_TAP_RESET())
|
||||||
|
dfu_start = 1;
|
||||||
|
|
||||||
// App mode: register 1st reset and DFU startup (nrf52832)
|
// App mode: register 1st reset and DFU startup (nrf52832)
|
||||||
if ( ! (just_start_app || dfu_start || !valid_app) )
|
if ( ! (just_start_app || dfu_start || !valid_app) )
|
||||||
{
|
{
|
||||||
@ -220,6 +226,9 @@ int main(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (APP_ASKS_FOR_SINGLE_TAP_RESET())
|
||||||
|
(*dbl_reset_mem) = DFU_DBL_RESET_APP;
|
||||||
|
else
|
||||||
(*dbl_reset_mem) = 0;
|
(*dbl_reset_mem) = 0;
|
||||||
|
|
||||||
if ( dfu_start || !valid_app )
|
if ( dfu_start || !valid_app )
|
||||||
@ -263,6 +272,9 @@ int main(void)
|
|||||||
// MBR must be init before start application
|
// MBR must be init before start application
|
||||||
if ( !sd_inited ) softdev_mbr_init();
|
if ( !sd_inited ) softdev_mbr_init();
|
||||||
|
|
||||||
|
// clear in case we kept DFU_DBL_RESET_APP there
|
||||||
|
(*dbl_reset_mem) = 0;
|
||||||
|
|
||||||
// Select a bank region to use as application region.
|
// Select a bank region to use as application region.
|
||||||
// @note: Only applications running from DFU_BANK_0_REGION_START is supported.
|
// @note: Only applications running from DFU_BANK_0_REGION_START is supported.
|
||||||
bootloader_app_start(DFU_BANK_0_REGION_START);
|
bootloader_app_start(DFU_BANK_0_REGION_START);
|
||||||
|
Loading…
Reference in New Issue
Block a user