mirror of
https://github.com/jam422470459/EPD-nRF52-hema213.git
synced 2025-12-19 14:53:19 +08:00
move components to SDK dir
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
/**
|
||||
* Copyright (c) 2012 - 2017, Nordic Semiconductor ASA
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form, except as embedded into a Nordic
|
||||
* Semiconductor ASA integrated circuit in a product or a software update for
|
||||
* such product, must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* 4. This software, with or without modification, must only be used with a
|
||||
* Nordic Semiconductor ASA integrated circuit.
|
||||
*
|
||||
* 5. Any software provided in binary form under this license must not be reverse
|
||||
* engineered, decompiled, modified and/or disassembled.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
|
||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <nrf.h>
|
||||
#include "ble_error_log.h"
|
||||
#include "app_util.h"
|
||||
#include "app_error.h"
|
||||
#include "nrf_gpio.h"
|
||||
#include "pstorage.h"
|
||||
|
||||
|
||||
// Made static to avoid the error_log to go on the stack.
|
||||
static ble_error_log_data_t m_ble_error_log; /**< . */
|
||||
//lint -esym(526,__Vectors)
|
||||
extern uint32_t * __Vectors; /**< The initialization vector holds the address to __initial_sp that will be used when fetching the stack. */
|
||||
|
||||
static void fetch_stack(ble_error_log_data_t * error_log)
|
||||
{
|
||||
uint32_t * p_stack;
|
||||
uint32_t * initial_sp;
|
||||
uint32_t length;
|
||||
|
||||
initial_sp = (uint32_t *) __Vectors;
|
||||
p_stack = (uint32_t *) GET_SP();
|
||||
|
||||
length = ((uint32_t) initial_sp) - ((uint32_t) p_stack);
|
||||
memcpy(error_log->stack_info,
|
||||
p_stack,
|
||||
(length > STACK_DUMP_LENGTH) ? STACK_DUMP_LENGTH : length);
|
||||
}
|
||||
|
||||
uint32_t ble_error_log_write(uint32_t err_code, const uint8_t * p_message, uint16_t line_number)
|
||||
{
|
||||
m_ble_error_log.failure = true;
|
||||
m_ble_error_log.err_code = err_code;
|
||||
m_ble_error_log.line_number = line_number;
|
||||
|
||||
strncpy((char *)m_ble_error_log.message, (const char *)p_message, ERROR_MESSAGE_LENGTH - 1);
|
||||
m_ble_error_log.message[ERROR_MESSAGE_LENGTH - 1] = '\0';
|
||||
|
||||
fetch_stack(&m_ble_error_log);
|
||||
|
||||
// Write to flash removed, to be redone.
|
||||
|
||||
return NRF_SUCCESS;
|
||||
}
|
||||
106
SDK/12.3.0_d7731ad/components/ble/ble_error_log/ble_error_log.h
Normal file
106
SDK/12.3.0_d7731ad/components/ble/ble_error_log/ble_error_log.h
Normal file
@@ -0,0 +1,106 @@
|
||||
/**
|
||||
* Copyright (c) 2012 - 2017, Nordic Semiconductor ASA
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form, except as embedded into a Nordic
|
||||
* Semiconductor ASA integrated circuit in a product or a software update for
|
||||
* such product, must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* 4. This software, with or without modification, must only be used with a
|
||||
* Nordic Semiconductor ASA integrated circuit.
|
||||
*
|
||||
* 5. Any software provided in binary form under this license must not be reverse
|
||||
* engineered, decompiled, modified and/or disassembled.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
|
||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
/** @file
|
||||
*
|
||||
* @defgroup ble_error_log_module Error Log Module
|
||||
* @{
|
||||
* @ingroup ble_sdk_lib
|
||||
* @brief Module for writing error and stack to flash memory.
|
||||
*
|
||||
* @details It contains functions for writing an error code, line number, filename/message and
|
||||
* the stack to the flash during an error, e.g. in the assert handler.
|
||||
*
|
||||
*/
|
||||
#ifndef BLE_ERROR_LOG_H__
|
||||
#define BLE_ERROR_LOG_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "ble_flash.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define ERROR_MESSAGE_LENGTH 128 /**< Length of error message to stored. */
|
||||
#define STACK_DUMP_LENGTH 256 /**< Length of stack to be stored at max: 64 entries of 4 bytes each. */
|
||||
#define FLASH_PAGE_ERROR_LOG (BLE_FLASH_PAGE_END - 2) /**< Address in flash where stack trace can be stored. */
|
||||
|
||||
/**@brief Error Log Data structure.
|
||||
*
|
||||
* @details The structure contains the error, message/filename, line number as well as the current
|
||||
* stack, at the time where an error occured.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint16_t failure; /**< Indication that a major failure has occurred during last execution of the application. */
|
||||
uint16_t line_number; /**< Line number indicating at which line the failure occurred. */
|
||||
uint32_t err_code; /**< Error code when failure occurred. */
|
||||
uint8_t message[ERROR_MESSAGE_LENGTH]; /**< Will just use the first 128 bytes of filename to store for debugging purposes. */
|
||||
uint32_t stack_info[STACK_DUMP_LENGTH / 4]; /**< Will contain stack information, can be manually unwinded for debug purposes. */
|
||||
} ble_error_log_data_t;
|
||||
|
||||
|
||||
/**@brief Function for writing the file name/message, line number, and current program stack
|
||||
* to flash.
|
||||
*
|
||||
* @note This function will force the writing to flash, and disregard any radio communication.
|
||||
* USE THIS FUNCTION WITH CARE.
|
||||
*
|
||||
* @param[in] err_code Error code to be logged.
|
||||
* @param[in] p_message Message to be written to the flash together with stack dump, usually
|
||||
* the file name where the error occured.
|
||||
* @param[in] line_number Line number where the error occured.
|
||||
*
|
||||
* @return NRF_SUCCESS on successful writing of the error log.
|
||||
*
|
||||
*/
|
||||
uint32_t ble_error_log_write(uint32_t err_code, const uint8_t * p_message, uint16_t line_number);
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BLE_ERROR_LOG_H__ */
|
||||
|
||||
/** @} */
|
||||
Reference in New Issue
Block a user