BLE FOTA APP

Dependencies:   BLE_API mbed

It doesn't work with the default FOTA bootloader. It use NVIC_SystemReset() to enter a bootloader.

Committer:
yihui
Date:
Fri Oct 10 03:36:28 2014 +0000
Revision:
1:a607cd9655d7
use NVIC_SystemReset() to run bootloader

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yihui 1:a607cd9655d7 1 /* Copyright (c) 2013 Nordic Semiconductor. All Rights Reserved.
yihui 1:a607cd9655d7 2 *
yihui 1:a607cd9655d7 3 * The information contained herein is property of Nordic Semiconductor ASA.
yihui 1:a607cd9655d7 4 * Terms and conditions of usage are described in detail in NORDIC
yihui 1:a607cd9655d7 5 * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.
yihui 1:a607cd9655d7 6 *
yihui 1:a607cd9655d7 7 * Licensees are granted free, non-transferable use of the information. NO
yihui 1:a607cd9655d7 8 * WARRANTY of ANY KIND is provided. This heading must NOT be removed from
yihui 1:a607cd9655d7 9 * the file.
yihui 1:a607cd9655d7 10 *
yihui 1:a607cd9655d7 11 */
yihui 1:a607cd9655d7 12
yihui 1:a607cd9655d7 13 /** @file
yihui 1:a607cd9655d7 14 *
yihui 1:a607cd9655d7 15 * @defgroup app_error Common application error handler
yihui 1:a607cd9655d7 16 * @{
yihui 1:a607cd9655d7 17 * @ingroup app_common
yihui 1:a607cd9655d7 18 *
yihui 1:a607cd9655d7 19 * @brief Common application error handler and macros for utilizing a common error handler.
yihui 1:a607cd9655d7 20 */
yihui 1:a607cd9655d7 21
yihui 1:a607cd9655d7 22 #ifndef APP_ERROR_H__
yihui 1:a607cd9655d7 23 #define APP_ERROR_H__
yihui 1:a607cd9655d7 24
yihui 1:a607cd9655d7 25 #include <stdint.h>
yihui 1:a607cd9655d7 26 #include <stdbool.h>
yihui 1:a607cd9655d7 27 #include "nrf_error.h"
yihui 1:a607cd9655d7 28
yihui 1:a607cd9655d7 29 #ifdef __cplusplus
yihui 1:a607cd9655d7 30 extern "C" {
yihui 1:a607cd9655d7 31 #endif
yihui 1:a607cd9655d7 32
yihui 1:a607cd9655d7 33 /**@brief Function for error handling, which is called when an error has occurred.
yihui 1:a607cd9655d7 34 *
yihui 1:a607cd9655d7 35 * @param[in] error_code Error code supplied to the handler.
yihui 1:a607cd9655d7 36 * @param[in] line_num Line number where the handler is called.
yihui 1:a607cd9655d7 37 * @param[in] p_file_name Pointer to the file name.
yihui 1:a607cd9655d7 38 */
yihui 1:a607cd9655d7 39 void app_error_handler(uint32_t error_code, uint32_t line_num, const uint8_t * p_file_name);
yihui 1:a607cd9655d7 40
yihui 1:a607cd9655d7 41 #ifdef __cplusplus
yihui 1:a607cd9655d7 42 }
yihui 1:a607cd9655d7 43 #endif
yihui 1:a607cd9655d7 44
yihui 1:a607cd9655d7 45 /**@brief Macro for calling error handler function.
yihui 1:a607cd9655d7 46 *
yihui 1:a607cd9655d7 47 * @param[in] ERR_CODE Error code supplied to the error handler.
yihui 1:a607cd9655d7 48 */
yihui 1:a607cd9655d7 49 #define APP_ERROR_HANDLER(ERR_CODE) \
yihui 1:a607cd9655d7 50 do \
yihui 1:a607cd9655d7 51 { \
yihui 1:a607cd9655d7 52 app_error_handler((ERR_CODE), __LINE__, (uint8_t*) __FILE__); \
yihui 1:a607cd9655d7 53 } while (0)
yihui 1:a607cd9655d7 54
yihui 1:a607cd9655d7 55 /**@brief Macro for calling error handler function if supplied error code any other than NRF_SUCCESS.
yihui 1:a607cd9655d7 56 *
yihui 1:a607cd9655d7 57 * @param[in] ERR_CODE Error code supplied to the error handler.
yihui 1:a607cd9655d7 58 */
yihui 1:a607cd9655d7 59 #define APP_ERROR_CHECK(ERR_CODE) \
yihui 1:a607cd9655d7 60 do \
yihui 1:a607cd9655d7 61 { \
yihui 1:a607cd9655d7 62 const uint32_t LOCAL_ERR_CODE = (ERR_CODE); \
yihui 1:a607cd9655d7 63 if (LOCAL_ERR_CODE != NRF_SUCCESS) \
yihui 1:a607cd9655d7 64 { \
yihui 1:a607cd9655d7 65 APP_ERROR_HANDLER(LOCAL_ERR_CODE); \
yihui 1:a607cd9655d7 66 } \
yihui 1:a607cd9655d7 67 } while (0)
yihui 1:a607cd9655d7 68
yihui 1:a607cd9655d7 69 /**@brief Macro for calling error handler function if supplied boolean value is false.
yihui 1:a607cd9655d7 70 *
yihui 1:a607cd9655d7 71 * @param[in] BOOLEAN_VALUE Boolean value to be evaluated.
yihui 1:a607cd9655d7 72 */
yihui 1:a607cd9655d7 73 #define APP_ERROR_CHECK_BOOL(BOOLEAN_VALUE) \
yihui 1:a607cd9655d7 74 do \
yihui 1:a607cd9655d7 75 { \
yihui 1:a607cd9655d7 76 const bool LOCAL_BOOLEAN_VALUE = (BOOLEAN_VALUE); \
yihui 1:a607cd9655d7 77 if (!LOCAL_BOOLEAN_VALUE) \
yihui 1:a607cd9655d7 78 { \
yihui 1:a607cd9655d7 79 APP_ERROR_HANDLER(0); \
yihui 1:a607cd9655d7 80 } \
yihui 1:a607cd9655d7 81 } while (0)
yihui 1:a607cd9655d7 82
yihui 1:a607cd9655d7 83 #endif // APP_ERROR_H__
yihui 1:a607cd9655d7 84
yihui 1:a607cd9655d7 85 /** @} */