-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1789 from mbedmicro/release
Release v121
- Loading branch information
Showing
9 changed files
with
13,220 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
51 changes: 51 additions & 0 deletions
51
...s/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/nordic_sdk/components/libraries/crc16/crc16.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/* Copyright (c) 2013 Nordic Semiconductor. All Rights Reserved. | ||
* | ||
* The information contained herein is property of Nordic Semiconductor ASA. | ||
* Terms and conditions of usage are described in detail in NORDIC | ||
* SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. | ||
* | ||
* Licensees are granted free, non-transferable use of the information. NO | ||
* WARRANTY of ANY KIND is provided. This heading must NOT be removed from | ||
* the file. | ||
* | ||
*/ | ||
|
||
/** @file | ||
* | ||
* @defgroup crc_compute CRC compute | ||
* @{ | ||
* @ingroup hci_transport | ||
* | ||
* @brief This module implements the CRC-16 calculation in the blocks. | ||
*/ | ||
|
||
#ifndef CRC16_H__ | ||
#define CRC16_H__ | ||
|
||
#include <stdint.h> | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/**@brief Function for calculating CRC-16 in blocks. | ||
* | ||
* Feed each consecutive data block into this function, along with the current value of p_crc as | ||
* returned by the previous call of this function. The first call of this function should pass NULL | ||
* as the initial value of the crc in p_crc. | ||
* | ||
* @param[in] p_data The input data block for computation. | ||
* @param[in] size The size of the input data block in bytes. | ||
* @param[in] p_crc The previous calculated CRC-16 value or NULL if first call. | ||
* | ||
* @return The updated CRC-16 value, based on the input supplied. | ||
*/ | ||
uint16_t crc16_compute(const uint8_t * p_data, uint32_t size, const uint16_t * p_crc); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif // CRC16_H__ | ||
|
||
/** @} */ |
152 changes: 152 additions & 0 deletions
152
..._NORDIC/TARGET_MCU_NRF51822/Lib/nordic_sdk/components/libraries/scheduler/app_scheduler.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved. | ||
* | ||
* The information contained herein is property of Nordic Semiconductor ASA. | ||
* Terms and conditions of usage are described in detail in NORDIC | ||
* SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. | ||
* | ||
* Licensees are granted free, non-transferable use of the information. NO | ||
* WARRANTY of ANY KIND is provided. This heading must NOT be removed from | ||
* the file. | ||
* | ||
*/ | ||
|
||
/** @file | ||
* | ||
* @defgroup app_scheduler Scheduler | ||
* @{ | ||
* @ingroup app_common | ||
* | ||
* @brief The scheduler is used for transferring execution from the interrupt context to the main | ||
* context. | ||
* | ||
* @details See @ref seq_diagrams_sched for sequence diagrams illustrating the flow of events | ||
* when using the Scheduler. | ||
* | ||
* @section app_scheduler_req Requirements: | ||
* | ||
* @subsection main_context_logic Logic in main context: | ||
* | ||
* - Define an event handler for each type of event expected. | ||
* - Initialize the scheduler by calling the APP_SCHED_INIT() macro before entering the | ||
* application main loop. | ||
* - Call app_sched_execute() from the main loop each time the application wakes up because of an | ||
* event (typically when sd_app_evt_wait() returns). | ||
* | ||
* @subsection int_context_logic Logic in interrupt context: | ||
* | ||
* - In the interrupt handler, call app_sched_event_put() | ||
* with the appropriate data and event handler. This will insert an event into the | ||
* scheduler's queue. The app_sched_execute() function will pull this event and call its | ||
* handler in the main context. | ||
* | ||
* @if (SD_S110 && !SD_S310) | ||
* For an example usage of the scheduler, see the implementations of | ||
* @ref ble_sdk_app_hids_mouse and @ref ble_sdk_app_hids_keyboard. | ||
* @endif | ||
* | ||
* @image html scheduler_working.jpg The high level design of the scheduler | ||
*/ | ||
|
||
#ifndef APP_SCHEDULER_H__ | ||
#define APP_SCHEDULER_H__ | ||
|
||
#include <stdint.h> | ||
#include "app_error.h" | ||
|
||
#define APP_SCHED_EVENT_HEADER_SIZE 8 /**< Size of app_scheduler.event_header_t (only for use inside APP_SCHED_BUF_SIZE()). */ | ||
|
||
/**@brief Compute number of bytes required to hold the scheduler buffer. | ||
* | ||
* @param[in] EVENT_SIZE Maximum size of events to be passed through the scheduler. | ||
* @param[in] QUEUE_SIZE Number of entries in scheduler queue (i.e. the maximum number of events | ||
* that can be scheduled for execution). | ||
* | ||
* @return Required scheduler buffer size (in bytes). | ||
*/ | ||
#define APP_SCHED_BUF_SIZE(EVENT_SIZE, QUEUE_SIZE) \ | ||
(((EVENT_SIZE) + APP_SCHED_EVENT_HEADER_SIZE) * ((QUEUE_SIZE) + 1)) | ||
|
||
/**@brief Scheduler event handler type. */ | ||
typedef void (*app_sched_event_handler_t)(void * p_event_data, uint16_t event_size); | ||
|
||
/**@brief Macro for initializing the event scheduler. | ||
* | ||
* @details It will also handle dimensioning and allocation of the memory buffer required by the | ||
* scheduler, making sure the buffer is correctly aligned. | ||
* | ||
* @param[in] EVENT_SIZE Maximum size of events to be passed through the scheduler. | ||
* @param[in] QUEUE_SIZE Number of entries in scheduler queue (i.e. the maximum number of events | ||
* that can be scheduled for execution). | ||
* | ||
* @note Since this macro allocates a buffer, it must only be called once (it is OK to call it | ||
* several times as long as it is from the same location, e.g. to do a reinitialization). | ||
*/ | ||
#define APP_SCHED_INIT(EVENT_SIZE, QUEUE_SIZE) \ | ||
do \ | ||
{ \ | ||
static uint32_t APP_SCHED_BUF[CEIL_DIV(APP_SCHED_BUF_SIZE((EVENT_SIZE), (QUEUE_SIZE)), \ | ||
sizeof(uint32_t))]; \ | ||
uint32_t ERR_CODE = app_sched_init((EVENT_SIZE), (QUEUE_SIZE), APP_SCHED_BUF); \ | ||
APP_ERROR_CHECK(ERR_CODE); \ | ||
} while (0) | ||
|
||
/**@brief Function for initializing the Scheduler. | ||
* | ||
* @details It must be called before entering the main loop. | ||
* | ||
* @param[in] max_event_size Maximum size of events to be passed through the scheduler. | ||
* @param[in] queue_size Number of entries in scheduler queue (i.e. the maximum number of | ||
* events that can be scheduled for execution). | ||
* @param[in] p_evt_buffer Pointer to memory buffer for holding the scheduler queue. It must | ||
* be dimensioned using the APP_SCHED_BUFFER_SIZE() macro. The buffer | ||
* must be aligned to a 4 byte boundary. | ||
* | ||
* @note Normally initialization should be done using the APP_SCHED_INIT() macro, as that will both | ||
* allocate the scheduler buffer, and also align the buffer correctly. | ||
* | ||
* @retval NRF_SUCCESS Successful initialization. | ||
* @retval NRF_ERROR_INVALID_PARAM Invalid parameter (buffer not aligned to a 4 byte | ||
* boundary). | ||
*/ | ||
uint32_t app_sched_init(uint16_t max_event_size, uint16_t queue_size, void * p_evt_buffer); | ||
|
||
/**@brief Function for executing all scheduled events. | ||
* | ||
* @details This function must be called from within the main loop. It will execute all events | ||
* scheduled since the last time it was called. | ||
*/ | ||
void app_sched_execute(void); | ||
|
||
/**@brief Function for scheduling an event. | ||
* | ||
* @details Puts an event into the event queue. | ||
* | ||
* @param[in] p_event_data Pointer to event data to be scheduled. | ||
* @param[in] event_size Size of event data to be scheduled. | ||
* @param[in] handler Event handler to receive the event. | ||
* | ||
* @return NRF_SUCCESS on success, otherwise an error code. | ||
*/ | ||
uint32_t app_sched_event_put(void * p_event_data, | ||
uint16_t event_size, | ||
app_sched_event_handler_t handler); | ||
|
||
#ifdef APP_SCHEDULER_WITH_PAUSE | ||
/**@brief A function to pause the scheduler. | ||
* | ||
* @details When the scheduler is paused events are not pulled from the scheduler queue for | ||
* processing. The function can be called multiple times. To unblock the scheduler the | ||
* function @ref app_sched_resume has to be called the same number of times. | ||
*/ | ||
void app_sched_pause(void); | ||
|
||
/**@brief A function to resume a scheduler. | ||
* | ||
* @details To unblock the scheduler this function has to be called the same number of times as | ||
* @ref app_sched_pause function. | ||
*/ | ||
void app_sched_resume(void); | ||
#endif | ||
#endif // APP_SCHEDULER_H__ | ||
|
||
/** @} */ |
92 changes: 92 additions & 0 deletions
92
...al/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/nordic_sdk/components/libraries/util/app_error.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
/* Copyright (c) 2013 Nordic Semiconductor. All Rights Reserved. | ||
* | ||
* The information contained herein is property of Nordic Semiconductor ASA. | ||
* Terms and conditions of usage are described in detail in NORDIC | ||
* SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. | ||
* | ||
* Licensees are granted free, non-transferable use of the information. NO | ||
* WARRANTY of ANY KIND is provided. This heading must NOT be removed from | ||
* the file. | ||
* | ||
*/ | ||
|
||
/** @file | ||
* | ||
* @defgroup app_error Common application error handler | ||
* @{ | ||
* @ingroup app_common | ||
* | ||
* @brief Common application error handler and macros for utilizing a common error handler. | ||
*/ | ||
|
||
#ifndef APP_ERROR_H__ | ||
#define APP_ERROR_H__ | ||
|
||
#include <stdint.h> | ||
#include <stdbool.h> | ||
#include "nrf_error.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/**@brief Function for error handling, which is called when an error has occurred. | ||
* | ||
* @param[in] error_code Error code supplied to the handler. | ||
* @param[in] line_num Line number where the handler is called. | ||
* @param[in] p_file_name Pointer to the file name. | ||
*/ | ||
void app_error_handler(uint32_t error_code, uint32_t line_num, const uint8_t * p_file_name); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
/**@brief Macro for calling error handler function. | ||
* | ||
* @param[in] ERR_CODE Error code supplied to the error handler. | ||
*/ | ||
#ifdef DEBUG | ||
#define APP_ERROR_HANDLER(ERR_CODE) \ | ||
do \ | ||
{ \ | ||
app_error_handler((ERR_CODE), __LINE__, (uint8_t*) __FILE__); \ | ||
} while (0) | ||
#else | ||
#define APP_ERROR_HANDLER(ERR_CODE) \ | ||
do \ | ||
{ \ | ||
app_error_handler((ERR_CODE), 0, 0); \ | ||
} while (0) | ||
#endif | ||
/**@brief Macro for calling error handler function if supplied error code any other than NRF_SUCCESS. | ||
* | ||
* @param[in] ERR_CODE Error code supplied to the error handler. | ||
*/ | ||
#define APP_ERROR_CHECK(ERR_CODE) \ | ||
do \ | ||
{ \ | ||
const uint32_t LOCAL_ERR_CODE = (ERR_CODE); \ | ||
if (LOCAL_ERR_CODE != NRF_SUCCESS) \ | ||
{ \ | ||
APP_ERROR_HANDLER(LOCAL_ERR_CODE); \ | ||
} \ | ||
} while (0) | ||
|
||
/**@brief Macro for calling error handler function if supplied boolean value is false. | ||
* | ||
* @param[in] BOOLEAN_VALUE Boolean value to be evaluated. | ||
*/ | ||
#define APP_ERROR_CHECK_BOOL(BOOLEAN_VALUE) \ | ||
do \ | ||
{ \ | ||
const uint32_t LOCAL_BOOLEAN_VALUE = (BOOLEAN_VALUE); \ | ||
if (!LOCAL_BOOLEAN_VALUE) \ | ||
{ \ | ||
APP_ERROR_HANDLER(0); \ | ||
} \ | ||
} while (0) | ||
|
||
#endif // APP_ERROR_H__ | ||
|
||
/** @} */ |
Oops, something went wrong.