diff --git nRF5_SDK_15.3.0_59ac345/components/boards/pca10056.h nRF5_SDK_15.3.0_66869dd/components/boards/pca10056.h index ac43159..17698a8 100644 --- nRF5_SDK_15.3.0_59ac345/components/boards/pca10056.h +++ nRF5_SDK_15.3.0_66869dd/components/boards/pca10056.h @@ -90,6 +90,8 @@ extern "C" { #define RTS_PIN_NUMBER 5 #define HWFC true +#define BSP_SELF_PINRESET_PIN NRF_GPIO_PIN_MAP(0,24) + #define BSP_QSPI_SCK_PIN 19 #define BSP_QSPI_CSN_PIN 17 #define BSP_QSPI_IO0_PIN 20 diff --git nRF5_SDK_15.3.0_59ac345/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.c nRF5_SDK_15.3.0_66869dd/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.c index d437645..410a47d 100644 --- nRF5_SDK_15.3.0_59ac345/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.c +++ nRF5_SDK_15.3.0_66869dd/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.c @@ -50,10 +50,6 @@ #include "nrf_log.h" NRF_LOG_MODULE_REGISTER(); -#ifndef BSP_SELF_PINRESET_PIN -#error "This module is intended to be used with boards that have the GP pin shortened with the RESET pin." -#endif - /** * @brief Enable power USB detection. * @@ -71,6 +67,7 @@ NRF_LOG_MODULE_REGISTER(); static uint8_t m_version_string[] = APP_NAME " " VERSION_STRING; ///< Human-readable version string. static app_usbd_nrf_dfu_trigger_nordic_info_t m_dfu_info; ///< Struct with various information about the current firmware. +static uint32_t m_pin_reset; static void dfu_trigger_evt_handler(app_usbd_class_inst_t const * p_inst, app_usbd_nrf_dfu_trigger_user_event_t event) @@ -82,8 +79,8 @@ static void dfu_trigger_evt_handler(app_usbd_class_inst_t const * p_inst case APP_USBD_NRF_DFU_TRIGGER_USER_EVT_DETACH: NRF_LOG_INFO("DFU Detach request received. Triggering a pin reset."); NRF_LOG_FINAL_FLUSH(); - nrf_gpio_cfg_output(BSP_SELF_PINRESET_PIN); - nrf_gpio_pin_clear(BSP_SELF_PINRESET_PIN); + nrf_gpio_cfg_output(m_pin_reset); + nrf_gpio_pin_clear(m_pin_reset); break; default: break; @@ -173,7 +170,7 @@ static void usbd_evt_handler(app_usbd_internal_evt_t const * const p_event) } #endif -ret_code_t nrf_dfu_trigger_usb_init(void) +ret_code_t nrf_dfu_trigger_usb_init(uint32_t pin_reset) { ret_code_t ret; static bool initialized = false; @@ -183,6 +180,7 @@ ret_code_t nrf_dfu_trigger_usb_init(void) return NRF_SUCCESS; } + m_pin_reset = pin_reset; m_dfu_info.wAddress = CODE_START; m_dfu_info.wFirmwareSize = CODE_SIZE; m_dfu_info.wVersionMajor = APP_VERSION_MAJOR; diff --git nRF5_SDK_15.3.0_59ac345/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.h nRF5_SDK_15.3.0_66869dd/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.h index 2afd1d9..efee502 100644 --- nRF5_SDK_15.3.0_59ac345/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.h +++ nRF5_SDK_15.3.0_66869dd/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.h @@ -63,11 +63,12 @@ * * @note If @ref APP_USBD_CONFIG_EVENT_QUEUE_ENABLE is on (1), USB events must be handled manually. * See @ref app_usbd_event_queue_process. + * @param pin_reset Pin which is shortened with the actual pin reset. * * @retval NRF_SUCCESS On successful initialization. * @return An error code on failure, for example if called at a wrong time. */ -ret_code_t nrf_dfu_trigger_usb_init(void); +ret_code_t nrf_dfu_trigger_usb_init(uint32_t pin_reset); /** @} */ diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/application/codecs/ble/middleware/app_mw_ble_gap.c nRF5_SDK_15.3.0_66869dd/components/serialization/application/codecs/ble/middleware/app_mw_ble_gap.c index 1fab575..f185aac 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/application/codecs/ble/middleware/app_mw_ble_gap.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/application/codecs/ble/middleware/app_mw_ble_gap.c @@ -1907,8 +1907,8 @@ static uint32_t gap_adv_set_configure_rsp_dec(const uint8_t * p_buffer, uint16_t if (result_code != NRF_SUCCESS) { - app_ble_gap_adv_buf_addr_unregister(mp_out_params[0], false); - app_ble_gap_adv_buf_addr_unregister(mp_out_params[1], false); + app_ble_gap_adv_buf_addr_unregister(mp_out_params[0], false); + app_ble_gap_adv_buf_addr_unregister(mp_out_params[1], false); } //@note: Should never fail. @@ -1928,7 +1928,7 @@ uint32_t _sd_ble_gap_adv_set_configure(uint8_t *p_adv_handle, { uint8_t * p_buffer; uint32_t buffer_length = 0; - + uint32_t err; tx_buf_alloc(&p_buffer, (uint16_t *)&buffer_length); if (p_adv_handle) @@ -1948,9 +1948,16 @@ uint32_t _sd_ble_gap_adv_set_configure(uint8_t *p_adv_handle, APP_ERROR_CHECK(err_code); //@note: Increment buffer length as internally managed packet type field must be included. - return ser_sd_transport_cmd_write(p_buffer, + err = ser_sd_transport_cmd_write(p_buffer, (++buffer_length), gap_adv_set_configure_rsp_dec); + + if (err == NRF_SUCCESS && p_adv_data) + { + app_ble_gap_set_adv_data_set(*p_adv_handle, mp_out_params[0], mp_out_params[1]); + } + + return err; } #ifndef S112 diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/application/codecs/ble/serializers/app_ble_gap_sec_keys.c nRF5_SDK_15.3.0_66869dd/components/serialization/application/codecs/ble/serializers/app_ble_gap_sec_keys.c index e1c23d0..78b56a5 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/application/codecs/ble/serializers/app_ble_gap_sec_keys.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/application/codecs/ble/serializers/app_ble_gap_sec_keys.c @@ -55,21 +55,52 @@ typedef struct { static adv_set_t m_adv_sets[4]; //todo configurable number of adv sets. +typedef struct +{ + uint8_t adv_handle; + uint8_t * buf1; + uint8_t * buf2; +} adv_set_data_t; + +typedef enum { + BLE_DATA_BUF_FREE, + BLE_DATA_BUF_IN_USE, + BLE_DATA_BUF_LAST_DIRTY, +} ble_data_buf_state_t; + +static adv_set_data_t adv_set_data[BLE_GAP_ADV_SET_COUNT_MAX]; + static ble_data_t m_scan_data = {0}; static int scan_data_id; #endif ser_ble_gap_app_keyset_t m_app_keys_table[SER_MAX_CONNECTIONS]; #if NRF_SD_BLE_API_VERSION >= 6 -static void *m_ble_gap_adv_buf_addr_storage[8]; + +typedef struct +{ + ble_data_buf_state_t state; + uint32_t id; + void *buf; +} ble_data_item_t; + +ble_data_item_t m_ble_data_pool[8]; + #endif void app_ble_gap_sec_keys_init(void) { #if NRF_SD_BLE_API_VERSION >= 6 - memset(m_ble_gap_adv_buf_addr_storage, 0, sizeof(m_ble_gap_adv_buf_addr_storage)); + uint32_t i; + + memset(m_ble_data_pool, 0, sizeof(m_ble_data_pool)); memset(&m_scan_data, 0, sizeof(m_scan_data)); memset(m_adv_sets, 0, sizeof(m_adv_sets)); + for (i = 0; i < 8; i++) + { + m_ble_data_pool[i].state = BLE_DATA_BUF_FREE; + m_ble_data_pool[i].id = 0; + } #endif memset(m_app_keys_table, 0, sizeof(m_app_keys_table)); } @@ -140,12 +171,13 @@ int app_ble_gap_adv_buf_register(void * p_buf) return 0; } - for (i = 0; i < ARRAY_SIZE(m_ble_gap_adv_buf_addr_storage); i++) + for (i = 0; i < ARRAY_SIZE(m_ble_data_pool); i++) { - if ((m_ble_gap_adv_buf_addr_storage[i] == NULL) || - (m_ble_gap_adv_buf_addr_storage[i] == p_buf)) + if (m_ble_data_pool[i].state == BLE_DATA_BUF_FREE) { - m_ble_gap_adv_buf_addr_storage[i] = p_buf; + m_ble_data_pool[i].buf = p_buf; + m_ble_data_pool[i].id = i + 1; + m_ble_data_pool[i].state = BLE_DATA_BUF_IN_USE; return i+1; } } @@ -161,10 +193,9 @@ void *app_ble_gap_adv_buf_unregister(int id, bool event_context) return NULL; } - void * ret = m_ble_gap_adv_buf_addr_storage[id-1]; - m_ble_gap_adv_buf_addr_storage[id-1] = NULL; + m_ble_data_pool[id].state = BLE_DATA_BUF_FREE; - return ret; + return m_ble_data_pool[id].id; } void app_ble_gap_adv_buf_addr_unregister(void * p_buf, bool event_context) @@ -177,22 +208,24 @@ void app_ble_gap_adv_buf_addr_unregister(void * p_buf, bool event_context) return; } - for (i = 0; i < ARRAY_SIZE(m_ble_gap_adv_buf_addr_storage); i++) + for (i = 0; i < ARRAY_SIZE(m_ble_data_pool); i++) { - if (m_ble_gap_adv_buf_addr_storage[i] == p_buf) + if (m_ble_data_pool[i].buf == p_buf && (m_ble_data_pool[i].state == BLE_DATA_BUF_IN_USE)) { - m_ble_gap_adv_buf_addr_storage[i] = NULL; + m_ble_data_pool[id].state = BLE_DATA_BUF_FREE; + m_ble_data_pool[id].buf = 0; } } } void app_ble_gap_scan_data_set(uint8_t * p_scan_data) { + uint32_t i; - for (i = 0; i < ARRAY_SIZE(m_ble_gap_adv_buf_addr_storage); i++) + for (i = 0; i < ARRAY_SIZE(m_ble_data_pool); i++) { - if (m_ble_gap_adv_buf_addr_storage[i] == p_scan_data) + if (m_ble_data_pool[i].buf == p_scan_data) { scan_data_id = i+1; return; @@ -213,4 +246,47 @@ void app_ble_gap_scan_data_unset(bool free) } } +static void app_ble_gap_ble_data_mark_dirty(uint8_t * p_data) +{ + uint32_t i; + + if (p_data) + { + for (i = 0; i < ARRAY_SIZE(m_ble_data_pool); i++) + { + if (m_ble_data_pool[i].buf == p_data) + { + m_ble_data_pool[i].state = BLE_DATA_BUF_LAST_DIRTY; + } + } + } +} +static void app_ble_gap_ble_adv_data_mark_dirty(uint8_t * p_data1, uint8_t *p_data2) +{ + uint32_t i; + + /* First find if given id already allocated the buffer. */ + for (i = 0; i < ARRAY_SIZE(m_ble_data_pool); i++) + { + if (m_ble_data_pool[i].state == BLE_DATA_BUF_LAST_DIRTY) + { + app_ble_gap_adv_buf_unregister(i+1); + } + } + + app_ble_gap_ble_data_mark_dirty(p_data1); + app_ble_gap_ble_data_mark_dirty(p_data2); +} + +void app_ble_gap_set_adv_data_set(uint8_t adv_handle, uint8_t * buf1, uint8_t * buf2) +{ + if (adv_handle == BLE_GAP_ADV_SET_HANDLE_NOT_SET) + { + adv_handle = BLE_GAP_ADV_SET_COUNT_MAX - 1; + } + app_ble_gap_ble_adv_data_mark_dirty(adv_set_data[adv_handle].buf1, adv_set_data[adv_handle].buf2); + + adv_set_data[adv_handle].buf1 = buf1; + adv_set_data[adv_handle].buf2 = buf2; +} #endif /* NRF_SD_BLE_API_VERSION >= 6 */ diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/application/codecs/ble/serializers/app_ble_gap_sec_keys.h nRF5_SDK_15.3.0_66869dd/components/serialization/application/codecs/ble/serializers/app_ble_gap_sec_keys.h index de8e638..bf78e95 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/application/codecs/ble/serializers/app_ble_gap_sec_keys.h +++ nRF5_SDK_15.3.0_66869dd/components/serialization/application/codecs/ble/serializers/app_ble_gap_sec_keys.h @@ -112,6 +112,7 @@ void app_ble_gap_adv_buf_addr_unregister(void * p_buf, bool event_context); void app_ble_gap_scan_data_set(uint8_t * p_scan_data); void app_ble_gap_scan_data_unset(bool free); +void app_ble_gap_set_adv_data_set(uint8_t adv_handle, uint8_t * buf1, uint8_t * buf2); #endif #ifdef __cplusplus } diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/application/codecs/ble/serializers/ble_gap_app.c nRF5_SDK_15.3.0_66869dd/components/serialization/application/codecs/ble/serializers/ble_gap_app.c index f172fb0..91a6641 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/application/codecs/ble/serializers/ble_gap_app.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/application/codecs/ble/serializers/ble_gap_app.c @@ -641,7 +641,7 @@ uint32_t ble_gap_scan_start_req_enc(ble_gap_scan_params_t const * p_scan_params SER_REQ_ENC_BEGIN(SD_BLE_GAP_SCAN_START); SER_PUSH_COND(p_scan_params, ble_gap_scan_params_t_enc); #if defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION > 5 - SER_PUSH_COND(p_adv_report_buffer, ble_data_t_enc); + SER_PUSH_COND(p_adv_report_buffer, ble_data_t_empty_enc); #endif SER_REQ_ENC_END; } diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/application/codecs/ble/serializers/ble_gap_evt_app.c nRF5_SDK_15.3.0_66869dd/components/serialization/application/codecs/ble/serializers/ble_gap_evt_app.c index 81b6105..7119d6a 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/application/codecs/ble/serializers/ble_gap_evt_app.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/application/codecs/ble/serializers/ble_gap_evt_app.c @@ -323,7 +323,7 @@ uint32_t ble_gap_evt_timeout_dec(uint8_t const * const p_buf, #if defined(NRF_SD_BLE_API_VERSION) && (NRF_SD_BLE_API_VERSION > 5) && !defined(S112) if (p_event->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_SCAN) { - SER_PULL_FIELD(&p_event->evt.gap_evt.params.timeout.params.adv_report_buffer, ble_data_t_dec); + SER_PULL_FIELD(&p_event->evt.gap_evt.params.timeout.params.adv_report_buffer, ble_data_t_empty_dec); } #endif SER_EVT_DEC_END; diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/common/ser_config.h nRF5_SDK_15.3.0_66869dd/components/serialization/common/ser_config.h index 67d66f6..c07beb2 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/common/ser_config.h +++ nRF5_SDK_15.3.0_66869dd/components/serialization/common/ser_config.h @@ -70,8 +70,8 @@ extern "C" { #define SER_HAL_TRANSPORT_APP_TO_CONN_MAX_PKT_SIZE (128UL) #define SER_HAL_TRANSPORT_CONN_TO_APP_MAX_PKT_SIZE (128UL) #else -#define SER_HAL_TRANSPORT_APP_TO_CONN_MAX_PKT_SIZE (512UL) -#define SER_HAL_TRANSPORT_CONN_TO_APP_MAX_PKT_SIZE (512UL) +#define SER_HAL_TRANSPORT_APP_TO_CONN_MAX_PKT_SIZE (768UL) +#define SER_HAL_TRANSPORT_CONN_TO_APP_MAX_PKT_SIZE (768UL) #endif #define SER_HAL_TRANSPORT_MAX_PKT_SIZE ((SER_HAL_TRANSPORT_APP_TO_CONN_MAX_PKT_SIZE) >= \ @@ -104,7 +104,7 @@ extern "C" { /** UART transmission parameters */ #define SER_PHY_UART_FLOW_CTRL NRF_UART_HWFC_ENABLED -#define SER_PHY_UART_PARITY NRF_UART_PARITY_INCLUDED +#define SER_PHY_UART_PARITY NRF_UART_PARITY_EXCLUDED #define SER_PHY_UART_BAUDRATE_VAL 1000000 #define SER_PHY_UART_BAUDRATE CONCAT_2(NRF_UART_BAUDRATE_,SER_PHY_UART_BAUDRATE_VAL) @@ -122,7 +122,8 @@ extern "C" { #ifndef SER_MAX_ADV_DATA #define SER_MAX_ADV_DATA 256 #endif - + +#define HCI_LINK_CONTROL #ifdef __cplusplus } #endif diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.c nRF5_SDK_15.3.0_66869dd/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.c index 5c0bba0..cbb48c0 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.c @@ -454,7 +454,7 @@ uint32_t ble_gap_evt_connected_t_enc(void const * const p_void_struct, SER_PUSH_FIELD(&p_struct->conn_params, ble_gap_conn_params_t_enc); #if defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION > 5 SER_PUSH_uint8(&p_struct->adv_handle); - SER_PUSH_FIELD(&p_struct->adv_data, ble_gap_adv_data_t_enc); + SER_PUSH_FIELD(&p_struct->adv_data, ble_gap_adv_data_t_empty_enc); #endif SER_STRUCT_ENC_END; @@ -472,7 +472,7 @@ uint32_t ble_gap_evt_connected_t_dec(uint8_t const * const p_buf, SER_PULL_FIELD(&p_struct->conn_params, ble_gap_conn_params_t_dec); #if defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION > 5 SER_PULL_uint8(&p_struct->adv_handle); - SER_PULL_FIELD(&p_struct->adv_data, ble_gap_adv_data_t_dec); + SER_PULL_FIELD(&p_struct->adv_data, ble_gap_adv_data_t_empty_dec); #endif SER_STRUCT_DEC_END; @@ -1709,6 +1709,32 @@ uint32_t ble_gap_adv_data_t_dec(uint8_t const * const p_buf, SER_STRUCT_DEC_END; } +uint32_t ble_gap_adv_data_t_empty_enc(void const * const p_void_struct, + uint8_t * const p_buf, + uint32_t buf_len, + uint32_t * const p_index) +{ + SER_STRUCT_ENC_BEGIN(ble_gap_adv_data_t); + + SER_PUSH_FIELD(&p_struct->adv_data, ble_data_t_empty_enc); + SER_PUSH_FIELD(&p_struct->scan_rsp_data, ble_data_t_empty_enc); + + SER_STRUCT_ENC_END; +} + +uint32_t ble_gap_adv_data_t_empty_dec(uint8_t const * const p_buf, + uint32_t buf_len, + uint32_t * const p_index, + void * const p_void_struct) +{ + SER_STRUCT_DEC_BEGIN(ble_gap_adv_data_t); + + SER_PULL_FIELD(&p_struct->adv_data, ble_data_t_empty_dec); + SER_PULL_FIELD(&p_struct->scan_rsp_data, ble_data_t_empty_dec); + + SER_STRUCT_DEC_END; +} + uint32_t ble_gap_evt_adv_set_terminated_t_enc(void const * const p_void_struct, uint8_t * const p_buf, uint32_t buf_len, @@ -1719,8 +1745,7 @@ uint32_t ble_gap_evt_adv_set_terminated_t_enc(void const * const p_void_struct, SER_PUSH_uint8(&p_struct->reason); SER_PUSH_uint8(&p_struct->adv_handle); SER_PUSH_uint8(&p_struct->num_completed_adv_events); - - SER_PUSH_FIELD(&p_struct->adv_data, ble_gap_adv_data_t_enc); + SER_PUSH_FIELD(&p_struct->adv_data, ble_gap_adv_data_t_empty_enc); SER_STRUCT_ENC_END; } @@ -1736,7 +1761,7 @@ uint32_t ble_gap_evt_adv_set_terminated_t_dec(uint8_t const * const p_buf, SER_PULL_uint8(&p_struct->adv_handle); SER_PULL_uint8(&p_struct->num_completed_adv_events); - SER_PULL_FIELD(&p_struct->adv_data, ble_gap_adv_data_t_dec); + SER_PULL_FIELD(&p_struct->adv_data, ble_gap_adv_data_t_empty_dec); SER_STRUCT_DEC_END; } diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.h nRF5_SDK_15.3.0_66869dd/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.h index d3bebaa..e90eb57 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.h +++ nRF5_SDK_15.3.0_66869dd/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.h @@ -594,6 +594,16 @@ uint32_t ble_gap_adv_data_t_dec(uint8_t const * const p_buf, uint32_t * const p_index, void * const p_void_struct); +uint32_t ble_gap_adv_data_t_empty_enc(void const * const p_void_struct, + uint8_t * const p_buf, + uint32_t buf_len, + uint32_t * const p_index); + +uint32_t ble_gap_adv_data_t_empty_dec(uint8_t const * const p_buf, + uint32_t buf_len, + uint32_t * const p_index, + void * const p_void_struct); + uint32_t ble_gap_evt_adv_set_terminated_t_enc(void const * const p_void_struct, uint8_t * const p_buf, uint32_t buf_len, diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/common/struct_ser/ble/ble_struct_serialization.c nRF5_SDK_15.3.0_66869dd/components/serialization/common/struct_ser/ble/ble_struct_serialization.c index fc13b8c..ab01661 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/common/struct_ser/ble/ble_struct_serialization.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/common/struct_ser/ble/ble_struct_serialization.c @@ -47,6 +47,11 @@ #include "ble.h" #include "cond_field_serialization.h" #include "ser_config.h" +#ifdef SER_CONNECTIVITY +#include "conn_ble_gap_sec_keys.h" +#else +#include "app_ble_gap_sec_keys.h" +#endif #include #if NRF_SD_BLE_API_VERSION > 5 @@ -542,4 +547,56 @@ uint32_t ble_data_t_dec(uint8_t const * const p_buf, SER_STRUCT_DEC_END; } + +uint32_t ble_data_t_empty_enc(void const * const p_void_struct, + uint8_t * const p_buf, + uint32_t buf_len, + uint32_t * const p_index) +{ + SER_STRUCT_ENC_BEGIN(ble_data_t); + + uint32_t buf_id = 0; +#if NRF_SD_BLE_API_VERSION > 5 +#if defined(SER_CONNECTIVITY) + buf_id = conn_ble_gap_ble_data_buf_free(p_struct->p_data); +#else + buf_id = app_ble_gap_adv_buf_register(p_struct->p_data); + SER_ASSERT(buf_id >= 0, NRF_ERROR_NO_MEM); +#endif +#endif + SER_PUSH_uint32(&buf_id); + SER_PUSH_uint16(&p_struct->len); + + SER_STRUCT_ENC_END; +} + +uint32_t ble_data_t_empty_dec(uint8_t const * const p_buf, + uint32_t buf_len, + uint32_t * const p_index, + void * const p_void_struct) +{ + SER_STRUCT_DEC_BEGIN(ble_data_t); + + uint32_t buf_id; + SER_PULL_uint32(&buf_id); + p_struct->len = SER_MAX_ADV_DATA; +#if NRF_SD_BLE_API_VERSION > 5 +#if defined(SER_CONNECTIVITY) + if (buf_id && (p_struct->p_data == NULL)) + { + p_struct->p_data = conn_ble_gap_ble_data_buf_alloc(buf_id); + } +#else + p_struct->p_data = app_ble_gap_adv_buf_unregister(buf_id, true); +#endif +#endif + SER_PULL_uint16(&p_struct->len); + + if (p_struct->p_data == NULL) + { + p_struct->len = 0; + } + + SER_STRUCT_DEC_END; +} #endif diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/common/struct_ser/ble/ble_struct_serialization.h nRF5_SDK_15.3.0_66869dd/components/serialization/common/struct_ser/ble/ble_struct_serialization.h index ee36b58..818c088 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/common/struct_ser/ble/ble_struct_serialization.h +++ nRF5_SDK_15.3.0_66869dd/components/serialization/common/struct_ser/ble/ble_struct_serialization.h @@ -209,6 +209,16 @@ uint32_t ble_data_t_dec(uint8_t const * const p_buf, uint32_t buf_len, uint32_t * const p_index, void * const p_void_struct); + +uint32_t ble_data_t_empty_enc(void const * const p_void_struct, + uint8_t * const p_buf, + uint32_t buf_len, + uint32_t * const p_index); + +uint32_t ble_data_t_empty_dec(uint8_t const * const p_buf, + uint32_t buf_len, + uint32_t * const p_index, + void * const p_void_struct); #endif #ifdef __cplusplus } diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/common/transport/ser_phy/config/ser_phy_config_conn.h nRF5_SDK_15.3.0_66869dd/components/serialization/common/transport/ser_phy/config/ser_phy_config_conn.h index bd8c66b..746ab74 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/common/transport/ser_phy/config/ser_phy_config_conn.h +++ nRF5_SDK_15.3.0_66869dd/components/serialization/common/transport/ser_phy/config/ser_phy_config_conn.h @@ -69,10 +69,10 @@ extern "C" { /* UART configuration */ #define UART_IRQ_PRIORITY APP_IRQ_PRIORITY_LOWEST -#define SER_PHY_UART_RX SER_CON_RX_PIN -#define SER_PHY_UART_TX SER_CON_TX_PIN -#define SER_PHY_UART_CTS SER_CON_CTS_PIN -#define SER_PHY_UART_RTS SER_CON_RTS_PIN +#define SER_PHY_UART_RX RX_PIN_NUMBER//SER_CON_RX_PIN +#define SER_PHY_UART_TX TX_PIN_NUMBER//SER_CON_TX_PIN +#define SER_PHY_UART_CTS CTS_PIN_NUMBER//SER_CON_CTS_PIN +#define SER_PHY_UART_RTS RTS_PIN_NUMBER//SER_CON_RTS_PIN #ifdef __cplusplus diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/common/transport/ser_phy/ser_phy_hci.c nRF5_SDK_15.3.0_66869dd/components/serialization/common/transport/ser_phy/ser_phy_hci.c index 2705068..43c39a5 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/common/transport/ser_phy/ser_phy_hci.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/common/transport/ser_phy/ser_phy_hci.c @@ -1672,7 +1672,7 @@ void ser_phy_hci_reset(void) { m_p_tx_payload = NULL; m_p_rx_buffer = NULL; - + nrf_queue_reset(&m_tx_evt_queue); nrf_queue_reset(&m_rx_evt_queue); diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/common/transport/ser_phy/ser_phy_hci_slip.c nRF5_SDK_15.3.0_66869dd/components/serialization/common/transport/ser_phy/ser_phy_hci_slip.c index e77d1f8..962157a 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/common/transport/ser_phy/ser_phy_hci_slip.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/common/transport/ser_phy/ser_phy_hci_slip.c @@ -233,9 +233,9 @@ static void tx_buf_fill(void) return; default: + ASSERT(mp_tx_data->p_buffer != NULL); if (m_tx_index < mp_tx_data->num_of_bytes) { - ASSERT(mp_tx_data->p_buffer != NULL); uint8_t data = mp_tx_data->p_buffer[m_tx_index]; if (data == APP_SLIP_END) diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/common/transport/ser_phy/ser_phy_hci_slip_cdc.c nRF5_SDK_15.3.0_66869dd/components/serialization/common/transport/ser_phy/ser_phy_hci_slip_cdc.c index 105903a..cd68868 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/common/transport/ser_phy/ser_phy_hci_slip_cdc.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/common/transport/ser_phy/ser_phy_hci_slip_cdc.c @@ -67,10 +67,10 @@ NRF_LOG_MODULE_REGISTER(); static void cdc_acm_user_ev_handler(app_usbd_class_inst_t const * p_inst, app_usbd_cdc_acm_user_event_t event); -#define CDC_ACM_COMM_INTERFACE 0 +#define CDC_ACM_COMM_INTERFACE 1 #define CDC_ACM_COMM_EPIN NRF_DRV_USBD_EPIN2 -#define CDC_ACM_DATA_INTERFACE 1 +#define CDC_ACM_DATA_INTERFACE 2 #define CDC_ACM_DATA_EPIN NRF_DRV_USBD_EPIN1 #define CDC_ACM_DATA_EPOUT NRF_DRV_USBD_EPOUT1 diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gap.c nRF5_SDK_15.3.0_66869dd/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gap.c index 0549c9e..aea2dc0 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gap.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gap.c @@ -1249,6 +1249,12 @@ uint32_t conn_mw_ble_gap_adv_set_configure(uint8_t const * const p_rx_buf, (void)conn_ble_gap_ble_data_buf_free(p_adv_data->adv_data.p_data); (void)conn_ble_gap_ble_data_buf_free(p_adv_data->scan_rsp_data.p_data); } + else + { + conn_ble_gap_set_adv_data_set(*p_adv_handle, + p_adv_data->adv_data.p_data, + p_adv_data->scan_rsp_data.p_data); + } err_code = ble_gap_adv_set_configure_rsp_enc(sd_err_code, p_tx_buf, p_tx_buf_len, p_adv_data, p_adv_handle); SER_ASSERT(err_code == NRF_SUCCESS, err_code); diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/connectivity/codecs/ble/serializers/ble_gap_conn.c nRF5_SDK_15.3.0_66869dd/components/serialization/connectivity/codecs/ble/serializers/ble_gap_conn.c index 7b79c21..ae03239 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/connectivity/codecs/ble/serializers/ble_gap_conn.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/connectivity/codecs/ble/serializers/ble_gap_conn.c @@ -664,7 +664,7 @@ uint32_t ble_gap_scan_start_req_dec(uint8_t const * const p_buf, SER_PULL_COND(pp_scan_params, ble_gap_scan_params_t_dec); #if defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION > 5 - SER_PULL_COND(pp_adv_report_buffer, ble_data_t_dec); + SER_PULL_COND(pp_adv_report_buffer, ble_data_t_empty_dec); #endif SER_REQ_DEC_END; diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/connectivity/codecs/ble/serializers/ble_gap_evt_conn.c nRF5_SDK_15.3.0_66869dd/components/serialization/connectivity/codecs/ble/serializers/ble_gap_evt_conn.c index 2c26390..1926f91 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/connectivity/codecs/ble/serializers/ble_gap_evt_conn.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/connectivity/codecs/ble/serializers/ble_gap_evt_conn.c @@ -318,7 +318,7 @@ uint32_t ble_gap_evt_timeout_enc(ble_evt_t const * const p_event, #if defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION > 5 && !defined(S112) if (p_event->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_SCAN) { - SER_PUSH_FIELD(&p_event->evt.gap_evt.params.timeout.params.adv_report_buffer, ble_data_t_enc); + SER_PUSH_FIELD(&p_event->evt.gap_evt.params.timeout.params.adv_report_buffer, ble_data_t_empty_enc); } #endif SER_EVT_ENC_END; diff --git nRF5_SDK_15.3.0_59ac345/components/serialization/connectivity/codecs/ble/serializers/conn_ble_gap_sec_keys.c nRF5_SDK_15.3.0_66869dd/components/serialization/connectivity/codecs/ble/serializers/conn_ble_gap_sec_keys.c index f7845cd..7a349cc 100644 --- nRF5_SDK_15.3.0_59ac345/components/serialization/connectivity/codecs/ble/serializers/conn_ble_gap_sec_keys.c +++ nRF5_SDK_15.3.0_66869dd/components/serialization/connectivity/codecs/ble/serializers/conn_ble_gap_sec_keys.c @@ -43,17 +43,31 @@ #include "nordic_common.h" #include +typedef enum { + BLE_DATA_BUF_FREE, + BLE_DATA_BUF_IN_USE, + BLE_DATA_BUF_LAST_DIRTY, +} ble_data_buf_state_t; + ser_ble_gap_conn_keyset_t m_conn_keys_table[SER_MAX_CONNECTIONS]; #if NRF_SD_BLE_API_VERSION >= 6 typedef struct { + ble_data_buf_state_t state; uint32_t id; uint8_t ble_data[SER_MAX_ADV_DATA]; } ble_data_item_t; -ble_data_item_t m_ble_data_pool[8]; +typedef struct +{ + uint8_t * buf1; + uint8_t * buf2; +} adv_set_data_t; + +static adv_set_data_t adv_set_data[BLE_GAP_ADV_SET_COUNT_MAX]; +ble_data_item_t m_ble_data_pool[8]; static uint8_t * mp_scan_data; #endif @@ -68,6 +82,7 @@ void conn_ble_gap_sec_keys_init(void) #if NRF_SD_BLE_API_VERSION >= 6 for (i = 0; i < 8; i++) { + m_ble_data_pool[i].state = BLE_DATA_BUF_FREE; m_ble_data_pool[i].id = 0; } #endif @@ -75,21 +90,21 @@ void conn_ble_gap_sec_keys_init(void) uint32_t conn_ble_gap_sec_context_create(uint32_t *p_index) { - uint32_t err_code = NRF_ERROR_NO_MEM; - uint32_t i; + uint32_t err_code = NRF_ERROR_NO_MEM; + uint32_t i; - for (i=0; i 3 .accuracy = NRF_SDH_CLOCK_LF_ACCURACY +#else + .xtal_accuracy = NRF_SDH_CLOCK_LF_ACCURACY +#endif }; CRITICAL_REGION_ENTER(); @@ -224,6 +228,13 @@ ret_code_t nrf_sdh_enable_request(void) m_nrf_sdh_continue = false; m_nrf_sdh_suspended = false; +#ifdef SOFTDEVICE_PRESENT + ret_code = sd_nvic_ClearPendingIRQ((IRQn_Type)SD_EVT_IRQn); + APP_ERROR_CHECK(ret_code); +#else + // In case of serialization, NVIC must be accessed directly. + NVIC_ClearPendingIRQ((IRQn_Type)SD_EVT_IRQn); +#endif // Enable event interrupt. // Interrupt priority has already been set by the stack. softdevices_evt_irq_enable(); diff --git nRF5_SDK_15.3.0_59ac345/components/softdevice/common/nrf_sdh_ble.c nRF5_SDK_15.3.0_66869dd/components/softdevice/common/nrf_sdh_ble.c index f5a91be..13c4f76 100644 --- nRF5_SDK_15.3.0_59ac345/components/softdevice/common/nrf_sdh_ble.c +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/common/nrf_sdh_ble.c @@ -102,8 +102,9 @@ ret_code_t nrf_sdh_ble_app_ram_start_get(uint32_t * p_app_ram_start) ret_code_t nrf_sdh_ble_default_cfg_set(uint8_t conn_cfg_tag, uint32_t * p_ram_start) { - uint32_t ret_code; +#if defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION > 3 + uint32_t ret_code; ret_code = nrf_sdh_ble_app_ram_start_get(p_ram_start); if (ret_code != NRF_SUCCESS) { @@ -197,7 +198,7 @@ ret_code_t nrf_sdh_ble_default_cfg_set(uint8_t conn_cfg_tag, uint32_t * p_ram_st NRF_LOG_ERROR("sd_ble_cfg_set() returned %s when attempting to set BLE_GATTS_CFG_SERVICE_CHANGED.", nrf_strerror_get(ret_code)); } - +#endif //defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION > 3 return NRF_SUCCESS; } @@ -217,7 +218,7 @@ static uint32_t ram_end_address_get(void) return RAM_START + ram_total_size; } - +#if defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION > 4 ret_code_t nrf_sdh_ble_enable(uint32_t * const p_app_ram_start) { // Start of RAM, obtained from linker symbol. @@ -256,7 +257,46 @@ ret_code_t nrf_sdh_ble_enable(uint32_t * const p_app_ram_start) return ret_code; } +#else +ret_code_t nrf_sdh_ble_enable(ble_enable_params_t * p_ble_enable_params, uint32_t * const p_app_ram_start) +{ + // Start of RAM, obtained from linker symbol. + uint32_t const app_ram_start_link = *p_app_ram_start; + ret_code_t ret_code = sd_ble_enable(p_ble_enable_params, p_app_ram_start); + if (*p_app_ram_start > app_ram_start_link) + { + NRF_LOG_WARNING("Insufficient RAM allocated for the SoftDevice."); + + NRF_LOG_WARNING("Change the RAM start location from 0x%x to 0x%x.", + app_ram_start_link, *p_app_ram_start); + NRF_LOG_WARNING("Maximum RAM size for application is 0x%x.", + ram_end_address_get() - (*p_app_ram_start)); + } + else + { + NRF_LOG_DEBUG("RAM starts at 0x%x", app_ram_start_link); + if (*p_app_ram_start != app_ram_start_link) + { + NRF_LOG_DEBUG("RAM start location can be adjusted to 0x%x.", *p_app_ram_start); + + NRF_LOG_DEBUG("RAM size for application can be adjusted to 0x%x.", + ram_end_address_get() - (*p_app_ram_start)); + } + } + + if (ret_code == NRF_SUCCESS) + { + m_stack_is_enabled = true; + } + else + { + NRF_LOG_ERROR("sd_ble_enable() returned %s.", nrf_strerror_get(ret_code)); + } + + return ret_code; +} +#endif /**@brief Function for polling BLE events. * @@ -306,6 +346,12 @@ static void nrf_sdh_ble_evts_poll(void * p_context) handler(p_ble_evt, p_observer->p_context); } + + /* Interrupt processing if sdh got suspended. */ + if (nrf_sdh_is_suspended()) { + ret_code = NRF_ERROR_NOT_FOUND; + break; + } } if (ret_code != NRF_ERROR_NOT_FOUND) diff --git nRF5_SDK_15.3.0_59ac345/components/softdevice/common/nrf_sdh_ble.h nRF5_SDK_15.3.0_66869dd/components/softdevice/common/nrf_sdh_ble.h index 04727c7..3948701 100644 --- nRF5_SDK_15.3.0_59ac345/components/softdevice/common/nrf_sdh_ble.h +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/common/nrf_sdh_ble.h @@ -62,6 +62,12 @@ extern "C" { #endif +#ifndef BLE_EVT_LEN_MAX +#define BLE_EVT_LEN_MAX(ATT_MTU) ( \ + offsetof(ble_evt_t, evt.gattc_evt.params.prim_srvc_disc_rsp.services) + ((ATT_MTU) - 1) / 4 * sizeof(ble_gattc_service_t) \ +) + +#endif /** @brief Size of the buffer for a BLE event. */ #define NRF_SDH_BLE_EVT_BUF_SIZE BLE_EVT_LEN_MAX(NRF_SDH_BLE_GATT_MAX_MTU_SIZE) @@ -172,8 +178,11 @@ ret_code_t nrf_sdh_ble_default_cfg_set(uint8_t conn_cfg_tag, uint32_t * p_ram_st * * @param[in] p_app_ram_start Address of the start of application's RAM. */ +#if defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION > 4 ret_code_t nrf_sdh_ble_enable(uint32_t * p_app_ram_start); - +#else +ret_code_t nrf_sdh_ble_enable(ble_enable_params_t * p_ble_enable_params, uint32_t * p_app_ram_start); +#endif #ifdef __cplusplus } diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble.h new file mode 100644 index 0000000..168d655 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble.h @@ -0,0 +1,681 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_COMMON BLE SoftDevice Common + @{ + @defgroup ble_api Events, type definitions and API calls + @{ + + @brief Module independent events, type definitions and API calls for the BLE SoftDevice. + + */ + +#ifndef BLE_H__ +#define BLE_H__ + +#include "ble_ranges.h" +#include "ble_types.h" +#include "ble_gap.h" +#include "ble_l2cap.h" +#include "ble_gatt.h" +#include "ble_gattc.h" +#include "ble_gatts.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup BLE_COMMON_ENUMERATIONS Enumerations + * @{ */ + +/** + * @brief Common API SVC numbers. + */ +enum BLE_COMMON_SVCS +{ + SD_BLE_ENABLE = BLE_SVC_BASE, /**< Enable and initialize the BLE stack */ + SD_BLE_EVT_GET, /**< Get an event from the pending events queue. */ + SD_BLE_TX_PACKET_COUNT_GET, /**< Get the total number of available application transmission packets for a particular connection. */ + SD_BLE_UUID_VS_ADD, /**< Add a Vendor Specific UUID. */ + SD_BLE_UUID_DECODE, /**< Decode UUID bytes. */ + SD_BLE_UUID_ENCODE, /**< Encode UUID bytes. */ + SD_BLE_VERSION_GET, /**< Get the local version information (company id, Link Layer Version, Link Layer Subversion). */ + SD_BLE_USER_MEM_REPLY, /**< User Memory Reply. */ + SD_BLE_OPT_SET, /**< Set a BLE option. */ + SD_BLE_OPT_GET, /**< Get a BLE option. */ +}; + + /** + * @brief BLE Module Independent Event IDs. + */ +enum BLE_COMMON_EVTS +{ + BLE_EVT_TX_COMPLETE = BLE_EVT_BASE, /**< Transmission Complete. @ref ble_evt_tx_complete_t */ + BLE_EVT_USER_MEM_REQUEST, /**< User Memory request. @ref ble_evt_user_mem_request_t */ + BLE_EVT_USER_MEM_RELEASE, /**< User Memory release. @ref ble_evt_user_mem_release_t */ + BLE_EVT_DATA_LENGTH_CHANGED /**< Link layer PDU length changed. @ref ble_evt_data_length_changed_t. */ +}; + +/**@brief BLE connection bandwidth types. + * Bandwidth types supported by the SoftDevice. The bandwidth type dictates the maximum number of full length packets per connection interval. + */ +enum BLE_CONN_BWS +{ + BLE_CONN_BW_INVALID = 0, /**< Invalid connection bandwidth. */ + BLE_CONN_BW_LOW, /**< Low connection bandwidth. */ + BLE_CONN_BW_MID, /**< Medium connection bandwidth. */ + BLE_CONN_BW_HIGH /**< High connection bandwidth. */ +}; + +/**@brief Common Option IDs. + * IDs that uniquely identify a common option. + */ +enum BLE_COMMON_OPTS +{ + BLE_COMMON_OPT_CONN_BW = BLE_OPT_BASE, /**< Bandwidth configuration @ref ble_common_opt_conn_bw_t */ + BLE_COMMON_OPT_PA_LNA, /**< PA and LNA options */ + BLE_COMMON_OPT_CONN_EVT_EXT, /**< Extended connection events option */ +}; + +/** @} */ + +/** @addtogroup BLE_COMMON_DEFINES Defines + * @{ */ + +/** @brief Required pointer alignment for BLE Events. +*/ +#define BLE_EVTS_PTR_ALIGNMENT 4 + +/** @brief Maximum possible length for BLE Events. + * @note Value of @ref ble_gatt_enable_params_t::att_mtu shall be used as a parameter. + * If that value is set to 0 then @ref GATT_MTU_SIZE_DEFAULT must be used instead. +*/ +#define BLE_EVTS_LEN_MAX(ATT_MTU) (MAX( \ + sizeof(ble_evt_t), \ + MAX( \ + offsetof(ble_evt_t, evt.gattc_evt.params.rel_disc_rsp.includes) + ((ATT_MTU) - 2) / 6 * sizeof(ble_gattc_include_t), \ + offsetof(ble_evt_t, evt.gattc_evt.params.attr_info_disc_rsp.info.attr_info16) + ((ATT_MTU) - 2) / 4 * sizeof(ble_gattc_attr_info16_t) \ + ) \ +)) + +/** @defgroup BLE_USER_MEM_TYPES User Memory Types + * @{ */ +#define BLE_USER_MEM_TYPE_INVALID 0x00 /**< Invalid User Memory Types. */ +#define BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES 0x01 /**< User Memory for GATTS queued writes. */ +/** @} */ + +/** @defgroup BLE_UUID_VS_COUNTS Vendor Specific UUID counts + * @{ + */ +#define BLE_UUID_VS_COUNT_MIN 1 /**< Minimum VS UUID count. */ +#define BLE_UUID_VS_COUNT_DEFAULT 0 /**< Use the default VS UUID count (10 for this version of the SoftDevice). */ +/** @} */ + +/** @} */ + +/** @addtogroup BLE_COMMON_STRUCTURES Structures + * @{ */ + +/**@brief User Memory Block. */ +typedef struct +{ + uint8_t *p_mem; /**< Pointer to the start of the user memory block. */ + uint16_t len; /**< Length in bytes of the user memory block. */ +} ble_user_mem_block_t; + +/** + * @brief Event structure for @ref BLE_EVT_TX_COMPLETE. + */ +typedef struct +{ + uint8_t count; /**< Number of packets transmitted. */ +} ble_evt_tx_complete_t; + +/**@brief Event structure for @ref BLE_EVT_USER_MEM_REQUEST. */ +typedef struct +{ + uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ +} ble_evt_user_mem_request_t; + +/**@brief Event structure for @ref BLE_EVT_USER_MEM_RELEASE. */ +typedef struct +{ + uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ + ble_user_mem_block_t mem_block; /**< User memory block */ +} ble_evt_user_mem_release_t; + +/**@brief Event structure for @ref BLE_EVT_DATA_LENGTH_CHANGED. */ +typedef struct +{ + uint16_t max_tx_octets; /**< The maximum number of payload octets in a Link Layer Data Channel PDU that the local Controller will send. Range: 27-251 */ + uint16_t max_tx_time; /**< The maximum time (in microseconds) that the local Controller will take to send a Link Layer Data Channel PDU. Range: 328-2120 */ + uint16_t max_rx_octets; /**< The maximum number of payload octets in a Link Layer Data Channel PDU that the local controller expects to receive. Range: 27-251 */ + uint16_t max_rx_time; /**< The maximum time (in microseconds) that the local Controller expects to take to receive a Link Layer Data Channel PDU. Range: 328-2120 */ +} ble_evt_data_length_changed_t; + +/**@brief Event structure for events not associated with a specific function module. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which this event occurred. */ + union + { + ble_evt_tx_complete_t tx_complete; /**< Transmission Complete. */ + ble_evt_user_mem_request_t user_mem_request; /**< User Memory Request Event Parameters. */ + ble_evt_user_mem_release_t user_mem_release; /**< User Memory Release Event Parameters. */ + ble_evt_data_length_changed_t data_length_changed; /**< Data Length Changed Event Parameters. */ + } params; /**< Event parameter union. */ +} ble_common_evt_t; + +/**@brief BLE Event header. */ +typedef struct +{ + uint16_t evt_id; /**< Value from a BLE__EVT series. */ + uint16_t evt_len; /**< Length in octets including this header. */ +} ble_evt_hdr_t; + +/**@brief Common BLE Event type, wrapping the module specific event reports. */ +typedef struct +{ + ble_evt_hdr_t header; /**< Event header. */ + union + { + ble_common_evt_t common_evt; /**< Common Event, evt_id in BLE_EVT_* series. */ + ble_gap_evt_t gap_evt; /**< GAP originated event, evt_id in BLE_GAP_EVT_* series. */ + ble_l2cap_evt_t l2cap_evt; /**< L2CAP originated event, evt_id in BLE_L2CAP_EVT* series. */ + ble_gattc_evt_t gattc_evt; /**< GATT client originated event, evt_id in BLE_GATTC_EVT* series. */ + ble_gatts_evt_t gatts_evt; /**< GATT server originated event, evt_id in BLE_GATTS_EVT* series. */ + } evt; /**< Event union. */ +} ble_evt_t; + + +/** + * @brief Version Information. + */ +typedef struct +{ + uint8_t version_number; /**< Link Layer Version number for BT 4.1 spec is 7 (https://www.bluetooth.org/en-us/specification/assigned-numbers/link-layer). */ + uint16_t company_id; /**< Company ID, Nordic Semiconductor's company ID is 89 (0x0059) (https://www.bluetooth.org/apps/content/Default.aspx?doc_id=49708). */ + uint16_t subversion_number; /**< Link Layer Sub Version number, corresponds to the SoftDevice Config ID or Firmware ID (FWID). */ +} ble_version_t; + +/** + * @brief Configuration parameters for the PA and LNA. + */ +typedef struct +{ + uint8_t enable :1; /**< Enable toggling for this amplifier */ + uint8_t active_high :1; /**< Set the pin to be active high */ + uint8_t gpio_pin :6; /**< The GPIO pin to toggle for this amplifier */ +} ble_pa_lna_cfg_t; + +/** + * @brief PA & LNA GPIO toggle configuration + * + * This option configures the SoftDevice to toggle pins when the radio is active for use with a power amplifier and/or + * a low noise amplifier. + * + * Toggling the pins is achieved by using two PPI channels and a GPIOTE channel. The hardware channel IDs are provided + * by the application and should be regarded as reserved as long as any PA/LNA toggling is enabled. + * + * @note @ref sd_ble_opt_get is not supported for this option. + * @note This feature is only supported for nRF52, on nRF51 @ref NRF_ERROR_NOT_SUPPORTED will always be returned. + * @note Setting this option while the radio is in use (i.e. any of the roles are active) may have undefined consequences + * and must be avoided by the application. + */ +typedef struct +{ + ble_pa_lna_cfg_t pa_cfg; /**< Power Amplifier configuration */ + ble_pa_lna_cfg_t lna_cfg; /**< Low Noise Amplifier configuration */ + + uint8_t ppi_ch_id_set; /**< PPI channel used for radio pin setting */ + uint8_t ppi_ch_id_clr; /**< PPI channel used for radio pin clearing */ + uint8_t gpiote_ch_id; /**< GPIOTE channel used for radio pin toggling */ +} ble_common_opt_pa_lna_t; + +/** + * @brief BLE connection bandwidth configuration parameters + */ +typedef struct +{ + uint8_t conn_bw_tx; /**< Connection bandwidth configuration for transmission, see @ref BLE_CONN_BWS.*/ + uint8_t conn_bw_rx; /**< Connection bandwidth configuration for reception, see @ref BLE_CONN_BWS.*/ +} ble_conn_bw_t; + +/**@brief BLE connection specific bandwidth configuration parameters. + * + * This can be used with @ref sd_ble_opt_set to set the bandwidth configuration to be used when creating connections. + * + * Call @ref sd_ble_opt_set with this option prior to calling @ref sd_ble_gap_adv_start or @ref sd_ble_gap_connect. + * + * The bandwidth configurations set via @ref sd_ble_opt_set are maintained separately for central and peripheral + * connections. The given configurations are used for all future connections of the role indicated in this structure + * unless they are changed by subsequent @ref sd_ble_opt_set calls. + * + * @note When this option is not used, the SoftDevice will use the default options: + * - @ref BLE_CONN_BW_HIGH for @ref BLE_GAP_ROLE_PERIPH connections (both transmission and reception). + * - @ref BLE_CONN_BW_MID for @ref BLE_GAP_ROLE_CENTRAL connections (both transmisison and reception). + * This option allows the application to selectively override these defaults for each role. + * + * @note The global memory pool configuration can be set with the @ref ble_conn_bw_counts_t configuration parameter, which + * is provided to @ref sd_ble_enable. + * + * @note @ref sd_ble_opt_get is not supported for this option. + * @note Please refer to SoftDevice Specification for more information on bandwidth configuration. + * + * @mscs + * @mmsc{@ref BLE_COMMON_CONF_BW} + * @endmscs + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::BLE_ERROR_INVALID_ROLE The role is invalid. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid bandwidth configuration parameters. + * @retval ::NRF_ERROR_NOT_SUPPORTED If the combination of role and bandwidth configuration is not supported. + */ +typedef struct +{ + uint8_t role; /**< BLE role of the connection, see @ref BLE_GAP_ROLES. */ + ble_conn_bw_t conn_bw; /**< Bandwidth configuration parameters. */ +} ble_common_opt_conn_bw_t; + +/** + * @brief Configuration of extended BLE connection events. + * + * When enabled the SoftDevice will dynamically extend the connection event when possible. + * + * The connection event length is controlled by the bandwidth configuration as set by @ref ble_common_opt_conn_bw_t. + * The connection event can be extended if there is time to send another packet pair before the start of the next connection interval, + * and if there are no conflicts with other BLE roles requesting radio time. + * + * @note @ref sd_ble_opt_get is not supported for this option. + */ +typedef struct +{ + uint8_t enable : 1; /**< Enable extended BLE connection events, disabled by default. */ +} ble_common_opt_conn_evt_ext_t; + +/**@brief Option structure for common options. */ +typedef union +{ + ble_common_opt_conn_bw_t conn_bw; /**< Parameters for the connection bandwidth option. */ + ble_common_opt_pa_lna_t pa_lna; /**< Parameters for controlling PA and LNA pin toggling. */ + ble_common_opt_conn_evt_ext_t conn_evt_ext; /**< Parameters for enabling extended connection events. */ +} ble_common_opt_t; + +/**@brief Common BLE Option type, wrapping the module specific options. */ +typedef union +{ + ble_common_opt_t common_opt; /**< COMMON options, opt_id in @ref BLE_COMMON_OPTS series. */ + ble_gap_opt_t gap_opt; /**< GAP option, opt_id in @ref BLE_GAP_OPTS series. */ +} ble_opt_t; + +/** + * @brief BLE bandwidth count parameters + * + * These parameters are used to configure the memory pools allocated within the SoftDevice for application packets + * (both transmission and reception) for all connections. + * + * @note The sum of all three counts must add up to the sum of @ref ble_gap_enable_params_t::central_conn_count and + * @ref ble_gap_enable_params_t::periph_conn_count in @ref ble_gap_enable_params_t. + */ +typedef struct { + uint8_t high_count; /**< Total number of high bandwidth TX or RX memory pools available to the application at runtime for all active connections. */ + uint8_t mid_count; /**< Total number of medium bandwidth TX or RX memory pools available to the application at runtime for all active connections. */ + uint8_t low_count; /**< Total number of low bandwidth TX or RX memory pools available to the application at runtime for all active connections. */ +} ble_conn_bw_count_t; + +/** + * @brief BLE bandwidth global memory pool configuration parameters + * + * These configuration parameters are used to set the amount of memory dedicated to application packets for + * all connections. The application should specify the most demanding configuration for the intended use. + * + * Please refer to the SoftDevice Specification for more information on bandwidth configuration. + * + * @note Each connection created at runtime requires both a TX and an RX memory pool. By the use of these configuration + * parameters, the application can decide the size and total number of the global memory pools that will be later + * available for connection creation. + * + * @mscs + * @mmsc{@ref BLE_COMMON_CONF_BW} + * @endmscs + * + */ +typedef struct { + ble_conn_bw_count_t tx_counts; /**< Global memory pool configuration for transmission.*/ + ble_conn_bw_count_t rx_counts; /**< Global memory pool configuration for reception.*/ +} ble_conn_bw_counts_t; + +/** + * @brief BLE Common Initialization parameters. + * + * @note If @ref p_conn_bw_counts is NULL the SoftDevice will assume default bandwidth configuration for all connections. + * To fit a custom bandwidth configuration requirement, the application developer may have to specify a custom memory + * pool configuration here. See @ref ble_common_opt_conn_bw_t for bandwidth configuration of individual connections. + * Please refer to the SoftDevice Specification for more information on bandwidth configuration. + */ +typedef struct +{ + uint16_t vs_uuid_count; /**< Maximum number of 128-bit, Vendor Specific UUID bases to allocate. */ + ble_conn_bw_counts_t *p_conn_bw_counts; /**< Bandwidth configuration parameters or NULL for defaults. */ +} ble_common_enable_params_t; + +/** + * @brief BLE Initialization parameters. + */ +typedef struct +{ + ble_common_enable_params_t common_enable_params; /**< Common init parameters @ref ble_common_enable_params_t. */ + ble_gap_enable_params_t gap_enable_params; /**< GAP init parameters @ref ble_gap_enable_params_t. */ + ble_gatt_enable_params_t gatt_enable_params; /**< GATT init parameters @ref ble_gatt_enable_params_t. */ + ble_gatts_enable_params_t gatts_enable_params; /**< GATTS init parameters @ref ble_gatts_enable_params_t. */ +} ble_enable_params_t; + +/** @} */ + +/** @addtogroup BLE_COMMON_FUNCTIONS Functions + * @{ */ + +/**@brief Enable the BLE stack + * + * @param[in, out] p_ble_enable_params Pointer to ble_enable_params_t + * @param[in, out] p_app_ram_base Pointer to a variable containing the start address of the application RAM region + * (APP_RAM_BASE). On return, this will contain the minimum start address of the application RAM region required by the + * SoftDevice for this configuration. Calling @ref sd_ble_enable() with *p_app_ram_base set to 0 can be used during + * development to find out how much memory a specific configuration will need. + * + * @note The memory requirement for a specific configuration will not increase between SoftDevices with the same major + * version number. + * + * @note At runtime the IC's RAM is split into 2 regions: The SoftDevice RAM region is located between 0x20000000 and + * APP_RAM_BASE-1 and the application's RAM region is located between APP_RAM_BASE and the start of the call stack. + * + * @details This call initializes the BLE stack, no other BLE related function can be called before this one. + * + * @mscs + * @mmsc{@ref BLE_COMMON_ENABLE} + * @endmscs + * + * @retval ::NRF_SUCCESS The BLE stack has been initialized successfully. + * @retval ::NRF_ERROR_INVALID_STATE The BLE stack had already been initialized and cannot be reinitialized. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. + * @retval ::NRF_ERROR_INVALID_LENGTH One or more of the following is true: + * - The specified Attribute Table size is too small. + * The minimum acceptable size is defined by @ref BLE_GATTS_ATTR_TAB_SIZE_MIN. + * - The specified Attribute Table size is not a multiple of 4. + * - The device name length is invalid (must be between 0 and @ref BLE_GAP_DEVNAME_MAX_LEN). + * - The device name length is too long for the given Attribute Table. + * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: + * - Incorrectly configured VS UUID count. + * - Invalid connection count parameters. + * - Invalid device name location (vloc). + * - Invalid device name security mode. + * - Invalid maximum ATT_MTU size, see @ref ble_gatt_enable_params_t::att_mtu. + * @retval ::NRF_ERROR_NOT_SUPPORTED Device name security mode is not supported. + * @retval ::NRF_ERROR_NO_MEM The amount of memory assigned to the SoftDevice by *p_app_ram_base is not + * large enough to fit this configuration's memory requirement. Check *p_app_ram_base + * and set the start address of the application RAM region accordingly. + * @retval ::NRF_ERROR_CONN_COUNT The requested number of connections exceeds the maximum supported by the SoftDevice. + * Please refer to the SoftDevice Specification for more information on role configuration. + */ +SVCALL(SD_BLE_ENABLE, uint32_t, sd_ble_enable(ble_enable_params_t * p_ble_enable_params, uint32_t * p_app_ram_base)); + +/**@brief Get an event from the pending events queue. + * + * @param[out] p_dest Pointer to buffer to be filled in with an event, or NULL to retrieve the event length. + * This buffer must be aligned to the extend defined by @ref BLE_EVTS_PTR_ALIGNMENT. + * @param[in, out] p_len Pointer the length of the buffer, on return it is filled with the event length. + * + * @details This call allows the application to pull a BLE event from the BLE stack. The application is signaled that + * an event is available from the BLE stack by the triggering of the SD_EVT_IRQn interrupt. + * The application is free to choose whether to call this function from thread mode (main context) or directly from the + * Interrupt Service Routine that maps to SD_EVT_IRQn. In any case however, and because the BLE stack runs at a higher + * priority than the application, this function should be called in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) + * every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the BLE stack. Failure to do so + * could potentially leave events in the internal queue without the application being aware of this fact. Sizing the + * p_dest buffer is equally important, since the application needs to provide all the memory necessary for the event to + * be copied into application memory. If the buffer provided is not large enough to fit the entire contents of the event, + * @ref NRF_ERROR_DATA_SIZE will be returned and the application can then call again with a larger buffer size. + * The maximum possible event length is defined by @ref BLE_EVTS_LEN_MAX. The application may also "peek" the event length + * by providing p_dest as a NULL pointer and inspecting the value of *p_len upon return: + * + * \code + * uint16_t len; + * errcode = sd_ble_evt_get(NULL, &len); + * \endcode + * + * @mscs + * @mmsc{@ref BLE_COMMON_IRQ_EVT_MSC} + * @mmsc{@ref BLE_COMMON_THREAD_EVT_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Event pulled and stored into the supplied buffer. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. + * @retval ::NRF_ERROR_NOT_FOUND No events ready to be pulled. + * @retval ::NRF_ERROR_DATA_SIZE Event ready but could not fit into the supplied buffer. + */ +SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t *p_dest, uint16_t *p_len)); + + +/**@brief Get the total number of available guaranteed application transmission packets for a particular connection. + * + * @details This call allows the application to obtain the total number of guaranteed application transmission packets + * available for a connection. Please note that this does not return the number of free packets, but rather the total + * amount of them for that particular connection. The application has two options to handle transmitting application packets: + * - Use a simple arithmetic calculation: after connection creation time the application should use this function to + * find out the total amount of guaranteed packets available to it and store it in a variable. + * Every time a packet is successfully queued for a transmission on this connection using any of the exposed functions in + * this BLE API, the application should decrement that variable. Conversely, whenever a @ref BLE_EVT_TX_COMPLETE event + * with the conn_handle matching the particular connection is received by the application, it should retrieve the count + * field in such event and add that number to the same variable storing the number of available guaranteed packets. This + * mechanism allows the application to be aware at any time of the number of guaranteed application packets available for + * each of the active connections, and therefore it can know with certainty whether it is possible to send more data or + * it has to wait for a @ref BLE_EVT_TX_COMPLETE event before it proceeds. + * The application can still pursue transmissions when the number of guaranteed application packets available is smaller + * than or equal to zero, but successful queuing of the tranmsission is not guaranteed. + * - Choose to simply not keep track of available packets at all, and instead handle the @ref BLE_ERROR_NO_TX_PACKETS error + * by queueing the packet to be transmitted and try again as soon as a @ref BLE_EVT_TX_COMPLETE event arrives. + * + * The API functions that may consume an application packet depending on the parameters supplied to them can be found below: + * - @ref sd_ble_gattc_write (write without response only) + * - @ref sd_ble_gatts_hvx (notifications only) + * - @ref sd_ble_l2cap_tx (all packets) + * + * @param[in] conn_handle Connection handle. + * @param[out] p_count Pointer to a uint8_t which will contain the number of application transmission packets upon + * successful return. + * @mscs + * @mmsc{@ref BLE_COMMON_APP_BUFF_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Number of application transmission packets retrieved successfully. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_TX_PACKET_COUNT_GET, uint32_t, sd_ble_tx_packet_count_get(uint16_t conn_handle, uint8_t *p_count)); + + +/**@brief Add a Vendor Specific base UUID. + * + * @details This call enables the application to add a vendor specific base UUID to the BLE stack's table, for later + * use with all other modules and APIs. This then allows the application to use the shorter, 24-bit @ref ble_uuid_t + * format when dealing with both 16-bit and 128-bit UUIDs without having to check for lengths and having split code + * paths. This is accomplished by extending the grouping mechanism that the Bluetooth SIG standard base UUID uses + * for all other 128-bit UUIDs. The type field in the @ref ble_uuid_t structure is an index (relative to + * @ref BLE_UUID_TYPE_VENDOR_BEGIN) to the table populated by multiple calls to this function, and the uuid field + * in the same structure contains the 2 bytes at indices 12 and 13. The number of possible 128-bit UUIDs available to + * the application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536, + * although restricted to modifying bytes 12 and 13 for each of the entries in the supplied array. + * + * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by + * the 16-bit uuid field in @ref ble_uuid_t. + * + * @note If a UUID is already present in the BLE stack's internal table, the corresponding index will be returned in + * p_uuid_type along with an NRF_SUCCESS error code. + * + * @param[in] p_vs_uuid Pointer to a 16-octet (128-bit) little endian Vendor Specific UUID disregarding + * bytes 12 and 13. + * @param[out] p_uuid_type Pointer to a uint8_t where the type field in @ref ble_uuid_t corresponding to this UUID will be stored. + * + * @retval ::NRF_SUCCESS Successfully added the Vendor Specific UUID. + * @retval ::NRF_ERROR_INVALID_ADDR If p_vs_uuid or p_uuid_type is NULL or invalid. + * @retval ::NRF_ERROR_NO_MEM If there are no more free slots for VS UUIDs. + */ +SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const *p_vs_uuid, uint8_t *p_uuid_type)); + + +/** @brief Decode little endian raw UUID bytes (16-bit or 128-bit) into a 24 bit @ref ble_uuid_t structure. + * + * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared + * to the corresponding ones in each entry of the table of vendor specific UUIDs populated with @ref sd_ble_uuid_vs_add + * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index + * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type. + * + * @note If the UUID length supplied is 2, then the type set by this call will always be @ref BLE_UUID_TYPE_BLE. + * + * @param[in] uuid_le_len Length in bytes of the buffer pointed to by p_uuid_le (must be 2 or 16 bytes). + * @param[in] p_uuid_le Pointer pointing to little endian raw UUID bytes. + * @param[out] p_uuid Pointer to a @ref ble_uuid_t structure to be filled in. + * + * @retval ::NRF_SUCCESS Successfully decoded into the @ref ble_uuid_t structure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_LENGTH Invalid UUID length. + * @retval ::NRF_ERROR_NOT_FOUND For a 128-bit UUID, no match in the populated table of UUIDs. + */ +SVCALL(SD_BLE_UUID_DECODE, uint32_t, sd_ble_uuid_decode(uint8_t uuid_le_len, uint8_t const *p_uuid_le, ble_uuid_t *p_uuid)); + + +/** @brief Encode a @ref ble_uuid_t structure into little endian raw UUID bytes (16-bit or 128-bit). + * + * @note The pointer to the destination buffer p_uuid_le may be NULL, in which case only the validity and size of p_uuid is computed. + * + * @param[in] p_uuid Pointer to a @ref ble_uuid_t structure that will be encoded into bytes. + * @param[out] p_uuid_le_len Pointer to a uint8_t that will be filled with the encoded length (2 or 16 bytes). + * @param[out] p_uuid_le Pointer to a buffer where the little endian raw UUID bytes (2 or 16) will be stored. + * + * @retval ::NRF_SUCCESS Successfully encoded into the buffer. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid UUID type. + */ +SVCALL(SD_BLE_UUID_ENCODE, uint32_t, sd_ble_uuid_encode(ble_uuid_t const *p_uuid, uint8_t *p_uuid_le_len, uint8_t *p_uuid_le)); + + +/**@brief Get Version Information. + * + * @details This call allows the application to get the BLE stack version information. + * + * @param[out] p_version Pointer to a ble_version_t structure to be filled in. + * + * @retval ::NRF_SUCCESS Version information stored successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY The BLE stack is busy (typically doing a locally-initiated disconnection procedure). + */ +SVCALL(SD_BLE_VERSION_GET, uint32_t, sd_ble_version_get(ble_version_t *p_version)); + + +/**@brief Provide a user memory block. + * + * @note This call can only be used as a response to a @ref BLE_EVT_USER_MEM_REQUEST event issued to the application. + * + * @param[in] conn_handle Connection handle. + * @param[in,out] p_block Pointer to a user memory block structure. + * + * @mscs + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_PEER_CANCEL_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_NOAUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Successfully queued a response to the peer. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection state or no execute write request pending. + * @retval ::NRF_ERROR_BUSY The BLE stack is busy. Retry at later time. + */ +SVCALL(SD_BLE_USER_MEM_REPLY, uint32_t, sd_ble_user_mem_reply(uint16_t conn_handle, ble_user_mem_block_t const *p_block)); + +/**@brief Set a BLE option. + * + * @details This call allows the application to set the value of an option. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} + * @mmsc{@ref BLE_COMMON_CONF_BW} + * @endmscs + * + * @param[in] opt_id Option ID, see @ref BLE_COMMON_OPTS and @ref BLE_GAP_OPTS. + * @param[in] p_opt Pointer to a ble_opt_t structure containing the option value. + * + * @retval ::NRF_SUCCESS Option set successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. + * @retval ::NRF_ERROR_INVALID_STATE Unable to set the parameter at this time. + * @retval ::NRF_ERROR_BUSY The BLE stack is busy or the previous procedure has not completed. + */ +SVCALL(SD_BLE_OPT_SET, uint32_t, sd_ble_opt_set(uint32_t opt_id, ble_opt_t const *p_opt)); + + +/**@brief Get a BLE option. + * + * @details This call allows the application to retrieve the value of an option. + * + * @param[in] opt_id Option ID, see @ref BLE_COMMON_OPTS and @ref BLE_GAP_OPTS. + * @param[out] p_opt Pointer to a ble_opt_t structure to be filled in. + * + * @retval ::NRF_SUCCESS Option retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. + * @retval ::NRF_ERROR_INVALID_STATE Unable to retrieve the parameter at this time. + * @retval ::NRF_ERROR_BUSY The BLE stack is busy or the previous procedure has not completed. + * @retval ::NRF_ERROR_NOT_SUPPORTED This option is not supported. + * + */ +SVCALL(SD_BLE_OPT_GET, uint32_t, sd_ble_opt_get(uint32_t opt_id, ble_opt_t *p_opt)); + +/** @} */ +#ifdef __cplusplus +} +#endif +#endif /* BLE_H__ */ + +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_err.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_err.h new file mode 100644 index 0000000..9e70176 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_err.h @@ -0,0 +1,90 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_COMMON + @{ + @addtogroup nrf_error + @{ + @ingroup BLE_COMMON + @} + + @defgroup ble_err General error codes + @{ + + @brief General error code definitions for the BLE API. + + @ingroup BLE_COMMON +*/ +#ifndef NRF_BLE_ERR_H__ +#define NRF_BLE_ERR_H__ + +#include "nrf_error.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* @defgroup BLE_ERRORS Error Codes + * @{ */ +#define BLE_ERROR_NOT_ENABLED (NRF_ERROR_STK_BASE_NUM+0x001) /**< @ref sd_ble_enable has not been called. */ +#define BLE_ERROR_INVALID_CONN_HANDLE (NRF_ERROR_STK_BASE_NUM+0x002) /**< Invalid connection handle. */ +#define BLE_ERROR_INVALID_ATTR_HANDLE (NRF_ERROR_STK_BASE_NUM+0x003) /**< Invalid attribute handle. */ +#define BLE_ERROR_NO_TX_PACKETS (NRF_ERROR_STK_BASE_NUM+0x004) /**< Not enough application packets available on this connection. */ +#define BLE_ERROR_INVALID_ROLE (NRF_ERROR_STK_BASE_NUM+0x005) /**< Invalid role. */ +/** @} */ + + +/** @defgroup BLE_ERROR_SUBRANGES Module specific error code subranges + * @brief Assignment of subranges for module specific error codes. + * @note For specific error codes, see ble_.h or ble_error_.h. + * @{ */ +#define NRF_L2CAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x100) /**< L2CAP specific errors. */ +#define NRF_GAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x200) /**< GAP specific errors. */ +#define NRF_GATTC_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x300) /**< GATT client specific errors. */ +#define NRF_GATTS_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x400) /**< GATT server specific errors. */ +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif + + +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gap.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gap.h new file mode 100644 index 0000000..54a33f0 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gap.h @@ -0,0 +1,1917 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_GAP Generic Access Profile (GAP) + @{ + @brief Definitions and prototypes for the GAP interface. + */ + +#ifndef BLE_GAP_H__ +#define BLE_GAP_H__ + +#include "ble_types.h" +#include "ble_ranges.h" +#include "nrf_svc.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/**@addtogroup BLE_GAP_ENUMERATIONS Enumerations + * @{ */ + +/**@brief GAP API SVC numbers. + */ +enum BLE_GAP_SVCS +{ + SD_BLE_GAP_ADDR_SET = BLE_GAP_SVC_BASE, /**< Set own Bluetooth Address. */ + SD_BLE_GAP_ADDR_GET, /**< Get own Bluetooth Address. */ + SD_BLE_GAP_WHITELIST_SET, /**< Set active whitelist. */ + SD_BLE_GAP_DEVICE_IDENTITIES_SET, /**< Set device identity list. */ + SD_BLE_GAP_PRIVACY_SET, /**< Set Privacy settings*/ + SD_BLE_GAP_PRIVACY_GET, /**< Get Privacy settings*/ + SD_BLE_GAP_ADV_DATA_SET, /**< Set Advertising Data. */ + SD_BLE_GAP_ADV_START, /**< Start Advertising. */ + SD_BLE_GAP_ADV_STOP, /**< Stop Advertising. */ + SD_BLE_GAP_CONN_PARAM_UPDATE, /**< Connection Parameter Update. */ + SD_BLE_GAP_DISCONNECT, /**< Disconnect. */ + SD_BLE_GAP_TX_POWER_SET, /**< Set TX Power. */ + SD_BLE_GAP_APPEARANCE_SET, /**< Set Appearance. */ + SD_BLE_GAP_APPEARANCE_GET, /**< Get Appearance. */ + SD_BLE_GAP_PPCP_SET, /**< Set PPCP. */ + SD_BLE_GAP_PPCP_GET, /**< Get PPCP. */ + SD_BLE_GAP_DEVICE_NAME_SET, /**< Set Device Name. */ + SD_BLE_GAP_DEVICE_NAME_GET, /**< Get Device Name. */ + SD_BLE_GAP_AUTHENTICATE, /**< Initiate Pairing/Bonding. */ + SD_BLE_GAP_SEC_PARAMS_REPLY, /**< Reply with Security Parameters. */ + SD_BLE_GAP_AUTH_KEY_REPLY, /**< Reply with an authentication key. */ + SD_BLE_GAP_LESC_DHKEY_REPLY, /**< Reply with an LE Secure Connections DHKey. */ + SD_BLE_GAP_KEYPRESS_NOTIFY, /**< Notify of a keypress during an authentication procedure. */ + SD_BLE_GAP_LESC_OOB_DATA_GET, /**< Get the local LE Secure Connections OOB data. */ + SD_BLE_GAP_LESC_OOB_DATA_SET, /**< Set the remote LE Secure Connections OOB data. */ + SD_BLE_GAP_ENCRYPT, /**< Initiate encryption procedure. */ + SD_BLE_GAP_SEC_INFO_REPLY, /**< Reply with Security Information. */ + SD_BLE_GAP_CONN_SEC_GET, /**< Obtain connection security level. */ + SD_BLE_GAP_RSSI_START, /**< Start reporting of changes in RSSI. */ + SD_BLE_GAP_RSSI_STOP, /**< Stop reporting of changes in RSSI. */ + SD_BLE_GAP_SCAN_START, /**< Start Scanning. */ + SD_BLE_GAP_SCAN_STOP, /**< Stop Scanning. */ + SD_BLE_GAP_CONNECT, /**< Connect. */ + SD_BLE_GAP_CONNECT_CANCEL, /**< Cancel ongoing connection procedure. */ + SD_BLE_GAP_RSSI_GET, /**< Get the last RSSI sample. */ +}; + +/**@brief GAP Event IDs. + * IDs that uniquely identify an event coming from the stack to the application. + */ +enum BLE_GAP_EVTS +{ + BLE_GAP_EVT_CONNECTED = BLE_GAP_EVT_BASE, /**< Connection established. \n See @ref ble_gap_evt_connected_t. */ + BLE_GAP_EVT_DISCONNECTED, /**< Disconnected from peer. \n See @ref ble_gap_evt_disconnected_t. */ + BLE_GAP_EVT_CONN_PARAM_UPDATE, /**< Connection Parameters updated. \n See @ref ble_gap_evt_conn_param_update_t. */ + BLE_GAP_EVT_SEC_PARAMS_REQUEST, /**< Request to provide security parameters. \n Reply with @ref sd_ble_gap_sec_params_reply. \n See @ref ble_gap_evt_sec_params_request_t. */ + BLE_GAP_EVT_SEC_INFO_REQUEST, /**< Request to provide security information. \n Reply with @ref sd_ble_gap_sec_info_reply. \n See @ref ble_gap_evt_sec_info_request_t. */ + BLE_GAP_EVT_PASSKEY_DISPLAY, /**< Request to display a passkey to the user. \n In LESC Numeric Comparison, reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_passkey_display_t. */ + BLE_GAP_EVT_KEY_PRESSED, /**< Notification of a keypress on the remote device.\n See @ref ble_gap_evt_key_pressed_t */ + BLE_GAP_EVT_AUTH_KEY_REQUEST, /**< Request to provide an authentication key. \n Reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_auth_key_request_t. */ + BLE_GAP_EVT_LESC_DHKEY_REQUEST, /**< Request to calculate an LE Secure Connections DHKey. \n Reply with @ref sd_ble_gap_lesc_dhkey_reply. \n See @ref ble_gap_evt_lesc_dhkey_request_t */ + BLE_GAP_EVT_AUTH_STATUS, /**< Authentication procedure completed with status. \n See @ref ble_gap_evt_auth_status_t. */ + BLE_GAP_EVT_CONN_SEC_UPDATE, /**< Connection security updated. \n See @ref ble_gap_evt_conn_sec_update_t. */ + BLE_GAP_EVT_TIMEOUT, /**< Timeout expired. \n See @ref ble_gap_evt_timeout_t. */ + BLE_GAP_EVT_RSSI_CHANGED, /**< RSSI report. \n See @ref ble_gap_evt_rssi_changed_t. */ + BLE_GAP_EVT_ADV_REPORT, /**< Advertising report. \n See @ref ble_gap_evt_adv_report_t. */ + BLE_GAP_EVT_SEC_REQUEST, /**< Security Request. \n See @ref ble_gap_evt_sec_request_t. */ + BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST, /**< Connection Parameter Update Request. \n Reply with @ref sd_ble_gap_conn_param_update. \n See @ref ble_gap_evt_conn_param_update_request_t. */ + BLE_GAP_EVT_SCAN_REQ_REPORT, /**< Scan request report. \n See @ref ble_gap_evt_scan_req_report_t. */ +}; + +/**@brief GAP Option IDs. + * IDs that uniquely identify a GAP option. + */ +enum BLE_GAP_OPTS +{ + BLE_GAP_OPT_CH_MAP = BLE_GAP_OPT_BASE, /**< Channel Map. @ref ble_gap_opt_ch_map_t */ + BLE_GAP_OPT_LOCAL_CONN_LATENCY, /**< Local connection latency. @ref ble_gap_opt_local_conn_latency_t */ + BLE_GAP_OPT_PASSKEY, /**< Set passkey. @ref ble_gap_opt_passkey_t */ + BLE_GAP_OPT_SCAN_REQ_REPORT, /**< Scan request report. @ref ble_gap_opt_scan_req_report_t */ + BLE_GAP_OPT_COMPAT_MODE, /**< Compatibility mode. @ref ble_gap_opt_compat_mode_t */ + BLE_GAP_OPT_AUTH_PAYLOAD_TIMEOUT, /**< Set Authenticated payload timeout. @ref ble_gap_opt_auth_payload_timeout_t */ + BLE_GAP_OPT_EXT_LEN, /**< Extended length packets. @ref ble_gap_opt_ext_len_t */ +}; + +/** @} */ + +/**@addtogroup BLE_GAP_DEFINES Defines + * @{ */ + +/**@defgroup BLE_ERRORS_GAP SVC return values specific to GAP + * @{ */ +#define BLE_ERROR_GAP_UUID_LIST_MISMATCH (NRF_GAP_ERR_BASE + 0x000) /**< UUID list does not contain an integral number of UUIDs. */ +#define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST (NRF_GAP_ERR_BASE + 0x001) /**< Use of Whitelist not permitted with discoverable advertising. */ +#define BLE_ERROR_GAP_INVALID_BLE_ADDR (NRF_GAP_ERR_BASE + 0x002) /**< The upper two bits of the address do not correspond to the specified address type. */ +#define BLE_ERROR_GAP_WHITELIST_IN_USE (NRF_GAP_ERR_BASE + 0x003) /**< Attempt to modify the whitelist while already in use by another operation. */ +#define BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE (NRF_GAP_ERR_BASE + 0x004) /**< Attempt to modify the device identity list while already in use by another operation. */ +#define BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE (NRF_GAP_ERR_BASE + 0x005) /**< The device identity list contains entries with duplicate identity addresses. */ +/**@} */ + + +/**@defgroup BLE_GAP_ROLES GAP Roles + * @note Not explicitly used in peripheral API, but will be relevant for central API. + * @{ */ +#define BLE_GAP_ROLE_INVALID 0x0 /**< Invalid Role. */ +#define BLE_GAP_ROLE_PERIPH 0x1 /**< Peripheral Role. */ +#define BLE_GAP_ROLE_CENTRAL 0x2 /**< Central Role. */ +/**@} */ + + +/**@defgroup BLE_GAP_TIMEOUT_SOURCES GAP Timeout sources + * @{ */ +#define BLE_GAP_TIMEOUT_SRC_ADVERTISING 0x00 /**< Advertising timeout. */ +#define BLE_GAP_TIMEOUT_SRC_SECURITY_REQUEST 0x01 /**< Security request timeout. */ +#define BLE_GAP_TIMEOUT_SRC_SCAN 0x02 /**< Scanning timeout. */ +#define BLE_GAP_TIMEOUT_SRC_CONN 0x03 /**< Connection timeout. */ +#define BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD 0x04 /**< Authenticated payload timeout. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADDR_TYPES GAP Address types + * @{ */ +#define BLE_GAP_ADDR_TYPE_PUBLIC 0x00 /**< Public address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_STATIC 0x01 /**< Random static address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE 0x02 /**< Random private resolvable address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03 /**< Random private non-resolvable address. */ +/**@} */ + + +/**@brief The default interval in seconds at which a private address is refreshed. */ +#define BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S (900) /* 15 minutes. */ +/**@brief The maximum interval in seconds at which a private address can be refreshed. */ +#define BLE_GAP_MAX_PRIVATE_ADDR_CYCLE_INTERVAL_S (41400) /* 11 hours 30 minutes. */ + + +/** @brief BLE address length. */ +#define BLE_GAP_ADDR_LEN (6) + + +/**@defgroup BLE_GAP_PRIVACY_MODES Privacy modes + * @{ */ +#define BLE_GAP_PRIVACY_MODE_OFF 0x00 /**< Device will send and accept its identity address for its own address. */ +#define BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY 0x01 /**< Device will send and accept only private addresses for its own address. */ +/**@} */ + + +/**@defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format + * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm + * @{ */ +#define BLE_GAP_AD_TYPE_FLAGS 0x01 /**< Flags for discoverability. */ +#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02 /**< Partial list of 16 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03 /**< Complete list of 16 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04 /**< Partial list of 32 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05 /**< Complete list of 32 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /**< Partial list of 128 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07 /**< Complete list of 128 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08 /**< Short local device name. */ +#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 /**< Complete local device name. */ +#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A /**< Transmit power level. */ +#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D /**< Class of device. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E /**< Simple Pairing Hash C. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F /**< Simple Pairing Randomizer R. */ +#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 /**< Security Manager TK Value. */ +#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11 /**< Security Manager Out Of Band Flags. */ +#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /**< Slave Connection Interval Range. */ +#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14 /**< List of 16-bit Service Solicitation UUIDs. */ +#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15 /**< List of 128-bit Service Solicitation UUIDs. */ +#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16 /**< Service Data - 16-bit UUID. */ +#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17 /**< Public Target Address. */ +#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18 /**< Random Target Address. */ +#define BLE_GAP_AD_TYPE_APPEARANCE 0x19 /**< Appearance. */ +#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL 0x1A /**< Advertising Interval. */ +#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B /**< LE Bluetooth Device Address. */ +#define BLE_GAP_AD_TYPE_LE_ROLE 0x1C /**< LE Role. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 0x1D /**< Simple Pairing Hash C-256. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 0x1E /**< Simple Pairing Randomizer R-256. */ +#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID 0x20 /**< Service Data - 32-bit UUID. */ +#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID 0x21 /**< Service Data - 128-bit UUID. */ +#define BLE_GAP_AD_TYPE_URI 0x24 /**< URI */ +#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA 0x3D /**< 3D Information Data. */ +#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF /**< Manufacturer Specific Data. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_FLAGS GAP Advertisement Flags + * @{ */ +#define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE (0x01) /**< LE Limited Discoverable Mode. */ +#define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE (0x02) /**< LE General Discoverable Mode. */ +#define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED (0x04) /**< BR/EDR not supported. */ +#define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER (0x08) /**< Simultaneous LE and BR/EDR, Controller. */ +#define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST (0x10) /**< Simultaneous LE and BR/EDR, Host. */ +#define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE Limited Discoverable Mode, BR/EDR not supported. */ +#define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE General Discoverable Mode, BR/EDR not supported. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_INTERVALS GAP Advertising interval max and min + * @{ */ +#define BLE_GAP_ADV_INTERVAL_MIN 0x0020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */ +#define BLE_GAP_ADV_NONCON_INTERVAL_MIN 0x00A0 /**< Minimum Advertising interval in 625 us units for non connectable mode, i.e. 100 ms. */ +#define BLE_GAP_ADV_INTERVAL_MAX 0x4000 /**< Maximum Advertising interval in 625 us units, i.e. 10.24 s. */ + /**@} */ + + +/**@defgroup BLE_GAP_SCAN_INTERVALS GAP Scan interval max and min + * @{ */ +#define BLE_GAP_SCAN_INTERVAL_MIN 0x0004 /**< Minimum Scan interval in 625 us units, i.e. 2.5 ms. */ +#define BLE_GAP_SCAN_INTERVAL_MAX 0x4000 /**< Maximum Scan interval in 625 us units, i.e. 10.24 s. */ + /** @} */ + + +/**@defgroup BLE_GAP_SCAN_WINDOW GAP Scan window max and min + * @{ */ +#define BLE_GAP_SCAN_WINDOW_MIN 0x0004 /**< Minimum Scan window in 625 us units, i.e. 2.5 ms. */ +#define BLE_GAP_SCAN_WINDOW_MAX 0x4000 /**< Maximum Scan window in 625 us units, i.e. 10.24 s. */ + /** @} */ + + +/**@defgroup BLE_GAP_SCAN_TIMEOUT GAP Scan timeout max and min + * @{ */ +#define BLE_GAP_SCAN_TIMEOUT_MIN 0x0001 /**< Minimum Scan timeout in seconds. */ +#define BLE_GAP_SCAN_TIMEOUT_MAX 0xFFFF /**< Maximum Scan timeout in seconds. */ + /** @} */ + + +/**@brief Maximum size of advertising data in octets. */ +#define BLE_GAP_ADV_MAX_SIZE (31) + + +/**@defgroup BLE_GAP_ADV_TYPES GAP Advertising types + * @{ */ +#define BLE_GAP_ADV_TYPE_ADV_IND 0x00 /**< Connectable undirected. */ +#define BLE_GAP_ADV_TYPE_ADV_DIRECT_IND 0x01 /**< Connectable directed. */ +#define BLE_GAP_ADV_TYPE_ADV_SCAN_IND 0x02 /**< Scannable undirected. */ +#define BLE_GAP_ADV_TYPE_ADV_NONCONN_IND 0x03 /**< Non connectable undirected. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_FILTER_POLICIES GAP Advertising filter policies + * @{ */ +#define BLE_GAP_ADV_FP_ANY 0x00 /**< Allow scan requests and connect requests from any device. */ +#define BLE_GAP_ADV_FP_FILTER_SCANREQ 0x01 /**< Filter scan requests with whitelist. */ +#define BLE_GAP_ADV_FP_FILTER_CONNREQ 0x02 /**< Filter connect requests with whitelist. */ +#define BLE_GAP_ADV_FP_FILTER_BOTH 0x03 /**< Filter both scan and connect requests with whitelist. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values + * @{ */ +#define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX (180) /**< Maximum advertising time in limited discoverable mode (TGAP(lim_adv_timeout) = 180s). */ +#define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED (0) /**< Unlimited advertising in general discoverable mode. */ +/**@} */ + + +/**@defgroup BLE_GAP_DISC_MODES GAP Discovery modes + * @{ */ +#define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE 0x00 /**< Not discoverable discovery Mode. */ +#define BLE_GAP_DISC_MODE_LIMITED 0x01 /**< Limited Discovery Mode. */ +#define BLE_GAP_DISC_MODE_GENERAL 0x02 /**< General Discovery Mode. */ +/**@} */ + + +/**@defgroup BLE_GAP_IO_CAPS GAP IO Capabilities + * @{ */ +#define BLE_GAP_IO_CAPS_DISPLAY_ONLY 0x00 /**< Display Only. */ +#define BLE_GAP_IO_CAPS_DISPLAY_YESNO 0x01 /**< Display and Yes/No entry. */ +#define BLE_GAP_IO_CAPS_KEYBOARD_ONLY 0x02 /**< Keyboard Only. */ +#define BLE_GAP_IO_CAPS_NONE 0x03 /**< No I/O capabilities. */ +#define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY 0x04 /**< Keyboard and Display. */ +/**@} */ + + +/**@defgroup BLE_GAP_AUTH_KEY_TYPES GAP Authentication Key Types + * @{ */ +#define BLE_GAP_AUTH_KEY_TYPE_NONE 0x00 /**< No key (may be used to reject). */ +#define BLE_GAP_AUTH_KEY_TYPE_PASSKEY 0x01 /**< 6-digit Passkey. */ +#define BLE_GAP_AUTH_KEY_TYPE_OOB 0x02 /**< Out Of Band data. */ +/**@} */ + + +/**@defgroup BLE_GAP_KP_NOT_TYPES GAP Keypress Notification Types + * @{ */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_START 0x00 /**< Passkey entry started. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_IN 0x01 /**< Passkey digit entered. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_OUT 0x02 /**< Passkey digit erased. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_CLEAR 0x03 /**< Passkey cleared. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_END 0x04 /**< Passkey entry completed. */ +/**@} */ + + +/**@defgroup BLE_GAP_SEC_STATUS GAP Security status + * @{ */ +#define BLE_GAP_SEC_STATUS_SUCCESS 0x00 /**< Procedure completed with success. */ +#define BLE_GAP_SEC_STATUS_TIMEOUT 0x01 /**< Procedure timed out. */ +#define BLE_GAP_SEC_STATUS_PDU_INVALID 0x02 /**< Invalid PDU received. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE1_BEGIN 0x03 /**< Reserved for Future Use range #1 begin. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE1_END 0x80 /**< Reserved for Future Use range #1 end. */ +#define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED 0x81 /**< Passkey entry failed (user cancelled or other). */ +#define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE 0x82 /**< Out of Band Key not available. */ +#define BLE_GAP_SEC_STATUS_AUTH_REQ 0x83 /**< Authentication requirements not met. */ +#define BLE_GAP_SEC_STATUS_CONFIRM_VALUE 0x84 /**< Confirm value failed. */ +#define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP 0x85 /**< Pairing not supported. */ +#define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE 0x86 /**< Encryption key size. */ +#define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED 0x87 /**< Unsupported SMP command. */ +#define BLE_GAP_SEC_STATUS_UNSPECIFIED 0x88 /**< Unspecified reason. */ +#define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS 0x89 /**< Too little time elapsed since last attempt. */ +#define BLE_GAP_SEC_STATUS_INVALID_PARAMS 0x8A /**< Invalid parameters. */ +#define BLE_GAP_SEC_STATUS_DHKEY_FAILURE 0x8B /**< DHKey check failure. */ +#define BLE_GAP_SEC_STATUS_NUM_COMP_FAILURE 0x8C /**< Numeric Comparison failure. */ +#define BLE_GAP_SEC_STATUS_BR_EDR_IN_PROG 0x8D /**< BR/EDR pairing in progress. */ +#define BLE_GAP_SEC_STATUS_X_TRANS_KEY_DISALLOWED 0x8E /**< BR/EDR Link Key cannot be used for LE keys. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE2_BEGIN 0x8F /**< Reserved for Future Use range #2 begin. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE2_END 0xFF /**< Reserved for Future Use range #2 end. */ +/**@} */ + + +/**@defgroup BLE_GAP_SEC_STATUS_SOURCES GAP Security status sources + * @{ */ +#define BLE_GAP_SEC_STATUS_SOURCE_LOCAL 0x00 /**< Local failure. */ +#define BLE_GAP_SEC_STATUS_SOURCE_REMOTE 0x01 /**< Remote failure. */ +/**@} */ + + +/**@defgroup BLE_GAP_CP_LIMITS GAP Connection Parameters Limits + * @{ */ +#define BLE_GAP_CP_MIN_CONN_INTVL_NONE 0xFFFF /**< No new minimum connection interval specified in connect parameters. */ +#define BLE_GAP_CP_MIN_CONN_INTVL_MIN 0x0006 /**< Lowest minimum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ +#define BLE_GAP_CP_MIN_CONN_INTVL_MAX 0x0C80 /**< Highest minimum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_NONE 0xFFFF /**< No new maximum connection interval specified in connect parameters. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_MIN 0x0006 /**< Lowest maximum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_MAX 0x0C80 /**< Highest maximum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ +#define BLE_GAP_CP_SLAVE_LATENCY_MAX 0x01F3 /**< Highest slave latency permitted, in connection events. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE 0xFFFF /**< No new supervision timeout specified in connect parameters. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN 0x000A /**< Lowest supervision timeout permitted, in units of 10 ms, i.e. 100 ms. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX 0x0C80 /**< Highest supervision timeout permitted, in units of 10 ms, i.e. 32 s. */ +/**@} */ + + +/**@brief GAP device name defines. */ +#define BLE_GAP_DEVNAME_DEFAULT "nRF5x" /**< Default device name value. */ +#define BLE_GAP_DEVNAME_DEFAULT_LEN 31 /**< Default number of octets in device name. */ +#define BLE_GAP_DEVNAME_MAX_LEN 248 /**< Maximum number of octets in device name. */ + + +/**@brief Disable RSSI events for connections */ +#define BLE_GAP_RSSI_THRESHOLD_INVALID 0xFF + + +/**@defgroup BLE_GAP_CONN_SEC_MODE_SET_MACROS GAP attribute security requirement setters + * + * See @ref ble_gap_conn_sec_mode_t. + * @{ */ +/**@brief Set sec_mode pointed to by ptr to have no access rights.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr) do {(ptr)->sm = 0; (ptr)->lv = 0;} while (0) +/**@brief Set sec_mode pointed to by ptr to require no protection, open link.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr) do {(ptr)->sm = 1; (ptr)->lv = 1;} while (0) +/**@brief Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 2;} while (0) +/**@brief Set sec_mode pointed to by ptr to require encryption and MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 3;} while (0) +/**@brief Set sec_mode pointed to by ptr to require LESC encryption and MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_LESC_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 4;} while (0) +/**@brief Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 1;} while (0) +/**@brief Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 2;} while (0) +/**@} */ + + +/**@brief GAP Security Random Number Length. */ +#define BLE_GAP_SEC_RAND_LEN 8 + + +/**@brief GAP Security Key Length. */ +#define BLE_GAP_SEC_KEY_LEN 16 + + +/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key Length. */ +#define BLE_GAP_LESC_P256_PK_LEN 64 + + +/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman DHKey Length. */ +#define BLE_GAP_LESC_DHKEY_LEN 32 + + +/**@brief GAP Passkey Length. */ +#define BLE_GAP_PASSKEY_LEN 6 + + +/**@brief Maximum amount of addresses in the whitelist. */ +#define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8) + + +/**@brief Maximum amount of identities in the device identities list. */ +#define BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT (8) + + +/**@defgroup GAP_SEC_MODES GAP Security Modes + * @{ */ +#define BLE_GAP_SEC_MODE 0x00 /**< No key (may be used to reject). */ +/**@} */ +/** @} */ + + +/**@addtogroup BLE_GAP_STRUCTURES Structures + * @{ */ + +/**@brief Bluetooth Low Energy address. */ +typedef struct +{ + uint8_t addr_id_peer : 1; /**< Only valid for peer addresses. + Reference to peer in device identities list (as set with @ref sd_ble_gap_device_identities_set) when peer is using privacy. */ + uint8_t addr_type : 7; /**< See @ref BLE_GAP_ADDR_TYPES. */ + uint8_t addr[BLE_GAP_ADDR_LEN]; /**< 48-bit address, LSB format. */ +} ble_gap_addr_t; + + +/**@brief GAP connection parameters. + * + * @note When ble_conn_params_t is received in an event, both min_conn_interval and + * max_conn_interval will be equal to the connection interval set by the central. + * + * @note If both conn_sup_timeout and max_conn_interval are specified, then the following constraint applies: + * conn_sup_timeout * 4 > (1 + slave_latency) * max_conn_interval + * that corresponds to the following Bluetooth Spec requirement: + * The Supervision_Timeout in milliseconds shall be larger than + * (1 + Conn_Latency) * Conn_Interval_Max * 2, where Conn_Interval_Max is given in milliseconds. + */ +typedef struct +{ + uint16_t min_conn_interval; /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t max_conn_interval; /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t slave_latency; /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t conn_sup_timeout; /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/ +} ble_gap_conn_params_t; + + +/**@brief GAP connection security modes. + * + * Security Mode 0 Level 0: No access permissions at all (this level is not defined by the Bluetooth Core specification).\n + * Security Mode 1 Level 1: No security is needed (aka open link).\n + * Security Mode 1 Level 2: Encrypted link required, MITM protection not necessary.\n + * Security Mode 1 Level 3: MITM protected encrypted link required.\n + * Security Mode 1 Level 4: LESC MITM protected encrypted link required.\n + * Security Mode 2 Level 1: Signing or encryption required, MITM protection not necessary.\n + * Security Mode 2 Level 2: MITM protected signing required, unless link is MITM protected encrypted.\n + */ +typedef struct +{ + uint8_t sm : 4; /**< Security Mode (1 or 2), 0 for no permissions at all. */ + uint8_t lv : 4; /**< Level (1, 2, 3 or 4), 0 for no permissions at all. */ + +} ble_gap_conn_sec_mode_t; + + +/**@brief GAP connection security status.*/ +typedef struct +{ + ble_gap_conn_sec_mode_t sec_mode; /**< Currently active security mode for this connection.*/ + uint8_t encr_key_size; /**< Length of currently active encryption key, 7 to 16 octets (only applicable for bonding procedures). */ +} ble_gap_conn_sec_t; + + +/** + * @brief Device name and its properties + * @note If @ref max_len is more than @ref BLE_GAP_DEVNAME_DEFAULT_LEN and vloc is set to @ref BLE_GATTS_VLOC_STACK, the attribute table size must be increased to have room for the longer device name (see @ref ble_gatts_enable_params_t). + */ +typedef struct +{ + ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ + uint8_t vloc:2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ + uint8_t *p_value; /**< Pointer to where the value (device name) is stored or will be stored.*/ + uint16_t current_len; /**< Current length in bytes of the memory pointed to by p_value.*/ + uint16_t max_len; /**< Maximum length in bytes of the memory pointed to by p_value.*/ +} ble_gap_device_name_t; + + +/** + * @brief BLE GAP initialization parameters. + */ +typedef struct +{ + uint8_t periph_conn_count; /**< Number of connections acting as a peripheral */ + uint8_t central_conn_count; /**< Number of connections acting as a central */ + uint8_t central_sec_count; /**< Number of SMP instances for all connections acting as a central. */ + ble_gap_device_name_t const *p_device_name; /**< Pointer to device name instance. If NULL, @ref sd_ble_enable() will set the device name to @ref BLE_GAP_DEVNAME_DEFAULT. */ +} ble_gap_enable_params_t; + + +/**@brief Identity Resolving Key. */ +typedef struct +{ + uint8_t irk[BLE_GAP_SEC_KEY_LEN]; /**< Array containing IRK. */ +} ble_gap_irk_t; + + +/**@brief Channel mask for RF channels used in advertising. */ +typedef struct +{ + uint8_t ch_37_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 37 */ + uint8_t ch_38_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 38 */ + uint8_t ch_39_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 39 */ +} ble_gap_adv_ch_mask_t; + + +/**@brief GAP advertising parameters. */ +typedef struct +{ + uint8_t type; /**< See @ref BLE_GAP_ADV_TYPES. */ + ble_gap_addr_t const *p_peer_addr; /**< Address of a known peer. + - When privacy is enabled and the local device use @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE addresses, the device identity list is searched for a matching + entry. If the local IRK for that device identity is set, the local IRK for that device will be used to generate the advertiser address field in the advertise packet. + - If type is @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this must be set to the targeted initiator. If the initiator is in the device identity list, + the peer IRK for that device will be used to generate the initiator address field in the ADV_DIRECT_IND packet. */ + uint8_t fp; /**< Filter Policy, see @ref BLE_GAP_ADV_FILTER_POLICIES. */ + uint16_t interval; /**< Advertising interval between 0x0020 and 0x4000 in 0.625 ms units (20ms to 10.24s), see @ref BLE_GAP_ADV_INTERVALS. + - If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this parameter must be set to 0 for high duty cycle directed advertising. + - If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, set @ref BLE_GAP_ADV_INTERVAL_MIN <= interval <= @ref BLE_GAP_ADV_INTERVAL_MAX for low duty cycle advertising.*/ + uint16_t timeout; /**< Advertising timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. See also @ref BLE_GAP_ADV_TIMEOUT_VALUES. If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this parameter must be set to 0 for High duty cycle directed advertising. */ + ble_gap_adv_ch_mask_t channel_mask; /**< Advertising channel mask. See @ref ble_gap_adv_ch_mask_t. */ +} ble_gap_adv_params_t; + + +/**@brief GAP scanning parameters. */ +typedef struct +{ + uint8_t active : 1; /**< If 1, perform active scanning (scan requests). */ + uint8_t use_whitelist : 1; /**< If 1, filter advertisers using current active whitelist. */ + uint8_t adv_dir_report : 1; /**< If 1, also report directed advertisements where the initiator field is set to a private resolvable address, + even if the address did not resolve to an entry in the device identity list. A report will be generated + even if the peer is not in the whitelist. */ + uint16_t interval; /**< Scan interval between 0x0004 and 0x4000 in 0.625ms units (2.5ms to 10.24s). */ + uint16_t window; /**< Scan window between 0x0004 and 0x4000 in 0.625ms units (2.5ms to 10.24s). */ + uint16_t timeout; /**< Scan timeout between 0x0001 and 0xFFFF in seconds, 0x0000 disables timeout. */ +} ble_gap_scan_params_t; + + +/**@brief Device Privacy. + * + * The privacy feature provides a way for the device to avoid being tracked over a period of time. + * The privacy feature, when enabled, hides the local device identity and replaces it with a private address + * that is automatically refreshed at a specified interval. + * + * If a device still wants to be recognized by other peers, it needs to share it's Identity Resolving Key (IRK). + * With this key, a device can generate a random private address that can only be recognized by peers in possession of that key, + * and devices can establish connections without revealing their real identities. + * + * @note If the device IRK is updated, the new IRK becomes the one to be distributed in all + * bonding procedures performed after @ref sd_ble_gap_privacy_set returns. + * The IRK distributed during bonding procedure is the device IRK that is active when @ref sd_ble_gap_sec_params_reply is called. + */ +typedef struct +{ + uint8_t privacy_mode; /**< Privacy mode, see @ref BLE_GAP_PRIVACY_MODES. Default is @ref BLE_GAP_PRIVACY_MODE_OFF. */ + uint8_t private_addr_type; /**< The private address type must be either @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE or @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE. */ + uint16_t private_addr_cycle_s; /**< Private address cycle interval in seconds. Providing an address cycle value of 0 will use the default value defined by @ref BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S. */ + ble_gap_irk_t *p_device_irk; /**< When used as input, pointer to IRK structure that will be used as the default IRK. If NULL, the device default IRK will be used. + When used as output, pointer to IRK structure where the current default IRK will be written to. If NULL, this argument is ignored. + By default, the default IRK is used to generate random private resolvable addresses for the local device unless instructed otherwise. */ +} ble_gap_privacy_params_t; + + +/** @brief Keys that can be exchanged during a bonding procedure. */ +typedef struct +{ + uint8_t enc : 1; /**< Long Term Key and Master Identification. */ + uint8_t id : 1; /**< Identity Resolving Key and Identity Address Information. */ + uint8_t sign : 1; /**< Connection Signature Resolving Key. */ + uint8_t link : 1; /**< Derive the Link Key from the LTK. */ +} ble_gap_sec_kdist_t; + + +/**@brief GAP security parameters. */ +typedef struct +{ + uint8_t bond : 1; /**< Perform bonding. */ + uint8_t mitm : 1; /**< Enable Man In The Middle protection. */ + uint8_t lesc : 1; /**< Enable LE Secure Connection pairing. */ + uint8_t keypress : 1; /**< Enable generation of keypress notifications. */ + uint8_t io_caps : 3; /**< IO capabilities, see @ref BLE_GAP_IO_CAPS. */ + uint8_t oob : 1; /**< Out Of Band data available. */ + uint8_t min_key_size; /**< Minimum encryption key size in octets between 7 and 16. If 0 then not applicable in this instance. */ + uint8_t max_key_size; /**< Maximum encryption key size in octets between min_key_size and 16. */ + ble_gap_sec_kdist_t kdist_own; /**< Key distribution bitmap: keys that the local device will distribute. */ + ble_gap_sec_kdist_t kdist_peer; /**< Key distribution bitmap: keys that the remote device will distribute. */ +} ble_gap_sec_params_t; + + +/**@brief GAP Encryption Information. */ +typedef struct +{ + uint8_t ltk[BLE_GAP_SEC_KEY_LEN]; /**< Long Term Key. */ + uint8_t lesc : 1; /**< Key generated using LE Secure Connections. */ + uint8_t auth : 1; /**< Authenticated Key. */ + uint8_t ltk_len : 6; /**< LTK length in octets. */ +} ble_gap_enc_info_t; + + +/**@brief GAP Master Identification. */ +typedef struct +{ + uint16_t ediv; /**< Encrypted Diversifier. */ + uint8_t rand[BLE_GAP_SEC_RAND_LEN]; /**< Random Number. */ +} ble_gap_master_id_t; + + +/**@brief GAP Signing Information. */ +typedef struct +{ + uint8_t csrk[BLE_GAP_SEC_KEY_LEN]; /**< Connection Signature Resolving Key. */ +} ble_gap_sign_info_t; + + +/**@brief GAP LE Secure Connections P-256 Public Key. */ +typedef struct +{ + uint8_t pk[BLE_GAP_LESC_P256_PK_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key. Stored in the standard SMP protocol format: {X,Y} both in little-endian. */ +} ble_gap_lesc_p256_pk_t; + + +/**@brief GAP LE Secure Connections DHKey. */ +typedef struct +{ + uint8_t key[BLE_GAP_LESC_DHKEY_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman Key. Stored in little-endian. */ +} ble_gap_lesc_dhkey_t; + + +/**@brief GAP LE Secure Connections OOB data. */ +typedef struct +{ + ble_gap_addr_t addr; /**< Bluetooth address of the device. */ + uint8_t r[BLE_GAP_SEC_KEY_LEN]; /**< Random Number. */ + uint8_t c[BLE_GAP_SEC_KEY_LEN]; /**< Confirm Value. */ +} ble_gap_lesc_oob_data_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONNECTED. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 + and the address is the device's identity address. */ + uint8_t role; /**< BLE role for this connection, see @ref BLE_GAP_ROLES */ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_connected_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_DISCONNECTED. */ +typedef struct +{ + uint8_t reason; /**< HCI error code, see @ref BLE_HCI_STATUS_CODES. */ +} ble_gap_evt_disconnected_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE. */ +typedef struct +{ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_conn_param_update_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST. */ +typedef struct +{ + ble_gap_sec_params_t peer_params; /**< Initiator Security Parameters. */ +} ble_gap_evt_sec_params_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SEC_INFO_REQUEST. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ + ble_gap_master_id_t master_id; /**< Master Identification for LTK lookup. */ + uint8_t enc_info : 1; /**< If 1, Encryption Information required. */ + uint8_t id_info : 1; /**< If 1, Identity Information required. */ + uint8_t sign_info : 1; /**< If 1, Signing Information required. */ +} ble_gap_evt_sec_info_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_PASSKEY_DISPLAY. */ +typedef struct +{ + uint8_t passkey[BLE_GAP_PASSKEY_LEN]; /**< 6-digit passkey in ASCII ('0'-'9' digits only). */ + uint8_t match_request : 1; /**< If 1 requires the application to report the match using @ref sd_ble_gap_auth_key_reply + with either @ref BLE_GAP_AUTH_KEY_TYPE_NONE if there is no match or + @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY if there is a match. */ +} ble_gap_evt_passkey_display_t; + +/**@brief Event structure for @ref BLE_GAP_EVT_KEY_PRESSED. */ +typedef struct +{ + uint8_t kp_not; /**< Keypress notification type, see @ref BLE_GAP_KP_NOT_TYPES. */ +} ble_gap_evt_key_pressed_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_KEY_REQUEST. */ +typedef struct +{ + uint8_t key_type; /**< See @ref BLE_GAP_AUTH_KEY_TYPES. */ +} ble_gap_evt_auth_key_request_t; + +/**@brief Event structure for @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST. */ +typedef struct +{ + ble_gap_lesc_p256_pk_t *p_pk_peer; /**< LE Secure Connections remote P-256 Public Key. This will point to the application-supplied memory + inside the keyset during the call to @ref sd_ble_gap_sec_params_reply. */ + uint8_t oobd_req :1; /**< LESC OOB data required. A call to @ref sd_ble_gap_lesc_oob_data_set is required to complete the procedure. */ +} ble_gap_evt_lesc_dhkey_request_t; + + +/**@brief Security levels supported. + * @note See Bluetooth Specification Version 4.2 Volume 3, Part C, Chapter 10, Section 10.2.1. +*/ +typedef struct +{ + uint8_t lv1 : 1; /**< If 1: Level 1 is supported. */ + uint8_t lv2 : 1; /**< If 1: Level 2 is supported. */ + uint8_t lv3 : 1; /**< If 1: Level 3 is supported. */ + uint8_t lv4 : 1; /**< If 1: Level 4 is supported. */ +} ble_gap_sec_levels_t; + + +/**@brief Encryption Key. */ +typedef struct +{ + ble_gap_enc_info_t enc_info; /**< Encryption Information. */ + ble_gap_master_id_t master_id; /**< Master Identification. */ +} ble_gap_enc_key_t; + + +/**@brief Identity Key. */ +typedef struct +{ + ble_gap_irk_t id_info; /**< Identity Resolving Key. */ + ble_gap_addr_t id_addr_info; /**< Identity Address. */ +} ble_gap_id_key_t; + + +/**@brief Security Keys. */ +typedef struct +{ + ble_gap_enc_key_t *p_enc_key; /**< Encryption Key, or NULL. */ + ble_gap_id_key_t *p_id_key; /**< Identity Key, or NULL. */ + ble_gap_sign_info_t *p_sign_key; /**< Signing Key, or NULL. */ + ble_gap_lesc_p256_pk_t *p_pk; /**< LE Secure Connections P-256 Public Key. When in debug mode the application must use the value defined + in the Core Bluetooth Specification v4.2 Vol.3, Part H, Section 2.3.5.6.1 */ +} ble_gap_sec_keys_t; + + +/**@brief Security key set for both local and peer keys. */ +typedef struct +{ + ble_gap_sec_keys_t keys_own; /**< Keys distributed by the local device. For LE Secure Connections the encryption key will be generated locally and will always be stored if bonding. */ + ble_gap_sec_keys_t keys_peer; /**< Keys distributed by the remote device. For LE Secure Connections, p_enc_key must always be NULL. */ +} ble_gap_sec_keyset_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_STATUS. */ +typedef struct +{ + uint8_t auth_status; /**< Authentication status, see @ref BLE_GAP_SEC_STATUS. */ + uint8_t error_src : 2; /**< On error, source that caused the failure, see @ref BLE_GAP_SEC_STATUS_SOURCES. */ + uint8_t bonded : 1; /**< Procedure resulted in a bond. */ + ble_gap_sec_levels_t sm1_levels; /**< Levels supported in Security Mode 1. */ + ble_gap_sec_levels_t sm2_levels; /**< Levels supported in Security Mode 2. */ + ble_gap_sec_kdist_t kdist_own; /**< Bitmap stating which keys were exchanged (distributed) by the local device. If bonding with LE Secure Connections, the enc bit will be always set. */ + ble_gap_sec_kdist_t kdist_peer; /**< Bitmap stating which keys were exchanged (distributed) by the remote device. If bonding with LE Secure Connections, the enc bit will never be set. */ +} ble_gap_evt_auth_status_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONN_SEC_UPDATE. */ +typedef struct +{ + ble_gap_conn_sec_t conn_sec; /**< Connection security level. */ +} ble_gap_evt_conn_sec_update_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_TIMEOUT. */ +typedef struct +{ + uint8_t src; /**< Source of timeout event, see @ref BLE_GAP_TIMEOUT_SOURCES. */ +} ble_gap_evt_timeout_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_RSSI_CHANGED. */ +typedef struct +{ + int8_t rssi; /**< Received Signal Strength Indication in dBm. */ +} ble_gap_evt_rssi_changed_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_ADV_REPORT. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 + and the address is the device's identity address. */ + ble_gap_addr_t direct_addr; /**< Set when the scanner is unable to resolve the private resolvable address of the initiator + field of a directed advertisement packet and the scanner has been enabled to report this in @ref ble_gap_scan_params_t::adv_dir_report. */ + int8_t rssi; /**< Received Signal Strength Indication in dBm. */ + uint8_t scan_rsp : 1; /**< If 1, the report corresponds to a scan response and the type field may be ignored. */ + uint8_t type : 2; /**< See @ref BLE_GAP_ADV_TYPES. Only valid if the scan_rsp field is 0. */ + uint8_t dlen : 5; /**< Advertising or scan response data length. */ + uint8_t data[BLE_GAP_ADV_MAX_SIZE]; /**< Advertising or scan response data. */ +} ble_gap_evt_adv_report_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SEC_REQUEST. */ +typedef struct +{ + uint8_t bond : 1; /**< Perform bonding. */ + uint8_t mitm : 1; /**< Man In The Middle protection requested. */ + uint8_t lesc : 1; /**< LE Secure Connections requested. */ + uint8_t keypress : 1; /**< Generation of keypress notifications requested. */ +} ble_gap_evt_sec_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST. */ +typedef struct +{ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_conn_param_update_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SCAN_REQ_REPORT. */ +typedef struct +{ + int8_t rssi; /**< Received Signal Strength Indication in dBm. */ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 + and the address is the device's identity address. */ +} ble_gap_evt_scan_req_report_t; + + +/**@brief GAP event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occurred. */ + union /**< union alternative identified by evt_id in enclosing struct. */ + { + ble_gap_evt_connected_t connected; /**< Connected Event Parameters. */ + ble_gap_evt_disconnected_t disconnected; /**< Disconnected Event Parameters. */ + ble_gap_evt_conn_param_update_t conn_param_update; /**< Connection Parameter Update Parameters. */ + ble_gap_evt_sec_params_request_t sec_params_request; /**< Security Parameters Request Event Parameters. */ + ble_gap_evt_sec_info_request_t sec_info_request; /**< Security Information Request Event Parameters. */ + ble_gap_evt_passkey_display_t passkey_display; /**< Passkey Display Event Parameters. */ + ble_gap_evt_key_pressed_t key_pressed; /**< Key Pressed Event Parameters. */ + ble_gap_evt_auth_key_request_t auth_key_request; /**< Authentication Key Request Event Parameters. */ + ble_gap_evt_lesc_dhkey_request_t lesc_dhkey_request; /**< LE Secure Connections DHKey calculation request. */ + ble_gap_evt_auth_status_t auth_status; /**< Authentication Status Event Parameters. */ + ble_gap_evt_conn_sec_update_t conn_sec_update; /**< Connection Security Update Event Parameters. */ + ble_gap_evt_timeout_t timeout; /**< Timeout Event Parameters. */ + ble_gap_evt_rssi_changed_t rssi_changed; /**< RSSI Event parameters. */ + ble_gap_evt_adv_report_t adv_report; /**< Advertising Report Event Parameters. */ + ble_gap_evt_sec_request_t sec_request; /**< Security Request Event Parameters. */ + ble_gap_evt_conn_param_update_request_t conn_param_update_request; /**< Connection Parameter Update Parameters. */ + ble_gap_evt_scan_req_report_t scan_req_report; /**< Scan Request Report parameters. */ + } params; /**< Event Parameters. */ +} ble_gap_evt_t; + + +/**@brief Channel Map option. + * Used with @ref sd_ble_opt_get to get the current channel map + * or @ref sd_ble_opt_set to set a new channel map. When setting the + * channel map, it applies to all current and future connections. When getting the + * current channel map, it applies to a single connection and the connection handle + * must be supplied. + * + * @note Setting the channel map may take some time, depending on connection parameters. + * The time taken may be different for each connection and the get operation will + * return the previous channel map until the new one has taken effect. + * + * @note After setting the channel map, by spec it can not be set again until at least 1 s has passed. + * See Bluetooth Specification Version 4.1 Volume 2, Part E, Section 7.3.46. + * + * @retval ::NRF_SUCCESS Get or set successful. + * @retval ::NRF_ERROR_BUSY Channel map was set again before enough time had passed. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied for get. + * @retval ::NRF_ERROR_NOT_SUPPORTED Returned by sd_ble_opt_set in peripheral-only SoftDevices. + * + */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle (only applicable for get) */ + uint8_t ch_map[5]; /**< Channel Map (37-bit). */ +} ble_gap_opt_ch_map_t; + + +/**@brief Local connection latency option. + * + * Local connection latency is a feature which enables the slave to improve + * current consumption by ignoring the slave latency set by the peer. The + * local connection latency can only be set to a multiple of the slave latency, + * and cannot be longer than half of the supervision timeout. + * + * Used with @ref sd_ble_opt_set to set the local connection latency. The + * @ref sd_ble_opt_get is not supported for this option, but the actual + * local connection latency (unless set to NULL) is set as a return parameter + * when setting the option. + * + * @note The latency set will be truncated down to the closest slave latency event + * multiple, or the nearest multiple before half of the supervision timeout. + * + * @note The local connection latency is disabled by default, and needs to be enabled for new + * connections and whenever the connection is updated. + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. + */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle */ + uint16_t requested_latency; /**< Requested local connection latency. */ + uint16_t * p_actual_latency; /**< Pointer to storage for the actual local connection latency (can be set to NULL to skip return value). */ +} ble_gap_opt_local_conn_latency_t; + + +/**@brief Passkey Option. + * + * Structure containing the passkey to be used during pairing. This can be used with @ref + * sd_ble_opt_set to make the SoftDevice use a pre-programmed passkey for authentication + * instead of generating a random one. + * + * @note Repeated pairing attempts using the same pre-programmed passkey makes pairing vulnerable to MITM attacks. + * + * @note @ref sd_ble_opt_get is not supported for this option. + * + */ +typedef struct +{ + uint8_t * p_passkey; /**< Pointer to 6-digit ASCII string (digit 0..9 only, no NULL termination) passkey to be used during pairing. If this is NULL, the SoftDevice will generate a random passkey if required.*/ +} ble_gap_opt_passkey_t; + + +/**@brief Scan request report option. + * + * This can be used with @ref sd_ble_opt_set to make the SoftDevice send + * @ref BLE_GAP_EVT_SCAN_REQ_REPORT events. + * + * @note Due to the limited space reserved for scan request report events, + * not all received scan requests will be reported. + * + * @note If whitelisting is used, only whitelisted requests are reported. + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_STATE When advertising is ongoing while the option is set. + */ +typedef struct +{ + uint8_t enable : 1; /**< Enable scan request reports. */ +} ble_gap_opt_scan_req_report_t; + + +/**@brief Compatibility mode option. + * + * This can be used with @ref sd_ble_opt_set to enable and disable + * compatibility modes. Compatibility modes are disabled by default. + * + * @note Compatibility mode 1 enables interoperability with devices that do not support + * a value of 0 for the WinOffset parameter in the Link Layer CONNECT_REQ packet. + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_STATE When connection creation is ongoing while mode 1 is set. + */ +typedef struct +{ + uint8_t mode_1_enable : 1; /**< Enable compatibility mode 1.*/ +} ble_gap_opt_compat_mode_t; + +/**@brief Data length extension option. + * + * This can be used with @ref sd_ble_opt_set to enable longer data packets. + * + * @note An rxtx_max_pdu_payload_size of 0 will result in the default minimum payload size of 27. + * @note Not supported by SoftDevices for nRF51 Series devices. + * @note The parameters for a connection are applied when a connection complete + * event is generated for the host. + * + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_PARAM If the payload size is not 0 or a valid link layer PDU payload size. + * @retval ::NRF_ERROR_NOT_SUPPORTED If called on a SoftDevice designed for nRF51 (e.g. s130). + */ +typedef struct +{ + uint8_t rxtx_max_pdu_payload_size; /**< Max PDU payload size (in octets). */ +} ble_gap_opt_ext_len_t; + + + +/**@brief Authenticated payload timeout option. + * + * This can be used with @ref sd_ble_opt_set to change the Authenticated payload timeout to a value other than the default of 8 minutes. + * + * @note The authenticated payload timeout event ::BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD will be generated + * if auth_payload_timeout time has elapsed without receiving a packet with a valid MIC on an encrypted + * link. + * + * @note The LE ping procedure will be initiated before the timer expires to give the peer a chance + * to reset the timer. In addition the stack will try to prioritize running of LE ping over other + * activities to increase chances of finishing LE ping before timer expires. To avoid side-effects + * on other activities, it is recommended to use high timeout values. + * Recommended timeout > 2*(connInterval * (6 + connSlaveLatency)). + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. auth_payload_timeout was outside of allowed range. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. + */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle */ + uint16_t auth_payload_timeout; /**< Requested timeout in 10 ms unit. Maximum is 48 000 (=480 000 ms =8 min). Minimum is 1 (=10ms). */ +} ble_gap_opt_auth_payload_timeout_t; + + +/**@brief Option structure for GAP options. */ +typedef union +{ + ble_gap_opt_ch_map_t ch_map; /**< Parameters for the Channel Map option. */ + ble_gap_opt_local_conn_latency_t local_conn_latency; /**< Parameters for the Local connection latency option */ + ble_gap_opt_passkey_t passkey; /**< Parameters for the Passkey option.*/ + ble_gap_opt_scan_req_report_t scan_req_report; /**< Parameters for the scan request report option.*/ + ble_gap_opt_compat_mode_t compat_mode; /**< Parameters for the compatibility mode option.*/ + ble_gap_opt_ext_len_t ext_len; /**< Parameters for the extended length option. */ + ble_gap_opt_auth_payload_timeout_t auth_payload_timeout; /**< Parameters for the authenticated payload timeout option.*/ +} ble_gap_opt_t; +/**@} */ + + +/**@addtogroup BLE_GAP_FUNCTIONS Functions + * @{ */ + +/**@brief Set the local Bluetooth identity address. + * + * The local Bluetooth identity address is the address that identifies this device to other peers. + * The address type must be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. + * The identity address cannot be changed while roles are running. + * + * @note This address will be distributed to the peer during bonding. + * If the address changes, the address stored in the peer device will not be valid and the ability to + * reconnect using the old address will be lost. + * + * @note By default the SoftDevice will set an address of type @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC upon being + * enabled. The address is a random number populated during the IC manufacturing process and remains unchanged + * for the lifetime of each IC. + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @endmscs + * + * @param[in] p_addr Pointer to address structure. + * + * @retval ::NRF_SUCCESS Address successfully set. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_INVALID_STATE The identity address cannot be changed while the roles are running. + */ +SVCALL(SD_BLE_GAP_ADDR_SET, uint32_t, sd_ble_gap_addr_set(ble_gap_addr_t const *p_addr)); + + +/**@brief Get local Bluetooth identity address. + * + * @note This will always return the identity address irrespective of the privacy settings, + * i.e. the address type will always be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. + * + * @param[out] p_addr Pointer to address structure to be filled in. + * + * @retval ::NRF_SUCCESS Address successfully retrieved. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. + */ +SVCALL(SD_BLE_GAP_ADDR_GET, uint32_t, sd_ble_gap_addr_get(ble_gap_addr_t *p_addr)); + + +/**@brief Set the active whitelist in the SoftDevice. + * + * @note Only one whitelist can be used at a time and the whitelist is shared between the BLE roles. + * The whitelist cannot be set if a BLE role is using the whitelist. + * + * @note If an address is resolved using the information in the device identity list, then the whitelist + * filter policy applies to the peer identity address and not the resolvable address sent on air. + * + * @mscs + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_PRIVATE_SCAN_MSC} + * @endmscs + * + * @param[in] pp_wl_addrs Pointer to a whitelist of peer addresses, if NULL the whitelist will be cleared. + * @param[in] len Length of the whitelist, maximum @ref BLE_GAP_WHITELIST_ADDR_MAX_COUNT. + * + * @retval ::NRF_SUCCESS The whitelist is successfully set/cleared. + * @retval ::NRF_ERROR_INVALID_ADDR The whitelist (or one of its entries) provided is invalid. + * @retval ::BLE_ERROR_GAP_WHITELIST_IN_USE The whitelist is in use by a BLE role and cannot be set or cleared. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. + * @retval ::NRF_ERROR_DATA_SIZE The given whitelist size is invalid (zero or too large); this can only return when + * pp_wl_addrs is not NULL. + */ +SVCALL(SD_BLE_GAP_WHITELIST_SET, uint32_t, sd_ble_gap_whitelist_set(ble_gap_addr_t const * const * pp_wl_addrs, uint8_t len)); + + +/**@brief Set device identity list. + * + * @note Only one device identity list can be used at a time and the list is shared between the BLE roles. + * The device identity list cannot be set if a BLE role is using the list. + * + * @param[in] pp_id_keys Pointer to an array of peer identity addresses and peer IRKs, if NULL the device identity list will be cleared. + * @param[in] pp_local_irks Pointer to an array of local IRKs. Each entry in the array maps to the entry in pp_id_keys at the same index. + * To fill in the list with the currently set device IRK for all peers, set to NULL. + * @param[in] len Length of the device identity list, maximum @ref BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT. + * + * @mscs + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_PRIVATE_SCAN_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_PRIV_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS The device identity list successfully set/cleared. + * @retval ::NRF_ERROR_INVALID_ADDR The device identity list (or one of its entries) provided is invalid. + This code may be returned if the local IRK list also has an invalid entry. + * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE The device identity list is in use and cannot be set or cleared. + * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE The device identity list contains multiple entries with the same identity address. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. + * @retval ::NRF_ERROR_DATA_SIZE The given device identity list size invalid (zero or too large); this can + * only return when pp_id_keys is not NULL. + */ +SVCALL(SD_BLE_GAP_DEVICE_IDENTITIES_SET, uint32_t, sd_ble_gap_device_identities_set(ble_gap_id_key_t const * const * pp_id_keys, ble_gap_irk_t const * const * pp_local_irks, uint8_t len)); + + +/**@brief Set privacy settings. + * + * @note Privacy settings cannot be set while BLE roles are running. + * + * @param[in] p_privacy_params Privacy settings. + * + * @mscs + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. + * @retval ::NRF_ERROR_INVALID_ADDR The pointer to privacy settings is NULL or invalid. + Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. + * @retval ::NRF_ERROR_INVALID_PARAM Out of range parameters are provided. + * @retval ::NRF_ERROR_INVALID_STATE Privacy settings cannot be changed while BLE roles using privacy are enabled. + */ +SVCALL(SD_BLE_GAP_PRIVACY_SET, uint32_t, sd_ble_gap_privacy_set(ble_gap_privacy_params_t const *p_privacy_params)); + + +/**@brief Get privacy settings. + * + * @note The privacy settings returned include the current device irk as well. + * + * @param[in] p_privacy_params Privacy settings. + * + * @retval ::NRF_SUCCESS Privacy settings read. + * @retval ::NRF_ERROR_INVALID_ADDR The pointer given for returning the privacy settings may be NULL or invalid. + Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. + */ +SVCALL(SD_BLE_GAP_PRIVACY_GET, uint32_t, sd_ble_gap_privacy_get(ble_gap_privacy_params_t *p_privacy_params)); + + +/**@brief Set, clear or update advertising and scan response data. + * + * @note The format of the advertising data will be checked by this call to ensure interoperability. + * Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and + * duplicating the local name in the advertising data and scan response data. + * + * @note To clear the advertising data and set it to a 0-length packet, simply provide a valid pointer (p_data/p_sr_data) with its corresponding + * length (dlen/srdlen) set to 0. + * + * @note The call will fail if p_data and p_sr_data are both NULL since this would have no effect. + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @param[in] p_data Raw data to be placed in advertising packet. If NULL, no changes are made to the current advertising packet data. + * @param[in] dlen Data length for p_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_data is NULL, can be 0 if p_data is not NULL. + * @param[in] p_sr_data Raw data to be placed in scan response packet. If NULL, no changes are made to the current scan response packet data. + * @param[in] srdlen Data length for p_sr_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_sr_data is NULL, can be 0 if p_data is not NULL. + * + * @retval ::NRF_SUCCESS Advertising data successfully updated or cleared. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, both p_data and p_sr_data cannot be NULL. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_FLAGS Invalid combination of advertising flags supplied. + * @retval ::NRF_ERROR_INVALID_DATA Invalid data type(s) supplied, check the advertising data format specification. + * @retval ::NRF_ERROR_INVALID_LENGTH Invalid data length(s) supplied. + * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported data type. + * @retval ::BLE_ERROR_GAP_UUID_LIST_MISMATCH Invalid UUID list supplied. + */ +SVCALL(SD_BLE_GAP_ADV_DATA_SET, uint32_t, sd_ble_gap_adv_data_set(uint8_t const *p_data, uint8_t dlen, uint8_t const *p_sr_data, uint8_t srdlen)); + + +/**@brief Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). + * + * @note An application can start an advertising procedure for broadcasting purposes while a connection + * is active. After a @ref BLE_GAP_EVT_CONNECTED event is received, this function may therefore + * be called to start a broadcast advertising procedure. The advertising procedure + * cannot however be connectable (it must be of type @ref BLE_GAP_ADV_TYPE_ADV_SCAN_IND or + * @ref BLE_GAP_ADV_TYPE_ADV_NONCONN_IND). @note Only one advertiser may be active at any time. + * + * @events + * @event{@ref BLE_GAP_EVT_CONNECTED, Generated after connection has been established through connectable advertising.} + * @event{@ref BLE_GAP_EVT_TIMEOUT, Advertisement has timed out.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @param[in] p_adv_params Pointer to advertising parameters structure. + * + * @retval ::NRF_SUCCESS The BLE stack has started advertising. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached; connectable advertiser cannot be started. + * @retval ::NRF_ERROR_NO_MEM The configured memory pools (see @ref ble_conn_bw_counts_t) are not large enough for the + * bandwidth selected for this connection. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check the accepted ranges and limits. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Bluetooth address supplied. + * @retval ::BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST Discoverable mode and whitelist incompatible. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. + * Stop one or more currently active roles (Central, Peripheral or Observer) and try again + */ +SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(ble_gap_adv_params_t const *p_adv_params)); + + +/**@brief Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS The BLE stack has stopped advertising. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation (most probably not in advertising state). + */ +SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(void)); + + +/**@brief Update connection parameters. + * + * @details In the central role this will initiate a Link Layer connection parameter update procedure, + * otherwise in the peripheral role, this will send the corresponding L2CAP request and wait for + * the central to perform the procedure. In both cases, and regardless of success or failure, the application + * will be informed of the result with a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE event. + * + * @details This function can be used as a central both to reply to a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST or to start the procedure unrequested. + * + * @events + * @event{@ref BLE_GAP_EVT_CONN_PARAM_UPDATE, Result of the connection parameter update procedure.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CPU_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} + * @mmsc{@ref BLE_GAP_MULTILINK_CPU_MSC} + * @mmsc{@ref BLE_GAP_MULTILINK_CTRL_PROC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CPU_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_conn_params Pointer to desired connection parameters. If NULL is provided on a peripheral role, + * the parameters in the PPCP characteristic of the GAP service will be used instead. + * If NULL is provided on a central role and in response to a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST, the peripheral request will be rejected + * + * @retval ::NRF_SUCCESS The Connection Update procedure has been started successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, process pending events and wait for pending procedures to complete and retry. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const *p_conn_params)); + + +/**@brief Disconnect (GAP Link Termination). + * + * @details This call initiates the disconnection procedure, and its completion will be communicated to the application + * with a @ref BLE_GAP_EVT_DISCONNECTED event. + * + * @events + * @event{@ref BLE_GAP_EVT_DISCONNECTED, Generated when disconnection procedure is complete.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CONN_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] hci_status_code HCI status code, see @ref BLE_HCI_STATUS_CODES (accepted values are @ref BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION and @ref BLE_HCI_CONN_INTERVAL_UNACCEPTABLE). + * + * @retval ::NRF_SUCCESS The disconnection procedure has been started successfully. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation (disconnection is already in progress). + */ +SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code)); + + +/**@brief Set the radio's transmit power. + * + * @param[in] tx_power Radio transmit power in dBm (accepted values are -40, -30, -20, -16, -12, -8, -4, 0, 3, and 4 dBm). + * + * @note The +3dBm setting is only available on nRF52 series ICs. + * @note The -30dBm setting is only available on nRF51 series ICs. + * @note The -40dBm setting is only available on nRF52 series ICs. + * + * @retval ::NRF_SUCCESS Successfully changed the transmit power. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(int8_t tx_power)); + + +/**@brief Set GAP Appearance value. + * + * @param[in] appearance Appearance (16-bit), see @ref BLE_APPEARANCES. + * + * @retval ::NRF_SUCCESS Appearance value set successfully. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance)); + + +/**@brief Get GAP Appearance value. + * + * @param[out] p_appearance Pointer to appearance (16-bit) to be filled in, see @ref BLE_APPEARANCES. + * + * @retval ::NRF_SUCCESS Appearance value retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t *p_appearance)); + + +/**@brief Set GAP Peripheral Preferred Connection Parameters. + * + * @param[in] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure with the desired parameters. + * + * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters set successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const *p_conn_params)); + + +/**@brief Get GAP Peripheral Preferred Connection Parameters. + * + * @param[out] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure where the parameters will be stored. + * + * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t *p_conn_params)); + + +/**@brief Set GAP device name. + * + * @param[in] p_write_perm Write permissions for the Device Name characteristic, see @ref ble_gap_conn_sec_mode_t. + * @param[in] p_dev_name Pointer to a UTF-8 encoded, non NULL-terminated string. + * @param[in] len Length of the UTF-8, non NULL-terminated string pointed to by p_dev_name in octets (must be smaller or equal than @ref BLE_GAP_DEVNAME_MAX_LEN). + * + * @note If the device name is located in application flash memory (see @ref ble_gap_device_name_t), it cannot be changed. Then @ref NRF_ERROR_FORBIDDEN will be returned. + * + * @retval ::NRF_SUCCESS GAP device name and permissions set successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + * @retval ::NRF_ERROR_FORBIDDEN Device name is not writable. + */ +SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len)); + + +/**@brief Get GAP device name. + * + * @note If the device name is longer than the size of the supplied buffer, + * p_len will return the complete device name length, + * and not the number of bytes actually returned in p_dev_name. + * The application may use this information to allocate a suitable buffer size. + * + * @param[out] p_dev_name Pointer to an empty buffer where the UTF-8 non NULL-terminated string will be placed. Set to NULL to obtain the complete device name length. + * @param[in,out] p_len Length of the buffer pointed by p_dev_name, complete device name length on output. + * + * @retval ::NRF_SUCCESS GAP device name retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + */ +SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t *p_dev_name, uint16_t *p_len)); + + +/**@brief Initiate the GAP Authentication procedure. + * + * @details In the central role, this function will send an SMP Pairing Request (or an SMP Pairing Failed if rejected), + * otherwise in the peripheral role, an SMP Security Request will be sent. + * + * @events + * @event{Depending on the security parameters set and the packet exchanges with the peer\, the following events may be generated:} + * @event{@ref BLE_GAP_EVT_SEC_PARAMS_REQUEST} + * @event{@ref BLE_GAP_EVT_SEC_INFO_REQUEST} + * @event{@ref BLE_GAP_EVT_PASSKEY_DISPLAY} + * @event{@ref BLE_GAP_EVT_KEY_PRESSED} + * @event{@ref BLE_GAP_EVT_AUTH_KEY_REQUEST} + * @event{@ref BLE_GAP_EVT_LESC_DHKEY_REQUEST} + * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE} + * @event{@ref BLE_GAP_EVT_AUTH_STATUS} + * @event{@ref BLE_GAP_EVT_TIMEOUT} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_SEC_REQ_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_SEC_REQ_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_sec_params Pointer to the @ref ble_gap_sec_params_t structure with the security parameters to be used during the pairing or bonding procedure. + * In the peripheral role, only the bond, mitm, lesc and keypress fields of this structure are used. + * In the central role, this pointer may be NULL to reject a Security Request. + * + * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_NO_MEM The maximum number of authentication procedures that can run in parallel for the given role is reached. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. + * @retval ::NRF_ERROR_TIMEOUT A SMP timeout has occurred, and further SMP operations on this link is prohibited. + */ +SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const *p_sec_params)); + + +/**@brief Reply with GAP security parameters. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_PERIPH_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_CONFIRM_FAIL_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_KS_TOO_SMALL_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_APP_ERROR_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_REMOTE_PAIRING_FAIL_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_TIMEOUT_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] sec_status Security status, see @ref BLE_GAP_SEC_STATUS. + * @param[in] p_sec_params Pointer to a @ref ble_gap_sec_params_t security parameters structure. In the central role this must be set to NULL, as the parameters have + * already been provided during a previous call to @ref sd_ble_gap_authenticate. + * @param[in,out] p_sec_keyset Pointer to a @ref ble_gap_sec_keyset_t security keyset structure. Any keys generated and/or distributed as a result of the ongoing security procedure + * will be stored into the memory referenced by the pointers inside this structure. The keys will be stored and available to the application + * upon reception of a @ref BLE_GAP_EVT_AUTH_STATUS event. + * Note that the SoftDevice expects the application to provide memory for storing the + * peer's keys. So it must be ensured that the relevant pointers inside this structure are not NULL. The pointers to the local key + * can, however, be NULL, in which case, the local key data will not be available to the application upon reception of the + * @ref BLE_GAP_EVT_AUTH_STATUS event. + * + * @retval ::NRF_SUCCESS Successfully accepted security parameter from the application. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. + */ +SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const *p_sec_params, ble_gap_sec_keyset_t const *p_sec_keyset)); + + +/**@brief Reply with an authentication key. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_AUTH_KEY_REQUEST or a @ref BLE_GAP_EVT_PASSKEY_DISPLAY, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] key_type See @ref BLE_GAP_AUTH_KEY_TYPES. + * @param[in] p_key If key type is @ref BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL. + * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination) + * or NULL when confirming LE Secure Connections Numeric Comparison. + * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in Little Endian format. + * + * @retval ::NRF_SUCCESS Authentication key successfully set. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const *p_key)); + +/**@brief Reply with an LE Secure connections DHKey. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_dhkey LE Secure Connections DHKey. + * + * @retval ::NRF_SUCCESS DHKey successfully set. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_LESC_DHKEY_REPLY, uint32_t, sd_ble_gap_lesc_dhkey_reply(uint16_t conn_handle, ble_gap_lesc_dhkey_t const *p_dhkey)); + +/**@brief Notify the peer of a local keypress. + * + * @details This function can only be used when an authentication procedure using LE Secure Connection is in progress. Calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] kp_not See @ref BLE_GAP_KP_NOT_TYPES. + * + * @retval ::NRF_SUCCESS Keypress notification successfully queued for transmission. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either not entering a passkey or keypresses have not been enabled by both peers. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_BUSY The BLE stack is busy. Retry at later time. + */ +SVCALL(SD_BLE_GAP_KEYPRESS_NOTIFY, uint32_t, sd_ble_gap_keypress_notify(uint16_t conn_handle, uint8_t kp_not)); + +/**@brief Generate a set of OOB data to send to a peer out of band. + * + * @note The @ref ble_gap_addr_t included in the OOB data returned will be the currently active one (or, if a connection has already been established, + * the one used during connection setup). The application may manually overwrite it with an updated value. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. Can be BLE_CONN_HANDLE_INVALID if a BLE connection has not been established yet. + * @param[in] p_pk_own LE Secure Connections local P-256 Public Key. + * @param[out] p_oobd_own The OOB data to be sent out of band to a peer. + * + * @retval ::NRF_SUCCESS OOB data successfully generated. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_LESC_OOB_DATA_GET, uint32_t, sd_ble_gap_lesc_oob_data_get(uint16_t conn_handle, ble_gap_lesc_p256_pk_t const *p_pk_own, ble_gap_lesc_oob_data_t *p_oobd_own)); + +/**@brief Provide the OOB data sent/received out of band. + * + * @note At least one of the 2 pointers provided must be different from NULL. + * @note An authentication procedure with OOB selected as an algorithm must be in progress when calling this function. + * @note A @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST event with the oobd_req set to 1 must have been received prior to calling this function. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_oobd_own The OOB data sent out of band to a peer or NULL if none sent. + * @param[in] p_oobd_peer The OOB data received out of band from a peer or NULL if none received. + * + * @retval ::NRF_SUCCESS OOB data accepted. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_LESC_OOB_DATA_SET, uint32_t, sd_ble_gap_lesc_oob_data_set(uint16_t conn_handle, ble_gap_lesc_oob_data_t const *p_oobd_own, ble_gap_lesc_oob_data_t const *p_oobd_peer)); + +/**@brief Initiate GAP Encryption procedure. + * + * @details In the central role, this function will initiate the encryption procedure using the encryption information provided. + * + * @events + * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE, The connection security has been updated.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_MSC} + * @mmsc{@ref BLE_GAP_MULTILINK_CTRL_PROC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_SEC_REQ_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_master_id Pointer to a @ref ble_gap_master_id_t master identification structure. + * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. + * + * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::BLE_ERROR_INVALID_ROLE Operation is not supported in the Peripheral role. + * @retval ::NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, wait for pending procedures to complete and retry. + */ +SVCALL(SD_BLE_GAP_ENCRYPT, uint32_t, sd_ble_gap_encrypt(uint16_t conn_handle, ble_gap_master_id_t const *p_master_id, ble_gap_enc_info_t const *p_enc_info)); + + +/**@brief Reply with GAP security information. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * @note Data signing is not yet supported, and p_sign_info must therefore be NULL. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_ENC_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available. + * @param[in] p_id_info Pointer to a @ref ble_gap_irk_t identity information structure. May be NULL to signal none is available. + * @param[in] p_sign_info Pointer to a @ref ble_gap_sign_info_t signing information structure. May be NULL to signal none is available. + * + * @retval ::NRF_SUCCESS Successfully accepted security information. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const *p_enc_info, ble_gap_irk_t const *p_id_info, ble_gap_sign_info_t const *p_sign_info)); + + +/**@brief Get the current connection security. + * + * @param[in] conn_handle Connection handle. + * @param[out] p_conn_sec Pointer to a @ref ble_gap_conn_sec_t structure to be filled in. + * + * @retval ::NRF_SUCCESS Current connection security successfully retrieved. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t *p_conn_sec)); + + +/**@brief Start reporting the received signal strength to the application. + * + * A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called. + * + * @events + * @event{@ref BLE_GAP_EVT_RSSI_CHANGED, New RSSI data available. How often the event is generated is + dependent on the settings of the threshold_dbm + and skip_count input parameters.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} + * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] threshold_dbm Minimum change in dBm before triggering the @ref BLE_GAP_EVT_RSSI_CHANGED event. Events are disabled if threshold_dbm equals @ref BLE_GAP_RSSI_THRESHOLD_INVALID. + * @param[in] skip_count Number of RSSI samples with a change of threshold_dbm or more before sending a new @ref BLE_GAP_EVT_RSSI_CHANGED event. + * + * @retval ::NRF_SUCCESS Successfully activated RSSI reporting. + * @retval ::NRF_ERROR_INVALID_STATE Disconnection in progress. Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle, uint8_t threshold_dbm, uint8_t skip_count)); + + +/**@brief Stop reporting the received signal strength. + * + * @note An RSSI change detected before the call but not yet received by the application + * may be reported after @ref sd_ble_gap_rssi_stop has been called. + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} + * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * + * @retval ::NRF_SUCCESS Successfully deactivated RSSI reporting. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle)); + + +/**@brief Get the received signal strength for the last connection event. + * + * @ref sd_ble_gap_rssi_start must be called to start reporting RSSI before using this function. @ref NRF_ERROR_NOT_FOUND + * will be returned until RSSI was sampled for the first time after calling @ref sd_ble_gap_rssi_start. + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[out] p_rssi Pointer to the location where the RSSI measurement shall be stored. + * + * @retval ::NRF_SUCCESS Successfully read the RSSI. + * @retval ::NRF_ERROR_NOT_FOUND No sample is available. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is not ongoing, or disconnection in progress. + */ +SVCALL(SD_BLE_GAP_RSSI_GET, uint32_t, sd_ble_gap_rssi_get(uint16_t conn_handle, int8_t *p_rssi)); + + +/**@brief Start scanning (GAP Discovery procedure, Observer Procedure). + * + * + * @events + * @event{@ref BLE_GAP_EVT_ADV_REPORT, An advertising or scan response packet has been received.} + * @event{@ref BLE_GAP_EVT_TIMEOUT, Scanner has timed out.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_SCAN_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @param[in] p_scan_params Pointer to scan parameters structure. + * + * @retval ::NRF_SUCCESS Successfully initiated scanning procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. + * Stop one or more currently active roles (Central, Peripheral or Broadcaster) and try again + */ +SVCALL(SD_BLE_GAP_SCAN_START, uint32_t, sd_ble_gap_scan_start(ble_gap_scan_params_t const *p_scan_params)); + + +/**@brief Stop scanning (GAP Discovery procedure, Observer Procedure). + * + * @mscs + * @mmsc{@ref BLE_GAP_SCAN_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Successfully stopped scanning procedure. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation (most probably not in scanning state). + */ +SVCALL(SD_BLE_GAP_SCAN_STOP, uint32_t, sd_ble_gap_scan_stop(void)); + + +/**@brief Create a connection (GAP Link Establishment). + * + * @note If a scanning procedure is currently in progress it will be automatically stopped when calling this function. + * + * @mscs + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_PRIV_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_MSC} + * @endmscs + * + * @param[in] p_peer_addr Pointer to peer address. If the use_whitelist bit is set in @ref ble_gap_scan_params_t, then this is ignored. + * If @ref ble_gap_addr_t::addr_id_peer is set then p_peer_addr must be present in the device identity list + * see @ref sd_ble_gap_device_identities_set. + * @param[in] p_scan_params Pointer to scan parameters structure. + * @param[in] p_conn_params Pointer to desired connection parameters. + * + * @retval ::NRF_SUCCESS Successfully initiated connection procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid parameter(s) pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + - Invalid parameter(s) in p_scan_params or p_conn_params. + - Use of whitelist requested but whitelist has not been set, see @ref sd_ble_gap_whitelist_set. + - Peer address was not present in the device identity list, see @ref sd_ble_gap_device_identities_set. + * @retval ::NRF_ERROR_INVALID_STATE The SoftDevice is in an invalid state to perform this operation. This may be due to an + * existing locally initiated connect procedure, which must complete before initiating again. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Peer address. + * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached. + * @retval ::NRF_ERROR_NO_MEM The configured memory pool (see @ref ble_conn_bw_counts_t) is not large enough for the + * bandwidth selected for this connection. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. If another connection is being established + * wait for the corresponding @ref BLE_GAP_EVT_CONNECTED event before calling again. + * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. + * Stop one or more currently active roles (Central, Peripheral or Broadcaster) and try again + */ +SVCALL(SD_BLE_GAP_CONNECT, uint32_t, sd_ble_gap_connect(ble_gap_addr_t const *p_peer_addr, ble_gap_scan_params_t const *p_scan_params, ble_gap_conn_params_t const *p_conn_params)); + + +/**@brief Cancel a connection establishment. + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Successfully cancelled an ongoing connection procedure. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + */ +SVCALL(SD_BLE_GAP_CONNECT_CANCEL, uint32_t, sd_ble_gap_connect_cancel(void)); + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // BLE_GAP_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gatt.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gatt.h new file mode 100644 index 0000000..42d6cb6 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gatt.h @@ -0,0 +1,220 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_GATT Generic Attribute Profile (GATT) Common + @{ + @brief Common definitions and prototypes for the GATT interfaces. + */ + +#ifndef BLE_GATT_H__ +#define BLE_GATT_H__ + +#include "ble_types.h" +#include "ble_ranges.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup BLE_GATT_DEFINES Defines + * @{ */ + +/** @brief Default MTU size, in bytes. */ +#define GATT_MTU_SIZE_DEFAULT 23 + +/**@brief Invalid Attribute Handle. */ +#define BLE_GATT_HANDLE_INVALID 0x0000 + +/**@brief First Attribute Handle. */ +#define BLE_GATT_HANDLE_START 0x0001 + +/**@brief Last Attribute Handle. */ +#define BLE_GATT_HANDLE_END 0xFFFF + +/** @defgroup BLE_GATT_TIMEOUT_SOURCES GATT Timeout sources + * @{ */ +#define BLE_GATT_TIMEOUT_SRC_PROTOCOL 0x00 /**< ATT Protocol timeout. */ +/** @} */ + +/** @defgroup BLE_GATT_WRITE_OPS GATT Write operations + * @{ */ +#define BLE_GATT_OP_INVALID 0x00 /**< Invalid Operation. */ +#define BLE_GATT_OP_WRITE_REQ 0x01 /**< Write Request. */ +#define BLE_GATT_OP_WRITE_CMD 0x02 /**< Write Command. */ +#define BLE_GATT_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ +#define BLE_GATT_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ +#define BLE_GATT_OP_EXEC_WRITE_REQ 0x05 /**< Execute Write Request. */ +/** @} */ + +/** @defgroup BLE_GATT_EXEC_WRITE_FLAGS GATT Execute Write flags + * @{ */ +#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL 0x00 /**< Cancel prepared write. */ +#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE 0x01 /**< Execute prepared write. */ +/** @} */ + +/** @defgroup BLE_GATT_HVX_TYPES GATT Handle Value operations + * @{ */ +#define BLE_GATT_HVX_INVALID 0x00 /**< Invalid Operation. */ +#define BLE_GATT_HVX_NOTIFICATION 0x01 /**< Handle Value Notification. */ +#define BLE_GATT_HVX_INDICATION 0x02 /**< Handle Value Indication. */ +/** @} */ + +/** @defgroup BLE_GATT_STATUS_CODES GATT Status Codes + * @{ */ +#define BLE_GATT_STATUS_SUCCESS 0x0000 /**< Success. */ +#define BLE_GATT_STATUS_UNKNOWN 0x0001 /**< Unknown or not applicable status. */ +#define BLE_GATT_STATUS_ATTERR_INVALID 0x0100 /**< ATT Error: Invalid Error Code. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_HANDLE 0x0101 /**< ATT Error: Invalid Attribute Handle. */ +#define BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED 0x0102 /**< ATT Error: Read not permitted. */ +#define BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED 0x0103 /**< ATT Error: Write not permitted. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_PDU 0x0104 /**< ATT Error: Used in ATT as Invalid PDU. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION 0x0105 /**< ATT Error: Authenticated link required. */ +#define BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED 0x0106 /**< ATT Error: Used in ATT as Request Not Supported. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_OFFSET 0x0107 /**< ATT Error: Offset specified was past the end of the attribute. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION 0x0108 /**< ATT Error: Used in ATT as Insufficient Authorisation. */ +#define BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL 0x0109 /**< ATT Error: Used in ATT as Prepare Queue Full. */ +#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND 0x010A /**< ATT Error: Used in ATT as Attribute not found. */ +#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG 0x010B /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE 0x010C /**< ATT Error: Encryption key size used is insufficient. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH 0x010D /**< ATT Error: Invalid value size. */ +#define BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR 0x010E /**< ATT Error: Very unlikely error. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION 0x010F /**< ATT Error: Encrypted link required. */ +#define BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE 0x0110 /**< ATT Error: Attribute type is not a supported grouping attribute. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES 0x0111 /**< ATT Error: Encrypted link required. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN 0x0112 /**< ATT Error: Reserved for Future Use range #1 begin. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END 0x017F /**< ATT Error: Reserved for Future Use range #1 end. */ +#define BLE_GATT_STATUS_ATTERR_APP_BEGIN 0x0180 /**< ATT Error: Application range begin. */ +#define BLE_GATT_STATUS_ATTERR_APP_END 0x019F /**< ATT Error: Application range end. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN 0x01A0 /**< ATT Error: Reserved for Future Use range #2 begin. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END 0x01DF /**< ATT Error: Reserved for Future Use range #2 end. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN 0x01E0 /**< ATT Error: Reserved for Future Use range #3 begin. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END 0x01FC /**< ATT Error: Reserved for Future Use range #3 end. */ +#define BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR 0x01FD /**< ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */ +#define BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG 0x01FE /**< ATT Common Profile and Service Error: Procedure Already in Progress. */ +#define BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE 0x01FF /**< ATT Common Profile and Service Error: Out Of Range. */ +/** @} */ + + +/** @defgroup BLE_GATT_CPF_FORMATS Characteristic Presentation Formats + * @note Found at http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml + * @{ */ +#define BLE_GATT_CPF_FORMAT_RFU 0x00 /**< Reserved For Future Use. */ +#define BLE_GATT_CPF_FORMAT_BOOLEAN 0x01 /**< Boolean. */ +#define BLE_GATT_CPF_FORMAT_2BIT 0x02 /**< Unsigned 2-bit integer. */ +#define BLE_GATT_CPF_FORMAT_NIBBLE 0x03 /**< Unsigned 4-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT8 0x04 /**< Unsigned 8-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT12 0x05 /**< Unsigned 12-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT16 0x06 /**< Unsigned 16-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT24 0x07 /**< Unsigned 24-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT32 0x08 /**< Unsigned 32-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT48 0x09 /**< Unsigned 48-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT64 0x0A /**< Unsigned 64-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT128 0x0B /**< Unsigned 128-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT8 0x0C /**< Signed 2-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT12 0x0D /**< Signed 12-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT16 0x0E /**< Signed 16-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT24 0x0F /**< Signed 24-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT32 0x10 /**< Signed 32-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT48 0x11 /**< Signed 48-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT64 0x12 /**< Signed 64-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT128 0x13 /**< Signed 128-bit integer. */ +#define BLE_GATT_CPF_FORMAT_FLOAT32 0x14 /**< IEEE-754 32-bit floating point. */ +#define BLE_GATT_CPF_FORMAT_FLOAT64 0x15 /**< IEEE-754 64-bit floating point. */ +#define BLE_GATT_CPF_FORMAT_SFLOAT 0x16 /**< IEEE-11073 16-bit SFLOAT. */ +#define BLE_GATT_CPF_FORMAT_FLOAT 0x17 /**< IEEE-11073 32-bit FLOAT. */ +#define BLE_GATT_CPF_FORMAT_DUINT16 0x18 /**< IEEE-20601 format. */ +#define BLE_GATT_CPF_FORMAT_UTF8S 0x19 /**< UTF-8 string. */ +#define BLE_GATT_CPF_FORMAT_UTF16S 0x1A /**< UTF-16 string. */ +#define BLE_GATT_CPF_FORMAT_STRUCT 0x1B /**< Opaque Structure. */ +/** @} */ + +/** @defgroup BLE_GATT_CPF_NAMESPACES GATT Bluetooth Namespaces + * @{ + */ +#define BLE_GATT_CPF_NAMESPACE_BTSIG 0x01 /**< Bluetooth SIG defined Namespace. */ +#define BLE_GATT_CPF_NAMESPACE_DESCRIPTION_UNKNOWN 0x0000 /**< Namespace Description Unknown. */ +/** @} */ + +/** @} */ + +/** @addtogroup BLE_GATT_STRUCTURES Structures + * @{ */ + +/** + * @brief BLE GATT initialization parameters. + */ +typedef struct +{ + uint16_t att_mtu; /**< Maximum size of ATT packet the SoftDevice can send or receive. + If it is 0 then @ref GATT_MTU_SIZE_DEFAULT will be used. + Otherwise @ref GATT_MTU_SIZE_DEFAULT is the minimum value. + @mscs + @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} + @mmsc{@ref BLE_GATTS_MTU_EXCHANGE} + @endmscs + */ +} ble_gatt_enable_params_t; + +/**@brief GATT Characteristic Properties. */ +typedef struct +{ + /* Standard properties */ + uint8_t broadcast :1; /**< Broadcasting of the value permitted. */ + uint8_t read :1; /**< Reading the value permitted. */ + uint8_t write_wo_resp :1; /**< Writing the value with Write Command permitted. */ + uint8_t write :1; /**< Writing the value with Write Request permitted. */ + uint8_t notify :1; /**< Notications of the value permitted. */ + uint8_t indicate :1; /**< Indications of the value permitted. */ + uint8_t auth_signed_wr :1; /**< Writing the value with Signed Write Command permitted. */ +} ble_gatt_char_props_t; + +/**@brief GATT Characteristic Extended Properties. */ +typedef struct +{ + /* Extended properties */ + uint8_t reliable_wr :1; /**< Writing the value with Queued Write operations permitted. */ + uint8_t wr_aux :1; /**< Writing the Characteristic User Description descriptor permitted. */ +} ble_gatt_char_ext_props_t; + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // BLE_GATT_H__ + +/** @} */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gattc.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gattc.h new file mode 100644 index 0000000..859dcdf --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gattc.h @@ -0,0 +1,660 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_GATTC Generic Attribute Profile (GATT) Client + @{ + @brief Definitions and prototypes for the GATT Client interface. + */ + +#ifndef BLE_GATTC_H__ +#define BLE_GATTC_H__ + +#include "ble_gatt.h" +#include "ble_types.h" +#include "ble_ranges.h" +#include "nrf_svc.h" +#include "nrf_error.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup BLE_GATTC_ENUMERATIONS Enumerations + * @{ */ + +/**@brief GATTC API SVC numbers. */ +enum BLE_GATTC_SVCS +{ + SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER = BLE_GATTC_SVC_BASE, /**< Primary Service Discovery. */ + SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, /**< Relationship Discovery. */ + SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, /**< Characteristic Discovery. */ + SD_BLE_GATTC_DESCRIPTORS_DISCOVER, /**< Characteristic Descriptor Discovery. */ + SD_BLE_GATTC_ATTR_INFO_DISCOVER, /**< Attribute Information Discovery. */ + SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, /**< Read Characteristic Value by UUID. */ + SD_BLE_GATTC_READ, /**< Generic read. */ + SD_BLE_GATTC_CHAR_VALUES_READ, /**< Read multiple Characteristic Values. */ + SD_BLE_GATTC_WRITE, /**< Generic write. */ + SD_BLE_GATTC_HV_CONFIRM, /**< Handle Value Confirmation. */ + SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. */ +}; + +/** + * @brief GATT Client Event IDs. + */ +enum BLE_GATTC_EVTS +{ + BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP = BLE_GATTC_EVT_BASE, /**< Primary Service Discovery Response event. \n See @ref ble_gattc_evt_prim_srvc_disc_rsp_t. */ + BLE_GATTC_EVT_REL_DISC_RSP, /**< Relationship Discovery Response event. \n See @ref ble_gattc_evt_rel_disc_rsp_t. */ + BLE_GATTC_EVT_CHAR_DISC_RSP, /**< Characteristic Discovery Response event. \n See @ref ble_gattc_evt_char_disc_rsp_t. */ + BLE_GATTC_EVT_DESC_DISC_RSP, /**< Descriptor Discovery Response event. \n See @ref ble_gattc_evt_desc_disc_rsp_t. */ + BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, /**< Attribute Information Response event. \n See @ref ble_gattc_evt_attr_info_disc_rsp_t. */ + BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP, /**< Read By UUID Response event. \n See @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t. */ + BLE_GATTC_EVT_READ_RSP, /**< Read Response event. \n See @ref ble_gattc_evt_read_rsp_t. */ + BLE_GATTC_EVT_CHAR_VALS_READ_RSP, /**< Read multiple Response event. \n See @ref ble_gattc_evt_char_vals_read_rsp_t. */ + BLE_GATTC_EVT_WRITE_RSP, /**< Write Response event. \n See @ref ble_gattc_evt_write_rsp_t. */ + BLE_GATTC_EVT_HVX, /**< Handle Value Notification or Indication event. \n Confirm indication with @ref sd_ble_gattc_hv_confirm. \n See @ref ble_gattc_evt_hvx_t. */ + BLE_GATTC_EVT_EXCHANGE_MTU_RSP, /**< Exchange MTU Response event. \n See @ref ble_gattc_evt_exchange_mtu_rsp_t. */ + BLE_GATTC_EVT_TIMEOUT /**< Timeout event. \n See @ref ble_gattc_evt_timeout_t. */ +}; + +/** @} */ + +/** @addtogroup BLE_GATTC_DEFINES Defines + * @{ */ + +/** @defgroup BLE_ERRORS_GATTC SVC return values specific to GATTC + * @{ */ +#define BLE_ERROR_GATTC_PROC_NOT_PERMITTED (NRF_GATTC_ERR_BASE + 0x000) /**< Procedure not Permitted. */ +/** @} */ + +/** @defgroup BLE_GATTC_ATTR_INFO_FORMAT Attribute Information Formats + * @{ */ +#define BLE_GATTC_ATTR_INFO_FORMAT_16BIT 1 /**< 16-bit Attribute Information Format. */ +#define BLE_GATTC_ATTR_INFO_FORMAT_128BIT 2 /**< 128-bit Attribute Information Format. */ +/** @} */ + +/** @} */ + +/** @addtogroup BLE_GATTC_STRUCTURES Structures + * @{ */ + +/**@brief Operation Handle Range. */ +typedef struct +{ + uint16_t start_handle; /**< Start Handle. */ + uint16_t end_handle; /**< End Handle. */ +} ble_gattc_handle_range_t; + + +/**@brief GATT service. */ +typedef struct +{ + ble_uuid_t uuid; /**< Service UUID. */ + ble_gattc_handle_range_t handle_range; /**< Service Handle Range. */ +} ble_gattc_service_t; + + +/**@brief GATT include. */ +typedef struct +{ + uint16_t handle; /**< Include Handle. */ + ble_gattc_service_t included_srvc; /**< Handle of the included service. */ +} ble_gattc_include_t; + + +/**@brief GATT characteristic. */ +typedef struct +{ + ble_uuid_t uuid; /**< Characteristic UUID. */ + ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ + uint8_t char_ext_props : 1; /**< Extended properties present. */ + uint16_t handle_decl; /**< Handle of the Characteristic Declaration. */ + uint16_t handle_value; /**< Handle of the Characteristic Value. */ +} ble_gattc_char_t; + + +/**@brief GATT descriptor. */ +typedef struct +{ + uint16_t handle; /**< Descriptor Handle. */ + ble_uuid_t uuid; /**< Descriptor UUID. */ +} ble_gattc_desc_t; + + +/**@brief Write Parameters. */ +typedef struct +{ + uint8_t write_op; /**< Write Operation to be performed, see @ref BLE_GATT_WRITE_OPS. */ + uint8_t flags; /**< Flags, see @ref BLE_GATT_EXEC_WRITE_FLAGS. */ + uint16_t handle; /**< Handle to the attribute to be written. */ + uint16_t offset; /**< Offset in bytes. @note For WRITE_CMD and WRITE_REQ, offset must be 0. */ + uint16_t len; /**< Length of data in bytes. */ + uint8_t const *p_value; /**< Pointer to the value data. */ +} ble_gattc_write_params_t; + +/**@brief Attribute Information for 16-bit Attribute UUID. */ +typedef struct +{ + uint16_t handle; /**< Attribute handle. */ + ble_uuid_t uuid; /**< 16-bit Attribute UUID. */ +} ble_gattc_attr_info16_t; + +/**@brief Attribute Information for 128-bit Attribute UUID. */ +typedef struct +{ + uint16_t handle; /**< Attribute handle. */ + ble_uuid128_t uuid; /**< 128-bit Attribute UUID. */ +} ble_gattc_attr_info128_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Service count. */ + ble_gattc_service_t services[1]; /**< Service data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_prim_srvc_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_REL_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Include count. */ + ble_gattc_include_t includes[1]; /**< Include data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_rel_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Characteristic count. */ + ble_gattc_char_t chars[1]; /**< Characteristic data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_char_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_DESC_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Descriptor count. */ + ble_gattc_desc_t descs[1]; /**< Descriptor data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_desc_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Attribute count. */ + uint8_t format; /**< Attribute information format, see @ref BLE_GATTC_ATTR_INFO_FORMAT. */ + union { + ble_gattc_attr_info16_t attr_info16[1]; /**< Attribute information for 16-bit Attribute UUID. + @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ + ble_gattc_attr_info128_t attr_info128[1]; /**< Attribute information for 128-bit Attribute UUID. + @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ + } info; /**< Attribute information union. */ +} ble_gattc_evt_attr_info_disc_rsp_t; + +/**@brief GATT read by UUID handle value pair. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint8_t *p_value; /**< Pointer to the Attribute Value, length is available in @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t::value_len. */ +} ble_gattc_handle_value_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP. */ +typedef struct +{ + uint16_t count; /**< Handle-Value Pair Count. */ + uint16_t value_len; /**< Length of the value in Handle-Value(s) list. */ + uint8_t handle_value[1]; /**< Handle-Value(s) list. To iterate through the list use @ref sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter. + @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_char_val_by_uuid_read_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_READ_RSP. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint16_t offset; /**< Offset of the attribute data. */ + uint16_t len; /**< Attribute data length. */ + uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_read_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP. */ +typedef struct +{ + uint16_t len; /**< Concatenated Attribute values length. */ + uint8_t values[1]; /**< Attribute values. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_char_vals_read_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_WRITE_RSP. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint8_t write_op; /**< Type of write operation, see @ref BLE_GATT_WRITE_OPS. */ + uint16_t offset; /**< Data offset. */ + uint16_t len; /**< Data length. */ + uint8_t data[1]; /**< Data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_write_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_HVX. */ +typedef struct +{ + uint16_t handle; /**< Handle to which the HVx operation applies. */ + uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ + uint16_t len; /**< Attribute data length. */ + uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_hvx_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. */ +typedef struct +{ + uint16_t server_rx_mtu; /**< Server RX MTU size. */ +} ble_gattc_evt_exchange_mtu_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_TIMEOUT. */ +typedef struct +{ + uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ +} ble_gattc_evt_timeout_t; + +/**@brief GATTC event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occured. */ + uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ + uint16_t error_handle; /**< In case of error: The handle causing the error. In all other cases @ref BLE_GATT_HANDLE_INVALID. */ + union + { + ble_gattc_evt_prim_srvc_disc_rsp_t prim_srvc_disc_rsp; /**< Primary Service Discovery Response Event Parameters. */ + ble_gattc_evt_rel_disc_rsp_t rel_disc_rsp; /**< Relationship Discovery Response Event Parameters. */ + ble_gattc_evt_char_disc_rsp_t char_disc_rsp; /**< Characteristic Discovery Response Event Parameters. */ + ble_gattc_evt_desc_disc_rsp_t desc_disc_rsp; /**< Descriptor Discovery Response Event Parameters. */ + ble_gattc_evt_char_val_by_uuid_read_rsp_t char_val_by_uuid_read_rsp; /**< Characteristic Value Read by UUID Response Event Parameters. */ + ble_gattc_evt_read_rsp_t read_rsp; /**< Read Response Event Parameters. */ + ble_gattc_evt_char_vals_read_rsp_t char_vals_read_rsp; /**< Characteristic Values Read Response Event Parameters. */ + ble_gattc_evt_write_rsp_t write_rsp; /**< Write Response Event Parameters. */ + ble_gattc_evt_hvx_t hvx; /**< Handle Value Notification/Indication Event Parameters. */ + ble_gattc_evt_exchange_mtu_rsp_t exchange_mtu_rsp; /**< Exchange MTU Response Event Parameters. */ + ble_gattc_evt_timeout_t timeout; /**< Timeout Event Parameters. */ + ble_gattc_evt_attr_info_disc_rsp_t attr_info_disc_rsp; /**< Attribute Information Discovery Event Parameters. */ + } params; /**< Event Parameters. @note Only valid if @ref gatt_status == @ref BLE_GATT_STATUS_SUCCESS. */ +} ble_gattc_evt_t; +/** @} */ + +/** @addtogroup BLE_GATTC_FUNCTIONS Functions + * @{ */ + +/**@brief Initiate or continue a GATT Primary Service Discovery procedure. + * + * @details This function initiates or resumes a Primary Service discovery procedure, starting from the supplied handle. + * If the last service has not been reached, this function must be called again with an updated start handle value to continue the search. + * + * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with + * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. + * + * @events + * @event{@ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_PRIM_SRVC_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] start_handle Handle to start searching from. + * @param[in] p_srvc_uuid Pointer to the service UUID to be found. If it is NULL, all primary services will be returned. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Primary Service Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER, uint32_t, sd_ble_gattc_primary_services_discover(uint16_t conn_handle, uint16_t start_handle, ble_uuid_t const *p_srvc_uuid)); + + +/**@brief Initiate or continue a GATT Relationship Discovery procedure. + * + * @details This function initiates or resumes the Find Included Services sub-procedure. If the last included service has not been reached, + * this must be called again with an updated handle range to continue the search. + * + * @events + * @event{@ref BLE_GATTC_EVT_REL_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_REL_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Relationship Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, uint32_t, sd_ble_gattc_relationships_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Characteristic Discovery procedure. + * + * @details This function initiates or resumes a Characteristic discovery procedure. If the last Characteristic has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @note If any of the discovered characteristics have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with + * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. + * + * @events + * @event{@ref BLE_GATTC_EVT_CHAR_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_CHAR_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Characteristic Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, uint32_t, sd_ble_gattc_characteristics_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Characteristic Descriptor Discovery procedure. + * + * @details This function initiates or resumes a Characteristic Descriptor discovery procedure. If the last Descriptor has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @events + * @event{@ref BLE_GATTC_EVT_DESC_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_DESC_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Characteristic to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Descriptor Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_DESCRIPTORS_DISCOVER, uint32_t, sd_ble_gattc_descriptors_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Read using Characteristic UUID procedure. + * + * @details This function initiates or resumes a Read using Characteristic UUID procedure. If the last Characteristic has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @events + * @event{@ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_READ_UUID_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_uuid Pointer to a Characteristic value UUID to read. + * @param[in] p_handle_range A pointer to the range of handles to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Read using Characteristic UUID procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, uint32_t, sd_ble_gattc_char_value_by_uuid_read(uint16_t conn_handle, ble_uuid_t const *p_uuid, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Read (Long) Characteristic or Descriptor procedure. + * + * @details This function initiates or resumes a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor + * to be read is longer than ATT_MTU - 1, this function must be called multiple times with appropriate offset to read the + * complete value. + * + * @events + * @event{@ref BLE_GATTC_EVT_READ_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_VALUE_READ_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] handle The handle of the attribute to be read. + * @param[in] offset Offset into the attribute value to be read. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Read (Long) procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_READ, uint32_t, sd_ble_gattc_read(uint16_t conn_handle, uint16_t handle, uint16_t offset)); + + +/**@brief Initiate a GATT Read Multiple Characteristic Values procedure. + * + * @details This function initiates a GATT Read Multiple Characteristic Values procedure. + * + * @events + * @event{@ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_READ_MULT_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handles A pointer to the handle(s) of the attribute(s) to be read. + * @param[in] handle_count The number of handles in p_handles. + * + * @retval ::NRF_SUCCESS Successfully started the Read Multiple Characteristic Values procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_CHAR_VALUES_READ, uint32_t, sd_ble_gattc_char_values_read(uint16_t conn_handle, uint16_t const *p_handles, uint16_t handle_count)); + + +/**@brief Perform a Write (Characteristic Value or Descriptor, with or without response, signed or not, long or reliable) procedure. + * + * @details This function can perform all write procedures described in GATT. + * + * @note It is important to note that a write without response will consume an application buffer, and will therefore + * generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. A write (with response) on the other hand will use the + * standard client internal buffer and thus will only generate a @ref BLE_GATTC_EVT_WRITE_RSP event as soon as the write response + * has been received from the peer. Please see the documentation of @ref sd_ble_tx_packet_count_get for more details. + * + * @events + * @event{@ref BLE_GATTC_EVT_WRITE_RSP, Generated when using write request or queued writes.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_VALUE_WRITE_MSC} + * @mmsc{@ref BLE_GATTC_VALUE_LONG_WRITE_MSC} + * @mmsc{@ref BLE_GATTC_VALUE_RELIABLE_WRITE_MSC} + * @mmsc{@ref BLE_COMMON_APP_BUFF_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_write_params A pointer to a write parameters structure. + * + * @retval ::NRF_SUCCESS Successfully started the Write procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + * @retval ::NRF_ERROR_BUSY Procedure already in progress. + * @retval ::BLE_ERROR_NO_TX_PACKETS No available application packets for this connection. + */ +SVCALL(SD_BLE_GATTC_WRITE, uint32_t, sd_ble_gattc_write(uint16_t conn_handle, ble_gattc_write_params_t const *p_write_params)); + + +/**@brief Send a Handle Value Confirmation to the GATT Server. + * + * @mscs + * @mmsc{@ref BLE_GATTC_HVI_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] handle The handle of the attribute in the indication. + * + * @retval ::NRF_SUCCESS Successfully queued the Handle Value Confirmation for transmission. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no Indication pending to be confirmed. + * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle. + */ +SVCALL(SD_BLE_GATTC_HV_CONFIRM, uint32_t, sd_ble_gattc_hv_confirm(uint16_t conn_handle, uint16_t handle)); + +/**@brief Discovers information about a range of attributes on a GATT server. + * + * @events + * @event{@ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, Generated when information about a range of attributes has been received.} + * @endevents + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range The range of handles to request information about. + * + * @retval ::NRF_SUCCESS Successfully started an attribute information discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_ATTR_INFO_DISCOVER, uint32_t, sd_ble_gattc_attr_info_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * p_handle_range)); + +/**@brief Start an ATT_MTU exchange by sending an Exchange MTU Request to the server. + * + * @details The SoftDevice sets ATT_MTU to the minimum of: + * - The Client RX MTU value, and + * - The Server RX MTU value from @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. + * + * However, the SoftDevice never sets ATT_MTU lower than @ref GATT_MTU_SIZE_DEFAULT. + * + * @events + * @event{@ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP} + * @event{@ref BLE_EVT_DATA_LENGTH_CHANGED, Generated if a data length update procedure is performed after the ATT_MTU exchange.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] client_rx_mtu Client RX MTU size. + * - The minimum value is @ref GATT_MTU_SIZE_DEFAULT. + * - The maximum value is @ref ble_gatt_enable_params_t::att_mtu. + * - The value must be equal to Server RX MTU size given in @ref sd_ble_gatts_exchange_mtu_reply + * if an ATT_MTU exchange has already been performed in the other direction. + * + * @retval ::NRF_SUCCESS Successfully sent request to the server. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state or an ATT_MTU exchange was already requested once. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid Client RX MTU size supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, uint32_t, sd_ble_gattc_exchange_mtu_request(uint16_t conn_handle, uint16_t client_rx_mtu)); + +/**@brief Iterate through Handle-Value(s) list in @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. + * + * @param[in] p_gattc_evt Pointer to event buffer containing @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. + * @note If the buffer contains different event, behavior is undefined. + * @param[in,out] p_iter Iterator, points to @ref ble_gattc_handle_value_t structure that will be filled in with + * the next Handle-Value pair in each iteration. If the function returns other than + * @ref NRF_SUCCESS, it will not be changed. + * - To start iteration, initialize the structure to zero. + * - To continue, pass the value from previous iteration. + * + * \code + * ble_gattc_handle_value_t iter; + * memset(&iter, 0, sizeof(ble_gattc_handle_value_t)); + * while (sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(&ble_evt.evt.gattc_evt, &iter) == NRF_SUCCESS) + * { + * app_handle = iter.handle; + * memcpy(app_value, iter.p_value, ble_evt.evt.gattc_evt.params.char_val_by_uuid_read_rsp.value_len); + * } + * \endcode + * + * @retval ::NRF_SUCCESS Successfully retrieved the next Handle-Value pair. + * @retval ::NRF_ERROR_NOT_FOUND No more Handle-Value pairs available in the list. + */ +static inline uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter) +{ + uint32_t value_len = p_gattc_evt->params.char_val_by_uuid_read_rsp.value_len; + uint8_t *p_first = p_gattc_evt->params.char_val_by_uuid_read_rsp.handle_value; + uint8_t *p_next = p_iter->p_value ? p_iter->p_value + value_len : p_first; + + if ((p_next - p_first) / (sizeof(uint16_t) + value_len) < p_gattc_evt->params.char_val_by_uuid_read_rsp.count) + { + p_iter->handle = (uint16_t)p_next[1] << 8 | p_next[0]; + p_iter->p_value = p_next + sizeof(uint16_t); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_NOT_FOUND; + } +} + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif /* BLE_GATTC_H__ */ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gatts.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gatts.h new file mode 100644 index 0000000..535332b --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_gatts.h @@ -0,0 +1,778 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_GATTS Generic Attribute Profile (GATT) Server + @{ + @brief Definitions and prototypes for the GATTS interface. + */ + +#ifndef BLE_GATTS_H__ +#define BLE_GATTS_H__ + +#include "ble_types.h" +#include "ble_ranges.h" +#include "ble_l2cap.h" +#include "ble_gap.h" +#include "ble_gatt.h" +#include "nrf_svc.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup BLE_GATTS_ENUMERATIONS Enumerations + * @{ */ + +/** + * @brief GATTS API SVC numbers. + */ +enum BLE_GATTS_SVCS +{ + SD_BLE_GATTS_SERVICE_ADD = BLE_GATTS_SVC_BASE, /**< Add a service. */ + SD_BLE_GATTS_INCLUDE_ADD, /**< Add an included service. */ + SD_BLE_GATTS_CHARACTERISTIC_ADD, /**< Add a characteristic. */ + SD_BLE_GATTS_DESCRIPTOR_ADD, /**< Add a generic attribute. */ + SD_BLE_GATTS_VALUE_SET, /**< Set an attribute value. */ + SD_BLE_GATTS_VALUE_GET, /**< Get an attribute value. */ + SD_BLE_GATTS_HVX, /**< Handle Value Notification or Indication. */ + SD_BLE_GATTS_SERVICE_CHANGED, /**< Perform a Service Changed Indication to one or more peers. */ + SD_BLE_GATTS_RW_AUTHORIZE_REPLY, /**< Reply to an authorization request for a read or write operation on one or more attributes. */ + SD_BLE_GATTS_SYS_ATTR_SET, /**< Set the persistent system attributes for a connection. */ + SD_BLE_GATTS_SYS_ATTR_GET, /**< Retrieve the persistent system attributes. */ + SD_BLE_GATTS_INITIAL_USER_HANDLE_GET, /**< Retrieve the first valid user handle. */ + SD_BLE_GATTS_ATTR_GET, /**< Retrieve the UUID and/or metadata of an attribute. */ + SD_BLE_GATTS_EXCHANGE_MTU_REPLY /**< Reply to Exchange MTU Request. */ +}; + +/** + * @brief GATT Server Event IDs. + */ +enum BLE_GATTS_EVTS +{ + BLE_GATTS_EVT_WRITE = BLE_GATTS_EVT_BASE, /**< Write operation performed. \n See @ref ble_gatts_evt_write_t. */ + BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST, /**< Read/Write Authorization request. \n Reply with @ref sd_ble_gatts_rw_authorize_reply. \n See @ref ble_gatts_evt_rw_authorize_request_t. */ + BLE_GATTS_EVT_SYS_ATTR_MISSING, /**< A persistent system attribute access is pending. \n Respond with @ref sd_ble_gatts_sys_attr_set. \n See @ref ble_gatts_evt_sys_attr_missing_t. */ + BLE_GATTS_EVT_HVC, /**< Handle Value Confirmation. \n See @ref ble_gatts_evt_hvc_t. */ + BLE_GATTS_EVT_SC_CONFIRM, /**< Service Changed Confirmation. No additional event structure applies. */ + BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. \n Reply with @ref sd_ble_gatts_exchange_mtu_reply. \n See @ref ble_gatts_evt_exchange_mtu_request_t. */ + BLE_GATTS_EVT_TIMEOUT /**< Peer failed to resonpond to an ATT request in time. \n See @ref ble_gatts_evt_timeout_t. */ +}; +/** @} */ + +/** @addtogroup BLE_GATTS_DEFINES Defines + * @{ */ + +/** @defgroup BLE_ERRORS_GATTS SVC return values specific to GATTS + * @{ */ +#define BLE_ERROR_GATTS_INVALID_ATTR_TYPE (NRF_GATTS_ERR_BASE + 0x000) /**< Invalid attribute type. */ +#define BLE_ERROR_GATTS_SYS_ATTR_MISSING (NRF_GATTS_ERR_BASE + 0x001) /**< System Attributes missing. */ +/** @} */ + +/** @defgroup BLE_GATTS_ATTR_LENS_MAX Maximum attribute lengths + * @{ */ +#define BLE_GATTS_FIX_ATTR_LEN_MAX (510) /**< Maximum length for fixed length Attribute Values. */ +#define BLE_GATTS_VAR_ATTR_LEN_MAX (512) /**< Maximum length for variable length Attribute Values. */ +/** @} */ + +/** @defgroup BLE_GATTS_SRVC_TYPES GATT Server Service Types + * @{ */ +#define BLE_GATTS_SRVC_TYPE_INVALID 0x00 /**< Invalid Service Type. */ +#define BLE_GATTS_SRVC_TYPE_PRIMARY 0x01 /**< Primary Service. */ +#define BLE_GATTS_SRVC_TYPE_SECONDARY 0x02 /**< Secondary Type. */ +/** @} */ + + +/** @defgroup BLE_GATTS_ATTR_TYPES GATT Server Attribute Types + * @{ */ +#define BLE_GATTS_ATTR_TYPE_INVALID 0x00 /**< Invalid Attribute Type. */ +#define BLE_GATTS_ATTR_TYPE_PRIM_SRVC_DECL 0x01 /**< Primary Service Declaration. */ +#define BLE_GATTS_ATTR_TYPE_SEC_SRVC_DECL 0x02 /**< Secondary Service Declaration. */ +#define BLE_GATTS_ATTR_TYPE_INC_DECL 0x03 /**< Include Declaration. */ +#define BLE_GATTS_ATTR_TYPE_CHAR_DECL 0x04 /**< Characteristic Declaration. */ +#define BLE_GATTS_ATTR_TYPE_CHAR_VAL 0x05 /**< Characteristic Value. */ +#define BLE_GATTS_ATTR_TYPE_DESC 0x06 /**< Descriptor. */ +#define BLE_GATTS_ATTR_TYPE_OTHER 0x07 /**< Other, non-GATT specific type. */ +/** @} */ + + +/** @defgroup BLE_GATTS_OPS GATT Server Operations + * @{ */ +#define BLE_GATTS_OP_INVALID 0x00 /**< Invalid Operation. */ +#define BLE_GATTS_OP_WRITE_REQ 0x01 /**< Write Request. */ +#define BLE_GATTS_OP_WRITE_CMD 0x02 /**< Write Command. */ +#define BLE_GATTS_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ +#define BLE_GATTS_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ +#define BLE_GATTS_OP_EXEC_WRITE_REQ_CANCEL 0x05 /**< Execute Write Request: Cancel all prepared writes. */ +#define BLE_GATTS_OP_EXEC_WRITE_REQ_NOW 0x06 /**< Execute Write Request: Immediately execute all prepared writes. */ +/** @} */ + +/** @defgroup BLE_GATTS_VLOCS GATT Value Locations + * @{ */ +#define BLE_GATTS_VLOC_INVALID 0x00 /**< Invalid Location. */ +#define BLE_GATTS_VLOC_STACK 0x01 /**< Attribute Value is located in stack memory, no user memory is required. */ +#define BLE_GATTS_VLOC_USER 0x02 /**< Attribute Value is located in user memory. This requires the user to maintain a valid buffer through the lifetime of the attribute, since the stack + will read and write directly to the memory using the pointer provided in the APIs. There are no alignment requirements for the buffer. */ +/** @} */ + +/** @defgroup BLE_GATTS_AUTHORIZE_TYPES GATT Server Authorization Types + * @{ */ +#define BLE_GATTS_AUTHORIZE_TYPE_INVALID 0x00 /**< Invalid Type. */ +#define BLE_GATTS_AUTHORIZE_TYPE_READ 0x01 /**< Authorize a Read Operation. */ +#define BLE_GATTS_AUTHORIZE_TYPE_WRITE 0x02 /**< Authorize a Write Request Operation. */ +/** @} */ + +/** @defgroup BLE_GATTS_SYS_ATTR_FLAGS System Attribute Flags + * @{ */ +#define BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS (1 << 0) /**< Restrict system attributes to system services only. */ +#define BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS (1 << 1) /**< Restrict system attributes to user services only. */ +/** @} */ + +/** @defgroup BLE_GATTS_ATTR_TAB_SIZE Attribute Table size + * @{ + */ +#define BLE_GATTS_ATTR_TAB_SIZE_MIN 248 /**< Minimum Attribute Table size */ +#define BLE_GATTS_ATTR_TAB_SIZE_DEFAULT 0x0000 /**< Default Attribute Table size (0x580 bytes for this version of the SoftDevice). */ +/** @} */ + +/** @} */ + +/** @addtogroup BLE_GATTS_STRUCTURES Structures + * @{ */ + +/** + * @brief BLE GATTS initialization parameters. + */ +typedef struct +{ + uint8_t service_changed:1; /**< Include the Service Changed characteristic in the Attribute Table. */ + uint32_t attr_tab_size; /**< Attribute Table size in bytes. The size must be a multiple of 4. @ref BLE_GATTS_ATTR_TAB_SIZE_DEFAULT is used to set the default size. */ +} ble_gatts_enable_params_t; + +/**@brief Attribute metadata. */ +typedef struct +{ + ble_gap_conn_sec_mode_t read_perm; /**< Read permissions. */ + ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ + uint8_t vlen :1; /**< Variable length attribute. */ + uint8_t vloc :2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ + uint8_t rd_auth :1; /**< Read authorization and value will be requested from the application on every read operation. */ + uint8_t wr_auth :1; /**< Write authorization will be requested from the application on every Write Request operation (but not Write Command). */ +} ble_gatts_attr_md_t; + + +/**@brief GATT Attribute. */ +typedef struct +{ + ble_uuid_t *p_uuid; /**< Pointer to the attribute UUID. */ + ble_gatts_attr_md_t *p_attr_md; /**< Pointer to the attribute metadata structure. */ + uint16_t init_len; /**< Initial attribute value length in bytes. */ + uint16_t init_offs; /**< Initial attribute value offset in bytes. If different from zero, the first init_offs bytes of the attribute value will be left uninitialized. */ + uint16_t max_len; /**< Maximum attribute value length in bytes, see @ref BLE_GATTS_ATTR_LENS_MAX for maximum values. */ + uint8_t* p_value; /**< Pointer to the attribute data. Please note that if the @ref BLE_GATTS_VLOC_USER value location is selected in the attribute metadata, this will have to point to a buffer + that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location. + The stack may access that memory directly without the application's knowledge. For writable characteristics, this value must not be a location in flash memory.*/ +} ble_gatts_attr_t; + +/**@brief GATT Attribute Value. */ +typedef struct +{ + uint16_t len; /**< Length in bytes to be written or read. Length in bytes written or read after successful return.*/ + uint16_t offset; /**< Attribute value offset. */ + uint8_t *p_value; /**< Pointer to where value is stored or will be stored. + If value is stored in user memory, only the attribute length is updated when p_value == NULL. + Set to NULL when reading to obtain the complete length of the attribute value */ +} ble_gatts_value_t; + + +/**@brief GATT Characteristic Presentation Format. */ +typedef struct +{ + uint8_t format; /**< Format of the value, see @ref BLE_GATT_CPF_FORMATS. */ + int8_t exponent; /**< Exponent for integer data types. */ + uint16_t unit; /**< Unit from Bluetooth Assigned Numbers. */ + uint8_t name_space; /**< Namespace from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ + uint16_t desc; /**< Namespace description from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ +} ble_gatts_char_pf_t; + + +/**@brief GATT Characteristic metadata. */ +typedef struct +{ + ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ + ble_gatt_char_ext_props_t char_ext_props; /**< Characteristic Extended Properties. */ + uint8_t *p_char_user_desc; /**< Pointer to a UTF-8 encoded string (non-NULL terminated), NULL if the descriptor is not required. */ + uint16_t char_user_desc_max_size; /**< The maximum size in bytes of the user description descriptor. */ + uint16_t char_user_desc_size; /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */ + ble_gatts_char_pf_t* p_char_pf; /**< Pointer to a presentation format structure or NULL if the CPF descriptor is not required. */ + ble_gatts_attr_md_t* p_user_desc_md; /**< Attribute metadata for the User Description descriptor, or NULL for default values. */ + ble_gatts_attr_md_t* p_cccd_md; /**< Attribute metadata for the Client Characteristic Configuration Descriptor, or NULL for default values. */ + ble_gatts_attr_md_t* p_sccd_md; /**< Attribute metadata for the Server Characteristic Configuration Descriptor, or NULL for default values. */ +} ble_gatts_char_md_t; + + +/**@brief GATT Characteristic Definition Handles. */ +typedef struct +{ + uint16_t value_handle; /**< Handle to the characteristic value. */ + uint16_t user_desc_handle; /**< Handle to the User Description descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ + uint16_t cccd_handle; /**< Handle to the Client Characteristic Configuration Descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ + uint16_t sccd_handle; /**< Handle to the Server Characteristic Configuration Descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ +} ble_gatts_char_handles_t; + + +/**@brief GATT HVx parameters. */ +typedef struct +{ + uint16_t handle; /**< Characteristic Value Handle. */ + uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ + uint16_t offset; /**< Offset within the attribute value. */ + uint16_t *p_len; /**< Length in bytes to be written, length in bytes written after successful return. */ + uint8_t *p_data; /**< Actual data content, use NULL to use the current attribute value. */ +} ble_gatts_hvx_params_t; + +/**@brief GATT Authorization parameters. */ +typedef struct +{ + uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ + uint8_t update : 1; /**< If set, data supplied in p_data will be used to update the attribute value. + Please note that for @ref BLE_GATTS_AUTHORIZE_TYPE_WRITE operations this bit must always be set, + as the data to be written needs to be stored and later provided by the application. */ + uint16_t offset; /**< Offset of the attribute value being updated. */ + uint16_t len; /**< Length in bytes of the value in p_data pointer, see @ref BLE_GATTS_ATTR_LENS_MAX. */ + const uint8_t *p_data; /**< Pointer to new value used to update the attribute value. */ +} ble_gatts_authorize_params_t; + +/**@brief GATT Read or Write Authorize Reply parameters. */ +typedef struct +{ + uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ + union { + ble_gatts_authorize_params_t read; /**< Read authorization parameters. */ + ble_gatts_authorize_params_t write; /**< Write authorization parameters. */ + } params; /**< Reply Parameters. */ +} ble_gatts_rw_authorize_reply_params_t; + + + +/**@brief Event structure for @ref BLE_GATTS_EVT_WRITE. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + ble_uuid_t uuid; /**< Attribute UUID. */ + uint8_t op; /**< Type of write operation, see @ref BLE_GATTS_OPS. */ + uint8_t auth_required; /**< Writing operation deferred due to authorization requirement. Application may use @ref sd_ble_gatts_value_set to finalise the writing operation. */ + uint16_t offset; /**< Offset for the write operation. */ + uint16_t len; /**< Length of the received data. */ + uint8_t data[1]; /**< Received data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gatts_evt_write_t; + +/**@brief Event substructure for authorized read requests, see @ref ble_gatts_evt_rw_authorize_request_t. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + ble_uuid_t uuid; /**< Attribute UUID. */ + uint16_t offset; /**< Offset for the read operation. */ +} ble_gatts_evt_read_t; + +/**@brief Event structure for @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST. */ +typedef struct +{ + uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ + union { + ble_gatts_evt_read_t read; /**< Attribute Read Parameters. */ + ble_gatts_evt_write_t write; /**< Attribute Write Parameters. */ + } request; /**< Request Parameters. */ +} ble_gatts_evt_rw_authorize_request_t; + +/**@brief Event structure for @ref BLE_GATTS_EVT_SYS_ATTR_MISSING. */ +typedef struct +{ + uint8_t hint; /**< Hint (currently unused). */ +} ble_gatts_evt_sys_attr_missing_t; + + +/**@brief Event structure for @ref BLE_GATTS_EVT_HVC. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ +} ble_gatts_evt_hvc_t; + +/**@brief Event structure for @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST. */ +typedef struct +{ + uint16_t client_rx_mtu; /**< Client RX MTU size. */ +} ble_gatts_evt_exchange_mtu_request_t; + +/**@brief Event structure for @ref BLE_GATTS_EVT_TIMEOUT. */ +typedef struct +{ + uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ +} ble_gatts_evt_timeout_t; + + +/**@brief GATTS event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which the event occurred. */ + union + { + ble_gatts_evt_write_t write; /**< Write Event Parameters. */ + ble_gatts_evt_rw_authorize_request_t authorize_request; /**< Read or Write Authorize Request Parameters. */ + ble_gatts_evt_sys_attr_missing_t sys_attr_missing; /**< System attributes missing. */ + ble_gatts_evt_hvc_t hvc; /**< Handle Value Confirmation Event Parameters. */ + ble_gatts_evt_exchange_mtu_request_t exchange_mtu_request; /**< Exchange MTU Request Event Parameters. */ + ble_gatts_evt_timeout_t timeout; /**< Timeout Event. */ + } params; /**< Event Parameters. */ +} ble_gatts_evt_t; + +/** @} */ + +/** @addtogroup BLE_GATTS_FUNCTIONS Functions + * @{ */ + +/**@brief Add a service declaration to the Attribute Table. + * + * @note Secondary Services are only relevant in the context of the entity that references them, it is therefore forbidden to + * add a secondary service declaration that is not referenced by another service later in the Attribute Table. + * + * @mscs + * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} + * @endmscs + * + * @param[in] type Toggles between primary and secondary services, see @ref BLE_GATTS_SRVC_TYPES. + * @param[in] p_uuid Pointer to service UUID. + * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. + * + * @retval ::NRF_SUCCESS Successfully added a service declaration. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, Vendor Specific UUIDs need to be present in the table. + * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_GATTS_SERVICE_ADD, uint32_t, sd_ble_gatts_service_add(uint8_t type, ble_uuid_t const *p_uuid, uint16_t *p_handle)); + + +/**@brief Add an include declaration to the Attribute Table. + * + * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential population is supported at this time). + * + * @note The included service must already be present in the Attribute Table prior to this call. + * + * @mscs + * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} + * @endmscs + * + * @param[in] service_handle Handle of the service where the included service is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. + * @param[in] inc_srvc_handle Handle of the included service. + * @param[out] p_include_handle Pointer to a 16-bit word where the assigned handle will be stored. + * + * @retval ::NRF_SUCCESS Successfully added an include declaration. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, handle values need to match previously added services. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_NOT_SUPPORTED Feature is not supported, service_handle must be that of the last added service. + * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, self inclusions are not allowed. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. + */ +SVCALL(SD_BLE_GATTS_INCLUDE_ADD, uint32_t, sd_ble_gatts_include_add(uint16_t service_handle, uint16_t inc_srvc_handle, uint16_t *p_include_handle)); + + +/**@brief Add a characteristic declaration, a characteristic value declaration and optional characteristic descriptor declarations to the Attribute Table. + * + * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential population is supported at this time). + * + * @note Several restrictions apply to the parameters, such as matching permissions between the user description descriptor and the writeable auxiliaries bits, + * readable (no security) and writeable (selectable) CCCDs and SCCDs and valid presentation format values. + * + * @note If no metadata is provided for the optional descriptors, their permissions will be derived from the characteristic permissions. + * + * @mscs + * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} + * @endmscs + * + * @param[in] service_handle Handle of the service where the characteristic is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. + * @param[in] p_char_md Characteristic metadata. + * @param[in] p_attr_char_value Pointer to the attribute structure corresponding to the characteristic value. + * @param[out] p_handles Pointer to the structure where the assigned handles will be stored. + * + * @retval ::NRF_SUCCESS Successfully added a characteristic. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, service handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required. + * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. + */ +SVCALL(SD_BLE_GATTS_CHARACTERISTIC_ADD, uint32_t, sd_ble_gatts_characteristic_add(uint16_t service_handle, ble_gatts_char_md_t const *p_char_md, ble_gatts_attr_t const *p_attr_char_value, ble_gatts_char_handles_t *p_handles)); + + +/**@brief Add a descriptor to the Attribute Table. + * + * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential population is supported at this time). + * + * @mscs + * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} + * @endmscs + * + * @param[in] char_handle Handle of the characteristic where the descriptor is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. + * @param[in] p_attr Pointer to the attribute structure. + * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. + * + * @retval ::NRF_SUCCESS Successfully added a descriptor. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, characteristic handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a characteristic context is required. + * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. + */ +SVCALL(SD_BLE_GATTS_DESCRIPTOR_ADD, uint32_t, sd_ble_gatts_descriptor_add(uint16_t char_handle, ble_gatts_attr_t const *p_attr, uint16_t *p_handle)); + +/**@brief Set the value of a given attribute. + * + * @note Values other than system attributes can be set at any time, regardless of wheter any active connections exist. + * + * @mscs + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. If the value does not belong to a system attribute then @ref BLE_CONN_HANDLE_INVALID can be used. + * @param[in] handle Attribute handle. + * @param[in,out] p_value Attribute value information. + * + * @retval ::NRF_SUCCESS Successfully set the value of the attribute. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. + * @retval ::NRF_ERROR_FORBIDDEN Forbidden handle supplied, certain attributes are not modifiable by the application. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::BLE_ERROR_GATTS_INVALID_ATTR_TYPE @ref BLE_CONN_HANDLE_INVALID supplied on a system attribute. + */ +SVCALL(SD_BLE_GATTS_VALUE_SET, uint32_t, sd_ble_gatts_value_set(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)); + +/**@brief Get the value of a given attribute. + * + * @note If the attribute value is longer than the size of the supplied buffer, + * p_len will return the total attribute value length (excluding offset), + * and not the number of bytes actually returned in p_data. + * The application may use this information to allocate a suitable buffer size. + * + * @note When retrieving system attribute values with this function, the connection handle + * may refer to an already disconnected connection. Refer to the documentation of + * @ref sd_ble_gatts_sys_attr_get for further information. + * + * @param[in] conn_handle Connection handle. If the value does not belong to a system attribute then @ref BLE_CONN_HANDLE_INVALID can be used. + * @param[in] handle Attribute handle. + * @param[in,out] p_value Attribute value information. + * + * @retval ::NRF_SUCCESS Successfully retrieved the value of the attribute. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid attribute offset supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::BLE_ERROR_GATTS_INVALID_ATTR_TYPE @ref BLE_CONN_HANDLE_INVALID supplied on a system attribute. + * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. + */ +SVCALL(SD_BLE_GATTS_VALUE_GET, uint32_t, sd_ble_gatts_value_get(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)); + +/**@brief Notify or Indicate an attribute value. + * + * @details This function checks for the relevant Client Characteristic Configuration descriptor value to verify that the relevant operation + * (notification or indication) has been enabled by the client. It is also able to update the attribute value before issuing the PDU, so that + * the application can atomically perform a value update and a server initiated transaction with a single API call. + * If the application chooses to indicate an attribute value, a @ref BLE_GATTS_EVT_HVC event will be issued as soon as the confirmation arrives from + * the peer. + * + * @note The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution. + * The Attribute Table has been updated if one of the following error codes is returned: @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, + * @ref NRF_ERROR_FORBIDDEN, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and @ref BLE_ERROR_NO_TX_PACKETS. + * The caller can check whether the value has been updated by looking at the contents of *(p_hvx_params->p_len). + * + * @note It is important to note that a notification will consume an application buffer, and will therefore + * generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. An indication on the other hand will use the + * standard server internal buffer and thus will only generate a @ref BLE_GATTS_EVT_HVC event as soon as the confirmation + * has been received from the peer. Please see the documentation of @ref sd_ble_tx_packet_count_get for more details. + * + * @events + * @event{@ref BLE_EVT_TX_COMPLETE, Transmission complete.} + * @event{@ref BLE_GATTS_EVT_HVC, Confirmation received from peer.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC} + * @mmsc{@ref BLE_GATTS_HVN_MSC} + * @mmsc{@ref BLE_GATTS_HVI_MSC} + * @mmsc{@ref BLE_GATTS_HVX_DISABLED_MSC} + * @mmsc{@ref BLE_COMMON_APP_BUFF_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_hvx_params Pointer to an HVx parameters structure. If the p_data member contains a non-NULL pointer the attribute value will be updated with + * the contents pointed by it before sending the notification or indication. + * + * @retval ::NRF_SUCCESS Successfully queued a notification or indication for transmission, and optionally updated the attribute value. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true: + * - Invalid Connection State + * - Notifications and/or indications not enabled in the CCCD + * - An ATT_MTU exchange is ongoing + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied. Only attributes added directly by the application are available to notify and indicate. + * @retval ::BLE_ERROR_GATTS_INVALID_ATTR_TYPE Invalid attribute type(s) supplied, only characteristic values may be notified and indicated. + * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. + * @retval ::NRF_ERROR_FORBIDDEN The connection's current security level is lower than the one required by the write permissions of the CCCD associated with this characteristic. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + * @retval ::NRF_ERROR_BUSY Procedure already in progress. + * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. + * @retval ::BLE_ERROR_NO_TX_PACKETS No available application packets for this connection, applies only to notifications. + */ +SVCALL(SD_BLE_GATTS_HVX, uint32_t, sd_ble_gatts_hvx(uint16_t conn_handle, ble_gatts_hvx_params_t const *p_hvx_params)); + +/**@brief Indicate the Service Changed attribute value. + * + * @details This call will send a Handle Value Indication to one or more peers connected to inform them that the Attribute + * Table layout has changed. As soon as the peer has confirmed the indication, a @ref BLE_GATTS_EVT_SC_CONFIRM event will + * be issued. + * + * @note Some of the restrictions and limitations that apply to @ref sd_ble_gatts_hvx also apply here. + * + * @events + * @event{@ref BLE_GATTS_EVT_SC_CONFIRM, Confirmation of attribute table change received from peer.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTS_SC_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] start_handle Start of affected attribute handle range. + * @param[in] end_handle End of affected attribute handle range. + * + * @retval ::NRF_SUCCESS Successfully queued the Service Changed indication for transmission. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_NOT_SUPPORTED Service Changed not enabled at initialization. See @ref sd_ble_enable and @ref ble_gatts_enable_params_t. + * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true: + * - Invalid Connection State + * - Notifications and/or indications not enabled in the CCCD + * - An ATT_MTU exchange is ongoing + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied, handles must be in the range populated by the application. + * @retval ::NRF_ERROR_BUSY Procedure already in progress. + * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. + */ +SVCALL(SD_BLE_GATTS_SERVICE_CHANGED, uint32_t, sd_ble_gatts_service_changed(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle)); + +/**@brief Respond to a Read/Write authorization request. + * + * @note This call should only be used as a response to a @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event issued to the application. + * + * @mscs + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} + * @mmsc{@ref BLE_GATTS_READ_REQ_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_WRITE_REQ_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_PEER_CANCEL_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_rw_authorize_reply_params Pointer to a structure with the attribute provided by the application. + * + * @note @ref ble_gatts_authorize_params_t::p_data is ignored when this function is used to respond + * to a @ref BLE_GATTS_AUTHORIZE_TYPE_READ event if @ref ble_gatts_authorize_params_t::update + * is set to 0. + * + * @retval ::NRF_SUCCESS Successfully queued a response to the peer, and in the case of a write operation, Attribute Table updated. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no authorization request pending. + * @retval ::NRF_ERROR_INVALID_PARAM Authorization op invalid, + * handle supplied does not match requested handle, + * or invalid data to be written provided by the application. + * @retval ::NRF_ERROR_BUSY The stack is busy. Retry at later time. + */ +SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_reply(uint16_t conn_handle, ble_gatts_rw_authorize_reply_params_t const *p_rw_authorize_reply_params)); + + +/**@brief Update persistent system attribute information. + * + * @details Supply information about persistent system attributes to the stack, + * previously obtained using @ref sd_ble_gatts_sys_attr_get. + * This call is only allowed for active connections, and is usually + * made immediately after a connection is established with an known bonded device, + * often as a response to a @ref BLE_GATTS_EVT_SYS_ATTR_MISSING. + * + * p_sysattrs may point directly to the application's stored copy of the system attributes + * obtained using @ref sd_ble_gatts_sys_attr_get. + * If the pointer is NULL, the system attribute info is initialized, assuming that + * the application does not have any previously saved system attribute data for this device. + * + * @note The state of persistent system attributes is reset upon connection establishment and then remembered for its duration. + * + * @note If this call returns with an error code different from @ref NRF_SUCCESS, the storage of persistent system attributes may have been completed only partially. + * This means that the state of the attribute table is undefined, and the application should either provide a new set of attributes using this same call or + * reset the SoftDevice to return to a known state. + * + * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS is used with this function, only the system attributes included in system services will be modified. + * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS is used with this function, only the system attributes included in user services will be modified. + * + * @mscs + * @mmsc{@ref BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC} + * @mmsc{@ref BLE_GATTS_SYS_ATTRS_UNK_PEER_MSC} + * @mmsc{@ref BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_sys_attr_data Pointer to a saved copy of system attributes supplied to the stack, or NULL. + * @param[in] len Size of data pointed by p_sys_attr_data, in octets. + * @param[in] flags Optional additional flags, see @ref BLE_GATTS_SYS_ATTR_FLAGS + * + * @retval ::NRF_SUCCESS Successfully set the system attribute information. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid flags supplied. + * @retval ::NRF_ERROR_INVALID_DATA Invalid data supplied, the data should be exactly the same as retrieved with @ref sd_ble_gatts_sys_attr_get. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @retval ::NRF_ERROR_BUSY The stack is busy. Retry at later time. + */ +SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const *p_sys_attr_data, uint16_t len, uint32_t flags)); + + +/**@brief Retrieve persistent system attribute information from the stack. + * + * @details This call is used to retrieve information about values to be stored perisistently by the application + * during the lifetime of a connection or after it has been terminated. When a new connection is established with the same bonded device, + * the system attribute information retrieved with this function should be restored using using @ref sd_ble_gatts_sys_attr_set. + * If retrieved after disconnection, the data should be read before a new connection established. The connection handle for + * the previous, now disconnected, connection will remain valid until a new one is created to allow this API call to refer to it. + * Connection handles belonging to active connections can be used as well, but care should be taken since the system attributes + * may be written to at any time by the peer during a connection's lifetime. + * + * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS is used with this function, only the system attributes included in system services will be returned. + * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS is used with this function, only the system attributes included in user services will be returned. + * + * @mscs + * @mmsc{@ref BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle of the recently terminated connection. + * @param[out] p_sys_attr_data Pointer to a buffer where updated information about system attributes will be filled in. The format of the data is described + * in @ref BLE_GATTS_SYS_ATTRS_FORMAT. NULL can be provided to obtain the length of the data. + * @param[in,out] p_len Size of application buffer if p_sys_attr_data is not NULL. Unconditially updated to actual length of system attribute data. + * @param[in] flags Optional additional flags, see @ref BLE_GATTS_SYS_ATTR_FLAGS + * + * @retval ::NRF_SUCCESS Successfully retrieved the system attribute information. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid flags supplied. + * @retval ::NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer. + * @retval ::NRF_ERROR_NOT_FOUND No system attributes found. + */ +SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t *p_sys_attr_data, uint16_t *p_len, uint32_t flags)); + + +/**@brief Retrieve the first valid user attribute handle. + * + * @param[out] p_handle Pointer to an integer where the handle will be stored. + * + * @retval ::NRF_SUCCESS Successfully retrieved the handle. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GATTS_INITIAL_USER_HANDLE_GET, uint32_t, sd_ble_gatts_initial_user_handle_get(uint16_t *p_handle)); + +/**@brief Retrieve the attribute UUID and/or metadata. + * + * @param[in] handle Attribute handle + * @param[out] p_uuid UUID of the attribute. Use NULL to omit this field. + * @param[out] p_md Metadata of the attribute. Use NULL to omit this field. + * + * @retval ::NRF_SUCCESS Successfully retrieved the attribute metadata, + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameters supplied. Returned when both @c p_uuid and @c p_md are NULL. + * @retval ::NRF_ERROR_NOT_FOUND Attribute was not found. + */ +SVCALL(SD_BLE_GATTS_ATTR_GET, uint32_t, sd_ble_gatts_attr_get(uint16_t handle, ble_uuid_t * p_uuid, ble_gatts_attr_md_t * p_md)); + +/**@brief Reply to an ATT_MTU exchange request by sending an Exchange MTU Response to the client. + * + * @details This function is only used to reply to a @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST event. + * + * @details The SoftDevice sets ATT_MTU to the minimum of: + * - The Client RX MTU value from @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST, and + * - The Server RX MTU value. + * + * However, the SoftDevice never sets ATT_MTU lower than @ref GATT_MTU_SIZE_DEFAULT. + * + * @events + * @event{@ref BLE_EVT_DATA_LENGTH_CHANGED, Generated if a data length update procedure is performed after the ATT_MTU exchange.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTS_MTU_EXCHANGE} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] server_rx_mtu Server RX MTU size. + * - The minimum value is @ref GATT_MTU_SIZE_DEFAULT. + * - The maximum value is @ref ble_gatt_enable_params_t::att_mtu. + * - The value must be equal to Client RX MTU size given in @ref sd_ble_gattc_exchange_mtu_request + * if an ATT_MTU exchange has already been performed in the other direction. + * + * @retval ::NRF_SUCCESS Successfully sent response to the client. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no ATT_MTU exchange request pending. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid Server RX MTU size supplied. + * @retval ::NRF_ERROR_BUSY The stack is busy. Retry at later time. + */ +SVCALL(SD_BLE_GATTS_EXCHANGE_MTU_REPLY, uint32_t, sd_ble_gatts_exchange_mtu_reply(uint16_t conn_handle, uint16_t server_rx_mtu)); +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // BLE_GATTS_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_hci.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_hci.h new file mode 100644 index 0000000..4c7a5d5 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_hci.h @@ -0,0 +1,131 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_COMMON + @{ +*/ + + +#ifndef BLE_HCI_H__ +#define BLE_HCI_H__ +#ifdef __cplusplus +extern "C" { +#endif + +/** @defgroup BLE_HCI_STATUS_CODES Bluetooth status codes + * @{ */ + +#define BLE_HCI_STATUS_CODE_SUCCESS 0x00 /**< Success. */ +#define BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND 0x01 /**< Unknown BLE Command. */ +#define BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER 0x02 /**< Unknown Connection Identifier. */ +/*0x03 Hardware Failure +0x04 Page Timeout +*/ +#define BLE_HCI_AUTHENTICATION_FAILURE 0x05 /**< Authentication Failure. */ +#define BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING 0x06 /**< Pin or Key missing. */ +#define BLE_HCI_MEMORY_CAPACITY_EXCEEDED 0x07 /**< Memory Capacity Exceeded. */ +#define BLE_HCI_CONNECTION_TIMEOUT 0x08 /**< Connection Timeout. */ +/*0x09 Connection Limit Exceeded +0x0A Synchronous Connection Limit To A Device Exceeded +0x0B ACL Connection Already Exists*/ +#define BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED 0x0C /**< Command Disallowed. */ +/*0x0D Connection Rejected due to Limited Resources +0x0E Connection Rejected Due To Security Reasons +0x0F Connection Rejected due to Unacceptable BD_ADDR +0x10 Connection Accept Timeout Exceeded +0x11 Unsupported Feature or Parameter Value*/ +#define BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS 0x12 /**< Invalid BLE Command Parameters. */ +#define BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION 0x13 /**< Remote User Terminated Connection. */ +#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES 0x14 /**< Remote Device Terminated Connection due to low resources.*/ +#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF 0x15 /**< Remote Device Terminated Connection due to power off. */ +#define BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION 0x16 /**< Local Host Terminated Connection. */ +/* +0x17 Repeated Attempts +0x18 Pairing Not Allowed +0x19 Unknown LMP PDU +*/ +#define BLE_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A /**< Unsupported Remote Feature. */ +/* +0x1B SCO Offset Rejected +0x1C SCO Interval Rejected +0x1D SCO Air Mode Rejected*/ +#define BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS 0x1E /**< Invalid LMP Parameters. */ +#define BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR 0x1F /**< Unspecified Error. */ +/*0x20 Unsupported LMP Parameter Value +0x21 Role Change Not Allowed +*/ +#define BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT 0x22 /**< LMP Response Timeout. */ +/*0x23 LMP Error Transaction Collision*/ +#define BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED 0x24 /**< LMP PDU Not Allowed. */ +/*0x25 Encryption Mode Not Acceptable +0x26 Link Key Can Not be Changed +0x27 Requested QoS Not Supported +*/ +#define BLE_HCI_INSTANT_PASSED 0x28 /**< Instant Passed. */ +#define BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED 0x29 /**< Pairing with Unit Key Unsupported. */ +#define BLE_HCI_DIFFERENT_TRANSACTION_COLLISION 0x2A /**< Different Transaction Collision. */ +/* +0x2B Reserved +0x2C QoS Unacceptable Parameter +0x2D QoS Rejected +0x2E Channel Classification Not Supported +0x2F Insufficient Security +0x30 Parameter Out Of Mandatory Range +0x31 Reserved +0x32 Role Switch Pending +0x33 Reserved +0x34 Reserved Slot Violation +0x35 Role Switch Failed +0x36 Extended Inquiry Response Too Large +0x37 Secure Simple Pairing Not Supported By Host. +0x38 Host Busy - Pairing +0x39 Connection Rejected due to No Suitable Channel Found*/ +#define BLE_HCI_CONTROLLER_BUSY 0x3A /**< Controller Busy. */ +#define BLE_HCI_CONN_INTERVAL_UNACCEPTABLE 0x3B /**< Connection Interval Unacceptable. */ +#define BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT 0x3C /**< Directed Adverisement Timeout. */ +#define BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE 0x3D /**< Connection Terminated due to MIC Failure. */ +#define BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED 0x3E /**< Connection Failed to be Established. */ + +/** @} */ + + +#ifdef __cplusplus +} +#endif +#endif // BLE_HCI_H__ + +/** @} */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_l2cap.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_l2cap.h new file mode 100644 index 0000000..a180840 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_l2cap.h @@ -0,0 +1,202 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_L2CAP Logical Link Control and Adaptation Protocol (L2CAP) + @{ + @brief Definitions and prototypes for the L2CAP interface. + */ + +#ifndef BLE_L2CAP_H__ +#define BLE_L2CAP_H__ + +#include "ble_types.h" +#include "ble_ranges.h" +#include "ble_err.h" +#include "nrf_svc.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/**@addtogroup BLE_L2CAP_ENUMERATIONS Enumerations + * @{ */ + +/**@brief L2CAP API SVC numbers. */ +enum BLE_L2CAP_SVCS +{ + SD_BLE_L2CAP_CID_REGISTER = BLE_L2CAP_SVC_BASE, /**< Register a CID. */ + SD_BLE_L2CAP_CID_UNREGISTER, /**< Unregister a CID. */ + SD_BLE_L2CAP_TX /**< Transmit a packet. */ +}; + +/**@brief L2CAP Event IDs. */ +enum BLE_L2CAP_EVTS +{ + BLE_L2CAP_EVT_RX = BLE_L2CAP_EVT_BASE /**< L2CAP packet received. */ +}; + +/** @} */ + +/**@addtogroup BLE_L2CAP_DEFINES Defines + * @{ */ + +/**@defgroup BLE_ERRORS_L2CAP SVC return values specific to L2CAP + * @{ */ +#define BLE_ERROR_L2CAP_CID_IN_USE (NRF_L2CAP_ERR_BASE + 0x000) /**< CID already in use. */ +/** @} */ + +/**@brief Default L2CAP MTU. */ +#define BLE_L2CAP_MTU_DEF (23) + +/**@brief Invalid Channel Identifier. */ +#define BLE_L2CAP_CID_INVALID (0x0000) + +/**@brief Dynamic Channel Identifier base. */ +#define BLE_L2CAP_CID_DYN_BASE (0x0040) + +/**@brief Maximum amount of dynamic CIDs. */ +#define BLE_L2CAP_CID_DYN_MAX (8) + +/** @} */ + +/**@addtogroup BLE_L2CAP_STRUCTURES Structures + * @{ */ + +/**@brief Packet header format for L2CAP transmission. */ +typedef struct +{ + uint16_t len; /**< Length of valid info in data member. */ + uint16_t cid; /**< Channel ID on which packet is transmitted. */ +} ble_l2cap_header_t; + + +/**@brief L2CAP Received packet event report. */ +typedef struct +{ + ble_l2cap_header_t header; /**< L2CAP packet header. */ + uint8_t data[1]; /**< Packet data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_l2cap_evt_rx_t; + + +/**@brief L2CAP event callback event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occured. */ + union + { + ble_l2cap_evt_rx_t rx; /**< RX Event parameters. */ + } params; /**< Event Parameters. */ +} ble_l2cap_evt_t; + +/** @} */ + +/**@addtogroup BLE_L2CAP_FUNCTIONS Functions + * @{ */ + +/**@brief Register a CID with L2CAP. + * + * @details This registers a higher protocol layer with the L2CAP multiplexer, and is requried prior to all operations on the CID. + * + * @mscs + * @mmsc{@ref BLE_L2CAP_API_MSC} + * @endmscs + * + * @param[in] cid L2CAP CID. + * + * @retval ::NRF_SUCCESS Successfully registered a CID with the L2CAP layer. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, CID must be above @ref BLE_L2CAP_CID_DYN_BASE. + * @retval ::BLE_ERROR_L2CAP_CID_IN_USE L2CAP CID already in use. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_L2CAP_CID_REGISTER, uint32_t, sd_ble_l2cap_cid_register(uint16_t cid)); + +/**@brief Unregister a CID with L2CAP. + * + * @details This unregisters a previously registerd higher protocol layer with the L2CAP multiplexer. + * + * @mscs + * @mmsc{@ref BLE_L2CAP_API_MSC} + * @endmscs + * + * @param[in] cid L2CAP CID. + * + * @retval ::NRF_SUCCESS Successfully unregistered the CID. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_NOT_FOUND CID not previously registered. + */ +SVCALL(SD_BLE_L2CAP_CID_UNREGISTER, uint32_t, sd_ble_l2cap_cid_unregister(uint16_t cid)); + +/**@brief Transmit an L2CAP packet. + * + * @note It is important to note that a call to this function will consume an application packet, and will therefore + * generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. + * Please see the documentation of @ref sd_ble_tx_packet_count_get for more details. + * + * @events + * @event{@ref BLE_EVT_TX_COMPLETE} + * @event{@ref BLE_L2CAP_EVT_RX} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_L2CAP_API_MSC} + * @endmscs + * + * @param[in] conn_handle Connection Handle. + * @param[in] p_header Pointer to a packet header containing length and CID. + * @param[in] p_data Pointer to the data to be transmitted. + * + * @retval ::NRF_SUCCESS Successfully queued an L2CAP packet for transmission. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, CIDs must be registered beforehand with @ref sd_ble_l2cap_cid_register. + * @retval ::NRF_ERROR_NOT_FOUND CID not found. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @retval ::BLE_ERROR_NO_TX_PACKETS Not enough application packets available. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, see @ref BLE_L2CAP_MTU_DEF. + */ +SVCALL(SD_BLE_L2CAP_TX, uint32_t, sd_ble_l2cap_tx(uint16_t conn_handle, ble_l2cap_header_t const *p_header, uint8_t const *p_data)); + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // BLE_L2CAP_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_ranges.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_ranges.h new file mode 100644 index 0000000..854898c --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_ranges.h @@ -0,0 +1,138 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_COMMON + @{ + @defgroup ble_ranges Module specific SVC, event and option number subranges + @{ + + @brief Definition of SVC, event and option number subranges for each API module. + + @note + SVCs, event and option numbers are split into subranges for each API module. + Each module receives its entire allocated range of SVC calls, whether implemented or not, + but return BLE_ERROR_NOT_SUPPORTED for unimplemented or undefined calls in its range. + + Note that the symbols BLE__SVC_LAST is the end of the allocated SVC range, + rather than the last SVC function call actually defined and implemented. + + Specific SVC, event and option values are defined in each module's ble_.h file, + which defines names of each individual SVC code based on the range start value. +*/ + +#ifndef BLE_RANGES_H__ +#define BLE_RANGES_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define BLE_SVC_BASE 0x60 /**< Common BLE SVC base. */ +#define BLE_SVC_LAST 0x6B /**< Common BLE SVC last. */ + + +#define BLE_GAP_SVC_BASE 0x6C /**< GAP BLE SVC base. */ +#define BLE_GAP_SVC_LAST 0x93 /**< GAP BLE SVC last. */ + + +#define BLE_GATTC_SVC_BASE 0x94 /**< GATTC BLE SVC base. */ +#define BLE_GATTC_SVC_LAST 0x9F /**< GATTC BLE SVC last. */ + + +#define BLE_GATTS_SVC_BASE 0xA0 /**< GATTS BLE SVC base. */ +#define BLE_GATTS_SVC_LAST 0xAF /**< GATTS BLE SVC last. */ + + +#define BLE_L2CAP_SVC_BASE 0xB0 /**< L2CAP BLE SVC base. */ +#define BLE_L2CAP_SVC_LAST 0xBF /**< L2CAP BLE SVC last. */ + + +#define BLE_EVT_INVALID 0x00 /**< Invalid BLE Event. */ + + +#define BLE_EVT_BASE 0x01 /**< Common BLE Event base. */ +#define BLE_EVT_LAST 0x0F /**< Common BLE Event last. */ + + +#define BLE_GAP_EVT_BASE 0x10 /**< GAP BLE Event base. */ +#define BLE_GAP_EVT_LAST 0x2F /**< GAP BLE Event last. */ + + +#define BLE_GATTC_EVT_BASE 0x30 /**< GATTC BLE Event base. */ +#define BLE_GATTC_EVT_LAST 0x4F /**< GATTC BLE Event last. */ + + +#define BLE_GATTS_EVT_BASE 0x50 /**< GATTS BLE Event base. */ +#define BLE_GATTS_EVT_LAST 0x6F /**< GATTS BLE Event last. */ + + +#define BLE_L2CAP_EVT_BASE 0x70 /**< L2CAP BLE Event base. */ +#define BLE_L2CAP_EVT_LAST 0x8F /**< L2CAP BLE Event last. */ + + +#define BLE_OPT_INVALID 0x00 /**< Invalid BLE Option. */ + + +#define BLE_OPT_BASE 0x01 /**< Common BLE Option base. */ +#define BLE_OPT_LAST 0x1F /**< Common BLE Option last. */ + + +#define BLE_GAP_OPT_BASE 0x20 /**< GAP BLE Option base. */ +#define BLE_GAP_OPT_LAST 0x3F /**< GAP BLE Option last. */ + + +#define BLE_GATTC_OPT_BASE 0x40 /**< GATTC BLE Option base. */ +#define BLE_GATTC_OPT_LAST 0x5F /**< GATTC BLE Option last. */ + + +#define BLE_GATTS_OPT_BASE 0x60 /**< GATTS BLE Option base. */ +#define BLE_GATTS_OPT_LAST 0x7F /**< GATTS BLE Option last. */ + + +#define BLE_L2CAP_OPT_BASE 0x80 /**< L2CAP BLE Option base. */ +#define BLE_L2CAP_OPT_LAST 0x9F /**< L2CAP BLE Option last. */ + + +#ifdef __cplusplus +} +#endif +#endif /* BLE_RANGES_H__ */ + +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_types.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_types.h new file mode 100644 index 0000000..f5ccdb7 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/ble_types.h @@ -0,0 +1,213 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_COMMON + @{ + @defgroup ble_types Common types and macro definitions + @{ + + @brief Common types and macro definitions for the BLE SoftDevice. + */ + +#ifndef BLE_TYPES_H__ +#define BLE_TYPES_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup BLE_TYPES_DEFINES Defines + * @{ */ + +/** @defgroup BLE_CONN_HANDLES BLE Connection Handles + * @{ */ +#define BLE_CONN_HANDLE_INVALID 0xFFFF /**< Invalid Connection Handle. */ +#define BLE_CONN_HANDLE_ALL 0xFFFE /**< Applies to all Connection Handles. */ +/** @} */ + + +/** @defgroup BLE_UUID_VALUES Assigned Values for BLE UUIDs + * @{ */ +/* Generic UUIDs, applicable to all services */ +#define BLE_UUID_UNKNOWN 0x0000 /**< Reserved UUID. */ +#define BLE_UUID_SERVICE_PRIMARY 0x2800 /**< Primary Service. */ +#define BLE_UUID_SERVICE_SECONDARY 0x2801 /**< Secondary Service. */ +#define BLE_UUID_SERVICE_INCLUDE 0x2802 /**< Include. */ +#define BLE_UUID_CHARACTERISTIC 0x2803 /**< Characteristic. */ +#define BLE_UUID_DESCRIPTOR_CHAR_EXT_PROP 0x2900 /**< Characteristic Extended Properties Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CHAR_USER_DESC 0x2901 /**< Characteristic User Description Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG 0x2902 /**< Client Characteristic Configuration Descriptor. */ +#define BLE_UUID_DESCRIPTOR_SERVER_CHAR_CONFIG 0x2903 /**< Server Characteristic Configuration Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CHAR_PRESENTATION_FORMAT 0x2904 /**< Characteristic Presentation Format Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CHAR_AGGREGATE_FORMAT 0x2905 /**< Characteristic Aggregate Format Descriptor. */ +/* GATT specific UUIDs */ +#define BLE_UUID_GATT 0x1801 /**< Generic Attribute Profile. */ +#define BLE_UUID_GATT_CHARACTERISTIC_SERVICE_CHANGED 0x2A05 /**< Service Changed Characteristic. */ +/* GAP specific UUIDs */ +#define BLE_UUID_GAP 0x1800 /**< Generic Access Profile. */ +#define BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME 0x2A00 /**< Device Name Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_APPEARANCE 0x2A01 /**< Appearance Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_RECONN_ADDR 0x2A03 /**< Reconnection Address Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_PPCP 0x2A04 /**< Peripheral Preferred Connection Parameters Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_CAR 0x2AA6 /**< Central Address Resolution Characteristic. */ +/** @} */ + + +/** @defgroup BLE_UUID_TYPES Types of UUID + * @{ */ +#define BLE_UUID_TYPE_UNKNOWN 0x00 /**< Invalid UUID type. */ +#define BLE_UUID_TYPE_BLE 0x01 /**< Bluetooth SIG UUID (16-bit). */ +#define BLE_UUID_TYPE_VENDOR_BEGIN 0x02 /**< Vendor UUID types start at this index (128-bit). */ +/** @} */ + + +/** @defgroup BLE_APPEARANCES Bluetooth Appearance values + * @note Retrieved from http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml + * @{ */ +#define BLE_APPEARANCE_UNKNOWN 0 /**< Unknown. */ +#define BLE_APPEARANCE_GENERIC_PHONE 64 /**< Generic Phone. */ +#define BLE_APPEARANCE_GENERIC_COMPUTER 128 /**< Generic Computer. */ +#define BLE_APPEARANCE_GENERIC_WATCH 192 /**< Generic Watch. */ +#define BLE_APPEARANCE_WATCH_SPORTS_WATCH 193 /**< Watch: Sports Watch. */ +#define BLE_APPEARANCE_GENERIC_CLOCK 256 /**< Generic Clock. */ +#define BLE_APPEARANCE_GENERIC_DISPLAY 320 /**< Generic Display. */ +#define BLE_APPEARANCE_GENERIC_REMOTE_CONTROL 384 /**< Generic Remote Control. */ +#define BLE_APPEARANCE_GENERIC_EYE_GLASSES 448 /**< Generic Eye-glasses. */ +#define BLE_APPEARANCE_GENERIC_TAG 512 /**< Generic Tag. */ +#define BLE_APPEARANCE_GENERIC_KEYRING 576 /**< Generic Keyring. */ +#define BLE_APPEARANCE_GENERIC_MEDIA_PLAYER 640 /**< Generic Media Player. */ +#define BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 704 /**< Generic Barcode Scanner. */ +#define BLE_APPEARANCE_GENERIC_THERMOMETER 768 /**< Generic Thermometer. */ +#define BLE_APPEARANCE_THERMOMETER_EAR 769 /**< Thermometer: Ear. */ +#define BLE_APPEARANCE_GENERIC_HEART_RATE_SENSOR 832 /**< Generic Heart rate Sensor. */ +#define BLE_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT 833 /**< Heart Rate Sensor: Heart Rate Belt. */ +#define BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE 896 /**< Generic Blood Pressure. */ +#define BLE_APPEARANCE_BLOOD_PRESSURE_ARM 897 /**< Blood Pressure: Arm. */ +#define BLE_APPEARANCE_BLOOD_PRESSURE_WRIST 898 /**< Blood Pressure: Wrist. */ +#define BLE_APPEARANCE_GENERIC_HID 960 /**< Human Interface Device (HID). */ +#define BLE_APPEARANCE_HID_KEYBOARD 961 /**< Keyboard (HID Subtype). */ +#define BLE_APPEARANCE_HID_MOUSE 962 /**< Mouse (HID Subtype). */ +#define BLE_APPEARANCE_HID_JOYSTICK 963 /**< Joystiq (HID Subtype). */ +#define BLE_APPEARANCE_HID_GAMEPAD 964 /**< Gamepad (HID Subtype). */ +#define BLE_APPEARANCE_HID_DIGITIZERSUBTYPE 965 /**< Digitizer Tablet (HID Subtype). */ +#define BLE_APPEARANCE_HID_CARD_READER 966 /**< Card Reader (HID Subtype). */ +#define BLE_APPEARANCE_HID_DIGITAL_PEN 967 /**< Digital Pen (HID Subtype). */ +#define BLE_APPEARANCE_HID_BARCODE 968 /**< Barcode Scanner (HID Subtype). */ +#define BLE_APPEARANCE_GENERIC_GLUCOSE_METER 1024 /**< Generic Glucose Meter. */ +#define BLE_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR 1088 /**< Generic Running Walking Sensor. */ +#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE 1089 /**< Running Walking Sensor: In-Shoe. */ +#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE 1090 /**< Running Walking Sensor: On-Shoe. */ +#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP 1091 /**< Running Walking Sensor: On-Hip. */ +#define BLE_APPEARANCE_GENERIC_CYCLING 1152 /**< Generic Cycling. */ +#define BLE_APPEARANCE_CYCLING_CYCLING_COMPUTER 1153 /**< Cycling: Cycling Computer. */ +#define BLE_APPEARANCE_CYCLING_SPEED_SENSOR 1154 /**< Cycling: Speed Sensor. */ +#define BLE_APPEARANCE_CYCLING_CADENCE_SENSOR 1155 /**< Cycling: Cadence Sensor. */ +#define BLE_APPEARANCE_CYCLING_POWER_SENSOR 1156 /**< Cycling: Power Sensor. */ +#define BLE_APPEARANCE_CYCLING_SPEED_CADENCE_SENSOR 1157 /**< Cycling: Speed and Cadence Sensor. */ +#define BLE_APPEARANCE_GENERIC_PULSE_OXIMETER 3136 /**< Generic Pulse Oximeter. */ +#define BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP 3137 /**< Fingertip (Pulse Oximeter subtype). */ +#define BLE_APPEARANCE_PULSE_OXIMETER_WRIST_WORN 3138 /**< Wrist Worn(Pulse Oximeter subtype). */ +#define BLE_APPEARANCE_GENERIC_WEIGHT_SCALE 3200 /**< Generic Weight Scale. */ +#define BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS_ACT 5184 /**< Generic Outdoor Sports Activity. */ +#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_DISP 5185 /**< Location Display Device (Outdoor Sports Activity subtype). */ +#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_DISP 5186 /**< Location and Navigation Display Device (Outdoor Sports Activity subtype). */ +#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_POD 5187 /**< Location Pod (Outdoor Sports Activity subtype). */ +#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_POD 5188 /**< Location and Navigation Pod (Outdoor Sports Activity subtype). */ +/** @} */ + +/** @brief Set .type and .uuid fields of ble_uuid_struct to specified uuid value. */ +#define BLE_UUID_BLE_ASSIGN(instance, value) do {\ + instance.type = BLE_UUID_TYPE_BLE; \ + instance.uuid = value;} while (0) + +/** @brief Copy type and uuid members from src to dst ble_uuid_t pointer. Both pointers must be valid/non-null. */ +#define BLE_UUID_COPY_PTR(dst, src) do {\ + (dst)->type = (src)->type; \ + (dst)->uuid = (src)->uuid;} while (0) + +/** @brief Copy type and uuid members from src to dst ble_uuid_t struct. */ +#define BLE_UUID_COPY_INST(dst, src) do {\ + (dst).type = (src).type; \ + (dst).uuid = (src).uuid;} while (0) + +/** @brief Compare for equality both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ +#define BLE_UUID_EQ(p_uuid1, p_uuid2) \ + (((p_uuid1)->type == (p_uuid2)->type) && ((p_uuid1)->uuid == (p_uuid2)->uuid)) + +/** @brief Compare for difference both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ +#define BLE_UUID_NEQ(p_uuid1, p_uuid2) \ + (((p_uuid1)->type != (p_uuid2)->type) || ((p_uuid1)->uuid != (p_uuid2)->uuid)) + +/** @} */ + +/** @addtogroup BLE_TYPES_STRUCTURES Structures + * @{ */ + +/** @brief 128 bit UUID values. */ +typedef struct +{ + uint8_t uuid128[16]; /**< Little-Endian UUID bytes. */ +} ble_uuid128_t; + +/** @brief Bluetooth Low Energy UUID type, encapsulates both 16-bit and 128-bit UUIDs. */ +typedef struct +{ + uint16_t uuid; /**< 16-bit UUID value or octets 12-13 of 128-bit UUID. */ + uint8_t type; /**< UUID type, see @ref BLE_UUID_TYPES. If type is @ref BLE_UUID_TYPE_UNKNOWN, the value of uuid is undefined. */ +} ble_uuid_t; + +/* note: added to make the unit test work*/ +/**@brief Data structure. */ +typedef struct +{ + uint8_t *p_data; /**< Pointer to the data buffer provided to/from the application. */ + uint16_t len; /**< Length of the data buffer, in bytes. */ +} ble_data_t; + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* BLE_TYPES_H__ */ + +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf52/nrf_mbr.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf52/nrf_mbr.h new file mode 100644 index 0000000..31a3a23 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf52/nrf_mbr.h @@ -0,0 +1,217 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ +/** + @defgroup nrf_mbr_api Master Boot Record API + @{ + + @brief APIs for updating SoftDevice and BootLoader + +*/ + +/* Header guard */ +#ifndef NRF_MBR_H__ +#define NRF_MBR_H__ + +#include "nrf_svc.h" +#include + +#if !(defined(NRF52) || defined(NRF52840_XXAA)) +#error "This header file shall only be included for nRF52 projects" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup NRF_MBR_DEFINES Defines + * @{ */ + +/**@brief MBR SVC Base number. */ +#define MBR_SVC_BASE (0x18) + +/**@brief Page size in words. */ +#define MBR_PAGE_SIZE_IN_WORDS (1024) + +/** @brief The size that must be reserved for the MBR when a softdevice is written to flash. +This is the offset where the first byte of the softdevice hex file is written.*/ +#define MBR_SIZE (0x1000) + +/** @} */ + +/** @addtogroup NRF_MBR_ENUMS Enumerations + * @{ */ + +/**@brief nRF Master Boot Record API SVC numbers. */ +enum NRF_MBR_SVCS +{ + SD_MBR_COMMAND = MBR_SVC_BASE, /**< ::sd_mbr_command */ +}; + +/**@brief Possible values for ::sd_mbr_command_t.command */ +enum NRF_MBR_COMMANDS +{ + SD_MBR_COMMAND_COPY_BL, /**< Copy a new BootLoader. @see sd_mbr_command_copy_bl_t */ + SD_MBR_COMMAND_COPY_SD, /**< Copy a new SoftDevice. @see ::sd_mbr_command_copy_sd_t*/ + SD_MBR_COMMAND_INIT_SD, /**< Init forwarding interrupts to SD, and run reset function in SD*/ + SD_MBR_COMMAND_COMPARE, /**< This command works like memcmp. @see ::sd_mbr_command_compare_t*/ + SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET, /**< Start forwarding all exception to this address @see ::sd_mbr_command_vector_table_base_set_t*/ +}; + +/** @} */ + +/** @addtogroup NRF_MBR_TYPES Types + * @{ */ + +/**@brief This command copies part of a new SoftDevice + * The destination area is erased before copying. + * If dst is in the middle of a flash page, that whole flash page will be erased. + * If (dst+len) is in the middle of a flash page, that whole flash page will be erased. + * + * The user of this function is responsible for setting the BPROT registers. + * + * @retval ::NRF_SUCCESS indicates that the contents of the memory blocks where copied correctly. + * @retval ::NRF_ERROR_INTERNAL indicates that the contents of the memory blocks where not verified correctly after copying. + */ +typedef struct +{ + uint32_t *src; /**< Pointer to the source of data to be copied.*/ + uint32_t *dst; /**< Pointer to the destination where the content is to be copied.*/ + uint32_t len; /**< Number of 32 bit words to copy. Must be a multiple of @ref MBR_PAGE_SIZE_IN_WORDS words.*/ +} sd_mbr_command_copy_sd_t; + + +/**@brief This command works like memcmp, but takes the length in words. + * + * @retval ::NRF_SUCCESS indicates that the contents of both memory blocks are equal. + * @retval ::NRF_ERROR_NULL indicates that the contents of the memory blocks are not equal. + */ +typedef struct +{ + uint32_t *ptr1; /**< Pointer to block of memory. */ + uint32_t *ptr2; /**< Pointer to block of memory. */ + uint32_t len; /**< Number of 32 bit words to compare.*/ +} sd_mbr_command_compare_t; + + +/**@brief This command copies a new BootLoader. + * With this command, destination of BootLoader is always the address written in NRF_UICR->BOOTADDR. + * + * Destination is erased by this function. + * If (destination+bl_len) is in the middle of a flash page, that whole flash page will be erased. + * + * This function will use PROTENSET to protect the flash that is not intended to be written. + * + * On Success, this function will not return. It will start the new BootLoader from reset-vector as normal. + * + * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen. + * @retval ::NRF_ERROR_FORBIDDEN if NRF_UICR->BOOTADDR is not set. + * @retval ::NRF_ERROR_INVALID_LENGTH if parameters attempts to read or write outside flash area. + * @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see sds for more info) + */ +typedef struct +{ + uint32_t *bl_src; /**< Pointer to the source of the Bootloader to be be copied.*/ + uint32_t bl_len; /**< Number of 32 bit words to copy for BootLoader. */ +} sd_mbr_command_copy_bl_t; + +/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the MBR + * + * Once this function has been called, this address is where the MBR will start to forward interrupts to after a reset. + * + * To restore default forwarding this function should be called with @param address set to 0. + * The MBR will then start forwarding to interrupts to the address in NFR_UICR->BOOTADDR or to the SoftDevice if the BOOTADDR is not set. + * + * On Success, this function will not return. It will reset the device. + * + * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen. + * @retval ::NRF_ERROR_INVALID_ADDR if parameter address is outside of the flash size. + * @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see sds for more info) + */ +typedef struct +{ + uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/ +} sd_mbr_command_vector_table_base_set_t; + + +typedef struct +{ + uint32_t command; /**< type of command to be issued see @ref NRF_MBR_COMMANDS. */ + union + { + sd_mbr_command_copy_sd_t copy_sd; /**< Parameters for copy SoftDevice.*/ + sd_mbr_command_compare_t compare; /**< Parameters for verify.*/ + sd_mbr_command_copy_bl_t copy_bl; /**< Parameters for copy BootLoader. Requires parameter page. */ + sd_mbr_command_vector_table_base_set_t base_set; /**< Parameters for vector table base set. Requires parameter page.*/ + } params; +} sd_mbr_command_t; + +/** @} */ + +/** @addtogroup NRF_MBR_FUNCTIONS Functions + * @{ */ + +/**@brief Issue Master Boot Record commands + * + * Commands used when updating a SoftDevice and bootloader. + * + * The SD_MBR_COMMAND_COPY_BL and SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET requires parameters to be + * retained by the MBR when resetting the IC. This is done in a separate flash page + * provided by the application. The uicr register UICR.NRFFW[1] must be set + * to an address corresponding to a page in the application flash space. This page will be cleared + * by the MBR and used to store the command before reset. When the UICR.NRFFW[1] field is set + * the page it refers to must not be used by the application. If the UICR.NRFFW[1] is set to + * 0xFFFFFFFF (the default) MBR commands which use flash will be unavailable and return + * NRF_ERROR_NO_MEM. + * + * @param[in] param Pointer to a struct describing the command. + * + * @note for retvals see ::sd_mbr_command_copy_sd_t ::sd_mbr_command_copy_bl_t ::sd_mbr_command_compare_t ::sd_mbr_command_vector_table_base_set_t + * + * @retval NRF_ERROR_NO_MEM if UICR.NRFFW[1] is not set (i.e. is 0xFFFFFFFF). + * @retval NRF_ERROR_INVALID_PARAM if an invalid command is given. +*/ +SVCALL(SD_MBR_COMMAND, uint32_t, sd_mbr_command(sd_mbr_command_t* param)); + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // NRF_MBR_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_error.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_error.h new file mode 100644 index 0000000..55ce59e --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_error.h @@ -0,0 +1,87 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + /** + @defgroup nrf_error SoftDevice Global Error Codes + @{ + + @brief Global Error definitions +*/ + +/* Header guard */ +#ifndef NRF_ERROR_H__ +#define NRF_ERROR_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/** @defgroup NRF_ERRORS_BASE Error Codes Base number definitions + * @{ */ +#define NRF_ERROR_BASE_NUM (0x0) ///< Global error base +#define NRF_ERROR_SDM_BASE_NUM (0x1000) ///< SDM error base +#define NRF_ERROR_SOC_BASE_NUM (0x2000) ///< SoC error base +#define NRF_ERROR_STK_BASE_NUM (0x3000) ///< STK error base +/** @} */ + +#define NRF_SUCCESS (NRF_ERROR_BASE_NUM + 0) ///< Successful command +#define NRF_ERROR_SVC_HANDLER_MISSING (NRF_ERROR_BASE_NUM + 1) ///< SVC handler is missing +#define NRF_ERROR_SOFTDEVICE_NOT_ENABLED (NRF_ERROR_BASE_NUM + 2) ///< SoftDevice has not been enabled +#define NRF_ERROR_INTERNAL (NRF_ERROR_BASE_NUM + 3) ///< Internal Error +#define NRF_ERROR_NO_MEM (NRF_ERROR_BASE_NUM + 4) ///< No Memory for operation +#define NRF_ERROR_NOT_FOUND (NRF_ERROR_BASE_NUM + 5) ///< Not found +#define NRF_ERROR_NOT_SUPPORTED (NRF_ERROR_BASE_NUM + 6) ///< Not supported +#define NRF_ERROR_INVALID_PARAM (NRF_ERROR_BASE_NUM + 7) ///< Invalid Parameter +#define NRF_ERROR_INVALID_STATE (NRF_ERROR_BASE_NUM + 8) ///< Invalid state, operation disallowed in this state +#define NRF_ERROR_INVALID_LENGTH (NRF_ERROR_BASE_NUM + 9) ///< Invalid Length +#define NRF_ERROR_INVALID_FLAGS (NRF_ERROR_BASE_NUM + 10) ///< Invalid Flags +#define NRF_ERROR_INVALID_DATA (NRF_ERROR_BASE_NUM + 11) ///< Invalid Data +#define NRF_ERROR_DATA_SIZE (NRF_ERROR_BASE_NUM + 12) ///< Invalid Data size +#define NRF_ERROR_TIMEOUT (NRF_ERROR_BASE_NUM + 13) ///< Operation timed out +#define NRF_ERROR_NULL (NRF_ERROR_BASE_NUM + 14) ///< Null Pointer +#define NRF_ERROR_FORBIDDEN (NRF_ERROR_BASE_NUM + 15) ///< Forbidden Operation +#define NRF_ERROR_INVALID_ADDR (NRF_ERROR_BASE_NUM + 16) ///< Bad Memory Address +#define NRF_ERROR_BUSY (NRF_ERROR_BASE_NUM + 17) ///< Busy +#define NRF_ERROR_CONN_COUNT (NRF_ERROR_BASE_NUM + 18) ///< Maximum connection count exceeded. +#define NRF_ERROR_RESOURCES (NRF_ERROR_BASE_NUM + 19) ///< Not enough resources for operation + +#ifdef __cplusplus +} +#endif +#endif // NRF_ERROR_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_error_sdm.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_error_sdm.h new file mode 100644 index 0000000..3881071 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_error_sdm.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + /** + @addtogroup nrf_sdm_api + @{ + @defgroup nrf_sdm_error SoftDevice Manager Error Codes + @{ + + @brief Error definitions for the SDM API +*/ + +/* Header guard */ +#ifndef NRF_ERROR_SDM_H__ +#define NRF_ERROR_SDM_H__ + +#include "nrf_error.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN (NRF_ERROR_SDM_BASE_NUM + 0) ///< Unknown lfclk source. +#define NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION (NRF_ERROR_SDM_BASE_NUM + 1) ///< Incorrect interrupt configuration (can be caused by using illegal priority levels, or having enabled SoftDevice interrupts). +#define NRF_ERROR_SDM_INCORRECT_CLENR0 (NRF_ERROR_SDM_BASE_NUM + 2) ///< Incorrect CLENR0 (can be caused by erronous SoftDevice flashing). + +#ifdef __cplusplus +} +#endif +#endif // NRF_ERROR_SDM_H__ + +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_error_soc.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_error_soc.h new file mode 100644 index 0000000..b876fc4 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_error_soc.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ +/** + @addtogroup nrf_soc_api + @{ + @defgroup nrf_soc_error SoC Library Error Codes + @{ + + @brief Error definitions for the SoC library + +*/ + +/* Header guard */ +#ifndef NRF_ERROR_SOC_H__ +#define NRF_ERROR_SOC_H__ + +#include "nrf_error.h" +#ifdef __cplusplus +extern "C" { +#endif + +/* Mutex Errors */ +#define NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN (NRF_ERROR_SOC_BASE_NUM + 0) ///< Mutex already taken + +/* NVIC errors */ +#define NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE (NRF_ERROR_SOC_BASE_NUM + 1) ///< NVIC interrupt not available +#define NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED (NRF_ERROR_SOC_BASE_NUM + 2) ///< NVIC interrupt priority not allowed +#define NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 3) ///< NVIC should not return + +/* Power errors */ +#define NRF_ERROR_SOC_POWER_MODE_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 4) ///< Power mode unknown +#define NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 5) ///< Power POF threshold unknown +#define NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 6) ///< Power off should not return + +/* Rand errors */ +#define NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES (NRF_ERROR_SOC_BASE_NUM + 7) ///< RAND not enough values + +/* PPI errors */ +#define NRF_ERROR_SOC_PPI_INVALID_CHANNEL (NRF_ERROR_SOC_BASE_NUM + 8) ///< Invalid PPI Channel +#define NRF_ERROR_SOC_PPI_INVALID_GROUP (NRF_ERROR_SOC_BASE_NUM + 9) ///< Invalid PPI Group + +#ifdef __cplusplus +} +#endif +#endif // NRF_ERROR_SOC_H__ +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_nvic.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_nvic.h new file mode 100644 index 0000000..40a6f84 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_nvic.h @@ -0,0 +1,485 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ +/** + * @defgroup nrf_nvic_api SoftDevice NVIC API + * @{ + * + * @note In order to use this module, the following code has to be added to a .c file: + * \code + * nrf_nvic_state_t nrf_nvic_state = {0}; + * \endcode + * + * @note Definitions and declarations starting with __ (double underscore) in this header file are + * not intended for direct use by the application. + * + * @brief APIs for the accessing NVIC when using a SoftDevice. + * + */ + +#ifndef NRF_NVIC_H__ +#define NRF_NVIC_H__ + +#include +#include "nrf.h" + +#include "nrf_error_soc.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/**@addtogroup NRF_NVIC_DEFINES Defines + * @{ */ + +/**@defgroup NRF_NVIC_ISER_DEFINES SoftDevice NVIC internal definitions + * @{ */ + +#define __NRF_NVIC_NVMC_IRQn (30) /**< The peripheral ID of the NVMC. IRQ numbers are used to identify peripherals, but the NVMC doesn't have an IRQ number in the MDK. */ + +#ifdef NRF51 + #define __NRF_NVIC_ISER_COUNT (1) /**< The number of ISER/ICER registers in the NVIC that are used. */ + + /**@brief Interrupts used by the SoftDevice. */ + #define __NRF_NVIC_SD_IRQS_0 ((uint32_t)( \ + (1U << POWER_CLOCK_IRQn) \ + | (1U << RADIO_IRQn) \ + | (1U << RTC0_IRQn) \ + | (1U << TIMER0_IRQn) \ + | (1U << RNG_IRQn) \ + | (1U << ECB_IRQn) \ + | (1U << CCM_AAR_IRQn) \ + | (1U << TEMP_IRQn) \ + | (1U << __NRF_NVIC_NVMC_IRQn) \ + | (1U << (uint32_t)SWI4_IRQn) \ + | (1U << (uint32_t)SWI5_IRQn) \ + )) + + /**@brief Interrupts available for to application. */ + #define __NRF_NVIC_APP_IRQS_0 (~__NRF_NVIC_SD_IRQS_0) +#endif + +#if (defined(NRF52) || defined(NRF52840_XXAA)) + #define __NRF_NVIC_ISER_COUNT (2) /**< The number of ISER/ICER registers in the NVIC that are used. */ + + /**@brief Interrupts used by the SoftDevice. */ + #define __NRF_NVIC_SD_IRQS_0 ((uint32_t)( \ + (1U << POWER_CLOCK_IRQn) \ + | (1U << RADIO_IRQn) \ + | (1U << RTC0_IRQn) \ + | (1U << TIMER0_IRQn) \ + | (1U << RNG_IRQn) \ + | (1U << ECB_IRQn) \ + | (1U << CCM_AAR_IRQn) \ + | (1U << TEMP_IRQn) \ + | (1U << __NRF_NVIC_NVMC_IRQn) \ + | (1U << (uint32_t)SWI4_EGU4_IRQn) \ + | (1U << (uint32_t)SWI5_EGU5_IRQn) \ + )) + #define __NRF_NVIC_SD_IRQS_1 ((uint32_t)0) + + /**@brief Interrupts available for to application. */ + #define __NRF_NVIC_APP_IRQS_0 (~__NRF_NVIC_SD_IRQS_0) + #define __NRF_NVIC_APP_IRQS_1 (~__NRF_NVIC_SD_IRQS_1) +#endif +/**@} */ + +/**@} */ + +/**@addtogroup NRF_NVIC_VARIABLES Variables + * @{ */ + +/**@brief Type representing the state struct for the SoftDevice NVIC module. */ +typedef struct +{ + uint32_t volatile __irq_masks[__NRF_NVIC_ISER_COUNT]; /**< IRQs enabled by the application in the NVIC. */ + uint32_t volatile __cr_flag; /**< Non-zero if already in a critical region */ +} nrf_nvic_state_t; + +/**@brief Variable keeping the state for the SoftDevice NVIC module. This must be declared in an + * application source file. */ +extern nrf_nvic_state_t nrf_nvic_state; + +/**@} */ + +/**@addtogroup NRF_NVIC_INTERNAL_FUNCTIONS SoftDevice NVIC internal functions + * @{ */ + +/**@brief Disables IRQ interrupts globally, including the SoftDevice's interrupts. + * + * @retval The value of PRIMASK prior to disabling the interrupts. + */ +static inline int __sd_nvic_irq_disable(void) +{ + int pm = __get_PRIMASK(); + __disable_irq(); + return pm; +} + +/**@brief Enables IRQ interrupts globally, including the SoftDevice's interrupts. + */ +static inline void __sd_nvic_irq_enable(void) +{ + __enable_irq(); +} + +/**@brief Checks if IRQn is available to application + * @param[in] IRQn irq to check + * + * @retval 1 (true) if the irq to check is available to the application + */ +static inline uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn) +{ + if (IRQn < 32) + { + return ((1UL<= (1 << __NVIC_PRIO_BITS)) + { + return 0; + } +#ifdef NRF51 + if ( priority == 0 + || priority == 2 + ) + { + return 0; + } +#endif +#if (defined(NRF52) || defined(NRF52840_XXAA)) + if ( priority == 0 + || priority == 1 + || priority == 4 + || priority == 5 + ) + { + return 0; + } +#endif + return 1; +} + +/**@} */ + +/**@addtogroup NRF_NVIC_FUNCTIONS SoftDevice NVIC public functions + * @{ */ + +/**@brief Enable External Interrupt. + * @note Corresponds to NVIC_EnableIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_EnableIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt was enabled. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt has a priority not available for the application. + */ +static inline uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn) +{ + if (!__sd_nvic_app_accessible_irq(IRQn)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } + if (!__sd_nvic_is_app_accessible_priority(NVIC_GetPriority(IRQn))) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; + } + + if (nrf_nvic_state.__cr_flag) + { + nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] |= (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); + } + else + { + NVIC_EnableIRQ(IRQn); + } + return NRF_SUCCESS; +} + +/**@brief Disable External Interrupt. + * @note Corresponds to NVIC_DisableIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_DisableIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt was disabled. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. + */ +static inline uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn) +{ + if (!__sd_nvic_app_accessible_irq(IRQn)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } + + if (nrf_nvic_state.__cr_flag) + { + nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] &= ~(1UL << ((uint32_t)(IRQn) & 0x1F)); + } + else + { + NVIC_DisableIRQ(IRQn); + } + + return NRF_SUCCESS; +} + +/**@brief Get Pending Interrupt. + * @note Corresponds to NVIC_GetPendingIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_GetPendingIRQ documentation in CMSIS. + * @param[out] p_pending_irq Return value from NVIC_GetPendingIRQ. + * + * @retval ::NRF_SUCCESS The interrupt is available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +static inline uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + *p_pending_irq = NVIC_GetPendingIRQ(IRQn); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + +/**@brief Set Pending Interrupt. + * @note Corresponds to NVIC_SetPendingIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_SetPendingIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt is set pending. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +static inline uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + NVIC_SetPendingIRQ(IRQn); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + +/**@brief Clear Pending Interrupt. + * @note Corresponds to NVIC_ClearPendingIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_ClearPendingIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt pending flag is cleared. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +static inline uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + NVIC_ClearPendingIRQ(IRQn); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + +/**@brief Set Interrupt Priority. + * @note Corresponds to NVIC_SetPriority in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * @pre Priority is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_SetPriority documentation in CMSIS. + * @param[in] priority A valid IRQ priority for use by the application. + * + * @retval ::NRF_SUCCESS The interrupt and priority level is available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt priority is not available for the application. + */ +static inline uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if (!__sd_nvic_app_accessible_irq(IRQn)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } + + if (!__sd_nvic_is_app_accessible_priority(priority)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; + } + + NVIC_SetPriority(IRQn, (uint32_t)priority); + return NRF_SUCCESS; +} + +/**@brief Get Interrupt Priority. + * @note Corresponds to NVIC_GetPriority in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_GetPriority documentation in CMSIS. + * @param[out] p_priority Return value from NVIC_GetPriority. + * + * @retval ::NRF_SUCCESS The interrupt priority is returned in p_priority. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE - IRQn is not available for the application. + */ +static inline uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + *p_priority = (NVIC_GetPriority(IRQn) & 0xFF); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + +/**@brief System Reset. + * @note Corresponds to NVIC_SystemReset in CMSIS. + * + * @retval ::NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN + */ +static inline uint32_t sd_nvic_SystemReset(void) +{ + NVIC_SystemReset(); + return NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN; +} + +/**@brief Enters critical region. + * + * @post Application interrupts will be disabled. + * @note sd_nvic_critical_region_enter() and ::sd_nvic_critical_region_exit() must be called in matching pairs inside each + * execution context + * @sa sd_nvic_critical_region_exit + * + * @param[out] p_is_nested_critical_region If 1, the application is now in a nested critical region. + * + * @retval ::NRF_SUCCESS + */ +static inline uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region) +{ + int was_masked = __sd_nvic_irq_disable(); + if (!nrf_nvic_state.__cr_flag) + { + nrf_nvic_state.__cr_flag = 1; + nrf_nvic_state.__irq_masks[0] = ( NVIC->ICER[0] & __NRF_NVIC_APP_IRQS_0 ); + NVIC->ICER[0] = __NRF_NVIC_APP_IRQS_0; + #if (defined(NRF52) || defined(NRF52840_XXAA)) + nrf_nvic_state.__irq_masks[1] = ( NVIC->ICER[1] & __NRF_NVIC_APP_IRQS_1 ); + NVIC->ICER[1] = __NRF_NVIC_APP_IRQS_1; + #endif + *p_is_nested_critical_region = 0; + } + else + { + *p_is_nested_critical_region = 1; + } + if (!was_masked) + { + __sd_nvic_irq_enable(); + } + return NRF_SUCCESS; +} + +/**@brief Exit critical region. + * + * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter. + * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. + * + * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter. + * + * @retval ::NRF_SUCCESS + */ +static inline uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region) +{ + if (nrf_nvic_state.__cr_flag && (is_nested_critical_region == 0)) + { + int was_masked = __sd_nvic_irq_disable(); + NVIC->ISER[0] = nrf_nvic_state.__irq_masks[0]; + #if (defined(NRF52) || defined(NRF52840_XXAA)) + NVIC->ISER[1] = nrf_nvic_state.__irq_masks[1]; + #endif + nrf_nvic_state.__cr_flag = 0; + if (!was_masked) + { + __sd_nvic_irq_enable(); + } + } + + return NRF_SUCCESS; +} +/**@} */ + +#ifdef __cplusplus +} +#endif + +#endif // NRF_NVIC_H__ + +/**@} */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_sd_def.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_sd_def.h new file mode 100644 index 0000000..58e699e --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_sd_def.h @@ -0,0 +1,28 @@ +/* Copyright (c) 2015 - 2018 Nordic Semiconductor ASA. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor ASA. + * The use, copying, transfer or disclosure of such information is prohibited except by + * express written agreement with Nordic Semiconductor ASA. + * + */ + +#ifndef NRF_SD_DEF_H__ +#define NRF_SD_DEF_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SD_PPI_CHANNELS_USED 0xFFF0C000uL /**< PPI channels utilized by SotfDevice (not available to the application). */ +#define SD_PPI_GROUPS_USED 0x0000000CuL /**< PPI groups utilized by SoftDevice (not available to the application). */ +#define SD_TIMERS_USED 0x00000001uL /**< Timers used by SoftDevice. */ +#define SD_SWI_USED 0x0000003CuL /**< Software interrupts used by SoftDevice */ + + +#ifdef __cplusplus +} +#endif + +#endif /* NRF_SD_DEF_H__ */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_sdm.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_sdm.h new file mode 100644 index 0000000..bb98ce0 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_sdm.h @@ -0,0 +1,331 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ +/** + @defgroup nrf_sdm_api SoftDevice Manager API + @{ + + @brief APIs for SoftDevice management. + +*/ + +#ifndef NRF_SDM_H__ +#define NRF_SDM_H__ + +#include "nrf_svc.h" +#include "nrf.h" +#include "nrf_soc.h" +#include "nrf_error_sdm.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup NRF_SDM_DEFINES Defines + * @{ */ +#ifdef NRFSOC_DOXYGEN +/// Declared in nrf_mbr.h +#define MBR_SIZE 0 +#warning test +#endif + +/** @brief The major version for the SoftDevice binary distributed with this header file. */ +#define SD_MAJOR_VERSION (3) + +/** @brief The minor version for the SoftDevice binary distributed with this header file. */ +#define SD_MINOR_VERSION (0) + +/** @brief The bugfix version for the SoftDevice binary distributed with this header file. */ +#define SD_BUGFIX_VERSION (0) + +/** @brief The full version number for the SoftDevice binary this header file was distributed + * with, as a decimal number in the form Mmmmbbb, where: + * - M is major version (one or more digits) + * - mmm is minor version (three digits) + * - bbb is bugfix version (three digits). */ +#define SD_VERSION (SD_MAJOR_VERSION * 1000000 + SD_MINOR_VERSION * 1000 + SD_BUGFIX_VERSION) + +/** @brief SoftDevice Manager SVC Base number. */ +#define SDM_SVC_BASE 0x10 + +/** @brief Invalid info field. Returned when an info field does not exist. */ +#define SDM_INFO_FIELD_INVALID (0) + +/** @brief Defines the SoftDevice Information Structure location (address) as an offset from +the start of the softdevice (without MBR)*/ +#define SOFTDEVICE_INFO_STRUCT_OFFSET (0x2000) + +/** @brief Defines the absolute SoftDevice Information Structure location (address) when the + * SoftDevice is installed just above the MBR (the usual case). */ +#define SOFTDEVICE_INFO_STRUCT_ADDRESS (SOFTDEVICE_INFO_STRUCT_OFFSET + MBR_SIZE) + +/** @brief Defines the offset for the SoftDevice Information Structure size value relative to the + * SoftDevice base address. The size value is of type uint8_t. */ +#define SD_INFO_STRUCT_SIZE_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET) + +/** @brief Defines the offset for the SoftDevice size value relative to the SoftDevice base address. + * The size value is of type uint32_t. */ +#define SD_SIZE_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x08) + +/** @brief Defines the offset for FWID value relative to the SoftDevice base address. The FWID value + * is of type uint16_t. */ +#define SD_FWID_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x0C) + +/** @brief Defines the offset for the SoftDevice ID relative to the SoftDevice base address. The ID + * is of type uint32_t. */ +#define SD_ID_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x10) + +/** @brief Defines the offset for the SoftDevice version relative to the SoftDevice base address in + * the same format as @ref SD_VERSION, stored as an uint32_t. */ +#define SD_VERSION_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x14) + +/** @brief Defines a macro for retreiving the actual SoftDevice Information Structure size value + * from a given base address. Use @ref MBR_SIZE as the argument when the SoftDevice is + * installed just above the MBR (the usual case). */ +#define SD_INFO_STRUCT_SIZE_GET(baseaddr) (*((uint8_t *) ((baseaddr) + SD_INFO_STRUCT_SIZE_OFFSET))) + +/** @brief Defines a macro for retreiving the actual SoftDevice size value from a given base + * address. Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above + * the MBR (the usual case). */ +#define SD_SIZE_GET(baseaddr) (*((uint32_t *) ((baseaddr) + SD_SIZE_OFFSET))) + +/** @brief Defines a macro for retreiving the actual FWID value from a given base address. Use @ref + * MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the usual + * case). */ +#define SD_FWID_GET(baseaddr) (*((uint16_t *) ((baseaddr) + SD_FWID_OFFSET))) + +/** @brief Defines a macro for retreiving the actual SoftDevice ID from a given base address. Use + * @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the + * usual case). */ +#define SD_ID_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_ID_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ + ? (*((uint32_t *) ((baseaddr) + SD_ID_OFFSET))) : SDM_INFO_FIELD_INVALID) + +/** @brief Defines a macro for retreiving the actual FWID value from a given base address. Use @ref + * MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the usual + * case). */ +#define SD_VERSION_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_VERSION_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ + ? (*((uint32_t *) ((baseaddr) + SD_VERSION_OFFSET))) : SDM_INFO_FIELD_INVALID) + +/**@defgroup NRF_FAULT_ID_RANGES Fault ID ranges + * @{ */ +#define NRF_FAULT_ID_SD_RANGE_START 0x00000000 /**< SoftDevice ID range start. */ +#define NRF_FAULT_ID_APP_RANGE_START 0x00001000 /**< Application ID range start. */ +/**@} */ + +/**@defgroup NRF_FAULT_IDS Fault ID types + * @{ */ +#define NRF_FAULT_ID_SD_ASSERT (NRF_FAULT_ID_SD_RANGE_START + 1) /**< SoftDevice assertion. The info parameter will be set to 0x00000000. */ +#define NRF_FAULT_ID_APP_MEMACC (NRF_FAULT_ID_APP_RANGE_START + 1) /**< Application invalid memory access (nRF52 only). The info parameter will contain 0x00000000, in case of SoftDevice RAM + access violation. In case of SoftDevice peripheral register violation the info parameter will contain the sub-region number of PREGION[0], on whose address range the unallowed + write access caused the memory access fault. */ +/**@} */ + +/** @} */ + +/** @addtogroup NRF_SDM_ENUMS Enumerations + * @{ */ + +/**@brief nRF SoftDevice Manager API SVC numbers. */ +enum NRF_SD_SVCS +{ + SD_SOFTDEVICE_ENABLE = SDM_SVC_BASE, /**< ::sd_softdevice_enable */ + SD_SOFTDEVICE_DISABLE, /**< ::sd_softdevice_disable */ + SD_SOFTDEVICE_IS_ENABLED, /**< ::sd_softdevice_is_enabled */ + SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, /**< ::sd_softdevice_vector_table_base_set */ + SVC_SDM_LAST /**< Placeholder for last SDM SVC */ +}; + +/** @} */ + +/** @addtogroup NRF_SDM_DEFINES Defines + * @{ */ + +/**@defgroup NRF_CLOCK_LF_XTAL_ACCURACY Clock accuracy + * @{ */ + +#define NRF_CLOCK_LF_XTAL_ACCURACY_250_PPM (0) /**< Default: 250 ppm */ +#define NRF_CLOCK_LF_XTAL_ACCURACY_500_PPM (1) /**< 500 ppm */ +#define NRF_CLOCK_LF_XTAL_ACCURACY_150_PPM (2) /**< 150 ppm */ +#define NRF_CLOCK_LF_XTAL_ACCURACY_100_PPM (3) /**< 100 ppm */ +#define NRF_CLOCK_LF_XTAL_ACCURACY_75_PPM (4) /**< 75 ppm */ +#define NRF_CLOCK_LF_XTAL_ACCURACY_50_PPM (5) /**< 50 ppm */ +#define NRF_CLOCK_LF_XTAL_ACCURACY_30_PPM (6) /**< 30 ppm */ +#define NRF_CLOCK_LF_XTAL_ACCURACY_20_PPM (7) /**< 20 ppm */ + +/** @} */ + +/**@defgroup NRF_CLOCK_LF_SRC Possible lfclk oscillator sources + * @{ */ + +#define NRF_CLOCK_LF_SRC_RC (0) /**< LFCLK RC oscillator. */ +#define NRF_CLOCK_LF_SRC_XTAL (1) /**< LFCLK crystal oscillator. */ +#define NRF_CLOCK_LF_SRC_SYNTH (2) /**< LFCLK Synthesized from HFCLK. */ + +/** @} */ + +/** @} */ + +/** @addtogroup NRF_SDM_TYPES Types + * @{ */ + +/**@brief Type representing lfclk oscillator source. */ +typedef struct +{ + uint8_t source; /**< LF oscillator clock source, see @ref NRF_CLOCK_LF_SRC. */ + uint8_t rc_ctiv; /**< Only for NRF_CLOCK_LF_SRC_RC: Calibration timer interval in 1/4 second + units (nRF51: 1-64, nRF52: 1-32). + @note To avoid excessive clock drift, 0.5 degrees Celsius is the + maximum temperature change allowed in one calibration timer + interval. The interval should be selected to ensure this. + + @note Must be 0 if source is not NRF_CLOCK_LF_SRC_RC. */ + uint8_t rc_temp_ctiv; /**< Only for NRF_CLOCK_LF_SRC_RC: How often (in number of calibration + intervals) the RC oscillator shall be calibrated if the temperature + hasn't changed. + 0: Always calibrate even if the temperature hasn't changed. + 1: Only calibrate if the temperature has changed (nRF51 only). + 2-33: Check the temperature and only calibrate if it has changed, + however calibration will take place every rc_temp_ctiv + intervals in any case. + + @note Must be 0 if source is not NRF_CLOCK_LF_SRC_RC. + + @note For nRF52, the application must ensure calibration at least once + every 8 seconds to ensure +/-250ppm clock stability. The + recommended configuration for NRF_CLOCK_LF_SRC_RC on nRF52 is + rc_ctiv=16 and rc_temp_ctiv=2. This will ensure calibration at + least once every 8 seconds and for temperature changes of 0.5 + degrees Celsius every 4 seconds. See the Product Specification + for the nRF52 device being used for more information.*/ + uint8_t xtal_accuracy; /**< External crystal clock accuracy used in the LL to compute timing windows. + + @note For the NRF_CLOCK_LF_SRC_RC clock source this parameter is ignored. */ +} nrf_clock_lf_cfg_t; + +/**@brief Fault Handler type. + * + * When certain unrecoverable errors occur within the application or SoftDevice the fault handler will be called back. + * The protocol stack will be in an undefined state when this happens and the only way to recover will be to + * perform a reset, using e.g. CMSIS NVIC_SystemReset(). + * + * @note This callback is executed in HardFault context, thus SVC functions cannot be called from the fault callback. + * + * @param[in] id Fault identifier. See @ref NRF_FAULT_IDS. + * @param[in] pc The program counter of the instruction that triggered the fault. + * @param[in] info Optional additional information regarding the fault. Refer to each Fault identifier for details. + * + * @note When id is set to NRF_FAULT_ID_APP_MEMACC, pc will contain the address of the instruction being executed at the time when + * the fault is detected by the CPU. The CPU program counter may have advanced up to 2 instructions (no branching) after the one that triggered the fault. + */ +typedef void (*nrf_fault_handler_t)(uint32_t id, uint32_t pc, uint32_t info); + +/** @} */ + +/** @addtogroup NRF_SDM_FUNCTIONS Functions + * @{ */ + +/**@brief Enables the SoftDevice and by extension the protocol stack. + * + * @note Some care must be taken if a low frequency clock source is already running when calling this function: + * If the LF clock has a different source then the one currently running, it will be stopped. Then, the new + * clock source will be started. + * + * @note This function has no effect when returning with an error. + * + * @post If return code is ::NRF_SUCCESS + * - SoC library and protocol stack APIs are made available. + * - A portion of RAM will be unavailable (see relevant SDS documentation). + * - Some peripherals will be unavailable or available only through the SoC API (see relevant SDS documentation). + * - Interrupts will not arrive from protected peripherals or interrupts. + * - nrf_nvic_ functions must be used instead of CMSIS NVIC_ functions for reliable usage of the SoftDevice. + * - Interrupt latency may be affected by the SoftDevice (see relevant SDS documentation). + * - Chosen low frequency clock source will be running. + * + * @param p_clock_lf_cfg Low frequency clock source and accuracy. + If NULL the clock will be configured as an rc source with rc_ctiv = 16 and .rc_temp_ctiv = 2 + In the case of XTAL source, the PPM accuracy of the chosen clock source must be greater than or equal to the actual characteristics of your XTAL clock. + * @param fault_handler Callback to be invoked in case of fault. + * + * @retval ::NRF_SUCCESS + * @retval ::NRF_ERROR_INVALID_STATE SoftDevice is already enabled, and the clock source and fault handler cannot be updated. + * @retval ::NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION SoftDevice interrupt is already enabled, or an enabled interrupt has an illegal priority level. + * @retval ::NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN Unknown low frequency clock source selected. + */ +SVCALL(SD_SOFTDEVICE_ENABLE, uint32_t, sd_softdevice_enable(nrf_clock_lf_cfg_t const * p_clock_lf_cfg, nrf_fault_handler_t fault_handler)); + + +/**@brief Disables the SoftDevice and by extension the protocol stack. + * + * Idempotent function to disable the SoftDevice. + * + * @post SoC library and protocol stack APIs are made unavailable. + * @post All interrupts that was protected by the SoftDevice will be disabled and initialized to priority 0 (highest). + * @post All peripherals used by the SoftDevice will be reset to default values. + * @post All of RAM become available. + * @post All interrupts are forwarded to the application. + * @post LFCLK source chosen in ::sd_softdevice_enable will be left running. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_SOFTDEVICE_DISABLE, uint32_t, sd_softdevice_disable(void)); + +/**@brief Check if the SoftDevice is enabled. + * + * @param[out] p_softdevice_enabled If the SoftDevice is enabled: 1 else 0. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_SOFTDEVICE_IS_ENABLED, uint32_t, sd_softdevice_is_enabled(uint8_t * p_softdevice_enabled)); + +/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the SoftDevice + * + * This function is only intended to be called when a bootloader is enabled. + * + * @param[in] address The base address of the interrupt vector table for forwarded interrupts. + + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, uint32_t, sd_softdevice_vector_table_base_set(uint32_t address)); + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // NRF_SDM_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_soc.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_soc.h new file mode 100644 index 0000000..2e9e820 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_soc.h @@ -0,0 +1,906 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ +/** + * @defgroup nrf_soc_api SoC Library API + * @{ + * + * @brief APIs for the SoC library. + * + */ + +#ifndef NRF_SOC_H__ +#define NRF_SOC_H__ + +#include +#include +#include "nrf_svc.h" +#include "nrf.h" + +#include "nrf_error_soc.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/**@addtogroup NRF_SOC_DEFINES Defines + * @{ */ + +/**@brief The number of the lowest SVC number reserved for the SoC library. */ +#define SOC_SVC_BASE (0x20) /**< Base value for SVCs that are available when the SoftDevice is disabled. */ +#define SOC_SVC_BASE_NOT_AVAILABLE (0x2B) /**< Base value for SVCs that are not available when the SoftDevice is disabled. */ + +/**@brief Guranteed time for application to process radio inactive notification. */ +#define NRF_RADIO_NOTIFICATION_INACTIVE_GUARANTEED_TIME_US (62) + +/**@brief The minimum allowed timeslot extension time. */ +#define NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US (200) + +#define SOC_ECB_KEY_LENGTH (16) /**< ECB key length. */ +#define SOC_ECB_CLEARTEXT_LENGTH (16) /**< ECB cleartext length. */ +#define SOC_ECB_CIPHERTEXT_LENGTH (SOC_ECB_CLEARTEXT_LENGTH) /**< ECB ciphertext length. */ + +#ifdef NRF51 +#define SD_EVT_IRQn (SWI2_IRQn) /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */ +#define SD_EVT_IRQHandler (SWI2_IRQHandler) /**< SoftDevice Event IRQ handler. Used for both protocol events and SoC events. */ +#define RADIO_NOTIFICATION_IRQn (SWI1_IRQn) /**< The radio notification IRQ number. */ +#define RADIO_NOTIFICATION_IRQHandler (SWI1_IRQHandler) /**< The radio notification IRQ handler. */ +#endif +#if (defined(NRF52) || defined(NRF52840_XXAA)) +#define SD_EVT_IRQn (SWI2_EGU2_IRQn) /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */ +#define SD_EVT_IRQHandler (SWI2_EGU2_IRQHandler) /**< SoftDevice Event IRQ handler. Used for both protocol events and SoC events. */ +#define RADIO_NOTIFICATION_IRQn (SWI1_EGU1_IRQn) /**< The radio notification IRQ number. */ +#define RADIO_NOTIFICATION_IRQHandler (SWI1_EGU1_IRQHandler) /**< The radio notification IRQ handler. */ +#endif + +#define NRF_RADIO_LENGTH_MIN_US (100) /**< The shortest allowed radio timeslot, in microseconds. */ +#define NRF_RADIO_LENGTH_MAX_US (100000) /**< The longest allowed radio timeslot, in microseconds. */ + +#define NRF_RADIO_DISTANCE_MAX_US (128000000UL - 1UL) /**< The longest timeslot distance, in microseconds, allowed for the distance parameter (see @ref nrf_radio_request_normal_t) in the request. */ + +#define NRF_RADIO_EARLIEST_TIMEOUT_MAX_US (128000000UL - 1UL) /**< The longest timeout, in microseconds, allowed when requesting the earliest possible timeslot. */ + +#define NRF_RADIO_START_JITTER_US (2) /**< The maximum jitter in @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START relative to the requested start time. */ + +/**@} */ + +/**@addtogroup NRF_SOC_ENUMS Enumerations + * @{ */ + +/**@brief The SVC numbers used by the SVC functions in the SoC library. */ +enum NRF_SOC_SVCS +{ + SD_PPI_CHANNEL_ENABLE_GET = SOC_SVC_BASE, + SD_PPI_CHANNEL_ENABLE_SET, + SD_PPI_CHANNEL_ENABLE_CLR, + SD_PPI_CHANNEL_ASSIGN, + SD_PPI_GROUP_TASK_ENABLE, + SD_PPI_GROUP_TASK_DISABLE, + SD_PPI_GROUP_ASSIGN, + SD_PPI_GROUP_GET, + SD_FLASH_PAGE_ERASE, + SD_FLASH_WRITE, + SD_FLASH_PROTECT, + SD_MUTEX_NEW = SOC_SVC_BASE_NOT_AVAILABLE, + SD_MUTEX_ACQUIRE, + SD_MUTEX_RELEASE, + SD_RAND_APPLICATION_POOL_CAPACITY_GET, + SD_RAND_APPLICATION_BYTES_AVAILABLE_GET, + SD_RAND_APPLICATION_VECTOR_GET, + SD_POWER_MODE_SET, + SD_POWER_SYSTEM_OFF, + SD_POWER_RESET_REASON_GET, + SD_POWER_RESET_REASON_CLR, + SD_POWER_POF_ENABLE, + SD_POWER_POF_THRESHOLD_SET, + SD_POWER_RAMON_SET, + SD_POWER_RAMON_CLR, + SD_POWER_RAMON_GET, + SD_POWER_GPREGRET_SET, + SD_POWER_GPREGRET_CLR, + SD_POWER_GPREGRET_GET, + SD_POWER_DCDC_MODE_SET, + SD_APP_EVT_WAIT, + SD_CLOCK_HFCLK_REQUEST, + SD_CLOCK_HFCLK_RELEASE, + SD_CLOCK_HFCLK_IS_RUNNING, + SD_RADIO_NOTIFICATION_CFG_SET, + SD_ECB_BLOCK_ENCRYPT, + SD_ECB_BLOCKS_ENCRYPT, + SD_RADIO_SESSION_OPEN, + SD_RADIO_SESSION_CLOSE, + SD_RADIO_REQUEST, + SD_EVT_GET, + SD_TEMP_GET, + SVC_SOC_LAST +}; + +/**@brief Possible values of a ::nrf_mutex_t. */ +enum NRF_MUTEX_VALUES +{ + NRF_MUTEX_FREE, + NRF_MUTEX_TAKEN +}; + +/**@brief Power modes. */ +enum NRF_POWER_MODES +{ + NRF_POWER_MODE_CONSTLAT, /**< Constant latency mode. See power management in the reference manual. */ + NRF_POWER_MODE_LOWPWR /**< Low power mode. See power management in the reference manual. */ +}; + + +/**@brief Power failure thresholds */ +enum NRF_POWER_THRESHOLDS +{ + NRF_POWER_THRESHOLD_V21, /**< 2.1 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V23, /**< 2.3 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V25, /**< 2.5 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V27 /**< 2.7 Volts power failure threshold. */ +}; + + +/**@brief DC/DC converter modes. */ +enum NRF_POWER_DCDC_MODES +{ + NRF_POWER_DCDC_DISABLE, /**< The DCDC is disabled. */ + NRF_POWER_DCDC_ENABLE /**< The DCDC is enabled. */ +}; + +/**@brief Radio notification distances. */ +enum NRF_RADIO_NOTIFICATION_DISTANCES +{ + NRF_RADIO_NOTIFICATION_DISTANCE_NONE = 0, /**< The event does not have a notification. */ + NRF_RADIO_NOTIFICATION_DISTANCE_800US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_1740US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_2680US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_3620US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_4560US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_5500US /**< The distance from the active notification to start of radio activity. */ +}; + + +/**@brief Radio notification types. */ +enum NRF_RADIO_NOTIFICATION_TYPES +{ + NRF_RADIO_NOTIFICATION_TYPE_NONE = 0, /**< The event does not have a radio notification signal. */ + NRF_RADIO_NOTIFICATION_TYPE_INT_ON_ACTIVE, /**< Using interrupt for notification when the radio will be enabled. */ + NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE, /**< Using interrupt for notification when the radio has been disabled. */ + NRF_RADIO_NOTIFICATION_TYPE_INT_ON_BOTH, /**< Using interrupt for notification both when the radio will be enabled and disabled. */ +}; + +/**@brief The Radio signal callback types. */ +enum NRF_RADIO_CALLBACK_SIGNAL_TYPE +{ + NRF_RADIO_CALLBACK_SIGNAL_TYPE_START, /**< This signal indicates the start of the radio timeslot. */ + NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0, /**< This signal indicates the NRF_TIMER0 interrupt. */ + NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO, /**< This signal indicates the NRF_RADIO interrupt. */ + NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_FAILED, /**< This signal indicates extend action failed. */ + NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_SUCCEEDED /**< This signal indicates extend action succeeded. */ +}; + +/**@brief The actions requested by the signal callback. + * + * This code gives the SOC instructions about what action to take when the signal callback has + * returned. + */ +enum NRF_RADIO_SIGNAL_CALLBACK_ACTION +{ + NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE, /**< Return without action. */ + NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND, /**< Request an extension of the current timeslot (maximum execution time for this action is when the extension succeeded). */ + NRF_RADIO_SIGNAL_CALLBACK_ACTION_END, /**< End the current radio timeslot. */ + NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END /**< Request a new radio timeslot and end the current timeslot. */ +}; + +/**@brief Radio timeslot high frequency clock source configuration. */ +enum NRF_RADIO_HFCLK_CFG +{ + NRF_RADIO_HFCLK_CFG_XTAL_GUARANTEED, /**< The SoftDevice will guarantee that the high frequency clock source is the + external crystal for the whole duration of the timeslot. This should be the + preferred option for events that use the radio or require high timing accuracy. */ + NRF_RADIO_HFCLK_CFG_NO_GUARANTEE /**< This configuration allows for earlier and tighter scheduling of timeslots. + The RC oscillator may be the clock source in part or for the whole duration of the timeslot. + The RC oscillator's accuracy must therefore be taken into consideration. + @note If the application will use the radio peripheral in timeslots with this configuration, + it must make sure that the crystal is running and stable before starting the radio. */ +}; + +/**@brief Radio timeslot priorities. */ +enum NRF_RADIO_PRIORITY +{ + NRF_RADIO_PRIORITY_HIGH, /**< High (equal priority as the normal connection priority of the SoftDevice stack(s)). */ + NRF_RADIO_PRIORITY_NORMAL, /**< Normal (equal priority as the priority of secondary activites of the SoftDevice stack(s)). */ +}; + +/**@brief Radio timeslot request type. */ +enum NRF_RADIO_REQUEST_TYPE +{ + NRF_RADIO_REQ_TYPE_EARLIEST, /**< Request radio timeslot as early as possible. This should always be used for the first request in a session. */ + NRF_RADIO_REQ_TYPE_NORMAL /**< Normal radio timeslot request. */ +}; + +/**@brief SoC Events. */ +enum NRF_SOC_EVTS +{ + NRF_EVT_HFCLKSTARTED, /**< Event indicating that the HFCLK has started. */ + NRF_EVT_POWER_FAILURE_WARNING, /**< Event indicating that a power failure warning has occurred. */ + NRF_EVT_FLASH_OPERATION_SUCCESS, /**< Event indicating that the ongoing flash operation has completed successfully. */ + NRF_EVT_FLASH_OPERATION_ERROR, /**< Event indicating that the ongoing flash operation has timed out with an error. */ + NRF_EVT_RADIO_BLOCKED, /**< Event indicating that a radio timeslot was blocked. */ + NRF_EVT_RADIO_CANCELED, /**< Event indicating that a radio timeslot was canceled by SoftDevice. */ + NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN, /**< Event indicating that a radio timeslot signal callback handler return was invalid. */ + NRF_EVT_RADIO_SESSION_IDLE, /**< Event indicating that a radio timeslot session is idle. */ + NRF_EVT_RADIO_SESSION_CLOSED, /**< Event indicating that a radio timeslot session is closed. */ + NRF_EVT_NUMBER_OF_EVTS +}; + +/**@} */ + + +/**@addtogroup NRF_SOC_STRUCTURES Structures + * @{ */ + +/**@brief Represents a mutex for use with the nrf_mutex functions. + * @note Accessing the value directly is not safe, use the mutex functions! + */ +typedef volatile uint8_t nrf_mutex_t; + +/**@brief Parameters for a request for a timeslot as early as possible. */ +typedef struct +{ + uint8_t hfclk; /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */ + uint8_t priority; /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */ + uint32_t length_us; /**< The radio timeslot length (in the range 100 to 100,000] microseconds). */ + uint32_t timeout_us; /**< Longest acceptable delay until the start of the requested timeslot (up to @ref NRF_RADIO_EARLIEST_TIMEOUT_MAX_US microseconds). */ +} nrf_radio_request_earliest_t; + +/**@brief Parameters for a normal radio timeslot request. */ +typedef struct +{ + uint8_t hfclk; /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */ + uint8_t priority; /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */ + uint32_t distance_us; /**< Distance from the start of the previous radio timeslot (up to @ref NRF_RADIO_DISTANCE_MAX_US microseconds). */ + uint32_t length_us; /**< The radio timeslot length (in the range [100..100,000] microseconds). */ +} nrf_radio_request_normal_t; + +/**@brief Radio timeslot request parameters. */ +typedef struct +{ + uint8_t request_type; /**< Type of request, see @ref NRF_RADIO_REQUEST_TYPE. */ + union + { + nrf_radio_request_earliest_t earliest; /**< Parameters for requesting a radio timeslot as early as possible. */ + nrf_radio_request_normal_t normal; /**< Parameters for requesting a normal radio timeslot. */ + } params; /**< Parameter union. */ +} nrf_radio_request_t; + +/**@brief Return parameters of the radio timeslot signal callback. */ +typedef struct +{ + uint8_t callback_action; /**< The action requested by the application when returning from the signal callback, see @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION. */ + union + { + struct + { + nrf_radio_request_t * p_next; /**< The request parameters for the next radio timeslot. */ + } request; /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END. */ + struct + { + uint32_t length_us; /**< Requested extension of the radio timeslot duration (microseconds) (for minimum time see @ref NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US). */ + } extend; /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND. */ + } params; /**< Parameter union. */ +} nrf_radio_signal_callback_return_param_t; + +/**@brief The radio timeslot signal callback type. + * + * @note In case of invalid return parameters, the radio timeslot will automatically end + * immediately after returning from the signal callback and the + * @ref NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN event will be sent. + * @note The returned struct pointer must remain valid after the signal callback + * function returns. For instance, this means that it must not point to a stack variable. + * + * @param[in] signal_type Type of signal, see @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE. + * + * @return Pointer to structure containing action requested by the application. + */ +typedef nrf_radio_signal_callback_return_param_t * (*nrf_radio_signal_callback_t) (uint8_t signal_type); + +/**@brief AES ECB parameter typedefs */ +typedef uint8_t soc_ecb_key_t[SOC_ECB_KEY_LENGTH]; /**< Encryption key type. */ +typedef uint8_t soc_ecb_cleartext_t[SOC_ECB_CLEARTEXT_LENGTH]; /**< Cleartext data type. */ +typedef uint8_t soc_ecb_ciphertext_t[SOC_ECB_CIPHERTEXT_LENGTH]; /**< Ciphertext data type. */ + +/**@brief AES ECB data structure */ +typedef struct +{ + soc_ecb_key_t key; /**< Encryption key. */ + soc_ecb_cleartext_t cleartext; /**< Cleartext data. */ + soc_ecb_ciphertext_t ciphertext; /**< Ciphertext data. */ +} nrf_ecb_hal_data_t; + +/**@brief AES ECB block. Used to provide multiple blocks in a single call + to @ref sd_ecb_blocks_encrypt.*/ +typedef struct +{ + soc_ecb_key_t* p_key; /**< Pointer to the Encryption key. */ + soc_ecb_cleartext_t* p_cleartext; /**< Pointer to the Cleartext data. */ + soc_ecb_ciphertext_t* p_ciphertext; /**< Pointer to the Ciphertext data. */ +} nrf_ecb_hal_data_block_t; + +/**@} */ + +/**@addtogroup NRF_SOC_FUNCTIONS Functions + * @{ */ + +/**@brief Initialize a mutex. + * + * @param[in] p_mutex Pointer to the mutex to initialize. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_MUTEX_NEW, uint32_t, sd_mutex_new(nrf_mutex_t * p_mutex)); + +/**@brief Attempt to acquire a mutex. + * + * @param[in] p_mutex Pointer to the mutex to acquire. + * + * @retval ::NRF_SUCCESS The mutex was successfully acquired. + * @retval ::NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN The mutex could not be acquired. + */ +SVCALL(SD_MUTEX_ACQUIRE, uint32_t, sd_mutex_acquire(nrf_mutex_t * p_mutex)); + +/**@brief Release a mutex. + * + * @param[in] p_mutex Pointer to the mutex to release. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_MUTEX_RELEASE, uint32_t, sd_mutex_release(nrf_mutex_t * p_mutex)); + +/**@brief Query the capacity of the application random pool. + * + * @param[out] p_pool_capacity The capacity of the pool. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_RAND_APPLICATION_POOL_CAPACITY_GET, uint32_t, sd_rand_application_pool_capacity_get(uint8_t * p_pool_capacity)); + +/**@brief Get number of random bytes available to the application. + * + * @param[out] p_bytes_available The number of bytes currently available in the pool. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_RAND_APPLICATION_BYTES_AVAILABLE_GET, uint32_t, sd_rand_application_bytes_available_get(uint8_t * p_bytes_available)); + +/**@brief Get random bytes from the application pool. + * + * @param[out] p_buff Pointer to unit8_t buffer for storing the bytes. + * @param[in] length Number of bytes to take from pool and place in p_buff. + * + * @retval ::NRF_SUCCESS The requested bytes were written to p_buff. + * @retval ::NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES No bytes were written to the buffer, because there were not enough bytes available. +*/ +SVCALL(SD_RAND_APPLICATION_VECTOR_GET, uint32_t, sd_rand_application_vector_get(uint8_t * p_buff, uint8_t length)); + +/**@brief Gets the reset reason register. + * + * @param[out] p_reset_reason Contents of the NRF_POWER->RESETREAS register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RESET_REASON_GET, uint32_t, sd_power_reset_reason_get(uint32_t * p_reset_reason)); + +/**@brief Clears the bits of the reset reason register. + * + * @param[in] reset_reason_clr_msk Contains the bits to clear from the reset reason register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RESET_REASON_CLR, uint32_t, sd_power_reset_reason_clr(uint32_t reset_reason_clr_msk)); + +/**@brief Sets the power mode when in CPU sleep. + * + * @param[in] power_mode The power mode to use when in CPU sleep, see @ref NRF_POWER_MODES. @sa sd_app_evt_wait + * + * @retval ::NRF_SUCCESS The power mode was set. + * @retval ::NRF_ERROR_SOC_POWER_MODE_UNKNOWN The power mode was unknown. + */ +SVCALL(SD_POWER_MODE_SET, uint32_t, sd_power_mode_set(uint8_t power_mode)); + +/**@brief Puts the chip in System OFF mode. + * + * @retval ::NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN + */ +SVCALL(SD_POWER_SYSTEM_OFF, uint32_t, sd_power_system_off(void)); + +/**@brief Enables or disables the power-fail comparator. + * + * Enabling this will give a softdevice event (NRF_EVT_POWER_FAILURE_WARNING) when the power failure warning occurs. + * The event can be retrieved with sd_evt_get(); + * + * @param[in] pof_enable True if the power-fail comparator should be enabled, false if it should be disabled. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_POF_ENABLE, uint32_t, sd_power_pof_enable(uint8_t pof_enable)); + +/**@brief Sets the power-fail threshold value. + * + * @param[in] threshold The power-fail threshold value to use, see @ref NRF_POWER_THRESHOLDS. + * + * @retval ::NRF_SUCCESS The power failure threshold was set. + * @retval ::NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN The power failure threshold is unknown. + */ +SVCALL(SD_POWER_POF_THRESHOLD_SET, uint32_t, sd_power_pof_threshold_set(uint8_t threshold)); + +/**@brief Sets bits in the NRF_POWER->RAMON register. + * + * @param[in] ramon Contains the bits needed to be set in the NRF_POWER->RAMON register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RAMON_SET, uint32_t, sd_power_ramon_set(uint32_t ramon)); + +/**@brief Clears bits in the NRF_POWER->RAMON register. + * + * @param ramon Contains the bits needed to be cleared in the NRF_POWER->RAMON register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RAMON_CLR, uint32_t, sd_power_ramon_clr(uint32_t ramon)); + +/**@brief Get contents of NRF_POWER->RAMON register, indicates power status of ram blocks. + * + * @param[out] p_ramon Content of NRF_POWER->RAMON register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RAMON_GET, uint32_t, sd_power_ramon_get(uint32_t * p_ramon)); + +/**@brief Set bits in the general purpose retention registers (NRF_POWER->GPREGRET*). + * + * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. + * @param[in] gpregret_msk Bits to be set in the GPREGRET register. + * + * @note nRF51 does only have one general purpose retained register, so gpregret_id must be 0 on nRF51. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_GPREGRET_SET, uint32_t, sd_power_gpregret_set(uint32_t gpregret_id, uint32_t gpregret_msk)); + +/**@brief Clear bits in the general purpose retention registers (NRF_POWER->GPREGRET*). + * + * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. + * @param[in] gpregret_msk Bits to be clear in the GPREGRET register. + * + * @note nRF51 does only have one general purpose retained register, so gpregret_id must be 0 on nRF51. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_GPREGRET_CLR, uint32_t, sd_power_gpregret_clr(uint32_t gpregret_id, uint32_t gpregret_msk)); + +/**@brief Get contents of the general purpose retention registers (NRF_POWER->GPREGRET*). + * + * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. + * @param[out] p_gpregret Contents of the GPREGRET register. + * + * @note nRF51 does only have one general purpose retained register, so gpregret_id must be 0 on nRF51. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_GPREGRET_GET, uint32_t, sd_power_gpregret_get(uint32_t gpregret_id, uint32_t *p_gpregret)); + +/**@brief Sets the DCDC mode. + * + * Enable or disable the DCDC peripheral. + * + * @param[in] dcdc_mode The mode of the DCDC, see @ref NRF_POWER_DCDC_MODES. + * + * @retval ::NRF_SUCCESS + * @retval ::NRF_ERROR_INVALID_PARAM The DCDC mode is invalid. + */ +SVCALL(SD_POWER_DCDC_MODE_SET, uint32_t, sd_power_dcdc_mode_set(uint8_t dcdc_mode)); + +/**@brief Request the high frequency crystal oscillator. + * + * Will start the high frequency crystal oscillator, the startup time of the crystal varies + * and the ::sd_clock_hfclk_is_running function can be polled to check if it has started. + * + * @see sd_clock_hfclk_is_running + * @see sd_clock_hfclk_release + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_CLOCK_HFCLK_REQUEST, uint32_t, sd_clock_hfclk_request(void)); + +/**@brief Releases the high frequency crystal oscillator. + * + * Will stop the high frequency crystal oscillator, this happens immediately. + * + * @see sd_clock_hfclk_is_running + * @see sd_clock_hfclk_request + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_CLOCK_HFCLK_RELEASE, uint32_t, sd_clock_hfclk_release(void)); + +/**@brief Checks if the high frequency crystal oscillator is running. + * + * @see sd_clock_hfclk_request + * @see sd_clock_hfclk_release + * + * @param[out] p_is_running 1 if the external crystal oscillator is running, 0 if not. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_CLOCK_HFCLK_IS_RUNNING, uint32_t, sd_clock_hfclk_is_running(uint32_t * p_is_running)); + +/**@brief Waits for an application event. + * + * An application event is either an application interrupt or a pended interrupt when the + * interrupt is disabled. When the interrupt is enabled it will be taken immediately since + * this function will wait in thread mode, then the execution will return in the application's + * main thread. When an interrupt is disabled and gets pended it will return to the application's + * thread main. The application must ensure that the pended flag is cleared using + * ::sd_nvic_ClearPendingIRQ in order to sleep using this function. This is only necessary for + * disabled interrupts, as the interrupt handler will clear the pending flag automatically for + * enabled interrupts. + * + * In order to wake up from disabled interrupts, the SEVONPEND flag has to be set in the Cortex-M0 + * System Control Register (SCR). @sa CMSIS_SCB + * + * @note If an application interrupt has happened since the last time sd_app_evt_wait was + * called this function will return immediately and not go to sleep. This is to avoid race + * conditions that can occur when a flag is updated in the interrupt handler and processed + * in the main loop. + * + * @post An application interrupt has happened or a interrupt pending flag is set. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_APP_EVT_WAIT, uint32_t, sd_app_evt_wait(void)); + +/**@brief Get PPI channel enable register contents. + * + * @param[out] p_channel_enable The contents of the PPI CHEN register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ENABLE_GET, uint32_t, sd_ppi_channel_enable_get(uint32_t * p_channel_enable)); + +/**@brief Set PPI channel enable register. + * + * @param[in] channel_enable_set_msk Mask containing the bits to set in the PPI CHEN register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ENABLE_SET, uint32_t, sd_ppi_channel_enable_set(uint32_t channel_enable_set_msk)); + +/**@brief Clear PPI channel enable register. + * + * @param[in] channel_enable_clr_msk Mask containing the bits to clear in the PPI CHEN register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ENABLE_CLR, uint32_t, sd_ppi_channel_enable_clr(uint32_t channel_enable_clr_msk)); + +/**@brief Assign endpoints to a PPI channel. + * + * @param[in] channel_num Number of the PPI channel to assign. + * @param[in] evt_endpoint Event endpoint of the PPI channel. + * @param[in] task_endpoint Task endpoint of the PPI channel. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_CHANNEL The channel number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ASSIGN, uint32_t, sd_ppi_channel_assign(uint8_t channel_num, const volatile void * evt_endpoint, const volatile void * task_endpoint)); + +/**@brief Task to enable a channel group. + * + * @param[in] group_num Number of the channel group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_TASK_ENABLE, uint32_t, sd_ppi_group_task_enable(uint8_t group_num)); + +/**@brief Task to disable a channel group. + * + * @param[in] group_num Number of the PPI group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_TASK_DISABLE, uint32_t, sd_ppi_group_task_disable(uint8_t group_num)); + +/**@brief Assign PPI channels to a channel group. + * + * @param[in] group_num Number of the channel group. + * @param[in] channel_msk Mask of the channels to assign to the group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_ASSIGN, uint32_t, sd_ppi_group_assign(uint8_t group_num, uint32_t channel_msk)); + +/**@brief Gets the PPI channels of a channel group. + * + * @param[in] group_num Number of the channel group. + * @param[out] p_channel_msk Mask of the channels assigned to the group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_GET, uint32_t, sd_ppi_group_get(uint8_t group_num, uint32_t * p_channel_msk)); + +/**@brief Configures the Radio Notification signal. + * + * @note + * - The notification signal latency depends on the interrupt priority settings of SWI used + * for notification signal. + * - To ensure that the radio notification signal behaves in a consistent way, always + * configure radio notifications when there is no protocol stack or other SoftDevice + * activity in progress. It is recommended that the radio notification signal is + * configured directly after the SoftDevice has been enabled. + * - In the period between the ACTIVE signal and the start of the Radio Event, the SoftDevice + * will interrupt the application to do Radio Event preparation. + * - Using the Radio Notification feature may limit the bandwidth, as the SoftDevice may have + * to shorten the connection events to have time for the Radio Notification signals. + * + * @param[in] type Type of notification signal, see @ref NRF_RADIO_NOTIFICATION_TYPES. + * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE shall be used to turn off radio + * notification. Using @ref NRF_RADIO_NOTIFICATION_DISTANCE_NONE is + * recommended (but not required) to be used with + * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE. + * + * @param[in] distance Distance between the notification signal and start of radio activity, see @ref NRF_RADIO_NOTIFICATION_DISTANCES. + * This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or + * @ref NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE is used. + * + * @retval ::NRF_ERROR_INVALID_PARAM The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_RADIO_NOTIFICATION_CFG_SET, uint32_t, sd_radio_notification_cfg_set(uint8_t type, uint8_t distance)); + +/**@brief Encrypts a block according to the specified parameters. + * + * 128-bit AES encryption. + * + * @note: + * - The application may set the SEVONPEND bit in the SCR to 1 to make the SoftDevice sleep while + * the ECB is running. The SEVONPEND bit should only be cleared (set to 0) from application + * main or low interrupt level. + * + * @param[in, out] p_ecb_data Pointer to the ECB parameters' struct (two input + * parameters and one output parameter). + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_ECB_BLOCK_ENCRYPT, uint32_t, sd_ecb_block_encrypt(nrf_ecb_hal_data_t * p_ecb_data)); + +/**@brief Encrypts multiple data blocks provided as an array of data block structures. + * + * @details: Performs 128-bit AES encryption on multiple data blocks + * + * @note: + * - The application may set the SEVONPEND bit in the SCR to 1 to make the SoftDevice sleep while + * the ECB is running. The SEVONPEND bit should only be cleared (set to 0) from application + * main or low interrupt level. + * + * @param[in] block_count Count of blocks in the p_data_blocks array. + * @param[in,out] p_data_blocks Pointer to the first entry in a contiguous array of + * @ref nrf_ecb_hal_data_block_t structures. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_ECB_BLOCKS_ENCRYPT, uint32_t, sd_ecb_blocks_encrypt(uint8_t block_count, nrf_ecb_hal_data_block_t * p_data_blocks)); + +/**@brief Gets any pending events generated by the SoC API. + * + * The application should keep calling this function to get events, until ::NRF_ERROR_NOT_FOUND is returned. + * + * @param[out] p_evt_id Set to one of the values in @ref NRF_SOC_EVTS, if any events are pending. + * + * @retval ::NRF_SUCCESS An event was pending. The event id is written in the p_evt_id parameter. + * @retval ::NRF_ERROR_NOT_FOUND No pending events. + */ +SVCALL(SD_EVT_GET, uint32_t, sd_evt_get(uint32_t * p_evt_id)); + +/**@brief Get the temperature measured on the chip + * + * This function will block until the temperature measurement is done. + * It takes around 50us from call to return. + * + * @param[out] p_temp Result of temperature measurement. Die temperature in 0.25 degrees celsius. + * + * @retval ::NRF_SUCCESS A temperature measurement was done, and the temperature was written to temp + */ +SVCALL(SD_TEMP_GET, uint32_t, sd_temp_get(int32_t * p_temp)); + +/**@brief Flash Write +* +* Commands to write a buffer to flash +* +* If the SoftDevice is enabled: +* This call initiates the flash access command, and its completion will be communicated to the +* application with exactly one of the following events: +* - @ref NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. +* - @ref NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. +* +* If the SoftDevice is not enabled no event will be generated, and this call will return @ref NRF_SUCCESS when the + * write has been completed +* +* @note +* - This call takes control over the radio and the CPU during flash erase and write to make sure that +* they will not interfere with the flash access. This means that all interrupts will be blocked +* for a predictable time (depending on the NVMC specification in nRF51 Series Reference Manual +* and the command parameters). +* - The data in the p_src buffer should not be modified before the @ref NRF_EVT_FLASH_OPERATION_SUCCESS +* or the @ref NRF_EVT_FLASH_OPERATION_ERROR have been received if the SoftDevice is enabled. +* +* +* @param[in] p_dst Pointer to start of flash location to be written. +* @param[in] p_src Pointer to buffer with data to be written. +* @param[in] size Number of 32-bit words to write. Maximum size is 256 32-bit words for nRF51 and 1024 for nRF52. +* +* @retval ::NRF_ERROR_INVALID_ADDR Tried to write to a non existing flash address, or p_dst or p_src was unaligned. +* @retval ::NRF_ERROR_BUSY The previous command has not yet completed. +* @retval ::NRF_ERROR_INVALID_LENGTH Size was 0, or higher than the maximum allowed size. +* @retval ::NRF_ERROR_FORBIDDEN Tried to write to or read from protected location. +* @retval ::NRF_SUCCESS The command was accepted. +*/ +SVCALL(SD_FLASH_WRITE, uint32_t, sd_flash_write(uint32_t * const p_dst, uint32_t const * const p_src, uint32_t size)); + + +/**@brief Flash Erase page +* +* Commands to erase a flash page +* If the SoftDevice is enabled: +* This call initiates the flash access command, and its completion will be communicated to the +* application with exactly one of the following events: +* - @ref NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. +* - @ref NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. +* +* If the SoftDevice is not enabled no event will be generated, and this call will return @ref NRF_SUCCESS when the +* erase has been completed +* +* @note +* - This call takes control over the radio and the CPU during flash erase and write to make sure that +* they will not interfere with the flash access. This means that all interrupts will be blocked +* for a predictable time (depending on the NVMC specification in nRF51 Series Reference Manual +* and the command parameters). +* +* +* @param[in] page_number Pagenumber of the page to erase +* @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. +* @retval ::NRF_ERROR_INVALID_ADDR Tried to erase to a non existing flash page. +* @retval ::NRF_ERROR_BUSY The previous command has not yet completed. +* @retval ::NRF_ERROR_FORBIDDEN Tried to erase a protected page. +* @retval ::NRF_SUCCESS The command was accepted. +*/ +SVCALL(SD_FLASH_PAGE_ERASE, uint32_t, sd_flash_page_erase(uint32_t page_number)); + + +/**@brief Flash Protection set + * + * Commands to set the flash protection configuration registers. + On nRF51 this sets the PROTENSETx registers of the MPU peripheral. + On nRF52 this sets the CONFIGx registers of the BPROT peripheral. + * + * @note To read the values read them directly. They are only write-protected. + * + * @param[in] block_cfg0 Value to be written to the configuration register. + * @param[in] block_cfg1 Value to be written to the configuration register. + * @param[in] block_cfg2 Value to be written to the configuration register (ignored on nRF51). + * @param[in] block_cfg3 Value to be written to the configuration register (ignored on nRF51). + * + * @retval ::NRF_ERROR_FORBIDDEN Tried to protect the SoftDevice. + * @retval ::NRF_SUCCESS Values successfully written to configuration registers. + */ +SVCALL(SD_FLASH_PROTECT, uint32_t, sd_flash_protect(uint32_t block_cfg0, uint32_t block_cfg1, uint32_t block_cfg2, uint32_t block_cfg3)); + +/**@brief Opens a session for radio timeslot requests. + * + * @note Only one session can be open at a time. + * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) will be called when the radio timeslot + * starts. From this point the NRF_RADIO and NRF_TIMER0 peripherals can be freely accessed + * by the application. + * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0) is called whenever the NRF_TIMER0 + * interrupt occurs. + * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO) is called whenever the NRF_RADIO + * interrupt occurs. + * @note p_radio_signal_callback() will be called at ARM interrupt priority level 0. This + * implies that none of the sd_* API calls can be used from p_radio_signal_callback(). + * + * @param[in] p_radio_signal_callback The signal callback. + * + * @retval ::NRF_ERROR_INVALID_ADDR p_radio_signal_callback is an invalid function pointer. + * @retval ::NRF_ERROR_BUSY If session cannot be opened. + * @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. + * @retval ::NRF_SUCCESS Otherwise. + */ + SVCALL(SD_RADIO_SESSION_OPEN, uint32_t, sd_radio_session_open(nrf_radio_signal_callback_t p_radio_signal_callback)); + +/**@brief Closes a session for radio timeslot requests. + * + * @note Any current radio timeslot will be finished before the session is closed. + * @note If a radio timeslot is scheduled when the session is closed, it will be canceled. + * @note The application cannot consider the session closed until the @ref NRF_EVT_RADIO_SESSION_CLOSED + * event is received. + * + * @retval ::NRF_ERROR_FORBIDDEN If session not opened. + * @retval ::NRF_ERROR_BUSY If session is currently being closed. + * @retval ::NRF_SUCCESS Otherwise. + */ + SVCALL(SD_RADIO_SESSION_CLOSE, uint32_t, sd_radio_session_close(void)); + +/**@brief Requests a radio timeslot. + * + * @note The request type is determined by p_request->request_type, and can be one of @ref NRF_RADIO_REQ_TYPE_EARLIEST + * and @ref NRF_RADIO_REQ_TYPE_NORMAL. The first request in a session must always be of type @ref NRF_RADIO_REQ_TYPE_EARLIEST. + * @note For a normal request (@ref NRF_RADIO_REQ_TYPE_NORMAL), the start time of a radio timeslot is specified by + * p_request->distance_us and is given relative to the start of the previous timeslot. + * @note A too small p_request->distance_us will lead to a @ref NRF_EVT_RADIO_BLOCKED event. + * @note Timeslots scheduled too close will lead to a @ref NRF_EVT_RADIO_BLOCKED event. + * @note See the SoftDevice Specification for more on radio timeslot scheduling, distances and lengths. + * @note If an opportunity for the first radio timeslot is not found before 100ms after the call to this + * function, it is not scheduled, and instead a @ref NRF_EVT_RADIO_BLOCKED event is sent. + * The application may then try to schedule the first radio timeslot again. + * @note Successful requests will result in nrf_radio_signal_callback_t(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START). + * Unsuccessful requests will result in a @ref NRF_EVT_RADIO_BLOCKED event, see @ref NRF_SOC_EVTS. + * @note The jitter in the start time of the radio timeslots is +/- @ref NRF_RADIO_START_JITTER_US us. + * @note The nrf_radio_signal_callback_t(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) call has a latency relative to the + * specified radio timeslot start, but this does not affect the actual start time of the timeslot. + * @note NRF_TIMER0 is reset at the start of the radio timeslot, and is clocked at 1MHz from the high frequency + * (16 MHz) clock source. If p_request->hfclk_force_xtal is true, the high frequency clock is + * guaranteed to be clocked from the external crystal. + * @note The SoftDevice will neither access the NRF_RADIO peripheral nor the NRF_TIMER0 peripheral + * during the radio timeslot. + * + * @param[in] p_request Pointer to the request parameters. + * + * @retval ::NRF_ERROR_FORBIDDEN If session not opened or the session is not IDLE. + * @retval ::NRF_ERROR_INVALID_ADDR If the p_request pointer is invalid. + * @retval ::NRF_ERROR_INVALID_PARAM If the parameters of p_request are not valid. + * @retval ::NRF_SUCCESS Otherwise. + */ + SVCALL(SD_RADIO_REQUEST, uint32_t, sd_radio_request(nrf_radio_request_t * p_request )); + +/**@} */ + +#ifdef __cplusplus +} +#endif +#endif // NRF_SOC_H__ + +/**@} */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_svc.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_svc.h new file mode 100644 index 0000000..c7e3fbe --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers/nrf_svc.h @@ -0,0 +1,88 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +#ifndef NRF_SVC__ +#define NRF_SVC__ + +#include "stdint.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef SVCALL_AS_NORMAL_FUNCTION +#define SVCALL(number, return_type, signature) return_type signature +#else + +#ifndef SVCALL +#if defined (__CC_ARM) +#define SVCALL(number, return_type, signature) return_type __svc(number) signature +#elif defined (__GNUC__) +#ifdef __cplusplus +#define GCC_CAST_CPP (uint8_t) +#else +#define GCC_CAST_CPP +#endif +#define SVCALL(number, return_type, signature) \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \ + __attribute__((naked)) \ + __attribute__((unused)) \ + static return_type signature \ + { \ + __asm( \ + "svc %0\n" \ + "bx r14" : : "I" (GCC_CAST_CPP number) : "r0" \ + ); \ + } \ + _Pragma("GCC diagnostic pop") + +#elif defined (__ICCARM__) +#define PRAGMA(x) _Pragma(#x) +#define SVCALL(number, return_type, signature) \ +PRAGMA(swi_number = (number)) \ + __swi return_type signature; +#else +#define SVCALL(number, return_type, signature) return_type signature +#endif +#endif // SVCALL + +#endif // SVCALL_AS_NORMAL_FUNCTION + +#ifdef __cplusplus +} +#endif +#endif // NRF_SVC__ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/ble_gap.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/ble_gap.h new file mode 100644 index 0000000..e07ccef --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/ble_gap.h @@ -0,0 +1,1919 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_GAP Generic Access Profile (GAP) + @{ + @brief Definitions and prototypes for the GAP interface. + */ + +#ifndef BLE_GAP_H__ +#define BLE_GAP_H__ + +#include "ble_types.h" +#include "ble_ranges.h" +#include "nrf_svc.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/**@addtogroup BLE_GAP_ENUMERATIONS Enumerations + * @{ */ + +/**@brief GAP API SVC numbers. + */ +enum BLE_GAP_SVCS +{ + SD_BLE_GAP_ADDR_SET = BLE_GAP_SVC_BASE, /**< Set own Bluetooth Address. */ + SD_BLE_GAP_ADDR_GET, /**< Get own Bluetooth Address. */ + SD_BLE_GAP_WHITELIST_SET, /**< Set active whitelist. */ + SD_BLE_GAP_DEVICE_IDENTITIES_SET, /**< Set device identity list. */ + SD_BLE_GAP_PRIVACY_SET, /**< Set Privacy settings*/ + SD_BLE_GAP_PRIVACY_GET, /**< Get Privacy settings*/ + SD_BLE_GAP_ADV_DATA_SET, /**< Set Advertising Data. */ + SD_BLE_GAP_ADV_START, /**< Start Advertising. */ + SD_BLE_GAP_ADV_STOP, /**< Stop Advertising. */ + SD_BLE_GAP_CONN_PARAM_UPDATE, /**< Connection Parameter Update. */ + SD_BLE_GAP_DISCONNECT, /**< Disconnect. */ + SD_BLE_GAP_TX_POWER_SET, /**< Set TX Power. */ + SD_BLE_GAP_APPEARANCE_SET, /**< Set Appearance. */ + SD_BLE_GAP_APPEARANCE_GET, /**< Get Appearance. */ + SD_BLE_GAP_PPCP_SET, /**< Set PPCP. */ + SD_BLE_GAP_PPCP_GET, /**< Get PPCP. */ + SD_BLE_GAP_DEVICE_NAME_SET, /**< Set Device Name. */ + SD_BLE_GAP_DEVICE_NAME_GET, /**< Get Device Name. */ + SD_BLE_GAP_AUTHENTICATE, /**< Initiate Pairing/Bonding. */ + SD_BLE_GAP_SEC_PARAMS_REPLY, /**< Reply with Security Parameters. */ + SD_BLE_GAP_AUTH_KEY_REPLY, /**< Reply with an authentication key. */ + SD_BLE_GAP_LESC_DHKEY_REPLY, /**< Reply with an LE Secure Connections DHKey. */ + SD_BLE_GAP_KEYPRESS_NOTIFY, /**< Notify of a keypress during an authentication procedure. */ + SD_BLE_GAP_LESC_OOB_DATA_GET, /**< Get the local LE Secure Connections OOB data. */ + SD_BLE_GAP_LESC_OOB_DATA_SET, /**< Set the remote LE Secure Connections OOB data. */ + SD_BLE_GAP_ENCRYPT, /**< Initiate encryption procedure. */ + SD_BLE_GAP_SEC_INFO_REPLY, /**< Reply with Security Information. */ + SD_BLE_GAP_CONN_SEC_GET, /**< Obtain connection security level. */ + SD_BLE_GAP_RSSI_START, /**< Start reporting of changes in RSSI. */ + SD_BLE_GAP_RSSI_STOP, /**< Stop reporting of changes in RSSI. */ + SD_BLE_GAP_SCAN_START, /**< Start Scanning. */ + SD_BLE_GAP_SCAN_STOP, /**< Stop Scanning. */ + SD_BLE_GAP_CONNECT, /**< Connect. */ + SD_BLE_GAP_CONNECT_CANCEL, /**< Cancel ongoing connection procedure. */ + SD_BLE_GAP_RSSI_GET, /**< Get the last RSSI sample. */ +}; + +/**@brief GAP Event IDs. + * IDs that uniquely identify an event coming from the stack to the application. + */ +enum BLE_GAP_EVTS +{ + BLE_GAP_EVT_CONNECTED = BLE_GAP_EVT_BASE, /**< Connection established. \n See @ref ble_gap_evt_connected_t. */ + BLE_GAP_EVT_DISCONNECTED, /**< Disconnected from peer. \n See @ref ble_gap_evt_disconnected_t. */ + BLE_GAP_EVT_CONN_PARAM_UPDATE, /**< Connection Parameters updated. \n See @ref ble_gap_evt_conn_param_update_t. */ + BLE_GAP_EVT_SEC_PARAMS_REQUEST, /**< Request to provide security parameters. \n Reply with @ref sd_ble_gap_sec_params_reply. \n See @ref ble_gap_evt_sec_params_request_t. */ + BLE_GAP_EVT_SEC_INFO_REQUEST, /**< Request to provide security information. \n Reply with @ref sd_ble_gap_sec_info_reply. \n See @ref ble_gap_evt_sec_info_request_t. */ + BLE_GAP_EVT_PASSKEY_DISPLAY, /**< Request to display a passkey to the user. \n In LESC Numeric Comparison, reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_passkey_display_t. */ + BLE_GAP_EVT_KEY_PRESSED, /**< Notification of a keypress on the remote device.\n See @ref ble_gap_evt_key_pressed_t */ + BLE_GAP_EVT_AUTH_KEY_REQUEST, /**< Request to provide an authentication key. \n Reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_auth_key_request_t. */ + BLE_GAP_EVT_LESC_DHKEY_REQUEST, /**< Request to calculate an LE Secure Connections DHKey. \n Reply with @ref sd_ble_gap_lesc_dhkey_reply. \n See @ref ble_gap_evt_lesc_dhkey_request_t */ + BLE_GAP_EVT_AUTH_STATUS, /**< Authentication procedure completed with status. \n See @ref ble_gap_evt_auth_status_t. */ + BLE_GAP_EVT_CONN_SEC_UPDATE, /**< Connection security updated. \n See @ref ble_gap_evt_conn_sec_update_t. */ + BLE_GAP_EVT_TIMEOUT, /**< Timeout expired. \n See @ref ble_gap_evt_timeout_t. */ + BLE_GAP_EVT_RSSI_CHANGED, /**< RSSI report. \n See @ref ble_gap_evt_rssi_changed_t. */ + BLE_GAP_EVT_ADV_REPORT, /**< Advertising report. \n See @ref ble_gap_evt_adv_report_t. */ + BLE_GAP_EVT_SEC_REQUEST, /**< Security Request. \n See @ref ble_gap_evt_sec_request_t. */ + BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST, /**< Connection Parameter Update Request. \n Reply with @ref sd_ble_gap_conn_param_update. \n See @ref ble_gap_evt_conn_param_update_request_t. */ + BLE_GAP_EVT_SCAN_REQ_REPORT, /**< Scan request report. \n See @ref ble_gap_evt_scan_req_report_t. */ +}; + +/**@brief GAP Option IDs. + * IDs that uniquely identify a GAP option. + */ +enum BLE_GAP_OPTS +{ + BLE_GAP_OPT_CH_MAP = BLE_GAP_OPT_BASE, /**< Channel Map. @ref ble_gap_opt_ch_map_t */ + BLE_GAP_OPT_LOCAL_CONN_LATENCY, /**< Local connection latency. @ref ble_gap_opt_local_conn_latency_t */ + BLE_GAP_OPT_PASSKEY, /**< Set passkey. @ref ble_gap_opt_passkey_t */ + BLE_GAP_OPT_SCAN_REQ_REPORT, /**< Scan request report. @ref ble_gap_opt_scan_req_report_t */ + BLE_GAP_OPT_COMPAT_MODE, /**< Compatibility mode. @ref ble_gap_opt_compat_mode_t */ + BLE_GAP_OPT_AUTH_PAYLOAD_TIMEOUT, /**< Set Authenticated payload timeout. @ref ble_gap_opt_auth_payload_timeout_t */ + BLE_GAP_OPT_EXT_LEN, /**< Extended length packets. @ref ble_gap_opt_ext_len_t */ +}; + +/** @} */ + +/**@addtogroup BLE_GAP_DEFINES Defines + * @{ */ + +/**@defgroup BLE_ERRORS_GAP SVC return values specific to GAP + * @{ */ +#define BLE_ERROR_GAP_UUID_LIST_MISMATCH (NRF_GAP_ERR_BASE + 0x000) /**< UUID list does not contain an integral number of UUIDs. */ +#define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST (NRF_GAP_ERR_BASE + 0x001) /**< Use of Whitelist not permitted with discoverable advertising. */ +#define BLE_ERROR_GAP_INVALID_BLE_ADDR (NRF_GAP_ERR_BASE + 0x002) /**< The upper two bits of the address do not correspond to the specified address type. */ +#define BLE_ERROR_GAP_WHITELIST_IN_USE (NRF_GAP_ERR_BASE + 0x003) /**< Attempt to modify the whitelist while already in use by another operation. */ +#define BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE (NRF_GAP_ERR_BASE + 0x004) /**< Attempt to modify the device identity list while already in use by another operation. */ +#define BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE (NRF_GAP_ERR_BASE + 0x005) /**< The device identity list contains entries with duplicate identity addresses. */ +/**@} */ + + +/**@defgroup BLE_GAP_ROLES GAP Roles + * @note Not explicitly used in peripheral API, but will be relevant for central API. + * @{ */ +#define BLE_GAP_ROLE_INVALID 0x0 /**< Invalid Role. */ +#define BLE_GAP_ROLE_PERIPH 0x1 /**< Peripheral Role. */ +#define BLE_GAP_ROLE_CENTRAL 0x2 /**< Central Role. */ +/**@} */ + + +/**@defgroup BLE_GAP_TIMEOUT_SOURCES GAP Timeout sources + * @{ */ +#define BLE_GAP_TIMEOUT_SRC_ADVERTISING 0x00 /**< Advertising timeout. */ +#define BLE_GAP_TIMEOUT_SRC_SECURITY_REQUEST 0x01 /**< Security request timeout. */ +#define BLE_GAP_TIMEOUT_SRC_SCAN 0x02 /**< Scanning timeout. */ +#define BLE_GAP_TIMEOUT_SRC_CONN 0x03 /**< Connection timeout. */ +#define BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD 0x04 /**< Authenticated payload timeout. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADDR_TYPES GAP Address types + * @{ */ +#define BLE_GAP_ADDR_TYPE_PUBLIC 0x00 /**< Public address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_STATIC 0x01 /**< Random static address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE 0x02 /**< Random private resolvable address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03 /**< Random private non-resolvable address. */ +/**@} */ + + +/**@brief The default interval in seconds at which a private address is refreshed. */ +#define BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S (900) /* 15 minutes. */ +/**@brief The maximum interval in seconds at which a private address can be refreshed. */ +#define BLE_GAP_MAX_PRIVATE_ADDR_CYCLE_INTERVAL_S (41400) /* 11 hours 30 minutes. */ + + +/** @brief BLE address length. */ +#define BLE_GAP_ADDR_LEN (6) + + +/**@defgroup BLE_GAP_PRIVACY_MODES Privacy modes + * @{ */ +#define BLE_GAP_PRIVACY_MODE_OFF 0x00 /**< Device will send and accept its identity address for its own address. */ +#define BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY 0x01 /**< Device will send and accept only private addresses for its own address. */ +/**@} */ + + +/**@defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format + * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm + * @{ */ +#define BLE_GAP_AD_TYPE_FLAGS 0x01 /**< Flags for discoverability. */ +#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02 /**< Partial list of 16 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03 /**< Complete list of 16 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04 /**< Partial list of 32 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05 /**< Complete list of 32 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /**< Partial list of 128 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07 /**< Complete list of 128 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08 /**< Short local device name. */ +#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 /**< Complete local device name. */ +#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A /**< Transmit power level. */ +#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D /**< Class of device. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E /**< Simple Pairing Hash C. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F /**< Simple Pairing Randomizer R. */ +#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 /**< Security Manager TK Value. */ +#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11 /**< Security Manager Out Of Band Flags. */ +#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /**< Slave Connection Interval Range. */ +#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14 /**< List of 16-bit Service Solicitation UUIDs. */ +#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15 /**< List of 128-bit Service Solicitation UUIDs. */ +#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16 /**< Service Data - 16-bit UUID. */ +#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17 /**< Public Target Address. */ +#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18 /**< Random Target Address. */ +#define BLE_GAP_AD_TYPE_APPEARANCE 0x19 /**< Appearance. */ +#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL 0x1A /**< Advertising Interval. */ +#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B /**< LE Bluetooth Device Address. */ +#define BLE_GAP_AD_TYPE_LE_ROLE 0x1C /**< LE Role. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 0x1D /**< Simple Pairing Hash C-256. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 0x1E /**< Simple Pairing Randomizer R-256. */ +#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID 0x20 /**< Service Data - 32-bit UUID. */ +#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID 0x21 /**< Service Data - 128-bit UUID. */ +#define BLE_GAP_AD_TYPE_URI 0x24 /**< URI */ +#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA 0x3D /**< 3D Information Data. */ +#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF /**< Manufacturer Specific Data. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_FLAGS GAP Advertisement Flags + * @{ */ +#define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE (0x01) /**< LE Limited Discoverable Mode. */ +#define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE (0x02) /**< LE General Discoverable Mode. */ +#define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED (0x04) /**< BR/EDR not supported. */ +#define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER (0x08) /**< Simultaneous LE and BR/EDR, Controller. */ +#define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST (0x10) /**< Simultaneous LE and BR/EDR, Host. */ +#define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE Limited Discoverable Mode, BR/EDR not supported. */ +#define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE General Discoverable Mode, BR/EDR not supported. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_INTERVALS GAP Advertising interval max and min + * @{ */ +#define BLE_GAP_ADV_INTERVAL_MIN 0x0020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */ +#define BLE_GAP_ADV_NONCON_INTERVAL_MIN 0x00A0 /**< Minimum Advertising interval in 625 us units for non connectable mode, i.e. 100 ms. */ +#define BLE_GAP_ADV_INTERVAL_MAX 0x4000 /**< Maximum Advertising interval in 625 us units, i.e. 10.24 s. */ + /**@} */ + + +/**@defgroup BLE_GAP_SCAN_INTERVALS GAP Scan interval max and min + * @{ */ +#define BLE_GAP_SCAN_INTERVAL_MIN 0x0004 /**< Minimum Scan interval in 625 us units, i.e. 2.5 ms. */ +#define BLE_GAP_SCAN_INTERVAL_MAX 0x4000 /**< Maximum Scan interval in 625 us units, i.e. 10.24 s. */ + /** @} */ + + +/**@defgroup BLE_GAP_SCAN_WINDOW GAP Scan window max and min + * @{ */ +#define BLE_GAP_SCAN_WINDOW_MIN 0x0004 /**< Minimum Scan window in 625 us units, i.e. 2.5 ms. */ +#define BLE_GAP_SCAN_WINDOW_MAX 0x4000 /**< Maximum Scan window in 625 us units, i.e. 10.24 s. */ + /** @} */ + + +/**@defgroup BLE_GAP_SCAN_TIMEOUT GAP Scan timeout max and min + * @{ */ +#define BLE_GAP_SCAN_TIMEOUT_MIN 0x0001 /**< Minimum Scan timeout in seconds. */ +#define BLE_GAP_SCAN_TIMEOUT_MAX 0xFFFF /**< Maximum Scan timeout in seconds. */ + /** @} */ + + +/**@brief Maximum size of advertising data in octets. */ +#define BLE_GAP_ADV_MAX_SIZE (31) + + +/**@defgroup BLE_GAP_ADV_TYPES GAP Advertising types + * @{ */ +#define BLE_GAP_ADV_TYPE_ADV_IND 0x00 /**< Connectable undirected. */ +#define BLE_GAP_ADV_TYPE_ADV_DIRECT_IND 0x01 /**< Connectable directed. */ +#define BLE_GAP_ADV_TYPE_ADV_SCAN_IND 0x02 /**< Scannable undirected. */ +#define BLE_GAP_ADV_TYPE_ADV_NONCONN_IND 0x03 /**< Non connectable undirected. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_FILTER_POLICIES GAP Advertising filter policies + * @{ */ +#define BLE_GAP_ADV_FP_ANY 0x00 /**< Allow scan requests and connect requests from any device. */ +#define BLE_GAP_ADV_FP_FILTER_SCANREQ 0x01 /**< Filter scan requests with whitelist. */ +#define BLE_GAP_ADV_FP_FILTER_CONNREQ 0x02 /**< Filter connect requests with whitelist. */ +#define BLE_GAP_ADV_FP_FILTER_BOTH 0x03 /**< Filter both scan and connect requests with whitelist. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values + * @{ */ +#define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX (180) /**< Maximum advertising time in limited discoverable mode (TGAP(lim_adv_timeout) = 180s). */ +#define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED (0) /**< Unlimited advertising in general discoverable mode. */ +/**@} */ + + +/**@defgroup BLE_GAP_DISC_MODES GAP Discovery modes + * @{ */ +#define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE 0x00 /**< Not discoverable discovery Mode. */ +#define BLE_GAP_DISC_MODE_LIMITED 0x01 /**< Limited Discovery Mode. */ +#define BLE_GAP_DISC_MODE_GENERAL 0x02 /**< General Discovery Mode. */ +/**@} */ + + +/**@defgroup BLE_GAP_IO_CAPS GAP IO Capabilities + * @{ */ +#define BLE_GAP_IO_CAPS_DISPLAY_ONLY 0x00 /**< Display Only. */ +#define BLE_GAP_IO_CAPS_DISPLAY_YESNO 0x01 /**< Display and Yes/No entry. */ +#define BLE_GAP_IO_CAPS_KEYBOARD_ONLY 0x02 /**< Keyboard Only. */ +#define BLE_GAP_IO_CAPS_NONE 0x03 /**< No I/O capabilities. */ +#define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY 0x04 /**< Keyboard and Display. */ +/**@} */ + + +/**@defgroup BLE_GAP_AUTH_KEY_TYPES GAP Authentication Key Types + * @{ */ +#define BLE_GAP_AUTH_KEY_TYPE_NONE 0x00 /**< No key (may be used to reject). */ +#define BLE_GAP_AUTH_KEY_TYPE_PASSKEY 0x01 /**< 6-digit Passkey. */ +#define BLE_GAP_AUTH_KEY_TYPE_OOB 0x02 /**< Out Of Band data. */ +/**@} */ + + +/**@defgroup BLE_GAP_KP_NOT_TYPES GAP Keypress Notification Types + * @{ */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_START 0x00 /**< Passkey entry started. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_IN 0x01 /**< Passkey digit entered. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_OUT 0x02 /**< Passkey digit erased. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_CLEAR 0x03 /**< Passkey cleared. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_END 0x04 /**< Passkey entry completed. */ +/**@} */ + + +/**@defgroup BLE_GAP_SEC_STATUS GAP Security status + * @{ */ +#define BLE_GAP_SEC_STATUS_SUCCESS 0x00 /**< Procedure completed with success. */ +#define BLE_GAP_SEC_STATUS_TIMEOUT 0x01 /**< Procedure timed out. */ +#define BLE_GAP_SEC_STATUS_PDU_INVALID 0x02 /**< Invalid PDU received. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE1_BEGIN 0x03 /**< Reserved for Future Use range #1 begin. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE1_END 0x80 /**< Reserved for Future Use range #1 end. */ +#define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED 0x81 /**< Passkey entry failed (user cancelled or other). */ +#define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE 0x82 /**< Out of Band Key not available. */ +#define BLE_GAP_SEC_STATUS_AUTH_REQ 0x83 /**< Authentication requirements not met. */ +#define BLE_GAP_SEC_STATUS_CONFIRM_VALUE 0x84 /**< Confirm value failed. */ +#define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP 0x85 /**< Pairing not supported. */ +#define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE 0x86 /**< Encryption key size. */ +#define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED 0x87 /**< Unsupported SMP command. */ +#define BLE_GAP_SEC_STATUS_UNSPECIFIED 0x88 /**< Unspecified reason. */ +#define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS 0x89 /**< Too little time elapsed since last attempt. */ +#define BLE_GAP_SEC_STATUS_INVALID_PARAMS 0x8A /**< Invalid parameters. */ +#define BLE_GAP_SEC_STATUS_DHKEY_FAILURE 0x8B /**< DHKey check failure. */ +#define BLE_GAP_SEC_STATUS_NUM_COMP_FAILURE 0x8C /**< Numeric Comparison failure. */ +#define BLE_GAP_SEC_STATUS_BR_EDR_IN_PROG 0x8D /**< BR/EDR pairing in progress. */ +#define BLE_GAP_SEC_STATUS_X_TRANS_KEY_DISALLOWED 0x8E /**< BR/EDR Link Key cannot be used for LE keys. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE2_BEGIN 0x8F /**< Reserved for Future Use range #2 begin. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE2_END 0xFF /**< Reserved for Future Use range #2 end. */ +/**@} */ + + +/**@defgroup BLE_GAP_SEC_STATUS_SOURCES GAP Security status sources + * @{ */ +#define BLE_GAP_SEC_STATUS_SOURCE_LOCAL 0x00 /**< Local failure. */ +#define BLE_GAP_SEC_STATUS_SOURCE_REMOTE 0x01 /**< Remote failure. */ +/**@} */ + + +/**@defgroup BLE_GAP_CP_LIMITS GAP Connection Parameters Limits + * @{ */ +#define BLE_GAP_CP_MIN_CONN_INTVL_NONE 0xFFFF /**< No new minimum connection interval specified in connect parameters. */ +#define BLE_GAP_CP_MIN_CONN_INTVL_MIN 0x0006 /**< Lowest minimum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ +#define BLE_GAP_CP_MIN_CONN_INTVL_MAX 0x0C80 /**< Highest minimum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_NONE 0xFFFF /**< No new maximum connection interval specified in connect parameters. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_MIN 0x0006 /**< Lowest maximum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_MAX 0x0C80 /**< Highest maximum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ +#define BLE_GAP_CP_SLAVE_LATENCY_MAX 0x01F3 /**< Highest slave latency permitted, in connection events. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE 0xFFFF /**< No new supervision timeout specified in connect parameters. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN 0x000A /**< Lowest supervision timeout permitted, in units of 10 ms, i.e. 100 ms. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX 0x0C80 /**< Highest supervision timeout permitted, in units of 10 ms, i.e. 32 s. */ +/**@} */ + + +/**@brief GAP device name defines. */ +#define BLE_GAP_DEVNAME_DEFAULT "nRF5x" /**< Default device name value. */ +#define BLE_GAP_DEVNAME_DEFAULT_LEN 31 /**< Default number of octets in device name. */ +#define BLE_GAP_DEVNAME_MAX_LEN 248 /**< Maximum number of octets in device name. */ + + +/**@brief Disable RSSI events for connections */ +#define BLE_GAP_RSSI_THRESHOLD_INVALID 0xFF + + +/**@defgroup BLE_GAP_CONN_SEC_MODE_SET_MACROS GAP attribute security requirement setters + * + * See @ref ble_gap_conn_sec_mode_t. + * @{ */ +/**@brief Set sec_mode pointed to by ptr to have no access rights.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr) do {(ptr)->sm = 0; (ptr)->lv = 0;} while (0) +/**@brief Set sec_mode pointed to by ptr to require no protection, open link.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr) do {(ptr)->sm = 1; (ptr)->lv = 1;} while (0) +/**@brief Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 2;} while (0) +/**@brief Set sec_mode pointed to by ptr to require encryption and MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 3;} while (0) +/**@brief Set sec_mode pointed to by ptr to require LESC encryption and MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_LESC_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 4;} while (0) +/**@brief Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 1;} while (0) +/**@brief Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 2;} while (0) +/**@} */ + + +/**@brief GAP Security Random Number Length. */ +#define BLE_GAP_SEC_RAND_LEN 8 + + +/**@brief GAP Security Key Length. */ +#define BLE_GAP_SEC_KEY_LEN 16 + + +/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key Length. */ +#define BLE_GAP_LESC_P256_PK_LEN 64 + + +/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman DHKey Length. */ +#define BLE_GAP_LESC_DHKEY_LEN 32 + + +/**@brief GAP Passkey Length. */ +#define BLE_GAP_PASSKEY_LEN 6 + + +/**@brief Maximum amount of addresses in the whitelist. */ +#define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8) + + +/**@brief Maximum amount of identities in the device identities list. */ +#define BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT (8) + + +/**@defgroup GAP_SEC_MODES GAP Security Modes + * @{ */ +#define BLE_GAP_SEC_MODE 0x00 /**< No key (may be used to reject). */ +/**@} */ +/** @} */ + + +/**@addtogroup BLE_GAP_STRUCTURES Structures + * @{ */ + +/**@brief Bluetooth Low Energy address. */ +typedef struct +{ + uint8_t addr_id_peer : 1; /**< Only valid for peer addresses. + Reference to peer in device identities list (as set with @ref sd_ble_gap_device_identities_set) when peer is using privacy. */ + uint8_t addr_type : 7; /**< See @ref BLE_GAP_ADDR_TYPES. */ + uint8_t addr[BLE_GAP_ADDR_LEN]; /**< 48-bit address, LSB format. */ +} ble_gap_addr_t; + + +/**@brief GAP connection parameters. + * + * @note When ble_conn_params_t is received in an event, both min_conn_interval and + * max_conn_interval will be equal to the connection interval set by the central. + * + * @note If both conn_sup_timeout and max_conn_interval are specified, then the following constraint applies: + * conn_sup_timeout * 4 > (1 + slave_latency) * max_conn_interval + * that corresponds to the following Bluetooth Spec requirement: + * The Supervision_Timeout in milliseconds shall be larger than + * (1 + Conn_Latency) * Conn_Interval_Max * 2, where Conn_Interval_Max is given in milliseconds. + */ +typedef struct +{ + uint16_t min_conn_interval; /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t max_conn_interval; /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t slave_latency; /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t conn_sup_timeout; /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/ +} ble_gap_conn_params_t; + + +/**@brief GAP connection security modes. + * + * Security Mode 0 Level 0: No access permissions at all (this level is not defined by the Bluetooth Core specification).\n + * Security Mode 1 Level 1: No security is needed (aka open link).\n + * Security Mode 1 Level 2: Encrypted link required, MITM protection not necessary.\n + * Security Mode 1 Level 3: MITM protected encrypted link required.\n + * Security Mode 1 Level 4: LESC MITM protected encrypted link required.\n + * Security Mode 2 Level 1: Signing or encryption required, MITM protection not necessary.\n + * Security Mode 2 Level 2: MITM protected signing required, unless link is MITM protected encrypted.\n + */ +typedef struct +{ + uint8_t sm : 4; /**< Security Mode (1 or 2), 0 for no permissions at all. */ + uint8_t lv : 4; /**< Level (1, 2, 3 or 4), 0 for no permissions at all. */ + +} ble_gap_conn_sec_mode_t; + + +/**@brief GAP connection security status.*/ +typedef struct +{ + ble_gap_conn_sec_mode_t sec_mode; /**< Currently active security mode for this connection.*/ + uint8_t encr_key_size; /**< Length of currently active encryption key, 7 to 16 octets (only applicable for bonding procedures). */ +} ble_gap_conn_sec_t; + + +/** + * @brief Device name and its properties + * @note If @ref max_len is more than @ref BLE_GAP_DEVNAME_DEFAULT_LEN and vloc is set to @ref BLE_GATTS_VLOC_STACK, the attribute table size must be increased to have room for the longer device name (see @ref ble_gatts_enable_params_t). + */ +typedef struct +{ + ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ + uint8_t vloc:2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ + uint8_t *p_value; /**< Pointer to where the value (device name) is stored or will be stored.*/ + uint16_t current_len; /**< Current length in bytes of the memory pointed to by p_value.*/ + uint16_t max_len; /**< Maximum length in bytes of the memory pointed to by p_value.*/ +} ble_gap_device_name_t; + + +/** + * @brief BLE GAP initialization parameters. + */ +typedef struct +{ + uint8_t periph_conn_count; /**< Number of connections acting as a peripheral */ + uint8_t central_conn_count; /**< Number of connections acting as a central */ + uint8_t central_sec_count; /**< Number of SMP instances for all connections acting as a central. */ + ble_gap_device_name_t const *p_device_name; /**< Pointer to device name instance. If NULL, @ref sd_ble_enable() will set the device name to @ref BLE_GAP_DEVNAME_DEFAULT. */ +} ble_gap_enable_params_t; + + +/**@brief Identity Resolving Key. */ +typedef struct +{ + uint8_t irk[BLE_GAP_SEC_KEY_LEN]; /**< Array containing IRK. */ +} ble_gap_irk_t; + + +/**@brief Channel mask for RF channels used in advertising. */ +typedef struct +{ + uint8_t ch_37_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 37 */ + uint8_t ch_38_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 38 */ + uint8_t ch_39_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 39 */ +} ble_gap_adv_ch_mask_t; + + +/**@brief GAP advertising parameters. */ +typedef struct +{ + uint8_t type; /**< See @ref BLE_GAP_ADV_TYPES. */ + ble_gap_addr_t const *p_peer_addr; /**< Address of a known peer. + - When privacy is enabled and the local device use @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE addresses, the device identity list is searched for a matching + entry. If the local IRK for that device identity is set, the local IRK for that device will be used to generate the advertiser address field in the advertise packet. + - If type is @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this must be set to the targeted initiator. If the initiator is in the device identity list, + the peer IRK for that device will be used to generate the initiator address field in the ADV_DIRECT_IND packet. */ + uint8_t fp; /**< Filter Policy, see @ref BLE_GAP_ADV_FILTER_POLICIES. */ + uint16_t interval; /**< Advertising interval between 0x0020 and 0x4000 in 0.625 ms units (20ms to 10.24s), see @ref BLE_GAP_ADV_INTERVALS. + - If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this parameter must be set to 0 for high duty cycle directed advertising. + - If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, set @ref BLE_GAP_ADV_INTERVAL_MIN <= interval <= @ref BLE_GAP_ADV_INTERVAL_MAX for low duty cycle advertising.*/ + uint16_t timeout; /**< Advertising timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. See also @ref BLE_GAP_ADV_TIMEOUT_VALUES. If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this parameter must be set to 0 for High duty cycle directed advertising. */ + ble_gap_adv_ch_mask_t channel_mask; /**< Advertising channel mask. See @ref ble_gap_adv_ch_mask_t. */ +} ble_gap_adv_params_t; + + +/**@brief GAP scanning parameters. */ +typedef struct +{ + uint8_t active : 1; /**< If 1, perform active scanning (scan requests). */ + uint8_t use_whitelist : 1; /**< If 1, filter advertisers using current active whitelist. */ + uint8_t adv_dir_report : 1; /**< If 1, also report directed advertisements where the initiator field is set to a private resolvable address, + even if the address did not resolve to an entry in the device identity list. A report will be generated + even if the peer is not in the whitelist. */ + uint16_t interval; /**< Scan interval between 0x0004 and 0x4000 in 0.625ms units (2.5ms to 10.24s). */ + uint16_t window; /**< Scan window between 0x0004 and 0x4000 in 0.625ms units (2.5ms to 10.24s). */ + uint16_t timeout; /**< Scan timeout between 0x0001 and 0xFFFF in seconds, 0x0000 disables timeout. */ +} ble_gap_scan_params_t; + + +/**@brief Device Privacy. + * + * The privacy feature provides a way for the device to avoid being tracked over a period of time. + * The privacy feature, when enabled, hides the local device identity and replaces it with a private address + * that is automatically refreshed at a specified interval. + * + * If a device still wants to be recognized by other peers, it needs to share it's Identity Resolving Key (IRK). + * With this key, a device can generate a random private address that can only be recognized by peers in possession of that key, + * and devices can establish connections without revealing their real identities. + * + * @note If the device IRK is updated, the new IRK becomes the one to be distributed in all + * bonding procedures performed after @ref sd_ble_gap_privacy_set returns. + * The IRK distributed during bonding procedure is the device IRK that is active when @ref sd_ble_gap_sec_params_reply is called. + */ +typedef struct +{ + uint8_t privacy_mode; /**< Privacy mode, see @ref BLE_GAP_PRIVACY_MODES. Default is @ref BLE_GAP_PRIVACY_MODE_OFF. */ + uint8_t private_addr_type; /**< The private address type must be either @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE or @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE. */ + uint16_t private_addr_cycle_s; /**< Private address cycle interval in seconds. Providing an address cycle value of 0 will use the default value defined by @ref BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S. */ + ble_gap_irk_t *p_device_irk; /**< When used as input, pointer to IRK structure that will be used as the default IRK. If NULL, the device default IRK will be used. + When used as output, pointer to IRK structure where the current default IRK will be written to. If NULL, this argument is ignored. + By default, the default IRK is used to generate random private resolvable addresses for the local device unless instructed otherwise. */ +} ble_gap_privacy_params_t; + + +/** @brief Keys that can be exchanged during a bonding procedure. */ +typedef struct +{ + uint8_t enc : 1; /**< Long Term Key and Master Identification. */ + uint8_t id : 1; /**< Identity Resolving Key and Identity Address Information. */ + uint8_t sign : 1; /**< Connection Signature Resolving Key. */ + uint8_t link : 1; /**< Derive the Link Key from the LTK. */ +} ble_gap_sec_kdist_t; + + +/**@brief GAP security parameters. */ +typedef struct +{ + uint8_t bond : 1; /**< Perform bonding. */ + uint8_t mitm : 1; /**< Enable Man In The Middle protection. */ + uint8_t lesc : 1; /**< Enable LE Secure Connection pairing. */ + uint8_t keypress : 1; /**< Enable generation of keypress notifications. */ + uint8_t io_caps : 3; /**< IO capabilities, see @ref BLE_GAP_IO_CAPS. */ + uint8_t oob : 1; /**< Out Of Band data available. */ + uint8_t min_key_size; /**< Minimum encryption key size in octets between 7 and 16. If 0 then not applicable in this instance. */ + uint8_t max_key_size; /**< Maximum encryption key size in octets between min_key_size and 16. */ + ble_gap_sec_kdist_t kdist_own; /**< Key distribution bitmap: keys that the local device will distribute. */ + ble_gap_sec_kdist_t kdist_peer; /**< Key distribution bitmap: keys that the remote device will distribute. */ +} ble_gap_sec_params_t; + + +/**@brief GAP Encryption Information. */ +typedef struct +{ + uint8_t ltk[BLE_GAP_SEC_KEY_LEN]; /**< Long Term Key. */ + uint8_t lesc : 1; /**< Key generated using LE Secure Connections. */ + uint8_t auth : 1; /**< Authenticated Key. */ + uint8_t ltk_len : 6; /**< LTK length in octets. */ +} ble_gap_enc_info_t; + + +/**@brief GAP Master Identification. */ +typedef struct +{ + uint16_t ediv; /**< Encrypted Diversifier. */ + uint8_t rand[BLE_GAP_SEC_RAND_LEN]; /**< Random Number. */ +} ble_gap_master_id_t; + + +/**@brief GAP Signing Information. */ +typedef struct +{ + uint8_t csrk[BLE_GAP_SEC_KEY_LEN]; /**< Connection Signature Resolving Key. */ +} ble_gap_sign_info_t; + + +/**@brief GAP LE Secure Connections P-256 Public Key. */ +typedef struct +{ + uint8_t pk[BLE_GAP_LESC_P256_PK_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key. Stored in the standard SMP protocol format: {X,Y} both in little-endian. */ +} ble_gap_lesc_p256_pk_t; + + +/**@brief GAP LE Secure Connections DHKey. */ +typedef struct +{ + uint8_t key[BLE_GAP_LESC_DHKEY_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman Key. Stored in little-endian. */ +} ble_gap_lesc_dhkey_t; + + +/**@brief GAP LE Secure Connections OOB data. */ +typedef struct +{ + ble_gap_addr_t addr; /**< Bluetooth address of the device. */ + uint8_t r[BLE_GAP_SEC_KEY_LEN]; /**< Random Number. */ + uint8_t c[BLE_GAP_SEC_KEY_LEN]; /**< Confirm Value. */ +} ble_gap_lesc_oob_data_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONNECTED. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 + and the address is the device's identity address. */ + uint8_t role; /**< BLE role for this connection, see @ref BLE_GAP_ROLES */ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_connected_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_DISCONNECTED. */ +typedef struct +{ + uint8_t reason; /**< HCI error code, see @ref BLE_HCI_STATUS_CODES. */ +} ble_gap_evt_disconnected_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE. */ +typedef struct +{ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_conn_param_update_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST. */ +typedef struct +{ + ble_gap_sec_params_t peer_params; /**< Initiator Security Parameters. */ +} ble_gap_evt_sec_params_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SEC_INFO_REQUEST. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ + ble_gap_master_id_t master_id; /**< Master Identification for LTK lookup. */ + uint8_t enc_info : 1; /**< If 1, Encryption Information required. */ + uint8_t id_info : 1; /**< If 1, Identity Information required. */ + uint8_t sign_info : 1; /**< If 1, Signing Information required. */ +} ble_gap_evt_sec_info_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_PASSKEY_DISPLAY. */ +typedef struct +{ + uint8_t passkey[BLE_GAP_PASSKEY_LEN]; /**< 6-digit passkey in ASCII ('0'-'9' digits only). */ + uint8_t match_request : 1; /**< If 1 requires the application to report the match using @ref sd_ble_gap_auth_key_reply + with either @ref BLE_GAP_AUTH_KEY_TYPE_NONE if there is no match or + @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY if there is a match. */ +} ble_gap_evt_passkey_display_t; + +/**@brief Event structure for @ref BLE_GAP_EVT_KEY_PRESSED. */ +typedef struct +{ + uint8_t kp_not; /**< Keypress notification type, see @ref BLE_GAP_KP_NOT_TYPES. */ +} ble_gap_evt_key_pressed_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_KEY_REQUEST. */ +typedef struct +{ + uint8_t key_type; /**< See @ref BLE_GAP_AUTH_KEY_TYPES. */ +} ble_gap_evt_auth_key_request_t; + +/**@brief Event structure for @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST. */ +typedef struct +{ + ble_gap_lesc_p256_pk_t *p_pk_peer; /**< LE Secure Connections remote P-256 Public Key. This will point to the application-supplied memory + inside the keyset during the call to @ref sd_ble_gap_sec_params_reply. */ + uint8_t oobd_req :1; /**< LESC OOB data required. A call to @ref sd_ble_gap_lesc_oob_data_set is required to complete the procedure. */ +} ble_gap_evt_lesc_dhkey_request_t; + + +/**@brief Security levels supported. + * @note See Bluetooth Specification Version 4.2 Volume 3, Part C, Chapter 10, Section 10.2.1. +*/ +typedef struct +{ + uint8_t lv1 : 1; /**< If 1: Level 1 is supported. */ + uint8_t lv2 : 1; /**< If 1: Level 2 is supported. */ + uint8_t lv3 : 1; /**< If 1: Level 3 is supported. */ + uint8_t lv4 : 1; /**< If 1: Level 4 is supported. */ +} ble_gap_sec_levels_t; + + +/**@brief Encryption Key. */ +typedef struct +{ + ble_gap_enc_info_t enc_info; /**< Encryption Information. */ + ble_gap_master_id_t master_id; /**< Master Identification. */ +} ble_gap_enc_key_t; + + +/**@brief Identity Key. */ +typedef struct +{ + ble_gap_irk_t id_info; /**< Identity Resolving Key. */ + ble_gap_addr_t id_addr_info; /**< Identity Address. */ +} ble_gap_id_key_t; + + +/**@brief Security Keys. */ +typedef struct +{ + ble_gap_enc_key_t *p_enc_key; /**< Encryption Key, or NULL. */ + ble_gap_id_key_t *p_id_key; /**< Identity Key, or NULL. */ + ble_gap_sign_info_t *p_sign_key; /**< Signing Key, or NULL. */ + ble_gap_lesc_p256_pk_t *p_pk; /**< LE Secure Connections P-256 Public Key. When in debug mode the application must use the value defined + in the Core Bluetooth Specification v4.2 Vol.3, Part H, Section 2.3.5.6.1 */ +} ble_gap_sec_keys_t; + + +/**@brief Security key set for both local and peer keys. */ +typedef struct +{ + ble_gap_sec_keys_t keys_own; /**< Keys distributed by the local device. For LE Secure Connections the encryption key will be generated locally and will always be stored if bonding. */ + ble_gap_sec_keys_t keys_peer; /**< Keys distributed by the remote device. For LE Secure Connections, p_enc_key must always be NULL. */ +} ble_gap_sec_keyset_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_STATUS. */ +typedef struct +{ + uint8_t auth_status; /**< Authentication status, see @ref BLE_GAP_SEC_STATUS. */ + uint8_t error_src : 2; /**< On error, source that caused the failure, see @ref BLE_GAP_SEC_STATUS_SOURCES. */ + uint8_t bonded : 1; /**< Procedure resulted in a bond. */ + ble_gap_sec_levels_t sm1_levels; /**< Levels supported in Security Mode 1. */ + ble_gap_sec_levels_t sm2_levels; /**< Levels supported in Security Mode 2. */ + ble_gap_sec_kdist_t kdist_own; /**< Bitmap stating which keys were exchanged (distributed) by the local device. If bonding with LE Secure Connections, the enc bit will be always set. */ + ble_gap_sec_kdist_t kdist_peer; /**< Bitmap stating which keys were exchanged (distributed) by the remote device. If bonding with LE Secure Connections, the enc bit will never be set. */ +} ble_gap_evt_auth_status_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONN_SEC_UPDATE. */ +typedef struct +{ + ble_gap_conn_sec_t conn_sec; /**< Connection security level. */ +} ble_gap_evt_conn_sec_update_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_TIMEOUT. */ +typedef struct +{ + uint8_t src; /**< Source of timeout event, see @ref BLE_GAP_TIMEOUT_SOURCES. */ +} ble_gap_evt_timeout_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_RSSI_CHANGED. */ +typedef struct +{ + int8_t rssi; /**< Received Signal Strength Indication in dBm. */ +} ble_gap_evt_rssi_changed_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_ADV_REPORT. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 + and the address is the device's identity address. */ + ble_gap_addr_t direct_addr; /**< Set when the scanner is unable to resolve the private resolvable address of the initiator + field of a directed advertisement packet and the scanner has been enabled to report this in @ref ble_gap_scan_params_t::adv_dir_report. */ + int8_t rssi; /**< Received Signal Strength Indication in dBm. */ + uint8_t scan_rsp : 1; /**< If 1, the report corresponds to a scan response and the type field may be ignored. */ + uint8_t type : 2; /**< See @ref BLE_GAP_ADV_TYPES. Only valid if the scan_rsp field is 0. */ + uint8_t dlen : 5; /**< Advertising or scan response data length. */ + uint8_t data[BLE_GAP_ADV_MAX_SIZE]; /**< Advertising or scan response data. */ +} ble_gap_evt_adv_report_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SEC_REQUEST. */ +typedef struct +{ + uint8_t bond : 1; /**< Perform bonding. */ + uint8_t mitm : 1; /**< Man In The Middle protection requested. */ + uint8_t lesc : 1; /**< LE Secure Connections requested. */ + uint8_t keypress : 1; /**< Generation of keypress notifications requested. */ +} ble_gap_evt_sec_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST. */ +typedef struct +{ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_conn_param_update_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SCAN_REQ_REPORT. */ +typedef struct +{ + int8_t rssi; /**< Received Signal Strength Indication in dBm. */ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 + and the address is the device's identity address. */ +} ble_gap_evt_scan_req_report_t; + + +/**@brief GAP event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occurred. */ + union /**< union alternative identified by evt_id in enclosing struct. */ + { + ble_gap_evt_connected_t connected; /**< Connected Event Parameters. */ + ble_gap_evt_disconnected_t disconnected; /**< Disconnected Event Parameters. */ + ble_gap_evt_conn_param_update_t conn_param_update; /**< Connection Parameter Update Parameters. */ + ble_gap_evt_sec_params_request_t sec_params_request; /**< Security Parameters Request Event Parameters. */ + ble_gap_evt_sec_info_request_t sec_info_request; /**< Security Information Request Event Parameters. */ + ble_gap_evt_passkey_display_t passkey_display; /**< Passkey Display Event Parameters. */ + ble_gap_evt_key_pressed_t key_pressed; /**< Key Pressed Event Parameters. */ + ble_gap_evt_auth_key_request_t auth_key_request; /**< Authentication Key Request Event Parameters. */ + ble_gap_evt_lesc_dhkey_request_t lesc_dhkey_request; /**< LE Secure Connections DHKey calculation request. */ + ble_gap_evt_auth_status_t auth_status; /**< Authentication Status Event Parameters. */ + ble_gap_evt_conn_sec_update_t conn_sec_update; /**< Connection Security Update Event Parameters. */ + ble_gap_evt_timeout_t timeout; /**< Timeout Event Parameters. */ + ble_gap_evt_rssi_changed_t rssi_changed; /**< RSSI Event parameters. */ + ble_gap_evt_adv_report_t adv_report; /**< Advertising Report Event Parameters. */ + ble_gap_evt_sec_request_t sec_request; /**< Security Request Event Parameters. */ + ble_gap_evt_conn_param_update_request_t conn_param_update_request; /**< Connection Parameter Update Parameters. */ + ble_gap_evt_scan_req_report_t scan_req_report; /**< Scan Request Report parameters. */ + } params; /**< Event Parameters. */ +} ble_gap_evt_t; + + +/**@brief Channel Map option. + * Used with @ref sd_ble_opt_get to get the current channel map + * or @ref sd_ble_opt_set to set a new channel map. When setting the + * channel map, it applies to all current and future connections. When getting the + * current channel map, it applies to a single connection and the connection handle + * must be supplied. + * + * @note Setting the channel map may take some time, depending on connection parameters. + * The time taken may be different for each connection and the get operation will + * return the previous channel map until the new one has taken effect. + * + * @note After setting the channel map, by spec it can not be set again until at least 1 s has passed. + * See Bluetooth Specification Version 4.1 Volume 2, Part E, Section 7.3.46. + * + * @retval ::NRF_SUCCESS Get or set successful. + * @retval ::NRF_ERROR_BUSY Channel map was set again before enough time had passed. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied for get. + * @retval ::NRF_ERROR_NOT_SUPPORTED Returned by sd_ble_opt_set in peripheral-only SoftDevices. + * + */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle (only applicable for get) */ + uint8_t ch_map[5]; /**< Channel Map (37-bit). */ +} ble_gap_opt_ch_map_t; + + +/**@brief Local connection latency option. + * + * Local connection latency is a feature which enables the slave to improve + * current consumption by ignoring the slave latency set by the peer. The + * local connection latency can only be set to a multiple of the slave latency, + * and cannot be longer than half of the supervision timeout. + * + * Used with @ref sd_ble_opt_set to set the local connection latency. The + * @ref sd_ble_opt_get is not supported for this option, but the actual + * local connection latency (unless set to NULL) is set as a return parameter + * when setting the option. + * + * @note The latency set will be truncated down to the closest slave latency event + * multiple, or the nearest multiple before half of the supervision timeout. + * + * @note The local connection latency is disabled by default, and needs to be enabled for new + * connections and whenever the connection is updated. + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. + */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle */ + uint16_t requested_latency; /**< Requested local connection latency. */ + uint16_t * p_actual_latency; /**< Pointer to storage for the actual local connection latency (can be set to NULL to skip return value). */ +} ble_gap_opt_local_conn_latency_t; + + +/**@brief Passkey Option. + * + * Structure containing the passkey to be used during pairing. This can be used with @ref + * sd_ble_opt_set to make the SoftDevice use a pre-programmed passkey for authentication + * instead of generating a random one. + * + * @note Repeated pairing attempts using the same pre-programmed passkey makes pairing vulnerable to MITM attacks. + * + * @note @ref sd_ble_opt_get is not supported for this option. + * + */ +typedef struct +{ + uint8_t * p_passkey; /**< Pointer to 6-digit ASCII string (digit 0..9 only, no NULL termination) passkey to be used during pairing. If this is NULL, the SoftDevice will generate a random passkey if required.*/ +} ble_gap_opt_passkey_t; + + +/**@brief Scan request report option. + * + * This can be used with @ref sd_ble_opt_set to make the SoftDevice send + * @ref BLE_GAP_EVT_SCAN_REQ_REPORT events. + * + * @note Due to the limited space reserved for scan request report events, + * not all received scan requests will be reported. + * + * @note If whitelisting is used, only whitelisted requests are reported. + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_STATE When advertising is ongoing while the option is set. + */ +typedef struct +{ + uint8_t enable : 1; /**< Enable scan request reports. */ +} ble_gap_opt_scan_req_report_t; + + +/**@brief Compatibility mode option. + * + * This can be used with @ref sd_ble_opt_set to enable and disable + * compatibility modes. Compatibility modes are disabled by default. + * + * @note Compatibility mode 1 enables interoperability with devices that do not support + * a value of 0 for the WinOffset parameter in the Link Layer CONNECT_REQ packet. + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_STATE When connection creation is ongoing while mode 1 is set. + */ +typedef struct +{ + uint8_t mode_1_enable : 1; /**< Enable compatibility mode 1.*/ +} ble_gap_opt_compat_mode_t; + +/**@brief Data length extension option. + * + * This can be used with @ref sd_ble_opt_set to enable longer data packets. + * + * @note An rxtx_max_pdu_payload_size of 0 will result in the default minimum payload size of 27. + * @note Not supported by SoftDevices for nRF51 Series devices. + * @note The parameters for a connection are applied when a connection complete + * event is generated for the host. + * + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_PARAM If the payload size is not 0 or a valid link layer PDU payload size. + * @retval ::NRF_ERROR_NOT_SUPPORTED If called on a SoftDevice designed for nRF51 (e.g. s130). + */ +typedef struct +{ + uint8_t rxtx_max_pdu_payload_size; /**< Max PDU payload size (in octets). */ +} ble_gap_opt_ext_len_t; + + + +/**@brief Authenticated payload timeout option. + * + * This can be used with @ref sd_ble_opt_set to change the Authenticated payload timeout to a value other than the default of 8 minutes. + * + * @note The authenticated payload timeout event ::BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD will be generated + * if auth_payload_timeout time has elapsed without receiving a packet with a valid MIC on an encrypted + * link. + * + * @note The LE ping procedure will be initiated before the timer expires to give the peer a chance + * to reset the timer. In addition the stack will try to prioritize running of LE ping over other + * activities to increase chances of finishing LE ping before timer expires. To avoid side-effects + * on other activities, it is recommended to use high timeout values. + * Recommended timeout > 2*(connInterval * (6 + connSlaveLatency)). + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. auth_payload_timeout was outside of allowed range. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. + */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle */ + uint16_t auth_payload_timeout; /**< Requested timeout in 10 ms unit. Maximum is 48 000 (=480 000 ms =8 min). Minimum is 1 (=10ms). */ +} ble_gap_opt_auth_payload_timeout_t; + + +/**@brief Option structure for GAP options. */ +typedef union +{ + ble_gap_opt_ch_map_t ch_map; /**< Parameters for the Channel Map option. */ + ble_gap_opt_local_conn_latency_t local_conn_latency; /**< Parameters for the Local connection latency option */ + ble_gap_opt_passkey_t passkey; /**< Parameters for the Passkey option.*/ + ble_gap_opt_scan_req_report_t scan_req_report; /**< Parameters for the scan request report option.*/ + ble_gap_opt_compat_mode_t compat_mode; /**< Parameters for the compatibility mode option.*/ + ble_gap_opt_ext_len_t ext_len; /**< Parameters for the extended length option. */ + ble_gap_opt_auth_payload_timeout_t auth_payload_timeout; /**< Parameters for the authenticated payload timeout option.*/ +} ble_gap_opt_t; +/**@} */ + + +/**@addtogroup BLE_GAP_FUNCTIONS Functions + * @{ */ + +/**@brief Set the local Bluetooth identity address. + * + * The local Bluetooth identity address is the address that identifies this device to other peers. + * The address type must be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. + * The identity address cannot be changed while roles are running. + * + * @note This address will be distributed to the peer during bonding. + * If the address changes, the address stored in the peer device will not be valid and the ability to + * reconnect using the old address will be lost. + * + * @note By default the SoftDevice will set an address of type @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC upon being + * enabled. The address is a random number populated during the IC manufacturing process and remains unchanged + * for the lifetime of each IC. + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @endmscs + * + * @param[in] p_addr Pointer to address structure. + * + * @retval ::NRF_SUCCESS Address successfully set. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_INVALID_STATE The identity address cannot be changed while the roles are running. + */ +SVCALL(SD_BLE_GAP_ADDR_SET, uint32_t, sd_ble_gap_addr_set(ble_gap_addr_t const *p_addr)); + + +/**@brief Get local Bluetooth identity address. + * + * @note This will always return the identity address irrespective of the privacy settings, + * i.e. the address type will always be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. + * + * @param[out] p_addr Pointer to address structure to be filled in. + * + * @retval ::NRF_SUCCESS Address successfully retrieved. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. + */ +SVCALL(SD_BLE_GAP_ADDR_GET, uint32_t, sd_ble_gap_addr_get(ble_gap_addr_t *p_addr)); + + +/**@brief Set the active whitelist in the SoftDevice. + * + * @note Only one whitelist can be used at a time and the whitelist is shared between the BLE roles. + * The whitelist cannot be set if a BLE role is using the whitelist. + * + * @note If an address is resolved using the information in the device identity list, then the whitelist + * filter policy applies to the peer identity address and not the resolvable address sent on air. + * + * @mscs + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_PRIVATE_SCAN_MSC} + * @endmscs + * + * @param[in] pp_wl_addrs Pointer to a whitelist of peer addresses, if NULL the whitelist will be cleared. + * @param[in] len Length of the whitelist, maximum @ref BLE_GAP_WHITELIST_ADDR_MAX_COUNT. + * + * @retval ::NRF_SUCCESS The whitelist is successfully set/cleared. + * @retval ::NRF_ERROR_INVALID_ADDR The whitelist (or one of its entries) provided is invalid. + * @retval ::BLE_ERROR_GAP_WHITELIST_IN_USE The whitelist is in use by a BLE role and cannot be set or cleared. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. + * @retval ::NRF_ERROR_DATA_SIZE The given whitelist size is invalid (zero or too large); this can only return when + * pp_wl_addrs is not NULL. + */ +//lint -save -esym(18, sd_ble_gap_whitelist_set) +SVCALL(SD_BLE_GAP_WHITELIST_SET, uint32_t, sd_ble_gap_whitelist_set(ble_gap_addr_t const * const * pp_wl_addrs, uint8_t len)); +//lint -restore + +/**@brief Set device identity list. + * + * @note Only one device identity list can be used at a time and the list is shared between the BLE roles. + * The device identity list cannot be set if a BLE role is using the list. + * + * @param[in] pp_id_keys Pointer to an array of peer identity addresses and peer IRKs, if NULL the device identity list will be cleared. + * @param[in] pp_local_irks Pointer to an array of local IRKs. Each entry in the array maps to the entry in pp_id_keys at the same index. + * To fill in the list with the currently set device IRK for all peers, set to NULL. + * @param[in] len Length of the device identity list, maximum @ref BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT. + * + * @mscs + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_PRIVATE_SCAN_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_PRIV_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS The device identity list successfully set/cleared. + * @retval ::NRF_ERROR_INVALID_ADDR The device identity list (or one of its entries) provided is invalid. + This code may be returned if the local IRK list also has an invalid entry. + * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE The device identity list is in use and cannot be set or cleared. + * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE The device identity list contains multiple entries with the same identity address. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. + * @retval ::NRF_ERROR_DATA_SIZE The given device identity list size invalid (zero or too large); this can + * only return when pp_id_keys is not NULL. + */ +//lint -save -esym(18, sd_ble_gap_device_identities_set) +SVCALL(SD_BLE_GAP_DEVICE_IDENTITIES_SET, uint32_t, sd_ble_gap_device_identities_set(ble_gap_id_key_t const * const * pp_id_keys, ble_gap_irk_t const * const * pp_local_irks, uint8_t len)); +//lint -restore + +/**@brief Set privacy settings. + * + * @note Privacy settings cannot be set while BLE roles are running. + * + * @param[in] p_privacy_params Privacy settings. + * + * @mscs + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. + * @retval ::NRF_ERROR_INVALID_ADDR The pointer to privacy settings is NULL or invalid. + Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. + * @retval ::NRF_ERROR_INVALID_PARAM Out of range parameters are provided. + * @retval ::NRF_ERROR_INVALID_STATE Privacy settings cannot be changed while BLE roles using privacy are enabled. + */ +SVCALL(SD_BLE_GAP_PRIVACY_SET, uint32_t, sd_ble_gap_privacy_set(ble_gap_privacy_params_t const *p_privacy_params)); + + +/**@brief Get privacy settings. + * + * @note The privacy settings returned include the current device irk as well. + * + * @param[in] p_privacy_params Privacy settings. + * + * @retval ::NRF_SUCCESS Privacy settings read. + * @retval ::NRF_ERROR_INVALID_ADDR The pointer given for returning the privacy settings may be NULL or invalid. + Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. + */ +SVCALL(SD_BLE_GAP_PRIVACY_GET, uint32_t, sd_ble_gap_privacy_get(ble_gap_privacy_params_t *p_privacy_params)); + + +/**@brief Set, clear or update advertising and scan response data. + * + * @note The format of the advertising data will be checked by this call to ensure interoperability. + * Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and + * duplicating the local name in the advertising data and scan response data. + * + * @note To clear the advertising data and set it to a 0-length packet, simply provide a valid pointer (p_data/p_sr_data) with its corresponding + * length (dlen/srdlen) set to 0. + * + * @note The call will fail if p_data and p_sr_data are both NULL since this would have no effect. + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @param[in] p_data Raw data to be placed in advertising packet. If NULL, no changes are made to the current advertising packet data. + * @param[in] dlen Data length for p_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_data is NULL, can be 0 if p_data is not NULL. + * @param[in] p_sr_data Raw data to be placed in scan response packet. If NULL, no changes are made to the current scan response packet data. + * @param[in] srdlen Data length for p_sr_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_sr_data is NULL, can be 0 if p_data is not NULL. + * + * @retval ::NRF_SUCCESS Advertising data successfully updated or cleared. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, both p_data and p_sr_data cannot be NULL. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_FLAGS Invalid combination of advertising flags supplied. + * @retval ::NRF_ERROR_INVALID_DATA Invalid data type(s) supplied, check the advertising data format specification. + * @retval ::NRF_ERROR_INVALID_LENGTH Invalid data length(s) supplied. + * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported data type. + * @retval ::BLE_ERROR_GAP_UUID_LIST_MISMATCH Invalid UUID list supplied. + */ +SVCALL(SD_BLE_GAP_ADV_DATA_SET, uint32_t, sd_ble_gap_adv_data_set(uint8_t const *p_data, uint8_t dlen, uint8_t const *p_sr_data, uint8_t srdlen)); + + +/**@brief Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). + * + * @note An application can start an advertising procedure for broadcasting purposes while a connection + * is active. After a @ref BLE_GAP_EVT_CONNECTED event is received, this function may therefore + * be called to start a broadcast advertising procedure. The advertising procedure + * cannot however be connectable (it must be of type @ref BLE_GAP_ADV_TYPE_ADV_SCAN_IND or + * @ref BLE_GAP_ADV_TYPE_ADV_NONCONN_IND). @note Only one advertiser may be active at any time. + * + * @events + * @event{@ref BLE_GAP_EVT_CONNECTED, Generated after connection has been established through connectable advertising.} + * @event{@ref BLE_GAP_EVT_TIMEOUT, Advertisement has timed out.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @param[in] p_adv_params Pointer to advertising parameters structure. + * + * @retval ::NRF_SUCCESS The BLE stack has started advertising. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached; connectable advertiser cannot be started. + * @retval ::NRF_ERROR_NO_MEM The configured memory pools (see @ref ble_conn_bw_counts_t) are not large enough for the + * bandwidth selected for this connection. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check the accepted ranges and limits. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Bluetooth address supplied. + * @retval ::BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST Discoverable mode and whitelist incompatible. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. + * Stop one or more currently active roles (Central, Peripheral or Observer) and try again + */ +SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(ble_gap_adv_params_t const *p_adv_params)); + + +/**@brief Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS The BLE stack has stopped advertising. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation (most probably not in advertising state). + */ +SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(void)); + + +/**@brief Update connection parameters. + * + * @details In the central role this will initiate a Link Layer connection parameter update procedure, + * otherwise in the peripheral role, this will send the corresponding L2CAP request and wait for + * the central to perform the procedure. In both cases, and regardless of success or failure, the application + * will be informed of the result with a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE event. + * + * @details This function can be used as a central both to reply to a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST or to start the procedure unrequested. + * + * @events + * @event{@ref BLE_GAP_EVT_CONN_PARAM_UPDATE, Result of the connection parameter update procedure.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CPU_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} + * @mmsc{@ref BLE_GAP_MULTILINK_CPU_MSC} + * @mmsc{@ref BLE_GAP_MULTILINK_CTRL_PROC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CPU_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_conn_params Pointer to desired connection parameters. If NULL is provided on a peripheral role, + * the parameters in the PPCP characteristic of the GAP service will be used instead. + * If NULL is provided on a central role and in response to a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST, the peripheral request will be rejected + * + * @retval ::NRF_SUCCESS The Connection Update procedure has been started successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, process pending events and wait for pending procedures to complete and retry. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const *p_conn_params)); + + +/**@brief Disconnect (GAP Link Termination). + * + * @details This call initiates the disconnection procedure, and its completion will be communicated to the application + * with a @ref BLE_GAP_EVT_DISCONNECTED event. + * + * @events + * @event{@ref BLE_GAP_EVT_DISCONNECTED, Generated when disconnection procedure is complete.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CONN_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] hci_status_code HCI status code, see @ref BLE_HCI_STATUS_CODES (accepted values are @ref BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION and @ref BLE_HCI_CONN_INTERVAL_UNACCEPTABLE). + * + * @retval ::NRF_SUCCESS The disconnection procedure has been started successfully. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation (disconnection is already in progress). + */ +SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code)); + + +/**@brief Set the radio's transmit power. + * + * @param[in] tx_power Radio transmit power in dBm (accepted values are -40, -30, -20, -16, -12, -8, -4, 0, 3, and 4 dBm). + * + * @note The +3dBm setting is only available on nRF52 series ICs. + * @note The -30dBm setting is only available on nRF51 series ICs. + * @note The -40dBm setting is only available on nRF52 series ICs. + * + * @retval ::NRF_SUCCESS Successfully changed the transmit power. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(int8_t tx_power)); + + +/**@brief Set GAP Appearance value. + * + * @param[in] appearance Appearance (16-bit), see @ref BLE_APPEARANCES. + * + * @retval ::NRF_SUCCESS Appearance value set successfully. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance)); + + +/**@brief Get GAP Appearance value. + * + * @param[out] p_appearance Pointer to appearance (16-bit) to be filled in, see @ref BLE_APPEARANCES. + * + * @retval ::NRF_SUCCESS Appearance value retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t *p_appearance)); + + +/**@brief Set GAP Peripheral Preferred Connection Parameters. + * + * @param[in] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure with the desired parameters. + * + * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters set successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const *p_conn_params)); + + +/**@brief Get GAP Peripheral Preferred Connection Parameters. + * + * @param[out] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure where the parameters will be stored. + * + * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t *p_conn_params)); + + +/**@brief Set GAP device name. + * + * @param[in] p_write_perm Write permissions for the Device Name characteristic, see @ref ble_gap_conn_sec_mode_t. + * @param[in] p_dev_name Pointer to a UTF-8 encoded, non NULL-terminated string. + * @param[in] len Length of the UTF-8, non NULL-terminated string pointed to by p_dev_name in octets (must be smaller or equal than @ref BLE_GAP_DEVNAME_MAX_LEN). + * + * @note If the device name is located in application flash memory (see @ref ble_gap_device_name_t), it cannot be changed. Then @ref NRF_ERROR_FORBIDDEN will be returned. + * + * @retval ::NRF_SUCCESS GAP device name and permissions set successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + * @retval ::NRF_ERROR_FORBIDDEN Device name is not writable. + */ +SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len)); + + +/**@brief Get GAP device name. + * + * @note If the device name is longer than the size of the supplied buffer, + * p_len will return the complete device name length, + * and not the number of bytes actually returned in p_dev_name. + * The application may use this information to allocate a suitable buffer size. + * + * @param[out] p_dev_name Pointer to an empty buffer where the UTF-8 non NULL-terminated string will be placed. Set to NULL to obtain the complete device name length. + * @param[in,out] p_len Length of the buffer pointed by p_dev_name, complete device name length on output. + * + * @retval ::NRF_SUCCESS GAP device name retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + */ +SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t *p_dev_name, uint16_t *p_len)); + + +/**@brief Initiate the GAP Authentication procedure. + * + * @details In the central role, this function will send an SMP Pairing Request (or an SMP Pairing Failed if rejected), + * otherwise in the peripheral role, an SMP Security Request will be sent. + * + * @events + * @event{Depending on the security parameters set and the packet exchanges with the peer\, the following events may be generated:} + * @event{@ref BLE_GAP_EVT_SEC_PARAMS_REQUEST} + * @event{@ref BLE_GAP_EVT_SEC_INFO_REQUEST} + * @event{@ref BLE_GAP_EVT_PASSKEY_DISPLAY} + * @event{@ref BLE_GAP_EVT_KEY_PRESSED} + * @event{@ref BLE_GAP_EVT_AUTH_KEY_REQUEST} + * @event{@ref BLE_GAP_EVT_LESC_DHKEY_REQUEST} + * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE} + * @event{@ref BLE_GAP_EVT_AUTH_STATUS} + * @event{@ref BLE_GAP_EVT_TIMEOUT} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_SEC_REQ_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_SEC_REQ_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_sec_params Pointer to the @ref ble_gap_sec_params_t structure with the security parameters to be used during the pairing or bonding procedure. + * In the peripheral role, only the bond, mitm, lesc and keypress fields of this structure are used. + * In the central role, this pointer may be NULL to reject a Security Request. + * + * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_NO_MEM The maximum number of authentication procedures that can run in parallel for the given role is reached. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. + * @retval ::NRF_ERROR_TIMEOUT A SMP timeout has occurred, and further SMP operations on this link is prohibited. + */ +SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const *p_sec_params)); + + +/**@brief Reply with GAP security parameters. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_PERIPH_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_CONFIRM_FAIL_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_KS_TOO_SMALL_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_APP_ERROR_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_REMOTE_PAIRING_FAIL_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_TIMEOUT_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] sec_status Security status, see @ref BLE_GAP_SEC_STATUS. + * @param[in] p_sec_params Pointer to a @ref ble_gap_sec_params_t security parameters structure. In the central role this must be set to NULL, as the parameters have + * already been provided during a previous call to @ref sd_ble_gap_authenticate. + * @param[in,out] p_sec_keyset Pointer to a @ref ble_gap_sec_keyset_t security keyset structure. Any keys generated and/or distributed as a result of the ongoing security procedure + * will be stored into the memory referenced by the pointers inside this structure. The keys will be stored and available to the application + * upon reception of a @ref BLE_GAP_EVT_AUTH_STATUS event. + * Note that the SoftDevice expects the application to provide memory for storing the + * peer's keys. So it must be ensured that the relevant pointers inside this structure are not NULL. The pointers to the local key + * can, however, be NULL, in which case, the local key data will not be available to the application upon reception of the + * @ref BLE_GAP_EVT_AUTH_STATUS event. + * + * @retval ::NRF_SUCCESS Successfully accepted security parameter from the application. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. + */ +SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const *p_sec_params, ble_gap_sec_keyset_t const *p_sec_keyset)); + + +/**@brief Reply with an authentication key. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_AUTH_KEY_REQUEST or a @ref BLE_GAP_EVT_PASSKEY_DISPLAY, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] key_type See @ref BLE_GAP_AUTH_KEY_TYPES. + * @param[in] p_key If key type is @ref BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL. + * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination) + * or NULL when confirming LE Secure Connections Numeric Comparison. + * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in Little Endian format. + * + * @retval ::NRF_SUCCESS Authentication key successfully set. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const *p_key)); + +/**@brief Reply with an LE Secure connections DHKey. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_dhkey LE Secure Connections DHKey. + * + * @retval ::NRF_SUCCESS DHKey successfully set. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_LESC_DHKEY_REPLY, uint32_t, sd_ble_gap_lesc_dhkey_reply(uint16_t conn_handle, ble_gap_lesc_dhkey_t const *p_dhkey)); + +/**@brief Notify the peer of a local keypress. + * + * @details This function can only be used when an authentication procedure using LE Secure Connection is in progress. Calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] kp_not See @ref BLE_GAP_KP_NOT_TYPES. + * + * @retval ::NRF_SUCCESS Keypress notification successfully queued for transmission. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either not entering a passkey or keypresses have not been enabled by both peers. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_BUSY The BLE stack is busy. Retry at later time. + */ +SVCALL(SD_BLE_GAP_KEYPRESS_NOTIFY, uint32_t, sd_ble_gap_keypress_notify(uint16_t conn_handle, uint8_t kp_not)); + +/**@brief Generate a set of OOB data to send to a peer out of band. + * + * @note The @ref ble_gap_addr_t included in the OOB data returned will be the currently active one (or, if a connection has already been established, + * the one used during connection setup). The application may manually overwrite it with an updated value. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. Can be BLE_CONN_HANDLE_INVALID if a BLE connection has not been established yet. + * @param[in] p_pk_own LE Secure Connections local P-256 Public Key. + * @param[out] p_oobd_own The OOB data to be sent out of band to a peer. + * + * @retval ::NRF_SUCCESS OOB data successfully generated. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_LESC_OOB_DATA_GET, uint32_t, sd_ble_gap_lesc_oob_data_get(uint16_t conn_handle, ble_gap_lesc_p256_pk_t const *p_pk_own, ble_gap_lesc_oob_data_t *p_oobd_own)); + +/**@brief Provide the OOB data sent/received out of band. + * + * @note At least one of the 2 pointers provided must be different from NULL. + * @note An authentication procedure with OOB selected as an algorithm must be in progress when calling this function. + * @note A @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST event with the oobd_req set to 1 must have been received prior to calling this function. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_oobd_own The OOB data sent out of band to a peer or NULL if none sent. + * @param[in] p_oobd_peer The OOB data received out of band from a peer or NULL if none received. + * + * @retval ::NRF_SUCCESS OOB data accepted. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_LESC_OOB_DATA_SET, uint32_t, sd_ble_gap_lesc_oob_data_set(uint16_t conn_handle, ble_gap_lesc_oob_data_t const *p_oobd_own, ble_gap_lesc_oob_data_t const *p_oobd_peer)); + +/**@brief Initiate GAP Encryption procedure. + * + * @details In the central role, this function will initiate the encryption procedure using the encryption information provided. + * + * @events + * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE, The connection security has been updated.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_MSC} + * @mmsc{@ref BLE_GAP_MULTILINK_CTRL_PROC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_SEC_REQ_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_master_id Pointer to a @ref ble_gap_master_id_t master identification structure. + * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. + * + * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::BLE_ERROR_INVALID_ROLE Operation is not supported in the Peripheral role. + * @retval ::NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, wait for pending procedures to complete and retry. + */ +SVCALL(SD_BLE_GAP_ENCRYPT, uint32_t, sd_ble_gap_encrypt(uint16_t conn_handle, ble_gap_master_id_t const *p_master_id, ble_gap_enc_info_t const *p_enc_info)); + + +/**@brief Reply with GAP security information. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * @note Data signing is not yet supported, and p_sign_info must therefore be NULL. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_ENC_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available. + * @param[in] p_id_info Pointer to a @ref ble_gap_irk_t identity information structure. May be NULL to signal none is available. + * @param[in] p_sign_info Pointer to a @ref ble_gap_sign_info_t signing information structure. May be NULL to signal none is available. + * + * @retval ::NRF_SUCCESS Successfully accepted security information. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const *p_enc_info, ble_gap_irk_t const *p_id_info, ble_gap_sign_info_t const *p_sign_info)); + + +/**@brief Get the current connection security. + * + * @param[in] conn_handle Connection handle. + * @param[out] p_conn_sec Pointer to a @ref ble_gap_conn_sec_t structure to be filled in. + * + * @retval ::NRF_SUCCESS Current connection security successfully retrieved. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t *p_conn_sec)); + + +/**@brief Start reporting the received signal strength to the application. + * + * A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called. + * + * @events + * @event{@ref BLE_GAP_EVT_RSSI_CHANGED, New RSSI data available. How often the event is generated is + dependent on the settings of the threshold_dbm + and skip_count input parameters.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} + * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] threshold_dbm Minimum change in dBm before triggering the @ref BLE_GAP_EVT_RSSI_CHANGED event. Events are disabled if threshold_dbm equals @ref BLE_GAP_RSSI_THRESHOLD_INVALID. + * @param[in] skip_count Number of RSSI samples with a change of threshold_dbm or more before sending a new @ref BLE_GAP_EVT_RSSI_CHANGED event. + * + * @retval ::NRF_SUCCESS Successfully activated RSSI reporting. + * @retval ::NRF_ERROR_INVALID_STATE Disconnection in progress. Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle, uint8_t threshold_dbm, uint8_t skip_count)); + + +/**@brief Stop reporting the received signal strength. + * + * @note An RSSI change detected before the call but not yet received by the application + * may be reported after @ref sd_ble_gap_rssi_stop has been called. + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} + * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * + * @retval ::NRF_SUCCESS Successfully deactivated RSSI reporting. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle)); + + +/**@brief Get the received signal strength for the last connection event. + * + * @ref sd_ble_gap_rssi_start must be called to start reporting RSSI before using this function. @ref NRF_ERROR_NOT_FOUND + * will be returned until RSSI was sampled for the first time after calling @ref sd_ble_gap_rssi_start. + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[out] p_rssi Pointer to the location where the RSSI measurement shall be stored. + * + * @retval ::NRF_SUCCESS Successfully read the RSSI. + * @retval ::NRF_ERROR_NOT_FOUND No sample is available. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is not ongoing, or disconnection in progress. + */ +SVCALL(SD_BLE_GAP_RSSI_GET, uint32_t, sd_ble_gap_rssi_get(uint16_t conn_handle, int8_t *p_rssi)); + + +/**@brief Start scanning (GAP Discovery procedure, Observer Procedure). + * + * + * @events + * @event{@ref BLE_GAP_EVT_ADV_REPORT, An advertising or scan response packet has been received.} + * @event{@ref BLE_GAP_EVT_TIMEOUT, Scanner has timed out.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_SCAN_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @param[in] p_scan_params Pointer to scan parameters structure. + * + * @retval ::NRF_SUCCESS Successfully initiated scanning procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. + * Stop one or more currently active roles (Central, Peripheral or Broadcaster) and try again + */ +SVCALL(SD_BLE_GAP_SCAN_START, uint32_t, sd_ble_gap_scan_start(ble_gap_scan_params_t const *p_scan_params)); + + +/**@brief Stop scanning (GAP Discovery procedure, Observer Procedure). + * + * @mscs + * @mmsc{@ref BLE_GAP_SCAN_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Successfully stopped scanning procedure. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation (most probably not in scanning state). + */ +SVCALL(SD_BLE_GAP_SCAN_STOP, uint32_t, sd_ble_gap_scan_stop(void)); + + +/**@brief Create a connection (GAP Link Establishment). + * + * @note If a scanning procedure is currently in progress it will be automatically stopped when calling this function. + * + * @mscs + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_PRIV_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_MSC} + * @endmscs + * + * @param[in] p_peer_addr Pointer to peer address. If the use_whitelist bit is set in @ref ble_gap_scan_params_t, then this is ignored. + * If @ref ble_gap_addr_t::addr_id_peer is set then p_peer_addr must be present in the device identity list + * see @ref sd_ble_gap_device_identities_set. + * @param[in] p_scan_params Pointer to scan parameters structure. + * @param[in] p_conn_params Pointer to desired connection parameters. + * + * @retval ::NRF_SUCCESS Successfully initiated connection procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid parameter(s) pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + - Invalid parameter(s) in p_scan_params or p_conn_params. + - Use of whitelist requested but whitelist has not been set, see @ref sd_ble_gap_whitelist_set. + - Peer address was not present in the device identity list, see @ref sd_ble_gap_device_identities_set. + * @retval ::NRF_ERROR_INVALID_STATE The SoftDevice is in an invalid state to perform this operation. This may be due to an + * existing locally initiated connect procedure, which must complete before initiating again. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Peer address. + * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached. + * @retval ::NRF_ERROR_NO_MEM The configured memory pool (see @ref ble_conn_bw_counts_t) is not large enough for the + * bandwidth selected for this connection. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. If another connection is being established + * wait for the corresponding @ref BLE_GAP_EVT_CONNECTED event before calling again. + * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. + * Stop one or more currently active roles (Central, Peripheral or Broadcaster) and try again + */ +SVCALL(SD_BLE_GAP_CONNECT, uint32_t, sd_ble_gap_connect(ble_gap_addr_t const *p_peer_addr, ble_gap_scan_params_t const *p_scan_params, ble_gap_conn_params_t const *p_conn_params)); + + +/**@brief Cancel a connection establishment. + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Successfully cancelled an ongoing connection procedure. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + */ +SVCALL(SD_BLE_GAP_CONNECT_CANCEL, uint32_t, sd_ble_gap_connect_cancel(void)); + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // BLE_GAP_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/ble_gattc.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/ble_gattc.h new file mode 100644 index 0000000..9cd75e2 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/ble_gattc.h @@ -0,0 +1,674 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ + +/** + @addtogroup BLE_GATTC Generic Attribute Profile (GATT) Client + @{ + @brief Definitions and prototypes for the GATT Client interface. + */ + +#ifndef BLE_GATTC_H__ +#define BLE_GATTC_H__ + +#include "ble_gatt.h" +#include "ble_types.h" +#include "ble_ranges.h" +#include "nrf_svc.h" +#include "nrf_error.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/** @addtogroup BLE_GATTC_ENUMERATIONS Enumerations + * @{ */ + +/**@brief GATTC API SVC numbers. */ +enum BLE_GATTC_SVCS +{ + SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER = BLE_GATTC_SVC_BASE, /**< Primary Service Discovery. */ + SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, /**< Relationship Discovery. */ + SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, /**< Characteristic Discovery. */ + SD_BLE_GATTC_DESCRIPTORS_DISCOVER, /**< Characteristic Descriptor Discovery. */ + SD_BLE_GATTC_ATTR_INFO_DISCOVER, /**< Attribute Information Discovery. */ + SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, /**< Read Characteristic Value by UUID. */ + SD_BLE_GATTC_READ, /**< Generic read. */ + SD_BLE_GATTC_CHAR_VALUES_READ, /**< Read multiple Characteristic Values. */ + SD_BLE_GATTC_WRITE, /**< Generic write. */ + SD_BLE_GATTC_HV_CONFIRM, /**< Handle Value Confirmation. */ + SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. */ +}; + +/** + * @brief GATT Client Event IDs. + */ +enum BLE_GATTC_EVTS +{ + BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP = BLE_GATTC_EVT_BASE, /**< Primary Service Discovery Response event. \n See @ref ble_gattc_evt_prim_srvc_disc_rsp_t. */ + BLE_GATTC_EVT_REL_DISC_RSP, /**< Relationship Discovery Response event. \n See @ref ble_gattc_evt_rel_disc_rsp_t. */ + BLE_GATTC_EVT_CHAR_DISC_RSP, /**< Characteristic Discovery Response event. \n See @ref ble_gattc_evt_char_disc_rsp_t. */ + BLE_GATTC_EVT_DESC_DISC_RSP, /**< Descriptor Discovery Response event. \n See @ref ble_gattc_evt_desc_disc_rsp_t. */ + BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, /**< Attribute Information Response event. \n See @ref ble_gattc_evt_attr_info_disc_rsp_t. */ + BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP, /**< Read By UUID Response event. \n See @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t. */ + BLE_GATTC_EVT_READ_RSP, /**< Read Response event. \n See @ref ble_gattc_evt_read_rsp_t. */ + BLE_GATTC_EVT_CHAR_VALS_READ_RSP, /**< Read multiple Response event. \n See @ref ble_gattc_evt_char_vals_read_rsp_t. */ + BLE_GATTC_EVT_WRITE_RSP, /**< Write Response event. \n See @ref ble_gattc_evt_write_rsp_t. */ + BLE_GATTC_EVT_HVX, /**< Handle Value Notification or Indication event. \n Confirm indication with @ref sd_ble_gattc_hv_confirm. \n See @ref ble_gattc_evt_hvx_t. */ + BLE_GATTC_EVT_EXCHANGE_MTU_RSP, /**< Exchange MTU Response event. \n See @ref ble_gattc_evt_exchange_mtu_rsp_t. */ + BLE_GATTC_EVT_TIMEOUT /**< Timeout event. \n See @ref ble_gattc_evt_timeout_t. */ +}; + +/** @} */ + +/** @addtogroup BLE_GATTC_DEFINES Defines + * @{ */ + +/** @defgroup BLE_ERRORS_GATTC SVC return values specific to GATTC + * @{ */ +#define BLE_ERROR_GATTC_PROC_NOT_PERMITTED (NRF_GATTC_ERR_BASE + 0x000) /**< Procedure not Permitted. */ +/** @} */ + +/** @defgroup BLE_GATTC_ATTR_INFO_FORMAT Attribute Information Formats + * @{ */ +#define BLE_GATTC_ATTR_INFO_FORMAT_16BIT 1 /**< 16-bit Attribute Information Format. */ +#define BLE_GATTC_ATTR_INFO_FORMAT_128BIT 2 /**< 128-bit Attribute Information Format. */ +/** @} */ + +/** @} */ + +/** @addtogroup BLE_GATTC_STRUCTURES Structures + * @{ */ + +/**@brief Operation Handle Range. */ +typedef struct +{ + uint16_t start_handle; /**< Start Handle. */ + uint16_t end_handle; /**< End Handle. */ +} ble_gattc_handle_range_t; + + +/**@brief GATT service. */ +typedef struct +{ + ble_uuid_t uuid; /**< Service UUID. */ + ble_gattc_handle_range_t handle_range; /**< Service Handle Range. */ +} ble_gattc_service_t; + + +/**@brief GATT include. */ +typedef struct +{ + uint16_t handle; /**< Include Handle. */ + ble_gattc_service_t included_srvc; /**< Handle of the included service. */ +} ble_gattc_include_t; + + +/**@brief GATT characteristic. */ +typedef struct +{ + ble_uuid_t uuid; /**< Characteristic UUID. */ + ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ + uint8_t char_ext_props : 1; /**< Extended properties present. */ + uint16_t handle_decl; /**< Handle of the Characteristic Declaration. */ + uint16_t handle_value; /**< Handle of the Characteristic Value. */ +} ble_gattc_char_t; + + +/**@brief GATT descriptor. */ +typedef struct +{ + uint16_t handle; /**< Descriptor Handle. */ + ble_uuid_t uuid; /**< Descriptor UUID. */ +} ble_gattc_desc_t; + + +/**@brief Write Parameters. */ +typedef struct +{ + uint8_t write_op; /**< Write Operation to be performed, see @ref BLE_GATT_WRITE_OPS. */ + uint8_t flags; /**< Flags, see @ref BLE_GATT_EXEC_WRITE_FLAGS. */ + uint16_t handle; /**< Handle to the attribute to be written. */ + uint16_t offset; /**< Offset in bytes. @note For WRITE_CMD and WRITE_REQ, offset must be 0. */ + uint16_t len; /**< Length of data in bytes. */ + uint8_t const *p_value; /**< Pointer to the value data. */ +} ble_gattc_write_params_t; + +/**@brief Attribute Information for 16-bit Attribute UUID. */ +typedef struct +{ + uint16_t handle; /**< Attribute handle. */ + ble_uuid_t uuid; /**< 16-bit Attribute UUID. */ +} ble_gattc_attr_info16_t; + +/**@brief Attribute Information for 128-bit Attribute UUID. */ +typedef struct +{ + uint16_t handle; /**< Attribute handle. */ + ble_uuid128_t uuid; /**< 128-bit Attribute UUID. */ +} ble_gattc_attr_info128_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Service count. */ + ble_gattc_service_t services[1]; /**< Service data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_prim_srvc_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_REL_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Include count. */ + ble_gattc_include_t includes[1]; /**< Include data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_rel_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Characteristic count. */ + ble_gattc_char_t chars[1]; /**< Characteristic data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_char_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_DESC_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Descriptor count. */ + ble_gattc_desc_t descs[1]; /**< Descriptor data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_desc_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Attribute count. */ + uint8_t format; /**< Attribute information format, see @ref BLE_GATTC_ATTR_INFO_FORMAT. */ + union { + ble_gattc_attr_info16_t attr_info16[1]; /**< Attribute information for 16-bit Attribute UUID. + @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ + ble_gattc_attr_info128_t attr_info128[1]; /**< Attribute information for 128-bit Attribute UUID. + @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ + } info; /**< Attribute information union. */ +} ble_gattc_evt_attr_info_disc_rsp_t; + +/**@brief GATT read by UUID handle value pair. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint8_t *p_value; /**< Pointer to the Attribute Value, length is available in @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t::value_len. */ +} ble_gattc_handle_value_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP. */ +typedef struct +{ + uint16_t count; /**< Handle-Value Pair Count. */ + uint16_t value_len; /**< Length of the value in Handle-Value(s) list. */ + uint8_t handle_value[1]; /**< Handle-Value(s) list. To iterate through the list use @ref sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter. + @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_char_val_by_uuid_read_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_READ_RSP. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint16_t offset; /**< Offset of the attribute data. */ + uint16_t len; /**< Attribute data length. */ + uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_read_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP. */ +typedef struct +{ + uint16_t len; /**< Concatenated Attribute values length. */ + uint8_t values[1]; /**< Attribute values. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_char_vals_read_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_WRITE_RSP. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint8_t write_op; /**< Type of write operation, see @ref BLE_GATT_WRITE_OPS. */ + uint16_t offset; /**< Data offset. */ + uint16_t len; /**< Data length. */ + uint8_t data[1]; /**< Data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_write_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_HVX. */ +typedef struct +{ + uint16_t handle; /**< Handle to which the HVx operation applies. */ + uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ + uint16_t len; /**< Attribute data length. */ + uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_hvx_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. */ +typedef struct +{ + uint16_t server_rx_mtu; /**< Server RX MTU size. */ +} ble_gattc_evt_exchange_mtu_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_TIMEOUT. */ +typedef struct +{ + uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ +} ble_gattc_evt_timeout_t; + +/**@brief GATTC event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occured. */ + uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ + uint16_t error_handle; /**< In case of error: The handle causing the error. In all other cases @ref BLE_GATT_HANDLE_INVALID. */ + union + { + ble_gattc_evt_prim_srvc_disc_rsp_t prim_srvc_disc_rsp; /**< Primary Service Discovery Response Event Parameters. */ + ble_gattc_evt_rel_disc_rsp_t rel_disc_rsp; /**< Relationship Discovery Response Event Parameters. */ + ble_gattc_evt_char_disc_rsp_t char_disc_rsp; /**< Characteristic Discovery Response Event Parameters. */ + ble_gattc_evt_desc_disc_rsp_t desc_disc_rsp; /**< Descriptor Discovery Response Event Parameters. */ + ble_gattc_evt_char_val_by_uuid_read_rsp_t char_val_by_uuid_read_rsp; /**< Characteristic Value Read by UUID Response Event Parameters. */ + ble_gattc_evt_read_rsp_t read_rsp; /**< Read Response Event Parameters. */ + ble_gattc_evt_char_vals_read_rsp_t char_vals_read_rsp; /**< Characteristic Values Read Response Event Parameters. */ + ble_gattc_evt_write_rsp_t write_rsp; /**< Write Response Event Parameters. */ + ble_gattc_evt_hvx_t hvx; /**< Handle Value Notification/Indication Event Parameters. */ + ble_gattc_evt_exchange_mtu_rsp_t exchange_mtu_rsp; /**< Exchange MTU Response Event Parameters. */ + ble_gattc_evt_timeout_t timeout; /**< Timeout Event Parameters. */ + ble_gattc_evt_attr_info_disc_rsp_t attr_info_disc_rsp; /**< Attribute Information Discovery Event Parameters. */ + } params; /**< Event Parameters. @note Only valid if @ref gatt_status == @ref BLE_GATT_STATUS_SUCCESS. */ +} ble_gattc_evt_t; +/** @} */ + +/** @addtogroup BLE_GATTC_FUNCTIONS Functions + * @{ */ + +/**@brief Initiate or continue a GATT Primary Service Discovery procedure. + * + * @details This function initiates or resumes a Primary Service discovery procedure, starting from the supplied handle. + * If the last service has not been reached, this function must be called again with an updated start handle value to continue the search. + * + * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with + * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. + * + * @events + * @event{@ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_PRIM_SRVC_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] start_handle Handle to start searching from. + * @param[in] p_srvc_uuid Pointer to the service UUID to be found. If it is NULL, all primary services will be returned. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Primary Service Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER, uint32_t, sd_ble_gattc_primary_services_discover(uint16_t conn_handle, uint16_t start_handle, ble_uuid_t const *p_srvc_uuid)); + + +/**@brief Initiate or continue a GATT Relationship Discovery procedure. + * + * @details This function initiates or resumes the Find Included Services sub-procedure. If the last included service has not been reached, + * this must be called again with an updated handle range to continue the search. + * + * @events + * @event{@ref BLE_GATTC_EVT_REL_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_REL_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Relationship Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, uint32_t, sd_ble_gattc_relationships_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Characteristic Discovery procedure. + * + * @details This function initiates or resumes a Characteristic discovery procedure. If the last Characteristic has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @note If any of the discovered characteristics have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with + * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. + * + * @events + * @event{@ref BLE_GATTC_EVT_CHAR_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_CHAR_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Characteristic Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, uint32_t, sd_ble_gattc_characteristics_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Characteristic Descriptor Discovery procedure. + * + * @details This function initiates or resumes a Characteristic Descriptor discovery procedure. If the last Descriptor has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @events + * @event{@ref BLE_GATTC_EVT_DESC_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_DESC_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Characteristic to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Descriptor Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_DESCRIPTORS_DISCOVER, uint32_t, sd_ble_gattc_descriptors_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Read using Characteristic UUID procedure. + * + * @details This function initiates or resumes a Read using Characteristic UUID procedure. If the last Characteristic has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @events + * @event{@ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_READ_UUID_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_uuid Pointer to a Characteristic value UUID to read. + * @param[in] p_handle_range A pointer to the range of handles to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Read using Characteristic UUID procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, uint32_t, sd_ble_gattc_char_value_by_uuid_read(uint16_t conn_handle, ble_uuid_t const *p_uuid, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Read (Long) Characteristic or Descriptor procedure. + * + * @details This function initiates or resumes a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor + * to be read is longer than ATT_MTU - 1, this function must be called multiple times with appropriate offset to read the + * complete value. + * + * @events + * @event{@ref BLE_GATTC_EVT_READ_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_VALUE_READ_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] handle The handle of the attribute to be read. + * @param[in] offset Offset into the attribute value to be read. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Read (Long) procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_READ, uint32_t, sd_ble_gattc_read(uint16_t conn_handle, uint16_t handle, uint16_t offset)); + + +/**@brief Initiate a GATT Read Multiple Characteristic Values procedure. + * + * @details This function initiates a GATT Read Multiple Characteristic Values procedure. + * + * @events + * @event{@ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_READ_MULT_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handles A pointer to the handle(s) of the attribute(s) to be read. + * @param[in] handle_count The number of handles in p_handles. + * + * @retval ::NRF_SUCCESS Successfully started the Read Multiple Characteristic Values procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_CHAR_VALUES_READ, uint32_t, sd_ble_gattc_char_values_read(uint16_t conn_handle, uint16_t const *p_handles, uint16_t handle_count)); + + +/**@brief Perform a Write (Characteristic Value or Descriptor, with or without response, signed or not, long or reliable) procedure. + * + * @details This function can perform all write procedures described in GATT. + * + * @note It is important to note that a write without response will consume an application buffer, and will therefore + * generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. A write (with response) on the other hand will use the + * standard client internal buffer and thus will only generate a @ref BLE_GATTC_EVT_WRITE_RSP event as soon as the write response + * has been received from the peer. Please see the documentation of @ref sd_ble_tx_packet_count_get for more details. + * + * @events + * @event{@ref BLE_GATTC_EVT_WRITE_RSP, Generated when using write request or queued writes.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_VALUE_WRITE_MSC} + * @mmsc{@ref BLE_GATTC_VALUE_LONG_WRITE_MSC} + * @mmsc{@ref BLE_GATTC_VALUE_RELIABLE_WRITE_MSC} + * @mmsc{@ref BLE_COMMON_APP_BUFF_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_write_params A pointer to a write parameters structure. + * + * @retval ::NRF_SUCCESS Successfully started the Write procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + * @retval ::NRF_ERROR_BUSY Procedure already in progress. + * @retval ::BLE_ERROR_NO_TX_PACKETS No available application packets for this connection. + */ +SVCALL(SD_BLE_GATTC_WRITE, uint32_t, sd_ble_gattc_write(uint16_t conn_handle, ble_gattc_write_params_t const *p_write_params)); + + +/**@brief Send a Handle Value Confirmation to the GATT Server. + * + * @mscs + * @mmsc{@ref BLE_GATTC_HVI_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] handle The handle of the attribute in the indication. + * + * @retval ::NRF_SUCCESS Successfully queued the Handle Value Confirmation for transmission. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no Indication pending to be confirmed. + * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle. + */ +SVCALL(SD_BLE_GATTC_HV_CONFIRM, uint32_t, sd_ble_gattc_hv_confirm(uint16_t conn_handle, uint16_t handle)); + +/**@brief Discovers information about a range of attributes on a GATT server. + * + * @events + * @event{@ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, Generated when information about a range of attributes has been received.} + * @endevents + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range The range of handles to request information about. + * + * @retval ::NRF_SUCCESS Successfully started an attribute information discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_ATTR_INFO_DISCOVER, uint32_t, sd_ble_gattc_attr_info_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * p_handle_range)); + +/**@brief Start an ATT_MTU exchange by sending an Exchange MTU Request to the server. + * + * @details The SoftDevice sets ATT_MTU to the minimum of: + * - The Client RX MTU value, and + * - The Server RX MTU value from @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. + * + * However, the SoftDevice never sets ATT_MTU lower than @ref GATT_MTU_SIZE_DEFAULT. + * + * @events + * @event{@ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP} + * @event{@ref BLE_EVT_DATA_LENGTH_CHANGED, Generated if a data length update procedure is performed after the ATT_MTU exchange.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] client_rx_mtu Client RX MTU size. + * - The minimum value is @ref GATT_MTU_SIZE_DEFAULT. + * - The maximum value is @ref ble_gatt_enable_params_t::att_mtu. + * - The value must be equal to Server RX MTU size given in @ref sd_ble_gatts_exchange_mtu_reply + * if an ATT_MTU exchange has already been performed in the other direction. + * + * @retval ::NRF_SUCCESS Successfully sent request to the server. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state or an ATT_MTU exchange was already requested once. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid Client RX MTU size supplied. + * @retval ::NRF_ERROR_BUSY Client procedure already in progress. + */ +SVCALL(SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, uint32_t, sd_ble_gattc_exchange_mtu_request(uint16_t conn_handle, uint16_t client_rx_mtu)); + +/**@brief Iterate through Handle-Value(s) list in @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. + * + * @param[in] p_gattc_evt Pointer to event buffer containing @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. + * @note If the buffer contains different event, behavior is undefined. + * @param[in,out] p_iter Iterator, points to @ref ble_gattc_handle_value_t structure that will be filled in with + * the next Handle-Value pair in each iteration. If the function returns other than + * @ref NRF_SUCCESS, it will not be changed. + * - To start iteration, initialize the structure to zero. + * - To continue, pass the value from previous iteration. + * + * \code + * ble_gattc_handle_value_t iter; + * memset(&iter, 0, sizeof(ble_gattc_handle_value_t)); + * while (sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(&ble_evt.evt.gattc_evt, &iter) == NRF_SUCCESS) + * { + * app_handle = iter.handle; + * memcpy(app_value, iter.p_value, ble_evt.evt.gattc_evt.params.char_val_by_uuid_read_rsp.value_len); + * } + * \endcode + * + * @retval ::NRF_SUCCESS Successfully retrieved the next Handle-Value pair. + * @retval ::NRF_ERROR_NOT_FOUND No more Handle-Value pairs available in the list. + */ + +#ifndef __STATIC_INLINE +#define __STATIC_INLINE static inline +#endif +#if (__LINT__ != 1) +__STATIC_INLINE uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter); +#endif // #ifdef (__LINT__ != 1) + + +#ifndef SUPPRESS_INLINE_IMPLEMENTATION + +__STATIC_INLINE uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter) +{ + uint32_t value_len = p_gattc_evt->params.char_val_by_uuid_read_rsp.value_len; + uint8_t *p_first = p_gattc_evt->params.char_val_by_uuid_read_rsp.handle_value; + uint8_t *p_next = p_iter->p_value ? p_iter->p_value + value_len : p_first; + + if ((p_next - p_first) / (sizeof(uint16_t) + value_len) < p_gattc_evt->params.char_val_by_uuid_read_rsp.count) + { + p_iter->handle = (uint16_t)p_next[1] << 8 | p_next[0]; + p_iter->p_value = p_next + sizeof(uint16_t); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_NOT_FOUND; + } +} + +#endif // #ifndef SUPPRESS_INLINE_IMPLEMENTATION + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif /* BLE_GATTC_H__ */ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/nrf_nvic.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/nrf_nvic.h new file mode 100644 index 0000000..a29d008 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/nrf_nvic.h @@ -0,0 +1,546 @@ +/* + * Copyright (c) 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 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 4. This software must only be used in a processor manufactured by Nordic + * Semiconductor ASA, or in a processor manufactured by a third party that + * is used in combination with a processor manufactured by Nordic Semiconductor. + * + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 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. + * + */ +/** + * @defgroup nrf_nvic_api SoftDevice NVIC API + * @{ + * + * @note In order to use this module, the following code has to be added to a .c file: + * \code + * nrf_nvic_state_t nrf_nvic_state = {0}; + * \endcode + * + * @note Definitions and declarations starting with __ (double underscore) in this header file are + * not intended for direct use by the application. + * + * @brief APIs for the accessing NVIC when using a SoftDevice. + * + */ + +#ifndef NRF_NVIC_H__ +#define NRF_NVIC_H__ + +#include +#include "nrf.h" + +#include "nrf_error_soc.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/**@addtogroup NRF_NVIC_DEFINES Defines + * @{ */ + +/**@defgroup NRF_NVIC_ISER_DEFINES SoftDevice NVIC internal definitions + * @{ */ + +#define __NRF_NVIC_NVMC_IRQn (30) /**< The peripheral ID of the NVMC. IRQ numbers are used to identify peripherals, but the NVMC doesn't have an IRQ number in the MDK. */ + +#ifdef NRF51 + #define __NRF_NVIC_ISER_COUNT (1) /**< The number of ISER/ICER registers in the NVIC that are used. */ + + /**@brief Interrupts used by the SoftDevice. */ + #define __NRF_NVIC_SD_IRQS_0 ((uint32_t)( \ + (1U << POWER_CLOCK_IRQn) \ + | (1U << RADIO_IRQn) \ + | (1U << RTC0_IRQn) \ + | (1U << TIMER0_IRQn) \ + | (1U << RNG_IRQn) \ + | (1U << ECB_IRQn) \ + | (1U << CCM_AAR_IRQn) \ + | (1U << TEMP_IRQn) \ + | (1U << __NRF_NVIC_NVMC_IRQn) \ + | (1U << (uint32_t)SWI4_IRQn) \ + | (1U << (uint32_t)SWI5_IRQn) \ + )) + + /**@brief Interrupts available for to application. */ + #define __NRF_NVIC_APP_IRQS_0 (~__NRF_NVIC_SD_IRQS_0) +#endif + +#if (defined(NRF52) || defined(NRF52840_XXAA)) + #define __NRF_NVIC_ISER_COUNT (2) /**< The number of ISER/ICER registers in the NVIC that are used. */ + + /**@brief Interrupts used by the SoftDevice. */ + #define __NRF_NVIC_SD_IRQS_0 ((uint32_t)( \ + (1U << POWER_CLOCK_IRQn) \ + | (1U << RADIO_IRQn) \ + | (1U << RTC0_IRQn) \ + | (1U << TIMER0_IRQn) \ + | (1U << RNG_IRQn) \ + | (1U << ECB_IRQn) \ + | (1U << CCM_AAR_IRQn) \ + | (1U << TEMP_IRQn) \ + | (1U << __NRF_NVIC_NVMC_IRQn) \ + | (1U << (uint32_t)SWI4_EGU4_IRQn) \ + | (1U << (uint32_t)SWI5_EGU5_IRQn) \ + )) + #define __NRF_NVIC_SD_IRQS_1 ((uint32_t)0) + + /**@brief Interrupts available for to application. */ + #define __NRF_NVIC_APP_IRQS_0 (~__NRF_NVIC_SD_IRQS_0) + #define __NRF_NVIC_APP_IRQS_1 (~__NRF_NVIC_SD_IRQS_1) +#endif +/**@} */ + +/**@} */ + +/**@addtogroup NRF_NVIC_VARIABLES Variables + * @{ */ + +/**@brief Type representing the state struct for the SoftDevice NVIC module. */ +typedef struct +{ + uint32_t volatile __irq_masks[__NRF_NVIC_ISER_COUNT]; /**< IRQs enabled by the application in the NVIC. */ + uint32_t volatile __cr_flag; /**< Non-zero if already in a critical region */ +} nrf_nvic_state_t; + +/**@brief Variable keeping the state for the SoftDevice NVIC module. This must be declared in an + * application source file. */ +extern nrf_nvic_state_t nrf_nvic_state; + + +/**@} */ + +#if (__LINT__ != 1) + +/**@addtogroup NRF_NVIC_INTERNAL_FUNCTIONS SoftDevice NVIC internal functions + * @{ */ + +/**@brief Disables IRQ interrupts globally, including the SoftDevice's interrupts. + * + * @retval The value of PRIMASK prior to disabling the interrupts. + */ +__STATIC_INLINE int __sd_nvic_irq_disable(void); + + +/**@brief Enables IRQ interrupts globally, including the SoftDevice's interrupts. + */ +__STATIC_INLINE void __sd_nvic_irq_enable(void); + + +/**@brief Checks if IRQn is available to application + * @param[in] IRQn irq to check + * + * @retval 1 (true) if the irq to check is available to the application + */ +__STATIC_INLINE uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn); + + +/**@brief Checks if IRQn is available to application + * @param[in] priority priority to check + * + * @retval 1 (true) if the priority to check is available to the application + */ +__STATIC_INLINE uint32_t __sd_nvic_is_app_accessible_priority(uint32_t priority); + + +/**@} */ + + +/**@addtogroup NRF_NVIC_FUNCTIONS SoftDevice NVIC public functions + * @{ */ + +/**@brief Enable External Interrupt. + * @note Corresponds to NVIC_EnableIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_EnableIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt was enabled. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt has a priority not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn); + + +/**@brief Disable External Interrupt. + * @note Corresponds to NVIC_DisableIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_DisableIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt was disabled. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn); + + +/**@brief Get Pending Interrupt. + * @note Corresponds to NVIC_GetPendingIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_GetPendingIRQ documentation in CMSIS. + * @param[out] p_pending_irq Return value from NVIC_GetPendingIRQ. + * + * @retval ::NRF_SUCCESS The interrupt is available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq); + + +/**@brief Set Pending Interrupt. + * @note Corresponds to NVIC_SetPendingIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_SetPendingIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt is set pending. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn); + + +/**@brief Clear Pending Interrupt. + * @note Corresponds to NVIC_ClearPendingIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_ClearPendingIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt pending flag is cleared. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn); + + +/**@brief Set Interrupt Priority. + * @note Corresponds to NVIC_SetPriority in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * @pre Priority is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_SetPriority documentation in CMSIS. + * @param[in] priority A valid IRQ priority for use by the application. + * + * @retval ::NRF_SUCCESS The interrupt and priority level is available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt priority is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority); + + +/**@brief Get Interrupt Priority. + * @note Corresponds to NVIC_GetPriority in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_GetPriority documentation in CMSIS. + * @param[out] p_priority Return value from NVIC_GetPriority. + * + * @retval ::NRF_SUCCESS The interrupt priority is returned in p_priority. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE - IRQn is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority); + + +/**@brief System Reset. + * @note Corresponds to NVIC_SystemReset in CMSIS. + * + * @retval ::NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN + */ +__STATIC_INLINE uint32_t sd_nvic_SystemReset(void); + + +/**@brief Enters critical region. + * + * @post Application interrupts will be disabled. + * @note sd_nvic_critical_region_enter() and ::sd_nvic_critical_region_exit() must be called in matching pairs inside each + * execution context + * @sa sd_nvic_critical_region_exit + * + * @param[out] p_is_nested_critical_region If 1, the application is now in a nested critical region. + * + * @retval ::NRF_SUCCESS + */ +__STATIC_INLINE uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region); + + +/**@brief Exit critical region. + * + * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter. + * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. + * + * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter. + * + * @retval ::NRF_SUCCESS + */ +__STATIC_INLINE uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region); + +#endif //#if (__LINT__ != 1) + +/**@} */ + +#ifndef SUPPRESS_INLINE_IMPLEMENTATION + +__STATIC_INLINE int __sd_nvic_irq_disable(void) +{ + int pm = __get_PRIMASK(); + __disable_irq(); + return pm; +} + +__STATIC_INLINE void __sd_nvic_irq_enable(void) +{ + __enable_irq(); +} + + +__STATIC_INLINE uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn) +{ + if (IRQn < 32) + { + return ((1UL<= (1 << __NVIC_PRIO_BITS)) + { + return 0; + } +#ifdef NRF51 + if ( priority == 0 + || priority == 2 + ) + { + return 0; + } +#endif +#if (defined(NRF52) || defined(NRF52840_XXAA)) + if ( priority == 0 + || priority == 1 + || priority == 4 + || priority == 5 + ) + { + return 0; + } +#endif + return 1; +} + +__STATIC_INLINE uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn) +{ + if (!__sd_nvic_app_accessible_irq(IRQn)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } + if (!__sd_nvic_is_app_accessible_priority(NVIC_GetPriority(IRQn))) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; + } + + if (nrf_nvic_state.__cr_flag) + { + nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] |= (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); + } + else + { + NVIC_EnableIRQ(IRQn); + } + return NRF_SUCCESS; +} + + +__STATIC_INLINE uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn) +{ + if (!__sd_nvic_app_accessible_irq(IRQn)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } + + if (nrf_nvic_state.__cr_flag) + { + nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] &= ~(1UL << ((uint32_t)(IRQn) & 0x1F)); + } + else + { + NVIC_DisableIRQ(IRQn); + } + + return NRF_SUCCESS; +} + +__STATIC_INLINE uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + *p_pending_irq = NVIC_GetPendingIRQ(IRQn); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + +__STATIC_INLINE uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + NVIC_SetPendingIRQ(IRQn); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + + +__STATIC_INLINE uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + NVIC_ClearPendingIRQ(IRQn); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + +__STATIC_INLINE uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if (!__sd_nvic_app_accessible_irq(IRQn)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } + + if (!__sd_nvic_is_app_accessible_priority(priority)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; + } + + NVIC_SetPriority(IRQn, (uint32_t)priority); + return NRF_SUCCESS; +} + + +__STATIC_INLINE uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + *p_priority = (NVIC_GetPriority(IRQn) & 0xFF); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + + +__STATIC_INLINE uint32_t sd_nvic_SystemReset(void) +{ + NVIC_SystemReset(); + return NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN; +} + + +__STATIC_INLINE uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region) +{ + int was_masked = __sd_nvic_irq_disable(); + if (!nrf_nvic_state.__cr_flag) + { + nrf_nvic_state.__cr_flag = 1; + nrf_nvic_state.__irq_masks[0] = ( NVIC->ICER[0] & __NRF_NVIC_APP_IRQS_0 ); + NVIC->ICER[0] = __NRF_NVIC_APP_IRQS_0; + #if (defined(NRF52) || defined(NRF52840_XXAA)) + nrf_nvic_state.__irq_masks[1] = ( NVIC->ICER[1] & __NRF_NVIC_APP_IRQS_1 ); + NVIC->ICER[1] = __NRF_NVIC_APP_IRQS_1; + #endif + *p_is_nested_critical_region = 0; + } + else + { + *p_is_nested_critical_region = 1; + } + if (!was_masked) + { + __sd_nvic_irq_enable(); + } + return NRF_SUCCESS; +} + + +__STATIC_INLINE uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region) +{ + if (nrf_nvic_state.__cr_flag && (is_nested_critical_region == 0)) + { + int was_masked = __sd_nvic_irq_disable(); + NVIC->ISER[0] = nrf_nvic_state.__irq_masks[0]; + #if (defined(NRF52) || defined(NRF52840_XXAA)) + NVIC->ISER[1] = nrf_nvic_state.__irq_masks[1]; + #endif + nrf_nvic_state.__cr_flag = 0; + if (!was_masked) + { + __sd_nvic_irq_enable(); + } + } + + return NRF_SUCCESS; +} + +#endif // #ifdef SUPPRESS_INLINE_IMPLEMENTATION + +#ifdef __cplusplus +} +#endif + +#endif // NRF_NVIC_H__ + +/**@} */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/test.rb nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/test.rb new file mode 100644 index 0000000..f58ae1e --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/headers_replacement/test.rb @@ -0,0 +1,2 @@ +a = 'xxx const * const*' +puts a.gsub('const','') \ No newline at end of file diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/hex/s132_nrf52_3.0.0_softdevice.hex nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/hex/s132_nrf52_3.0.0_softdevice.hex new file mode 100644 index 0000000..126407c --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/hex/s132_nrf52_3.0.0_softdevice.hex @@ -0,0 +1,7694 @@ +:020000040000FA +:1000000000040020E508000079050000C508000094 +:10001000830500008D05000097050000000000002A +:1000200000000000000000000000000009090000BE +:10003000A105000000000000AB050000B5050000B0 +:10004000BF050000C9050000D3050000DD05000064 +:10005000E7050000F1050000FB05000005060000B3 +:100060000F06000019060000230600002D06000000 +:1000700037060000410600004B0600005506000050 +:100080005F06000069060000730600007D060000A0 +:1000900087060000910600009B060000A5060000F0 +:1000A000AF060000B9060000C3060000CD06000040 +:1000B000D7060000E1060000EB060000F506000090 +:1000C000FF06000009070000130700001D070000DD +:1000D00027070000310700003B070000450700002C +:1000E0004F07000059070000630700006D0700007C +:1000F00077070000810700008B07000095070000CC +:100100009F0700001FB500F003F88DE80F001FBD2A +:1001100000F0DEBB1FB56FF00100009040100390AF +:10012000029001904FF010208069000B420900F00E +:100130001F045DF822300120A04083434DF8223097 +:10014000684600F044F91FBDF0B54FF6FF734FF459 +:10015000B4751A466E1E11E0A94201D3344600E080 +:100160000C46091B30F8027B641E3B441A44F9D14B +:100170009CB204EB134394B204EB12420029EBD17E +:1001800098B200EB134002EB124140EA0140F0BD8F +:10019000DD4992B00446D1E90001CDE91001FF220A +:1001A0004021684600F03AFB94E80F008DE80F000C +:1001B000684610A902E004C841F8042D8842FAD12B +:1001C00010216846FFF7C0FF1090AA208DF8440068 +:1001D000FFF7A0FF00F0F2F84FF01024A069102202 +:1001E0006946803000F001F9A069082210A900F0EA +:1001F000FCF800F0D7F84FF080510A6949690068AF +:100200004A43824201D8102070470020704710B541 +:10021000D0E900214FF0805002EB8103026944696C +:100220006243934209D84FF01022536903EB8103D4 +:100230000169406941438B4201D9092010BD5069D1 +:10024000401C01D0002010BD0F2010BD70B501680A +:100250000446AE4D4FF01020062951D2DFE801F0E0 +:10026000320318283B1DD4E90265646829463046EC +:1002700000F0CDF82A462146304600F0B6F8AA0034 +:100280002146304600F09EFA002800D0032070BDC1 +:1002900000F050FB4FF4805007E0201DFFF7ABFF4C +:1002A0000028F4D100F046FB60682860002070BD93 +:1002B000241D94E80700920000F084FA0028F6D08C +:1002C0000E2070BD8069401C12D0201DFFF79FFFDB +:1002D0000028F6D109E08069401C09D0201DFFF7F5 +:1002E0008AFF0028EDD1606820B12046FFF750FF5B +:1002F000042070BDFFF70EFF00F060F800F052F828 +:10030000072070BD10B50C46182802D001200860E7 +:1003100010BD2068FFF79AFF206010BD4FF0102439 +:10032000A069401C05D0A569A66980353079AA2846 +:1003300008D06069401C2DD060690068401C29D03D +:1003400060692CE010212846FFF7FEFE31688142EB +:100350001CD1A16901F18002C03105E030B108CAA9 +:1003600051F8040D984201D1012000E000208A429A +:10037000F4D158B1286810B1042803D0FEE728460C +:1003800000F057F861496868086008E000F016F866 +:1003900000F008F84FF480500168491C01D000F0CB +:1003A000A3FAFEE7BFF34F8F59480168594A01F499 +:1003B000E06111430160BFF34F8FFEE74FF0102063 +:1003C0008169491C02D0806900F0ADB87047524A7B +:1003D00001681160121D416811604F4A8168103236 +:1003E0001160111DC068086070472DE9F041174683 +:1003F0000D460646002406E03046296800F0A6F8BF +:10040000641C2D1D361DBC42F6D3BDE8F08170B5CD +:100410000C4605464FF4806608E0284600F083F855 +:10042000B44205D3A4F5806405F58055002CF4D1C1 +:1004300070BD4168044609B1012500E000254FF078 +:1004400010267069A268920000F0BCF9C8B120467D +:1004500000F01AF89DB17669A56864684FF4002031 +:1004600084420AD2854208D229463046FFF7CFFFA0 +:100470002A4621463046FFF7B8FFFFF79FFFFFF7F8 +:1004800091FFFFF747FEF8E72DE9FF414FF01024F9 +:10049000616980680D0B01EB800000F6FF70010BB5 +:1004A00000200090019002900246039068460123CC +:1004B0000BE0560902F01F0C50F8267003FA0CFCF2 +:1004C00047EA0C0740F82670521CAA42F1D30AE012 +:1004D0004A0901F01F0650F8225003FA06F6354388 +:1004E00040F82250491C8029F2D3A169090B4A091E +:1004F00001F01F0150F822408B409C4340F82240FD +:10050000FFF765FFBDE8FF815809000000000020EB +:100510000CED00E00400FA050006004014480168F4 +:100520000029FCD07047134A0221116010490B6862 +:10053000002BFCD00F4B1B1D186008680028FCD056 +:100540000020106008680028FCD07047094B10B5E7 +:1005500001221A60064A1468002CFCD00160106861 +:100560000028FCD00020186010680028FCD010BDC6 +:1005700000E4014004E5014008208F49096809585A +:10058000084710208C4909680958084714208A49EF +:100590000968095808471820874909680958084711 +:1005A0003020854909680958084738208249096878 +:1005B000095808473C2080490968095808474020E5 +:1005C0007D4909680958084744207B49096809584A +:1005D0000847482078490968095808474C20764957 +:1005E000096809580847502073490968095808479D +:1005F0005420714909680958084758206E4909680C +:10060000095808475C206C49096809580847602068 +:100610006949096809580847642067490968095801 +:100620000847682064490968095808476C206249EE +:1006300009680958084770205F4909680958084740 +:1006400074205D4909680958084778205A490968A3 +:10065000095808477C2058490968095808478020EC +:1006600055490968095808478420534909680958B9 +:100670000847882050490968095808478C204E4986 +:1006800009680958084790204B49096809580847E4 +:10069000942049490968095808479820464909683B +:1006A000095808479C204449096809580847A02070 +:1006B0004149096809580847A4203F490968095871 +:1006C0000847A8203C49096809580847AC203A491E +:1006D000096809580847B020374909680958084788 +:1006E000B4203549096809580847B82032490968D3 +:1006F00009580847BC203049096809580847C020F4 +:100700002D49096809580847C4202B490968095828 +:100710000847C8202849096809580847CC202649B5 +:10072000096809580847D02023490968095808472B +:10073000D4202149096809580847D8201E4909686A +:1007400009580847DC201C49096809580847E02077 +:100750001949096809580847E420174909680958E0 +:100760000847E8201449096809580847EC2012494D +:10077000096809580847F0200F49096809580847CF +:10078000F4200D49096809580847F8200A49096802 +:1007900009580847FC2008490968095808475FF4C8 +:1007A0008070054909680958084700000348044952 +:1007B000024A034B70470000000000206809000057 +:1007C0006809000040EA010310B59B070FD1042A15 +:1007D0000DD310C808C9121F9C42F8D020BA19BA0C +:1007E000884201D9012010BD4FF0FF3010BD1AB171 +:1007F000D30703D0521C07E0002010BD10F8013BC6 +:1008000011F8014B1B1B07D110F8013B11F8014BEC +:100810001B1B01D1921EF1D1184610BD02F0FF033F +:1008200043EA032242EA024200F005B870477047EB +:1008300070474FF000020429C0F0128010F0030C42 +:1008400000F01B80CCF1040CBCF1020F18BF00F8C3 +:10085000012BA8BF20F8022BA1EB0C0100F00DB872 +:100860005FEAC17C24BF00F8012B00F8012B48BFD0 +:1008700000F8012B70474FF0000200B51346944674 +:100880009646203922BFA0E80C50A0E80C50B1F1E8 +:100890002001BFF4F7AF090728BFA0E80C5048BFFC +:1008A0000CC05DF804EB890028BF40F8042B08BF9A +:1008B000704748BF20F8022B11F0804F18BF00F896 +:1008C000012B7047014B1B68DB68184700000020B4 +:1008D00009480A497047FFF7FBFFFFF713FC00BD0B +:1008E00020BFFDE7064B1847064A1060016881F3F8 +:1008F0000888406800470000680900006809000097 +:100900001D030000000000201EF0040F0CBFEFF3D9 +:100910000881EFF30981886902380078182803D12B +:1009200000E00000074A1047074A12682C3212689C +:100930001047000000B5054B1B68054A9B589847B7 +:1009400000BD000005030000000000205409000065 +:1009500004000000001000000000000000FFFFFF86 +:040960000090D00330 +:1010000048120020D1E001006D9F000041E0010086 +:101010006D9F00006D9F00006D9F000000000000AC +:1010200000000000000000000000000029E10100B5 +:101030006D9F0000000000006D9F00006D9F00008C +:1010400091E1010097E101006D9F00006D9F00009C +:101050006D9F00006D9F00006D9F00006D9F000060 +:101060009DE101006D9F00006D9F0000A3E1010064 +:101070006D9F0000A9E10100AFE10100B5E10100B1 +:101080006D9F00006D9F00006D9F00006D9F000030 +:101090006D9F00006D9F00006D9F00006D9F000020 +:1010A000BBE10100C1E101006D9F00006D9F0000E8 +:1010B0006D9F00006D9F00006D9F00006D9F000000 +:1010C000C7E101006D9F00006D9F00006D9F000053 +:1010D0006D9F00006D9F00006D9F00006D9F0000E0 +:1010E0006D9F00006D9F00006D9F00006D9F0000D0 +:1010F0006D9F00006D9F00006D9F00006D9F0000C0 +:101100006D9F00006D9F000000F002F81CF0CDFF05 +:101110000AA090E8000C82448344AAF10107DA4552 +:1011200001D11CF0C2FFAFF2090EBAE80F0013F0B4 +:10113000010F18BFFB1A43F001031847BCD501008B +:10114000DCD501000A4410F8014B14F00F0508BF6C +:1011500010F8015B240908BF10F8014B6D1E05D083 +:1011600010F8013B6D1E01F8013BF9D1641E03D05C +:10117000641E01F8015BFBD19142E4D3704700008B +:101180000023002400250026103A28BF78C1FBD890 +:10119000520728BF30C148BF0B6070471FB500F031 +:1011A0003DF88DE80F001FBD1EF0040F0CBFEFF3DC +:1011B0000880EFF30980014A10470000BF9D00003E +:1011C0008269034981614FF00100104470470000BB +:1011D000D511000001B41EB400B511F043F901B4FB +:1011E0000198864601BC01B01EBD0000F0B4404627 +:1011F000494652465B460FB402A0013001B506488D +:10120000004700BF01BC86460FBC80468946924617 +:101210009B46F0BC70470000091100001CF042BF63 +:1012200070B51C4C054608202070A01C00F065F825 +:101230005920A08029462046BDE8704007F01CB820 +:1012400010B507F024F813490020891E087010BD5E +:1012500070B50C460F49891E097829B1A0F16001CB +:10126000532906D3012011E0602802D043F2010087 +:101270000CE020CC084E94E80E0006EB8000A0F5B0 +:101280008050241FD0F8806E2846B047206070BD83 +:10129000012070470A00002014E2010010B5044646 +:1012A0000021012000F03FF80021182000F03BF859 +:1012B00000210B2000F037F80421192000F033F84A +:1012C00004210D2000F02FF804210E2000F02BF84F +:1012D00004210F2000F027F80421C84300F023F870 +:1012E0000721162000F01FF80721152000F01BF839 +:1012F0002046FFF795FF002010BD8C21018070472C +:10130000FFF79EBF10487047104A10B514680F4B86 +:101310000F4A08331A60FFF79BFF0C48001D04605A +:1013200010BD704770474907090E002806DA00F023 +:101330000F0000F1E02080F8141D704700F1E0205C +:1013400080F800147047000003F9004310050240C4 +:101350000100000130B5F74D044610280AD0112CC9 +:1013600006D02846122C817806D0132C08D0FFDF37 +:10137000AC7030BDFFDFFBE71129F9D0FFDFF7E7E5 +:101380001129F5D0FFDFF3E770B50FF05AFA0446E4 +:1013900010F030FE201AC4B206200DF02DFC0546D8 +:1013A00006200DF031FC2E1A07200DF025FC054615 +:1013B00007200DF029FCDF49281A321888781228F6 +:1013C0000DD000231A4413280BD0002002440878C3 +:1013D000022808D000201044201AC0B270BD01239A +:1013E000F0E70120F2E70120F5E7D24800B50079E7 +:1013F000D049420897B051F8050F89880CD01722C0 +:101400008DF80020CDF80200ADF806100BA9684653 +:101410000AF02BFF17B000BD4022F1E702210DF0CA +:1014200040BC2DE9F04196B01D4690460E46074659 +:10143000FFF7F4FF04000BD02078222804D3A07F0C +:10144000C0F34010A84206D1082016B0BDE8F081D4 +:1014500043F20200F9E745208DF80000ADF8027074 +:101460003DB101208DF804008DF805608DF80680EF +:1014700002E000208DF804000BA968460AF0F5FE92 +:10148000A07F65F34510A0770020DEE730B5044665 +:10149000A1F120000D460A284AD2DFE800F0050736 +:1014A0000C1C2328353A3F44FFDF42E020782028F7 +:1014B0003FD1FFDF3DE09F480178032939D0807894 +:1014C000132836D02078242833D0252831D023285B +:1014D0002FD0FFDF2DE0207822282AD0232828D8FB +:1014E000FFDF26E02078222823D0FFDF21E02078CC +:1014F00022281ED024281CD026281AD0272818D00D +:10150000292816D0FFDF14E02078252811D0FFDF2E +:101510000FE0207825280CD0FFDF0AE0207825286E +:1015200007D0FFDF05E02078282802D0FFDF00E0A9 +:10153000FFDF257030BD30B50B8840F67B444FF699 +:10154000FF72022801D0934204D09D1FA54224D2ED +:10155000022802D04D88954203D04D88AD1FA54288 +:101560001BD24C88A34218D88B88B3F5FA7F14D2CB +:10157000022802D0C888904205D0C88840F6774536 +:101580000A38A84209D2C888904208D0944206D0AE +:101590005B1C6343B3EB800F01DB072030BD0020F1 +:1015A00030BD70B514460D46064611F0C9F960B954 +:1015B0000DB1A54201D90C2070BD002409E000BF87 +:1015C00056F8240011F0BCF908B1102070BD641C5D +:1015D000E4B2AC42F4D3002070BDF0B50024059D08 +:1015E00010B1A94203D851E009B90020F0BD09208B +:1015F000F0BD055D8DB107197E78112E3FD00FDC4F +:101600000A2E3CD2DFE806F03B1624242A2A2C2C92 +:101610003333025D72BB641CE4B28C42F9D3E4E75D +:101620001D2E2CDAA6F11206042E28D2DFE806F0D1 +:1016300027271018022DDAD1BD781D70072D01D291 +:101640006D0701D40A20F0BD157845F0010515E0BD +:10165000EE43F60707E0012D07D010E00620F0BDAD +:101660002E07A6F18056002EF5D06046F0BD157805 +:10167000AE0701D50B20F0BD45F002051570055DE4 +:10168000641C2C44E4B28C4202D9B0E74FF4485CAD +:101690008C42AED3A9E710B50278540809D00122D4 +:1016A00043F20223012C07D0022C0DD0032C13D1BE +:1016B0000FE00020087005E080790324B4EB901F50 +:1016C0000AD10A70002010BD8079B2EB901F03D1BF +:1016D000F7E780798009F4D0184610BD154A917B50 +:1016E00039B1D17B022908D0032908D043F2022066 +:1016F00070470146101D01F03FBB032100E00121AE +:1017000001700020704738B50C460546694601F067 +:1017100033FB00280DD19DF80010207861F34700BD +:10172000207055F8010FC4F80100A888A4F805003E +:10173000002038BDB401002038B51378C0B10228AC +:1017400016D0F6A46D46246800944C7905EB9414E9 +:10175000247864F34703137003280ED003F0FE00CF +:1017600010700868C2F801008888A2F8050038BD2A +:1017700023F0FE0313700228EED1D8B240F001002E +:10178000EEE730B50C46097897B0222902D208203E +:1017900017B030BD28218DF80010ADF80200132AD3 +:1017A00003D03B2A01D00720F2E78DF804200BA9D3 +:1017B00068460AF05AFD050003D121212046FFF7B3 +:1017C00065FE2846E4E700B597B023218DF80010A8 +:1017D000ADF802001088ADF804005088ADF806009E +:1017E000D088ADF80A009088ADF808000020ADF868 +:1017F0000C00ADF80E000BA968460AF036FD09E6AC +:101800002DE9FF470220C64E8DF804000027708A9C +:10181000ADF80600B84643F202094DE001A80DF00C +:10182000AAF9050006D0708AA8B3A6F81280ADF810 +:1018300006803FE0039CA07F01072DD504F1240022 +:101840000090A28EBDF80800214604F1360301F095 +:10185000A2FF050005D04D452BD0112D3DD0FFDF57 +:101860003BE0A07F20F00800A077E07F810861F3D3 +:101870000000C10861F34100E07794F8210000F016 +:101880001F0084F820002078282827D1292120460D +:10189000FFF7FCFD22E015E040070BD5BDF808007E +:1018A000214604F10E02FFF78EFF05000DD04D45D5 +:1018B00010D100257F1CFFB202200DF09DF9401CC5 +:1018C000B842ABD8052D12D008E0A07F20F004006C +:1018D000A07703E0112D00D0FFDF0025BDF8060042 +:1018E0007082052D05D0284604B0BDE8F087A6F823 +:1018F00012800020F8E72DE9F047040000D1FFDF57 +:101900002078874E20F00F00801C20F0F00070300F +:10191000207060680178091F1429E6D2DFE801F021 +:10192000F00A0B4FEF0B0CEFEF36F00B0BF074F0EF +:101930000B0BF0F0FFDFD8E787883846FFF76EFD26 +:10194000050000D1FFDF6078212140F008006070C1 +:10195000707C40F0040070742846FFF797FD38460D +:1019600007F0C2FA384603F092FF384605F01DF83A +:101970003946022010F0A1FFA87F20F01000A877C0 +:10198000FFF73EFF0028B0D0FFDFAEE7858828468E +:10199000FFF744FD00B9FFDF60688078012800D0C0 +:1019A000FFDF60688179284607F00EFC00289CD094 +:1019B000617841F0080161706168C88095E78688A8 +:1019C0003046FFF72BFD050000D1FFDF6078314680 +:1019D00040F0080060706068C088288160680089F5 +:1019E000688160684089A881022010F066FF0020AD +:1019F000A875A87F00F0030002289CD1FFF700FF24 +:101A0000002898D0FFDF70E780783C2803D00025BD +:101A100002280AD000E00125002720B13C2802D08E +:101A2000022800D0FFDF17B1A3E00127F5E76078B7 +:101A3000002D40F008006070707C40F00800707469 +:101A40006BD165680221B5F80480AD1C4746384665 +:101A50000DF01EF90446032138460DF019F98246AF +:101A6000052138460DF014F98146042138460DF061 +:101A70000FF9074604B9FFDFBAF1000F00D1FFDF0D +:101A8000B9F1000F00D1FFDF07B9FFDF22212046A7 +:101A9000FFF7FCFC2879012833D00227A07F06211C +:101AA00067F30100A077288B2081688B6081A88B69 +:101AB000A08105F1120001F096F920B36879800742 +:101AC00000D5FFDF6979E07D61F34700E075D5F867 +:101AD0000600A0616889A083062105F10C0001F0D1 +:101AE00082F9F8B130794108607861F3470060709D +:101AF000D6F80500C4F80200B6F809001BE045E07E +:101B000049E00127CAE7E07D20F0FE00801CE07577 +:101B1000D5F81200A061E88ADDE71DE00302FF01AD +:101B2000B4010020607820F0FE00801C6070E8683E +:101B3000C4F80200288AE080FE48007884F8220079 +:101B4000A07F00F00301404607F0C0F9012F03D049 +:101B5000022F0ED0FFDFC8E63078032800D0FFDF69 +:101B60000021084610F0A9FEBDE8F047012001F071 +:101B7000DDB8B078132800D0FFDF0021072010F077 +:101B80009CFEBDE8F0471120FFF7E4BB2046BDE80E +:101B9000F04702F0D3B8607840F008006070A4E627 +:101BA0002DE9F04705460078914600270209DFF845 +:101BB00088A30C463E46012A75D000214FF6FF70DF +:101BC000022A71D0072A0AD00A2A6ED0FFDF00BF8E +:101BD000A9F800600CB127806680002085E6D5F862 +:101BE00004C004F1080204F118089CF80060361FD4 +:101BF000142E5AD2DFE806F09859594559590A5916 +:101C0000593C5A5959C263FA59594DE811270926C6 +:101C1000002C7CD0BCF80480A4F80480686880792B +:101C200020729AF81110404621F004018AF8111030 +:101C300004210DF048F8052140460DF044F800213C +:101C400040460DF040F8012140460DF03CF80321DC +:101C500040460DF038F8022140460DF034F80621D8 +:101C600040460DF030F8072140460DF02CF8AFE764 +:101C700001270926F4B3BCF80400A08068688079C5 +:101C80000FE012271026BCF80400214601F08CF862 +:101C90009EE71C2709266CB3BCF80200A080686888 +:101CA0000079207294E7B5E0DFE004E11B27092604 +:101CB00004B30420207268684088A08088E79CF8FC +:101CC00002003C2826D0102718260CF1020C8CB1FB +:101CD000BCF80200A080BCF818006082BCF81800B4 +:101CE0002082BCF81A00A082BCF81C00E0829CF89C +:101CF000050000E00BE00CF10601FFF71DFD9CF86C +:101D0000040010B10120E07309E00220FBE7A9F80C +:101D1000006062E71B270926002CF8D021729AF890 +:101D2000111021F00801B2E01D273726002CEED05B +:101D3000A08069680879491DFFF7FEFC686890F883 +:101D40002B00A0756868C0780428E07D13D020F0CF +:101D50000100E07569681F22C97861F34200E075EF +:101D60006968C97A61F3C700E075696840460C315B +:101D70001CF09AF82CE740F00100EAE71D2737260F +:101D8000002CC4D0A0806968481D0B790146184614 +:101D9000FFF7D2FC696804F10F0201F10C00CB7A65 +:101DA00001461846FFF7C8FC6868807CA075686823 +:101DB000C178E07D61F3420020F0F900E0751F2159 +:101DC00040461CF00AF903E720271026002C9ED07D +:101DD000A080686804F10902407A20726968CB1C0F +:101DE00088781946FFF7A8FCF2E6FFE704271026DB +:101DF000002C8CD0BCF80200A0806868808820810C +:101E00006868C088608168680089A08168684089C6 +:101E1000E081DDE6287A012803D0022814D0FFDF14 +:101E2000D6E61F271026002CABD06888A0806889D2 +:101E30002081A8896081E889A081288AE0819AF8B8 +:101E4000111021F0200122E012271026688800F0EE +:101E5000ABFF002C95D0687800F00700032889D1EB +:101E60009AF8111021F0020111E02A7A062A29D2EB +:101E7000DFE802F00310102121211B270926002C86 +:101E8000A5D0A08021729AF8111021F001018AF8E2 +:101E900011109DE61B270926002C98D0A080287AD7 +:101EA000012806D0032020729AF8111021F01001A9 +:101EB000EDE70220F7E74A4621462846BDE8F0470D +:101EC00002F0B7B8FFDF83E610B51B4896B0807804 +:101ED000132802D0082016B010BD22208DF8000073 +:101EE0000BA968460AF0C1F904460021072010F04A +:101EF000E4FC2046EFE700B50F4897B08078122841 +:101F000001D008207BE41E208DF8000000208DF811 +:101F100002008DF803000BA968460AF0A6F9002814 +:101F2000F0D10021072010F0C8FC1120FFF712FAB1 +:101F3000002064E410000020B401002000B5F9483E +:101F400097B00078012814D01B208DF800000020E5 +:101F50008DF802000BA968460AF087F9002807D11E +:101F60000021084610F0A9FC012000F0DFFE00204F +:101F700045E4082043E42DE9F041EA4C002740B154 +:101F800002281DD0072842D0082800D0FFDFBDE876 +:101F9000F081FFF7D3FF0028F9D106F0B4F800284C +:101FA000F5D0017821F00F01891C21F0F0012031DA +:101FB0000170077206F087F8607C40F001001DE0B8 +:101FC0008EB23046FFF72AFA050000D1FFDF2878ED +:101FD0002128DCD006F097F890B1017821F00F01AC +:101FE000891C21F0F001103101700221017246803C +:101FF000AF7506F068F8607C40F002006074C6E7D8 +:1020000029463046BDE8F0411322FFF7BABBA57858 +:10201000122D03D0132D04D0FFDFB8E7FFF76BFFBD +:1020200001E0FFF751FF0028B1D106F06CF800285D +:10203000ADD0017821F00F01891C21F0F001203191 +:102040000170122D07D00221017206F03CF8607C6D +:1020500040F01000D2E70121F6E72DE9F0411446E7 +:102060000D00074600D1FFDF2878012803D00228A1 +:1020700021D0FFDF8BE73846FFF7D0F9060000D10B +:10208000FFDF0220B075207820F00F00801C20F0C8 +:10209000F00010302070607840F008006070286810 +:1020A000A0606868E060288920829E48417C41F0F9 +:1020B000200141746BE73846FFF7B0F9060000D104 +:1020C000FFDF69884FF6FF70814209D1AA888242FA +:1020D00006D131463846BDE8F0411322FFF751BB27 +:1020E000814201D1A88898B1207820F00F00801C8F +:1020F00020F0F00010302070607840F00800607030 +:102100002868A0606868E06028892082002006E0D6 +:10211000782300223946022010F032FB0120B075EE +:1021200035E730B5054697B00C46084610F008FC78 +:1021300080BB00200121203D072D6ED2DFE805F095 +:1021400004264145515D67000021082010F08EFBF8 +:1021500010B1112017B030BD24208DF80000D4F844 +:102160000200CDF80200A0798DF806000BA96846A0 +:102170000AF07BF8050056D10823002211461846C4 +:1021800010F0FEFA08284ED0FFDF4CE0606810F037 +:1021900019FC08B11020DDE748208DF800002088E8 +:1021A000ADF802006088ADF804000BA968460AF09B +:1021B0005CF8050037D1606880B3BDF8301001804D +:1021C00031E0206802F0D6F909E049220AE000BFB8 +:1021D0008DF802100CE000BF8DF8020008E0054603 +:1021E00021E042228DF800202278D207F4D0EFE7D8 +:1021F0000BA968460AF039F8F1E738208DF800009D +:102200002088ADF802006088ADF80400F0E720787F +:1022100028B1A0F11B01E12902D3072503E01B200F +:10222000414900250870284694E730B5054697B027 +:102230000C46084610F0A8FB08B110208AE7202DB4 +:1022400007D0212D25D0222D23D0232D21D00720CA +:1022500080E72088FFF7E2F820B10078222804D236 +:10226000082077E743F2020074E725208DF800008C +:102270002088ADF802000BA9684609F0F6FF002897 +:10228000DCD1DDF83210C4F802109DF83610A171CF +:1022900060E706205EE72348001D70472149087467 +:1022A00070472048007C00F00100704738B51421C9 +:1022B0001C481BF070FE012000F038FD1120FFF7D4 +:1022C00049F81949FB20174C0870611D684605F054 +:1022D000E2FF9DF80010207961F3470020F0010033 +:1022E00020710020A0734FF46170A0810220E07380 +:1022F000FFF77BF800B1FFDF00F08EFE01F0D9FCA4 +:1023000038BD10B50C463E2120461BF044FEA07F90 +:1023100020F00300A077202020700020A07584F812 +:10232000230010BDB40100201000002070477CB5D0 +:10233000054610F005FB08B110207CBDFE4C211DA8 +:1023400060680090A06801902846FFF7DCF900283B +:10235000F3D1FFF74AF80028EFD000996160BDF88B +:10236000041021819DF80610A1727CBD10B50446B1 +:1023700010F00AFB08B11020D3E7EF492246087994 +:10238000491D4008FFF7D8F90020CAE72DE9F047BA +:102390009CB00D4604004FF0000812D00822FFF751 +:1023A00000F900281CD1002609E000BF54F82600DF +:1023B00004A9FFF770F9002812D1761CF6B2AE42DC +:1023C000F4D32F460A2006AD0DF1440A8DF818000B +:1023D00026465146284609F048FF20B143F2032023 +:1023E0001CB0BDE8F0874046DFF84C8388F8030056 +:1023F0002EB300244FF00B091DE000BF56F8240057 +:1024000005A9FFF748F900B1FFDF9DF81400A87097 +:1024100056F8240050F8011FC5F803108088A5F86D +:10242000070085F800905146284609F01EFF00B1CC +:10243000FFDF641CE4B2BC42E0D388F803700020E4 +:10244000CEE72DE9F0479EB01546894604001ED020 +:102450000F4608222946FFF7A4F8002811D10026CC +:1024600013E000BF54F8260005A9103000F084FCEA +:10247000002806D13FB157F8260010F061FA10B1DC +:1024800010201EB0ADE7761CF6B2AE42EAD30026AD +:10249000A5F101081CE000BF06F1010A0AF0FF07E0 +:1024A00012E000BF54F82600017C4A0854F82710B7 +:1024B0000B7CB2EB530F05D10622113011311BF00A +:1024C000C7FCC0B17F1CFFB2AF42EBD30AF0FF06DE +:1024D0004645E1DBC8462F46342007AD0DF14809DB +:1024E0008DF81C0026464946284609F0BEFE28B154 +:1024F00043F20420C5E743F20520C2E796B3002467 +:102500002CE000BF56F82400A91C103000F034FC69 +:1025100000B1FFDF56F82400102250F8111FC5F853 +:1025200003108088A5F8070056F8241005F109006B +:102530001BF0BAFCB8F1000F15D058F82410102287 +:1025400005F119001BF0B0FC3220287049462846DE +:1025500009F08BFE00B1FFDF641CE4B2BC42D1D3B2 +:10256000012206E004E005F1190001F0F7FFEBE7B6 +:1025700000224946284600F02AFC002081E770B579 +:1025800096B0044610F0DCF918B9606810F023FA30 +:1025900010B1102016B070BD60884AF2B8118842A0 +:1025A00005D82078644D6E4618B1012804D0072064 +:1025B000F0E7FEF71AFF1AE06078022804D003283B +:1025C00002D043F20220E5E7E87317208DF80000FF +:1025D000E97B0020CDF80200ADF80600022932D0D8 +:1025E00003292DD0FFDF0BA9684609F03EFE002825 +:1025F000D0D1606801F0A5FF207870B101208DF87E +:102600000200F01C01F0AAFF4B208DF800000BA97E +:10261000684609F02AFE00B1FFDF6088A8B1A881F2 +:1026200080B2ADF8020030208DF800000BA968469A +:1026300009F01BFE00B1FFDF2078A8730020A9E796 +:102640008DF80700CFE74020FAE74FF46170E6E726 +:1026500010B5044610F098F920B9606838B110F050 +:10266000B1F908B110205CE6606801F077FF3248EC +:1026700081896180C17B6170807B2070002050E681 +:102680002DE9F0419CB0054600208DF864008DF8DE +:1026900060008DF830008DF868001E4614468846AC +:1026A000284610F098F918B9204610F094F910B1A6 +:1026B00010201CB06BE455EA040018D01F270CABA7 +:1026C00019AA414628460097FEF787FF0028F0D157 +:1026D0001AAB18AA314620460097FEF77EFF002865 +:1026E000E7D19DF86000C00703D00A20E1E707208A +:1026F000DFE701AF7DB11A208DF804008DF8068068 +:1027000042462946F81C1BF0CFFB0DA901A809F091 +:10271000ACFD0028CDD194B120208DF804008DF8B7 +:10272000066032462146F81C1BF0BEFB0DA901A82D +:1027300009F09BFD002801E0B4010020B9D1FF4958 +:102740009DF8300048700020B3E72DE9F0439BB0BE +:102750004FF00008FAA104468DF83480D1E9000159 +:10276000CDE91901204610F0EBF890B92078012846 +:1027700003D1606810F0E4F858B9F04D4FF001094A +:10278000A87B50B1E87B022807D1606810F023F9DC +:1027900018B110201BB0BDE8F0832878012801D0C3 +:1027A0000820F7E707200CF02FFA18B9207848B175 +:1027B000012807D0FEF7E8FD30B1687C10F00C0F5F +:1027C00008D103E01220E5E71320E3E7C10701D1B8 +:1027D000800701D51120DDE7608943F6E172A0F1A1 +:1027E00020019142217807D301297CD100287AD198 +:1027F000A189002977D10FE0022901D0032901D155 +:10280000A02870D3012907D06978C90704D0A1890D +:10281000002968D0B42966D8217831B1012908D0BF +:10282000022904D003295ED10AE0002609E002262D +:1028300007E008B9A08908B1042609E0012607E0ED +:102840000326A87B50B1E87B022807D1606828B135 +:102850000DA96068FEF71FFF00289BD1207A30B1D8 +:10286000012806D0022806D003286DD105E00027F4 +:1028700004E0012702E0022700E003270EB1022E48 +:102880000ED16FB1E87870B36878800702D043F258 +:1028900001207FE7022E03D1022F55D0032F53D002 +:1028A00018208DF838006089ADF83A006089ADF8DD +:1028B0003C008DF83E600DF13F00FEF70FFF00B1C8 +:1028C000FFDF9DF834008DF840002078012806D005 +:1028D000A87B68B1E87B02280AD1606840B16068D3 +:1028E00050F8011F00E02FE0CDF84110808802E091 +:1028F0004046CDF84180ADF845008DF84870A07B8A +:10290000C0F34002014662F35F01C0F3800041EA78 +:10291000800019A9085C8DF84700A8B169460EA887 +:1029200009F0A3FC0028B4D11B208DF838008DF8E5 +:102930003A9069460EA809F098FC0028A9D19DF8A4 +:1029400001001B2819D101E0072023E7052E09D239 +:10295000DFE806F0030305050300032000E0022082 +:1029600000F0E4F9012E0AD0A08940B100228300D2 +:10297000114610460FF004FF08B103200AE70020BB +:1029800008E72DE9FC4107460D460326084610F0EE +:1029900022F8002864D13846FEF740FD040005D037 +:1029A0002078222805D20820BDE8FC8143F20200ED +:1029B000FAE7A07F00F0030C2DB129466046FEF730 +:1029C000BAFD0600F0D15D48BCF1010F05D0BCF1A5 +:1029D000020F17D0FFDF3046E6E7A27D2946012A25 +:1029E00002D0407C800701D51120DDE729B9684677 +:1029F00000F01FFC0028D7D16946384606F067FB77 +:102A00000646E8E7A17D022914D1407C800611D456 +:102A100025B1A07F40070BD4002100E001213846FA +:102A200006F09DFB0600D6D1A075002DD3D002E0A4 +:102A30001126D0E7A5B12A4621463846FEF7C3FE47 +:102A400006461128C7D1A07F4107C4D4296844F89D +:102A50000E1F6968616040F0040020740026BAE728 +:102A60001020A1E770B50C460546FEF7D7FC010023 +:102A700005D022462846BDE87040FEF782BE43F2EC +:102A8000020070BD00B597B03F218DF800108DF8A1 +:102A900002000BA9684609F0E8FB17B000BD01234E +:102AA000FEF7BFBC00231A461946FEF7BABC30B584 +:102AB00097B004460FF044FF10B1102017B030BD9E +:102AC000204600F047F90028F8D11C4DA8781128BD +:102AD00001D00820F2E7FEF757FC20B1687CC00661 +:102AE00003D51120EAE71320E8E72078800701D515 +:102AF000E87848B31D208DF800002078022200F00D +:102B000001008DF802006088ADF80400A088ADF8DF +:102B100006002078C0F3400102EA500001438DF81E +:102B2000091002A8FEF7DAFD00B1FFDF0BA9684625 +:102B300009F09BFB0028C1D11E2006E0B401002053 +:102B4000070605040302010017E08DF800000120CC +:102B50008DF8020000208DF803000BA9684609F0EB +:102B600084FB0028AAD1E08800F010F90400A5D168 +:102B70001220FEF7EFFB2046A0E707209EE7F0B506 +:102B800097B015460C4607460FF025FF38B920468A +:102B90000FF0D6FE18B928460FF0D2FE10B1102063 +:102BA00017B0F0BD974E707C10F0180F01D14007A0 +:102BB00001D51120F4E7204600F0CCF80028EFD131 +:102BC00029460220FEF7B7FC0028E9D1B078112889 +:102BD00003D0122801D00820E2E72078C0F340019A +:102BE000394311D0800700D577B906200CF00CF8D6 +:102BF00040B12078800701D5F07828B1B07812284C +:102C000004D007E01220CBE70720C9E7FFF773F9EC +:102C10000028C5D1FEF7B8FB022801D21320BFE778 +:102C200021208DF800006088ADF80200A088ADF882 +:102C300004002078C0F340008DF80600207880075B +:102C400016D43878420808D0012A18D043F202215D +:102C5000022A18D0032A18D115E0C00700D002209C +:102C60008DF8070057F8010F0290B888ADF80C00F6 +:102C70000DF10E00FEF732FD58B1032090E7C007BA +:102C800005D00320ECE7C00701D0084688E7012003 +:102C9000E6E72888ADF810006888ADF81200A8882B +:102CA000ADF81400E888ADF816000020ADF8180063 +:102CB000ADF81A000BA9684609F0D7FA00288BD1A5 +:102CC000E08800F063F8040086D11320FEF742FB91 +:102CD000204665E730B5054697B00C4608460FF02C +:102CE00053FE08B11020E9E62846FEF797FB38B1FD +:102CF0000178222902D3807F800604D40820DDE6F3 +:102D000043F20200DAE613208DF80000ADF802501D +:102D10000BA9684609F0A9FA0028E4D19DF9321000 +:102D20007F2901D02170C9E60520C7E630B5354DB1 +:102D3000040008D0012C04D0022C06D0032C04D0AF +:102D4000FFDF2C7030BDFFDFFBE728780128F8D0CB +:102D5000FFDFF6E7418843F6FD730A1F9A4209D266 +:102D60008088042806D3B0F5804F03D8884201D864 +:102D700000207047072070470278520804D0012ACB +:102D800002D043F202207047FEF785BC10B548B16F +:102D900083000022114607200FF0F2FC072801D023 +:102DA000032060E400205EE470B50C0006460DD000 +:102DB000FEF734FB050000D1FFDFA68028892081C3 +:102DC000288960816889A081A889E08170BD10B5DB +:102DD00002F0010282703122027009F046FA0028E6 +:102DE00000D0FFDF3FE410B500231A4603E0845C07 +:102DF0002343521CD2B28A42F9D30BB1002032E4F1 +:102E0000012030E4B40100204FF0E0224FF40041F3 +:102E10000020C2F880112049087020499002086003 +:102E2000704730B51C4D04462878A04218BF002CCE +:102E300002D0002818BFFFDF2878A04208BF30BDAD +:102E40002C701749154A0020ECB1164DDFF858C018 +:102E5000131F012C0DD0022C1CBFFFDF30BD0860FA +:102E600003200860CCF800504FF400001060186098 +:102E700030BD086002200860CCF800504FF0407070 +:102E80001060186030BD086008604FF0607010601E +:102E900030BD00B5FFDF00BD1A00002008F501407D +:102EA00000F500401C03002014F50040094810B54F +:102EB00004680A49084808600EF0FDF908480460F3 +:102EC00010BD0849002008604FF0E0210220C1F841 +:102ED0008002704710050240010000011805024001 +:102EE00014050240FC1F004010B50D2000F06FF8E3 +:102EF000C4B26FF0040000F06AF8C0B2844200D09F +:102F0000FFDF3A490120086010BD70B50D2000F0C8 +:102F100048F8374C0020C4F800010125C4F80453D8 +:102F20000D2000F049F825604FF0E0216014C1F851 +:102F3000000170BD10B50D2000F033F82C480121C0 +:102F400041600021C0F80011BDE810400D2000F0E4 +:102F500033B8284810B50468264927480831086066 +:102F60002349D1F80001012804D0FFDF2148001DCA +:102F7000046010BD1D48001D00680022C0B2C1F8E9 +:102F800000210FF0A8F9F1E710B51948D0F80011A9 +:102F90000029FBD0FFF7DDFFBDE810400D2000F059 +:102FA0000BB800F01F02012191404009800000F1A0 +:102FB000E020C0F88011704700F01F02012191400D +:102FC0004009800000F1E020C0F88012704700281E +:102FD00006DA00F00F0000F1E02090F8140D03E095 +:102FE00000F1E02090F800044009704704D500404B +:102FF00000D00040100502400100000170477047FA +:1030000018FFFFFFDBE5B15100F001008C00FFFF6E +:1030100084000000C0C62D00FE4800210160416010 +:1030200070472DE9F743044692B091460120FFF71F +:1030300035F960680FF0C6FC58B160680FF0CBFC42 +:1030400038B9607800F00300022802D10020FFF7B1 +:1030500025F94D4648460FF073FC18B1102015B005 +:10306000BDE8F08329460120FEF765FA0028F6D175 +:1030700001258DF842504FF4C050ADF840000022B9 +:1030800010A9284603F035FF0028E8D18DF84250FA +:103090004FF42850ADF8400000261C2168460796E2 +:1030A0001AF09BFF9DF81C0007AF20F00F00401C9A +:1030B00020F0F00010308DF81C0020788DF81D00F5 +:1030C00061789DF81E000DF1400861F3420040F068 +:1030D00001008DF81E009DF8000008AA40F00200D3 +:1030E0008DF800002089ADF83000ADF832606089BD +:1030F000ADF834000B9760680E900AA9CDF82880CF +:10310000684603F0F5FC0028A9D1C24CBDF82000A8 +:1031100008AA20808DF8425042F60120ADF8400008 +:103120009DF81E000AA920F00600801C20F0010076 +:103130008DF81E000220ADF83000ADF8340013A861 +:103140000E90684603F0D4FC002888D1BDF820001A +:103150006080211D484600F032F9002887D18DF8A3 +:10316000425042F6A620ADF840001C216846079662 +:103170001AF033FF9DF81C00ADF8345020F00F001A +:10318000401C20F0F00010308DF81C009DF81D0050 +:1031900008AA20F0FF008DF81D009DF81E000AA966 +:1031A00020F0060040F00100801C8DF81E009DF804 +:1031B00000008DF8445040F002008DF80000CDE989 +:1031C0000A8711A80E90ADF83050684603F090FCC5 +:1031D000002899D1BDF82000E08000203FE73EB5EF +:1031E00004460820ADF8000020460FF0A9FB08B106 +:1031F00010203EBD21460120FEF79DF90028F8D1A0 +:103200002088ADF804006088ADF80600A088ADF80D +:103210000800E088ADF80A007E4801AB6A46808865 +:10322000002104F061F8BDF800100829E1D0032066 +:103230003EBD1FB50446002002900820ADF80800EE +:10324000CDF80CD020460FF07BFB10B1102004B05D +:1032500010BD704802AA81884FF6FF7004F029FA69 +:103260000028F4D1BDF80810082901D00320EEE7AA +:10327000BDF800102180BDF802106180BDF8041077 +:10328000A180BDF80610E180E1E701B582B002201F +:10329000ADF800005F4802AB6A464088002104F0A8 +:1032A00023F8BDF80010022900D003200EBD1CB584 +:1032B000002100910221ADF8001001900FF064FB95 +:1032C00008B110201CBD53486A4641884FF6FF7074 +:1032D00004F0EFF9BDF800100229F3D003201CBD63 +:1032E000FEB514460E460746FEF7DBFF28B1304612 +:1032F0000FF026FB18B11020FEBD0F20FEBDF82CEC +:1033000001D90C20FEBD38460FF01AFB414D18BB09 +:10331000288801A903F05BF90028F3D138788DF8EB +:103320000500288801A903F0C1FF0028EAD1009018 +:103330009DF800009DF8051040F002008DF8000097 +:10334000090703D040F008008DF80000288869467E +:1033500003F04AFF0028D5D1ADF80840288833464D +:1033600002AA002103F0C0FFBDF80810A142C9D095 +:103370000320FEBD7CB50546002000900190088822 +:10338000ADF800000C46284601950FF01BFB18B95C +:1033900020460FF0F9FA08B110207CBD15B1BDF838 +:1033A000000050B11B486A4601884FF6FF7004F0D8 +:1033B00080F9BDF8001021807CBD0C207CBD30B5AB +:1033C00093B0044600200D460090142101A81AF085 +:1033D00004FE1C2108A81AF000FE9DF80000CDF89C +:1033E00008D020F00F00401C20F0F00010308DF8C5 +:1033F00000009DF8010020F0FF008DF801009DF80D +:10340000200040F002008DF8200001208DF84600D9 +:1034100002E000001200002042F60420ADF8440053 +:1034200011A801902088ADF83C006088ADF83E00FE +:10343000A088ADF84000E088ADF842009DF8020099 +:1034400006AA20F00600801C20F001008DF8020082 +:103450000820ADF80C00ADF810000FA8059001A9E8 +:1034600008A803F045FB002803D1BDF81800288008 +:10347000002013B030BD000010B504460FF060FA14 +:1034800008B1102010BD2078C0F30210042807D81E +:103490006078072804D3A178102901D8814201D28D +:1034A000072010BDE078410706D421794A0703D4EC +:1034B000000701D4080701D5062010BD002010BD6B +:1034C00010B513785C08C37F64F30003C3771478E6 +:1034D000A40864F34103C3771078C309887863F3C1 +:1034E0004100887013781C094B7864F347134B70C4 +:1034F0001378DB0863F3000088705078487110BDC2 +:1035000010B5C4780B7864F300030B70C4786408BA +:1035100064F341030B70C478A40864F382030B7056 +:10352000C478E40864F3C3030B700379117863F380 +:103530000001117003795B0863F341011170037995 +:103540009B0863F3820111700079C00860F3C30126 +:10355000117010BD70B514460D46064604F0D3FD3B +:1035600080B10178142221F00F01891C21F0F001B3 +:10357000A03100F8081B21461AF0DBFCBDE87040C2 +:1035800004F0A1BD29463046BDE870401322FEF785 +:10359000F8B870B514460E46054604F0B4FD70B197 +:1035A000017821F00F01891C21F0F0012031017018 +:1035B000458021688160BDE8704004F084BD3146DB +:1035C0002846BDE870401322FEF7DBB810B5FE4C6C +:1035D00094F8300000280CD104F120014FF6FF725E +:1035E000A1F110000CF0A3FF00B1FFDF012084F86F +:1035F000300010BD2DE9F047064608A8894690E83E +:1036000030041F469046142128461AF0E6FC00219B +:10361000CAF80010B8F1000F03D0B9F1000F03D1C0 +:1036200014E03878C00711D020680FF0ADF9E8BB7E +:10363000B8F1000F07D120681230286020681430DC +:1036400068602068A8602168CAF800103878800790 +:1036500028D560680FF0B6F940BBB9F1000F2DD046 +:10366000FEF719FE0168C6F8B4118188A6F8B811F2 +:10367000807986F8BA01FFF7A9FFDFF84C8308F1DB +:103680002008C5F80C80626862B196F8B40106F2B1 +:10369000B51140081032FEF74FF81022414660681D +:1036A0001AF002FC3878400712D500E003E0A06869 +:1036B0000FF06AF950B11020BDE8F087606800286B +:1036C000F9D0E8606068C6F8B001EBE7A06828614F +:1036D0000020F1E730B5054608780C4620F00F00D1 +:1036E000401C20F0F001103121700020607095F82E +:1036F000230030B104280FD0052811D0062814D09B +:10370000FFDF20780121B1EB101F04D295F82000D3 +:1037100000F01F00607030BD21F0F000203002E0AA +:1037200021F0F00030302070EBE721F0F000403065 +:10373000F9E710B510B190F8A94044B1A24890F84B +:10374000354000205CB108601060186010BD00F1C9 +:10375000A8040C6000F1D001F8301160F5E79A4C34 +:1037600034340C60F0E700B58BB00723CDE90212CA +:103770008DF801300191944900236431059109933A +:1037800001468DF8103068460CF0A9FE002800D0E4 +:10379000FFDF0BB000BD30B597B00C462C251A9951 +:1037A0008DF80050ADF80200B3B118680190586868 +:1037B0000290ADF80C2010220DF10E001AF074FBEF +:1037C0000BA9684608F051FD002803D1A17F41F004 +:1037D0001001A17717B030BD00200190E8E72DE976 +:1037E000F0470646008A8CB080B20D468146FDF750 +:1037F00015FE0446744F3078283FDFF8CC814FF037 +:10380000000A122873D2DFE800F072E93509367732 +:103810007E98A8F3E7E6E5E4E35BE3E3A07F00F04E +:103820000300012806D0002148460BF03AFA0500B3 +:1038300003D101E00121F7E7FFDF98F85C100906EA +:1038400002D5D8F860000BE0032105F121000EF04D +:1038500023FDD5F821005D49B0FBF1F201FB120018 +:10386000C5F8210070686866B068A86620782528C9 +:1038700000D0FFDFECE0A07F00F00300012806D0BD +:10388000002148460BF00DFA060003D101E00121AA +:10389000F7E7FFDF7078810702D52178252904D06A +:1038A00040F0010070700CB006E70220287096F816 +:1038B0002000287106F121003136C5E90206F2E741 +:1038C000A07F00F00300012806D0002148460BF03D +:1038D000E8F9040003D101E00121F7E7FFDF607898 +:1038E000C10605D51320287041346C60DBE7DEE1AA +:1038F00040F008006070D6E73348082128380EF001 +:10390000CBFC032016E02A208DF8000010220DF1D8 +:10391000020071681AF0C8FA10220DF11200B168A5 +:103920001AF0C2FA284968462C3908F09EFC00B10A +:10393000FFDF042028706F60B5E7E07FC00600D588 +:10394000FFDFB0680090B38806220321484605F0E7 +:1039500024FB0028A7D0FFDFA5E704B9FFDF7168CB +:1039600021B1102204F124001AF09EFA28212046E9 +:10397000FDF78CFDA07F00F0030002280ED104F1BA +:103980002400002300901A4621464846FFF703FF13 +:10399000112807D029212046FDF778FD307A84F8D8 +:1039A000200080E7A07F000700D5FFDF14F81E0F7E +:1039B00040F008002070A4F816A0C4F818A0C4F8BD +:1039C0001CA0617808460AE01402002040420F0063 +:1039D00030E068E196E08CE062E009E03FE061F30E +:1039E0008200410861F3C3006070307AE0705AE7EA +:1039F000A07F00F00300012806D0002148460BF00C +:103A000050F9040003D101E00121F7E7FFDF0221B3 +:103A100004F175000EF040FC1020287004F5DA70F7 +:103A20006860B4F875002882FA486C346C61C5E9A6 +:103A3000028038E7A07F00F00300012805D00021B4 +:103A400048460BF02EF918B901E00121F8E7FFDF35 +:103A50000CB0324621464846BDE8F0477AE504B945 +:103A6000FFDF207821289CD93079012802D0022854 +:103A70000AD103E0E07F40F01000E07798F85C1096 +:103A800041F0010188F85C10324621464846FFF7B4 +:103A900061FD0CB02046BDE8F0472321FDF7F6BCE0 +:103AA000327901230321484605F086F878B11120C8 +:103AB0002870327905F10800AA80031D00900321C7 +:103AC000484605F0F6F8002891D0FFDFEBE6A07F2E +:103AD00000F00300012806D0002148460BF0E1F871 +:103AE000040003D101E00121F7E7FFDF3079207006 +:103AF000D9E60321484605F0FDFB002899D11220A4 +:103B00002870D0E6A07F00F00300012806D0002135 +:103B100048460BF0C6F8050003D101E00121F7E7A4 +:103B2000FFDF95F8740000F00300012878D1A07F32 +:103B300000F00307E07FC0F3400616B1012F04D068 +:103B40002BE095F89000C0072AD0D5F8AC1119B336 +:103B500095F87320087C62F387000874E27FD5F83B +:103B6000AC1162F341000874D5F8AC1166F30000A3 +:103B70000874AEB1D5F8AC01102204F124017835F7 +:103B80001AF092F9287E40F001002876287820F07B +:103B9000010005F8780900E016B1022F04D02CE0EE +:103BA00095F87800C00726D0D5F8A81119B395F874 +:103BB0007320087C62F387000874E27FD5F8A811AF +:103BC00062F341000874D5F8A81166F30000087488 +:103BD0008EB1D5F8A801102204F1240178351AF02D +:103BE00063F9287840F0010005F8180B287820F0D8 +:103BF000010005F89009022F51D0002000EB400091 +:103C000005EBC00090F87800800709D595F86C00A6 +:103C1000D5F8B021400805F16D011032FDF78CFD9B +:103C2000052060F3070815F8740F00F0030060F337 +:103C30000F28287960F31748287F60F31F687548BC +:103C40005C38027822F00F02921C22F0F00220323F +:103C50000270427822F00702D21C4270A0F8029053 +:103C6000C0F8088004F0B7FB2078252805D021286B +:103C700007D0FFDF2078222803D922212046FDF734 +:103C800005FCA07F00F0030001280AD0002148466F +:103C90000BF019F800283FF412AEFFDF03E6012015 +:103CA000ACE70121F3E7716881F801A0FBE5FFDFD4 +:103CB000F9E570B5574C0025103C14F85C0F20F066 +:103CC0008000207065600CF0D2FB5249A1F1100019 +:103CD00004F013FB04F82C5C062060724D487C3025 +:103CE00020615030A0611030E06170BD70B50D46AC +:103CF000FDF794FB040000D1FFDF4FF4DE7128468E +:103D00001AF06BF943485430686104F124002861CB +:103D1000A07F00F00300012808D0022105F5907073 +:103D20000CF0A6FB002800D0FFDF70BD0121F5E7F5 +:103D30000A46014602F590700CF0BABB70B5054614 +:103D400040689CB0017808290DD00B2903D00C29BC +:103D500036D101218171686886883046FDF75EFBA7 +:103D6000040035D133E046883046FDF757FB0400A8 +:103D700000D1FFDF2078212822D0282822D16868AE +:103D800002210C3001F0B8F9E0B168680821001D8B +:103D900001F0B2F9B0B12D208DF80000ADF802604D +:103DA000102204F1240101A81AF07EF80BA968463C +:103DB00008F05BFA00B1FFDF29212046FDF766FB22 +:103DC0001CB070BD687840F008006870F8E7FFDF4D +:103DD000A07F00F00301022902D120F01000A0779B +:103DE000207821280AD06868817909B1807898B153 +:103DF000A07F00F0030002285BD0FFDFA07F00F06F +:103E000003000228DCD1FDF7FBFC0028D8D0FFDF3F +:103E1000D6E7000024020020687840F008006870AF +:103E2000E07FC10720D0800701D5062000E00520F3 +:103E300084F823002078292818D02428DED13146A0 +:103E400006200EF03AFD22212046FDF71FFBA07F41 +:103E500000F0030001282AD0002130460AF033FF89 +:103E60000028CBD0FFDFC9E70420E1E7A07F00F006 +:103E70000300012806D0002130460AF012FF050099 +:103E800003D101E00121F7E7FFDF25212046FDF7FF +:103E9000FDFA0F208DF8580016A905F590700CF06A +:103EA000FEFA0228AAD00028A8D0FFDFA6E7012149 +:103EB000D3E7687840F0080068709FE72DE9F04389 +:103EC0008BB09946154688460646FDF7A7FA0400CA +:103ED0004ED0207822284BD3232849D0E07FC0063B +:103EE00046D4A07F00F00300012806D00021304610 +:103EF0000AF0D7FE070002D00BE00121F7E7A07F10 +:103F000000F00300012804D1012130460AF0C0FE70 +:103F1000074601AB02AA03A93846FFF70AFC03983B +:103F200000B9FFDF4FB1039807F5907787612078DC +:103F3000222806D0242804D007E0039900208861B5 +:103F400003E025212046FDF7A1FA03980B214170DB +:103F500046628580C0E90289029901610199416147 +:103F600004A90CF0BCFA022802D0002800D0FFDF20 +:103F70000BB0BDE8F08330B587B00546FDF74EFACB +:103F8000017822292FD9807F00F00300012806D074 +:103F9000002128460AF085FE040003D101E001213A +:103FA000F7E7FFDF227801230321284604F004FE0F +:103FB000002818D011208DF80400227803A8009062 +:103FC000ADF8082004AB0321284604F072FE00B1CE +:103FD000FFDF01A904F590700CF061FA022802D00D +:103FE000002800D0FFDF07B030BD10B586B0044612 +:103FF000FDF714FA0178222919D9807F00F0030017 +:10400000012806D0002120460AF04BFE040003D10F +:1040100001E00121F7E7FFDF12208DF8000069467B +:1040200004F590700CF03BFA002800D0FFDF06B0DA +:1040300010BD2DE9F05F05460C460027007890463C +:1040400001093E46BB4604F1080A02297ED0072931 +:1040500002D00A2909D142E068680178082905D010 +:104060000B292CD00C292AD0FFDFC6E114271C26EF +:10407000002C6CD04088A080FDF7D0F95FEA0009E1 +:1040800000D1FFDF99F817005246400809F11801E6 +:10409000FDF752FB68688089208268684168C4F82F +:1040A00012108068C4F81600A07E20F0060040F0D0 +:1040B0000100A07699F81E0040F040014DE01A275B +:1040C0000A26002CD5D08088A080FDF7A7F905002E +:1040D00000D1FFDF51462846FFF7FCFA8DE10CB115 +:1040E000288BA080287A0E287ED006DC01287CD080 +:1040F000022808D0032804D135E0102876D01128F2 +:1041000075D0FFDF79E11E270926002CB1D0A088E9 +:10411000FDF784F95FEA000900D1FFDF287B00F09A +:1041200003000128207A1BD020F001002072297B97 +:10413000890861F341002072297BC90861F382007C +:104140002072297B090961F3C30001E04AE117E10C +:10415000207299F81E0040F0800189F81E104CE191 +:1041600040F00100E2E713270D26002CAAD0A0881A +:10417000FDF754F98146807F00F00300012806D046 +:104180000021A0880AF08DFD050003D101E0012186 +:10419000F7E7FFDF99F81E0000F00302012A59D06B +:1041A000A86E817801F003010129217A54D021F011 +:1041B0000101217283789B0863F3410121728378A6 +:1041C000DB0863F38201217283781B0963F3C30167 +:1041D0002172037863F306112172437863F3C711E8 +:1041E000217284F809B003E05EE0A4E08CE09CE07A +:1041F000C178A172012A32D04279E17A62F30001DA +:10420000E1724279520862F34101E1724279920807 +:1042100062F38201E1724279D20862F3C301E17272 +:104220000279217B62F3000121730279520862F363 +:10423000410121730279920862F3820121730079AE +:10424000C00860F3C301217399F8000023285AD9EC +:10425000262168E0686EA4E741F00101A9E7027930 +:10426000E17A62F30001E1720279520862F34101DE +:10427000E1720279920862F38201E1720279D20856 +:1042800062F3C301E1724279217B62F30001217381 +:104290004279520862F3410121734279920862F334 +:1042A000820121734079CBE718271026002C67D0B4 +:1042B000A088FDF7B3F88246807F00F00300012854 +:1042C00007D00021A0880AF0ECFC5FEA000903D1C6 +:1042D00001E00121F6E7FFDFE868A06099F801003E +:1042E00040F0040189F8011099F80200800708D510 +:1042F000012020739AF8000023287ED927215046F8 +:1043000063E084F80CB078E015270F26C4B3A088CA +:10431000FDF784F8814606225146E86808F00DF85A +:104320000120A073AEE048464FE0162709263CB3B3 +:10433000287B207261E0297BFE4802290CD01927D6 +:104340000E26ECB101290DD003291AD004291BD067 +:10435000052919D0FFDF23E01B270926BCB3012163 +:10436000217205E001212172617A21F0030161725D +:1043700010F85C1F4A08520062F3060101700FE05A +:104380002BE00220207207E0687B052900F00F0077 +:1043900040F0800020721BD0607A20F00300607231 +:1043A000A088FDF73BF805460078212825D0232872 +:1043B00000D0FFDFA87F00F00300012810D000210B +:1043C000A0880AF080FC22212846FDF75FF814E05F +:1043D000607A20F00300401CE1E7A8F8006011E0DB +:1043E0000121EDE70CB16888A080287A03282BD042 +:1043F00004280AD005284BD0FFDFA8F800600CB1D4 +:10440000278066800020BDE8F09F15270F26002C2E +:10441000E3D0A088FDF702F8807F00F003000128B8 +:1044200006D00021A0880AF03CFC050003D101E081 +:104430000121F7E7FFDFD5F821000622514607F0FA +:104440007CFF84F80EB0D8E717270926002CC4D0CB +:10445000A088FCF7E3FF8146807F00F0030001287D +:1044600006D00021A0880AF01CFC050003D101E061 +:104470000121F7E7FFDFA878800701D5022000E0DF +:104480000120207299F800002328B6D927214AE795 +:1044900019270E26002CA0D0A088FCF7BFFF5FEAEA +:1044A000000900D1FFDFC4F808B0A4F80CB084F80C +:1044B00008B0A07A40F00300A07299F81F1061F3D1 +:1044C0008200A07299F81F1001EA510161F3C30044 +:1044D000A072687A00F0030001288ED1607A40F063 +:1044E0000400607299F81E00E97A00F003000128C8 +:1044F00013D0607B61F300006073AA7A217B62F3C2 +:1045000000012173EA7A520862F341006073A87ACD +:10451000400860F3410121736FE7207B61F30000E5 +:104520002073AA7A617B62F300016173EA7A520810 +:1045300062F341002073A87A400860F3410161737F +:104540005BE710B57B4C30B10146102204F120002E +:1045500019F0AAFC012084F8300010BD10B5044603 +:10456000FFF734F8734920461022BDE8104020318F +:1045700019F09ABC70B56F4C06004FF0000514D0CE +:104580000EF0DEF908B110250DE00621304607F0E7 +:10459000BBFE411C06D0206614F85C0F40F0800082 +:1045A000207000E00725284670BD14F85C0F20F04D +:1045B0008000F5E7007810F00F0204D0012A05D042 +:1045C000022A0CD110E0000909D10AE000090128F3 +:1045D00007D0022805D0032803D0042801D00720E3 +:1045E00070470870002070470620704705282AD2BF +:1045F000DFE800F003070F171F00087820F0FF0026 +:104600001EE0087820F00F00401C20F0F000103071 +:1046100016E0087820F00F00401C20F0F000203059 +:104620000EE0087820F00F00401C20F0F000303041 +:1046300006E0087820F00F00401C20F0F000403029 +:10464000087000207047072070472DE9F041804630 +:1046500088B00D46002708460EF0BDF9A8B94046BF +:10466000FCF7DCFE040003D02078222815D104E0FA +:1046700043F2020008B0BDE8F08145B9A07F010611 +:1046800003D500F00300022801D01020F2E7A07F3C +:10469000C10601D4010702D50DB10820EAE725497A +:1046A00091F85C10C90701D01120E3E7E17FC9064A +:1046B00001D50D20DEE700F00300022805D125B169 +:1046C0002846FEF7D9FE0700D4D1A07F00F00300F2 +:1046D000012806D0002140460AF0E3FA060002D085 +:1046E0000CE00121F7E7A07F00F0030001280BD0C8 +:1046F000002140460AF0CCFA060007D0A07F00F067 +:104700000300022804D009E00121F2E70420B1E708 +:1047100025B12A4631462046FEF7D2FE07AB1A469F +:1047200069463046FFF705F8009800B9FFDF0C2016 +:10473000009901E014020020487006F59070C1F85D +:104740002480486100200881A07F00F00300012838 +:1047500028D0EDB302200871301D886170784009BF +:104760000877B078C0F340004877287800F001025D +:10477000887F62F301008877E27F62F382008877A6 +:10478000E27F520862F3C3008877B27862F30410C4 +:104790008877A878C87701F1210228462031FEF7F2 +:1047A000AFFE22E001200871287800F00102087EA7 +:1047B00062F3010008762A78520862F382000876D4 +:1047C0002A78920862F3C30008762A78D20800E0BB +:1047D00007E062F30410087624212046FCF756FE19 +:1047E0000BE0032008710520087625212046FCF700 +:1047F0004DFEA07F20F08000A07701A900980BF06B +:104800006EFE022801D000B1FFDF384632E72DE905 +:10481000FF4FF94A0D4699B09A4607CA14AB0027D4 +:1048200083E807001998FCF7F9FD060006D03078F8 +:10483000262806D008201DB0BDE8F08F43F2020004 +:10484000F9E7B07F00F00309B9F1010F03D0B9F126 +:10485000020F07D008E03DB91B98FEF70DFE0028B7 +:10486000E9D101E01B9878BBB07F00F0030001287C +:1048700006D0002119980AF014FA040003D101E0CF +:104880000121F7E7FFDF852D25D007DCD5B1812D8C +:104890001BD0822D1BD0832D08D11AE0862D1CD071 +:1048A000882D1CD0892D1CD08A2D1CD00F20207162 +:1048B0000F281AD001208DF83400201D0E90207989 +:1048C000A8B158E10020F2E70FE00120EFE7022055 +:1048D000EDE70320EBE70520E9E70620E7E70820FE +:1048E000E5E70920E3E70A20E1E70720A3E7B9F1BC +:1048F000010F17D0D4E91950804602200190012001 +:104900000090A87898F80210C0F3C000C1F3C0016D +:1049100008405FEA000B5DD050460EF011F8002809 +:104920006CD12DE0D4E9198501200190022000907E +:10493000214630461B9AFEF7C3FD1B98007800F015 +:104940000101A87861F30100A870F17F61F3820092 +:10495000A870F17F490861F3C300A870A17861F3E2 +:104960000410A870607840092870A078C0F3400057 +:1049700068701B988078E870002068712871C0E723 +:10498000DAF80C000DF0DCFFC0BBDAF81C000DF00B +:10499000D7FF98BBDAF80C00A060DAF81C00E060E2 +:1049A00098F80100A17800F0010041EA4000A070F1 +:1049B00098F80210C0B2C1F30011891E0840A0701F +:1049C000002084F82000009906F1170002290BD07E +:1049D00001210AE098F80110A07801F00101FD2200 +:1049E00042EA41010840E2E7002104EB81018861CD +:1049F0000199701C022902D0012101E028E0002168 +:104A000004EB81018861A87800F00300012849D1F6 +:104A100098F8020000F00300012843D1B9F1010F1A +:104A200004D12A1D691D1B98FEF76AFD297998F8A3 +:104A3000040001408DF82C10687998F8052010408A +:104A40008DF8300001432DD050460DF079FF08B1AC +:104A50001020F0E60AF1100004F5D47104F17C0294 +:104A60000490B9F1020F3CD00090CDE90121002162 +:104A70000BAB5A462046FEF7BDFD0028E9D104F5F0 +:104A8000D67104F19402B9F1010F30D0049800906E +:104A9000CDE9012100210CAB5A462046FEF7AAFDC4 +:104AA0000028D6D1A078800740D4A87898F80210C2 +:104AB000C0F38000C1F38001084337D0297898F80B +:104AC000000014AAB9F1010F17D032F810204B00E2 +:104AD000DA4012F0030718D0012F1ED0022F12D196 +:104AE0001DE0CDF800A0CDE901210121C0E7CDF8FE +:104AF00000A0CDE901210121CDE732F811204300CA +:104B0000DA4002F00307032F07D0BBF1000F0DD0EE +:104B1000012906D0042904D008E00227F5E701277F +:104B2000F3E7012801D0042800D10427F07F40F0EA +:104B300001006BF34100F077A07881074FF003008C +:104B40000CD5A071BBF1000F15D100BF8DF85C0032 +:104B500017AA31461998FEF71CFD0CE00221022F1E +:104B600018D0012F18D0042F22D00020A071F07F80 +:104B700020F00100F07725213046FCF787FC0DA9D5 +:104B800004F590700BF08BFC10B1022800D0FFDF11 +:104B9000002050E6A171D9E7A1710D2104F1240094 +:104BA00019F01BFA607840F0020060700420CDE735 +:104BB0000120A071DFE72DE9F04387B091468846D8 +:104BC0000446FCF72BFC070006D03878272806D0CF +:104BD000082007B0BDE8F08343F20200F9E7B87F90 +:104BE00000F00300012809D0002120460AF059F8FE +:104BF000040006D104E0000060E301000121F4E7B5 +:104C0000FFDFA679012E08D0B8F1000F0FD048467B +:104C10000DF096FEB8B11020DBE7B9F1000F25D1F9 +:104C2000B8F1000F09D0B8F1010F1FD120E0022E1A +:104C300005D0032E05D0FFDF28E00C2526E0012556 +:104C400024E0022522E0B8F1020F03D0B8F1010FF1 +:104C50000AD00BE0032E09D100251022494604F1A9 +:104C6000210019F021F911E0022E01D00720B0E750 +:104C70000025102104F1210019F08DF95FEA0900E7 +:104C800004D0062107F040FBC4F8210060782521FC +:104C900040F0020060703846FCF7F8FB6078C1070E +:104CA00013D020F00100607002208DF8000004F1A4 +:104CB000210002908DF804506946FF300BF0EFFBA5 +:104CC000022804D018B1FFDF01E084F82050002052 +:104CD0007FE730B587B00D460446FCF79FFB88B1EF +:104CE000807F00F0030001280FD00021204609F04A +:104CF000D8FF04000ED028460DF022FE38B1102057 +:104D000007B030BD43F20200FAE70121EEE7607818 +:104D1000400701D40820F3E7294604F1410020228E +:104D2000054619F0C1F8607840F010006070010786 +:104D30000FD520F00800607013208DF80000694640 +:104D400004F5907001950BF0AAFB022801D000B188 +:104D5000FFDF0020D4E770B592B00D460646FCF7A1 +:104D60005DFB18B10178272940D103E043F202002E +:104D700012B070BD807F00F00300012806D0002132 +:104D8000304609F08EFF040003D101E00121F7E76E +:104D9000FFDFA079022829D1A078C00726D0002300 +:104DA00002220321304603F007FF08B30C208DF8E0 +:104DB00005000A9604A804F5907402220090069457 +:104DC000ADF80C2005AB0321304603F072FF00B1B3 +:104DD000FFDF04208DF808008DF81C500BA901A8F6 +:104DE0000BF07DFB00B1FFDF0020C1E70820BFE72B +:104DF0001120BDE770B5064686B014460D4608463C +:104E00000DF09EFD18B920460DF0BEFD10B110202A +:104E100006B070BDA6F57F40FF380ED03046FCF7D7 +:104E2000FDFA38B1417822464B08811C1846FCF740 +:104E300083FC07E043F20200EAE72046FDF796FA1A +:104E40000028E5D11021E01D0DF026FAE21D2946CB +:104E50006846FEF788FC102204F11700019919F04A +:104E600023F80020D4E72DE9F041044690B0154620 +:104E70008846002708460DF0AEFD18B928460DF00B +:104E8000AAFD18B1102010B0BDE8F0812046FCF753 +:104E9000C5FA060003D03078272818D102E043F283 +:104EA0000200F0E7B07F00F00300012806D00021E7 +:104EB000204609F0F6FE040003D101E00121F7E7E6 +:104EC000FFDF6078400702D5A078800701D4082072 +:104ED000D9E7B07F00F00300012818D0D4E9190108 +:104EE000407800B1B5B1487810B1B8F1000F11D0D9 +:104EF000C5B1EA1D02A8E168FEF735FC102205F1F4 +:104F00001700039918F0A4FF30B104270AE0D4E990 +:104F10001910E5E70720B6E71022E91D04F131007A +:104F200018F0C2FFB8F1000F06D0102208F10701F7 +:104F300004F1210018F0B8FF6078252140F002004C +:104F400060703046FCF7A2FA6078C10715D020F0F7 +:104F50000100607002208DF8200004F121000A9009 +:104F600010300B908DF8247008A9EF300BF097FAF1 +:104F7000022804D018B1FFDF01E084F8207000207F +:104F800081E7F8B515460E460746FCF747FA0400D8 +:104F900004D02078222804D00820F8BD43F2020073 +:104FA000F8BDA07F00F00300022802D043F2050004 +:104FB000F8BD30460DF0C4FC18B928460DF0C0FC11 +:104FC00008B11020F8BD00953288B31C2146384640 +:104FD000FEF7E1FB112814D00028F3D1297C4A0800 +:104FE000E17F62F30001E1772A7C62F34101E1771E +:104FF000297C890884F82010A17F21F08001A17705 +:10500000F8BDA17F0907FBD4D6F80200C4F836002A +:10501000D6F80600C4F83A003088A0861022294647 +:1050200004F1240018F040FF287C4108E07F61F380 +:105030008200E077297C61F3C300E077287C800858 +:1050400084F82100A07F40F00800A0770020D3E77B +:1050500070B596B00D46064613B1072016B070BD68 +:10506000FCF7DCF9040007D02078222802D3A07FC7 +:10507000400604D40820F1E743F20200EEE7C5B190 +:105080002D208DF80000ADF802601022294601A8FD +:1050900018F00AFF287C4108E07F61F30000E07708 +:1050A000297C61F34100E077287C800884F82000A7 +:1050B00004E02E208DF80000ADF802600BA96846D0 +:1050C00007F0D3F8A17F21F04001A177C6E770B5C2 +:1050D0000D46FCF7A3F9040005D028460DF054FC5A +:1050E00020B1102070BD43F2020070BD2946204659 +:1050F000FEF7F0FA002070BD05E000BF10F8012BAC +:105100000AB100207047491E89B2F7D201207047CA +:10511000F0B50078059F1E4614460D46012800D0C4 +:10512000FFDF0C2030803A203880002C08D0287A0D +:10513000052806D0287B012800D0FFDF17206081DA +:10514000F0BDA889FBE72DE9F04786B0144691F839 +:105150000C900E9A0D46B9F1010F0BD0102100787A +:105160002E8A8846052807D0062833D0FFDF06B0F0 +:10517000BDE8F0870221F2E7E8890C2100EB40004E +:1051800001EB4000188033201080002CEFD0E8891C +:10519000608100271AE00096688808F1020301AADE +:1051A000696900F092FE06EB0800801C07EB4701DE +:1051B00086B204EB4102BDF8040090810DF10601B6 +:1051C00040460E320BF02CFA7F1CBFB26089B84209 +:1051D000E1D8CCE734201080E889B9F1010F11D073 +:1051E000122148430E301880002CC0D0E88960811D +:1051F0004846B9F1010F00D00220207300270DF1BD +:10520000040A1FE00621ECE70096688808F1020313 +:1052100001AA696900F059FE06EB0800801C86B2FD +:10522000B9F1010F12D007EBC70004EB4000BDF845 +:105230000410C18110220AF10201103018F034FE6E +:105240007F1CBFB26089B842DED890E707EB470108 +:1052500004EB4102BDF80400D0810AF1020140468E +:1052600010320BF0DDF9EBE72DE9F0470E4688B080 +:1052700090F800C096F80C80378AF5890C201099B8 +:1052800002F10C044FF0000ABCF1030F08D0BCF18E +:10529000040F3ED0BCF1070F7DD0FFDF08B067E7F9 +:1052A00005EB850C00EB4C00188031200880002AAB +:1052B000F4D0A8F1060000F0FF09558125E018217F +:1052C00001A818F08AFE00977088434601AA716908 +:1052D00000F0FBFDBDF804002080BDF80600E08072 +:1052E000BDF808002081A21C0DF10A0148460BF010 +:1052F00097F9B9F1000F00D018B184F804A0A4F810 +:1053000002A007EB080087B20A346D1EADB2D6D2F8 +:10531000C4E705EB850C00EB4C00188032200880B8 +:10532000002ABBD0A8F1050000F0FF09558137E045 +:1053300000977088434601AA716900F0C6FD9DF888 +:105340000600BDF80410E1802179420860F30001F5 +:1053500062F34101820862F38201C20862F3C30171 +:10536000020962F30411420962F34511820962F3F2 +:1053700086112171C0096071BDF8070020812246A5 +:105380000DF1090148460BF04BF918B184F802A061 +:10539000A4F800A000E007E007EB080087B20A3499 +:1053A0006D1EADB2C4D279E7A8F1020084B205FB4C +:1053B00008F000F10E0CA3F800C035230B80002A82 +:1053C000A6D055819481009783B270880E3271699E +:1053D00000F07BFD62E72DE9F84F1E460A9D0C4662 +:1053E00081462AB1607A00F58070D080E089108112 +:1053F00099F800000C274FF000084FF00E0A0D2816 +:1054000073D2DFE800F09E070E1C28303846556A3C +:1054100073737300214648460095FFF779FEBDE897 +:10542000F88F207B9146082802D0032800D0FFDFA8 +:10543000378030200AE000BFA9F80A80EFE7207B20 +:105440009146042800D0FFDF378031202880B9F151 +:10545000000FF1D1E3E7207B9146042800D0FFDF65 +:1054600037803220F2E7207B9146022800D0FFDF10 +:1054700037803320EAE7207B1746022800D0FFDF81 +:105480003420A6F800A02880002FC8D0A7F80A80F2 +:10549000C5E7207B1746042800D0FFDF3520A6F89B +:1054A00000A02880002FBAD04046A7F80A8012E05A +:1054B000207B1746052802D0062800D0FFDF1020E9 +:1054C000308036202880002FA9D0E0897881A7F885 +:1054D0000E80B9F80200B881A1E7207B9146072829 +:1054E00000D0FFDF37803720B0E72AE04FF012000E +:1054F00018804FF038001700288090D0E08978811C +:10550000A7F80E80A7F8108099F800000A2805D0A7 +:105510000B2809D00C280DD0FFDF80E7207B0C285A +:1055200000D0FFDF01200AE0207B0D2800D0FFDF44 +:10553000042004E0207B0E2800D0FFDF0520387314 +:105540006DE7FFDF6BE770B50C460546FBF766FFBE +:1055500020B10078222804D2082070BD43F2020056 +:1055600070BD0521284609F09CFB206008B1002091 +:1055700070BD032070BDFFB585B00746089814467E +:105580000D46022628B908A93846FFF7DCFF002897 +:1055900040D108980121801D04F074FDADF8080089 +:1055A00002464DB100233146384603F005FB98B35F +:1055B0000898007880BB05E02078092820D00F28C3 +:1055C0002BD0FFDF03A8009004ABBDF808203146C4 +:1055D000384603F06EFB00281CD1089802A9801DF4 +:1055E000C4E90107DDE90332204604F058FD40B369 +:1055F000072824D2DFE800F01A182323211C1E00FC +:10560000072600233146384603F0D6FA0028D9D1C0 +:1056100043F2040009B0F0BD06E0002331463846ED +:1056200003F0CAFA0028CDD11120F3E70020F1E7FA +:105630000820EFE743F20300ECE70720EAE7032046 +:10564000E8E703980090BDF8083004223146384658 +:1056500003F0A3FC0028DDD1002DDBD008990D70EC +:10566000D8E710B588B01C46AAB104238DF80030E5 +:105670001388ADF80C305288ADF80E208A788DF87A +:1056800012200988ADF8101000236A462146FFF762 +:1056900072FF08B010BD1020FBE770B50D46052164 +:1056A00009F0FFFA040000D1FFDF2946A01DBDE884 +:1056B000704004F0D0BC70B596B00C460646FFF7BB +:1056C000ECFF05462146304601F036FE012130460A +:1056D00001F050FE002D25D13046FBF79FFE05005E +:1056E00000D1FFDF95F822001B281BD9172C19D9F0 +:1056F0003A208DF80000ADF8026095F82200211DD7 +:10570000884201D9241D00E00446ADF8044040F66B +:105710004800ADF806000BA9684606F0A6FD002873 +:1057200000D0FFDF16B070BD2DE9F84305460078C4 +:1057300000260C4612287BD2DFE800F0896464431F +:105740003B663737133737370937373737372879D5 +:10575000001FC0B2022801D010281FD104BBFFDFF8 +:105760001EE004B9FFDF6088052109F09AFA00788D +:10577000032805D004280AD0072811D0FFDF0DE048 +:105780002879801FC0B202280AD048B106E02879E3 +:10579000401FC0B2022803D0102801D0072657E0CE +:1057A000607840F00800607052E0002CF8D1FFDF14 +:1057B000F6E704B9FFDF28790128F1D160881721C5 +:1057C00042E0A888052180B2804609F06AFA0746BF +:1057D00004B1FFDF07B9FFDF4146B81D04F015FC37 +:1057E00002F091FC040008D0607840F0080060707E +:1057F000A4F8028002F067FC2BE013214046FDF77D +:1058000031F937E0FFDF23E004B9FFDF60880521CD +:1058100009F047FA070000D1FFDF6946B81D04F020 +:10582000FBFB00B1FFDFA988172902D2172201E094 +:105830000DE00A46BDF80000824201D9014602E0AF +:10584000172900D217216088FFF735FFA8E7FFDF8F +:1058500084B1607800070DD52078182220F00F0061 +:10586000C01C20F0F00090302070294604F10800A0 +:1058700018F05FFB3046BDE8F88300200870881DF3 +:1058800004F0B7BB0A460146901D04F0C4BB70B5D6 +:105890000546052109F005FA040000D1FFDF29467D +:1058A000A01DBDE8704004F0B0BB2DE9F74F90B0EB +:1058B0004FF0000AADF830A0ADF804A047880C46C0 +:1058C00005460521384609F0ECF9060000D1FFDF56 +:1058D00024B1A780A4F806A0A4F808A0297A04F1AE +:1058E00010003827C91E4FF00C0B4FF001084FF085 +:1058F000120902900F297DD2DFE801F0F1F0EF7F6D +:1059000008D2888D9F3DDBF2EDB6B60030780228D4 +:1059100000D0FFDFA8890BEBC001ADF804103021E7 +:10592000ADF83010002C25D06081B5F80E8000272E +:105930001DE004EBC709317989F80E107188A9F8C8 +:105940000C10CDF800806888042305AA296900F0AE +:10595000BCFABDF81410A9F8101008F10400BDF845 +:1059600016107F1C1FFA80F8A9F81210BFB26089C8 +:10597000B842DED808E13078022800D0FFDFE9899C +:105980000BEBC100ADF804003020ADF8300095F805 +:105990000CB0002CABF10400C0B20F90EAD06181D2 +:1059A000B5F81090002722E0CDF8009068885B469B +:1059B00003AA696900F089FA09EB0B001FFA80F964 +:1059C00004EBC70808F10C0204A90F980AF028FE9E +:1059D00018B188F80EA0A8F80CA0BDF80C10A8F813 +:1059E0001010BDF80E107F1CA8F81210BFB260890D +:1059F000B84200E0C7E0D7D8C6E00CA8009001ABE1 +:105A0000224629463046FFF79EFBBDE03078082845 +:105A100005D0FFDF03E03078082800D0FFDFE889F9 +:105A20001030ADF804003620ADF83000002C3FD027 +:105A3000A98961817188A18127E03078092800D087 +:105A4000FFDFA88900F10C01ADF804103721ADF893 +:105A50003010002C2CD06081E8890090AB896888D8 +:105A600004F10C02296955E0E8893921103080B22F +:105A7000ADF80400ADF83010002C72D0A989618116 +:105A8000287A10280AD002212173E989E181288A25 +:105A90000090EB8968886969029A3BE00121F3E78D +:105AA0000CA8009001AB224629463046FFF7DCFBEC +:105AB0006AE030780A2800D0FFDFADF80490ADF836 +:105AC00030704CB3A9896181A4F810A0A4F80EA08D +:105AD00084F80C8058E020E002E030E038E041E05B +:105AE00030780B2800D0FFDF288AADF830701230F4 +:105AF000ADF8040084B104212173A9896181E98989 +:105B0000E181298A2182688A00902B8A688804F1C1 +:105B10001202696900F0D9F936E030780C2800D01B +:105B2000FFDFADF80490ADF8307044B30521217368 +:105B3000A4F80AA0A4F80EA0A4F810A024E00CA8D1 +:105B4000009001AB224629463046FFF7E1FA1BE000 +:105B50000CA8009001AB224629463046FFF73BFCDB +:105B600012E00DE00B203B21ADF80400ADF8301041 +:105B700034B1A4F80680A4F808A084F80AA003E0D1 +:105B80001299088014E0FFDF1299BDF80400088024 +:105B900074B1BDF830002080BDF804006080287A20 +:105BA000032805D0102803D0112801D086F800A0C2 +:105BB00013B00020BDE8F08F2DE9FC4156880F4658 +:105BC000804615460521304609F06BF8040000D1E7 +:105BD000FFDFA41DCDE900642B463A4640466968C4 +:105BE00004F011FCBDE8FC8170B50D46052109F0FB +:105BF00058F8040000D1FFDF2946A01DBDE8704021 +:105C000004F015BA70B50D46052109F04AF80400F4 +:105C100000D1FFDF2946A01DBDE8704004F03ABA6C +:105C20002DE9F0438DB00D461446814607A9FFF7D4 +:105C30008AFC002814D14FF6FF7601274FF4205834 +:105C40008CB103208DF800001020ADF8140008A8D6 +:105C5000069008AA204605A90AF001FD78B10720A0 +:105C60000DB0BDE8F0830820ADF80C508DF812702F +:105C70008DF80000ADF80E60ADF810800CE00798CC +:105C8000A1780171218841808DF81270ADF80C5017 +:105C9000ADF81080ADF80E606A4602214846079BB9 +:105CA000FFF769FCDCE708B501228DF8022042F617 +:105CB0000202ADF800200A4603236946FFF7D1FC33 +:105CC00008BD08B501228DF8022042F60302ADF8A6 +:105CD00000200A4604236946FFF7C3FC08BD00B54F +:105CE00087B079B102228DF800200A88ADF80C2027 +:105CF0004988ADF80E1000236A460521FFF73BFCEA +:105D000007B000BD1020FBE709B10723A9E4072075 +:105D1000704770B588B00D461446064607A9FFF7D0 +:105D200012FC00280ED17CB10620ADF80C508DF885 +:105D30000000ADF80E40079B6A4608215C803046A3 +:105D4000FFF719FC08B070BD05208DF80000ADF814 +:105D50000C50F0E700B587B059B107238DF800303B +:105D6000ADF80C20049100236A460921FFF703FCDB +:105D7000C6E71020C4E770B588B00C46064600257B +:105D800007A9FFF7E0FB0028DCD107980121801D5F +:105D900004F078F99CB12178062921D2DFE801F0DE +:105DA000200505160318801E80B2C01EE28880B24E +:105DB0000AB1A3681BB1824203D90C20C2E71020AC +:105DC000C0E7042904D0A08850B901E00620B9E753 +:105DD000012913D0022905D004291CD005292AD075 +:105DE0000720AFE709208DF800006088ADF80C00AF +:105DF000E088ADF80E00A068049023E00C208DF838 +:105E000000006088ADF80C00E088ADF80E00A068D6 +:105E10000A25049016E00D208DF800006088ADF88A +:105E20000C00A088ADF80E00E088ADF81000A06866 +:105E30000B25059006E00E208DF8000060788DF8A7 +:105E40000C000C256A4629463046079BFFF793FB5A +:105E500078E700B587B00F228DF80020ADF80C1060 +:105E600000236A461946FFF786FB49E700B587B06D +:105E700071B102228DF800200A88ADF80C20498803 +:105E8000ADF80E1000236A460621FFF774FB37E7D2 +:105E9000102035E770B588B0064601200D46ADF8F4 +:105EA0000C108DF80000014600236A463046FFF7CB +:105EB00062FB040008D12946304601F02EFA002189 +:105EC000304601F057FA20463CE7F8B51C46154627 +:105ED0000E46069F09F048F82346FF1DBCB2314626 +:105EE0002A46009408F060FCF8BD000018B18178E3 +:105EF000012938D101E010207047018842F60112D3 +:105F0000881A914231D018DC42F60102A1EB02005E +:105F100091422AD00CDC41B3B1F5C05F25D06FF4BB +:105F2000C050081821D0A0F57060FF381BD11CE0CC +:105F300001281AD002280AD117E0B0F5807F14D0CA +:105F400008DC012811D002280FD003280DD0FF282B +:105F500009D10AE0B0F5817F07D0A0F58070033841 +:105F600003D0012801D0002070470F2070470B2874 +:105F700026D008DC1BD2DFE800F01C2025251A25DE +:105F8000292325271E0011281CD008DC0C2817D037 +:105F90000D281DD00F2815D0102808D110E0822818 +:105FA00009D0842810D0852810D0872812D003204B +:105FB0007047002070470520704743F20300704788 +:105FC000072070470F207047042070470620704755 +:105FD0000C2070474FF45050704708280DD2DFE86E +:105FE00000F00406040C0C080C0A00207047112075 +:105FF000704707207047082070470320704738B566 +:106000000C46050041D06946FEF7D4FA002819D1A4 +:106010009DF80010607861F3020060706946681CAA +:10602000FEF7C8FA00280DD19DF80010607861F3E2 +:10603000C5006070A978C1F34101012903D002298C +:1060400005D0072038BD217821F0200102E0217819 +:1060500041F020012170410704D0A978C90861F3FB +:1060600086106070607810F0380F07D0A9780909A1 +:1060700061F3C710607010F0380F02D160784006ED +:1060800003D5207840F040002070002038BD70B566 +:1060900004460020088015466068FFF7B0FF00281E +:1060A00016D12089A189884211D860688078C007FC +:1060B0000AD0B1F5007F0AD840F20120B1FBF0F21E +:1060C00000FB1210288007E0B1F5FF7F01D90C20FA +:1060D00070BD01F201212980002070BD10B5047847 +:1060E000137864F3000313700478640864F34103C5 +:1060F00013700478A40864F3820313700478E4082E +:1061000064F3C30313700478240964F30413137055 +:106110000478640964F3451313700078800960F310 +:106120008613137031B10878C10701D1800701D5FA +:10613000012000E0002060F3C713137010BD427807 +:10614000530702D002F0070306E012F0380F02D026 +:10615000C2F3C20300E001234A7863F302024A70EB +:10616000407810F0380F02D0C0F3C20005E04307BA +:1061700002D000F0070000E0012060F3C5024A7081 +:1061800070472DE9F04796B00D00804613D0B8F166 +:10619000000F14D01221284617F0FDFE06AAFF2199 +:1061A000012005F09DFE0024264637464FF4205975 +:1061B0006FF4205A78E0102016B0BDE8F087072071 +:1061C000FAE700BF9DF8220001280AD1BDF820009F +:1061D00048450BD010EB0A000AD001280CD0022849 +:1061E0000CD0042C0ED0052C0FD10DE0012400E0C2 +:1061F0000224BDF81E6008E0032406E00424BDF874 +:106200001E7002E0052400E00624BDF81E10414582 +:106210004AD12C74D6B30DF140094FF0000811AAF1 +:10622000CDF81490CDF80880CDE903824FF0070A2D +:10623000CDE900A810234246FF21304605F0FEFEBE +:1062400010BBBDF840002A46C0B211A90AF0E8F917 +:10625000D0B9AE81D7B103A90BAE4046CDF80880C6 +:1062600081E84102CDE900A813230022FF2138462E +:1062700005F0E4FE40B9BDF84000F11CC01EC0B2FC +:106280002A1D0AF0CDF910B1032095E70AE0BDF808 +:106290002D00E881062C05D19DF82200A872BDF8DA +:1062A00020002881002087E706A805F021FE0028AD +:1062B00088D0FFF75CFE7FE72DE9F8439846DDE9DB +:1062C000087614460D00814600D1FFDF0CB1012194 +:1062D00000E0002105F1080004F0DEFC30800246F9 +:1062E00000232146484602F067FC40B100973288FF +:1062F00043462146484602F0DCFCBDE8F883072C03 +:1063000001D01120F9E743F20400F6E72DE9F0434C +:106310008DB00E46DDE9149805461C46174614213B +:1063200006A817F05AFE012002218DF81C108DF8E6 +:1063300018008DF81D80ADF8207064B1A178C907F0 +:1063400009D08DF82200E088ADF82600A088ADF8CD +:106350002400A0680A9001F0D6FE040023D06580D6 +:106360000BA904A8CDE900010CAB00223146284658 +:10637000FFF7A2FF002813D1049808368DE87100BA +:106380000BAA494606A80C9B05F057F8064660780C +:10639000000701D501F097FE5EB13046FFF71DFE04 +:1063A0000DB0BDE8F08313212846FCF75BFB03200A +:1063B000F6E704980090BDF82C300422002128460E +:1063C00002F0EBFDECE7F0B58DB000240746099430 +:1063D00006A80A94CDE904400725CDE900540794A6 +:1063E00008940E460294039410232246384605F082 +:1063F00025FE80B90BA8059007A90294CDE90341B9 +:10640000CDE90054BDF8183000223146384605F079 +:10641000F8FB002801D0FFF7AAFD0DB0F0BD05F094 +:106420009DBA2DE9FC470546002600780C46B0468B +:106430000D2871D2DFE800F0B2070EAA30C853531E +:106440007188A68C970004B1FFDFA88880B201F0A4 +:10645000CCFFA4E0A888042180B2814608F021FC8A +:10646000074604B1FFDF07B9FFDF494607F108001F +:1064700004F0ABFB01F047FE040008D0607840F068 +:1064800008006070A4F8029001F01DFE88E013215E +:106490004846FCF7E7FA97E004B9FFDF608804217B +:1064A00008F0FFFB070000D1FFDFE888ADF800002F +:1064B000002038809DF80000010704D5C00602D5F1 +:1064C000A888388005E09DF80100400667D5A888B7 +:1064D00078806078022640F0080060705FE0E8880D +:1064E000ADF8000004B9FFDF9DF80100000604D5F7 +:1064F0002878072806D0062828D0607840F00800C1 +:1065000060704CE06088042108F0CBFB060000D1ED +:10651000FFDFA888708019E040E004B9FFDF6088E1 +:10652000042108F0BEFB070000D1FFDF07F10800DF +:1065300005F04CFA90F0010F02D1E87900062ED553 +:1065400060880226B880D8E704B9FFDF0226D4E7C6 +:1065500004B9FFDF022661880122204601F089FF8D +:106560004FF00108C9E7A88987B204B1FFDF686866 +:1065700000902889ADF8040001226946384601F0F0 +:1065800093FF0CE0002CB8D1FFDFB6E704B9FFDFC2 +:10659000022660880021FFF735FBAEE7FFDF9CB1E4 +:1065A0006078000710D5B8F1000F0DD120781422C3 +:1065B00020F00F00001D20F0F000803020702946F0 +:1065C00004F1080017F0B5FC3046BDE8FC873EB585 +:1065D0000C0008D06B4601AA002105F0AEFD20B1E9 +:1065E000FFF7C5FC3EBD10203EBD00202080A070FE +:1065F0009DF8050002A900F00700FDF7F7FF50B96C +:106600009DF8080020709DF8050002A9C0F3C200A3 +:10661000FDF7ECFF08B103203EBD9DF80800607057 +:106620009DF80500C109A07861F30410A0709DF8E1 +:106630000510890961F3C300A0709DF80410890654 +:1066400001D5022100E0012161F342009DF8001014 +:1066500061F30000A07000203EBD70B514460646F0 +:106660000D4651EA040005D075B108460CF0AAF9B0 +:1066700078B901E0072070BD2946304605F0B8FD25 +:1066800010B1BDE8704072E454B120460CF09AF9A4 +:1066900008B1102070BD21463046BDE8704096E735 +:1066A000002070BD2DE9FE4F05460C46007A0A31E8 +:1066B000009104F108010291904600270C31821EDE +:1066C0003E464FF0020B4FF0010A0191092A75D2A4 +:1066D000DFE802F0F3F20574252577B6F400688848 +:1066E000042108F0DEFA060000D1FFDF308810B187 +:1066F00052270726E9E051271026002C7ED0688813 +:10670000A08084F806A0A88900220099FFF7A5FFC1 +:10671000002874D1A8892081288AE081F8E0B5F8A2 +:106720001290072825D1E87B000622D5512709F1D0 +:10673000140086B2002CE1D0A88900220099FFF74E +:106740008CFF00287AD16888A08084F806B0A889D8 +:10675000208184F80EA0288A2082A4F81290A88AAA +:10676000009068884B46A969DDF8042001F0C1FA61 +:10677000CEE0502709F1120086B2002C3ED0A88945 +:1067800000220299FFF769FF002857D16888A0808E +:10679000A889E080287A072811D002202073288A4F +:1067A000E081E87B4B46C0096073A4F81090A88A8A +:1067B0000090688804F11202A969D7E7A7E00120D8 +:1067C000ECE76888042108F06CFAB5F812A05FEADB +:1067D000000900D1FFDF09F1080005F0F7F890F09B +:1067E000010F02D1E87B000627D50AF114005127DA +:1067F00086B2002C7FD06888A08001E070E01DE0A8 +:10680000A88900220099FFF728FF002816D184F8F4 +:1068100006B0A88920810420A073288A2082A4F8C9 +:1068200012A0A88A009068885346A969019A01F0CD +:1068300060FAA989A9F802106AE00320BDE8FE8F7A +:106840006888FAF7EBFD82466888042108F029FA87 +:106850008146BAF1000F00D1FFDFB9F1000F00D17E +:10686000FFDFB9F80400A0F57F41FF3902D05127BE +:10687000142601E05027122694B36888A080502F78 +:1068800006D084F806B0287B029901F042FA3FE076 +:10689000287BA11D01F03DFA00219AF82300CDE9E3 +:1068A00000010B46B9F8022068884946FFF72EFD23 +:1068B0000028C3D12CE001E013E01FE0FE49A889C5 +:1068C000C988814205D1542706264CB16888A0802A +:1068D0001EE053270CE06888A080A889E08017E0BC +:1068E00009E06888042108F0DCF900B9FFDF5527CA +:1068F0000826002CEFD1A8F800600EE056270726E6 +:10690000002CF8D0A889A0800020A07100E0FFDF53 +:10691000A8F800600CB12780668000208EE7E64969 +:1069200000200870704730B587B00C4608F082F937 +:106930000546FF2800D1FFDF0020208060804FF651 +:10694000FF70A080294604F1080004F025F902AA8E +:106950002946012005F0C4FA1AE000BF9DF80B009B +:10696000000715D5BDF80E002946FFF72CFD9DF850 +:106970000B00FF2340F010008DF80B00BDF80B005A +:10698000ADF80400BDF80E002946019A05F0FEFBA3 +:1069900002A805F0ADFA0028E0D007B030BD0A46E5 +:1069A000014602F1080004F016B970B5054604214D +:1069B00008F077F9040000D1FFDF294604F1080050 +:1069C000BDE8704004F001B9F0B58FB00C46074641 +:1069D000FAF724FD060005D03078222805D20820D9 +:1069E0000FB0F0BD43F20200FAE70CB1A08870B11D +:1069F00001208DF81C0003208DF8200000208DF868 +:106A0000210034B1A088ADF82800206803E00920F7 +:106A1000E6E7ADF82800099001F075FB050007D006 +:106A20006F800421384608F03CF9040007D105E0E6 +:106A300013213846FCF716F80320D1E7FFDF06A93B +:106A400004A8CDE900010CAB002221463846FFF72F +:106A500033FC0028C4D104F10800049903908DE8A8 +:106A6000A20096F8231006AA07A80C9B04F0E5FCE8 +:106A700006466878000701D501F025FB1EB13046B7 +:106A8000FFF7ABFAACE704980090BDF81830042289 +:106A90000021384602F081FA4FF6FF71A1809FE78E +:106AA0002DE9FF4F87B09846DDE9159793467E881C +:106AB000DDF850A03046FAF7B1FC05460421304617 +:106AC00008F0EFF8044605B9FFDF04B9FFDF08342A +:106AD000CDE90464CDE90297CDE9008ADDE907023A +:106AE00095F823105B4604F0E7F80BB0BDE8F08F93 +:106AF0002DE9F04F9BB004464FF000086E48ADF80A +:106B00005880ADF83080ADF85480A0F80480ADF81E +:106B10001880ADF81C80ADF82480ADF82080007896 +:106B200016460D464746012808D0022806D00328FD +:106B300004D0042802D008201BB0D7E720460BF071 +:106B4000FFFED0BB28460BF0FBFEB0BB60680BF02D +:106B500042FF90BB606848B160892189884202D8B1 +:106B6000B1F5007F01D90C20E6E780460BAA07A902 +:106B70002846FFF78CFA0028DED168688078C0F3D9 +:106B80004100022808D19DF81D0010F0380F03D0F5 +:106B900028690BF017FF80B906A92069FFF72FFAC3 +:106BA0000028C9D1206950B1607880079DF819008C +:106BB00000F0380002D5E8B301E011E0D0BB9DF849 +:106BC000180080060ED59DF8190010F0380F03D07C +:106BD00060680BF0F7FE18B960680BF0FCFE08B1B6 +:106BE0001020A9E708A96069FFF709FA0028A3D1D6 +:106BF000606940B19DF8210000F0070101293BD1F7 +:106C000010F0380F38D009A9A069FFF7F8F900286B +:106C100092D19DF8200080062ED49DF82400800695 +:106C20002AD4A06950B19DF8250000F00701012980 +:106C300022D100E020E010F0380F1DD0E06818B13C +:106C40000078C8B11C2817D20FAA611C2046FFF794 +:106C500045FA0120B94660F30F27BA4607468DF87A +:106C6000520042F60300ADF850000DF13F0218A9A2 +:106C7000286809F0F4FC08B107205DE79DF8600082 +:106C800017A9CDF80090C01CCDE9019100F0FF0BD1 +:106C900000230BF20122514614A805F066F8E8BB68 +:106CA000BDF85C000E9004492A892869091D0092EC +:106CB000CDE901016B8901E010030020BDF82C2013 +:106CC0002868079905F051F801007DD120784FF030 +:106CD000020AC10601D480062BD5ADF80C9060697C +:106CE00050B908A907A8FFF72AFA9DF8210020F05B +:106CF0000700401C8DF821009DF820008DF852708F +:106D000040F0C8008DF8200042F60210ADF85000A7 +:106D10000CA903AA0023CDF800A000E021E0CDE9F2 +:106D2000012140F2032214A8089905F01EF8010081 +:106D30004AD1FE484D465B468088ADF83D000FA81D +:106D4000CDF80890CDE90390CDF814904FF00709E5 +:106D5000CDE900950022FF21BDF85C0004F051FF51 +:106D600010B1FFF704F9E7E69DF83C00000625D5D1 +:106D70002946012060F30F218DF852704FF4245002 +:106D8000ADF85000ADF8105062789DF81000002367 +:106D900062F300008DF810006278CDF800A0520870 +:106DA00062F341008DF8100004AACDE9012540F2FC +:106DB000032214A804F0D9FF010005D1606850B384 +:106DC000206970B906A900E07EE007A8FFF7B7F9CF +:106DD0006078800705D49DF8190020F038008DF800 +:106DE00019008DF8527042F60110ADF8500020895C +:106DF00040F20121B0FBF1F201FB1202606815AB19 +:106E0000CDF80080CDE90103002314A8069904F011 +:106E1000ACFF010058D12078C00729D0ADF80C5044 +:106E2000A06950B909A907A8FFF789F99DF82500BD +:106E300020F00700401C8DF825009DF824008DF8F7 +:106E4000527040F040008DF8240042F60310ADF877 +:106E5000500016A903AACDF800A0CDE90121002316 +:106E600040F2032214A8099904F07FFF01002BD1FE +:106E7000E06868B32946012060F30F218DF8527055 +:106E800042F60410ADF85000E068002302788DF857 +:106E9000102040788DF81100E06804AA4088ADF811 +:106EA0001200E06800798DF81400E068C088ADF841 +:106EB0001500CDF80090CDE901254FF4027214A819 +:106EC00004F053FF010003D00E9800F035FF33E6C5 +:106ED00096480321017056B180883080BDF8540077 +:106EE0007080BDF83000B080BDF85800F080002000 +:106EF00022E670B501258AB016460B46012802D05D +:106F0000022816D104E08DF80E504FF4205003E013 +:106F10008DF80E5042F60100ADF80C0063B100246C +:106F2000601C60F30F2404AA08A9184609F097FB17 +:106F300020B107200AB070BD1020FBE704A99DF81E +:106F400020207A48CDE90021801C029000232146B0 +:106F500003A802F2012204F008FF10B1FFF707F8BE +:106F6000E8E772480EB14188318005700020E1E702 +:106F700070B594B0044601268DF83E6041F60100DC +:106F8000ADF83C0012AA0FA93046FFF7B2FF002867 +:106F900048D12078654CC0074FF0000544D01C2133 +:106FA00002A817F01AF89DF808008DF83E6040F02E +:106FB00020008DF8080042F60520ADF83C000E9543 +:106FC0009DF83A00119520F00600801C8DF83A00DB +:106FD0009DF838006A4620F0FF008DF838009DF8D3 +:106FE000390009A920F0FF008DF839000420ADF820 +:106FF0002C00ADF830000EA80A9011A80D900FA833 +:107000000990ADF82E5002A8FFF772FD002809D1B3 +:10701000BDF80000E080BDF804002081401C6081C4 +:107020002570002014B070BDE5802581BDF84800B2 +:10703000F4E72DE9F74F3D49A2B04FF000080A7878 +:10704000012A04D0022A02D0082025B04EE54A8841 +:10705000824201D00620F8E723988A46824201D175 +:107060000720F2E701208DF8760042F6020B00249B +:10707000ADF874B0ADF84C004FF6FF702146621CBD +:1070800062F30F21ADF84E00ADF8560007918DF870 +:107090007A40FF20ADF878401EA98DF85400149175 +:1070A00013A804F049FF00252E462F460DF12809AC +:1070B0000EAB4FF6FF72072113A804F040FF78B122 +:1070C00082285FD1A5B39EB39DF86600ADF86C50E1 +:1070D0008DF81840ADF86E601BAC012866D06DE0ED +:1070E0009DF83E002FB301285BD1BDF83C105945F7 +:1070F00021D11AA8CDE904900720CDE9000402941B +:107100000394BDF83A0010230022FF2104F096FFFB +:10711000C0BBBDF86800042801D006284CD1BDF8DA +:107120002810239881423CD10F208EE710030020C5 +:107130003AE0012835D1BDF83C00B0F5205F03D01E +:1071400042F6010188422CD1BAF80210BDF83A008B +:10715000814201D1012700E0002705B19EB12399AA +:1071600088421ED11AA9CDE904910721CDE9001466 +:1071700005460294039410230022FF2104F05EFFD1 +:1071800000B902E02DE046460BE0BDF86800022899 +:1071900001D0102810D1C0B219AA0AA909F040FAEA +:1071A00050B9BDF83A8083E705204EE706A919A833 +:1071B000221D09F054FA08B1032046E79DF8180093 +:1071C0000023001DC2B28DF8182024980092CDE94A +:1071D00001401DA8079904F0C8FD10B902228AF8E1 +:1071E0000020FEF7C4FE30E710B50B46401E88B005 +:1071F00084B206AA00211846FEF770FF07A906AA66 +:10720000CDE9042100200721CDE900100290039070 +:1072100002460123FF21204604F0F3FC0446BDF89A +:107220001C00012800D0FFDF2046FEF7A0FE08B0BA +:1072300010BDF0B5F84F044687B038780E460328E5 +:1072400004D0042802D0082007B0F0BD04AA03A986 +:107250002046FEF71CFF0500F6D160688078C0F379 +:10726000410002280AD19DF80D0010F0380F05D01A +:1072700020690BF0A7FB08B11020E5E7208905AADB +:1072800021698DE807006389BDF810202068039903 +:1072900004F06BFD10B1FEF76AFED5E716B1BDF83C +:1072A00014003080042038702846CDE738B50C0033 +:1072B000054608D000236A46FF2104F03EFF20B1B6 +:1072C000FEF755FE38BD102038BD69462046FEF752 +:1072D00096FE0028F8D1A078FF2100F0010328468F +:1072E000009A04F053FFEBE730B587B01446002254 +:1072F0000DF10C0C06AD02928CE82C000723CDE9B1 +:1073000000320A462388FF2104F07BFCBDF81810E8 +:107310002180FEF72CFE07B030BD70B50D4604216C +:1073200007F0BFFC040000D1FFDF294604F108008C +:10733000BDE8704003F070BC70B50D46042107F045 +:10734000B0FC040000D1FFDF294604F10800BDE8CD +:10735000704003F084BC70B50D46042107F0A1FC19 +:10736000040000D1FFDF294604F10800BDE87040A9 +:1073700003F092BC70B50D46042107F092FC0400A6 +:1073800000D1FFDF294604F10800BDE8704003F09A +:107390008DBC0121FEF736BC2DE9F04196B04FF0CF +:1073A00000050C008046ADF818501CD0E06828B1EC +:1073B000A068C0B10188ADF8181005804046FAF702 +:1073C0002DF8070011D03878222861D3404607F005 +:1073D00031FC0146A07801280AD0022808D00720F5 +:1073E00016B0BDE8F0811020FAE743F20200F7E79B +:1073F000208830B1401C80B207AA04F071FD50BB58 +:1074000002E043F20300EBE707A804F071FD9DF8EA +:1074100026204FF45051012A09D1BDF82420A2F5AD +:107420002453023B03D1822801D0A0B901E00846D1 +:10743000D6E7E068B0B106A9CDE904010720CDE99F +:10744000000502950395A2882088BDF81830FF2119 +:1074500004F0D7FB10B1FEF78AFDC1E7A168BDF8C3 +:10746000180008809DF81F00C00602D543F20140B5 +:10747000B6E70B9818B1BDF82800022801D0032008 +:10748000AEE70B98A1780078012903D0800706D4D5 +:107490000820A5E7C007FBD00726022001E001264F +:1074A00003208DF83C009DF8200010F0380F00D12B +:1074B000FFDF9DF820005949C0F3C200084497F847 +:1074C000231010F8010C884201D90F2088E720888A +:1074D000ADF840000421404607F0E3FB040000D172 +:1074E000FFDF0DA90CA8CDE900010EAB3246214605 +:1074F0004046FEF7E1FE002885D108340C9903943C +:107500008DE822010DAA07210FA80E9B03F095FF1D +:1075100010B1FEF762FD63E70C980090BDF83430BF +:1075200004223146404601F038FD59E770B5064661 +:1075300015460C460846FEF7D9FC002805D12A4618 +:1075400021463046BDE87040D3E470BD71E570B5AA +:107550001E4614460D0009D044B1616831B138B1FE +:107560002D494988814203D0072070BD102070BD8D +:107570002068FEF7BBFC0028F9D132462146284698 +:10758000BDE87040FFF7B4BA70B515460C0006D0E0 +:1075900038B121498988814203D0072070BD10206D +:1075A00070BD2068FEF7A2FC0028F9D129462046CC +:1075B000BDE870403DE670B5054686B00E461446FF +:1075C00010460BF0E1F930BB60680BF004FA10BB19 +:1075D000A5F57F40FF3803D02846F9F71FFFA0B17B +:1075E000284607F027FB054630466946FEF7C9FDE9 +:1075F00000280CD19DF810100F2008293FD2DFE899 +:1076000001F008060606060F0F0843F2020006B056 +:1076100070BD0320FBE743E0100300206AE3010094 +:107620009DF80210012908D1BDF80010B1F5C05F26 +:10763000EDD06FF4C052D142E9D09DF80610012977 +:107640000BD1BDF80410A1F52851062905D2DFE8B9 +:1076500001F0030304030303D9E79DF80A1001298D +:107660000ED1BDF80810B1F5245FD0D0A1F524519A +:107670000239CCD00129CAD0022901D1C7E7FFDFE6 +:10768000606878B9002305AA2946304604F055FD04 +:1076900010B1FEF76CFCBAE79DF81400800601D427 +:1076A0001020B4E76188224630466368FFF71CFE6D +:1076B000ADE72DE9F043044689B0894615461046EA +:1076C0000BF062F918B1102009B0BDE8F083204634 +:1076D00007F0B0FA4FF6FF770646BC4201D0FF2E06 +:1076E00009D00146002307AA484604F026FD28B128 +:1076F000FEF73DFCE8E743F20200E5E79DF81C00D9 +:10770000C00602D543F20140DEE7002406A8CDE919 +:1077100004404FF00708CDE90084029403946A887E +:107720003B463146484604F089FC070014D168689E +:107730000BF02AF968B968680294CDE90340059412 +:10774000CDE900842B886A883146484604F076FCEF +:107750000746BDF8180028803846C9E739B1FA4B0A +:107760000A881B899A4202D843F20300704713E645 +:1077700010B586B0F44C0423ADF81430E38843B15F +:1077800024898C4201D2914205D943F2030006B00C +:1077900010BD0620FBE7ADF810100021009101910B +:1077A000ADF8003002218DF8021005A9029104A95C +:1077B0000391ADF812206946FFF7EEFDE7E72DE9EA +:1077C000FC4781460F4608460BF0BAF888BB48468E +:1077D000F9F724FE5FEA00080AD098F80000222892 +:1077E00029D30421484607F05CFA060005D103E0DE +:1077F00043F20200BDE8FC87FFDF06F1080003F05A +:1078000012FA05463878012803D0022804D0072050 +:10781000F0E7A8070FD502E015F0340F0BD0B879C8 +:107820003C1DC00709D0E08838B1A0680BF088F88B +:1078300018B11020DEE70820DCE73A782088002124 +:1078400028B3A0F201130721112B18D20CD2DFE8C4 +:1078500003F00B090D0B1D0B121D100B0B1D1D1D35 +:107860001D0B1D00022A11D10846C3E7012AFBD0D7 +:107870000CE0EA0600E0AA06002AF5DA06E0A0F528 +:10788000C0721F2A02D97D3A022AEDD8C1B298F8F7 +:107890002300CDE900017288234631464846FEF7B1 +:1078A00035FDA7E72DE9FF4F8DB01E4615460C4666 +:1078B0004FF000080F460D98F9F7B0FD30B1007891 +:1078C000222806D2082011B0BDE8F08F43F2020052 +:1078D000F9E7B00801D00720F5E7032E00D1002614 +:1078E0000D9807F0A7F94FF6FF7A0690CCB1022D5C +:1078F00074D320460BF06FF830B904EB0509A9F1F9 +:1079000001000BF068F808B11020DCE7AD1EAAB248 +:107910002146504604F022FD39F8021C88425DD110 +:10792000ADB28948B10702D50189491C00E00121A7 +:107930001FFA81F9F10701D0068900E0564607AA2F +:107940004846069904F0CCFA4FF0070B4FF0000AB6 +:107950000BE07888102841D808F1040108441FFA88 +:1079600080F8A8453AD804EB08077FB33988494521 +:10797000EFD353E09DF81F100A074FD544B304EB33 +:10798000080708F104027B881FFA82F8102B25D81B +:1079900003EB0802AA4221D83A8890421ED1C806B9 +:1079A0001ED50DF10C090CAA04EB08015046CDF8C8 +:1079B00008A089E80700CDE900BA388800220699B6 +:1079C00004F01FF928B1FEF7D2FA7CE726E005E0C3 +:1079D0000CE07888BDF83010884201D00B2072E7A7 +:1079E000798801EB08001FFA80F806E0C90604D583 +:1079F0000699FEF7E8FC002887D19DF81F00FF23B9 +:107A000020F010008DF81F00BDF81F00ADF8000039 +:107A1000BDF82200009A069904F0B8FB07A804F00C +:107A200067FA18B9BDF82200B042A3D904210D9815 +:107A300007F037F9040000D1FFDF22885AB1CDE901 +:107A400000BA5546002321460D98FEF75FFC00283A +:107A5000BBD1258037E7002035E72DE9F04F8DB009 +:107A60001E4617000D464FF000041BD0B10802D08F +:107A700007200DB028E7032E00D1002607F0DAF822 +:107A80008046FF2805D07DB128460AF09BFF48B903 +:107A900002E043F20200ECE73988681E08440AF06D +:107AA00091FF08B11020E4E72749B00701D54889C4 +:107AB00000E00120F2074FF6FF7902D04989491E04 +:107AC00000E049468EB207AA414604F009FA4FF099 +:107AD000000B4FF0070A3EE09DF81F0000073AD563 +:107AE00006A9CDE904B1CDF808B0CDF80CB04B46ED +:107AF00000224146CDE900AB604604F09FFA08BB86 +:107B000025B3BDF818103A8821442819091D8A4266 +:107B100034D3BDF8222020F8022BBDF8182020F81D +:107B2000022B06AA0592CDF808B0CDE903B0CDE945 +:107B300000ABBDF82200BDF818300022414604F029 +:107B40007DFA18B1032094E710030020BDF8180057 +:107B50002044001D84B207A804F0CAF920B182288D +:107B600006D0FEF704FA84E7BDF822C0B445B3D9C5 +:107B700034B175B13988A01C814203D20C2078E75A +:107B8000052076E722462946484604F0E7FB2919F6 +:107B90000880A41C3C8000206BE710B504460AF066 +:107BA000F3FE08B1102010BD6948408920800020F4 +:107BB00010BD2DE9F041A4B00C4606464FF0000878 +:107BC000142105A816F009FA01208DF818008DF887 +:107BD000140000278DF81970ADF81C403046F9F7F5 +:107BE0001DFC30B10078222806D2082024B0BDE860 +:107BF000F08143F20200F9E70421304607F051F822 +:107C0000050000D1FFDF0AA904A8CDE9000116ABE9 +:107C1000002229463046FEF74FFB0028E6D10498A3 +:107C20000835CDE90007CDE902650AAA072105A8B4 +:107C3000169B03F002FC10B1FEF7CFF9D6E70498CB +:107C40000090BDF8283004224146304601F0A5F9E5 +:107C500000B1FFDF21463046FDF7C6FF17A92846D1 +:107C600002F0D0FF00B1FFDFBDF85C00172801D2A1 +:107C7000172100E00146A14204D8172801D2172499 +:107C800000E0044621463046FFF756FB05462146F4 +:107C90003046FDF702FD4146304601F02BFB00B9AE +:107CA000FFDF25BB3046F9F7B9FB050000D1FFDF48 +:107CB00095F822001B281AD9172C18D93A208DF8CC +:107CC0002C00ADF82E6095F82200211D884201D9C4 +:107CD000241D00E00446ADF8304040F64800ADF801 +:107CE000320018A90BA804F0C0FA00B1FFDF002091 +:107CF0007CE7F8B51C4615460E46069F07F034F99A +:107D00002346FF1DBCB231462A46009406F04CFDC6 +:107D1000F8BD70B50C4605460E21204616F03BF91D +:107D2000002020802DB1012D01D0FFDF70BD062085 +:107D300000E00520A07170BD10B50C4604F09DF860 +:107D400000B1FFDF2046BDE81040FEF710B900008B +:107D50001003002010B50446007896B0022805D024 +:107D6000012803D043F2050016B010BDA17889297F +:107D70000AD06078892807D021B1032902D808B138 +:107D8000032801D90720EFE74D208DF80000207867 +:107D9000022801D0012000E000208DF80200607868 +:107DA00000F0D7FDC01D8DF80300A078012815D084 +:107DB00000F0CFFD10F101008DF80400607800F0B4 +:107DC000C8FD8DF80500A07800F0C3FD8DF8060011 +:107DD0009DF805200621102A04D005E0022000F0BD +:107DE000B8FDE9E78DF80510102801D18DF80610CF +:107DF0002078012804D19DF80300401C8DF8030071 +:107E000002F0E0F8001DADF808000BA9684604F088 +:107E10002CFA00B1FFDF0020A6E72DE9FF4FFF4954 +:107E200091B00600D1E900010396CDE90C01507A2A +:107E3000117A9B4608441546C7B222D05FF0000471 +:107E40004FF00009CDF81C900520ADF81C001F2054 +:107E5000ADF81E00F2A00690CDF81490F01D8DF83C +:107E600014904FF0010A20F007008DF815A0B042E1 +:107E700000D0FFDF28880399401C1FFA80F814B156 +:107E800007E00124DCE708F0FF0008F06FFB00B119 +:107E9000FFDF03993A4601EB0810C01C20F00301F4 +:107EA000D5F8188003913CB981F800901FFA88F04A +:107EB00003F06EFE00B1FFDF0399234601EB0800DB +:107EC0000390A87A297A3A460844C1B203A800F080 +:107ED0008EFD0398C01C20F003000390697A009186 +:107EE0002B7AAA7A04B1002002A906F0B6FD00B1EF +:107EF000FFDFBDF8081003980DF1780808443A46F2 +:107F000098E88A00C01C20F00300CDE90270CDE99A +:107F1000001304B100205B4608A906F029FF00B158 +:107F2000FFDF089903980844C01D20F00700039064 +:107F30001299821B002C0A603AD1BC4ABA491160DE +:107F4000111D401E086001232C220EA9B84806F01E +:107F500005FD00F00CFD00211E22084602F042F84B +:107F6000FAF7A4F900F075FFFEF7D9FCE8680CAA4F +:107F7000214620B1FBF755F830B1FFDF04E005A83A +:107F8000FBF74FF800B1FFDF05F11400FEF7F0FF3B +:107F900000B1FFDF4FF49671A64816F01EF8A54811 +:107FA000022180F829A180F82A11062180F82B11DE +:107FB00015B0BDE8F08F10B59E4CA078092800D30D +:107FC000FFDF207804EB401010F8041F21F0FF01C0 +:107FD0000170417821F00701C91C21F0180141709E +:107FE0000121E17010BD2DE9F04105460C46002746 +:107FF0000078052190463E46B1EB101F00D0FFDF10 +:10800000287A58B1012810D0FFDF00BFA8F800601F +:108010000CB1278066800020BDE8F0810227092688 +:108020007CB1A889A080A87B09E00327142644B16D +:108030006888A0802869E060A88A2082287B207256 +:10804000E4E7A8F80060E6E700B597B04E218DF8A8 +:10805000001000780BA900F001008DF802006846BE +:1080600004F003F917B000BD00B5017897B001F036 +:1080700001018DF80210417801F001018DF8031023 +:108080000178C1F340018DF804104178C1F340013B +:108090008DF80510017889088DF806104178890857 +:1080A0008DF8071081788DF80810C1788DF80910C7 +:1080B00000798DF80A004A208DF800000BA9684667 +:1080C00004F0D3F8CEE770B55A4CE078002819D008 +:1080D0002078002504EB4010407900F007000119DA +:1080E00091F82801401E81F828012078401CC0B278 +:1080F0002070092800D12570A078401CA07009F0DC +:10810000BAFFE57070BD4B4890F82B01002800D0F5 +:1081100051E770472DE9F043464D9BB05FF00006F4 +:10812000D5F8240168B1FFF7EEFF002875D02022B2 +:10813000D5F8241115F0FDFEFFF7C5FFC5F8246141 +:10814000EEE795F82901002867D0FFF734FF0446D1 +:10815000374806F034FC606000B9FFDF606804F067 +:10816000D1F888B12046F9F7C6FB6078010706D53B +:1081700020F00700401C6070FFF7A5FFD0E72C48F7 +:10818000616806F025FCCBE72948616806F020FC11 +:1081900001A800F0B9FC00286BD10321BDF8040050 +:1081A00006F07FFD8046BDF8040006F0DDFE0746C0 +:1081B000B8F1000F00D1FFDFD8F8040010B100784B +:1081C000FF2856D0FFF7F7FE0446384606F08FFA30 +:1081D000606000B9FFDF606800F104090671BDF856 +:1081E00004006080204600F02CFF384606F04FFB6C +:1081F00000B9FFDF47208DF81000BDF80400ADF88E +:10820000120004A805F0D9FE10A804F0DEFA607888 +:10821000010711D4C00615D417E02AE070E301006D +:108220006E52463578000000000000200006024033 +:10823000780500204C04002020F00700801C6070AE +:10824000FFF741FFC8F804906AE7D8F8040038B196 +:108250000178491C11F0FF0101708FD1FFDF5FE74A +:1082600000221146384600F072FB002886D1FFDF5D +:1082700056E71BB0BDE8F08310B5FE4CA06008685F +:10828000E060AFF26F1001F0F6FD607010BDF949CB +:1082900000200870704730B505464FF080500C46FE +:1082A000D0F8A41097B0491C05D1D0F8A810C94344 +:1082B0000904090C08D050F8A01F01F00101297031 +:1082C0004168216080680EE02B208DF800000BA92A +:1082D000684603F0CAFF00B1FFDF012028700C9848 +:1082E0002060BDF83400A0802878002803D0607991 +:1082F00040F0C000607117B030BDF0B54FF0805451 +:108300000746D4F8800097B00D462B26401C0BD1B1 +:10831000D4F88400401C07D1D4F88800401C03D155 +:10832000D4F88C00401C0BD0D4F880003860D4F80E +:1083300084007860D4F88800B860D4F88C0016E027 +:108340008DF82C6069460BA803F08FFF00B1FFDFAA +:1083500001983860029878608DF82C6069460BA807 +:1083600003F083FF00B1FFDF0198B8600298F86066 +:10837000D4F89000401C0BD1D4F89400401C07D1D5 +:10838000D4F89800401C03D1D4F89C00401C08D0BD +:1083900054F8900F286060686860A068A860E06882 +:1083A00016E08DF800600BA9684603F05EFF00B18F +:1083B000FFDF0C9828600D9868608DF800600BA9AD +:1083C000684603F052FF00B1FFDF0C98A8600D98DB +:1083D000E86017B0F0BD30B5A74C0546D4F82401CD +:1083E00000B1FFDFC4F8245130BD3EB5054603217E +:1083F00006F057FC0446284606F0B6FD054604B9CB +:10840000FFDF606818B10078FF2800D1FFDF01AA04 +:108410006946284600F09BFA60B9FFDF0AE00022B7 +:1084200002A9284600F093FA00B9FFDF9DF8080082 +:1084300000B1FFDF9DF80000411E8DF80010EED264 +:1084400060680199884201D1002060608A4C94F8EC +:108450002A01022800D3FFDF94F82A01401CC0B291 +:1084600084F82A01012803D18248407801F022FDD6 +:108470003EBD70B50446A1F57F4016460D46FF3857 +:1084800000D1FFDF012E01D0FFDF70BD207820F08A +:108490000F00401D20F0F0005030207000202072AE +:1084A000A5810120A07370BD70B515460C46064627 +:1084B000FFF729FE90B1017821F00F01491D21F04D +:1084C000F001503101704680012101722168016183 +:1084D000A18881820573BDE87040F4E53046BDE8AF +:1084E00070401321FAF7BEBA70B505460C4608462F +:1084F0000AF04AFA08B1102070BD2846F8F78EFF3E +:1085000028B1284600F0E7FE2070002070BD43F23D +:10851000020070BD2DE9F04F04465648894687B0E9 +:10852000017811B1082007B043E552485349416032 +:1085300020460AF029FA002875D148460AF024FAA4 +:10854000002870D1637A217A5818FF287DD82088B6 +:10855000FE287AD800B90A202080A06908B94FF413 +:10856000B060A0616068A0B14578827805EB4505F0 +:108570002A440578067905EB450502EB4502457965 +:10858000C07805EB450505EB8605C0EBC000284427 +:1085900009E003EB430001EB410200EB4202C1EBB7 +:1085A000C10505EB830086B2C3EBC3001044C1EBE9 +:1085B000C1021044084487B2208A01F0F9FC002867 +:1085C000B1D101F0FFFC001D7843059001F0FAFCE9 +:1085D000001D00FB06F8E168A06900F041FA5FEABF +:1085E000000AA0D1A17A607A81422ED84FF0120BF6 +:1085F00008280ED8207A01280BD808F022F9054661 +:1086000009F0F8FC2A1A217A607A521E0B189A4255 +:1086100001DA584687E765688B460090BDB1284669 +:108620000AF0D9F908B110207DE7A97868780844E4 +:108630002978421800985844904206D16A792979DD +:108640001144EA781144884201D007206BE7CDF845 +:108650000080CDE90176224603A90020059BFFF7A3 +:10866000DCFB044D039AD9F8003068681118994270 +:1086700009D805E01C0000204C040020481300200D +:10868000B2F5803F03D30420C9F800104BE7CDF8C2 +:108690000080CDE90176224604A9059BFFF7BDFBCA +:1086A000DDE90301884200D0FFDF049869680844CF +:1086B0006860C9F80000FF49012028700870504622 +:1086C00031E72DE9F04707460C4608460AF05CF909 +:1086D00040B938460AF076F920B9F81C20F00300BA +:1086E000B84202D01020BDE8F087F3484FF00008F0 +:1086F000817889B14178824600EB4115B4F8009049 +:1087000015F8040F234600F00F000022294600F060 +:1087100037FA060004D013E0A4F800800520E2E751 +:1087200097B12188494501D90C260DE028782346C8 +:1087300000F00F003A46294600F022FA060005D064 +:108740000C2E01D0A4F800803046CCE79AF8010046 +:108750005446401CC0B28AF80100092801D184F8AF +:108760000180A078401EA070687800F00701012900 +:108770000BD0022903D0032918D0FFDFE4E7C0069D +:10878000E2D46888FFF731FEDEE7CC48696806F07E +:108790001FF994F82901401CC0B284F8290101286E +:1087A000D2D1C748407801F085FBCDE794F82B0182 +:1087B000401C8AF82B01C7E770B50D4604460AF045 +:1087C000BFF818B928460AF0DFF808B1102070BDCC +:1087D00029462046BDE8704007F0FFBE70B504464C +:1087E00015460E4608460AF0ABF818B928460AF0B6 +:1087F000CBF808B1102070BD022C03D0102C01D092 +:10880000092070BD2A463146204607F009FF00289E +:10881000F7D0052070BD70B514460D4606460AF027 +:108820008FF838B928460AF0AFF818B920460AF090 +:10883000C9F808B1102070BD22462946304607F01D +:108840000EFF0028F7D0072070BD10B596B0044683 +:108850000AF09AF810B1102016B010BD0F208DF854 +:1088600000000BA9684603F000FD0028F4D19DF834 +:1088700034002070BDF836006080BDF83800A0805C +:108880000020E9E770B505460C4608460AF09AF85C +:1088900020B93CB120680AF077F808B1102070BD0B +:1088A000A08828B121462846BDE87040FEF78CB864 +:1088B000092070BD70B504460D4608460AF040F820 +:1088C00030B9601E1E2814D828460AF039F808B1BD +:1088D000102070BD032C01D9072070BD04B9FFDF43 +:1088E000784800EB840050F8041C2846BDE870402E +:1088F0000847A4F120001F28EED829462046BDE8ED +:108900007040F9F70EBC70B504460D4608460AF0F3 +:108910003BF830B9601E1E280FD828460AF010F820 +:1089200008B1102070BD012C03D0022C01D0032C03 +:1089300001D1062070BD072070BDA4F120001F28C2 +:10894000F9D829462046BDE87040F9F76EBC05F01D +:108950006ABD892805D0032805D0022805D001204A +:10896000704710207047062070470320704710B5ED +:1089700096B003F06BFC52484178806803F064FEC7 +:108980004F4801240C300178012916D13E218DF881 +:108990000010C0788DF8020010B1012803D005E066 +:1089A0008DF8024002E000208DF80200684605F0D4 +:1089B00004FB10B10BA803F008FF02208DF82C0077 +:1089C0008DF82D008DF82E000BA8FFF7C3F900B12C +:1089D000FFDF8DF82C4003208DF82D008DF82E0040 +:1089E0000BA8FFF7B7F9002800D0FFDF34E72DE927 +:1089F000F0410646022012B101EB4200401DC7B211 +:108A00003068C01C20F0030232601BBB2A483B4682 +:108A10000921243809F085FE002408E0092C11D230 +:108A2000DFE804F005070509090B0B0505002648DA +:108A300004E0264802E0264800E0264809F090FEBF +:108A4000054600E0FFDFA54200D0FFDF641CE4B272 +:108A5000092CE3D3306800EB07103060BDE8F081EB +:108A600038B50C00054604D0084609F069FF00BB84 +:108A700002E0F62844D345E0606809F061FFC0B920 +:108A8000607800F00300012803D0022801D00720FD +:108A900038BD69462046FBF78DFD0028F8D1607887 +:108AA00000F0030002281CD19DF80000C8B16068E6 +:108AB00012E014E0080000204C040020780500209B +:108AC0001C00002090E30100771F0000F18E0000E1 +:108AD000CB9F00002103010009F074FF08B11020B2 +:108AE00038BD6089F8280BD82189814208D861787F +:108AF00001F00301012905D1D73080B2A84201D984 +:108B0000092038BD002038BD2DE9F04397B08146DB +:108B100046208DF82C0069460BA803F0A6FB00B197 +:108B2000FFDF43F2040600246D46DFF884801FE077 +:108B30002F19B87DC10706D0400704D405EB4400C7 +:108B4000C08800F0B9FB98F82A0178B1B87D800799 +:108B50000CD505EB4400C08800F037FA30B105EBC6 +:108B600044000026C188A9F8001005E0641CE4B2A6 +:108B70009DF80400A042DBD817B03046BDE8F08372 +:108B80002DE9F041044600201880601E1D4616465F +:108B90000F46052800D3FFDF06482A4600EB840075 +:108BA000314650F8043C3846BDE8F0411847000013 +:108BB0004C04002078E301002DE9F0478A469846EE +:108BC00015460646032106F06CF80446304606F0CA +:108BD000DDF90C35AFB2002581462E4604B9FFDF22 +:108BE000B9F1000F00D1FFDF04EB8A000189B9421F +:108BF00000D30125218CB94202D2BAF1060F00D36D +:108C0000012638EA050104D0817A41F0020181721F +:108C10000BE038EA060108D0817A41F00401817244 +:108C200014F8220F40F00400207005EA0600BDE8A9 +:108C3000F0872DE9F0478246DDE90846174604F142 +:108C40000C0099460D461FFA80F80023224639464B +:108C50005046FFF7B1FF60B1A87800061BD426F894 +:108C6000044C26F8029C504606F090F9060008D104 +:108C700006E0072F01D01120D9E743F20400D6E720 +:108C8000FFDF241D3046A1B205F0CCFA00B9FFDFAA +:108C9000504603F03DFC05EB8700062F0289A2EB4E +:108CA0000801018103D2298CA1EB0800288400204F +:108CB000BDE72DE9F8431D4617460E46DDF8208036 +:108CC00006F064F9040019D03F1DB9B205F05AFA54 +:108CD0002860B0B1067120466A46296805F016FD85 +:108CE000009800210A460180817003F0D1FC0098B1 +:108CF000C01DC8F800000020BDE8F88343F2020060 +:108D0000FAE7072E01D01120F6E743F20400F3E75B +:108D10002DE9F04F0F46054687B0164650880321CF +:108D200005F0BFFF040000D1FFDF4FF000098DF810 +:108D30000890A078400600D1FFDF042F53D3297894 +:108D400041F30000401C06D162786B789A424AD108 +:108D50002278120747D04FF0010B4FF00208142978 +:108D600039DA4FF6FF7A012933D0122902D01329BC +:108D700031D11CE00C2F2ED1A17801F07F01012907 +:108D800029D0207820F00F00401C20706878607097 +:108D90008DF808B0A888ADF80A00E888ADF80C0096 +:108DA0002889ADF80E006889ADF8100016E0062F8E +:108DB00011D1207820F00F0020707188012009F077 +:108DC0007CFD8DF80880ADF80AA0A888ADF80C00ED +:108DD00004E0062F0AD09DF80810B9B17088324619 +:108DE00002A9F9F73AF907B0BDE8F08F207820F032 +:108DF0000F0020707188012009F05FFD8DF8088058 +:108E0000A888ADF80A00ADF80CA0E7E70028EAD082 +:108E1000768805A8009006AB062204213046FFF7AD +:108E200048FF00B1FFDF05980523042280F800B059 +:108E300069784170A0F80280A0F804900621CDE97D +:108E4000001021463046FFF7F4FE0028CBD0FFDFAC +:108E5000C9E710B501F0B6F80021FF4B0A4600BF84 +:108E600023F81120491C0829FAD3FB4A00F10C0110 +:108E70001032400011805180183090804D20D080F9 +:108E800011815181C1EBC100908110BD70B50C46BC +:108E9000897821F0FF01A170217821F00F01217064 +:108EA000012161700021616006F070F8050000D1B9 +:108EB000FFDF284605F064F9E74910318989401A37 +:108EC00020852046BDE8704000F014BB70B50D460B +:108ED000032105F0E6FE040000D1FFDFA07865F372 +:108EE0000600A07070BD70470146012009F0E5BC86 +:108EF0003EB58DB20321284605F0D3FE040000D113 +:108F0000FFDF2078002220F00F00207002208DF873 +:108F100000004FF6FF70ADF80200ADF8040069469E +:108F20002846F9F79AF83EBD2DE9F84F05460C465C +:108F300000270078012192463E46B1EB101F00D079 +:108F4000FFDF287A032809D0FFDF00BFAAF80060FE +:108F50000CB1278066800020BDE8F88FB5F80C8042 +:108F6000702708F10A0086B2A4B16888A0806889D9 +:108F70002081A4F806806888D5F8049004F10A05D9 +:108F800005F0F2FF2A46072549464346009505F0BD +:108F90000BFCDBE7AAF80060DDE72DE9FC410F469A +:108FA0001C46164680460321089D05F07AFE010006 +:108FB00008D033463A464046CDE90045FFF739FE32 +:108FC000BDE8FC8143F20200FAE7F8B50646A0F5D9 +:108FD0007F40FF3816D0304605F0C6FF040000D1B0 +:108FE000FFDF204605F083FB050000D1FFDF2046B0 +:108FF00029466A4605F08AFB009CB4F80500E41C8B +:10900000052801D00120F8BD0321304605F049FEB6 +:10901000050000D1FFDF2079122807D120880C2815 +:1090200004D1A87800F07F00022806D00023062291 +:1090300004213046FFF7C0FDF8BD002306220521BC +:10904000F7E7F8B50446408805F08EFF050000D12B +:10905000FFDF6A462846616800F0CCF902460098B6 +:10906000121F30F8031F458891421DD1042D1CD0DA +:10907000052D27D0062D1DD0402D15D30E46284690 +:1090800000F0D4F908280FD0207820F00F00401C01 +:1090900020F0F00010302070032020726581A6813E +:1090A000607840F008006070F8BD2246001D00F0B6 +:1090B000C9F9F8BD636864880A46011D2046FAF7BD +:1090C000FDFEF8BD2246001DFFF722FEF8BD7FB56C +:1090D0000D460646032105F0E4FD04003AD0207851 +:1090E00000F00F00012838D002A8009003AB0C223A +:1090F00005213046FFF7DDFD002829D10298122115 +:109100000523017061781A46891C4170082141804D +:10911000298881806988C180A9880181E988418185 +:109120000C21CDE9001021463046FFF782FD00B149 +:10913000FFDFF02300223146012009F021FB2078D7 +:1091400020F00F00401C20706078801C60700020B0 +:1091500004B070BD43F20200FAE71120F8E77FB5D2 +:109160000D460646032105F09CFD040006D020783C +:1091700000F00F00012804D00820E9E743F20200C4 +:10918000E6E702A8009003AB062205213046FFF770 +:1091900090FD0028DCD1029813210523017061782D +:1091A00041700221418085800621CDE900101A46D8 +:1091B00021463046FFF73DFD00B1FFDF207820F06B +:1091C0000F0020700020C3E72DE9F84F0F468346BB +:1091D000032105F066FD0546584605F0D7FE80469A +:1091E0004FF0000A05B9FFDFB8F1000F58D1FFDFDB +:1091F00056E040466946002205F015F99DF800400A +:109200008146082C00D3FFDF05EB840609F1080036 +:109210003189062C0144318102D2298C08442884EA +:10922000072C03D10AF1010000F0FF0AB07AC00751 +:109230000DD02146284600F0DFF840B9B07A20F082 +:109240000100B072584684B3032C2FD0FFDFB07AF0 +:1092500081070AD502E00000A805002020F00200E6 +:10926000B0722146584600F0D8F8062C18D895F868 +:109270002200410714D520F0040085F822000024C4 +:1092800005EB8400817A4A0706D521F0040181723A +:109290002146584600F0C1F8641CE4B2062CEFD316 +:1092A0007F1EFFB2A5D2504656E602E0FAF79DFEB9 +:1092B000CDE7FEF76EF8CAE710B5032105F0F1FC23 +:1092C000040000D1FFDF204600F014F9A07840F040 +:1092D0008000A07010BD10B5032105F0E2FC040071 +:1092E00000D1FFDF00F06EFE218D0C30B1FBF0F0FD +:1092F000C0B210BD70B50D46032105F0D2FC0400CC +:1093000000D1FFDF062D00D9FFDF2946204600F0FF +:1093100073F8002805D004EB85018A7A42F0010237 +:109320008A7270BD10B50446402801D2072010BDD6 +:1093300000F07CF8082802D04FF4445010BD002102 +:10934000774802E0491C082903D230F81120002A8E +:10935000F8D1082903D020F81140002010BD0420C6 +:1093600010BD10B5402801D2072010BD00F05EF8F6 +:10937000082805D06A4A002122F81010084610BDBE +:10938000052010BD2DE9FE4315460C00804606D091 +:109390002DB16088402804D20720BDE8FE8310204C +:1093A000FBE7218811B300F041F8082820D002A87B +:1093B0000090228801AB07214046FFF77AFC002885 +:1093C000EBD140462788019E05F0E0FD2A4607259F +:1093D00031463B46009505F020FA0298009023881C +:1093E000628807214046FFF7D8FDD6E70C20D4E776 +:1093F0000520D2E705F08AB9072904D0484A10327F +:1094000032F8112000E0028D00EB810000899042CB +:1094100001D2012070470020704710B5032901D008 +:10942000FFDF10BDBDE81040FAF7A5BD01460020E2 +:109430003B4A02E0401C082803D232F810308B422D +:10944000F8D17047F0B50F460646014687B014467E +:109450003846FCF7B1FBC0B2082842D10020ADF875 +:10946000100003906088032105F01BFC050000D16B +:10947000FFDF00212846FFF7BFFF78B96088002191 +:10948000FDF769FFADF81000024603A80090608860 +:1094900005AB0021FFF70DFC00B1FFDF0398059934 +:1094A000CDE90010029404AB324638466168FDF7FE +:1094B000F7FAC0B205281BD2DFE800F0031A131533 +:1094C0001300BDF8100000280BD003990423CDE948 +:1094D0000001608800222946FFF7ABFB002800D07E +:1094E000FFDF07B0F0BD607840F010006070F8E773 +:1094F000FFDFF6E710B504462021083014F06DFDBB +:109500000748002110F1100004EB810330F811200E +:10951000491C1A810629F7D9208DA08410BD0000AE +:10952000A805002030B44FF0E02001234FF4006C78 +:109530000021C0F880C11D02C0F880511C06C0F88F +:109540008041E84A82F80014D21E82F80014E64AEC +:1095500082F80014E54A53609360C2F84011C2F8E3 +:109560004411C2F84811C0F880C2C0F88052C0F857 +:109570008042C0F800C1C0F80041136030BC7047A1 +:1095800070B401204FF0E023C6024FF0000CC3F886 +:1095900080610402C3F880410506C3F88051D34AB4 +:1095A00050609060D24801680029FCD1C2F840C1E7 +:1095B000C2F844C1C2F848C1C3F88062C3F880420F +:1095C000C3F8805270BC70474FF0E0204FF4006148 +:1095D000C0F88012C910C0F880127047002804BF7C +:1095E000C4487047012804BFC3487047022804BF1D +:1095F000C248704700B5FFDF002000BD08B5BB4979 +:10960000002298B101282FD002281CBFFFDF08BD1F +:109610004FF48020C1F80803C1F84803B84802603D +:10962000C1F84821B5480068009008BD4FF480306B +:10963000C1F80803C1F84803B24B1A60C1F84021D1 +:10964000B14BC1031960B149C1F808034FF0E023E1 +:109650000012C3F88001AE480260C1F84021C1F891 +:109660000022AC48027008BD4FF40030C1F8080376 +:10967000C1F84803A8480260C1F844219E48006828 +:10968000009008BD70B5DFF864C2042600240125EF +:10969000B0B101284CD002281CBFFFDF70BD9F482D +:1096A0004FF48022012BC0F8401518BFCCF80823D6 +:1096B000C0F8404108BFCCF80423CCF8442370BD67 +:1096C000881E20F07F40CCF840054FF48030CCF865 +:1096D0000803CCF84041CCF84403012B14BF00210F +:1096E00001218C4B597089490D61DFF834C2CCF8E7 +:1096F00000408C4C4FF0020CC4F800C0DFF828C2C8 +:10970000CCF80060DFF808C23D32CCF80020C1F888 +:1097100000524FF0E0224FF4807CC2F880C2C1F8C2 +:109720000403C2F800C10804804908601D7070BDC0 +:109730007F4A4FF40030012BC2F8401518BFCCF817 +:109740000803C2F8404108BFCCF80403CCF8440336 +:1097500070BD67480068704770B5764805687749FE +:1097600075480860614CD4F84001002601280AD1F0 +:10977000D4F8080310F4803F05D04FF48030C4F8CB +:109780000803C4F84061D4F8440101280DD1D4F88D +:10979000080310F4003F08D04FF40030C4F8080369 +:1097A000C4F84461012007F088FCD4F8480101287E +:1097B0000DD1D4F8080310F4802F08D04FF4802086 +:1097C000C4F80803C4F84861022007F076FC5C483E +:1097D000056070BD574810B5046858495648086080 +:1097E0004C490878002808BF03201AD0464A4FF099 +:1097F00000401060454AC00BC2F8080303124FF046 +:10980000E02C0020CCF88031414B1860C2F84001B8 +:10981000C2F8000208704A78002A1CBF4870002075 +:1098200001D007F04AFC4648046010BD4FF0E0212B +:109830004FF08070C1F8000270474FF0E0214FF008 +:109840008070C1F8800270474FF0E0214FF40010A3 +:10985000C1F8000270474FF0E0214FF40010C1F84A +:10986000800270472949012008614FF0E021000281 +:10987000C1F880027047410A43F609525143C0F3D0 +:10988000080010FB02F000F5807001EB50207047DB +:10989000430B48F2376C03FB0CF31B0C4FEA432CD1 +:1098A000C1F800C0DFF89CC003FB0C0326484CF253 +:1098B000F72C5843400D10FB0CFC0CEB432303F535 +:1098C00080735B1213700A6810440860704719486F +:1098D00010B5046819491848086007F087FF184850 +:1098E000046010BD0BE000E018E000E000B00040B4 +:1098F00004B500404081004044B1004048B1004000 +:1099000048B5004040B5004008F5014000800040E7 +:10991000408500402C00002044B5004008B00040C5 +:1099200004850040088500401085004004F5014092 +:1099300004B000401005024001000001180502407B +:1099400014050240F7C2FFFF6F0C010010B5EFF3E2 +:10995000108000F0010472B6EB484178491C417058 +:109960004078012801D108F0A5FB002C00D162B697 +:1099700010BD70B5E44CE07848B90125E570FFF7FB +:10998000E5FF08F09FFB20B1002008F07BFB0020E2 +:1099900070BD4FF080406571C0F80453F7E770B5B3 +:1099A000EFF3108000F0010572B6D74C607800B973 +:1099B000FFDF6078401E6070607808B908F07EFBB9 +:1099C000002D00D162B670BDCF4810B5C17821B16D +:1099D00000214171C170FFF7E2FF002010BD10B5FA +:1099E000044608F06FFBC849C978084000D0012040 +:1099F0002060002010BD2DE9F05FDFF80C93427865 +:109A0000817889F80620002589F80710064689F82C +:109A1000085000782F4620B101280FD002280FD01F +:109A2000FFDF08F05CFB98B108F060FBA8420FD1A3 +:109A3000284608F05FFB0028FAD047E00125F0E750 +:109A4000FFF784FF08F03EFB0028FBD00225E8E783 +:109A500001208407E060C4F80471AC490D6001077F +:109A6000D1F84412A94AC1F3423124321160A74906 +:109A70004FF0020B34310860C4F804B3A060DFF883 +:109A800090A2DAF80010C94341F3001101F1010876 +:109A9000DAF8001041F01001CAF8001000E020BF11 +:109AA000D4F804010028FAD0284608F023FB002847 +:109AB000FAD0B8F1000F05D1DAF8001021F010014A +:109AC000CAF80010C4F808B3C4F8047199F8070084 +:109AD0004C4670B1307860B908F0F4FA064608F0E8 +:109AE000E5FC6FF0004116B1C4E9031001E0C4E9E0 +:109AF000030115B12771BDE8F09F01202071BDE879 +:109B0000F05F00F0DFB870B5050000D1FFDF4FF067 +:109B100080424FF0FF30C2F808030021C2F8001164 +:109B2000C2F80411C2F80C11C2F81011764C617021 +:109B300008F0CEFA10B10120E07060702846BDE850 +:109B4000704058E72DE9F0410125AF077D616E4C6B +:109B5000E079F0B1012803D0217A401E814218DA61 +:109B600008F0B0FA064608F0A1FCE179012902D913 +:109B7000217A491C21720EB1216900E0E168411A85 +:109B8000022902DA11F1020F0EDC0EB1206100E0B1 +:109B9000E060FFF7DBFE08F095FA10B13D61A570BB +:109BA00000E0257000202072BDE8F0812DE9F05F13 +:109BB0005848D0F800B0574A574908321160840617 +:109BC000D4F8080110B14FF0010801E04FF000088F +:109BD000D4F8000100B101208146D4F8040108B195 +:109BE000012600E00026D4F80C0100B101208246D5 +:109BF000D4F8100108B1012700E0002748EA090164 +:109C000026EA010020EA0A00B84300D0FFDF002561 +:109C1000B8F1000F04D0C4F80851012008F032FA5E +:109C2000DFF8E480B9F1000F13D0C4F8005198F8C0 +:109C3000050020B188F80550002008F023FA98F8B4 +:109C4000000030B108F03EFA18B1012088F8020097 +:109C500020610EB1C4F80451BAF1000F0AD0C4F863 +:109C60000C5198F80200464600B9FFDFB570357018 +:109C7000FFF795FE37B1C4F8105198F8040008B109 +:109C8000FFF760FF2349091DC1F800B033E770B545 +:109C90001D4DE87808B908F011FA01208407A06189 +:109CA000A87850B1D4F80C0120B9002008F022FAAD +:109CB0000028F7D10020C4F80C014FF0FF30C4F8A1 +:109CC000080370BD2DE9F0411926B507C5F80863F2 +:109CD0000124AC610020C5F80001C5F80C01C5F8ED +:109CE000100108F0EFF9084F10B1BC702C6100E0D2 +:109CF0003C70FFF72BFE0549B87920310860C5F8A4 +:109D000004636C6150E7000030000020180500403B +:109D100010ED00E0100502400100000110B5202008 +:109D200000F075F8202000F07DF84449202081F8EB +:109D30000004434900060860091D42480860F7F71F +:109D4000E1FA3F49C83108603F48D0F8041341F0B8 +:109D50000101C0F80413D0F8041341F08071C0F879 +:109D60000413364901201C39C1F8000110BD10B59B +:109D7000202000F04CF8324800210160001D0160F5 +:109D80002F4A481EE83A10602F4AC2F808032C4BAD +:109D9000C8331960C2F80001C2F860012B4908609D +:109DA000BDE81040202000F03DB825492848EC3996 +:109DB0000860704722492648E8390860704770B546 +:109DC0001F4A8069E83A224911601F49D1F80061B1 +:109DD0000023204D1D4A5C1E1EB1A84206D300215F +:109DE0000FE0D1F8606186B1A84209D2C1F8003114 +:109DF000C1F860311460BDE87040202000F012B856 +:109E00001168BDE8704014F01AB9FFDF70BD00F0B2 +:109E10001F02012191404009800000F1E020C0F8BC +:109E20008011704700F01F0201219140400980001D +:109E300000F1E020C0F880127047000020E000E050 +:109E400000060240441300200000024000040240CB +:109E50000100000100F001004FF0E0214FF0007020 +:109E6000C1F88001C1F88002384B802283F80024B9 +:109E7000C1F80001704700B502460420344903E0F0 +:109E800001EBC0031B792BB1401EC0B2F8D2FFDF3B +:109E9000FF2000BD41F8302001EBC00100224A71D3 +:109EA0008A7101220A7100BD294A002102EBC0001B +:109EB0000171704710B50446042800D3FFDF244821 +:109EC00000EBC4042079012800D0FFDF6079A1797C +:109ED000401CC0B2814200D060714FF0E0214FF0D1 +:109EE0000070C1F8000210BD2DE9F0411948056865 +:109EF00018491948083108601448042690F80004ED +:109F0000134F4009154C042818D0FFDF16E02178C4 +:109F100007EBC1000279012A08D1427983799A427C +:109F200004D04279827157F8310080472078401C74 +:109F3000C0B22070042801D300202070761EF6B233 +:109F4000E5D20448001D0560BDE8F08119E000E09D +:109F5000C805002010050240010000014400002057 +:109F60000F4A12680D498A420CD118470C4A1268F0 +:109F70000A4B9A4206D101B508F066FAFFF715FFC1 +:109F8000BDE80140074909680958084706480749DC +:109F9000054A064B7047000000000000BEBAFECA2A +:109FA00098000020040000204812002048120020E1 +:109FB00018B1172802D207207047172008490880D7 +:109FC0000020704706480088704770B50C4605466B +:109FD00000F0B5FB21462846BDE8704001F0B0BC5A +:109FE00046000020FE4B586019721A80C90013F019 +:109FF000F4BF10B504460E2113F0CDFF17202081C9 +:10A00000207B40F00A00207310BD4FF6FF720280E3 +:10A01000032008F052BC7047027BD30701D192079E +:10A0200003D4408908800020704705207047027BD8 +:10A03000920700D54181704701460020098847F208 +:10A04000FE12114200D00120E549497A002901D0D1 +:10A0500040F00800704700B50346007BC00701D000 +:10A06000052000BD19811846FFF7E6FFC00703D0A1 +:10A07000187B40F004001873187B40F0010018733F +:10A08000002000BD027B520700D509B1008970474E +:10A0900017207047027B61F3C302027370472DE9FA +:10A0A000F04F0E46017804464FF0010B0BFA01F019 +:10A0B00047F2FF1100EA010961681D464FF6FF7380 +:10A0C000088887B09646984206D0B9F1000F07D0AD +:10A0D00047F2FE12104203D0012007B0BDE8F08F16 +:10A0E00040EA090008804FF0000A8DB185F800A011 +:10A0F0002278002705200221102A72D2DFE802F020 +:10A10000710D323B506A727C50C7C399CBFDFCFB8A +:10A1100020780B28ECD00420DFE76068B4F80C80CE +:10A12000007B80077ED5B8F1170F4BD3FFF74AFFAE +:10A130004045FAD360684089172801D3404541D192 +:10A14000287820F03F00801C2870A5F801800320AB +:10A1500030806168A1F80A806068017B21F002010B +:10A16000017334E104212970A189A5F80110E18966 +:10A17000A5F8031085E0A08A3188C01D1FFA80F879 +:10A180004145D2D3062005F8010BA0892880E0893B +:10A190006880208AA88007200090A38AA2693EE0F8 +:10A1A000082A10D008212970A189A5F80110E18999 +:10A1B000A5F8031030806A1D694604F1100006F00E +:10A1C0004EFA10B1CCE01021EDE730889DF8001078 +:10A1D000084456E00A202870A089A5F80100032051 +:10A1E00008E006E10C212970A189A5F80110E18998 +:10A1F000A5F803103080A8E0A089B6F800C00BEBEA +:10A2000040021FFA82F8C44578D3B8F1050F75D320 +:10A210000E222A70CDF800B0226903EA400320899B +:10A2200080B200E079E0714600F096FAA6F800806E +:10A23000CDE06B48427A002A6FD0521E42724068CD +:10A24000227B236900EBC205AA882868D3F800C0E6 +:10A250001044A0F1080240F808CC586850608DF80E +:10A2600000108DF801A028680290A888ADF80400BD +:10A2700000216846FBF758FAA5F804A0002E01D08B +:10A2800050463080A3E0287840F08001297028787B +:10A2900040F040012970E0893188C01C1FFA80F825 +:10A2A00041455DD3287820F03F0012302870A18905 +:10A2B000A5F80110032000902089E38980B271463F +:10A2C000226900F049FAA6F80080287841063CD5BA +:10A2D00000067CD58DF800B08DF801A03188CDE95D +:10A2E000025A091DDFF8F8800420ADF8041004902C +:10A2F00098F8080003E055E04BE02AE030E08DF8E4 +:10A30000140000216846FBF70FFA074630880C302E +:10A310003080022F02D0DFB36EE047E09DF81420BA +:10A32000D8F8041098F80830404601EBC2019A4270 +:10A3300016D28A88A2B9427A521C88F809200D6088 +:10A3400030888880A6F800A056E06168A0898880DF +:10A350003DE0218A3288491D1FFA81F8424501D229 +:10A36000042749E0297821F03F0116312970A1899D +:10A37000A5F80110E189A5F8031000902089238A2F +:10A3800080B27146626900F0E7F9A6F80080DCE768 +:10A390001DE0287820F03F0018302870207B68707E +:10A3A000318014E060680188090401D4052723E0A6 +:10A3B000C088A189884201D006271DE01E20287090 +:10A3C000A6F800B06068018821F400410180B9F16D +:10A3D000000F11D00248002200888300032001E012 +:10A3E000E8050020A16808F0CBF961682078887042 +:10A3F00007E0A6F800A003276068018821EA0901A8 +:10A400000180384669E62DE9F04F87B09B46119CE4 +:10A410000D46030016461AD03078C10703D000F06D +:10A420003F00192801D9012100E000212046FFF753 +:10A4300029FE98420BD32088A0F57F41FF3906D032 +:10A440003078410601D4000603D5082045E60720F0 +:10A4500043E600208DF800008DF8010030785F1E83 +:10A4600000F03F0C0122981E4FF0050A4FF0020940 +:10A47000B9B2BCF1200F76D2DFE80CF08C10755F1A +:10A480007569758D759E75B775BC75CA75D675E39A +:10A49000757575F375F175F075EF758C052B79D1C0 +:10A4A00004208DF80000A0788DF804007088ADF8C5 +:10A4B000060030798DF80100707800F03F000C281C +:10A4C00029D00ADCA0F10200092863D2DFE800F0FD +:10A4D000126215621A621D622000122824D004DC68 +:10A4E0000E281BD01028DAD11BE016281FD0182800 +:10A4F000D5D11FE02078800701E0207840070028B0 +:10A5000048DAF0E020780007F9E72078C006F6E79F +:10A5100020788006F3E720784006F0E720780006F0 +:10A52000EDE72088C005EAE72088C004E7E7208837 +:10A530008004E4E720884004E1E72078800729D5FB +:10A54000032B27D18DF800A0B6F8010082E0217816 +:10A5500049071FD5062B1DD381B27078012803D07F +:10A56000022817D102E0CBE0022000E010200622F2 +:10A570008DF8002072788DF80420801CB1FBF0F279 +:10A58000ADF8062092B242438A4203D10395ADF85A +:10A590000890A8E07AE02078000777D50721B8B2C4 +:10A5A0008DF800108108ADF80410B0EB810F6DD16B +:10A5B0000295ADF8062096E02178C90666D5022BF3 +:10A5C00064D381B208208DF80000707802285DD332 +:10A5D000B1FBF0F28DF80400ADF8062092B24243D0 +:10A5E0008A4253D1ADF808907CE0207880064DD5A2 +:10A5F000092003E02078400648D50A208DF80000A5 +:10A60000A088ADF80400ADF80610ADF8082069E0A8 +:10A610002078000672D50B20ADF804108DF80000EC +:10A62000ADF8062002955EE02188C90566D5022BAB +:10A6300064D381B20C208DF80000707804285DD3BB +:10A64000C6E72088C00459D5012B57D10D208DF8BD +:10A650000000A088ADF8040045E021E026E016E007 +:10A66000FFE72088800449D5052B47D30E208DF8BD +:10A670000000A088ADF80400B6F803005B1FADF839 +:10A680000830ADF80600ADF80AA02BE036E02088CF +:10A69000400433D5012B31D10F208DF8000022E08A +:10A6A000208800042AD4B6F80100E080207B00074F +:10A6B00024D5032B22D3307800F03F001B2819D07B +:10A6C00011208DF80000208840F40040A4F800001C +:10A6D000B6F80100ADF80400DB1E0320ADF806302B +:10A6E000ADF80800039559466846FBF71DF80500CC +:10A6F00008D016E010208DF80000E9E7072510E0EB +:10A7000008250EE0307800F03F001B2809D01D28F6 +:10A7100007D00320109908F0D0F8208800F40040FA +:10A720002080207B400708D52046FFF785FCC00726 +:10A7300003D1207B20F0040020732846CDE400B52F +:10A7400087B0032806D18DF80000019100216846EA +:10A75000FAF7EAFF07B000BDF8B51C4615460E46ED +:10A76000069F04F013FC2346FF1DBCB231462A4667 +:10A77000009404F052F8F8BD2DE9FF4F8FB0054664 +:10A78000DDE91C471198DDF880B0082805D0E8699C +:10A7900001F031F950B11020CDE02088092140F0BE +:10A7A000100020808BF80010022017E0E9690120DA +:10A7B0008871EA694FF420519180E9698872E969EA +:10A7C00042F601000881E969002088732088112180 +:10A7D00040F0200020808BF800100420814638785B +:10A7E0000B900A2038704FF0020A05F11800564607 +:10A7F0000D9001F0A1FB4C467CE0119810280DD182 +:10A80000022E0BD0AAEB0400801C80B2009021988D +:10A81000022380B206AA1F9901F0DDF8BDF81A10D4 +:10A820001298814203D9F648007A109004E003D1CF +:10A830000B9808B1387031E02198CDF800A080B2B3 +:10A840004FF002030DF11A021F9901F0C4F81E988F +:10A850000088811BA1EB090083B2C9F1FF00984277 +:10A8600000D203460AEB090292B20DF130080292BF +:10A8700000202199CDF81480CDE903101F9910987C +:10A88000CDE9000195F82010BDF81A00002201F072 +:10A89000D5FB387050B1C0B2832803D0BDF81A0080 +:10A8A000288334E0022013B0BDE8F08FBDF83000FB +:10A8B000022E00EB0901CCB20CD09BF80110A14292 +:10A8C00005D1BDF82410814206D0FF2C04D09BF89E +:10A8D00001401EE08BF80140C94800680178052955 +:10A8E00002D1BDF81A1081800AEB04001FFA80FA29 +:10A8F000301986B206AB219A10990D9801F01FFB12 +:10A9000028B91E980088801BA042BFF676AF022EA1 +:10A9100012D0119810280BD1AAEB0400801C80B231 +:10A9200000902198022380B206AA1F9901F053F8E3 +:10A930001E980680002038700020B4E72DE9F84307 +:10A940009446089E02460027F06BB0B3521F94B2A3 +:10A95000B6F84220A2F57F45FF3D05D08518AD88A9 +:10A960002A44921D95B200E000252A19B6F84080CD +:10A970000832424522D84219BCF8010022F8020BE5 +:10A98000BCF8030022F8020B98B222F8024B894669 +:10A99000904604F0E9FA4FF00C0C49464246234633 +:10A9A000CDF800C003F000FFA6F84250F16B002084 +:10A9B0002944A41D2144088003E001E0092700E0A8 +:10A9C00083273846BDE8F88310B50B88B0F84040BF +:10A9D0009C420CD9C46BE018048844B1848824F4E8 +:10A9E0000044A41D23440B801060002010BD822071 +:10A9F00010BD2DE9F0478AB0002590468946824671 +:10AA0000ADF81C5007274DE00698068880880004A2 +:10AA100048D4A8F8006008A8CDE90450CDE9007535 +:10AA2000029503954FF4007300224946304601F029 +:10AA300005FB04003DD1BDF81C00ADF824000699CB +:10AA400008888A88B04216D1130414D40595CDE93C +:10AA5000007522F4004202950395049542F4804368 +:10AA60004A88494601F0CDF804000BD10698818848 +:10AA700041F40041818006AA09A95046FFF7A4FFCE +:10AA80000400DCD00595CDE9007506980395029584 +:10AA900004950088BDF820300022494601F0B1F845 +:10AAA000822C06D106AA07A95046FFF78DFF0400A5 +:10AAB000AAD0ADF81C5004E00698818821F400412A +:10AAC000818006AA07A95046FFF77EFF0028F3D031 +:10AAD000822C03D020460AB0BDE8F0870020FAE7B8 +:10AAE00030B50446C06B85B0002578B10C208DF8D8 +:10AAF0000000B4F84000ADF80800E06B039101904D +:10AB000000216846FBF78DFC8DF8005044F83C5F4F +:10AB10004FF6FF70E080A58005B030BD2DE9F04113 +:10AB200005460F46E96B0020069E1446002911D009 +:10AB3000012B0FD1324639462846FFF75AFF00282D +:10AB400008D1002C06D0324639462846BDE8F041EF +:10AB500000F060BFBDE8F081F8B51D46DDF818C013 +:10AB6000DDE907634C1DBCF800E0A4B2099FA645CF +:10AB700001D20720F8BDACF80040172403F8014BC0 +:10AB800018805A80052000900B46B8B22A463146FC +:10AB900000F021FF0020F8BD70B50D4604464C21A1 +:10ABA00013F01BFA04F1080044F81C0F00204FF6C4 +:10ABB000FF712062E184A08425711720208514F89C +:10ABC0002C0F40F00A00207070BD4FF6FF7202801B +:10ABD000042007F072BE30B585B00D460446FFF77D +:10ABE0007FFF208F38B101208DF8000000216846DA +:10ABF0000195FBF716FC002020636063A0638BE7E0 +:10AC0000F405002090F84820920703D4408808807B +:10AC1000002070470620704790F84820920701D521 +:10AC2000A0F8461070470146002009880A0700D5A1 +:10AC3000012011F0F00F01D040F00200CA0501D54B +:10AC400040F004008A0501D540F010004A0501D506 +:10AC500040F02000090501D540F04000704700B5E4 +:10AC6000034690F84800C00701D0062000BDA3F8B5 +:10AC700044101846FFF7D7FF10F0760F05D093F871 +:10AC8000480040F0040083F8480013F8480F40F0F3 +:10AC900001001870002000BD90F84820520700D530 +:10ACA00011B1B0F8440070471720704710F8482FD2 +:10ACB00061F3C302027070472DE9FF4F9BB006009D +:10ACC000DDE92CB4289F1E9D2A9B25D02878C1073A +:10ACD00003D000F03F00192801D9012100E0002134 +:10ACE0002046FFF7D9FFB04216D3287841060FD48B +:10ACF00000F03F011E2909D0218811F47F6F0BD18C +:10AD00003A884AB1A1F57F42FF3A05D0010606D53F +:10AD100000F03F00122802D004201FB0C4E5F8491B +:10AD20001C984FF0000908728DF818908DF83C902F +:10AD30000FAA0A602B9A4A60ADF81C90ADF85090AB +:10AD40002A789A4602F03F0C0420711F04F1180380 +:10AD50004FF007084FF0030E1693BCF11F0F7DD282 +:10AD6000DFE80CF07C7C107C257CA97CFD7CFC7CE5 +:10AD7000FB7CFA7CFD7CF97C7C7CF87CF77C7C7C21 +:10AD80007C7CF60094F84820B5F80110920701D5B4 +:10AD9000032E02D08DF8180039E34FF40060ADF8AF +:10ADA000500061808DF83CE0ADF84010F1E2052ED6 +:10ADB000F0D1B5F801002083ADF81C00B5F8031000 +:10ADC000618300286BD0884269D80020A07220815E +:10ADD0004FF6FF706084169801F0AEF805208AF8EF +:10ADE00000000220804601900AAB5A461C99169832 +:10ADF00001F0A5F898BB9DF82E00012804D002218F +:10AE00008AF80110102003E001208AF801000220D6 +:10AE10000490002203A90BA805F021FCF0BB9DF8CB +:10AE20000C00049981423CD13A88801CA2EB0801B5 +:10AE3000814236DB019800901FFA8BF002230DF15E +:10AE40002A02299900F0C7FD019808F10208801C28 +:10AE500081B2019117AA03A90BA801E0B8E223E08F +:10AE600005F0FDFB019900911FFA8BF09DF80C3065 +:10AE700017AA299900F0AFFD9DF80C000AAB08EB6A +:10AE800000011FFA81F801995A46084480B20190E6 +:10AE90001C99169801F053F8002801E001E095E0B4 +:10AEA000B7D0B8F1020F03D10A208DF818006DE277 +:10AEB000A7F800806AE2072EFFF46CAFB5F8010036 +:10AEC0002083ADF81C00B5F80310618300287DD005 +:10AED00088427BD80120A072B5F8050020810020AF +:10AEE000A073E06900F087FD78B9E16901208871FD +:10AEF000E2694FF420519180E1698872E16942F67C +:10AF000001000881E16900208873F01F60841D98AA +:10AF1000A062A4F82480169801F00EF88AF8008048 +:10AF20000120804602900020ADF82A002BE000BFEF +:10AF3000B8F1010F1DD0E0698079012803D1BDF877 +:10AF40002800ADF80E00029800901FFA8BF007E081 +:10AF50002BE2ADE13BE1DCE025E29FE076E03BE087 +:10AF6000042303AA299900F036FD0298001D80B23F +:10AF70000290BDF82A00ADF80C00ADF80E0008F103 +:10AF800004001FFA80F80AAB5A461C99169800F084 +:10AF9000D6FF20B93988A1EB08000428C8D2B8F13F +:10AFA000010F81D0E0698079012805D0BDF8281013 +:10AFB000A1F57F40FF3803D1BDF82800ADF80E00A1 +:10AFC000029800901FFA8BF0042300E014E003AA1B +:10AFD000299900F000FD6BE7072E02D0152E7FF4B3 +:10AFE000D9AEB5F801002083ADF81C00B5F80320F8 +:10AFF000628308B1904201D90120CBE60120A07202 +:10B0000000202081A073052E07D0C8B2691DE26917 +:10B0100005F006FB00287FF447AF4FF6FF70608411 +:10B02000299803A9029781E8010C06A814A9CDE983 +:10B0300000102878002300F03F0220461C99FFF7FB +:10B040009BFB8146208BADF81C009FE1032ED4D1E1 +:10B050004020ADF85000B5F801002083ADF81C0089 +:10B060000DF1300C01230021CDF814C00293CDE97D +:10B0700003B1299A1C99CDE9001239880022491E92 +:10B080008BB294F8201000F0D9FF8DF8180090BB17 +:10B090000B208AF80000BDF8300038E0052EACD156 +:10B0A0008020ADF85000B5F801002083B5F80310FA +:10B0B0006184ADF81C00B1F5007F02D98DF81880CD +:10B0C000A5E141F47C4262840DF1280800214FF093 +:10B0D000010CCDE90418CDE902CB299B1C99CDE9DF +:10B0E00000133988491E8BB294F8201000F0A6FF97 +:10B0F0008DF8180030B18328A7D10220D6E00000D7 +:10B10000F40500200D218AF80010BDF82800401C2D +:10B110003BE1D10901EB41030EEB8301B14204D9BC +:10B1200051067FF56AAF00202FE1B5F80100ADF8B8 +:10B130001C002A78520609D506228DF83C202A7870 +:10B14000120605D500208DF83C0043E18DF83C80C7 +:10B150004FF0030C4FF00008CDF808C0CDE903B85C +:10B16000DDE91C23CDF81480CDE90023A6EB010B0B +:10B170001FFA8BF394F82010424600F042FD8DF840 +:10B1800018008DF83C80297849060DD52088C00527 +:10B1900006D5208BBDF81C10884201D1C4F8288048 +:10B1A00040468DF81880F0E0832801D14FF0020965 +:10B1B0004FF48070ADF85000BDF81C002083A4F857 +:10B1C00022B01D98A0620320A0841321DAE0052E8E +:10B1D000FFF413AFB5F80100ADF81C00B4F840203F +:10B1E0007AB3A2F57F43FE3B2CD008228DF83C2099 +:10B1F0004FF0050C4FF00008CDF808C0CDE903B8BA +:10B20000DDE91C23CDF81480CDE9002389B241F497 +:10B210000043B5F8032094F8201000F0F2FC8DF8FC +:10B220003C804FF400718DF81800ADF85010832861 +:10B2300013D010B3B4F84010A1F57F40FE3809D008 +:10B24000E5E0FFE70B228DF83C204FF6FE72A4F8F4 +:10B250004020CDE7A4F84080D9E05B462A46009420 +:10B2600030461D99FFF76AFB8DF8180008B1832856 +:10B270004CD1BDF81C0020833FE75B462A46009472 +:10B2800030461D99FFF75AFB8DF81800F0BBB4F853 +:10B290004210E06B299A431801A8009780E8040C3B +:10B2A0005A88998833F8060BFFF756FC81466DE003 +:10B2B00095F80180022E75D15FEA080002D0B8F13E +:10B2C000010F6FD109208DF83C0007A800908DF880 +:10B2D000408094F82010434600222046FFF71EFCD1 +:10B2E0008DF8410000218DF8421058B9B8F1010FD6 +:10B2F00015D0B8F1000F05D1B4F84010A1F57F408A +:10B30000FF380CD0B4F8400048B100E03EE0002027 +:10B310008DF83C004FF48060ADF850000EE00FA8AF +:10B320002B99FBF77EF8814600208DF83C004FF406 +:10B330008060ADF85000B9F1020F06D0F8480068FF +:10B34000807928B18DF8180028E0A4F8188043E02F +:10B35000B9F1000F03D081208DF818003CE007A858 +:10B36000009094F82010434601222046FFF7D6FBB8 +:10B370008DF8180059462046FFF7B2FB9DF81800DB +:10B3800020B919218AF80010012038809DF83C006E +:10B3900020B10FA82B99FBF744F88146B9F1000FB3 +:10B3A00032D019E016E00620F4E42078000711D529 +:10B3B000012E0FD10A208DF83C00E088ADF8400046 +:10B3C0005946042007F079FA0820ADF85000AAE6A3 +:10B3D0005106E9D54FF004092088BDF85010084304 +:10B3E0002080BDF8500080050CD5B4F84010A1F5C0 +:10B3F0007F40FE3806D11D9820631E986063268723 +:10B400004FF00309484688E49DF8180078B1012000 +:10B410008AF8000029788AF80110BDF81C10AAF8F3 +:10B4200002109DF818108AF8041005203880208832 +:10B43000BDF8501088432080E4E72DE9FF4F97B016 +:10B44000804601780120DDE926A488404FF20901F9 +:10B450000840ADF8200021889B46A1F57F424FF0BF +:10B460000009FF3A02D028B1080703D501201BB01C +:10B47000BDE8F08F249E0020054630701999189A77 +:10B480000988ADF84010A6498DF81C000A728DF8A5 +:10B490002C000BA808602598486098F80000012847 +:10B4A00037D0022809D003287ED1307820F03F0021 +:10B4B0001D303070B8F80400E08098F800000228D1 +:10B4C00004D1307820F03F001B30307094F84800F1 +:10B4D000000769D513AB0020CDE904030721CDE9AE +:10B4E000001B0322CDE9022ABDF8400094F8201089 +:10B4F000C01E83B2B8F80400002200F09FFD0028AF +:10B50000D2D1B8F80400A6F80100BDF84C00C01C68 +:10B5100003E198F805108DF81C1098F80400012834 +:10B5200006D04FF4007902282BD00328BCD171E15A +:10B530002088B8F8087010F40060ADF8200033D00F +:10B54000172F1CD3FEF73EFDB84218D3B4F84600BF +:10B55000172801D3B84212D1307820F03F00C01C28 +:10B560003070A6F801700320ADF84000A4F84670D2 +:10B5700094F8480020F0020084F848006CE10525AA +:10B5800085E1208808F1080700F4FE60ADF820008E +:10B5900010F0F00F1ED010F0C00F03D03888228BAF +:10B5A0009042ECD1B1B900E06BE1B878C00711D09E +:10B5B0000020B9680290CDE9030107210590CDE98B +:10B5C0000010FB88BA8894F82010388800F019FB26 +:10B5D0000028D4D1BDF8200080284CD006DC1028EB +:10B5E0000DD020280BD040288AD124E0B0F5807FF0 +:10B5F0006AD048457ED0B0F5806F97D1E2E0C006B2 +:10B6000001D5082000E01020814605208DF82C008F +:10B61000002008A9ADF8300001AB009110AA07A8DE +:10B6200083E80508CDE9046A3B884A46072120469D +:10B63000FFF7A2F8A8E09DF81C004FF00A090028C7 +:10B640009CD113ABCDE904030721CDE9001B0122F6 +:10B65000CDE9022ABDF8400094F82010401E83B2C4 +:10B66000208B002200F0EAFC8DF81C000B203070CB +:10B67000BDF84C001EE09DF81C004FF00C0900289E +:10B6800021D115ABCDE904030721CDE9001B01222F +:10B69000CDE9022ABDF84000628C401E83B294F8C6 +:10B6A0002010208B00F0CAFC8DF81C000D2030709B +:10B6B000BDF85400401CADF8400005208DF82C006A +:10B6C000208BADF83000C7E03888B4F818C060456A +:10B6D0007FF455AF9DF81C004FF0120900281ED1D1 +:10B6E000A06AB8B1B878C0073FF449AF0020B96884 +:10B6F000029000E016E0CDE9030107210590CDE9B5 +:10B700000010FB88BA8894F82010604600F079FA9F +:10B710008DF81C00132030700120ADF840009BE034 +:10B72000F4050020B7F800C0208B8445D0D19DF8E7 +:10B730001C004FF016090028E06B06D0F0B3002083 +:10B74000ADF808004FF6FF7729E078B1B978C9075E +:10B75000BED1B4F8421010AACDE9002BCDE9026A9F +:10B7600043185A88998833F8060B0BE0B878C0075D +:10B77000BAD010AACDE9002BCDE9026ABA88F988BF +:10B780006046BB68FFF7E8F9050065D0072D79D062 +:10B790007DE00F4605AA02A92046FFF715F9B4F887 +:10B7A0004220BDF808108A4201D00028F1D0B4F838 +:10B7B0004210E26B00201144088000E04CE0A4F845 +:10B7C000427049E09DF81C004FF0180940B1208BF1 +:10B7D000D0B13888208351462046FFF781F93BE0FD +:10B7E00004F118000090237E94F8201001222046D6 +:10B7F000FFF794F98DF81C000028ECD11920307067 +:10B800000120ADF84000E6E7052551462046FFF748 +:10B8100067F93CE0208800F40070ADF8200048454E +:10B820002FD1B4F84000A0F57F41FE3990D1D8F86F +:10B8300008004FF0160958B1E063B8F80C10A4F8EE +:10B8400040104FF6FF71A4F842100021018003E080 +:10B850004FF6FF70A4F84000BDF8200030F47F617F +:10B860001AD0782300225146042006F089FF98F868 +:10B87000000020712088BDF82010084320800EE0D1 +:10B8800000E007252088BDF820108843208020880C +:10B8900010F47F6F1DD03EE02188814321809DF808 +:10B8A0002C0028B16F4841680BA8FAF7BAFD05468D +:10B8B0009DF81C000028EAD086F801900120307025 +:10B8C000208B70809DF81C0030710520ADF8400081 +:10B8D000DDE7208FF8B119990988ADF84010DDE94E +:10B8E000242302A9059481E80C0410AACDE9002BB9 +:10B8F000D4E90C231899FFF7DFF9054601208DF8EC +:10B900002C0000210BA8CDF830A0FAF78AFD00B179 +:10B9100005460020208794F8480040070AD52046B5 +:10B92000FFF781F910F0760F04D114F8480F20F0DA +:10B93000040020701998BDF840100180284696E553 +:10B9400000B585B0042807D102208DF800000191D0 +:10B9500000216846FAF765FD05B000BD10B5414A03 +:10B9600003781168012B02D0022B2BD112E00B7847 +:10B970000BB1052B01D104230B70136881889980CA +:10B980001168C388CB8013680189198111684089C7 +:10B9900048810FE083888B801168C388CB8013684F +:10B9A00001891981136841895981116883898B81C3 +:10B9B00000690861D2E90001FAF733FD022803D0DB +:10B9C000002800D0812010BD832010BDC06B00284E +:10B9D00000D001207047F8B51C4615460E46069F5C +:10B9E00003F0D4FA2346FF1DBCB231462A46009428 +:10B9F00002F013FFF8BD8178012909D10088B0F564 +:10BA0000205F03D042F60101884201D10020704737 +:10BA100007207047F0B589B0002415460E4607464A +:10BA2000ADF8184011E0079801882980811D029423 +:10BA3000CDE9034107210594CDE9001483884288AC +:10BA40000088314600F0DDF830B907AA06A938466B +:10BA5000FEF7BAFF0028E6D0822800D1002009B006 +:10BA6000F0BD0000F405002010B58B7883B102789A +:10BA70009A4205D10B885BB102E08B79091D4BB16D +:10BA80008B789A42F9D1B0F801300C88A342F4D1F6 +:10BA9000002010BD812010BD072826D012B1012A38 +:10BAA00027D103E0497801F0070102E04978C1F3AA +:10BAB000C20105291DD2DFE801F00318080C1200AD +:10BAC0000AB1032070470220704704280DD250B1FC +:10BAD0000DE0052809D2801E022808D303E00628BD +:10BAE00003D0032803D005207047002070470F20A3 +:10BAF00070478120704710B513880B800B781C06A7 +:10BB00001FD5F64CA47A844204D843F01000087084 +:10BB1000002010BD94682478C44064F304130B70B3 +:10BB20001378D17803F0030341EA032140F20123A3 +:10BB3000B1FBF3F403FB1411926800FB0120401CDD +:10BB400010BD906810BD37B5BDF8041011809DF888 +:10BB5000045029061BD5E14901239468897A814262 +:10BB600009D8FE280FD1E80602D58B405B1E00E005 +:10BB70000023237007E0217883409943C5F3001325 +:10BB8000834019432170107820F0100010703EBDE2 +:10BB90002DE9F0410746C81C0E4620F00300B042D4 +:10BBA00002D08620BDE8F081082A01D90E20F9E7ED +:10BBB000CA4D002034462E60AF802881AA72E880EA +:10BBC0001AE0E988491CE980810614D4E17800F084 +:10BBD000030041EA002040F20121B0FBF1F201FB39 +:10BBE0001201206800F021FB2989084480B22881D5 +:10BBF000381A3044A0600C3420784107E1D400208A +:10BC0000D0E72DE9FF4F87B01646DDE9147A80466C +:10BC1000994623F4404500F0F8FA04000BD0207850 +:10BC200000060AD5AD48817A0898814205D8872058 +:10BC30000BB0BDE8F08F0120FAE7224601A9089871 +:10BC4000FFF759FF834600208DF80800072F1BD00F +:10BC5000012221463846FFF71FFF0028E8D120784F +:10BC6000400611D502208DF80800BDF80400ADF89B +:10BC70000C80ADF80E00ADF810601698ADF81250BB +:10BC8000CDF818A0ADF814005FEA094004D50025EE +:10BC90002E46A84601270CE02178E07801F0030148 +:10BCA00040EA012040F20122B0FBF2F1804602FBA3 +:10BCB00011875FEA494009D5B84507D1A1782079B5 +:10BCC00001F0030140EA0120B04201D3BE4201D994 +:10BCD0000720ADE7A8191FFA80F9B94501D90D2051 +:10BCE000A6E79DF8080020B102A8FAF798FB002803 +:10BCF0009ED1B84507D1A0784FEA192161F3010020 +:10BD0000A07084F80490199800B10580189850EA42 +:10BD10000A0028D0189830B10BEB06002A46189973 +:10BD200012F0C2F80FE017980BEB060880B25746E6 +:10BD3000169E03F019F92B46F61DB5B23946424658 +:10BD4000009502F031FD224601A90898FFF7D3FEC5 +:10BD50009DF80400224620F010008DF8040001999F +:10BD60000898FFF7F0FE002062E72DE9FF4FDFF8AB +:10BD70006C9182461746B9F80610D9F8000001EB1D +:10BD8000410100EB810440F20120B2FBF0F187B0E9 +:10BD900000FB11754E46DDF854802946089800F0E6 +:10BDA00044FA316832898B46611A0C3101441144DE +:10BDB000B38889B28B4201D8842039E70899CEB282 +:10BDC000310603D5B10601D5852031E7B9F806C0A3 +:10BDD0000CF1010C1FFA8CFCA9F806C0169909B1E8 +:10BDE000A1F800C0B10602D5C4F8088007E01044ED +:10BDF00080B2A9F80800191A01EB0B00A0602246D6 +:10BE0000FE200899FFF79FFEE77025712078390A18 +:10BE100061F301002A0AA17840F0040062F30101F5 +:10BE2000A17020709AF802006071BAF80000E080FA +:10BE300000252573300602D599F80A7000E0012725 +:10BE4000B00601D54FF000084E4600244FF0070918 +:10BE50000FE00295CDE903580595CDE90095F088EE +:10BE60002146149B0A9AFFF7CCFE0028A5D1641C3A +:10BE7000E4B2BC42EDD30020DAE62DE9F04780467B +:10BE800000F0C3F9070005D000264446134D40F2E8 +:10BE9000012916E00120BDE8F087204600F0B5F941 +:10BEA0000278C17802F0030241EA0222B2FBF9F300 +:10BEB00009FB1321006800F0B8F93044641C86B215 +:10BEC000A4B2E988601E8142E7DCA8F10100E880A5 +:10BED0002889801B288100203870DCE700060020BC +:10BEE00020B1401E108091700020704701207047E3 +:10BEF00010B5D54904460088CA88904201D38220F3 +:10BF000010BD096800EB400001EB80025079A0727F +:10BF1000D08820819178107901F0030140EA012056 +:10BF2000A081A078E11CFFF7E6FD20612088401C7D +:10BF30002080E080002010BD0121818270472DE922 +:10BF4000FF4F83B04FF6FF780546A3F800804068A6 +:10BF50001F4680788DF8060068680088ADF80400F8 +:10BF600000208DF80A00A88A2C88A04200D304463D +:10BF7000AC8242E0A88A401CA882701D6968FFF765 +:10BF800073FDC0BB3988414501D1601E3880688887 +:10BF9000A04237D3B178307901F0030140EA01299A +:10BFA00001A9701DFFF760FD28BB698941452ED0AE +:10BFB000002231460498FFF76FFDE0B969894945D1 +:10BFC00019D10598D5F810B0B5F80CC0D6F808A06E +:10BFD00080B2CDF800C002F0C7FFDDF800C05946BE +:10BFE0000CF1070C1FFA8CFC52464B46CDF800C0F2 +:10BFF00002F09DFB58B1641CA4B2204600F005F984 +:10C000000600B7D1641EAC82822007B011E67C80A6 +:10C010007079B871F088B8803178F07801F0030158 +:10C0200040EA01207881A7F80C90287A324607F17F +:10C030000801FFF760FD38610020E6E72DE9FF4FBA +:10C0400087B01C46DDE9158B91460F46DDF864A0EC +:10C05000079800F0DAF8050008D02878000607D520 +:10C060007948807AB84203D88720E1E50120DFE5EE +:10C07000C9F309062A4601A93846FFF73CFD0746E1 +:10C08000149807281BD000222946FFF705FD002839 +:10C09000EBD12878400612D501208DF808000798CA +:10C0A000ADF80C00BDF80400ADF80E00ADF810605E +:10C0B000ADF8124002A8FAF7B2F90028D5D12978D4 +:10C0C000E87801F0030140EA0121AA78287902F01A +:10C0D000030240EA02204E4507D0B1F5007F04D9A3 +:10C0E000611E814201DD0B20A2E5864201D90720B5 +:10C0F0009EE5801B85B2A54200D92546BAF1000F06 +:10C1000001D0AAF80050189818B1B9192A4611F0B0 +:10C11000CBFEB8F1000F0ED017983E4480B24446D3 +:10C120005F4602F033FF2146FF1DBCB232462B466C +:10C13000009402F072FB00207AE52DE9F0411D46E3 +:10C1400017460E4600F061F8040008D0207800067B +:10C1500007D53D48807AB04203D8872022E50120E8 +:10C1600020E5224639463046FFF7C5FC65B1217807 +:10C17000E07801F0030140EA0120B0F5007F01D82A +:10C18000012000E00020287000200BE52DE9F0419F +:10C190001D4617460E4600F038F8040008D02078F7 +:10C1A000000607D52848807AB04203D88720F9E4F2 +:10C1B0000120F7E4224639463046FFF7C4FCFF2D44 +:10C1C00014D02178E07801F0030240EA022040F226 +:10C1D0000122B0FBF2F302FB130015B900F20120BB +:10C1E00080B2E070000A60F3010121700020D9E400 +:10C1F00010B50C4600F009F828B1C18821804079BB +:10C20000A070002010BD012010BD0F49CA888242D5 +:10C2100009D340B1096800EB40006FF00B0202EB5C +:10C2200080000844704700207047C0B2820609D4DD +:10C23000000605D50448807A4843401C80B2704708 +:10C2400008467047002070470006002010B506F031 +:10C250001BFD05F088FFF6F7D7FD10F011FE06F084 +:10C26000EBFBBDE8104006F09DBC10B50C4601F09C +:10C27000A4FE80B3204600F0A8FA68B322780F2A03 +:10C2800009D0102A07D0022A05D0032A03D0142A85 +:10C290002ED0FFDF1DE0A0781E282DD00EDC0C284C +:10C2A00024D008DC092827D2DFE800F0132617265F +:10C2B000261E1E1A1C0012281ED11BE0302819D081 +:10C2C0001ADDA0F13A00032816D2DFE800F01115BC +:10C2D0000B00002010BD13E010E043F20200F9E76C +:10C2E0000420F7E70D20F5E70F20F3E70820F1E73A +:10C2F0001120EFE70720EDE70320EBE7FFDFE8E79A +:10C30000FFDFE6E700F061BA70B5034600200246A1 +:10C310006FF02F050EE09C5CA4F130060A2E02D3CC +:10C320004FF0FF3070BD00EB800005EB4000521C69 +:10C330002044D2B28A42EED370BD30B50A240AE05E +:10C34000B0FBF4F304FB13008D18303005F8010C3A +:10C35000521E1846D2B2002AF2D130BD30B50023A9 +:10C360004FF6FF7510E0040A44EA002084B2C85C6E +:10C370006040C0F30314604005EA00344440E0B27A +:10C380005B1C84EA40109BB29342ECD330BD0000AA +:10C3900010B50AF04CF8042803D00AF048F8052834 +:10C3A00002D108F05FFD50B90AF0FEF8032803D06F +:10C3B0000AF000F9032804D107F0EFFC08B10120CE +:10C3C00010BD002010BD70B50C460546062102F0D8 +:10C3D00068FC606008B1002006E00721284602F0F2 +:10C3E00060FC606018B101202070002070BD022048 +:10C3F00070BD2DE9FC470C4606466946FFF7E3FF92 +:10C4000000287DD19DF8000050B107F022FCB04219 +:10C410007CD0214630460DF020F9002873D115E07C +:10C4200008F039FAB04271D0214630460BF0CAFF0D +:10C43000002868D1019D95F8C000503518B9687E74 +:10C4400008B1012000E00020804603E0019D95F83E +:10C45000698050354FF0010A95F835004FF000091A +:10C46000A0B195F83600800710D584F8019084F8C3 +:10C4700000A084F80290A68095F83710A171298F4A +:10C480002181698F618185F835903CE0304602F06A +:10C490007DFD070000D1FFDF384601F078FF10F086 +:10C4A000FF0008D084F801900D212170A680E08063 +:10C4B00084F802A027E0304602F056FD070000D1C4 +:10C4C000FFDFB8F1000F21D0384601F0F0FFB8B11E +:10C4D0009DF8000038B90198D0F8E4004188B142D5 +:10C4E00001D180F80090304607F075FA84F8019089 +:10C4F0000A21217084F80290A680A97EA17100E033 +:10C5000004E085F819900120BDE8FC870020FBE7D6 +:10C510001CB56946FFF757FF00B1FFDF684601F021 +:10C52000A0FDFF4900208968A1F8C2001CBD2DE9CB +:10C53000FC4104460E46062002F05EFB054607203D +:10C5400002F05AFB2844C7B20025A8463E4417E033 +:10C550002088401C80B22080B04202D34046A4F81C +:10C56000008080B2B84204D3B04202D20020BDE8BD +:10C57000FC816946FFF727FF0028F8D06D1CEDB25B +:10C58000AE42E5D84FF6FF7020801220EFE738B5B5 +:10C590004FF6FF70ADF800000DE00621BDF8000079 +:10C5A00002F091FB04460721BDF8000002F08BFB6E +:10C5B0000CB100B1FFDF00216846FFF7B8FF00288B +:10C5C000EBD038BD2DE9F041D6A00679076807F019 +:10C5D0006FFA0EF047FCD54C4FF004081020A4F879 +:10C5E000388060874FF6FF70A4F85600002584F865 +:10C5F0005850A4F85A0084F8315004F8345BCB4901 +:10C6000004F8065C25702572C4F809703D31667324 +:10C61000481E0CF051F8A5731B2020824FF4A47122 +:10C620006182A082E1820A21217684F819800321A7 +:10C63000A176E1760E212177072161770621A17786 +:10C64000E1772084BDE8F08170B5B54C0D4660609F +:10C65000217007F0A8F9FFF79AFFFFF7B3FF2078E2 +:10C6600009F099FC08F03CFA217860680BF043FF70 +:10C6700020780DF0A9FF28460AF04EFB07F029FBB1 +:10C68000217860680DF094F8BDE870400EF0EABBC8 +:10C6900010B501240AB1002010BD21B1012903D039 +:10C6A0000024204610BD02210FF030FEF9E72DE9ED +:10C6B000F047040000D1FFDF9C4D002695F83100C3 +:10C6C00058B166701420207095F83200A07095F86B +:10C6D0003300E07085F8316068E0287840B12C22A2 +:10C6E000A91C204611F0E0FB0F2020702E705DE0A9 +:10C6F00095F82E0060B10120E07095F82F00A07031 +:10C7000095F8300060701020207085F82E604DE0A4 +:10C71000864802215A308246FFF709FF00B1FFDF49 +:10C72000B5F85A90062002F067FA0746072002F093 +:10C7300063FA3844C7B2781C00F0FF08B5F85A0015 +:10C74000B84212D1204608F039F850BB95F83400B1 +:10C7500078B36670122020702021A01C11F01BFC01 +:10C760000220A07085F8346020E040451AD12046B0 +:10C7700007F044FAE8B12078122817D1A0783C28B5 +:10C7800014D1A088072102F08CFA050000D1FFDF48 +:10C79000288807F020F9A088072102F094FA00B158 +:10C7A000FFDF03E02146FFF724FE10B10120BDE8C2 +:10C7B000F087FFE702215046FFF7B9FE18B9B5F838 +:10C7C0005A104945BAD10020F1E770E710B509F0D9 +:10C7D0005FFB00B1FFDF0BF08CFE00B1FFDF08F064 +:10C7E00049F90AF082FA00B1FFDF0CF0DFFF00B177 +:10C7F000FFDF07F038FA00B1FFDF0DF0DFFE00B118 +:10C80000FFDFFFF7C4FEFFF7DDFE07F0B5F802F02B +:10C810009AFB0EF027FB454800210171012141716F +:10C820000222C270017010BD10B5404C207828B1B2 +:10C830000A21BDE810400F2001F0D8BBFFF7A8FD8A +:10C8400008B10C2002E00EF053FB00202071012003 +:10C8500060710A21E170207010BD70B5334D04463F +:10C86000287828B1BDE8704032210F2001F0BEBB0E +:10C87000207818B1012801D0122010E001F0C3FB8C +:10C8800020B10EF080FC08B10C2008E0207801F007 +:10C89000A2FB04F11703E21D611C0EF081FB28715D +:10C8A000012068713221E970287070BD70B51F4C8D +:10C8B0000546207828B1BDE870400B210F2001F01B +:10C8C00095BB287818B1012801D012200EE0FFF79F +:10C8D0005FFD08B10C2009E0287801F07CFB691CA1 +:10C8E0000EF0CDFA08B1002000E0072020710120F1 +:10C8F00060710B21E170207070BD10B50B4C217878 +:10C9000029B13021BDE810400F2001F06FBB008835 +:10C910000EF03CFC302158B10020207109E00000ED +:10C9200048000020FFFFFFFF1F0000000C06002052 +:10C93000217101206071E170207010BD70B5FF4C55 +:10C940000546207828B1BDE8704031210F2001F064 +:10C950004DBB01F058FB08B10C2005E0287800F031 +:10C9600001000EF00DFC00202071012060713121CA +:10C97000E170207070BD10B5F04C207828B13421E2 +:10C98000BDE810400F2001F031BB01F03CFB20B1AD +:10C990000EF0F9FB08B10C2002E00EF058FB00206D +:10C9A0002071012060713421E170207010BD10B53C +:10C9B000E24C217829B13621BDE810400F2001F06A +:10C9C00015BB0378411CA21D18460EF041FC08B1AE +:10C9D000002000E002202071012060713621E1700A +:10C9E000207010BD70B5D54C0546207828B1BDE843 +:10C9F000704037210F2001F0F9BA287801F0EBFAE6 +:10CA0000691C0EF0D1FB022508280AD00EF00FFD9C +:10CA100038B10168C4F80610808860810020207158 +:10CA200000E02571012060713721E170207070BD38 +:10CA3000C248017819B10F21084601F0D7BA002188 +:10CA400001710F218170C170FF2181714FF6FF715B +:10CA50000181BB4949680A7882728A888281498843 +:10CA6000C1810121417101707047B4490A781AB13E +:10CA700047210F2001F0BABA0088A1F85600012022 +:10CA800081F8580000220A7148714722CA70087064 +:10CA9000704710B5A94C207828B12B21BDE8104073 +:10CAA0000F2001F0A3BA0821A01D05F0F5FB00201E +:10CAB0002071012060712B21E170207010BD70B5D4 +:10CAC0009E4C217829B1BDE870403F210F2001F034 +:10CAD0008DBA90F90000042816D0032814D098B11C +:10CAE000011D11D010F1080F0ED010F10C0F0BD05A +:10CAF00010F1100F08D010F1140F05D010F1280F0D +:10CB000002D01220207103E0002506F0DEF9257125 +:10CB10003F20E07001206071207070BD10B5874C1F +:10CB2000217829B12A21BDE810400F2001F05EBA1A +:10CB3000A31D012200F110010FF097F800202071D1 +:10CB40000F20A0702A20E07001206071207010BDBD +:10CB50002DE9FF41794C207828B146210F2001F0C2 +:10CB600045FABDE8FF814FF0000884F80680B4F86C +:10CB70005600ADF8040002A9FFF725FC20B1002102 +:10CB800001A8FFF7D4FCE8BBBDF80400ADF8000035 +:10CB900002A980B2FFF717FC00B1FFDFBDF800006B +:10CBA00002F0F4F9050000D1FFDF2846039F01F0F1 +:10CBB00085FC80F0010697F86950BDF8000002F08E +:10CBC000D3F9070000D1FFDF384601F070FC80F098 +:10CBD000010255EA020019D0A179BDF8000004EB6A +:10CBE000410108815549A3791831585C65F300006B +:10CBF0005854A37962F341005854A27966F3820035 +:10CC0000505400E00DE0A079401CA071002168465E +:10CC1000FFF78DFC28B9BDF80000BDF8041088426C +:10CC2000B6D1012084F8048060714621E170207043 +:10CC300097E770B5414C0546207828B1BDE87040B3 +:10CC400042210F2001F0D2B909F0F1FB052804D0F0 +:10CC5000284609F08DF9002000E00C202071012009 +:10CC600060714221E170207070BD10B5334C2078A6 +:10CC700028B10E21BDE810400F2001F0B7B9A11D69 +:10CC8000002006F029FF00202071012060710E2194 +:10CC9000E170207010BD70B5284C0546207828B191 +:10CCA000BDE8704040210F2001F0A0B901F0ABF9C0 +:10CCB00038B10C202071012060714021E17020709A +:10CCC00070BD2946002006F0F4FE0020F2E770B5A2 +:10CCD0001A4C0546207828B1BDE870403E210F204F +:10CCE00001F084B909F0C4F910B90AF0EBFA68B19F +:10CCF00028780AF060F8287808F0EBF80020207116 +:10CD0000012060713E21E170207070BD0C20F6E7BB +:10CD100070B50A4C0546207828B1BDE8704017214F +:10CD20000F2001F063B901F06EF958B10C202071A9 +:10CD3000012060711721E170207070BD0C06002089 +:10CD4000480000202946012006F0B3FE0020EEE74F +:10CD500038B5FF4D0446287828B1BDE838404A214F +:10CD60000F2001F043B9227961798A4215D0A07968 +:10CD7000E379984211D01F2A0FD81F290DD800221D +:10CD8000114610F0D7FB40B90022E079114610F0AF +:10CD9000D1FB10B9207A072801D9122015E04FF6EF +:10CDA000FF70ADF8000009F0FFFBA8B909F002FC24 +:10CDB00090B909F03CFB78B900216846FFF7B7FB52 +:10CDC00050B1204605F09AFF0020287101206871BB +:10CDD0004A21E970287038BD0C20F6E72DE9FC47A0 +:10CDE000DB4C054694F82E0028B12821102001F0D4 +:10CDF000FDF8BDE8FC87282084F83000012184F884 +:10CE00002E10A8784FF000091A2825D00EDC16281D +:10CE100031D2DFE800F03030303030213030303087 +:10CE20003030303030303030302121212A2822D0AB +:10CE30000BDCA0F11E000C281DD2DFE800F01C1C4A +:10CE40001C1C1C1C1C1C1C1C1C0D3A38042812D257 +:10CE5000DFE800F0110211022888B0F5706F0AD2E5 +:10CE60001F20884684F82F0028886946FFF7ABFA10 +:10CE700018B1022019E0122017E09DF80000019F70 +:10CE8000002806D007F1F607019E05D106F1DD0660 +:10CE900004E007F1DC07F7E706F1F706684601F062 +:10CEA000D5F808B1387818B10C2084F82F00A0E725 +:10CEB00087F80080A878307084F82F90684601F0D9 +:10CEC000D0F896E77CB5A24C0546207820B1252104 +:10CED0000F2001F08BF87CBD28886946FFF773FAB4 +:10CEE000002160B102202071A1602173E1800F2038 +:10CEF000A0702520E0700120607120707CBD019A37 +:10CF00001046503282F83E108368A360037B23737F +:10CF100092F83E30002BF5D12888E080E7E710B585 +:10CF200040B10478406813B1B0F8440003E0B0F8B1 +:10CF3000460000E0FB201B2908D3814206D8B2F549 +:10CF4000A47F03D340F64800824201D9122010BDCD +:10CF5000002010BD70B57E4C0546207828B1BDE894 +:10CF600070404C210F2001F041B8012666711F204E +:10CF700020710F20A0704C20E0702670EA88A988EC +:10CF800033460020FFF7CBFF30B900236A88298899 +:10CF90001846FFF7C4FF08B12071CEE604F8426FCF +:10CFA000A888E080E8882081288860806888A08040 +:10CFB0000020207004F83E0CBFE67CB5644D0446AA +:10CFC000287820B13A210F2001F010F87CBD01260D +:10CFD0006E711F2028710F20A8703A20E8702E7003 +:10CFE00020886946FFF7EFF908B102200DE0A2881A +:10CFF000618801236846FFF792FF30B9A2886188F3 +:10D0000000236846FFF78BFF08B128717CBD9DF8AF +:10D0100000100020002901990988E98028710199F0 +:10D0200018D081F81961019A6188A2F81E11019A3D +:10D03000A188A2F82011019A6188A2F81A11019A18 +:10D04000A188A2F81C11019981F81861019981F851 +:10D0500019017CBD81F8F160019A6188A2F8F6108F +:10D06000019AA188A2F8F810019A6188A2F8F2103A +:10D07000019AA188A2F8F410019981F8F060019951 +:10D0800081F8F1007CBD70B5314C0546207828B19F +:10D09000BDE870403C210F2000F0A8BF012666715A +:10D0A0000F20A0703C20E07026706A8829883346E3 +:10D0B0000020FFF734FF30B900236A88298818461A +:10D0C000FFF72DFF08B1207137E604F8426F28887A +:10D0D00060806888A0802888E0806888208100209F +:10D0E000207004F83E0C28E670B5194D287828B158 +:10D0F000BDE870403B210F2000F078BF95F842005A +:10D100002C1D00B1FFDFB5F848006080B5F84A007B +:10D11000A08001206070002121700F21A9703B21A7 +:10D12000E970287009E670B5094D287828B1BDE886 +:10D1300070403D210F2000F059BFFB262C1DEE80D2 +:10D14000304600F04FFFA080E680304602E000004D +:10D150000C06002000F046FF2081012060700021B5 +:10D1600021700F21A9703D21E9702870E5E52DE9B6 +:10D17000FC41FC4C064694F82E0028B110210846CC +:10D1800000F034FFBDE8FC811F2084F82F00102040 +:10D1900084F83000012784F82E7030886946FFF744 +:10D1A00012F978B9684600F051FF58B1019D9DF819 +:10D1B000000050350028019806D000F585700178F0 +:10D1C00041B904E0022006E0D0F8E400F7E795F862 +:10D1D000351019B13A2084F82F00D3E795F83610AE +:10D1E00089070CD1042101709DF8000020B9019934 +:10D1F0003088D1F8E4104880684600F032FF002003 +:10D2000084F82F0085F83570BCE72DE9F041D54C46 +:10D210000546207828B1BDE8F0411D210F2000F01F +:10D22000E5BE1F202071012060711D21E17020707A +:10D2300009F0FDF80C2604283CD005283AD0A9793D +:10D240001220012904D019B1022901D0032926D1C5 +:10D25000297809B1012922D1E97929B1012903D01D +:10D26000022901D003291AD1698843F6FD720B1FE8 +:10D270003020934213D2AB881B1F93420FD22187D9 +:10D28000A88860870027A87907F05DFD90B1E8794C +:10D2900007F0B0FD2878012804D030B10CE02071EF +:10D2A000BDE8F0810021022001E00021012007F00B +:10D2B000D0FD08B12671F3E72771F1E770B5A94CED +:10D2C000217829B1BDE870401E210F2000F08EBEEC +:10D2D0001F212171012161711E22E27021700278EB +:10D2E0001221012A00D01AB9407818B1012801D0C2 +:10D2F000217122E500260C25012A08D009F097F8B3 +:10D30000052802D008F071FD40B1257115E507F040 +:10D3100031FD618F208F08F0B8FEF5E726710CE52E +:10D320002DE9F0478F4C0746B0F84600B4F844505A +:10D330000E46854200D3054600F054FE0146B4F87F +:10D340004600814203D8B7F8460000F04BFE804605 +:10D35000A146B4F84840B7F84400844200D30446DC +:10D3600000F040FE0146B9F84A00814203D8B7F800 +:10D37000440000F037FE4FF4A4721B2C01D0904201 +:10D3800003D11B2D08D0904506D0F580A6F8088063 +:10D390007480B08001203070BDE8F0872DE9FC5F1B +:10D3A0000546AFF680216F4ED1E900A196F82E0018 +:10D3B000884628B1BDE8FC5F2121102000F016BE90 +:10D3C0001F2086F82F00212086F830004FF0010B37 +:10D3D00086F82EB0284600F052FE002811D109F040 +:10D3E00026F805280CD009F022F8042808D096F871 +:10D3F000340028B907F04FFAA0F57F41FF3901D07A +:10D400000C20D0E0062101A801F01CFC04007DD016 +:10D4100003210EF061FAB6F85400A4F84400B6F8FF +:10D420005400A4F8460096F84D000090B6F8541049 +:10D4300096F84C3020880A4601F0E1FC04287CD0A4 +:10D4400000B1FFDF208806F0C5FA04F10D07B4F83B +:10D4500000900421384604F01FFF494638460EF07C +:10D4600078FB41A03F1D006800900321684604F04E +:10D470009EFE002069460A5C3A54401CC0B2032854 +:10D48000F9D3288A6080688AA080A88AE08096F80C +:10D490004F2096F84E1020460EF0FFFC0146204625 +:10D4A0000EF034FD4FF0000984F8569084F8579040 +:10D4B0004F46687900F08FFD6076D5F80600C4F815 +:10D4C0001A006889E083C4F808A084F80C8084F806 +:10D4D000ECB004F1F0012046FFF722FF8DF8007058 +:10D4E0000121684604F063FE9DF8000000F007018A +:10D4F000C0F3C1021144C0F3401008448DF800008D +:10D50000401D2076092804D2083001E013E014E021 +:10D510002076002120460EF0DFF9287B07F013FC6F +:10D5200098B107F027FC69792879AA1D07F06DFCEE +:10D5300007001BD027E0092035E02088062101F0F4 +:10D54000C2FB00B1FFDF07202DE0208806F043FA80 +:10D550002088062101F0B7FB00283FF451AFFFDF20 +:10D560004EE700000C060020112233002146032064 +:10D5700007F06FFC070006D16A882988204608F06A +:10D5800036FD07000CD0208806F025FA20880621F9 +:10D5900001F099FB00B1FFDF86F82F70BDE8FC9F1A +:10D5A000484684F8E09086F82F00F7E738B5FE4C3F +:10D5B000207820B122210F2000F018FD38BD1F2057 +:10D5C0002071012565712220E070257094F83400E7 +:10D5D00010BB08F02CFF052805D007F05CF9A0F57A +:10D5E0007F41FF3918D000202071684608F083FD84 +:10D5F0000028E3D10098008806F0EDF90098062194 +:10D60000008801F060FB00B1FFDFE84884F8345087 +:10D610000078FCF74FFC38BD0C20207138BD2DE997 +:10D62000F041E14D044695F82E0028B1BDE8F041E7 +:10D630002321102000F0DABC1F2085F82F002320C2 +:10D6400085F83000012085F82E00618840F67B4384 +:10D650008A1F30209A4251D2A288961F9E424DD2F4 +:10D6600091424BD8E188B1F5FA7F47D2218940F643 +:10D670007746A1F10A03B34240D2B1EBD20F3DD9B4 +:10D680006189A289914239D84FF00008208806218B +:10D6900001F007FB06004FF0020707D000F0C8FCBE +:10D6A00020B1D6F8E400017839B902E085F82F708E +:10D6B000F6E5D6F81011097809B13A201EE00521E7 +:10D6C0008171D6F8E4004146A0F80880D6F8E4203D +:10D6D000A0885081D6F8E420E0889081D6F8E42034 +:10D6E0002089D081D6F8E400028943899A4204D87F +:10D6F0008279082A01D89A4203D3122085F82F0094 +:10D70000CEE522884280D6F8E400077085F82F1015 +:10D71000C6E52DE9FE43A44C0646207830B103B09F +:10D720002421BDE8F0430F2000F060BC01256571A5 +:10D730002420E070257030460EF02DFA08B100204C +:10D7400000E01220207100282CD184F83C50306871 +:10D75000C4F83D00307984F841004FF0000884F8A7 +:10D760003C806946062001F028FA00B1FFDF6846D8 +:10D7700001F001FAA0B9BDF8047000BFBDF80400C3 +:10D78000062101F08EFA060000D1FFDF86F8EC508A +:10D79000684601F0F0F918B9BDF80400B842EDD1BF +:10D7A00084F80480BDE8FE8370B57F4D064695F889 +:10D7B0002E0028B1BDE870402621102000F016BCD4 +:10D7C0001F2085F82F00262085F83000012085F8DD +:10D7D0002E003088062101F064FA040007D000F022 +:10D7E00027FC20B1D4F8E400017831B901E002202F +:10D7F0000CE0D4F81011097809B13A2006E00521AF +:10D800000170D4F8E41030884880002085F82F009B +:10D810005AE46548017819B106210F2000F0E6BBF3 +:10D82000002202710F2181700621C170C0F806200C +:10D83000C0F80A20F1218171012141710170704706 +:10D840002DE9F041584D064695F82E0028B1BDE867 +:10D85000F0412C21102000F0C9BB1F2085F82F00BB +:10D860002C2085F83000012085F82E003088062114 +:10D8700001F017FA040007D000F0DAFB20B1D4F869 +:10D88000E410087830B901E0022026E0D4F8100155 +:10D89000007808B13A2020E08C200027005D10F0CD +:10D8A000010F19D0D6F802004860D6F8060088604B +:10D8B00054F8E40F718910228181206806F10C016F +:10D8C0000E3010F0F1FA21680320087021683088CA +:10D8D000488085F82F70E3E40C2085F82F00DFE402 +:10D8E00070B5314D04460C26287828B1BDE870404B +:10D8F00018210F2000F07ABB08F056FE03284BD009 +:10D9000008F058FE032847D0A07908B101282DD18E +:10D91000607928B1012803D0022801D0032825D13D +:10D92000A07B28B1012803D0022801D003281DD1F3 +:10D93000607BD8B1C00819D162884FF48040824220 +:10D9400002D82188814203D9207901280ED118E01C +:10D95000207930B1012814D0022805D0032805D140 +:10D9600002E0202A0BD30CE0A0290AD22079042857 +:10D9700005D12088202802D36188884201D9122647 +:10D980000AE0607906F010FA30B1207985F83600A7 +:10D99000204606F073FA064601202E7168711821A0 +:10D9A000E9702870A5E400000C0600204800002063 +:10D9B00010B5FE4C217829B11A21BDE810400F2086 +:10D9C00000F014BB01781F2902D91220207106E053 +:10D9D000002121710278411C104606F0C6FA012090 +:10D9E00060711A21E170207010BD10B5EF4C2178E4 +:10D9F00029B12021BDE810400F2000F0F7BA0178CE +:10DA00001F2902D91220207106E00021217102781D +:10DA1000411C104606F098FA012060712021E17047 +:10DA2000207010BD2DE9FC41E04C217829B1BDE802 +:10DA3000FC411B210F2000F0D9BA012767710C218E +:10DA4000217100780026012804D0002879D0122006 +:10DA5000207190E006F072F9002819D006F0B7F9AD +:10DA600094F83600A8B1012813D0042811D008F08A +:10DA7000A1FD00287FD108F097FD18B108F094FDB2 +:10DA8000022878D1002009F099F900B1FFDF267152 +:10DA900071E008F089FD00286DD108F08BFD0028A9 +:10DAA00069D106F0D6F8A0F57F41FF3963D107218F +:10DAB00001A801F0C7F8BE4905468860280000D1DA +:10DAC000FFDF032128460DF00BFE284606F081FB00 +:10DAD00034F8540FA5F8440034F80409A5F84600BA +:10DAE000E278A17828460EF043FA01460022284643 +:10DAF0000EF077FA6078009014F8043B288834F828 +:10DB000054190A4601F07BF980B1042800D0FFDFE8 +:10DB10002888072101F0D7F800B1FFDF0720207126 +:10DB200005F58C712846FFF7FBFB24E0288805F0FB +:10DB300051FF284609F042F900B1FFDF2671EFE7F7 +:10DB4000FFE708F031FD032803D008F033FD032878 +:10DB500011D108F02CFD0546002009F052F850B90B +:10DB6000267145B1288805F036FF2888072101F085 +:10DB7000AAF800B1FFDF1B20E0702770BDE8FC8130 +:10DB80002DE9F041894C0646207828B1BDE8F041E6 +:10DB90002D210F2000F02ABA3088072101F081F8EA +:10DBA00005004FF0010720D095F8F90040B995F82D +:10DBB0005C00112801D0122802D195F8360150B12D +:10DBC0000C2020710F20A0702D20E0703088E080A4 +:10DBD000677127706CE51022B11C05F1FA0010F096 +:10DBE00063F985F8F9700020EBE70220E9E770B5EA +:10DBF0006E4C0546207828B1BDE870402E210F20DC +:10DC000000F0F4B92888072101F04BF8022178B11F +:10DC100090F8F9202AB990F85C20112A04D0122A31 +:10DC200002D00C20207104E080F8F9100020F9E700 +:10DC300021710F20A0702E20E0702888E080012044 +:10DC400060712070E4E52DE9FC47584C06462078C9 +:10DC500028B138210F2000F0C9F9BDE8FC87708891 +:10DC60004BF68032122190420AD848B14FF000089A +:10DC700030886946FEF7A7FB20B10220207110E032 +:10DC800021710EE0019800F15009851C2F887288DF +:10DC9000394648460DF01AFD2888B842F6D184F876 +:10DCA0000480012060713821E1702070D5E77CB5D7 +:10DCB0003E4C0546207820B145210F2000F096F912 +:10DCC0007CBD28886946FEF77EFB38B102202071B2 +:10DCD000012060714521E17020707CBD01987F2298 +:10DCE000014680F8582080F85920002280F85A20F8 +:10DCF000A87801F8280FE878487028798870227190 +:10DD0000E6E71CB5294C217821B113210F2000F042 +:10DD10006DF91CBD00886946FEF755FB08B102206D +:10DD200005E0019890F82810012902D00C202071FC +:10DD300006E0582100222271095C21720088E080EF +:10DD4000012060711321E1700F21A17020701CBDB2 +:10DD50002DE9F041154C0546207828B1BDE8F04189 +:10DD600043210F2000F042B9A87808B1012803D15F +:10DD7000A888B0F5FA7F01D91220207128880721E0 +:10DD800000F08FFF0126C8B1002780F8F070A98845 +:10DD9000A0F8F21080F8CC60A978012900D0002109 +:10DDA00080F8F01090F8CD0030B103E00C060020B0 +:10DDB0004800002009F04EF9277101E0022020718F +:10DDC00066714320E070267072E42DE9F041CF4C7B +:10DDD0000546207828B1BDE8F04148210F2000F029 +:10DDE00005B92888072100F05CFF012358B3828819 +:10DDF0006D88C688418803EB4207BD4217D342F2C3 +:10DE000010777E43BF107943B6FBF1F1491E89B20A +:10DE10004FF4FA76B14200D931468D4200D22946FC +:10DE2000491C521CB1FBF2F15143491E8AB290F8D1 +:10DE3000221101B90284E280002020716371482020 +:10DE4000E070237034E40220F7E770B5AF4C05466C +:10DE5000207828B1BDE8704041210F2000F0C6B8FD +:10DE600008F0A2FB08B10C2017E0297889B10A2933 +:10DE70000FD014290DD01E290BD0282909D0322902 +:10DE800007D04B2905D0642903D0FF2901D01220E7 +:10DE900003E0284609F04FF800202071012060714E +:10DEA0004121E1702070B3E498490A781AB14D21FC +:10DEB0000F2000F09BB8427862B1827852B1C278EC +:10DEC00042B1027932B1C2881B2A03D303781BB155 +:10DED000012B01D0122007E0A1F854200278D0F8DD +:10DEE000010042B1086500200871012048714D22EF +:10DEF000CA7008707047C864F5E770B5834C054672 +:10DF0000207828B1BDE870404E210F2000F06EB897 +:10DF1000287800F0010008F019F9287800F00100D5 +:10DF200009F061F800202071012060714E21E1703C +:10DF300020706DE470B5754D0446287828B1BDE8B1 +:10DF400070404B210F2000F051B800F05CF808B190 +:10DF50000C200DE0601C0DF063FA207800F0010049 +:10DF600005F031FF207800F0010006F0FFFE0020F0 +:10DF70002871012068714B21E970287048E470B560 +:10DF8000624C0546207828B1BDE8704049210F2039 +:10DF900000F02CB808F008FB10B908F00BFB08B132 +:10DFA0000C2003E0287805F0F0FF0020207101200C +:10DFB00060714921E17020702AE410B501784F2981 +:10DFC00007D2534A52F8211019B1801C884701200A +:10DFD00010BD002010BD18B1022801D001207047EB +:10DFE00000207047C000703080B27047474A92F8F6 +:10DFF0003130002B06D182F8320082F83310012034 +:10E0000082F83100704710B508F011FA04280DD0DD +:10E0100008F00DFA052809D008F0C6FA032805D043 +:10E0200008F0C8FA032801D0002010BD012010BD5F +:10E0300090F8691041B990F8C01029B190F8C0006B +:10E04000042801D001207047002070470178406803 +:10E0500021B190F8690010B100207047E8E7012075 +:10E0600070470178012909D1406890F8CD10002946 +:10E0700004D0002180F8CD1008F0ECBF704710B537 +:10E08000038843F6FD711A1F8A4223D24288141F67 +:10E090008C421FD29A421DD8C28940F67B43911F01 +:10E0A000994217D2018A8C1F9C4213D28A4211D8FE +:10E0B000428AB2F5FA7F0DD2828A40F67744A2F105 +:10E0C0000A03A34206D2B2EBD10F03D9C18A028B55 +:10E0D000914201D9302010BD017911B1012910D12F +:10E0E00007E0417929B1012903D0022901D0032990 +:10E0F00007D1007B38B1012805D0022803D00328BE +:10E1000001D0122010BD002010BD00000C06002020 +:10E110009CE301003F3070470844C01D424301F1B9 +:10E120003F00104480B2704770B51D460446A818E1 +:10E13000049BC01D00FB03F205F13F00104486B2B2 +:10E14000B14238BFFFDF1E2120460FF024FFA6F1A9 +:10E150001E0080B2A5756080B0F5004F88BFFFDF5C +:10E16000608805F13B01884238BFFFDF6088401BB3 +:10E17000A0F13B011B2934BF1B203B38208070BD20 +:10E18000408870472DE9F04F0D46C188044600F1E4 +:10E190001E08008921F4004320F4004221F40046C7 +:10E1A00020F400474FF0010A4FF000099A4208D1CD +:10E1B00000F4004001F4004188421CBF0020BDE88B +:10E1C000F08FB7420BD9A17DB81B401AC01F854202 +:10E1D0001BDC08EB06000021058041801EE0608802 +:10E1E000A17D801B401AB0F1070B0ED4BBF11B0FB1 +:10E1F000B8BFFFDF5D45D4BF29461FFA8BF1681A0F +:10E200000204120C18BFBA4204DD84F814900020F6 +:10E21000BDE8F08F08EB06000180428084F814A06E +:10E22000BDE8F08F2DE9F041044600F11E02C088E0 +:10E2300020F40043207D002808BFBDE8F081D018FD +:10E240000288438813448B423CBF0020BDE8F08124 +:10E25000002791429CBF0180478013D9891A0D0481 +:10E260002D0C45800ED0E088A61D20F4004085428C +:10E2700088BFFFDF30884FF4004121EA00002843C7 +:10E28000308009E0A27D0088D31D1044C01D81B2FA +:10E290006288A01D00F044FB27750120BDE8F081D5 +:10E2A00030B4B0F804C0C488034600F11E052CF455 +:10E2B00000402844A44503D10020188230BC704798 +:10E2C000B3F80CC00488A44509D34088ACEB040C17 +:10E2D000A0EB0C0084B20CEB0500C01E06E0A4EB22 +:10E2E0000C049D7DA4B2AC446044001DB1F800C094 +:10E2F000A44588BF0C80B3F80CC0BCF1000F0CBF64 +:10E300004FF0010C4FF0000C82F800C00988198210 +:10E3100030BC70472DE9F041044600F11E018088B1 +:10E3200020F400404518208A002808BFBDE8F0818D +:10E33000A189084480B2A08129886A881144814259 +:10E3400038BFFFDF28886D88A289411900279142D4 +:10E3500019D175B1A088261D20F40040A84238BF0D +:10E36000FFDF30884FF4004121EA0000284330806D +:10E3700008E0A27D1044C01D81B2D31D6288201D1B +:10E3800000F0CEFAA78127820120BDE8F0812DE9B7 +:10E39000F0474189B0F804800027044600F11E0AC6 +:10E3A000414518BF4FF400493AD000BF21F4004066 +:10E3B000504446886EB1608904F10A0520F400409B +:10E3C000B04238BFFFDF288829EA000030432880A8 +:10E3D00021E0A37D008803F1070C18446389C01D68 +:10E3E00023F400456288284480B204F10A01904277 +:10E3F0000BD2121A92B20CF11B0C62452CBF03F423 +:10E40000004229EA030004D204E0801A80B229EA1B +:10E41000030210430880781C618987B24145C5D149 +:10E420003846BDE8F0872DE9F047B0F808800B4684 +:10E43000044600F11E01B0F80A90808828F4004CD0 +:10E4400001EB0C05804504BF0020BDE8F087002AE1 +:10E450001CBF281D106023B1A27D291D18460FF096 +:10E4600023FD2F886D888DB1E81987B2208904F1CA +:10E47000080620F40040A84238BFFFDF30884FF480 +:10E48000004121EA00002843308009E0A07D628835 +:10E49000C119C91DC31D89B204F1080000F040FA7A +:10E4A000C84504BF208960813846BDE8F08781886F +:10E4B000C08881420CBF01200020704781880089FC +:10E4C00088420CBF01200020704730B48488C28885 +:10E4D00000F11E0324F4004C22F4004163449442F2 +:10E4E0001BD08289048A15191C885A88A3189D425A +:10E4F00016D312B18A4210D212E0837D0CF1070CC0 +:10E500001A196244408892B2801A80B2223398422B +:10E5100001D211B104E08A4202D130BC0020704720 +:10E5200030BC012070472DE9F007B0F806C004891F +:10E5300000F11E0702462CF400457E1924F4004920 +:10E540002CF4004A002024F400434FF00108D14588 +:10E550000AD104F400440CF4004C644504D0508209 +:10E56000BDE8F00700207047AB4207D992F816C00B +:10E570005B1BA3EB0C03DC1F002308E0B2F802C016 +:10E58000947DACEB050CACEB040CACF10704002C57 +:10E59000E5DBB2F80EC0BCF1000F0DD0B6F800C03C +:10E5A00075884DB15B1B50758B42D8DBD0893844E0 +:10E5B000A0EB0C00C01E09E0A4EB0C0450758C42CB +:10E5C00008DB907DD38918443044001D5182BDE89A +:10E5D000F00770478B42A8BF82F81580E6DABEE7E5 +:10E5E0002DE9F05F044600F11E0AC088934620F42E +:10E5F00000400AEB0005608A894608B1484502D20E +:10E600000020BDE8F09FE089002804BF4FF000081B +:10E61000464607D0B5F800806E8808EB06018842B0 +:10E6200018BFFFDF607D4FF0000750EA060101D000 +:10E6300048B332E0E08938B1A17D01444819B4F80B +:10E6400017108180617E8171E18908EB09004944DE +:10E65000E18128806F80BBF1000F0BD0A07D29885D +:10E66000C31D0144C91D89B26288A01D00F058F97C +:10E67000E78137E0A07DE189084428448188A4F837 +:10E68000171080792DE0E089B4F817105044A0EB02 +:10E69000080020F8031D617E817006EB090086B238 +:10E6A000E089BBF1000F4844E081A5F800806E804E +:10E6B0000ED0E088A51D20F40040B04238BFFFDF37 +:10E6C00028884FF4004121EA000030432880CFE73A +:10E6D000E0895044A0EB080030F8031DA4F817109F +:10E6E00080786076678227750120BDE8F09F01463B +:10E6F0001E308A88CB8822F4004C60449A4203D0B2 +:10E700008989002908BF70470020704700F11E0367 +:10E71000807D01F1040C604410600888002804BF6B +:10E72000D81E106008884988084480B270472DE9D7 +:10E73000F04115460A4600F11E061C46807D131D59 +:10E74000034410885788069900281CBFC01C80B25B +:10E7500026D088429CBF081A80B213D9401AA04222 +:10E76000A8BF20461FFA80F85818424629460FF0E5 +:10E770006FFB002818BFBDE8F0814544A4EB0800FA +:10E7800084B2002001198F423CBF4FF0FF30BDE83A +:10E79000F081304422462946BDE8F0410FF058BBD5 +:10E7A000FA1C97B2F61ED4E72DE9F04100F11E07DE +:10E7B0001D46807D0B1D0344164608880024B1F8D1 +:10E7C0000280069A00281CBFC01C80B21FD0904255 +:10E7D0009CBF101A80B20DD9801AA842A8BF284643 +:10E7E00084B29918224630460FF05EFB281B85B292 +:10E7F000264400204119414506D839182A4630469A +:10E800000FF052FB601984B22046BDE8F08108F198 +:10E8100003011FFA81F8FF1ED9E72DE9F0411646E2 +:10E820000A4600F11E071D46807D131D0344108813 +:10E830000024B2F80280069900281CBFC01C80B2D8 +:10E840001FD088429CBF081A80B20DD9401AA84236 +:10E85000A8BF284684B25818224631460FF024FB40 +:10E86000281B85B2264400204119414506D838446A +:10E870002A4631460FF018FB601984B22046BDE8E5 +:10E88000F08108F103021FFA82F8FF1ED9E770B584 +:10E89000044600F11E01C288808820F40043194418 +:10E8A000904205D0A289002A04BF228A002A01D002 +:10E8B000002070BDB1F800C04D8885B1261D20F440 +:10E8C0000040A84238BFFFDF30884FF4004121EA02 +:10E8D00000002843308000202082012070BDA07DF0 +:10E8E0000CF10701C31D084481B26288201D00F0AD +:10E8F00017F8F0E70021C181417541820175704729 +:10E9000003881380C289002A04BF00207047C28890 +:10E9100000F11E0322F400421A440A60C0897047C5 +:10E9200010B4B0F800C02CF40044214489B24FF474 +:10E93000004491420AD2521A92B21B339A422CBF1F +:10E940000CF4004224EA0C0104D204E0891A89B2D2 +:10E9500024EA0C021143018010BC70472DE9F041FC +:10E9600088464FF6FC7102F103021E46040002EADB +:10E97000010509D00027E01C20F00300A04200D0D0 +:10E98000FFDF201D01210CE00127F4E702462844A7 +:10E990002FB9B14201D2034600E000231360491CA5 +:10E9A000C9B2B142F2D9011BC8F80010002F04D13E +:10E9B0000EB1201D00E000202060BDE8F08102467D +:10E9C00000201168002902D00846096811607047CC +:10E9D00002680A60016070474FF6FC73C91C194059 +:10E9E000101A001F90FBF1F0C0B270474FF6FC7395 +:10E9F000C91C1940001D01FB02007047F8B5D24D3B +:10EA000004460E46A878A04200D8FFDF05EB860733 +:10EA1000B86A50F8240000B1FFDFB868FFF7CFFFF5 +:10EA200005000DD0B86A062E40F824500AD0082EF2 +:10EA300000D3FFDFC548294650F8262020469047DE +:10EA40002846F8BDC048C24B7A30A0F12E02009093 +:10EA50002946204609F0A0FCF2E72DE9F84F804650 +:10EA6000DDF828901E4603EB090093468A46C4B29F +:10EA70005FEA080707D00025FF2800D9FFDFBAF1B9 +:10EA8000000F03D101E00125F6E7FFDF08F10300E5 +:10EA900020F00301414500D0FFDFCB4500D9FFDF67 +:10EAA00065B9A94A00204C324FF6FF7110705180B1 +:10EAB000A74A1070A44A7A3210705180A24880F898 +:10EAC00000B046708470C4700471447180F8069080 +:10EAD000DFF878B2C67100260BF1400B8146FF1CAF +:10EAE00027F003000746002D02D109EB860188605C +:10EAF0003BF8162019F8063001D04FF000006946A7 +:10EB0000FFF72CFF0098761CF6B20744082EE6D3D8 +:10EB1000FF1C27F003002346064675B100200222A1 +:10EB20006946FFF71BFF00983118002003464E4648 +:10EB3000C91C21F003021DB110E0C9F84800EEE73E +:10EB400006EB80070021BA6206E000BFD7F828C0B4 +:10EB50004CF82130491CC9B2A142F7D3401CC0B2C5 +:10EB600002EB84010828E3D3A1EB0800AAF8000017 +:10EB70000020BDE8F88F10B5044603F005FF08B18A +:10EB8000102010BD2078704A618802EB80009278D6 +:10EB90000EE0836A53F8213043B14A1C6280A180A1 +:10EBA000806A50F82100A060002010BD491C89B285 +:10EBB0008A42EED86180052010BD70B505460C462E +:10EBC000084603F0E1FE08B1102070BD082D01D306 +:10EBD000072070BD25700020608070BD0EB56946AD +:10EBE000FFF7EBFF00B1FFDF6846FFF7C4FF08B196 +:10EBF00000200EBD01200EBD10B50446082800D32C +:10EC0000FFDF5148005D10BD3EB505460024694652 +:10EC1000FFF7D3FF18B1FFDF01E0641CE4B26846E0 +:10EC2000FFF7A9FF0028F8D02846FFF7E5FF001BF3 +:10EC3000C0B23EBD44498978814201D9C0B2704713 +:10EC4000FF2070472DE9F0410C460546062901D00A +:10EC5000072C10D13C4FB86CFFF7B1FE02004FF605 +:10EC6000FF7604D00221B86CFFF7B6FE00E0304614 +:10EC70002880B04202D10020BDE8F0812146FFF794 +:10EC8000BDFE040002D1288800F050F82046F3E7CA +:10EC9000A0F57F42FF3A01D0082901D30020704738 +:10ECA000ACE6A0F57F42FF3A0BD0082909D2264AEC +:10ECB0009378834205D902EB8101896A51F82000DB +:10ECC0007047002070472DE9F04104460D46A4F539 +:10ECD0007F4143F20200FF39CED0082D01D3072037 +:10ECE000CAE719494FF000088A78A242C4D901EB5B +:10ECF00085072146BA6A52F82460002EBCD0134A18 +:10ED000008462032314652F825209047B96A062D30 +:10ED100041F8248001D0072D02D1204600F006F8EA +:10ED20003146B868FFF754FE0020A5E710B5064C41 +:10ED3000C2B20221A06CFFF759FE0146A06CBDE8EB +:10ED40001040FFF745BE000068060020D8E401002F +:10ED50005400002001469F48002200680260037AA8 +:10ED600000EB830040F80C2F8180114600F022B99F +:10ED70002DE9F05F9846DDF830B0DDF828A01546A3 +:10ED8000894604004FF0000623D00027E01C20F045 +:10ED90000300A04200D0FFDF65B30120FFF7BAF9FE +:10EDA00000FB05620AEBCB0016180120FFF7B2F951 +:10EDB00000FB05620B9805EB450108EBC000104411 +:10EDC00000EB4100143000EB850000EB850617B125 +:10EDD00010E00127DAE77F48A6EB8507A900046069 +:10EDE000257204F10C000C3F60600FF0F6F8B8B229 +:10EDF000FFF7B0FF0020C9F80060BDE8F09F2DE9E3 +:10EE0000FF4F744C814681B020689A468B4600B90A +:10EE1000FFDF2068027A4A4503D9426852F8291078 +:10EE200021B143F2020005B0BDE8F08F006800B9DF +:10EE3000FFDF01210E9A0398FFF76EF9C61C4FF60B +:10EE4000FC752E40584601215246FFF765F9C01C5B +:10EE500000EA050808EB0600001D85B25D480027A2 +:10EE60000068046801E027460446206838B1A1889C +:10EE7000A942F8D13946204600F0A4F813E005F184 +:10EE80000800A18880B2814229D33946204600F08B +:10EE900099F8A0880022411B6019026081803946E0 +:10EEA00000F088F8A580A08860802680251D0E9F30 +:10EEB0000123039A314628460097FFF735F9208849 +:10EEC000414628445A460123CDF800A0FFF72CF90B +:10EED000404800684168002041F82940A3E7042029 +:10EEE000A1E770B53B4C0546206800B9FFDF2068FC +:10EEF000017AA94210D9426852F8250060B14188D0 +:10EF0000002342F8253003608180194600F052F852 +:10EF1000216800200A7A08E043F2020070BD4B68C5 +:10EF200053F820306BB9401CC0B28242F7D80020A1 +:10EF300002E08A88104480B209680029F9D1FFF7FD +:10EF400009FF002070BD70B5224D286800280AD046 +:10EF5000002404E02046FFF7C4FF641CE4B22868E4 +:10EF6000007AA042F6D870BD70B51A4E054600244E +:10EF7000306800B9FFDF3068017AA94204D94068DF +:10EF800050F8250000B1041D204670BD70B5114E2B +:10EF900005460024306800B9FFDF3068017AA942D5 +:10EFA00006D9406850F8251011B131F8040B441807 +:10EFB000204670BD19B10A680260086070470549B3 +:10EFC0000968F8E7006809B10860704701490968F5 +:10EFD000FAE700005C00002070B5044600780E4699 +:10EFE00001281AD0072802D00C281AD115E0A068F1 +:10EFF000216905780B2D0CD0052003F05EFC052D52 +:10F000000FD0782300220520D4F8101003F0B8FBAD +:10F0100007E0782300220620F8E70520216903F0A5 +:10F020004CFC31462046BDE8704001F0A7B910B550 +:10F0300000F13902C3799478411D64F00304234040 +:10F04000C371DB070DD04B79547923404B710B7999 +:10F05000127913400B718278C9788A4200D9817085 +:10F0600010BD00224A710A71F5E74178012900D0EC +:10F070000C21017070472DE9F74F86B000208C6994 +:10F080000D468DF8040009780127FA4816464FF01E +:10F09000070A4FF011094FF00A0B2A2978D2DFE84E +:10F0A00011F02A00110352036903A803B303CC0330 +:10F0B000FA030F043B04620481049A04D504E604B5 +:10F0C000050510053005540577059C05C605E005C6 +:10F0D000EE050F062706300663068506D6060D07E1 +:10F0E0001B074B076A0779078A07C407FB0727082E +:10F0F000E407E807ED0714B120781D2829D0D5F8DA +:10F1000008805FEA080043D001208DF80400686A97 +:10F11000059003208DF808008DF809B0286A039047 +:10F12000A8880028EFD098F8001091B10F2910D2CC +:10F130007ED2DFE801F07D144CDCFDFCFBFAF9F82F +:10F14000F7089FF6F500022822D124B120780C2878 +:10F1500001D0002770E302208DF80400ACE1062006 +:10F16000696A03F0AAFBA8880728EDD1204601F0C0 +:10F1700000F9022809D0204601F0FBF8032808D93D +:10F18000204601F0F6F8072803D20120207005E0A0 +:10F1900011E2002CB7D020780128D5D198F80400CE +:10F1A000C11F0A2903D300BF85F81CB089E2A070F3 +:10F1B000D8F80010A163B8F80410A18798F80600E9 +:10F1C00084F83E00012028700320207046E00728C4 +:10F1D000BAD1002C97D020780D28B5D198F803101B +:10F1E00094F83B20C1F3C000C2F3C002104201D02A +:10F1F0000E2000E00F20890707D198F80510014282 +:10F20000D2D198F806100142CED194F83D2098F85A +:10F21000051020EA02021142C6D194F83E2098F867 +:10F22000061090430142BFD198F80400C11F00E0CE +:10F2300045E20A29B8D2617F814201D90620C2E3A2 +:10F24000D8F800106160B8F80410218198F8060021 +:10F25000A072012028700E20207003208DF8040079 +:10F26000686A059004F139000290601D0390173020 +:10F27000049067E2412890D1204601F07AF80428F2 +:10F2800002D1E078C00704D1204601F072F80F28BF +:10F290009ED1A88CEF6880B24FF0400AD4F8248049 +:10F2A000FFF762FE39460827424653460097FFF7AC +:10F2B0007BFA0E208DF80400686A0590606A02905F +:10F2C000002101A8FFF788FE2078042806D0A07F3F +:10F2D00038B1012805D0032806D0AEE30520207000 +:10F2E0000BE284F8009034E71220207066E01128C9 +:10F2F000C1D1204601F03DF8042802D1E078C007D2 +:10F3000019D0204601F035F8062805D1E078C0076D +:10F3100011D1A07F02280ED0204601F02AF808E083 +:10F32000AFE07DE09AE16EE14EE106E1E5E0CBE0A1 +:10F330001CE011289FD1102208F1010104F14800BE +:10F340000EF0B2FD607801280DD012202070E07818 +:10F35000C00703D0A07F88B301282FD085F800B064 +:10F360008DF804B0F0E384F800A027E011288FD1D5 +:10F37000204600F0FEFF082804D0204600F0F9FFE8 +:10F38000132885D12869D8B16869C8B104F178001B +:10F39000102208F1010107460EF086FD20780828AA +:10F3A00012D014202070E078C0070FD0A07F022870 +:10F3B00018D06178022912D00328CFD10420FDE3B0 +:10F3C00000208DF80400F6E00920EBE70B20287000 +:10F3D000296901204870206CC1E9010792E208B157 +:10F3E000012870D10B202870296981F801A0606A7A +:10F3F0004860206AC1E9020778E2206CE278006880 +:10F40000C2F34402521ED04000F0010040F08000E0 +:10F4100000E000200874E06A48617CE20746F9E3F6 +:10F420001128D0D1204600F0A4FF0A2802D1E078AC +:10F43000C00704D1204600F09CFF1528C3D110223C +:10F4400008F1010104F148000EF02EFD20780A2891 +:10F4500012D01620207012202870296909204870C7 +:10F4600004F158004860203088601038C860206C73 +:10F470000861ACE314E601000B202070E4E2287080 +:10F48000D9E102289FD1204600F073FF042804D35D +:10F49000204600F06EFF082809D3204600F069FFDF +:10F4A0000E2890D3204600F064FF12288BD2A07F54 +:10F4B000022888D18DF80490686A059098F80100B8 +:10F4C0008DF80800FBE36CE20228AAD1204600F088 +:10F4D00050FF00286FD0204600F04BFF0128F9D0E4 +:10F4E000204600F046FF0C28F4D005208DF80800D7 +:10F4F00098F801008DF8090065E71128FCD1002C6F +:10F50000FAD020781728F7D16178E06A022912D062 +:10F510005FF0000101EB4101182606EBC10110224A +:10F52000405808F101010EF0BFFC0520696A00F0A7 +:10F5300013FF26700DE60121ECE70B28DCD1002C2F +:10F54000DAD020781828D7D16178E06A02292CD047 +:10F550005FF0000101EB4101102202EBC1014158B3 +:10F56000B8F8010008806078E16A022820D0002005 +:10F5700000EB4002142000EBC2000958404650F84E +:10F58000032F0A60406848600520696A00F0E4FEC5 +:10F590006078022810D04FF000002044407A20F01C +:10F5A00001000CD14FF001010BE04FF00101D1E758 +:10F5B0004FF00100DCE77FE24FF00100EDE74FF094 +:10F5C00000012144487279E3112895D1002C93D091 +:10F5D0002078192890D16078E16A022811D00020A3 +:10F5E00000EB40021C2000EBC2001022085808F17A +:10F5F00001010EF059FC0520696A00F0ADFE1A20E9 +:10F60000F5E00120ECE7082898D1002C98D020786C +:10F610001A2893D1E06A98F80120017862F3470133 +:10F620000170E16AD8F8022041F8012FB8F806000D +:10F6300088800520696A00F08FFE6078022807D074 +:10F640004FF000002044407A20F002012BD033E03C +:10F650004FF00100F6E7204441722FE31128B4D1A6 +:10F66000002CB4D020781B28AFD16178E06A022941 +:10F670001CD0002101EB4101202202EBC10110222C +:10F68000405808F101010EF00FFC0520696A00F0F6 +:10F6900063FE607802280CD04FF000002044407ACE +:10F6A00020F0040108D14FF00100D4E74FF0010130 +:10F6B000E0E74FF00100F1E74FF00000CBE785F8FD +:10F6C0001CA0FAE33078012884D11C2204F11C002C +:10F6D00071680EF02EFCE079C10894F83B0001EA55 +:10F6E000D001E07861F30000E070217FF1BB217868 +:10F6F00003290AD0C0073FF4F9AD032028708DF824 +:10F7000004B0686A059041209EE3607FA17888423A +:10F710003FF694AD02272771E179204621F0E00100 +:10F72000E171617A21F0F0016172A17A21F0F001BA +:10F73000A172FFF77CFC2F708DF804B0686A059009 +:10F740008DF808A0F2E33078112888D18DF804A054 +:10F75000696A0591B1680391ADF808A0084661682F +:10F76000016021898180A17A817100E06AE0042032 +:10F770002070A4E230781128A6D18DF804A0686A20 +:10F780000590301D02AB07C883E807004120ADF8A3 +:10F79000080008460C210170A88CD6F80C8080B2B5 +:10F7A0004027D4F82090FFF7F1FB41464FF00808BE +:10F7B0004A463B46CDF80080FFF72FF8002101A80C +:10F7C000FFF70AFCE07820F03E00801CE070207813 +:10F7D000052801D00F200AE0A07F00283FF4C3AD28 +:10F7E0000128FBD003287DD184F80080B1E420708B +:10F7F000AFE430780328A8D170680168A16640683A +:10F80000E0660520287035E2317803299DD17168C2 +:10F810000A68226749686167216C51B9A17F19B1F3 +:10F82000012901D0062029E185F800A02064606448 +:10F8300001E085F800A00327F3E33178022984D1A1 +:10F84000317909B1297737E1A17F022910D0032945 +:10F85000EFD16178012910D0A17994F83A200129DB +:10F860000FD02064E178C90713D0012A0ED010E030 +:10F87000B0680028E7D020640BE0A27994F83A1031 +:10F88000EDE7B1680029DED02164EBE7F0680028DD +:10F89000D9D06064CDE78DF804B0696A0591E1784C +:10F8A0005846C90709D06178022903D1A17F29B13F +:10F8B000012903D0A17F032900D00820287012E27B +:10F8C00030781128BFD1B068286209202870E0780C +:10F8D0002969C0070FD081F801A0206A4860606ADA +:10F8E000886000E0ABE004F16800C860A07F0228F7 +:10F8F0007FF48FAD81E501204870206C486004F1F1 +:10F900006800886004F13800C860201D0861206B21 +:10F910004861606B88611FE2E1783078C90701D0E7 +:10F92000062100E00A2188428DD12078072817D0CF +:10F9300084F800908DF804A0686A0590286A039006 +:10F94000ADF80890032100F8011B102271680EF039 +:10F95000ABFA002101A8FFF73FFB00202862C2E4B8 +:10F9600008202070E6E730781128ABD18DF804A08C +:10F97000686A0590B0680390ADF80890042100F81B +:10F98000011B102204F168010EF08EFA002101A87B +:10F99000FFF722FB2078092801D0132027E784F8FD +:10F9A00000B016E0E1783078C90701D0062100E008 +:10F9B0000A21884286D1102204F1480071680EF0B5 +:10F9C00047FA10B104202877A2E3207809283FF4F1 +:10F9D000C5AC0C2053E5E078C10735D0A17F0129E3 +:10F9E00002D002291BD02CE00D202870296981F853 +:10F9F00001B06078012809D0206A4860606A886098 +:10FA000004F16800C8601030086104E5606A48606D +:10FA1000206A886004F17800C8601038F4E7C0F309 +:10FA2000440114290DD24FF0006101EBB0104FEAF0 +:10FA3000B060E0706078012801D0102055E4062005 +:10FA4000D5E6607801288AD00E2018E5307809289C +:10FA50008BD185F800B010208DF80400686A0590FD +:10FA600070680290002101A8FFF7B6FAE9E7E07894 +:10FA7000C00706D0A07F01281FD10F2028700420C6 +:10FA8000F8E015202870296902204870206C486031 +:10FA90006078012805D004F1780088601038C860CB +:10FAA0005AE104F1680088601030F8E730780228E5 +:10FAB000CED1307908B1287728E3102028700F20A4 +:10FAC000D8E030781328F7D185F80090296908200C +:10FAD000487070684860607801280DD004F16800B3 +:10FAE00088601030C860206B0861606B486104F169 +:10FAF00058008861A06A21E004F17800886010381D +:10FB0000F0E730780728D7D1607801281AD1A0789B +:10FB1000A16A0A18C0F1100110460EF03CFA12203A +:10FB2000287029690920487004F158004860203085 +:10FB300088601038C860206C086141E0C861E06AE4 +:10FB4000086209E11320C9E0CBE030780828B3D17E +:10FB5000102204F1480071680EF07AF908B10B2008 +:10FB600031E720780B28EDD02046FFF760FAA07827 +:10FB7000A16A0A18C0F1100110460EF00CFA162006 +:10FB8000287008208DF80400686A0590002049E07C +:10FB90003078112890D1B068286214202870296923 +:10FBA0000920487004F15800486010308860103017 +:10FBB000C860606C08616078012800E09EE006D0B3 +:10FBC00004F139004861206B8861606BB6E7601D05 +:10FBD0004861606B8861206BB0E73078082892D16B +:10FBE0008DF804A0686A0590286A0390ADF8089023 +:10FBF0000D2100F8011B102271680EF055F900214B +:10FC000001A8FFF7E9F9002028626178012902D0F4 +:10FC10001520ECE569E21621297008218DF8041001 +:10FC2000696A05910290A0788DF80C007EE1307829 +:10FC30000B288CD1162028706078022802D120462B +:10FC4000FFF7F5F9A07871680A18C0F110011046A5 +:10FC50000EF0A1F908208DF80400686A059070681C +:10FC6000E0E730780F2895D1E079C0077BD01720E6 +:10FC7000287009208DF80400686A059056E13078F4 +:10FC8000102887D11422311D04F11C000EF051F907 +:10FC9000E16A208DA1F80900E16AA078C871E179D4 +:10FCA000E26A01F003011172E16A627A0A73E16AA1 +:10FCB000A07A81F824006078012876D0B3E13EE292 +:10FCC0006078022801D0012000E000202044407A22 +:10FCD000C0070BD0E078C00708D1192028708DF834 +:10FCE00004B0686A05908DF808901FE11E2071E647 +:10FCF0003078112874D1B06828621A202870052045 +:10FD0000B8E7307803286BD16078E26A022801D026 +:10FD1000012000E0002000EB4001142000EBC101B5 +:10FD20005158726813680B6052684A601B21297031 +:10FD3000D5E9041205234B70636A4B606778E36A68 +:10FD4000022F01D0012700E0002707EB470700EB57 +:10FD5000C7001858C1E90202686A4862069800F0B4 +:10FD600024FBFFF75BBB87E130780E2838D1607841 +:10FD7000E26A022801D0012000E0002000EB4000F0 +:10FD8000102101EBC00002231058093271680CF0F9 +:10FD90006DFC1C202870296904204870206A486086 +:10FDA000E06A09308860F84879E65AE130780D2831 +:10FDB00016D16178E06A022901D0012100E000211A +:10FDC00001EB4101182707EBC101A2784058716887 +:10FDD0000EF06AF86178E06A022902D0012101E0A0 +:10FDE000A9E0002101EB410107EBC1014058A178D6 +:10FDF0000844C1F110010EF0CEF88DF804A0686A35 +:10FE00000590286A0390ADF8089006210170627889 +:10FE1000E16A022A01D0012200E0002202EB420244 +:10FE200007EBC202401C895810220EF03DF8002159 +:10FE300001A8FFF7D1F8002028621D2028708DF856 +:10FE400004B0686A05900B208DF808006EE03078E9 +:10FE5000112870D18DF804A0686A0590B0680390ED +:10FE60000B20ADF80800039880F800A06278E16AE2 +:10FE7000022A01D0012200E0002202EB42021023FC +:10FE800003EBC20289580988A0F801106178E26A80 +:10FE9000022901D0012100E0002101EB41031421DE +:10FEA00001EBC30151580A6840F8032F49684160CB +:10FEB000002101A8FFF790F818E729E160780228EF +:10FEC00001D0012000E000202044407A800701D5C5 +:10FED0001F2003E721207DE5307811282BD18DF8F4 +:10FEE00004A0686A0590B0680390ADF808900827F0 +:10FEF00007706178E26A022901D0012100E0002147 +:10FF000001EB41031C2101EBC301401C515810229D +:10FF10000DF0CAFF002101A8FFF75EF8202028702D +:10FF20008DF804B0686A05908DF80870314601A814 +:10FF3000FFF752F815E775E03078112872D18DF887 +:10FF400004A0686A0590B06803900820ADF8080026 +:10FF5000039809210170E169097849084170E16954 +:10FF600051F8012FC0F802208988C180002101A822 +:10FF7000FFF732F8AEE76078022801D0012100E0F7 +:10FF800000212144497A490701D52220A6E601280B +:10FF900049D068E03078112844D1B0682862232025 +:10FFA0002870296904204870206A4860E06A093096 +:10FFB0008860764873E530780D2833D16178E06A3F +:10FFC000022901D0012100E0002101EB410120279D +:10FFD00007EBC1011022405871680DF065FF8DF8E4 +:10FFE00004A0686A0590286A0390ADF8089080F82C +:10FFF00000B06278E16A022A01D0012200E000220A +:020000040001F9 +:1000000002EB420207EBC202401C895810220DF09D +:100010004BFF002101A8FEF7DFFF00202862607877 +:10002000B5E791E037E02420D4E4607802280BD0D3 +:1000300000202044407AC10702D0E178C90705D0EA +:10004000810705D51920A9E40120F2E71720A5E4CE +:10005000400701D51B20A1E41C20207060780128F6 +:1000600001D01820B6E42720B4E4282028700B2003 +:1000700000E63078122849D12920ABE42078012805 +:1000800044D00C2842D02046FEF7EFFF0C208DF81C +:100090000400686A059039E030784FF0260811288E +:1000A00005D012203070032785F800804CE08DF8D1 +:1000B00004A0686A0590B06803900220ADF80800BB +:1000C000039805210170297F4170002101A8FEF7E6 +:1000D00083FF0B208DF80400686A0590314601A863 +:1000E000FEF77AFF074685F80080012F0ED02BE03F +:1000F00001208DF80400686A059004208DF808003E +:10010000287F8DF809000020287712E0287F80B131 +:100110001D202070252028708DF804B0686A059095 +:1001200002208DF80800314601A8FEF755FF07466A +:100130000AE00CB1FE2020709DF8040020B10021DF +:1001400001A8FEF749FF0AE409B03846BDE8F08F80 +:100150002DE9F04F0C4601274E69097885B090468D +:10016000BA464FF00209072021B101294ED00229D9 +:100170001FD1C8E0217901290AD0022915D003290D +:1001800010D0042915D11BE00CE6010028E5010080 +:10019000707801280CD10620616A02F067FB002804 +:1001A00007D11AE01D20307017E07178022901D0C4 +:1001B000052796E031780C2927D18DF804000EE050 +:1001C0003078011F042902D30E3803281DD2B07FD6 +:1001D00002281AD12089022817D38DF8049084F8B8 +:1001E00000A020899DF80410884203D20A208DF8CF +:1001F00000003FE01121083488F8001094E80E0058 +:10020000C8E901120327C8F80C306AE098F800101A +:10021000112966D18DF80000616A0491D8F8085060 +:10022000029521794FF00B0B012906D0022929D024 +:10023000032911D0042954D15AE0ADF8049085F86F +:1002400000B0207E4F4600F01F0068700021684615 +:10025000FEF7C2FE377043E0ADF804900520287029 +:10026000207E68704E4600216846FEF7B5FE267077 +:100270008DF800B0606A049041466846FEF7ACFE17 +:1002800007462EE0ADF8040085F800A0207F6870D6 +:10029000607F00F00100A870A07F00F01F00E870F0 +:1002A000E17F2971C0071FD094F8200000F00F00F3 +:1002B000687194F8210000F00F00A87100216846D1 +:1002C000FEF78AFE2868B063A888B087A87986F808 +:1002D0003E00A069407870772879B0700D203070AA +:1002E0000027384605B031E70020A8716871E5E7BE +:1002F000ADF804900E202870207E687000216846BA +:10030000FEF76AFEECE7FE2030708DF800A0606A10 +:10031000049004208DF80400207E8DF80500EDE7A0 +:1003200000B50023012285B005280FD006280BD187 +:1003300002208DF8002004918DF804008DF805301E +:1003400000216846FEF748FE05B000BD8DF800208C +:1003500004918DF80420F1E770B50C46054602F0D3 +:10036000ACFA21462846BDE870407823002202F00E +:1003700007BA08B1007870470C20704770B50C00C0 +:1003800005784FF000010CD021702146F3F727FAD1 +:1003900074482178405D884201D1032070BD02205D +:1003A00070BDF3F71CFA002070BD027B032A05D054 +:1003B00000220A704B780B2B02D003E00420704718 +:1003C0000A770A62027B9300521C0273C150032019 +:1003D0007047F0B585B00F4605460124287B05EB34 +:1003E000800050F8046C7078411E0C290AD25D49D7 +:1003F0003A46123101EB8000314650F8043C284661 +:10040000984704460CB1012C11D1287B401E10F0F6 +:10041000FF00287301D00324E0E70D208DF80000D1 +:10042000706A0490002101966846FFF7A7FF032C2D +:10043000D4D005B02046F0BD70B515460A46044636 +:1004400029461046FFF7C5FF064674B12078FE28FE +:100450000BD1207E30B100202870294604F10C0019 +:10046000FFF7B7FF2046FEF700FE304670BD70472D +:1004700070B50E46044688210DF0AFFD0225012E11 +:1004800003D0022E04D0052070BD0120607000E072 +:1004900065702046FEF7E9FDA577002070BD28B104 +:1004A000027E1AB10A4600F10C01C5E7012070472F +:1004B00030B5044687B00D46062002F0FEF9294605 +:1004C000052002F0FAF92078FE2806D000208DF8E9 +:1004D000000069462046FFF7E2FF07B030BD7FB558 +:1004E0000E4600218DF80C1041780B2903D00C2901 +:1004F00003D0002405E0846900E044690CB1217E4A +:1005000091B16D4601462846FFF74FFF032809D1F8 +:10051000324629462046FFF78FFF9DF80C10002930 +:1005200000D0042004B070BD04F10C05EAE710B55A +:1005300090B00C4607900B480421801E08900A4892 +:100540008DF8191009900F92694606A8FFF7C7FFAA +:10055000002805D11022204601990DF0A5FC0020AD +:1005600010B010BD2EE501000CE6010070B50D467F +:10057000040011D085B1210128460DF00CFD102298 +:100580004E4928460DF090FC4C4801210838018066 +:1005900044804560002070BD012070BD70B5474E9D +:1005A00000240546083E10E07068AA7B00EB0410AA +:1005B000817B914208D1C17BEA7B914204D10C221C +:1005C00029460DF045FC30B1641C30888442EBDBD9 +:1005D0004FF0FF3070BD204670BD70B50D4606006F +:1005E00006D02DB1FFF7DAFF002803DB401C14E032 +:1005F000102070BD314C083C20886288411C91421B +:1006000001D9042070BD6168102201EB0010314651 +:100610000DF04AFC2088401C20802870002070BD0E +:1006200070B514460D0018D0BCB10021A17002288D +:1006300002D0102811D105E0288870B10121A170E5 +:10064000108008E02846FFF7A9FF002805DB401CC2 +:10065000A070A8892080002070BD012070BD70B5F9 +:10066000054614460E000BD000203070A8780128F3 +:1006700008D005D91149A1F108010A8890420AD988 +:10068000012070BD24B1287820702888000A50709D +:10069000022008700FE064B14968102201EB0011DC +:1006A000204610390DF000FC287820732888000AB5 +:1006B000607310203070002070BD000068000020C2 +:1006C0002DE9F041FE4C207EE17D884208BFBDE867 +:1006D000F0810126FB4D0027E07D215C01EB8102CA +:1006E00005EB8200037C052B18D0037C062B23D05E +:1006F000037C072B34D0437C002B08BFFFDF29D0BD +:100700004774E07D16280EBF0020E07D401CE07598 +:10071000481CC0B255F8222007211AE00674E07D7B +:1007200016281ABFE07D401C0020E075481CC0B2AE +:1007300055F8222002210CE00674E07D16281ABF2D +:10074000E07D401C0020E075481C55F82220C0B216 +:1007500003219047207EE17D8842BDD1BDE8F08134 +:100760000674E07D16281ABFE07D401C0020E0756D +:10077000481CC0B255F822200821EAE770B5D24DD6 +:100780000C2085F82900A5F53B70002480F8CD41A8 +:1007900080F8CC4100F5F4700476C47505F12C00A6 +:1007A0000CF0C0FDA5F58E70047585F82B40601E19 +:1007B0002C60A86085F8254085F8224085F8234004 +:1007C00085F8244085F82140C048A5F1E80104706F +:1007D0004470002000EB800201EB82021474401C84 +:1007E000C0B20B28F6D30120F8F708FF0020F8F775 +:1007F00005FF012085F82600F9F72EFBB448F9F72C +:100800003AFBB44C2070B448F9F735FB6070BDE892 +:100810007040F8F787BE10B5F8F7B2FEAD4C2078FF +:10082000F9F742FB6078F9F73FFBA74C94F82800F2 +:10083000002808BF10BDF9F7B2F8002084F828009E +:1008400010BD0B20704770B59F4C94F8260000280F +:100850001CBFFFDF70BD94F82B00002808BFFFDF2E +:10086000F8F777FF62690025811A6FF07F43B1F5D1 +:10087000800F24BFA2EB000CBCF5800F0DD38B4280 +:1008800003D2991A0844411C07E0634528BFFFDFE3 +:1008900005D2181A1044401C4142002900DBFFDF3A +:1008A000012684F8266084F82B5094F8291004203F +:1008B000844A01EB810102EB81010874A068B0F168 +:1008C000FF3F04D0B01EA0600120F8F797FE002083 +:1008D000F8F794FEF8F778FE25600CF0C7FEF8F7FD +:1008E000C1FF7E48056005604FF0E0214FF40040F5 +:1008F000C1F88002F2F7E5FA74480078022804D0C3 +:10090000032805D194F8230010B184F8226001E097 +:1009100084F82250BDE87040F8F788BF0346694963 +:100920000B2000BF00EB800201EB820212F8042CC6 +:1009300022B1401E10F0FF00F4D1704700EB80029E +:1009400001EB8201012241F8143C01F8042C7047AC +:10095000012804D0032808BF002926D000E021B3D5 +:10096000594B4FF0000C83F821C0584A0028907072 +:1009700014BF022882F803C00BD0072915D2DFE884 +:1009800001F01404060C0E1012001B2000E03A20A7 +:10099000D070012083F8210070475820F8E77720B5 +:1009A000F6E79620F4E7B520F2E7002070474748C5 +:1009B00010B54078F8F75FFF80B210BD30B5421E29 +:1009C0004049002500EB800001EB80040A2A02D890 +:1009D00014F8040C00B9FFDF14F8040C012818BF48 +:1009E000FFDF04F8045C30BD70B53D4C94F8CD01D8 +:1009F00094F8CC1188420CBF01250025F8F7A9FE18 +:100A0000F8F739FF94F8CD1194F8CC2191420CBF3E +:100A100001210021A942E9D170BD30B50D46314A0E +:100A200044190021101A71EB010038BFFFDF2E4876 +:100A30008542C8BFFFDF2D488542B8BFFFDF2C4885 +:100A40008442A8BF2B4804DA002CAABF20462848BD +:100A500030BD201830BD70B51A4900EB800001EBA5 +:100A60008004254A54F8101D607A002852F820208E +:100A700011440CBF04200220084420F07F40F8F706 +:100A8000FAFE94F90850174A44190021101A71EB24 +:100A9000010038BFFFDF14488542C8BFFFDF13489D +:100AA0008542B8BFFFDF12488442A8BF114804DA6C +:100AB000002CAABF20460E4870BD201870BD000053 +:100AC000DC080020F8080020E00900207A0000205F +:100AD0002D26010078000020C106010000F500402D +:100AE000F4060020FF7F841E0020A10700E05EF8CE +:100AF0000080841E00807BE170E501002DE9F04F4D +:100B00000646FF4885B00068C005C00D11D01038FA +:100B100040B20028B8BF00F00F0000F1E020B4BFE1 +:100B200090F8140D90F80004400908BF4FF0010A36 +:100B300001D04FF0000A307800281FBF01280020A4 +:100B400005B0BDE8F08F307900280CBF04210221E8 +:100B5000EC4ABAF1000F52F8200001EB000903D172 +:100B6000E949002081F827006C4602AA2146B068B6 +:100B7000F8F78EFE9DF90820F068211D104401222F +:100B8000C01C1F28B8BF019208DB03AAF8F780FE3B +:100B90009DF80C0010B10198401C0190DDE9001097 +:100BA0000844401D20F07F400190A1EB090020F097 +:100BB0007F40009070798DF80A0000980390F8F754 +:100BC000C8FD009A019B121A181AD04922F07F42E0 +:100BD00020F07F40B2F5800F26D2814224D3CA484C +:100BE00090F82950009CCA4F181B20F07F486FF0E6 +:100BF0007F40001BAB4604900C2D24D005EB8500F4 +:100C000007EB80026FF07F435068011BB1F5800F46 +:100C100012D3A4EB000CBCF5800F0DD38B4205D290 +:100C200004990844411C07E000205FE0634509D2B5 +:100C3000191A0819401C41420029BCBFAB46957CDB +:100C4000DADB00E0FFDF5D4525D00BEB8B0007EB27 +:100C500080026FF07F4091680B1BB3F5800F12D3B9 +:100C6000A4EB010CBCF5800F0DD3984203D204987D +:100C70000844431C07E0604528BFFFDF0BD2431A3E +:100C80001819401C4342002B05DD9DF80A00927B99 +:100C9000904228BF0C460C2D18BF9DF80A1010D0AA +:100CA00005EB850007EB80004268121B22F07F42B3 +:100CB000424506D2827B914228BF8468857C0C2DF8 +:100CC000EED10098A04205D004EB080020F07F4050 +:100CD0000094019000990398814206D001EB09002D +:100CE00020F07F40F8F7C7FDB0600120864991F8F9 +:100CF0002710002904BF05B0BDE8F08FBAF1000F3E +:100D00003FF42EAF05B0BDE8F08F2DE9F04F064659 +:100D100087B00C467F480CF00DFB4FF0010800280F +:100D200035D07D4F387D002818BFFFDF3E74207915 +:100D3000794D05F10C022872607968722946A06825 +:100D4000F8F7A6FD95F90C000F2804DD1F3828736D +:100D50002868401C286095F90C00E1682E1D0844A5 +:100D6000C01C1F28B8BFC6F8008009DB6A463146A0 +:100D7000F8F78EFD9DF8000010B13068401C30601F +:100D80002078A87287F8148007B0BDE8F08F634D13 +:100D900095F8CD0116281ED095F8CD0195F8CC1107 +:100DA000401C884200D1FFDF55480068C005C00DD7 +:100DB0001AD0103841B20029BDBF01F00F0000F178 +:100DC000E02090F8140D01F1E020A8BF90F8000495 +:100DD000400909D104E095F8CC010028E4D1E2E70C +:100DE0002078002818BFFFDF4C4890F8CD1101EBA8 +:100DF000810100EB810006742078012800F04A810F +:100E0000022843D0454890F8CD1101EB810100EB59 +:100E10008105207928726079687205F10C022946F3 +:100E2000A068F8F735FD95F90C000F2804DD1F3890 +:100E300028732868401C286095F90C10E0682E1D66 +:100E40000844C01C1F28B8BFC6F8008009DB6A46EA +:100E50003146F8F71DFD9DF8000010B13068401CC8 +:100E600030602078A8722D4890F8CD1116290EBF59 +:100E7000002190F8CD11491C80F8CD1125480CF0C7 +:100E80006FFA07B0BDE8F04FF8F7D0BC234890F8F0 +:100E9000CD1101AA01EB810100EB81076946E068F1 +:100EA000F8F7F6FC9DF904000F28CCBF01200020C4 +:100EB00000993D1D08440190A068C01C1F28B8BFC0 +:100EC000C5F8008009DB6A462946F8F7E1FC9DF881 +:100ED000000010B12868401C28600220B8726079B8 +:100EE00078722079387200280CBF04210221054A4B +:100EF00052F82000014403917A68481D10440FE025 +:100F000004ED00E070E50100E0090020FFFF3F0074 +:100F1000F80800200C0A0020C4080020F406002075 +:100F20000199009008440399401A0590FD4C002057 +:100F300084F82700F8F70DFC3860019980460844D2 +:100F400020F07F40F86094F829000C287ED02146DC +:100F500091F8290000EB8002A1F1E80000EB820289 +:100F60005668009A324422F07F42029297F809B004 +:100F700091F829503446111B21F07F4A6FF07F41D0 +:100F8000891BA94604910C2D23D0E74805EB850168 +:100F900000EB81026FF07F435068011BB1F5800FB9 +:100FA00024BFA4EB000CBCF5800F0BD38B4203D203 +:100FB00004990844411C05E0634509D2191A08192F +:100FC000401C41420029BCBFA946957CDBDB00E008 +:100FD000FFDF4D4524D0D44809EB890100EB8103A4 +:100FE0006FF07F429868011BB1F5800F12D3A4EB1C +:100FF000000CBCF5800F0DD38A4203D20499014442 +:10100000491C07E0624528BFFFDF09D2121A1119F7 +:10101000491C4942002903DD997B8B4528BF0446C2 +:101020000C2D18BFC04910D005EB850001EB8000E6 +:101030004268121B22F07F42524506D2827B9345C2 +:1010400028BF8468857C0C2DEED100E01BE0A64211 +:1010500005D004EB0A0020F07F4026460290029A59 +:10106000A6EB080020F07F40A2EB0802059922F0D1 +:101070007F42B0F5800F06D2914204D303983044EA +:1010800020F07F403860A74890F8270000287FF4C0 +:101090004DAFE8E6A548851915F8010C002818BFE2 +:1010A000FFDF05F8018CADE60020F8F797BA0120C4 +:1010B000F8F794BA9E48007870472DE9F0419A4EAF +:1010C00000274FF00308012506F1E80450B301287A +:1010D0005BD0022800F0E98003281CBFFFDFBDE8D9 +:1010E000F08194F829000C2808BFFFDF84F82670EF +:1010F00084F82B5094F8290000EB800006EB800068 +:1011000080F81080F8F799FB94F8290094F82910DA +:10111000401CC0B201EB810156F82120BDE8F0412E +:101120000521104794F829000C2808BFFFDF84F838 +:10113000267084F82B5094F8290000EB800006EB11 +:10114000800080F81080F8F778FB207F002818BF17 +:10115000FFDF84F825500020F8F750FAA168B1F1BC +:10116000FF3F04D0012300221846F8F78BFA94F8C9 +:10117000290094F82910401CC0B201EB810156F8F7 +:101180002120BDE8F0410121104794F829000C28E6 +:1011900008BFFFDF84F8267084F82B5094F82900EC +:1011A00000EB800006EB800080F81080F8F745FB2C +:1011B0000120F8F723FA94F8250000281CBFA06846 +:1011C000B0F1FF3F0DD094F8290094F82910401C8D +:1011D000C0B201EB810156F82120BDE8F0410621A3 +:1011E0001047207F012815D002281FD0032833D0B4 +:1011F00004281CBFFFDFBDE8F08194F82010606870 +:101200000123411A00221846F8F73CFA94F8280006 +:10121000B8BB37E094F8240028B184F82470F8F7BC +:1012200013FB84F823502777BDE8F08194F8280059 +:1012300018B9F8F78BFB84F8285094F8290094F833 +:101240002910401CC0B201EB810156F82120002179 +:1012500090472777BDE8F081217B60680123411A20 +:1012600000221846F8F70EFA94F8240028B184F802 +:101270002470F8F7E9FA84F8235002202077BDE8BB +:10128000F08103E0F8F762FB84F8285094F8290015 +:1012900094F82910401CC0B201EB810156F82120BE +:1012A000002190472577BDE8F08121480078BDE80E +:1012B000F041F8F7FFBD10B51A4C94F829000C283E +:1012C00008BFFFDF94F8290094F82910401CC0B231 +:1012D000154A01EB810152F82120BDE8104004219C +:1012E00010472DE9F84F8046087C104C401EC6B2CE +:1012F0000D46A05D01281DD0022825D0297CDFF8ED +:1013000028A0481EC4B204EB84020AEB8206371DF3 +:101310000A2821D801EB81000AEB800010F8040CA8 +:10132000D8B919E0E0090020F8080020D40900200D +:1013300078000020A87A012814BF02200020A055C0 +:1013400018BFBDE8F88FD9E7A87A012818BFFFDFDA +:101350000021A972A155D1E7FFDF307CDFF8289486 +:1013600007280BD11720009099F8172009F11803CE +:10137000494620460BF02AFD01203074307C0128BC +:1013800004D0A87A012818BFFFDF02D0A87A01286C +:101390004BD1FE4B307C022818D099F81800162843 +:1013A00072D099F8180099F81710401C884200D1A3 +:1013B000FFDF0120707499F8180009F8004099F8CF +:1013C0001800162800F09E8100F093B9F04A92F8B8 +:1013D00029000146A04207D0014600EB810003EB43 +:1013E0008000807CA042F7D192F829C084450CD1BE +:1013F00092F8291001EB810103EB8101897C82F8CD +:101400002910012182F82A1009E000EB800203EB89 +:10141000820201EB810103EB8101927C8A7400EB73 +:10142000800003EB80000C218174287AD9490028C0 +:1014300051F820A02968A1EB0A010CBF042002206A +:10144000081A20F07F423A60D5E90001084420F0F4 +:101450007F407860A87A022818BF287B1ED0387297 +:101460007868401D20F07F407860687AB872287AEA +:1014700006257872032872D2002870D000F022FE70 +:1014800000286DD0A1E0FFE799F81700002890D15F +:101490008EE700BF89F81800BDE8F88F287A002889 +:1014A0000CBF0420022000EB0A036868591D00EB02 +:1014B000010BB9484078504503D9B54991F823103C +:1014C00011B10BF1060003E0A0EB0A005844801DA7 +:1014D000AF4991F829C0BCF10C0F25D091F829C073 +:1014E0000CEB8C0EA1F1E80C0CEB8E0CDCF804C0BC +:1014F000624519D0DFF8A4C291F8291001EB8102EE +:10150000A24901EB82014A688968A2EB080222F035 +:101510007F42A1EB080121F07F41904298BFB2F5D4 +:10152000800F9DD28C459BD34044A0EB0B0020F054 +:101530007F4139601944E86821F07F410A1A6FF051 +:101540007F4CB2F5800F24BF431AB3F5800F11D33F +:10155000944506D2ACEB00000844421C0AE034E09B +:101560002FE09C4528BFFFDF1DD2ACEB01010844F2 +:10157000401C4242002A16DD0520307499F81800FC +:10158000162819D099F8180099F81710401C8842AD +:1015900000D1FFDF99F8180009F8004099F8180009 +:1015A00016287BD0A5E03868ABF10501084420F08F +:1015B0007F407860002052E799F817000028E9D1B1 +:1015C000E7E7CAF138054FF0320A7348017801297C +:1015D00018BF03290AD14078504507D96C4991F8C2 +:1015E0002310002904BFA0EB0A0005446B4B3868A8 +:1015F000A0EB0802786822F07F41A0EB080020F001 +:101600007F4C8D4298BFB1F5800F1BD2634519D333 +:101610005F4991F829300C2B30D091F829504FF0C8 +:101620000C0BDA46594905EB850301EB8303D3F82C +:1016300008C0ACEB080C944531D8AB469D7C0C2D12 +:10164000F0D193E00520307499F81800162810D0D6 +:1016500099F8180099F81710401C884200D1FFDF54 +:1016600099F8180009F8004099F81800162849D090 +:101670003FE099F817000028F2D1F0E7022030741B +:1016800091F829000C2818BF91F82900B07481F84E +:101690002940012081F82A00BDE8F88F32E00C2DA6 +:1016A0001CBFAA46002261D00AEB8A0301EB830328 +:1016B000D3F804C0ACEB080C84452CD29A7B97F885 +:1016C0000AC0944520D30520307499F818001628D4 +:1016D00013D099F8180099F81710401C884200D1CF +:1016E000FFDF99F8180009F8004099F8180016284B +:1016F00008D099F81800401CCCE699F8170000288B +:10170000EFD1EDE70020C5E693F812A00122BAF16F +:101710000C0FC9D103E0002A08BFAA4626D02F46E5 +:101720001A4807EB870100EB8108062288F8102091 +:1017300099F81800162838D099F81800411C99F823 +:101740001700814200D1FFDF99F8180009F80070F6 +:1017500099F8180016280EBF002099F81800401CB0 +:1017600089F8180098F81270BA45D9D10220074FAD +:10177000307407F1E80090F82910A9421AD186F8D0 +:1017800012A080F829400BE0DC080020F8080020B7 +:10179000E009002070E501007A000020FFFF3F0013 +:1017A000012180F82A10BDE8F88F99F81700002869 +:1017B000CAD1C8E70C2D0CD0BBF10C0F08BFFFDF5E +:1017C0000BEB8B0007EB8000847486F812A0BDE859 +:1017D000F88FBBF10C0F08BFFFDF0BEB8B0007EBA3 +:1017E000800084740C20B074BDE8F88F2DE9F04FB0 +:1017F00083B0F7F7AEFF05464FF00C0BFE4C94F8A4 +:1018000029100026A4F1E8094FF001080C292FD077 +:1018100094F82920214602EB820209EB8202127C15 +:10182000042A25D091F8292002EB820209EB8202DA +:10183000127C032A04BF03B0BDE8F08F2A4620695A +:101840006169801A491BED4B20F07F4021F07F41F8 +:1018500006283CBF03B0BDE8F08FB0F5800F24BF71 +:1018600003B0BDE8F08F8B423CBF03B0BDE8F08F02 +:10187000A068B0F1FF3F18BFFFDF84F8256094F83F +:101880002900DF4F0C2809D094F8290000EB8000D4 +:1018900009EB8000007C042808D01AE094F82100AD +:1018A000B8B1F8787870B878387012E094F829B048 +:1018B0000BEB8B0009EB800080F8108094F8290076 +:1018C00000EB800009EB8000807C84F8290084F81C +:1018D0002A80DFF830A39AF8CD019AF8CC1188421B +:1018E00019D000BF9AF8CC0100EB80000AEB800110 +:1018F0002846FFF7F6FC9AF8CC0116280EBF002008 +:101900009AF8CC01401C8AF8CC019AF8CD019AF8DB +:10191000CC118842E6D1DFF8F0A29AF8140028B181 +:1019200051462846FFF7DDFC8AF81460BBF10C0F26 +:1019300006D00BEB8B0009EB8000017C01292BD03A +:1019400094F829000C2800F0ED8094F82A00002873 +:1019500000F0F78084F82A6094F8290000EB8001F9 +:10196000AA4800EB8102A0F50173D2E90101D26817 +:10197000C3F80423C3E9BF01607E00280CBF4FF009 +:1019800004094FF00209A249022811F8201021731E +:1019900018BF012834D123E007210174DFF874A2B5 +:1019A0009AF81800162816D09AF818009AF8171006 +:1019B000401C884200D1FFDF9AF818000AF800B0F6 +:1019C0009AF8180016280EBF00209AF81800401C3C +:1019D0008AF81800B4E79AF817000028ECD1EAE773 +:1019E00020690844421B22F07F42382A08D903218B +:1019F0003238617620F07F4020613220207309E088 +:101A0000322907D294F8280058B9F7F79FFF84F8D5 +:101A1000288006E094F8280018B1F7F7C0FF84F892 +:101A200028607B7884F8203094F80CA03878062160 +:101A3000A3EB0A02012818BF032804D184F82480EC +:101A4000002AC8BF911D94F822B0BBF1000F18BF47 +:101A5000891C206901905044484420F07F40606018 +:101A6000BAF1000F14BF02200020207794F8240060 +:101A7000002808BFBBF1000F37D060480090D4F8B1 +:101A800010E0D4F814C0AEEB050E2EF07F4EACEB98 +:101A9000050C20462CF07F4C714598BFBEF5800F99 +:101AA0001FD2009961451CD3002A0FDD0199BAF1BC +:101AB000000FA1EB020101611944494421F07F416B +:101AC00041600CBF0121032121770EE004DA002BD5 +:101AD0000CBF02210421F7E7BBF1000F08BFFFDFB5 +:101AE00003E080F8246084F82260207F40B1206900 +:101AF000012300EB090100221846F7F7C3FD02E0BD +:101B00000120F7F77BFD94F82900012300EB800109 +:101B10003E4800EB8100616890F90C200020F7F747 +:101B2000B1FD0EE00120F7F769FD0020F7F766FD33 +:101B3000F7F74AFD94F8280018B1F7F730FF84F85A +:101B4000286094F8220028B1F7F77EFE84F823601D +:101B500084F8226094F8210018B1F8787870B87889 +:101B6000387094F8240030B184F823603878002865 +:101B700008BF84F824602748017EC07D814203D0DD +:101B800025484078F8F796F984F8278003B0BDE837 +:101B9000F08F70B5184C054682B094F829000C28D7 +:101BA00008BFFFDF94F8290000EB8000174E06EB1A +:101BB0008000007C032818BFFFDFA068B0F1FF3F62 +:101BC00018BFFFDF94F8290001AA00EB800006EBA4 +:101BD0008000694690F90C002844F7F759FE9DF9FA +:101BE00004000F28CCBF0120002000990844616840 +:101BF000084420F07F4111E0E0090020FFFF3F0092 +:101C00007A000020F4060020C4080020F808002014 +:101C100070E50100DC08002078000020A16094F845 +:101C20002500002804BF02B070BD012302B00022CD +:101C3000BDE870401846F7F725BD744A0B1A02F14B +:101C4000010CB3EB9C0F3CBF1846704710B5441A0B +:101C5000B4EB9C0F3CBF184610BD9A4203D2101A39 +:101C60000844401C10BD94429EBFFFDF002010BD01 +:101C7000511A0844401C404210BD01230022014675 +:101C80000220F7F7FFBC0220F7F7B8BCF7F761BDF9 +:101C90002DE9F0415E4C054682B094F82B000028F7 +:101CA00008BFFFDF642D50D35A480022401B72EB5F +:101CB00002004AD3584890F8CD1190F8CC018142E7 +:101CC00043D15648007D00283FD194F82900DFF821 +:101CD000508100EB800008EB8006206801AA2844B0 +:101CE0006946F7F7D5FD9DF90400002802DD00984C +:101CF000401C0090B168009872680F18BA1A22F060 +:101D00007F42B2F5800F20D2B27C0C2A09D002EBC0 +:101D1000820208EB82025268511A21F07F4181420F +:101D200013D3A068B0F1FF3F05D00120F7F766FCA0 +:101D30004FF0FF30A06020682844206027F07F40EB +:101D4000606102B00120BDE8F08102B00020BDE872 +:101D5000F0812DE9F8430646401EC7B2304807EB34 +:101D6000870100EB8104207C002808BFFFDF2A4A9E +:101D700092F8CC1192F8CD0181420DD001EB810394 +:101D800002EB83031B7CB34210D016290CBF002149 +:101D9000491CC9B28142F1D120484FF0170800F127 +:101DA0001805017D29B3007CB04222D10020BDE896 +:101DB000F883207C05281FBF207C0628207C07286C +:101DC0000AD184F81090CDF80080EA7D05F118035F +:101DD000144938460AF0FAFF607C68B16674CDF8A1 +:101DE0000080EA7D05F118030E4938460AF0EEFF3F +:101DF00002E04FF001090026207C012804BF607C2E +:101E00000028D6D10120BDE8F8830000FF7F841EA2 +:101E1000E0090020FF1FA107F4060020C4080020ED +:101E2000F8080020DC080020F0B5734AD2F8003230 +:101E3000724D002401212E7856B9714E3460704FD6 +:101E400003263F1D3E606E4F04260C373E6029700E +:101E5000C2F80042D1601160694C4834D1642568F1 +:101E60008542FBD35160D160C2F80032F0BD2DE94C +:101E7000F041044680074FF000054FF0010604D5FD +:101E800060480560066024F00204E0044FF0FF376C +:101E900005D55D484660C0F8087324F4805460009E +:101EA00003D55A48056024F08044E0050FD5524818 +:101EB000C0F80052C0F8087351490D60091D0D604B +:101EC0004F4A04210C321160066124F48074A0048E +:101ED00009D54F484660C0F80052C0F808734D4815 +:101EE000056024F40054C4F38030C4F3C031884248 +:101EF00000D0FFDF14F4404F14D047484660C0F8CC +:101F0000087346488660C0F80052C0F80873444918 +:101F10000D600A1D16608660C0F808730D601660BB +:101F200024F4404420050AD53E4846608660C0F847 +:101F30000873C0F848733C48056024F400640BF053 +:101F40006FFB3A48044200D0FFDFBDE8F08170B576 +:101F5000202500224FEA020320FA02F1C90719D016 +:101F600051B201F01F060124B4404E09B60006F13B +:101F7000E026C6F88041C6F88042002906DA01F062 +:101F80000F0101F1E02181F8143D03E001F1E021AE +:101F900081F80034521CAA42DED370BD70B5174CD4 +:101FA0000D466060FFF763FF6068FFF7D0FF2846CB +:101FB000F7F7A9FD0AF064FF00F0D5F80BF030FB4D +:101FC0000BF07BFAF7F748FFBDE870400BF006B85E +:101FD00010B50A4C6068FFF74AFF6068FFF7B7FF6B +:101FE0000BF01EFBF7F753FE0020606010BD0348A6 +:101FF0004068704702207047008000408000002049 +:1020000004850040FC1F004000C0004004E5014082 +:1020100000D0004004D5004000E0004000F0004047 +:1020200000F5004000B0004008B50040FEFF0FFC86 +:1020300070B51F490A68BAB100231D4601244A68D9 +:10204000521C4A60092A00D34D600E7904FA06F248 +:102050000E6816420AD072B60B6893430B6062B6E4 +:1020600049680160002070BD052070BD5B1C092B14 +:10207000E5D3FFDFF8E74FF0E0214FF48000C1F82F +:1020800000027047EFF3108111F0010F72B64FF0AC +:10209000010202FA00F20648036842EA0302026003 +:1020A00000D162B6E7E70248002101604160704755 +:1020B0008800002001208107086070470120810707 +:1020C0004860704712480068C00700D00120704780 +:1020D0000F48001F0068C00700D0012070470C485F +:1020E00008300068C00700D0012070470848103051 +:1020F0000068704706490C310A68D20306D50968A2 +:1021000001F00301814201D1012070470020704796 +:102110000C040040C84911F8210F4978884201D3C6 +:10212000401A02E0C1F121010844C0B27047C2491F +:10213000233111F8210F4978884201D3401A02E077 +:10214000C1F121010844C0B27047BB49463111F8C2 +:10215000210F4978884201D3401A02E0C1F12101E0 +:102160000844C0B27047B54910B5802081F800041A +:10217000B1490020233101F8210F4870AE4901F820 +:10218000210F4870AC49463101F8210F4870AC4826 +:102190000BF0C8F8AA48401C0BF0C4F8F0F7A4FEF6 +:1021A000BDE8104000F03DB920207047B2E770B59F +:1021B0000C4605460026FFF7ADFF01469E48A142AA +:1021C00012D30022641EE4B20DD390F82210435CB7 +:1021D000491CC9B205F8013B80F822102129F1D130 +:1021E00080F82220EEE7012600F01BF9304670BD92 +:1021F000202070479BE770B50C4605460026FFF788 +:1022000096FF01468C482330A14212D30022641E5F +:10221000E4B20DD390F82210435C491CC9B205F812 +:10222000013B80F822102129F1D180F82220EEE72D +:10223000012600F0F6F8304670BD20210170002024 +:10224000704710B50446FFF780FF2070002010BDD6 +:1022500070B50C460546FFF778FF014676484630D4 +:10226000A14213D30022641EE4B20DD390F82210D1 +:10227000435C491CC9B205F8013B80F822102129B2 +:10228000F1D180F82220EEE7002401E042F20704B9 +:1022900000F0C7F8204670BD70B50C4605462129F0 +:1022A00000D9FFDF67480068103840B200F0A0F89E +:1022B000C6B20D2000F09CF8C0B2864204D2FFDF07 +:1022C00002E000BFF0F760FE21462846FFF76FFFEF +:1022D0000028F7D070BD2DE9F047DFF86481564C37 +:1022E000A8F101080746233498F80000DFF8489168 +:1022F000002604F1230A38B994F8221094F821003A +:10230000212200F084F890B14D4699F8221099F8F6 +:102310002100212200F07BF8B8B155469AF822102E +:102320009AF82100212200F072F848B335E094F8C1 +:102330002100275494F82100401CC0B284F82100E9 +:1023400021282AD184F8216027E095F821002F5414 +:1023500095F82100401CC0B285F82100212801D148 +:1023600085F8216098F800004746B0B195F8221032 +:1023700095F82100212200F04AF870B13E700CE07F +:1023800095F821002F5495F82100401CC0B285F823 +:102390002100212801D185F8216094F8221094F8B9 +:1023A0002100212200F033F800281FD099F82210D4 +:1023B00099F82100212200F02AF8002816D09AF876 +:1023C00022109AF82100212200F021F800280DD0D7 +:1023D000F0F7B0FD1A480AF0ADFFB0F5005F00D08D +:1023E000FFDFBDE8F04716480AF0BABFBDE8F08746 +:1023F000002806DA00F00F0000F1E02090F8140D3C +:1024000003E000F1E02090F8000440097047401C10 +:10241000884204D0904200D109B1002070470120C9 +:10242000704710B506480AF085FF002803D1BDE8C3 +:102430001040F0F76ABD10BD100A00200DE000E06A +:102440009100002004ED00E0164908784A78401C0D +:10245000C0B2904205D0144B01221A60BFF34F8FD7 +:10246000087070472DE9F0410E4C4FF0E02600BF98 +:10247000F7F7A0FC20BF40BF20BF677820786070CE +:10248000D6F80052EEF73EFF854305D1D6F8040298 +:1024900010B92078B842EBD0F7F787FC0020BDE8F0 +:1024A000F081000093000020180502402DE9F04162 +:1024B000012528034FF0E0210026C1F880011E4CC1 +:1024C000C4F800610C2000F02CF81C480168026878 +:1024D000C94341F3001142F010020260C4F80453F2 +:1024E0002560491C00E020BFD4F80021002AFAD062 +:1024F00019B9016821F01001016011480768656091 +:10250000C4F80853C4F800610C2000F00AF83846FB +:10251000BDE8F08110B50446FFF7C8FF2060002039 +:1025200010BD00F01F02012191404009800000F120 +:10253000E020C0F88012704700C0004010ED00E0BD +:1025400008C500402DE9F047F84C0646FF216068B9 +:1025500000EB061211702178FF2916D04FF0080900 +:1025600009EB011109EB06174158C059491E21F02A +:102570007F4100F0DDF918B194F80080454614E081 +:102580006168207801EB061108702670BDE8F087BD +:10259000626809EB0510D159105800F0C9F930B93B +:1025A0006068A84600EB08100578FF2DF0D1606840 +:1025B00000EB061100EB08100D700670E6E7F0B5B1 +:1025C000DA4B0446002001255A680C261B7A0BE0E2 +:1025D00005EB0017D75DA74204D106EB0017D759CA +:1025E0008F4204D0401CC0B28342F1D8FF20F0BD1E +:1025F00070B5FFF74BFBCD4C01460825227860688B +:1026000005EB0212805800F093F9012808D92178CF +:10261000606805EB01114058BDE87040FFF72DBB25 +:10262000FEF748FDBDE87040F7F744BC2DE9F041E6 +:10263000BE4C2578FFF72AFB0146FF2D6FD04FF0E7 +:102640000808626808EB0516905900F071F9022835 +:10265000606801D980595EE000EB051109782170AE +:10266000022101EB0511425C5AB1521E42548159BC +:1026700001F5000121F07F4181512846FFF762FFFB +:1026800034E00423012203EB051302EB051250F89A +:1026900003C0875CBCF1000F10D0BCF5806F10D96F +:1026A000CCF3090250F806C00CEB423C2CF07F4CF6 +:1026B00040F806C0C3589A1A920A09E0FF218154D3 +:1026C0000AE0825902EB4C3222F07F428251002212 +:1026D00042542846FFF736FF0C21606801EB0511D4 +:1026E0004158E06850F82720384690472078FF2866 +:1026F00015D0FFF7CBFA01462278606808EB02128A +:102700004546805800F014F9012891D92178606875 +:1027100005EB01114058BDE8F041FFF7AEBABDE846 +:10272000F081F0B51D4614460E460746FF2B00D338 +:10273000FFDFA00700D0FFDF7C48FF210022C76039 +:10274000446005720674017042701046012204E074 +:1027500002EB0013401CE154C0B2A842F8D3F0BD14 +:1027600070B5724C06466578207C854200D3FFDF49 +:10277000E06840F825606078401C6070284670BDB5 +:102780002DE9FF5F1D468B460746FF24FFF77EFAC3 +:10279000DFF89891064699F80100B84200D8FFDFAB +:1027A00000214FF001084FF00C0A99F80820D9F8E1 +:1027B00004000EE008EB0113C35CFF2B27D0BB42E3 +:1027C00005D10AEB011350F803C0DC4521D0491CA8 +:1027D000C9B28A42EED8FF2C1BD008EB04110AEBD9 +:1027E0000412475440F802B00421029B0022012B3E +:1027F00001EB041111D042504FF4806808234FF0D0 +:10280000020C454519D9A905890D08D008E00C46E8 +:10281000DDE7FF2004B0BDE8F09F4550ECE74146FE +:1028200006EB413203EB041322F07F42C250691AD7 +:102830000CEB0412890A81540BE005B9012506EB63 +:10284000453103EB041321F07F41C1500CEB04111F +:10285000425499F800502046FFF774FE99F80000A2 +:10286000A84201D0FFF7C4FE3846D3E770B50C4646 +:102870000546FFF70BFA064621462846FFF79FFE5E +:102880000446FF2817D0294D082101EB0411686880 +:102890004058314600F04CF800F58050400B0221C2 +:1028A0006A6801EB0411515C09B100EB812000283A +:1028B00000D1012070BD002070BD2DE9F0410F4610 +:1028C0008046FFF77CFEFF281BD0184E35787168D4 +:1028D0002A462C4605E0844206D0254601EB051326 +:1028E0001C78FF2CF7D10CE0FF2C0AD0A5420CD1AC +:1028F00001EB021000783070FF2804D0FFF778FE5B +:1029000003E000200BE7FFF7BEF939464046FFF72A +:10291000ADFFFF220123716803EB0413CA5401EBDE +:10292000041201EB051112780A70F8E67C0A002007 +:10293000401A20F07F40B0F5000F00D9002070470A +:1029400070B50446A0F500002C4EB0F1786F02D2AD +:102950003444A4F500042A48844201D2012500E051 +:10296000002500F041F830B1B4420BD3254800688F +:1029700004E0284370BDB44204D32348844201D20A +:102980000120F6E70020F4E710B50446A0F50000AA +:10299000B0F1786F03D219480444A4F5000400F0A4 +:1029A00023F84FF0804130B11648006804E08C42B3 +:1029B00004D2012003E014488442F8D2002080F0C1 +:1029C000010010BD10B520B1FFF7DEFF08B10120F6 +:1029D00010BD002010BD10B520B1FFF7B1FF08B148 +:1029E000012010BD002010BD084809490068884238 +:1029F00001D1012070470020704700000000002036 +:102A000000F00100200000200800002098000020B5 +:102A1000BEBAFECA0548064A0168914201D10021AA +:102A20000160044901200860704700009800002000 +:102A3000BEBAFECA40E50140534800210170417012 +:102A400010218170704770B5054616460C4602206D +:102A5000F0F7E7F94C49012008704C49F01E086076 +:102A60004B480560001F046070BD10B50220F0F7F0 +:102A7000D8F945490120087046480021C0F80011E6 +:102A8000C0F80411C0F8081143494FF40000086071 +:102A900010BD3D480178C9B1404A4FF400011160B2 +:102AA0003C49D1F800310022002B1CBFD1F8043181 +:102AB000002B02D0D1F8081111B14270102103E0AF +:102AC0000121417036490968817002700020F0F7D9 +:102AD000A8B92D480178002904BF407870472D48D7 +:102AE000D0F80011002904BF02207047D0F800116F +:102AF00000291CBFD0F80411002905D0D0F8080126 +:102B0000002804BF01207047002070471E4800B510 +:102B10000278204B4078C821491EC9B282B1D3F84F +:102B200000C1BCF1000F10D0D3F8000100281CBF79 +:102B3000D3F8040100280BD0D3F8080150B107E006 +:102B4000022802D0012805D002E00029E4D1FFDFED +:102B5000002000BD012000BD0B480178002904BF02 +:102B6000807870470B48D0F8001100291CBFD0F8BE +:102B70000411002902D0D0F8080108B110207047D4 +:102B800007480068C0B270479C00002010F5004064 +:102B900008F5004000F0004004F5014008F5014050 +:102BA00000F400403148002101704170704770B559 +:102BB000064614460D460120F0F733F92B49012053 +:102BC00008702B480660001D0460001D056070BD84 +:102BD0002DE9F04105460120F0F723F923480126AD +:102BE0002449067045F080700860234C0027C4F823 +:102BF000047122494FF040700860002D02BFC4F8F4 +:102C000000622660BDE8F081012D18BFFFDFC4F827 +:102C1000007226604FF0007019490860BDE8F0812D +:102C20001248017879B1154A4FF04071116012498C +:102C3000D1F804210021002A08BF417002D0114AB6 +:102C40001268427001700020F0F7EBB80748017875 +:102C5000002904BF407870470748D0F804010028D5 +:102C600008BF704707480068C0B270479F00002047 +:102C700008F5004004F5004000F0004008F5014070 +:102C800004F5014000F4004070B5FE4C0025012021 +:102C90006570257025626572A572E07284F829500E +:102CA000256304F13C00A5630AF03CFB002818BF33 +:102CB000FFDF84F82450F4480BF0A2FAF3494FF0F8 +:102CC00011300860091D0860091D0860091D0860B1 +:102CD000091D0D60091D0860091D0860091D0860B7 +:102CE000091D0860091D0860091D0860091D0860AC +:102CF000091D0860091D0860657770BD30B4E149A1 +:102D00000268DFF890C34A6142688A61007A0877F6 +:102D10000A7DDF4BACF1040401204AB10A7E00FABF +:102D200002F21A608D7D002D0CBF2260CCF80020CD +:102D30004A7D002A04BF30BC70474A7E904018602C +:102D4000C97D00290CBF2060CCF8000030BC704762 +:102D5000D249D1480860091DD14808607047CF4A60 +:102D600000B5D0491160C0B240F44030111D40F0B0 +:102D700000700860CC48D0F80001002818BFFFDFC1 +:102D800000BD012070B502244FF0E0250022C5F8F7 +:102D90008041C6490A600860C5490B6823F0770383 +:102DA00043F0880343F000430B60C24B40F25B6189 +:102DB00019601B1F40F203111960191F0860BE48FB +:102DC00003230360BD4996200860AE4EBC4896F9C7 +:102DD000241011F1080F08BFF8213CD014DC11F1C8 +:102DE000280F08BFD82136D011F1140F08BFEC21ED +:102DF00031D011F1100F08BFF0212CD011F10C0FC0 +:102E000008BFF42127D010E011F1040F08BFFC2106 +:102E100021D0002908BF026008D0032908BF036041 +:102E200004D0042908BF016000D0FFDF707F0028B4 +:102E300014BF4FF4C020A348A3490860A449A34885 +:102E40000860091FA3480860C5F880429649102011 +:102E5000C1F8040370BD0160E8E78A4A0368C2F85C +:102E600002308088D08011727047864890F829001F +:102E70007047844A517010707047F0B50546800065 +:102E800000F1804000F580508B88C0F820360B7828 +:102E9000D1F8011043EA0121C0F8001605F108003D +:102EA000012707FA00F68C4C002A04BF2068B043C3 +:102EB00004D0012A18BFFFDF20683043206020685B +:102EC00007FA05F108432060F0BD10B57C490446BF +:102ED00010F1080F08BFF8202CD014DC14F1280FD3 +:102EE00008BFD82026D014F1140F08BFEC2021D041 +:102EF00014F1100F08BFF0201CD014F10C0F08BF04 +:102F0000F42017D011E014F1040F08BFFC2011D0F9 +:102F1000002C08BF00200DD0032C08BF032009D0CF +:102F2000042C04BF0420086000D0FFDF554880F85F +:102F3000244010BD0860F9E7524890F8340070470B +:102F4000504890F836007047644AC17811600068B4 +:102F50006349000208607047252808BF02210ED08F +:102F6000262808BF1A210AD0272808BF502106D0DA +:102F70000A2894BF0422062202EB4001C9B2594A32 +:102F800011605949086070473E49086270473D49E1 +:102F90008A7A012A49D0022A18BF70474B7D002B3C +:102FA00008BF7047DFF844C1012A42D0CA7D4B7E7A +:102FB000002A18BF01227D30CCF80000DFF830C1B4 +:102FC0000020CCF84C01180282F0010240EA0250C5 +:102FD00040F00312087F830003F1804303F5C043F0 +:102FE000C3F81025434A02EB8002887EC30003F138 +:102FF000804303F5F833C3F81425DFF8FCC0C3F8A9 +:1030000010C5C97ECB0003F1804303F5F833C3F844 +:103010001425304AC3F81025012202FA00F002FA02 +:1030200001F108433549086070470B7D002BB9D189 +:1030300070478A7D0B7E002A18BF01227E30BBE7D5 +:103040002DE9F84F00280CBF012202220D4D164C2D +:103050000320AA72C4F80002687F002814BF4FF44E +:10306000C0201848254F38604FF00108002974D05F +:10307000012971D002291CBFFFDFBDE8F88F286A43 +:1030800000283DE0900A0020A40A0020000E004025 +:10309000180500500C0500500601020014150040F0 +:1030A000250003020801100000100040FC1F004032 +:1030B0003C170040381500401015004044150040F2 +:1030C0000C1500400000040408F501404080004059 +:1030D000A4F50140101100404016004024150040A6 +:1030E0001C15004008150040541500404C85004058 +:1030F00000800040006000404C81004004F5014029 +:1031000008BFFFDF296A286B0844FC490860FD49B5 +:10311000FB480860A97AFC4801290EBF0460FB49FE +:103120000160A86B40F40020A863D4F800924FF02F +:10313000100AC4F808A30026C4F80062F4484FF44B +:10314000802BC0F800B0FF208DF80000C4F810619B +:10315000C4F810803DE000E01CE0012A13D0C4F860 +:103160000480022A18BFBDE8F88F687D002808BFD8 +:10317000BDE8F88FE748C0F84C80E7480068BDE834 +:10318000F84F0A3003E7C4F80080287D0028F1D109 +:10319000BDE8F88FE148012A806B07D0022A18BFEA +:1031A000FFDF09D0BDE8F84F0A20F0E640F48010B8 +:1031B000A8634FF4801004E040F40010A8634FF4BB +:1031C00000103860EEE700BF9DF80000401E8DF84B +:1031D00000009DF8000018B1D4F810010028F3D0C9 +:1031E0009DF80000002808BFFFDFC4F80061C4F8A4 +:1031F0000C61C4F81061C4F80461C4F81461C4F827 +:103200001861C4F82861C64800680090C4F80092AC +:10321000C7F800B0C4F804A34FF400203860296A4E +:10322000286BBDE8F84F08440A30B0E62DE9F847AE +:10323000BC4CD4F8000220F00309D4F804034FF08A +:10324000100AC0F30018C4F808A30026C4F80062EE +:10325000B24D687F002814BF4FF4C020B248AC497B +:103260000860A87A0127012802D0022803D014E0C0 +:10327000287D10B911E0687D78B1A87EEA7E07FA52 +:1032800000F007FA02F210430860287F800000F186 +:10329000804000F5C040C0F81065FF208DF80000A8 +:1032A000C4F81061276104E09DF80000401E8DF80D +:1032B00000009DF8000018B1D4F810010028F3D0E8 +:1032C0009DF80000002808BFFFDFC4F81061C4F8B3 +:1032D00028616E72AE72EF72C4F80092B8F1000FFE +:1032E00018BFC4F804A3BDE8F88700688F4920F030 +:1032F0007F40086070474FF0E0200221C0F8801145 +:10330000C0F8801270474FF0E0210220C1F80001A0 +:10331000704787490870704710B586480AF00AF868 +:10332000002818BFFFDF10BD82480AF019B8824993 +:103330000860704730B5794C0546206BA84228BF1D +:10334000FFDF012020732561607F40B1A81C206150 +:103350007448D0F8001241F04001C0F800126D49E5 +:103360000020C1F84401754920690860A06B7449C8 +:1033700040F48000A0634FF48000086030BD6748CF +:1033800002210173CA210161417F41B1CC21016158 +:103390006449D1F8002242F04002C1F800225D4A9F +:1033A0000021C2F844110269016B1144634A1160A3 +:1033B000816B41F48001816361494FF480000860B2 +:1033C00070475649012048775E49022008605F49EE +:1033D0005D480860091F5E48086070474F4900203B +:1033E000487770474A494FF4800008604B48816B2A +:1033F00021F4800181630021017370474548012158 +:103400004160C1600021C0F844114C48016043484C +:1034100001637047414800B5407F002818BFFFDFB7 +:103420004020484908603F48D0F8001241F0400170 +:10343000C0F8001200BD394800B5407F002818BF11 +:10344000FFDF3848D0F8001221F04001C0F8001228 +:103450003C490020086000BD3248D0F8001221F03D +:103460001001C0F800120121816170472D48002130 +:10347000C0F81C11D0F8001241F01001C0F8001281 +:103480007047284981B0D1F81C21012A1EBF0020B5 +:1034900001B070472F4A126802F07F025242027058 +:1034A0000020C1F81C012C4800680090012001B0E8 +:1034B000704730B50C00054608BFFFDF14F0010F60 +:1034C0001CBF012CFFDF002D0CBF0120022013497F +:1034D00001284872CC72134904BFD1F8000240F0B1 +:1034E000040007D0022807BFD1F8000240F008000E +:1034F000FFDF30BDC1F8000230BD0000488500404C +:1035000048810040A8F50140ACF50140041000409E +:1035100008F50140008000404C850040900A0020E2 +:103520001811004000100040000004043C15004049 +:10353000A1000020CC0A0020041500404485004072 +:1035400004F5014060150040448000409CF50140B6 +:1035500028110040481500401C11004070B5EF4C88 +:103560000022E17A11F0020F18BF10F0040F16D1FB +:1035700011F0100F1CBF94F83530002B02D094F8D6 +:10358000373063B111F0080F1CBF94F82830002BBE +:1035900005D111F0040F03D094F8291001B90122CC +:1035A000657ADF4900234FF0010C35B100F00200CD +:1035B000104314D0BDE8704038E6607F002814BF87 +:1035C0004FF4C020D748D84A1060D1F8000220F04C +:1035D0000300C1F80002A37284F80BC070BD012D76 +:1035E00014D0022D18BFFFDF1CD0A07A01280CBF19 +:1035F000CE48CF484FF47A7100F2E730B0FBF1F0DB +:10360000216BBDE87040081A8C30C0E4D1F800028C +:1036100020F00400C1F80002637284F80BC084F843 +:103620000AC0E2E7D1F8000220F00800C1F8000269 +:10363000637284F80BC00220A072D6E72DE9F84F20 +:10364000BC4FD7F84C21B54CB7494FF00108A07AD0 +:103650000026CAB1012802D0022803D014E0227D3E +:1036600012B911E0627D7AB1A27EE37E08FA02F21D +:1036700008FA03F31A430A60227F920002F18042A3 +:1036800002F5C042C2F81065A26B0A60A663217BF6 +:1036900029B1D7F84411012908BF012200D0002226 +:1036A0009F4DD5F8101101290CBF402100210128A0 +:1036B00005BFD5F80C31012B002320231943012825 +:1036C00005BFD5F80431012B002310230B439A4981 +:1036D000022804BFD1F800C0BCF1010F07D1D5F812 +:1036E0000CC1BCF1010F08BF4FF0080C01D04FF026 +:1036F000000C4CEA0303022804BF0968002905D125 +:10370000D5F80C11012908BF042100D0002119436C +:10371000022803D1002A18BF022200D1002211433F +:10372000022804BFD5F80401012805D1D7F84401C7 +:10373000012818BF012000D1002040EA01097F487C +:10374000016811F0FF0F03D0D5F81411012900D042 +:10375000002184F83410006810F0FF0F03D0D5F872 +:103760001801012800D0002084F835007448006852 +:1037700084F836007348006818B1FFF7AAF90128E9 +:1037800000D0002084F83700C5F80061C5F80C614E +:10379000C5F81061C5F80461C5F81461C5F8186171 +:1037A000C5F82861684800680090C7F84461674818 +:1037B00000684D46DFF898910090D9F80000E0626B +:1037C000617F00291CBF801EE062624800682063A0 +:1037D000A07ADFF884A102280CD1607850B1DAF821 +:1037E000001009780840217831EA000008BF84F809 +:1037F000288001D084F82860DFF8608115F0010F7F +:1038000016D098F80010564A4908E06A52F821107C +:103810008847012198F80020524B5208206B53F83A +:103820002220904798F8000010F0010F0BD01FE005 +:1038300015F0200F18BF0221ECD115F0020F18BFB0 +:103840000021E7D1EEE7DAF80000062200F10901D5 +:10385000A01C0AF0FDFA40B9207ADAF800100978C5 +:10386000B0EBD11F08BF012000D0002084F8290050 +:103870002846FFF773FE15F0020F05D03A4898F876 +:10388000001050F82100804715F00C0F07D0374882 +:1038900098F8001050F82110C5F3C000884715F0C3 +:1038A000200F05D0324898F8001050F821008047CA +:1038B00098F80000022805D105F06E00402806D1D6 +:1038C00001F00BFB98F80000042828BFFFDFA07A66 +:1038D000022818BFBDE8F88F207B002808BFBDE88C +:1038E000F88FC7F84461022814D0012818BFFFDF01 +:1038F000216B2069884298BFFFDF2069C9F800006A +:10390000A06B1C4940F48000A0634FF48000086065 +:10391000BDE8F88F2169206B0844EFE7900A00208A +:10392000001000400000040408F50140F0FE010012 +:10393000B0F8010000800040001400404016004034 +:1039400008140040601500401811004044810040F8 +:10395000448500404085004004150040A10000203F +:1039600088E5010090E5010098E50100A8E5010067 +:10397000B8E5010004F5014010B54A4808F0C3FC61 +:103980000021484808F0EEFC0121464808F0BEFC42 +:103990004549002081F822004FF6FF708884434992 +:1039A0000880488010BD10B53E4808F0ACFC0021EE +:1039B0003C4808F0D7FC01213A4808F0A7FC3A49F6 +:1039C000002081F822004FF6FF7088843749088074 +:1039D000488010BD704734498A8C824218BF7047B6 +:1039E000002081F822004FF6FF70888470472D492F +:1039F000016070472D49088070472B498A8CA2F5D9 +:103A00007F43FF3B03D0002101600846704791F8D7 +:103A100022202549012A1ABF016001200020704799 +:103A2000214901F1220091F82220012A04BF00203F +:103A30007047012202701D48008888841046704734 +:103A40001A49488070471849184B8A8C5B889A42FB +:103A500006D191F82220002A1EBF01600120704784 +:103A6000002070471048114A818C5288914209D138 +:103A70004FF6FF71818410F8221F19B100210170E7 +:103A800001207047002070470748084A818C5288FF +:103A9000914205D190F8220000281CBF00207047F9 +:103AA00001207047F60A0020D00A0020A200002062 +:103AB0007047514A012340B1012818BF7047137065 +:103AC0000868906088889081704753700868C2F8D1 +:103AD00002008888D0807047474A10B1012807D07B +:103AE0000EE0507860B1D2F802000860D08804E09F +:103AF000107828B19068086090898880012070470C +:103B0000002070473C4910B1012803D006E04878F6 +:103B100010B903E0087808B1012070470020704711 +:103B200030B58DB00C4605460D2104A80AF055FAB3 +:103B3000E0788DF81F0020798DF81E0060798DF8EF +:103B40001D002868009068680190A8680290E868E5 +:103B50000390684609F02EFA20789DF82F108842CD +:103B60000CD160789DF82E10884207D1A0789DF87E +:103B70002D10884202BF01200DB030BD00200DB0D5 +:103B800030BD30B50C4605468DB00321E01CFEF774 +:103B900032FB60790D2120F0C00040F040006071E0 +:103BA00004A80AF01AFAE0788DF81F0020798DF841 +:103BB0001E0060798DF81D002868009068680190EB +:103BC000A8680290E8680390684609F0F3F99DF848 +:103BD0002F0020709DF82E0060709DF82D00A070C1 +:103BE0000DB030BD10B504460621FEF704FB607928 +:103BF00020F0C000607110BDA600002070B5F94D26 +:103C0000044695F88C000026012814D095F86A0027 +:103C100001281CBF002070BD667012202070202279 +:103C200005F16C01A01C0AF03FF90120A07185F894 +:103C30006A60012070BD667017202070D5F88D0075 +:103C4000C4F80200D5F89100C4F8060085F88C602D +:103C5000EFE7E44890F86A10002914BFB0F86E004E +:103C60004FF6FF70704770B5DF480178002918BF24 +:103C70000C2601D0304670BDDA4D0026344685F85A +:103C8000626085F8636085F8646085F8656085F832 +:103C9000666085F85E6085F8606085F8566085F836 +:103CA000366085F868607F21817095F8670028B1DB +:103CB000FFF7C1FBFEF7EDFE85F8674085F86A4027 +:103CC00085F88C40C94808F0C1F9C94808F0BEF928 +:103CD000D0E770B5C44800240470017800291CBFE7 +:103CE000FFDF70BDBF4D85F8624085F8634085F801 +:103CF000644085F8654085F8664085F85E4085F843 +:103D0000604085F8564085F8364085F868407F2148 +:103D1000817095F8670028B1FFF78DFBFEF7B9FEBB +:103D200085F8674085F86A4085F88C40AF4808F010 +:103D30008DF9BDE87040AE4808F088B9A94890F800 +:103D400062007047A74900B591F8580091F85710E4 +:103D5000C0F38002C0F340031A4400F00100104495 +:103D6000052910D2DFE801F00B070B030900A14978 +:103D700031F8100000BDA04800BDA04900E0A049F6 +:103D800031F8100000BDFFDF002000BD954840F273 +:103D90007121B0F85A0048437047924890F8690082 +:103DA000002818BF0120704710B5040016BF022C70 +:103DB00000200120FFF7A6FE002808BF10BD89489B +:103DC0000472012010BD874981F86000704710B56A +:103DD000844C207A002816BF02280020012060723F +:103DE00004F10A01FFF778FE207A022816BF0328A3 +:103DF0000121002184F85F10082084F85D00607ABA +:103E000004F10A02012804BF527912F0C00F0AD04F +:103E100004F10A02012804D1507900F0C0004028C2 +:103E200001D0002000E0012084F85E0029B994F858 +:103E30005700012818BF042806D1207C04F1110185 +:103E400007F0B2F984F85D004AF2B8102060FCF780 +:103E5000CBFD606004F10A01644808F01DF9617A45 +:103E6000624808F035F904F10A01614808F014F9D4 +:103E7000617ABDE810405E4808F02AB970B5594C27 +:103E8000417B84F85810017984F8571001290CBF40 +:103E900000220288A4F85A20827B84F86920827963 +:103EA000002A16BF022A002201222274D0F807201D +:103EB000C4F81120B0F80B00A4F8150094F85600CF +:103EC0000125002818BF84F8635094F836000028B4 +:103ED00018BF84F8645005292DD2DFE801F00308EB +:103EE000222708000021414808F0B3F824E001210E +:103EF0003E4808F0AEF804F111013C4808F0DAF849 +:103F0000207C20B1012818BFFFDF05D014E000217C +:103F1000364808F0EAF80FE00121344808F0E5F8E7 +:103F20000AE00621314808F094F805E002212F4804 +:103F300008F08FF800E0FFDF04212D4808F089F831 +:103F400084F86250002070BD70B5264C05460020F4 +:103F500084F864002A4604F1170009F0A5FF84F8EC +:103F60003650012084F8640070BD10B51D4C00224D +:103F700084F8632084F85600024604F1370009F003 +:103F800093FF012084F8630010BD164981F8680092 +:103F90007047F0B5144E83B0307810BB114C94F8D4 +:103FA0006200F0B1FFF7B8F9002584F86150757030 +:103FB0002846FFF7AEF9FEF7E4FEFEF7C9FE11480A +:103FC000FEF7C2FF1048FFF790F9FFF7D8F994F811 +:103FD000580010F0010F1CD02520FEF7BDFF012670 +:103FE00026E013E0180B0020B4000020B00B0020E6 +:103FF000D80B0020D8E5010091891300E0E501000D +:10400000D0E50100CBE50100C8E5010003B00C20BC +:10401000F0BD10F0020F04D02620FEF79DFF02260F +:1040200006E010F0040F03D02720FEF795FF0426CA +:10403000FEF78EFE84F85C60FFF765F90121002031 +:10404000FEF7FEFF0F210520FEF713FF94F85E0038 +:10405000002804BF94F85F00002805D194F85700A9 +:10406000012818BF04286ED1FCF7BEFC0646314675 +:104070006068FDF7E2FDF949B0FBF1F701FB1700BD +:1040800041423046FCF7C9FC60602068384420603B +:1040900007F087F8216888426CD8C4E9005694F884 +:1040A0005D0007F09DF8064694F85F0001270028A0 +:1040B00018BF002E04D01021304607F0A1FD68B1D2 +:1040C00094F8600000281CBF94F85E0000281AD005 +:1040D000607A04F10A0101280DD011E0677204F141 +:1040E0000A013046FFF74DFD94F85D1004F10A0017 +:1040F00007F067F907E0487900F0C00040281BD0BE +:104100000846FFF76FFD04F10A01D54807F0C4FF28 +:10411000617AD34807F0DCFF04F10A01D14807F0C7 +:10412000BBFF617ACF4807F0D3FF94F8570001280E +:1041300018BF04281ED107E007F077F904F10A013F +:10414000FFF71FFDDFE715E094F85D0007F051F879 +:1041500006000FD0102107F053FD58B969463046CC +:10416000FFF70FFD6946BE4807F0A4FF0121BC48D8 +:1041700007F0BBFF617A04F10A00FEF76EFE94F8C7 +:10418000570001281EBF042894F86300002808D0B7 +:1041900094F8562004F13701B14807F0C4FF84F8C1 +:1041A000635094F8640040B194F8362004F117018C +:1041B000AC4807F0E4FF84F8645007F076F8AA48AA +:1041C00007F0F0F884F86700FFF7AEF803B00020BE +:1041D000F0BDA6494860704770B5A54C06002AD0CE +:1041E00094F8582094F85C1022EA010010F0010FB6 +:1041F00004D02520FEF7B0FE012515E012F0020FD5 +:1042000002D011F0020F06D012F0040F0CD011F002 +:10421000040F05D008E02620FEF79EFE022503E0ED +:104220002720FEF799FE0425FEF792FD94F85C0026 +:10423000284384F85C0094F8610040B194F857007A +:10424000012808BFFFDFBDE8704000F067BA1EB16B +:1042500002210020FEF7F4FE94F865008048FFF785 +:1042600066F894F85700052809D2DFE800F0030348 +:104270000309030001210846FFF71BF900E0FFDFF7 +:1042800094F8580094F85C1030EA01014FF00100F6 +:1042900002D07649087070BD94F85710012912BFFA +:1042A00084F86100002184F85C10F2E710B5FFF794 +:1042B00033F86E48007840B96D4890F8620020B13C +:1042C0000020FFF789FF002010BDFFF797F8FFF7E8 +:1042D00089F8FEF7ABFFFFF70EF8FFF725F80C2083 +:1042E00010BD6249012048707047614981F866003D +:1042F000704770B5002502F07AFE68B14FF49670F1 +:10430000FEF742FE594E3078012809D0022801D02C +:1043100003282ED0FFDF70BDBDE8704000F0FEB96D +:10432000534C94F85700032823D094F8670018B131 +:10433000FEF79BFBFFF76EF84B48FEF7F8FF94F88B +:104340005700012818BF04280AD094F869000128F2 +:1043500014BF0328102545F00E010020FFF7A9F82F +:1043600094F86800012808BFFFF780F80220307039 +:1043700070BDBDE8704001202EE770B53C4C3B4D50 +:1043800094F8680001281FD094F8670018B1FFF76F +:1043900052F8FEF77EFB02F02AFEF8B128780228D8 +:1043A00018BFFFDF94F85700012804BF4FF41970BD +:1043B000FEF7EAFD0120FFF70FFF287800281EBF57 +:1043C00028780128FFDF70BD2A48FFF75AF8002837 +:1043D00004BF7F20A870FFF73FF8D5E7BDE8704025 +:1043E00000F09CB92DE9F05F07464FF00009FEF799 +:1043F000A3FD1E4E82463078022818BFFFDF1C4DF9 +:104400007F2495F8680001283BD0174807F040FE4C +:1044100083464FF0FF08002F7ED0134807F03FFF80 +:10442000002879D0FEF721FD002875D095F86700A7 +:104430000D4F68B106F01EFF8046FF2808D00146E8 +:10444000F81C06F0F6FE404606F01FFF40EA0A0A96 +:1044500058464FF0010B06285ED20DE040420F0097 +:10446000B00B0020D80B0020000C0020B40000206E +:10447000180B0020B6000020DFE800F08888880CC8 +:104480008857C848FEF7FDFF002808BFB470FEF744 +:10449000E3FFBAE795F85700012818BF042875D044 +:1044A000BAF1000F05D195F86900002818BF02285D +:1044B0006CD195F86800012804BF95F88C0000289D +:1044C00005D0B948FEF733FF0320307060E085F86F +:1044D0008CB0B8F1FF0F0FD005F18E02511E40468F +:1044E00006F090FE002808BFFFDF95F88D0040F031 +:1044F000020085F88D000CE03878C0F3801085F854 +:104500008D00D5F8EB00C5F88E00B5F8EF00A5F8E2 +:10451000920005F1940700E038E0B0787F2808BFEA +:10452000FFDFB0783870B470CBE73878297CC0F3FF +:1045300080102C46884209D1062204F11101F81C92 +:1045400009F086FC002808BF012000D0002094F864 +:104550005D10414504D1B8F1FF0F18BF012100D112 +:104560000021014394F85700012818BF042800D106 +:1045700049B958B9BAF1000F05D194F8690000287B +:1045800018BF012802D194F86600D8B14FF0010994 +:1045900095F8670018B1FEF74EFFFEF77AFAB9F109 +:1045A000000F1CBF0120FFF717FE307800281ABF4C +:1045B00030780128BDE8F09F3078032818BFFFDF6E +:1045C000BDE8F09F7068D4F8F710C0F80D10B4F88B +:1045D000FB10A0F8111094F8FD10C174B97D01759D +:1045E000B7F81710C182B7F819104180B7F81B103F +:1045F0008180B7F81D10C1806C49083009F005FEB4 +:1046000097F8240000F01F017068017697F82410D5 +:10461000490980F8F41094F86A00002818BFFFDFF9 +:104620004FF0000A204684F86CA074682188A0F836 +:104630006E106188A0F88410A188A0F88610E18827 +:10464000A0F8881094F8F41080F88A1090F85F10A1 +:1046500049B1417A00F10A02012904D1517901F0EE +:10466000C001402934D090F8601041B1427A00F185 +:104670000A01012A04BF497911F0C00F28D0C0F8FF +:1046800078A0A0F87CA039780546C1F38011617646 +:10469000D0F8EB00C4F81A00B5F8EF10E183B8F1D8 +:1046A000FF0F1CD0C5F87E00E08BA5F8820005F155 +:1046B00072022F46511E404606F0A4FD002808BF96 +:1046C000FFDF97F8710040F0020087F8710013E0F7 +:1046D000D0F80A108167C189A0F87C10D3E734486C +:1046E00009F08AFD617E85F87110D4F81A10C5F8BA +:1046F0007210E18BA5F8761085F86AB086F800A0F4 +:10470000FEF77CFEFEF76EFEFEF790FDFEF7F3FD72 +:10471000FEF70AFE012002F076FD39E770B5FEF7DC +:104720006DFEFEF75FFEFEF781FDFEF7E4FD214C16 +:10473000002694F8670028B1FEF77DFEFEF7A9F980 +:1047400084F867601C4D2E70FEF7EEFD94F857005C +:10475000012804D0BDE87040002002F054BD0220C2 +:1047600002F051FD94F86A00002818BFFFDF687856 +:10477000002808BF70BD207C84F87100D4F81100B7 +:10478000C4F87200B4F81500A4F876003C2084F850 +:104790006C0068680088A4F86E00012084F86A0044 +:1047A0006E7070BDB6000020D80B00201F0C0020DA +:1047B000960B0020180B0020B40000202DE9F041DA +:1047C000FA4F044600207978F94D4FF0010806466B +:1047D00011B1012925D007E095F84D10002918BF27 +:1047E00087F8018000D0012079782B2211FB02F19B +:1047F000294491F8222010431AD02A22A01C2331E8 +:1048000009F052FB66700420207084F802807878EA +:104810002B2110FB01F0284480F822600120BDE824 +:10482000F08195F82210002918BF7E70DBD1DBE7FC +:1048300095F87800D0B1D5F87900C4F80200D5F821 +:104840007D00C4F80600D5F88100C4F80A00D5F848 +:104850008500C4F80E0095F88900A07466701120D8 +:10486000207084F8028085F8786011E028780128AB +:104870001CBF0020BDE8F08166701220207020224D +:10488000A91CA01C09F010FBA6712E7085F8A86069 +:104890000120BDE8F081C6480178002914BF808856 +:1048A0004FF6FF7070472DE9F041C14C064694F871 +:1048B0002200002818BFBDE8F081304607F0E8FB71 +:1048C000014601250020072938D2DFE801F00A045B +:1048D00007373737090084F8245009E0032000E047 +:1048E000022084F8240004F12D01304607F031FC49 +:1048F00084F82C0094F8AD0018B1FEF7EAF801280E +:1049000020D0304607F0EDFB84F8250004F12601A5 +:10491000304607F0C8FB00BFA44E04F14C073078C6 +:104920007F2808BFFFDF307838707F20307084F830 +:104930002250BDE8F041032001F0A2BC84F82C0015 +:10494000BDE8F081FEF708F904F12602511E06F0D9 +:1049500059FC002808BFFFDF94F8251041F0020140 +:1049600084F82510D8E710B5002001F0F2FB904C38 +:10497000A0B1FEF7C8FC00210120FEF761FB04F1A5 +:10498000BC00FEF7D4FCD4F8B400FEF7D3FC94F8D6 +:104990009C00032818BF02281FD022E0FEF72EFD3E +:1049A000FEF720FDFEF742FCFEF7A5FC94F8AD00F3 +:1049B00030B1FEF740FDFEF76CF8002084F8AD0042 +:1049C000012084F8B800022084F8B000FEF7ACFCA7 +:1049D000BDE81040002001F053BC01210020FEF78B +:1049E00068FDFEF743FD94F8AD0018B1FEF73DF801 +:1049F000FEF710FD032084F8B00010BD6C490028BC +:104A0000B1F8BA202DD0FF2A0CD24FF6FF7000EA81 +:104A10004200A1F8BA00FF2888BFFF2002D900BFDA +:104A2000A1F8BA0061484268012A12BF002A0D228B +:104A30004260D243C2EBC20303EB021291F8B930D9 +:104A4000DB4303EB830CCCEB83131A444260900CE2 +:104A5000B1F8BA20B0FBF2F302FB130081F8B90001 +:104A60007047012ADED95008A1F8BA0008BF01201A +:104A7000D8D1D5E770B54E4C94F8B000022819BFD4 +:104A800094F8B0000128002005461CBF0C2070BD22 +:104A90002B2101FB004181F82250401CC0B20228AA +:104AA000F6D3257094F8AD0028B1FEF7C4FCFDF7ED +:104AB000F0FF84F8AD5084F8A85084F8A95084F829 +:104AC000AC50012084F89700394884F89C5084F851 +:104AD000AF5040F2011120F8941F8170002070BD8A +:104AE00070B5334C002584F8B050012684F8B060CE +:104AF00094F8B00002281BBF94F8B00001280020F1 +:104B0000FFDF18BF70BD2B2101FB004181F822504F +:104B1000401CC0B20228F6D3257094F8AD0028B12D +:104B2000FEF789FCFDF7B5FF84F8AD5084F8A85076 +:104B300084F8A95084F8AC5084F897601C4884F835 +:104B40009C5084F8AF5040F2011120F8941F8170FE +:104B500070BD2DE9F041164C05460C2794F8B000C5 +:104B600001281FBF94F8B00002280C20BDE8F08196 +:104B7000FEF7D2FBFEF705F9FEF7EAF894F8940089 +:104B80000126002801BF94F89500002894F89600AB +:104B900000281CBF94F8A900002873D094F89C004A +:104BA000032807D002280AD00DE00000BC00002036 +:104BB000280C00200521FE4800F07BFE03E00321C5 +:104BC000FB4800F076FE94F8AA00002804BF94F891 +:104BD000AB0000283CD0FBF707FF07463946D4F866 +:104BE000A400FDF72AF8F349B0FBF1F801FB180027 +:104BF00041423846FBF711FFC4F8A400D4F8A000E6 +:104C00004044C4F8A00006F0CCFAD4F8A0108842C2 +:104C10001ED80020C4E9280794F8AB00002818BF6C +:104C200006F0DBFB94F8AC0000281CBF94F8AA0047 +:104C300000280DD094F88D0004F18E01012804D1D4 +:104C4000487900F0C00040280ED00846FEF7CAFFA1 +:104C500094F88D1004F18E00FEF7FFF894F8B00080 +:104C60000027012817D106E006F0DFFB04F18E01D2 +:104C7000FEF787FFECE784F8B860022084F8B00004 +:104C800009E0FFE794F8B000022802BF84F8B060A2 +:104C90000C20BDE8F08194F89700A0B194F89C0036 +:104CA000032818BF06F022FBC34806F07BFB84F8FC +:104CB000AD00C248C4F8B450FEF717FBFEF734FB52 +:104CC0003846BDE8F08106F0F0FAEDE770B5FEF782 +:104CD00023FBBB4C94F8B000022803D0FEF724FB62 +:104CE0000C2070BD012084F8B900A4F8BA0002209D +:104CF000FEF70FFBB348FEF727F9B34B002004F192 +:104D0000940200BF94F8AF10491CA3FB015C4FEA6A +:104D10005C0CACEB8C0C6144C9B284F8AF10895CBC +:104D2000012907D0401CC0B20328EBD3FFF71BFEBC +:104D3000002070BD94F8AF00A449085CFEF70CF9A0 +:104D4000FEF706F8F2E710B5040016BF022C0020AB +:104D50000120FEF7D7FE002808BF10BD98480021AB +:104D600080F88C4080F8A910012010BD944981F88A +:104D7000AC00704710B5924C94F88C00002816BF18 +:104D800002280020012084F88D0004F18E01FEF736 +:104D9000A3FE012084F8A90094F88C00022816BF15 +:104DA00003280121002184F8AB1094F88D0004F150 +:104DB0008E02012804BF527912F0C00F0AD004F10C +:104DC0008E02012804D1507900F0C000402801D0A3 +:104DD000002000E0012084F8AA00002804BF002978 +:104DE00010BDFBF701FEC4F8A4004AF2B810C4F8E5 +:104DF000A00010BD002816BF022801220022704921 +:104E000081F8972081F89D00704770B56C4D0C4675 +:104E100000280CBF0121002185F8971085F89E001D +:104E20004FF0080085F89F000BD1002C1ABF022C10 +:104E300001200020114606F0B7F985F89F000828E8 +:104E400001D0002070BD022C14BF032C1220F8D119 +:104E500070BD5B4A032808BFC2F8981082F89C0016 +:104E600000207047564991F89C00032804D001287F +:104E700018BF022807D004E091F89E00012808BF5F +:104E800070470020704791F89D00012814BF032847 +:104E90000120F6D1704710B5FEF7B0FAFEF7A2FA7E +:104EA000FEF7C4F9FEF727FA454C94F8AD0030B18F +:104EB000FEF7C1FAFDF7EDFD002084F8AD000120FA +:104EC00084F8B800022084F8B000FEF72DFA002024 +:104ED00010BD3B4981F8B100704710B5FEF78EFA5E +:104EE000FEF780FAFEF7A2F9FEF705FA344C94F8C3 +:104EF000AD0030B1FEF79FFAFDF7CBFD002084F83E +:104F0000AD00012084F8B800022084F8B000FEF75C +:104F10000BFABDE81040002001F0B2B92DE9F84FBE +:104F2000274DFF2100247F27DFF8A48085F8AE10ED +:104F3000002800F0D78205F1BC0007F080F930B9F5 +:104F400005F1BC0007F09BF9002800F0CB8295F832 +:104F5000B000194E052880F0C282DFE800F0F0F0C2 +:104F6000F003EF00144807F093F888F8020095F872 +:104F7000970028B9FDF7E0FF002808BF002400D003 +:104F8000012495F8AD0070B106F074F985F8AE0013 +:104F9000FF280CD00146F01C06F04BF995F8AE0046 +:104FA00006F073F9044395F8AE00FF281ED111E016 +:104FB0000C0D002040420F00E40C0020E8E5010049 +:104FC000280C0020EEE50100ABAAAAAAEBE501003F +:104FD000BC00002095F8970098B195F89C00032834 +:104FE00004D006F0D4F900BF85F8AE0098F80200AE +:104FF000072880F0B181DFE800F03FAA07FCFCFC45 +:10500000240006F092F9EFE795F8AD0018B1FEF72D +:1050100012FAFDF73EFDFE48FEF733FA002808BFFE +:1050200088F80070FEF718FA002C00F03F8195F820 +:105030009C00012818BF022840F03881FEF7F6F8DE +:1050400068E095F8AD0018B1FEF7F5F9FDF721FD20 +:10505000EF48FEF716FA002808BF88F80070FEF740 +:10506000FBF9002C00F0228195F89C0002284AD020 +:1050700001284FD000F01AB995F8AD0018B1FEF72D +:10508000DAF9FDF706FDE248FEF7FBF9002808BF54 +:1050900088F80070FEF7E0F9002C00F0078195F821 +:1050A0009C0002282FD0012834D003281CBFFFDF2A +:1050B000BDE8F88FF178D5F89800827E91421BD137 +:1050C0003179C27E914217D17179027F914213D119 +:1050D000B179427F91420FD1F179827F91420BD118 +:1050E000317AC27F914207D13178427EC1F380117B +:1050F000914208BF012100D0002195F89E20012A8D +:105100000ED0E9B1CEE0C348FFF7CDFBBDE8F84FC4 +:1051100000F0F4BABF48FFF7C6FBBDE8F84F22E441 +:10512000002967D100F11A01BA4806F0BCFFB9485E +:1051300006F0D7FFD5F898104876B3E01BE1CEE132 +:1051400095F8AE0095F89F1088427DD1AAE095F8B9 +:10515000AD0018B1FEF76FF9FDF79BFCAC48FEF708 +:1051600090F9002808BF88F80070FEF775F995F8E7 +:10517000AB0000280CBF4FF0010B4FF0000B4FF0BD +:105180000009307806F10901C00907D0487900F01C +:10519000C000402808BF4FF0010A01D04FF0000ABC +:1051A00095F89C00032806D195F89700002818BFB1 +:1051B00095F89F0001D195F8AE0006F011F8009027 +:1051C00078B1102106F01CFD002818BF4FF0010B2C +:1051D000BAF1000F05D006F109010098FEF7A0FC16 +:1051E000814695F89C0003280FD0FEF71FF864B3A2 +:1051F00001E0B1E056E0FDF738FE50EA09005BD06F +:105200008448FFF750FB00F03EB9D5F89800F178DC +:10521000827E91421ED13179C27E91421AD171793A +:10522000027F914216D1B179427F914212D1F17938 +:10523000827F91420ED1317AC27F91420AD1317878 +:10524000407EC1F3801101E030E035E0814208BFCB +:10525000012600D00026B9F1000F05D1BBF1000FE7 +:1052600004D0FDF702FE08B1012200E0002295F80B +:105270009E00012801D010B10AE03CB908E02EB927 +:1052800095F8AE1095F89F30994201D1012100E0C8 +:1052900000210A420AD0012804BF002ED5F8980048 +:1052A0003FF440AFBDE8F84F00F089BAFDF7BEFF0C +:1052B000BDE8F84FFFF757BB95F89D00032818BFCE +:1052C00002287DD1BAF1000F7AD0B9F1000F77D161 +:1052D000504E95F87800002872D1012485F87A4064 +:1052E00095F8AD0018B1FDF7F4FB012823D0304646 +:1052F00006F0F7FE85F87B0005F17C01304606F0EC +:10530000D2FE304606F0FAFE85F8820005F18301F0 +:10531000304606F0D6FE98F8000005F189067F2891 +:1053200008BFFFDF98F80000307088F8007085F83B +:1053300078400320A5E0FDF70FFC05F17C02511E2B +:1053400005F060FF002808BFFFDF95F87B0040F004 +:10535000020085F87B00D4E795F8AD0018B1FEF7A0 +:105360006AF8FDF796FB2A48FEF78BF8002872D101 +:1053700088F80070CFE0274806F08AFE88F802001F +:105380002548F178427A91421ED13179827A914250 +:105390001AD17179C27A914216D1B179027B9142C8 +:1053A00012D1F179427B91420ED1317A827B9142C6 +:1053B0000AD131780078C1F38011B1EBD01F00E041 +:1053C0004AE008BF012600D00026FDF72FFF98F81D +:1053D000020004286DD1EEB30D48FEF752F8002804 +:1053E00008BF88F80070FEF737F895F8B800002875 +:1053F0001CBF0020FFF702FB4FF0010985F8B890B1 +:10540000044E95F84D0038BB042085F84F0005E0A8 +:10541000BC000020E40C00200C0D002095F8AD002D +:10542000A6F1910418B1FDF754FB01282FD03046A6 +:1054300006F057FEFE4981F8500004F1260130467F +:1054400006F031FE05F15801304606F0AEFE85F853 +:10545000570002E02DE05EE015E01F2884BF1F200A +:1054600085F8570005F1770498F800007F2808BFF9 +:10547000FFDF98F80000207088F8007085F84D90E4 +:10548000042000F0FDFEBDE8F84FFFF76CBAFDF711 +:1054900063FB04F12602511E05F0B4FE002808BF8C +:1054A000FFDFE34890F8500040F0020084F8250048 +:1054B000C8E7E048FDF7E5FF002808BF88F800705E +:1054C000FDF7CAFF95F8B800002804BF0120FFF7D8 +:1054D00095FA85F8B840BDE8F84FFFF744BAFFDF0A +:1054E000BDE8F88F95F8B000052828BFBDE8F88F13 +:1054F000DFE800F0030303041900F1E795F8AD00BD +:1055000018B1FDF798FFFDF7C4FACA48FDF7B9FFD7 +:1055100000283FF42DAFFDF79FFFFDF787FEBDE8A4 +:10552000F84FFFF720BAC348FDF7ABFF002808BFCC +:1055300088F80070FDF790FF95F8B800002804BFC8 +:105540000120FFF75BFA85F8B840FDF76FFEBDE874 +:10555000F84FFFF708BA70B5B54C94F8B0000728BB +:1055600070D2DFE800F08585858585040D00B2489E +:10557000FDF7DDFEFDF77AFF042084F8B00070BD72 +:10558000FDF73CFFFDF72EFFFDF750FEFDF7B3FEE4 +:10559000012584F8B850022084F8B000FDF7C4FE5D +:1055A0002078002818BFFFDF0026A670D4F89800E6 +:1055B0000188A180418861838188A183C088E083BC +:1055C00094F8B10084F8200094F8AB109B4849B1DE +:1055D0000178C21CC1F3801121B1517901F0C001E1 +:1055E000402927D094F8AC1041B110F8031BC1F347 +:1055F000801119B1407910F0C00F1BD0904808F00D +:10560000FBFD00BF94F8AD0018B1FDF762FA012868 +:1056100019D0D4F89800417EE171D0F81A10A16039 +:10562000C08BA081666126832570BDE87040022092 +:1056300000F026BED4F8E700C4F80E00B4F8EB0082 +:105640006082DFE714E0FDF787FA04F10802E11D4C +:1056500005F0D8FD002808BFFFDFE07940F0020028 +:10566000E071D4F8BF006061B4F8C3002083DBE7C9 +:10567000FFDF70BD70B56E4C94F8B00000250528B2 +:1056800028BF70BDDFE800F03939391B03006948D5 +:10569000FDF7F7FE10B967497F200870FDF7DCFEC3 +:1056A00094F8B800002804BF0120FFF7A7F984F898 +:1056B000B850FDF7BBFDBDE87040FFF754B9FDF7EA +:1056C0009DFEFDF78FFEFDF7B1FDFDF714FE94F88A +:1056D000AD0028B1FDF7AFFEFDF7DBF984F8AD5062 +:1056E000012084F8B800022084F8B000FDF71CFE09 +:1056F000BDE87040002000F0C3BD70BD70B5012052 +:1057000000F027FD4A4CC8B104F1E401A1F12800E2 +:1057100006F0F7FC04F1E40694F88D10304606F02C +:10572000D7FC04F18E01304606F0B6FC94F8AB00CD +:10573000C0B394F89C0003281FD025E0FDF75EFE5F +:10574000FDF750FEFDF772FDFDF7D5FD94F8AD00B5 +:1057500030B1FDF770FEFDF79CF9002084F8AD0034 +:10576000012084F8B800022084F8B000FDF7DCFDC9 +:10577000BDE87040002000F083BD94F89700002839 +:1057800018BF94F89F0001D194F8AE0005F04FFEC9 +:10579000050007D00121304606F09AFC2946304624 +:1057A00006F07AFC2548FDF7C2FD01210846FDF709 +:1057B00080FEFDF7E4FD052084F8B00070BD2DE902 +:1057C000F041022000F0C5FC194C0126E0B1012097 +:1057D00000F056FD04F1E401A1F1280006F091FC6F +:1057E00004F1E40794F88D10384606F071FC04F1DA +:1057F0008E01384606F050FC94F8AB00B8B194F82E +:105800009C0003282AD030E0FDF7F8FDFDF7EAFD03 +:10581000FDF70CFDFDF76FFD94F8AD0030B1FDF71D +:105820000AFEFDF736F9002084F8AD000AE02AE010 +:10583000280C0020BC000020E40C00200C0D0020EF +:10584000360C002084F8B860022084F8B000FDF720 +:105850006BFDBDE8F041002000F012BD94F8970008 +:10586000002818BF94F89F0001D194F8AE0005F00D +:10587000DEFD050007D00121384606F029FC294647 +:10588000384606F009FCD4F89800C18A334806F07F +:10589000B8FCD4F89800017D304806F0B6FC2F48DB +:1058A000FDF745FD84F8A860062084F8B000BDE847 +:1058B000F08170B50C46054606F0C8FB032C47D0B6 +:1058C000052C18BF70BD0521284606F0C2FB244CEC +:1058D000D4F8980000F10D01284606F07CFCD4F8BD +:1058E000980000F11101284606F079FCD4F89800E0 +:1058F000017D284606F089FCD4F89800C18A284624 +:1059000006F07FFCD4F898004188284606F06DFC2C +:10591000D4F898008188284606F06BFCD4F89800EB +:10592000C188284606F069FCD4F8980000F1080107 +:10593000284606F081FCD4F89800017E284606F03F +:1059400066FC94F8B1102846BDE8704006F069BCCA +:105950002846BDE87040032106F07BBB0C0D0020FB +:10596000280C00202DE9F047FA4E054684B096F841 +:1059700000040C46DFF8E0A340099AF80014490936 +:10598000884218BFFFDF96F800044009F34991F8F8 +:1059900000144909884218BFFFDFF14F6E1E07F15E +:1059A0003C0909EB45054FF00008092C80F0CF8039 +:1059B000DFE804F005444E4E49CDCDCD7A000B2EE4 +:1059C000A8BFFFDF35F8020C0621F9F76AF90400D9 +:1059D00008BFFFDF0B2EA8BFFFDF35F8020C2188C0 +:1059E000884218BFFFDF94F8C000002808BFFFDF1F +:1059F000C7F80480A7F8028021460020C7F810806D +:105A000006F02AFA616A9830814284BF081A00F1D0 +:105A10008D0821460020C7F8088006F01DFA61882D +:105A200040F2E24251439830081AA0F20F30F86079 +:105A300004B02046BDE8F04702F0FEBB04B0BDE86C +:105A4000F04702F078BC04B0BDE8F047FDF7F6BDC2 +:105A50009AF8140DC349400991F800144909884285 +:105A600018BFFFDF0B2EA8BFFFDF35F8020C0621A1 +:105A7000F9F717F9040008BFFFDF0B2EA8BFFFDFFF +:105A800035F8020C2188884218BFFFDF002201236D +:105A90002146684600F0CEFC94F8CA006946FBF740 +:105AA00034F904B0BDE8F0870B2EA8BFFFDF35F84E +:105AB000020C0621F9F7F5F8040008BFFFDF0B2EF2 +:105AC000A8BFFFDF35F8020C2188884218BFFFDF2E +:105AD00094F8C000042818BFFFDF84F8C08094F851 +:105AE000CA504FF6FF76681E0B28A8BFFFDF09EBF0 +:105AF000450020F8026C94F8CA00FAF75FFF84F8BA +:105B0000CA80D4F8D000002804BFD4F8CC00786153 +:105B100008D0D4E935121144826911448161D4E975 +:105B20003301C860D4F8CC0000281CBFD4F8D010D2 +:105B3000016105D1D4F8D000002818BFC0F8188042 +:105B40008948007804B0BDE8F047F4F7B3B9FFDF47 +:105B500004B0BDE8F0872DE9F047844D0746E88B97 +:105B60006C68401CE88328784FF00008002808BFC4 +:105B7000FFDF07D0DFF8E8A1042814D0052818BFFC +:105B8000FFDF40D021462869FAF747FFB86087F861 +:105B9000008001203871A86800F22710F86028788A +:105BA00004287CD185E00029ECD02E69DAF81410A5 +:105BB00039B38946C9680029FBD1B9F1000F20D05B +:105BC00099F80000002808BFFFDFD9F81410D9F8B1 +:105BD000040001443046FCF730F8002807DA211AA7 +:105BE0004A1E92FBF4F202FB0406214604E090FBFD +:105BF000F4F202FB140621468E4288BFFFDF3446D2 +:105C0000C0E74446BEE70029BCD0D5F81890B9F1EA +:105C1000000F08BFFFDF0026D9F8D410DAF81440CF +:105C20003046721E5CB1A069884228BF824284BFA0 +:105C3000024626462046E468002CF4D106B9064602 +:105C400009F1C004C9F8D060002E04BFC4F80C806C +:105C5000CAF8144005D0F068F460E060002818BF6E +:105C60000461D4F81090C4F81880B9F1000F0ED078 +:105C7000D9F8180048B1D4F814A0504538BFFFDF58 +:105C8000D9F81800A0EB0A00A061C9F81880002E0E +:105C900008BFC5F8208009D03078002800E00DE06A +:105CA00008BFFFDF716970680844286240F6B834A5 +:105CB00068E7E88B0A2838BF032000D302207871F8 +:105CC000E88B012806D93846696806F08AF8E98B1E +:105CD0000844E883B8682861BDE8F0872DE9F04101 +:105CE0001C4C804684B094F800040E461A4F4109BB +:105CF00097F800044009814218BFFFDF94F80004C0 +:105D00004009164991F800144909884218BFFFDF7D +:105D100000250122092E154C65D2DFE806F0052981 +:105D200042423D6464185500627322736078002813 +:105D30001CBF04B0BDE8F0810948456005612573CA +:105D4000A068CD38FEF705FF002818BFFFDF04B0BC +:105D5000BDE8F08101E000E00BE000E018E000E0C9 +:105D6000340D002019E000E0C40000204C0D00209C +:105D7000607850B1207B002808BFFFF78CF865736E +:105D800004B0BDE8F041FAF75EBDA273FEF79EFFD6 +:105D9000002818BFFFDFDAE704B0BDE8F041FDF7E7 +:105DA0004DBC97F8140DF849400991F800144909C1 +:105DB000884218BFFFDF00216846FFF7CCFE694626 +:105DC0004046FAF7A2FFC2E72078052818BFFFDF98 +:105DD000207F002808BFFFDF25772570207DFAF798 +:105DE000EDFD2575B3E7FFDFB1E72DE9F041E74CA5 +:105DF00084B00025207804281FBF207805280C20B7 +:105E000004B018BFBDE8F08101276770607B0026F1 +:105E100090B172B6607B00281CBFA07B002805D023 +:105E2000FFF739F86673A673FAF70DFD62B6207DA9 +:105E3000FBF78FFFD0B913E094F8148003208DF89E +:105E400004008DF80500FAF7CFFD02904FF0FF3007 +:105E500003908DF8007069464046FAF756FFE6E772 +:105E600020BF207DFBF775FF0028F9D0207F28B1E7 +:105E700026772078052818BFFFDF0C25667026706E +:105E8000207DFAF79BFD267504B02846BDE8F08119 +:105E90002DE9F047BD4884B00078002818BFFFF70F +:105EA000A4FF0120BA4E307069460620F8F785FE3F +:105EB000002818BFFFDF00254FF6FF7718E0029893 +:105EC00000281CBF90F8C010002911D00088B842EB +:105ED00018BFDFF8C08245D00621F8F7E2FE0400C3 +:105EE00008BFFFDF94F8CA00FBF733FF68B905E08D +:105EF0006846F8F740FE0028E1D033E020BF94F870 +:105F0000CA00FBF726FF0028F8D084F8C05094F8A8 +:105F1000CA904FF6FF7AA9F101000B28A8BFFFDF56 +:105F200008EB490020F802AC94F8CA00FAF746FDE5 +:105F300084F8CA5069460620F8F73FFE002818BFCB +:105F4000FFDF0AE0029800281CBF90F8C01000296B +:105F500003D00088B842BFD104E06846F8F70BFED2 +:105F60000028EFD03570756104B00020BDE8F087DF +:105F700010B50078884C60B101280CBF40F6C41001 +:105F8000FFDF06D0A06841F66A01884228BFFFDF24 +:105F900010BDA060F6E710B57F4C002320707B4851 +:105FA00003704370037703734373837383610375D3 +:105FB000183843703C304FF6FF7101800522418054 +:105FC00020F8041F521EFAD1180008BFA36005D0A4 +:105FD000002B0EBFFFDF40F6C410A060A06841F6A2 +:105FE0006A01884228BFFFDFBDE8104050E770B566 +:105FF000664C0E4684B02178154600291EBF0C2041 +:1060000004B070BD416A01F29731C0F8D410A061AC +:1060100090F8C000002818BFFFDF40F2712006FB97 +:1060200000F168430A30C4E90110A1F53D718842CE +:1060300088BF0846A06056490020086105212170EC +:1060400060702077E0835548FAF768FC20750028D7 +:1060500008BFFFDFFAF7C8FC206101216846FFF79F +:106060007AFD207D6946FAF750FE04B0002070BD2D +:106070004648007800281CBF0020704710B5062055 +:10608000F8F7ACFD80F0010010BD10B53F4C84B0B6 +:106090002278002A1EBF0C2004B010BD40F27122ED +:1060A000424340F2712048430A30C4E90120A2F57E +:1060B0003D71884298BF01460020A16060700421B4 +:1060C0002170E0833548FAF729FC2075002808BFC5 +:1060D000FFDFFAF789FC40F6B831FAF79EFC206141 +:1060E00001216846FFF737FD207D6946FAF70DFE6E +:1060F00004B0002010BD70B5244CA1690160FFF709 +:1061000074FE002300BBA169D1F8D0205AB1D1E9B7 +:1061100035C5AC449569AC44C2F818C0D1E9332CFC +:10612000CCF80C2005E0DFF868C0D1F8CC20CCF822 +:106130001420D1F8CC20D1F8D010002A18BF11615A +:1061400002D1002918BF8B61A36170BD104948704E +:1061500070470F4910B54968002801F1980408BF3D +:1061600004F5BC7409D0012808BF04F5317404D0CB +:10617000022814BFFFDF04F5B07404488068A04211 +:106180008CBF0120002010BD19E000E04C0D002064 +:10619000340D0020700D0020C4000020DD5C0100E3 +:1061A00010B5FB4C607828B1D4E90201626805F0B3 +:1061B0003FFEA060D4E9010188429CBF20780028FE +:1061C00014BF0020012010BD042210B584B00029A6 +:1061D00038D0012901BF032180F8C01004B010BDE0 +:1061E000022928D003291EBFFFDF04B010BD0446DA +:1061F000408840F2E2414843E6490860D4F8E400B0 +:106200000089E082D4F8E40080792075D4F8E400B5 +:1062100040896080D4F8E4008089A080D4F8E4004C +:10622000C089E0802046616A05F070FE022084F893 +:10623000C00004B010BD80F8C02004B0BDE810401C +:10624000FAF701BB0446D2480078002818BF84F84A +:10625000C02004D004B0BDE81040FAF7F4BA01221F +:1062600000232146684600F0E5F894F8CA00694624 +:10627000FAF74BFDB4F85000401CA4F85000E9E7D1 +:106280002DE9F041C44F0025C44C397884B005286D +:1062900080F0B780DFE800F0031363AFAF00E58361 +:1062A0000846F3F707FE6078002869D100216846A8 +:1062B000FFF751FC207D6946FAF727FD60E0DFF823 +:1062C000D082206940F2E243D8F804100844A16962 +:1062D00000F251604A88C03102FB03F5D8F814205F +:1062E0008A4208BF002614D0216AFBF7A6FC0028CA +:1062F00007DA291A4A1E92FBF5F202FB0506294627 +:1063000004E090FBF5F202FB150629468E4288BF99 +:10631000FFDFB868864208D2A06940F27122418846 +:10632000C1824A4306EB420605E040F2E240B6FB7A +:10633000F0F0A169C882A06905210175C08A6FF4D7 +:106340001C71484306EB400040F63541C8F8100088 +:10635000B0EB410F28BFFFDF04B0BDE8F081E5835B +:106360000846F3F7A7FD01202077A0692169C0F84E +:10637000C41080F8C0502178052918BFFFDF06D06F +:10638000FAF761FA6573A57304B0BDE8F0810028DF +:1063900008BFFFDFA06990F8C000002818BFFFDF2A +:1063A000A06990F8CA00002818BFFFDF7C48FAF700 +:1063B000B5FAA169064681F8CA000F88401E0B286D +:1063C000A8BFFFDF774800EB460020F8027CA069F9 +:1063D00090F8CA00002808BFFFDF002301226846AA +:1063E000A16900F027F8A069694690F8CA00FAF799 +:1063F0008CFCA561C4E704B00846BDE8F041F3F7A2 +:1064000059BDFFDF04B0BDE8F081704700B5604AB8 +:1064100059B1012908BF401E07D002291CBFFFDF68 +:1064200000BD5188491C5180C01F506000BD5B48B1 +:10643000007870472DE9F05F05460C46488840F229 +:10644000E24100FB01FBE08A002600FB01FA94F820 +:106450005B0099461746082816BF07284FF0010829 +:106460004FF00008B9F1000F03D00121204602F0DF +:1064700046F894F8C00040B101282FD0022815D06A +:10648000032818BFFFDF29D038E0002F08BFFFDF47 +:106490003F4E7068002808BFFFDF70683169C01D7B +:1064A00008440AF25D414618012014E0DFF8E0B02C +:1064B000791EDBF80400084308BFFFDF3548006899 +:1064C00000EB0A0637B1DBF8040000F20F30B042EF +:1064D00088BFFFDF032084F8C0000EE05E4667B18E +:1064E0002B4F786818B97888002818BFFFDF7868C4 +:1064F00000F20F30B04288BFFFDF06B9FFDF314640 +:10650000D4F8C400FAF789FAC4F8C400A8600020DF +:10651000287001272F71204602F0D2F8A8F101015E +:10652000084208BF6F7106D094F8C00001280CBF64 +:10653000022003206871606A00F5E570E86039EABE +:10654000080008BFBDE8F09F3146284605F049FC29 +:106550001FFA80F8204602F0B3F840450FD8804675 +:106560006F7106FB08F1D4F8C400FAF756FAA86078 +:106570003146284605F035FC40441FFA80F8414674 +:10658000204601F0BCFFA868C4F8C400BDE8F09F35 +:10659000340D0020C8000020C40000204C0D002055 +:1065A00065590100700D0020F948C07E7047F94818 +:1065B00040687047F848C07E70472DE9FF4FF44FA0 +:1065C00083B05FEA0309786A3C6805682069009037 +:1065D000B5F8D6A0D7F820801CBF94F83400002866 +:1065E00003D007B00220BDE8F08FB5F85010059831 +:1065F000401A1FFA80FBB9F1000F19BF04F13806E9 +:1066000004F148003E1D05F1D000019003203071D7 +:106610000398002834D0012800F0E28002287FD0BF +:10662000032818BFFFDF00F0198100BFB9F1000F88 +:106630001EBF30790328FFDF616A7869FAF7EDF948 +:10664000B060D4E90710814287BF019908600198C2 +:1066500001600198696A0068084400F24F10F06018 +:10666000B5F8C0100598081A00B2002840F335812B +:106670000398022818BF032040F0308100F02DB9A4 +:10668000B8F1000F08BFFFDFE98A40F271204843EC +:1066900040F2E24101EB400204990020002906D0BB +:1066A000BE4801FB02F1B1FBF0F000F101006061B6 +:1066B000698840F2E24201FB02F3049A4FF00001C4 +:1066C00006D0B64902FB03F2B2FBF1F101F1010180 +:1066D000A16108F101016162EA8A40F2712302FBC3 +:1066E00003F2C0EB420202F237420A446262297DA1 +:1066F00040F2E24311FB03F101EB400000F2151000 +:10670000E0612062A2EB0800A549A0F10100091890 +:106710008CD2B0F5387F00E002E098BFFFDF57E091 +:10672000E98A40F271226068514300EB410204980B +:106730000021002806D000FB02F19848B1FBF0F0E0 +:1067400000F101016161688840F2E24100FB01F261 +:1067500004994FF0000006D0904801FB02F1B1FB14 +:10676000F0F000F10100A061B8F1000F08BFFFDFF9 +:10677000BAF1000FE98A40F27122606801FB02F170 +:1067800000EB4100616918BF401A24D06062A26822 +:106790002168606901FB0200297D40F2E24211FBA1 +:1067A00002F101EB400000F21310E0616988521021 +:1067B000A0695143C0EB4100A0F547702062606AB8 +:1067C000A0EB0800A0F5AA7176484018BFF42EAFE0 +:1067D000012030712AE7411A00980844D338D5E7E0 +:1067E000BAF1000F08BFFFDF698840F27122514300 +:1067F000A0690AEB0B02C0EB410101FB0BF16162E6 +:10680000A368D4F814C0D21AD4F800A0521E0AFB10 +:1068100003C302FB00302A7D40F2E24312FB03F285 +:1068200002EB400000F21310E061A1F54770206216 +:106830005D48406800283FF4F9AE4FF0010AB8F116 +:10684000000F08BFFFDF606AA0EB0800A0F5AA7187 +:106850005448401838BF86F804A0E7E6698840F23B +:106860007122A0695143C0EB410000FB0BF0606254 +:106870000098BAF1000F25D0002818BFFFDF0AEBFF +:106880000B00A1690022484302EB400000F2131004 +:10689000E061688840F271225043C1EB4000A0F5EE +:1068A000477020624048406800283FF4BFAE616AEC +:1068B0000120A1EB0801A1F5AA723A49891838BF55 +:1068C0003071B3E6002814BFB8F1000FFFDF616A32 +:1068D0000098D33808446062D1E7002070711098A6 +:1068E00080B3B5F8E81000290CBF0020B5F8EA0025 +:1068F000A5F8EA0095F8EC20401C504388420AD2E3 +:106900007079401E002806DD01207071B5F8EA009C +:10691000401CA5F8EA0086F80090B9F1000F1CBFF2 +:1069200094F8340000287FF45CAE89F0010084F80C +:106930003500387FF97EBA7E914219D03146FAF798 +:10694000E4F91AE0FFE7698840F27122A069514337 +:10695000C0EB4101304605F044FA0004000CDAD0E7 +:106960001199002918BF0880012007B0BDE8F08FF9 +:106970000020F876B8763860786207B00020BDE86D +:10698000F08F70B5084D0929D5E9003270D20DE0BD +:10699000880D0020E8000020B00D002040420F00CC +:1069A000DBF7FFFFF4F8FFFFD8000020DFE801F07D +:1069B000056178807493935D8F0000201062D17E12 +:1069C000042953D2DFE801F05252024A516A0C689E +:1069D0001168C88111680861106890F8350040B9E5 +:1069E000FAF702F869680968096CFBF726F90028CC +:1069F0001BDC686801684A8EB4F850108A4207D1DF +:106A0000B4F8C420511AA4F8C610A4F8502006E027 +:106A1000511AA4F8C6100168498EA4F850100268F3 +:106A2000C1681164C168416113E068680168098E3A +:106A3000B4F85020891AA4F8C6100168098EA4F889 +:106A4000501001680A6CC2600A6C4261886CC4F81C +:106A5000D0002046BDE8704003F086B9D068506190 +:106A6000FDF797FA002818BFFFDF70BDFFDF70BD8C +:106A700031E0D07E04280DD2DFE800F00C0C0206D5 +:106A8000BDE8704003F086BAFDF710FC002818BF7F +:106A9000FFDF70BDFFDF70BDBDE87040FCF7CEBD0D +:106AA000D87E02280FD0D87E032818BFFFDF06E06B +:106AB000D87E022807D0D87E032818BFFFDFBDE8A4 +:106AC000704000F023BCBDE8704000F077BCBDE82A +:106AD0007040F9F773BFFFDF70BD2DE9F047002666 +:106AE000F74DF84F82460C464FF0010909295CD258 +:106AF000DFE801F005495454495B5B545400686871 +:106B0000DFF8C083002818BFFFDF21465046C5F8D4 +:106B10000480FFF736FFF87E022818BFBDE8F08733 +:106B20006868D0F80080406A0568F9F740FF6A8815 +:106B300040F271235A43D8F81810B728C1EB42012C +:106B4000A1F1AB0A8CBF0446B7242946012005F009 +:106B500083F92044AAEB0000A0F201342946012069 +:106B600005F07AF9696A9C30814288BF0E1AC8F82C +:106B70002C40A64238BF3446C8F82840386880F810 +:106B80003490BDE8F0875046FFF7FBFEF87E022800 +:106B900004BF386880F83490BDE8F08750462F6015 +:106BA000FFF7EFFE2E60BDE8F087FFDFBDE8F0875E +:106BB0002DE9F041C24C07460D4609291ED2DFE8F7 +:106BC00001F005101414101D1D1414006068BE4E51 +:106BD000002818BFFFDF294638466660BDE8F0414F +:106BE000CFE63846BDE8F041CBE6B74820603846EE +:106BF000FFF7C7FE00202060BDE8F081FFDFBDE8A1 +:106C0000F081F0B5AF4985B00026CA7EAC4C032AAE +:106C100003D02831CA7E032A64D10025216000B345 +:106C2000012806BF03208876FFDF0AD02068002EE7 +:106C300005604562256055D0A448456005B0002038 +:106C4000F0BD2068C17E29B1C17E827E914208BF1D +:106C500020BFF6D0C17E00290CBF01260026857614 +:106C6000E4E70026032708468F76C97E032904D06F +:106C7000C07E002808BF012631E00120FDF735FB6A +:106C80002068007F002808BFFFDF2068067F8DF89E +:106C900004708DF80570F9F7A7FE02904FF4FA70B2 +:106CA000039001208DF8000069463046FAF72DF870 +:106CB0002068007FFBF74DF830B920BF2068007FC7 +:106CC000FBF747F80028F8D02068007FF9F776FE38 +:106CD00020680577C57685760560012645622068BF +:106CE0008576A3E705B00C20F0BD10B5754800F01F +:106CF000EDFB754800F0EAFB754900200873734905 +:106D000048707049486101F1280250618876907698 +:106D10006B494860086010BD2DE9F0416D4E054695 +:106D200096F800046C4C400994F800144909884214 +:106D300018BFFFDF96F800044009684991F8001475 +:106D40004909884218BFFFDF94F8140D40096449CF +:106D500091F800144909884218BFFFDF61480024F8 +:106D60000570584DEC76AC7605F12806F476B476CD +:106D70000121103000F10807017104606C62746237 +:106D80002C60346005F150087C6088F83740284654 +:106D900000F09CFB05F1280000F098FB88F80C40FF +:106DA0007C706C617461AC76B476A7F110004460BD +:106DB0000460BDE8F0814C49087170472DE9F84343 +:106DC00040490546CA7E3E4C01F12800002A04BF16 +:106DD000C27E002A72D0C97E022907BFC17E002967 +:106DE0000C20BDE8F88320604048F9F797FD216842 +:106DF0000877364845602168086014384862ADB1AC +:106E0000012105F1EC00FBF747FA0620F7F7F4FE45 +:106E100006460720F7F7F0FE95F8EC103044B1FB7A +:106E2000F0F200FB1210401C85F8EC002068007F97 +:106E3000002808BFFFDFF9F7BAFD2D49091838BF50 +:106E400040F2F65000F26B1087B220680326C67637 +:106E5000FCF778FF21680861FCF798FF00254FF0E8 +:106E6000010800284DD0FCF791FF21684A6A1060A4 +:106E70000868012180F800806846FBF798F99DF8C2 +:106E8000000042F210710002B0FBF1F201FB1200AF +:106E90000744F9F7A9FD3946F9F7BFFD2168C86035 +:106EA0002268167256721571107FD37E111D92F8EA +:106EB0001AC0634532D0F9F728FF33E01AE000002A +:106EC000D8000020880D0020B00D0020E800002030 +:106ED000D80D002001E000E00BE000E018E000E049 +:106EE00019E000E0D0000020E0000020B16B0100BC +:106EF0000AFAFFFFFA482160F9F710FD21680877C8 +:106F000077E7F9F771FD3946F9F787FD2168C86021 +:106F100008680570086880F80180C1E7D576957625 +:106F200015605562206805830020FDF7DEF900201A +:106F30002560BDE8F88370472DE9F041E94F82B044 +:106F4000F97E19B907F12801C97E19B102B00C20E8 +:106F5000BDE8F0810221F976E34EE44D3E607D62AA +:106F6000002428603473DFF88883297990F8F420AE +:106F7000438838F8111038F8122011440A04120C12 +:106F8000214605D002FB03F1DA4AB1FBF2F1491CBC +:106F90008AB2416A05F025F800940194296828799D +:106FA000002391F8F41038F810001A4638F8111040 +:106FB000084481B21846FFF700FB002818BFFFDF26 +:106FC000B4600120346030737486348686F83640AD +:106FD0002868B0F85010491EA0F850103C8302B049 +:106FE0000020BDE8F081C04981F837007047C248F1 +:106FF00010B540680124817E032908BF002409D010 +:107000000168497831B1006ABC49884284BF0024D4 +:10701000FDF767F9204610BD70B5B7484468206891 +:10702000C189491CC1812268D2E90A0192F837203E +:10703000256A002A1CBF2A4604F0FAFE2168854210 +:10704000886205D82068007B01281CBF012070BD24 +:10705000002070BD2DE9F043A74CA24883B020600A +:10706000416A006800260D6880F8346095F8CE10FB +:10707000002904BF007B032856D1F9F7B5FC01466F +:1070800020684069FAF7D9FD00F2617000284BDDF5 +:10709000216840F271274A6A0B681268D3F818C059 +:1070A00052887A43CCEB4202B0FBF2F0B5F85020A4 +:1070B000401C104418860868B5F8C420018E511A87 +:1070C00009B2002930DD012180F83610B5F87600CC +:1070D000B5F87410DFF81882401AB5F85010401E49 +:1070E000084487B20DF1080917E0516A097938F8A8 +:1070F0001110CDE90069028E95F8F430007B38F864 +:107100001330194489B20123FFF757FA60B10128FF +:107110000ED0022818BFFFDF06D022681068018E4B +:10712000791A09B20029E0DA266003B0BDE8F083DD +:1071300020680068018EBDF8082011440186ECE744 +:1071400070B56D4C0025062861685AD2DFE800F062 +:10715000141C030E200D002000F0F5F96068C576C0 +:1071600085760560456268B1656070BD2068C5764A +:1071700085760560456270BD012000F0E4F9606825 +:107180000028F1D1FFDFEFE709680320087370BD25 +:10719000486A0A680068936913604288096840F287 +:1071A000E2435A434A60B0F81011C18290F80E11C0 +:1071B0000175B0F812114180B0F814218280B0F846 +:1071C0001621C280494A4A4B92F804C0126833F82B +:1071D0001CC092F8F42033F81220624413041B0CF4 +:1071E0004FF0000204D0434A5943B1FBF2F14A1C6C +:1071F00092B2416A04F0F5FE6168022009680873E2 +:1072000070BDFFDF70BD70B53B4D002470B101282B +:1072100012D002281CBFFFDF70BD00F0F2F96868D1 +:10722000C47684760460446220B924E000F0E9F971 +:10723000686800B36C6070BD686801684C70C476A3 +:1072400084762F4E046044620021706804F048FA8E +:10725000706880F80A4180F80B41FFF76DFE002846 +:1072600018BFFFDFF9F7EFFA26486C600078F2F7F5 +:1072700021FE6C6070BDFFDFDCE71F494968CA7EF4 +:10728000022A18BF70470A68D389002B18BF7047BD +:1072900010610A682838936A034493620968CA6ACD +:1072A0001044C8627047144A00B5526841B10129C0 +:1072B00008BF401E04D0022916BFFFDFC01F00BD5B +:1072C000106200BD1048C07E00281CBF002070471F +:1072D00010B50720F7F782FC80F0010010BD000018 +:1072E000DB6A0100880D0020D80D0020E00000209E +:1072F000F2E5010040420F00D8000020CF821300C9 +:10730000E8000020D0000020B00D00202DE9F84357 +:10731000DB4D4FF00308002728680126041D80F884 +:107320000880077100684078012836D0012168463E +:10733000FAF73DFF9DF8000042F210710002B0FB29 +:10734000F1F201FB12002968496A09680E183146FA +:10735000A068F9F762FBA0603146204604F041FDC9 +:10736000461C2868018B0A299CBF31440183C5490A +:1073700088421CBF018B0A2992BF84F80580022134 +:107380006171027FC37E214690F81AC063450FD019 +:10739000BDE8F8431046F9F7B8BC4FF47A71A0681D +:1073A000F9F73BFBA0600021204604F01AFDD8E766 +:1073B000C776877607604762BDE8F8832DE9F04716 +:1073C000AF4E84B03068416A04680D6894F8351097 +:1073D00039B1618EB5F85020914202BF407A002841 +:1073E000FFDFF9F701FB3268526901461046FAF7F0 +:1073F00024FC31684FF0000900284A6A126808BF6F +:1074000048460AD00B68528840F2712C9B6902FBF7 +:107410000CF2C3EB4202B0FBF2F0B5F85020638EE1 +:1074200002EB000C6345AEBF581C401C1044608644 +:1074300094F8360030B9608EB5F8C420904204BF8D +:10744000401C6086088B904F401C0883B5F876007E +:10745000B5F874100DF1080A401AB5F85010401E26 +:1074600008441FFA80F819E03068406A007937F85C +:107470001000CDE9009A95F8F41037F8111008447F +:1074800081B2207B0023FFF798F8002804BF04B0E6 +:10749000BDE8F087012818BFFFDF11D0628EA8EB8E +:1074A000020000B20028DFDA082085F86A00012017 +:1074B00085F8690004B02846BDE8F04702F07CB9C1 +:1074C000608EBDF8081008446086E7E72DE9F047B4 +:1074D000DFF8B8816A4C05464FF01F090027EE7EA1 +:1074E000042E23D2DFE806F02922021D454518BFED +:1074F000FFDF02202560A8762168C87E28B1C87EFB +:107500008A7E904208BF20BFF6D0C87E8F760028C2 +:107510001CBF4FF00C0927600CD10F604F62276031 +:107520000BE00120FFF76DFB814600E0FFDFB9F1C2 +:10753000000F02D0E87EB042D1D1E87E002818BF0B +:10754000FFDFBDE8F087F0B54D4E002583B07268CF +:107550000128516A0C6847D108794B4B33F8101059 +:10756000106890F80CC00127BCF1030F06D0027B15 +:10757000022A13D0007B012825D035E085601068F1 +:107580000560CDE9007594F8F400B4F8C42033F830 +:1075900010000023084481B2032020E0B4F8D62074 +:1075A0008260CDE9007594F8F400B4F8C42033F893 +:1075B00010000023084481B20220FEF7FEFF71682C +:1075C00009680F730DE0CDE9007594F8F400B4F884 +:1075D000C42033F810000023084481B20120FEF7D4 +:1075E000ECFF002818BFFFDFF9F72DF9706805835D +:1075F0000268B4F850105186006880F8365003B025 +:10760000F0BD38B51E4C00200546616809684A780F +:10761000002A18BF4D702AD1097861B1012168464E +:10762000FAF7E9FD9DF8000042F210710002B0FB8C +:10763000F1F201FB12006268516A09680144D068E6 +:10764000F9F7EBF96268D060157103205072107F72 +:10765000D37E111D92F81AC0634502D0F9F755FB8D +:1076600003E0D57695761560556260680583F9F775 +:10767000EAF807480078BDE83840F2F71BBC000084 +:10768000D8000020B00D0020F2E50100880D002098 +:10769000D000002010B584B004466846FCF7ADF970 +:1076A000002808BFFFDF009804F02DFE032100989A +:1076B00004F040FE0098017821F01001017021468D +:1076C00004F09FFE162C80F0E380DFE804F03627FC +:1076D0000B61E1E1E2199DE1E2E284E1E1E1E1E156 +:1076E000E2E2ABC6FE48806890F8DD10009804F036 +:1076F00007FFFCF795F900281CBF04B010BD80E01F +:10770000F748806890F8B910009804F049FFFCF73A +:1077100087F9002840F0DE8000F0DBB8F048806890 +:10772000D0F8E800411C009804F0DBFEFCF778F983 +:1077300000281CBF04B010BD63E0E94CA068D0F87D +:10774000E4008179009804F0A0FEA068D0F8E4007D +:107750000189009804F092FEA068D0F8E400418905 +:10776000009804F076FEA068D0F8E40081890098C3 +:1077700004F076FEA068D0F8E400C189009804F017 +:1077800076FEFCF74DF900281CBF04B010BD38E0B0 +:10779000D34CA068D0F8E400011D009804F0B4FEBA +:1077A000A068D0F8E40000F10C01009804F0B6FEE7 +:1077B000A068D0F8E40000F11E01009804F0B4FEC7 +:1077C000A06800F1B001009804F0BCFEFCF728F9B5 +:1077D000002872D17BE0C24C60690178009804F007 +:1077E000C9FE60698188009804F0C6FE606941881E +:1077F000009804F0C5FEFCF713F900281CBF04B084 +:1078000010BDFFDF04B010BDB648D0E90010CDE9CF +:10781000021002A9009804F0C5FEFCF701F9002847 +:107820004BD154E0AE4CA068B0F84010009804F082 +:10783000C3FEA068B0F84210009804F0C1FEA06832 +:10784000818F009804F0C0FEA068C18F009804F0FA +:10785000BFFEFCF7E5F880BB39E0A14CA068818F42 +:10786000009804F0B1FEA068C18F009804F0B0FE4B +:10787000A068B0F84010009804F09EFEA068B0F830 +:107880004210009804F09CFEFCF7CAF810BB20E000 +:10789000FFDFFCF7C5F8002808BFFFDF0C2C12BF84 +:1078A000132C04B010BD072C18BF152C12D0012CBE +:1078B00019BF002C022C04B010BD0021884880683C +:1078C000A0F87A10012180F87E1004B010BDFFDF0F +:1078D000F3E7FFDF824900208968A1F8800004B047 +:1078E00010BD2DE9F0437E4C83B0207910F0010FDC +:1078F00004BF03B0BDE8F083206900230521C578EB +:10790000A06890F85B20503004F01AFA002818BFE5 +:10791000022D0CD00B2D18BF042D08D0052D1CBF37 +:10792000062D0D2D03D0607840F00800607060785F +:1079300000281CBF03B0BDE8F0832069C078801E1A +:10794000142880F00983DFE800F00AF16482E4255E +:10795000F1F0F157EF9BF1F1F1F1EEEDECEBA068F6 +:107960000023012190F85D20503004F0E9F900284F +:1079700040F0FF82206904F0C5FDA16881F8DE00B7 +:10798000022081F85D00002081F8820081F87E00ED +:1079900000F0EFBAA0680023092190F85B20503076 +:1079A00004F0CEF90028A06816D090F85B200023E0 +:1079B0000921503004F0C4F9002800F0E582607815 +:1079C000002840F0D682A16881F8720081F87E001C +:1079D00081F85B0000F0CDBA90F85B10192940F0F7 +:1079E000C882002180F88F1080F85B10A0F87A1010 +:1079F00080F87E1000F0BDBAA06890F85B100C29EA +:107A00006DD1002180F85F100F2180F85B1000F02D +:107A1000B0BAA06890F85B1010297FD1D0F8E410BC +:107A200000884988814218BFFFDFA068D0F8E400D1 +:107A300000F12601206904F092FDA06800F1B40174 +:107A4000206904F094FD1320A16800F07DBAA268BB +:107A500092F85B00132861D1D2F8E40002F1A00390 +:107A600000F11E0100220E3004F0FFF8A068002192 +:107A7000C0E92411012180F85F10152100F072B9CE +:107A8000A06890F85B10132912BF102990F88400A9 +:107A9000002843D102E0607000F06BBA206904F066 +:107AA0007DFDA168002581F8B80081F8835081F838 +:107AB0007E50D1F8E40009884088884218BFFFDF73 +:107AC000A068D0F8E4100D70D0F810110A78002AE0 +:107AD00018BFFFDF40F02B810288CA8004E01DE060 +:107AE000F000002004E60100D0F8102190F8B81052 +:107AF0001171D0F810110D72D0F810210B211170F6 +:107B00000188D0F810014180E078F2F7D3F900F055 +:107B10000EB9A06890F85B10172908D00220BAE7C8 +:107B2000A2E13BE108E121E141E0B8E014E20025F7 +:107B300080F8835080F87E50D0F8E410008849889F +:107B4000814218BFFFDFA068D0F8E4100D70D0F8B4 +:107B500010110A78002A18BFFFDF40F0E88090F883 +:107B600084207AB180F884500288CA80D0F810113D +:107B70000D71D0F810210C2111700188D0F810017E +:107B8000418010E00288CA80D0F810110D71D0F841 +:107B9000102101211172D0F810210B2111700188E0 +:107BA000D0F810014180E078F2F784F9BFE0A068D6 +:107BB0000023194690F85C20503004F0C1F850B909 +:107BC000A0680023082190F85B20503004F0B8F83A +:107BD000002800F0D9816078002840F0CA81A068B0 +:107BE00090F8860010F0020F17D1206904F0CCFC49 +:107BF000A16881F88700206904F0C8FCA168A1F899 +:107C00008800206904F0C5FCA168A1F88A0091F8F9 +:107C1000860040F0020081F88600A06890F8861087 +:107C200011F0010F15D190F85C2000231946503057 +:107C300004F086F8002808BFFFDF0121A0680422B5 +:107C400080F85C1080F8E02080F882100021A0F815 +:107C50008010A06890F85B10012907D1002180F8FE +:107C60005B1080F87E10E078F2F724F9A168D1F873 +:107C7000E400098842888A4204BF0178042940F060 +:107C8000788100250570E078F2F714F9A06890F883 +:107C90005B10002908BF80F87E5000F06AB9A06828 +:107CA0000023072190F85B20503004F049F80028A9 +:107CB00000F06A816078002840F05B8169462069A5 +:107CC00004F0B1FCA0689DF80020002590F88C100D +:107CD000114001F02F0180F88C1080F87E50D0F810 +:107CE000E41000884988814218BFFFDFA068D0F8FF +:107CF000E4100D70D0F810110A78002A18BFFFDFC9 +:107D000015D10288CA80D0F810110D71D0F8101169 +:107D1000009A8A60019ACA60D0F810210621117079 +:107D20000188D0F810014180E078F2F7C3F8A0682C +:107D300080F85B5000F01DB9A0680023092190F87D +:107D40005B20503003F0FCFF002800F01D816078BC +:107D5000002840F00E81A068002180F8721080F8A1 +:107D60007E1000BF80F85B1000F003B9A06800230C +:107D7000194690F85C20503003F0E2FF002800F034 +:107D800003816078002840F0F480A0680021A0F80A +:107D90008010012180F882100B2162E0A06800238E +:107DA000194690F85C20503003F0CAFF00287CD0C0 +:107DB000206904F019FC28B3206904F00DFC064684 +:107DC000206904F00BFC0546206904F009FC074615 +:107DD000206904F007FCA1688F86CE8608874D874E +:107DE00091F88F0000281CBF91F85B00192830D053 +:107DF0006846FBF728FE40B3009804F028FB1428DF +:107E00001DD022E0A0680023194690F85C20503075 +:107E100003F096FF002873D06078002871D12069A4 +:107E200004F015FBA16881F8B900052081F85C0019 +:107E30000020A1F88000012081F8820099E0A1686B +:107E4000002081F87E00FBF70DFEA168002081F87C +:107E50008F00A0680021A0F88010012180F8821016 +:107E60001A2180F85C1084E0A06800230A2190F8B1 +:107E70005B20503003F064FFB8B1206904F0B4FB1C +:107E8000E8B3206904F0ACFB0646206904F0AAFBC5 +:107E90000546206904F0A0FB0746206904F09EFB1C +:107EA000A168B1F82C80CB8D00E050E0B1F830C073 +:107EB0004A8E8E86CF860D874887B1F83C90B945AB +:107EC00098BF4F468F85B1F84090B14598BF4E4658 +:107ED000CE85B1F83E90814598BF48460886B1F8F6 +:107EE0004290A94598BF4D464D869E4238BF1E46DA +:107EF000CE85954238BF15464D86474502E01DE0C8 +:107F000042E036E008BF9E4203D1604508BF95427B +:107F100014D00A88A1F806218A8DA1F808210A8EBA +:107F2000A1F80A21CA8D01F1FC00A1F80C21498EAB +:107F3000418201210172E078F1F7BCFFA1680020C5 +:107F400081F88F0081F87E0081F85B0011E0607895 +:107F500040F0010060700CE0A0680023194690F822 +:107F60005C20503003F0ECFE70B1607800283FF4E4 +:107F700056AFA068D0E926134A1C43F10001C0E9BE +:107F8000262103B0BDE8F083012084E52DE9F0410E +:107F9000FD4D04464FF00007687808436870294695 +:107FA0002879D1F808C010F0200F18BFACF8747011 +:107FB00004D1BCF87400401CACF874009CF860005C +:107FC000012640B99CF85B20002306210CF15000EB +:107FD00003F0B6FE58B3A88810F4006F07D0A86865 +:107FE00090F86010002918BFA0F86C701FD1A96824 +:107FF000B1F86C00401C80B2A1F86C00B1F86E20A2 +:1080000082422CBF101A00208A88521D824228BF4B +:1080100081F87260B1F86C00B1F86E20904206D31E +:10802000A1F86C7081F80261E878F1F743FF2879D4 +:1080300010F0600F08D0A86890F85E1021B980F8A1 +:108040005E600121FEF7C0F81CB900F007FD00F0EA +:108050006FFBA868A04600F1500490F8DC0030B92E +:10806000627B00230121204603F06AFE10B1208DBF +:10807000401C20853D21B8F1000F01D0A17614E00D +:108080002878022808BF16200ED0012804BFA8684F +:1080900090F8DE0008D06878A0B110F0140F06D078 +:1080A0001E20A076667640E0A07666763DE010F071 +:1080B000080FE3D110F0030F08BFFFDF2A20A076DE +:1080C000667632E094F82E0028B1608D411C6185FF +:1080D000A18D884213D294F8320028B1208E411C21 +:1080E0002186A18D88420AD2208DE18C884203D35B +:1080F000AA6892F8DC2012B9A28D904203D3222004 +:10810000A076667611E0A07B0028A08C05D088427E +:1081100009D30820A076667607E0062803D33E2020 +:10812000A076667601E0607E58B1E7722773A77388 +:108130000221A868FEF748F8E878BDE8F041F1F7B9 +:10814000B9BEA868BDE8F0410021FEF73DB88E49F0 +:108150004A788B781A430ED101280AD0087910F09A +:10816000040F04D0886890F85D00022803D0012035 +:108170007047FEF715B80020704770B5824C054671 +:108180000E46A0882843A08015F0020F04D015F0F9 +:10819000010F18BFFFDFE66015F0010F18BF266161 +:1081A00015F0020F12D0304604F051F9062802D023 +:1081B0000B2830D00AE0A06890F85B10152905D193 +:1081C0000021C0E92611012180F8601015F0800F10 +:1081D0001CBF0820A07015F4806F08BF70BDA16897 +:1081E000B1F8500089880844801D85B2304604F0FB +:1081F0002EF9012817D0304604F029F9002818BFBD +:1082000070BDA0682946D0F8E40085803046BDE8FE +:10821000704004F03EB9A06890F85B100F2908BFC9 +:108220000021D3D1D0E7A0682946A0F8EE5030460F +:10823000BDE8704004F05DB9F8B5534D0024064622 +:10824000A860AC806C70AC702C700088FBF7D2FB1F +:10825000A8680088FBF7F4FBB6F8C800A968401CC2 +:1082600082B201F1500003F018FC002818BFFFDFB4 +:108270002746A6F8C840A86890F87E1029B1B0F843 +:108280007A10B0F87C2091422AD290F8821029B15D +:10829000B0F88010B0F87C20914221D2B0F878205C +:1082A000B0F876108A421BD290F85E20B0F87400C5 +:1082B000002A3DD0884213D234480090344B354ACE +:1082C0003146204602F08DF9A8680023052190F878 +:1082D0005B20503003F034FD002818BF02F07DF918 +:1082E000A86890F8F010002908BFF8BD90F8F110C8 +:1082F000002906BF90F88F100029F8BD90F85C1097 +:108300001A2908BFF8BDB0F8F2108187B0F8F41050 +:10831000C187B0F8F61029B1A0F84010B0F8F810F5 +:10832000A0F84210012180F88F1080F8F070F8BD9D +:108330000628D5D2C0E71448806890F87E1029B18D +:10834000B0F87A10B0F87C20914219D290F88210DF +:1083500029B1B0F88010B0F87C20914210D2B0F86A +:108360007820B0F876108A420AD290F85E20B0F8F1 +:1083700074001AB1884203D202F041BB0628FBD335 +:108380000020014602E60000F00000208D7F010081 +:108390004F8101007B8101002DE9F0410C46074629 +:1083A0001D4616464FF48C712046DDF8188005F006 +:1083B00014FE2780C4F81081C4E93965BDE8F08156 +:1083C000F6F78FBD70B50C4605460621F6F769FC39 +:1083D000002808BF70BDD0F810110A780021072AC4 +:1083E00011D00C2A21D00B2A2CD0062A39D090F893 +:1083F0000221002A48D061700E22227080F80211FA +:108400006580012070BD617007222270D0F81021B4 +:108410005368C4F802309368C4F8063092896281C8 +:10842000D0F810010170012070BD61700C22227023 +:10843000D0F810215268C4F80220D0F81001017061 +:10844000012070BD61700B222270D0F8102153689A +:10845000C4F802301289E280D0F8100101700120C6 +:1084600070BD617006222270D0F810215368D2F8D6 +:1084700008C0D268C4F80230C4F806C0C4F80A20A4 +:10848000D0F810010170BCE790F80421C2B161700E +:108490001322227090F80421002AB2D080F804112F +:1084A000D0F80621C4F80220D0F80A21C4F806202A +:1084B000B0F80E21628190F80421002AEED1A0E7E5 +:1084C00090F8FC20002A04BF002070BD61701622C5 +:1084D000227090F8FC20002A93D000BF80F8FC1096 +:1084E000D0F8FE20C4F8022090F8FC20002AF5D134 +:1084F00087E700207047FD4A5061D17070472DE931 +:10850000F0470446481E85B238BFBDE8F087012712 +:10851000DFF8D89304F108084FF0070A5FF000066F +:10852000B4F8C800401CA4F8C800B4F87400401C9B +:10853000A4F8740094F8600040B994F85B2000231C +:10854000062104F1500003F0FBFBD8B1B4F86C0035 +:10855000401C80B2A4F86C00B4F86E1081422CBFAD +:108560000A1A0022A3885B1D934228BF84F8727008 +:10857000884207D3A4F86C6084F8027199F803006C +:10858000F1F798FC94F87E0020B1B4F87A00401C12 +:10859000A4F87A0094F8820020B1B4F88000401C5E +:1085A000A4F8800094F8DC0040B994F85D20002322 +:1085B000012104F1500003F0C3FB20B1B4F87800AE +:1085C000401CA4F8780094F85B0007281FD1B4F889 +:1085D0005000411CB4F8EE00814262D1D4F8E800AA +:1085E000411C404605F011FE0221204603F074F9BB +:1085F00084F85B6084F88E70D4F8E8000078002876 +:1086000008BFFFDFD4F8E8000178491E017094F834 +:108610005B00082845D1B4F85000411CD4F8E400B0 +:10862000808881423DD1D4F810010178002918BF1B +:10863000FFDF22D12188C180D4F8E4004189D4F839 +:1086400010010181D4F8E4008189D4F8100141813E +:10865000D4F8E400C189D4F810018181D4F8100164 +:108660000671D4F8100180F800A0D4F81001218818 +:10867000418099F80300F1F71DFC0121204603F029 +:108680002BF903212046FDF79FFDD4F8E400418833 +:108690002088814218BFFFDFD4F8E400067084F818 +:1086A0005B60B4F85000401C691EA4F850008DB205 +:1086B000BFF436AFBDE8F0878C4AC2E906017047C7 +:1086C00070B50446B0F8740094F85E10002908BF35 +:1086D000C0F1020503D0B4F87610081A051F94F80B +:1086E000720040B194F85B200023092104F150008E +:1086F00003F026FBA0B1B4F86C6094F8600058B9A0 +:1087000094F85B200023062104F1500003F018FBCD +:10871000002808BF284603D0B4F86E00801B001F55 +:108720008542C8BF0546002DD4BF0020A8B270BD49 +:108730002DE9F84F6846FBF760F9002808BFBDE84F +:10874000F88F6A4C6078002818BFBDE8F88FA068E1 +:108750000023012190F85D20503003F0F1FA002849 +:1087600018BFBDE8F88FA06890F8DC10002918BF8A +:1087700002206CD190F85B2000231946503003F0A2 +:10878000DFFA30B1A06890F87200002818BF1220FC +:108790005DD1A06890F85B200E2A42D00F2A08BF56 +:1087A0000B2054D0152A08BF062050D000230421E6 +:1087B000503003F0C5FA002818BFBDE8F88FA06854 +:1087C000002590F85C1001294AD0052943D00B29D7 +:1087D00053D001261A2957D0D0F8E4100A78002A7D +:1087E00000F0DD8049880288914240F0D88090F8FE +:1087F0005B2000231946503003F0A2FA002877D0FE +:10880000A068D0F8E4100978022908BF002070D0D1 +:1088100003296FD004296ED0052908BF082068D02D +:10882000BDE0F9F7E7FC0C2838BFBDE8F88FA06879 +:108830000821D0F8E4001E30F9F7DDFC28B1A0686B +:108840000421B030F9F7D7FC00B9FFDF0320FEF7B1 +:1088500021FFBDE8F88F0720FEF71CFFA06866E047 +:108860000C20FEF717FFA068A0F8805090F8861043 +:1088700041F0010180F8861059E01320FEF70AFF4D +:10888000A068A0F8805052E0C18E828FB0F82CA072 +:10889000B0F82E80B0F83090478E914238BF0A462B +:1088A0008285838EB0F840108B4238BF1946C1854F +:1088B000038FB0F842C0634538BF9C46A0F832C071 +:1088C000B0F83AB0C38F9B4538BF5B46038641453D +:1088D00038BF4146C185BC4538BFBC46A0F832C050 +:1088E000524508BF41450AD14B4505E0F000002044 +:1088F00055E029E01FE03FE008BFBC4513D00288E7 +:10890000A0F80621828DA0F80821028EA0F80A2185 +:10891000C28D00F1FC01A0F80C21408E48820E723D +:10892000E078F1F7C7FA1520FEF7B4FEA06880F8EA +:108930005C50BDE8F88F90F85F1041B190F860008E +:10894000002808BFFFDF0A20FEF7A4FE27E0F9F7A2 +:1089500051FC0C2823D3A0680821D0F8E4001E3075 +:10896000F9F749FC28B1A0680421B030F9F743FCBD +:1089700000B9FFDF0320E7E790F8860010F0030F4F +:108980000DD10C20FEF786FEA068A0F87A5080F882 +:108990007E6090F8861041F0010180F886106846EC +:1089A000FBF72BF8002808BFBDE8F88FA06800236C +:1089B000194690F85B20503003F0C2F9002808BF38 +:1089C000BDE8F88FA06890F8EC10D1B3A1690978E0 +:1089D000B9BBB0F850100A2934D900F108010522BA +:1089E000E06905F035FA0028A06804BF80F8EC5073 +:1089F000BDE8F88FD0F8E800017869B1411C052284 +:108A0000E06905F025FA002818BFBDE8F88FA068D6 +:108A1000D0F8E800007830B9A068E169D0F8E80043 +:108A2000401C05F0F2FBA068D0F8E8000178491C72 +:108A300001700120FEF72EFEA06880F8EC50BDE822 +:108A4000F88FFFE790F88F1000291EBF90F85C00A8 +:108A50001A2814207FF4FBAEBDE8F88F2DE9F04111 +:108A6000E94C6078002818BFBDE8F08120794FF00C +:108A7000010710F0040F4FF000050DD0A06890F82A +:108A80005B00052808BFFFDFA06890F85D10022991 +:108A900004BF277080F85D5020794FF0080610F071 +:108AA000020F00F00B816078002840F00781E06839 +:108AB000C078162880F00181DFE800F04D3C0B798A +:108AC000FFFF8F1E2BFF5C6E9AFFFFFFFFFFC7FBB0 +:108AD000D7F0A0680023012190F85D20503003F00A +:108AE0002FF9002840F0EA80A068032180F85D108B +:108AF00080F87E5000F0DEB8A0680023194690F898 +:108B00005C20503003F01CF9002840F0D28000F0C7 +:108B1000D5B8A0680023194690F85B20503003F0C8 +:108B20000FF9002808BFFFDF0920A16881F85B006A +:108B300000F0C4B8A0680023194690F85B205030BC +:108B400003F0FEF8002808BFFFDF0720A16881F8C6 +:108B50005B0000F0B3B8A0680023194690F85B20D2 +:108B6000503003F0EDF8002808BFFFDFA06880F860 +:108B70005B60A3E0A0680023194690F85B205030AA +:108B800003F0DEF8002808BFFFDFA0680C2180F8A2 +:108B9000837080F85B1091E0A06890F85B000F286C +:108BA00018BFFFDFA0680E2180F8847012E0A06873 +:108BB0000023194690F85B20503003F0C1F828B923 +:108BC000A06890F88400002808BFFFDFA06810218B +:108BD00080F8837080F85B1070E0A06890F85B000C +:108BE000152818BFFFDF1720A16881F85B0065E03A +:108BF000A068D0F8E41003884A889A4204BF097834 +:108C000004290AD0A0680023194690F85C2050304F +:108C100003F096F800284CD150E090F85B20002338 +:108C20001946503003F08CF8002808BFFFDFA06819 +:108C300090F8861011F0020F0FBF80F85B7080F87B +:108C40007E50D0F8E4000570DCE7A06800231946E8 +:108C500090F85B20503003F073F8002808BFFFDF66 +:108C60000A20A16881F85B0028E0A06890F88F00D6 +:108C7000012818BFFFDFA0680023194690F85B2089 +:108C8000503003F05DF8002808BFFFDF1920A1680D +:108C900081F85B0012E001E00BE00EE0A068002329 +:108CA000194690F85C20503003F04AF8002808BFBD +:108CB000FFDFA06880F8825000E0FFDF207910F02D +:108CC000080F0AD0607840B9A06890F85D100329B9 +:108CD00003D10221217080F85D50FEF702FEA078DA +:108CE00010F0080F14D0A0680023052190F85B2035 +:108CF000503003F025F848B16670A068D0F8101124 +:108D000008780B2808BF0020087001E001F0A5FEDC +:108D1000A068BDE8F041AFF3008070B5044690F85C +:108D20005B000025072822D1B4F85000B4F8EE10FB +:108D3000401C884218BF70BDD4F8E800411C04F103 +:108D4000080005F062FA0221204602F0C5FD84F811 +:108D50005B50012084F88E00D4F8E80000780028E9 +:108D600008BFFFDFD4F8E8000178491E017094F8CD +:108D70005B00082818BF70BDB4F85000D4F8E410A8 +:108D8000401C8988884218BF70BDD4F81001017852 +:108D9000002918BFFFDF22D12188C180D4F8E40068 +:108DA000D4F8101140890881D4F8E400D4F81011E7 +:108DB00080894881D4F8E400D4F81011C0898881F2 +:108DC000D4F810010571D4F8101107200870D4F8F8 +:108DD0001011208848800C48C078F1F76BF8012109 +:108DE000204602F079FD03212046FDF7EDF9D4F885 +:108DF000E40021884088884218BFFFDFD4F8E400EF +:108E0000057084F85B5070BDF00000202DE9F04340 +:108E1000F84C83B0207910F0010F04BF03B0BDE817 +:108E2000F083606901230521C578E06890F85C2033 +:108E3000503002F085FF002818BF022D0BD00A2DFC +:108E400018BF0B2D07D0032D18BF062D03D0607857 +:108E500040F008006070607800281CBF03B0BDE8D7 +:108E6000F0836069C078162880F0F582DFE800F0B2 +:108E70004C260BCEFEFEFDFCFBFEAAC3FAFEFEFE58 +:108E8000FEFEF9F8F7F6E0680123194690F85D2038 +:108E9000503002F055FF002840F0EC82606903F08A +:108EA00031FBE16881F8F800022081F85D000020C4 +:108EB00081F8820081F87E0000F0DCBAE0680123CE +:108EC000002190F85C20503002F03AFF002870D06A +:108ED0006078002840F0CE82606903F00EFBE16804 +:108EE000A1F80C01B1F85020801A00B247F6FE72CA +:108EF0008242A8BF00285DDD01F58771606903F03B +:108F0000F3FA0620E16840E0E0680123002190F8D0 +:108F10005C20503002F014FF002860D060780028F8 +:108F200040F0A882606903F0BBFA90B3606903F077 +:108F3000B4FAE168A1F80C01B1F85020801A00B22F +:108F400047F6FE728242A8BF002833DD606903F055 +:108F50009EFAE16881F80E01606903F093FAE16816 +:108F6000A1F81001606903F078FAE168A1F8120134 +:108F7000606903F079FAE168A1F81401606903F00F +:108F80007AFAE168A1F81601082081F85C0000F087 +:108F900071BAFFE7E0680123002190F85C205030AF +:108FA00002F0CEFE28B16078002800F09E8100F02B +:108FB00061BA14E0282081F86A00012081F8690074 +:108FC00000F058BAE0680123002190F85C2050308E +:108FD00002F0B6FE18B1607820B100F04BBA012063 +:108FE00000F073B9E0680021A0F88010012180F83A +:108FF00082100D2106E0E06890F85C100E2908BF91 +:109000000F2156D180F85C1000F034BAE0680123DB +:10901000002190F85C20503002F092FE20B9E06808 +:1090200090F884000028DAD06078002840F022828E +:10903000E06800210125A0F8801080F8825000F13E +:10904000D801606903F077FAE06800F1B001606967 +:1090500003F07CFAE06890F8360108E055E1F4E0AE +:10906000CAE0DAE02DE0A0E0C7E11DE0F3E100286E +:1090700018BFFFDFE0680188A0F8381100F59D7186 +:10908000606903F046FAE06800F5A171606903F0D9 +:1090900048FAE06880F83651112180F85C10E078D9 +:1090A000F0F708FF00F0E6B9E06890F85C101429CA +:1090B00002D0022000F009B9002180F882101821A6 +:1090C000A0E7E0680123002190F85C20503002F016 +:1090D00037FE50B9E0680123082190F85B2050303A +:1090E00002F02EFE00283FF47AAF6078002840F0AE +:1090F000C181E06890F8860010F0020F17D1606916 +:1091000003F042FAE16881F88700606903F03EFAF3 +:10911000E168A1F88800606903F03BFAE168A1F812 +:109120008A0091F8860040F0020081F88600E0682D +:1091300090F8861011F0010F15D190F85C200123F2 +:109140000021503002F0FCFD002808BFFFDF0121A4 +:10915000E068042280F85C1080F80B2180F882100F +:109160000021A0F88010E06890F85B10012907D179 +:10917000002180F85B1080F87E10E078F0F79AFE0E +:10918000E06890F80A11042940F07481002580F805 +:109190000A51E078F0F78EFEE06890F85B10002945 +:1091A00008BF80F87E5000F065B9E0680123002117 +:1091B00090F85C20503002F0C3FD00283FF40FAF60 +:1091C0006078002840F056816946606903F0EFF945 +:1091D000E0689DF8002090F88C10114001F02F01FC +:1091E00080F88C100021A0F88010012180F88210F6 +:1091F000092107E710010020E0680123092190F808 +:109200005B20503002F09CFD00283FF4E8AE60780F +:10921000002800F0098100F02DB9E0680123002149 +:1092200090F85C20503002F08BFD00283FF4D7AE60 +:109230006078002840F01E81E0680021A0F88010CE +:10924000012180F882100B21DCE6E0680123002177 +:1092500090F85C20503002F073FD00287DD06069EA +:1092600003F0C2F980B3606903F0B6F9064660699D +:1092700003F0B4F90546606903F0B2F90746606986 +:1092800003F0B0F9E1688F86CE8608874D8791F8A4 +:109290008F0000281CBF91F85B0019280BD068468E +:1092A000FAF7D1FB38B10098C078142803D0E168F0 +:1092B000002081F88F00E0680021A0F880100121D3 +:1092C00080F882101A219DE601E06070D2E0E0682B +:1092D0000123002190F85C20503002F031FD00287D +:1092E0003FF47DAE607800287DD1606903F0AFF86F +:1092F000E16881F8B900052081F85C000020A1F840 +:109300008000012081F88200B4E0E06801230A2196 +:1093100090F85B20503002F013FDF0B1606903F06B +:1093200063F9E8B3606903F05BF90746606903F02D +:1093300059F90546606903F04FF90646606903F084 +:109340004DF9E168B1F82C80CB8DB1F830C04A8E70 +:109350008F86CE860D87488700E04AE0B1F83C90C2 +:10936000B14598BF4E468E85B1F84090B94598BF3B +:109370004F46CF85B1F84290A94598BF4D464D86DE +:10938000B1F83E90814598BF484608869F4238BF55 +:109390001F46CF85954238BF15464D86464500E0AD +:1093A0001CE008BF9F4203D1604508BF954215D01D +:1093B0000A88A1F84A218A8DA1F84C210A8EA1F8C9 +:1093C0004E21CA8D01F59170A1F85021498E018678 +:1093D000012180F82610E078F0F76CFDE1680020AC +:1093E00081F88F0000E045E081F87E0081F85B00A5 +:1093F00040E0607840F0010067E7E0680123092160 +:1094000090F85B20503002F09BFC0028E06814D0FC +:1094100090F85B2001230921503002F091FC0028D4 +:109420003FF4DDAD607828BBE168002081F8720070 +:1094300081F87E0081F85B001CE090F85B10192930 +:1094400018D1002180F88F1080F85B10A0F87A10F6 +:1094500080F87E100EE0E0680123002190F85C2087 +:10946000503002F06DFC00283FF4B9AD6078002860 +:109470003FF43BAFE068D0E92612491C42F10002FC +:10948000C0E9261203B0BDE8F08330B585B00446CC +:109490006846FAF7B2FA002808BFFFDF009802F02A +:1094A00032FF0321009802F045FF0098017821F077 +:1094B00010010170214602F0A4FFA01E14286FD2F3 +:1094C000DFE800F00A872288881A874687883530C7 +:1094D000878787878888566FF848C06890F88D100E +:1094E00021B10621009803F00BF873E090F8F71013 +:1094F000009803F005F86DE0F048C06890F8B910E6 +:10950000009803F04DF865E0EC4DE86800F1E001EB +:10951000009803F01FF8E86800F1B401009803F028 +:1095200023F857E00621009803F036F852E0E34DA7 +:10953000A8680178009803F01DF8A8688188009851 +:1095400003F01AF8A8684188009803F019F841E080 +:10955000002002900390D94802A9C06890F88C00BE +:1095600000F0F1008DF80800009803F057F831E0A2 +:10957000D24DE868B0F84010009803F01DF8E86894 +:10958000B0F84210009803F01BF8E868818F00984B +:1095900003F01AF8E868C18F009803F019F819E091 +:1095A00017E0C64DE868818F009803F00DF8E86871 +:1095B000C18F009803F00CF8E868B0F840100098EC +:1095C00002F0FAFFE868B0F84210009802F0F8FFE5 +:1095D00000E0FFDFFAF724FA002808BFFFDF0C2CB9 +:1095E00004BF05B030BD072C11D0122C18BF142CAD +:1095F00014D0022C04BF05B030BD0021AF48C068B4 +:10960000A0F88010012180F8821005B030BDAB4970 +:109610000020C968A1F8800005B030BDA74800212E +:10962000C068A0F87A10012180F87E1005B030BD26 +:1096300070B50C4605464FF4B071204604F0CDFCE1 +:109640002580002084F8220184F82E0184F8360158 +:1096500084F8440170BDF5F744BC70B50C4605466E +:109660000721F5F71EFB002808BF70BD90F82221E6 +:109670000021CAB161700722227090F822218AB1BC +:10968000018480F82211D0F82421C4F80220D0F8F7 +:109690002821C4F80620B0F82C21628190F82221FC +:1096A000002AEDD1A1702AE090F82E21F2B190F8B5 +:1096B0002E210B2A0CD00C2A18BFFFDF1FD161709E +:1096C0000C22227090F83021A2700288A2800AE059 +:1096D00061700B22227090F83021A2700288A28063 +:1096E00090F83421A27180F82E1108E090F85A21E8 +:1096F0003AB161700E22227080F85A116580012003 +:1097000070BD90F8362182B1617008222270028803 +:109710006280D0F83A21D0F83E316260A360B0F8A0 +:109720004221A28180F83611E9E790F8442142B144 +:10973000617015222270B0F84621628080F84411D1 +:10974000DDE790F8542192B161701622227090F8F2 +:109750005421002AD3D000BF80F85411D0F85621EC +:10976000C4F8022090F85421002AF5D1C7E790F8F8 +:109770004821002A04BF002070BD617013222270AE +:1097800090F84821002ABAD080F84811D0F84A2130 +:10979000C4F80220D0F84E21C4F80620B0F85221B7 +:1097A000628190F84821002AEED1A8E70020704796 +:1097B000424A9060D170704710B5002180F85B106C +:1097C00080F85C1080F85E1090F8CE00002814BF7E +:1097D00002200320FDF7B4FC3848C078BDE81040F3 +:1097E000F0F768BB2DE9F047344C07460D46E068BA +:1097F0000088F5F7CBFB5FEA000808BFFFDF607861 +:109800002843607020794FF0000510F0200FE068C9 +:109810001CBFA0F8745080F8D45004D1B0F8741074 +:10982000491CA0F87410E068012690F8601039B95E +:1098300090F85C2001230621503002F081FA48B3F1 +:10984000A08810F4006F07D0E06890F8601000293D +:1098500018BFA0F86C501DD1E168B1F86C00401C35 +:1098600080B2A1F86C00B1F86E3083422CBF1A1A96 +:109870000022B4F806C00CF1050C624598BF81F8CF +:109880007260984206D3A1F86C5081F85A61E07872 +:10989000F0F710FB20794FF0020910F0600F14D0A0 +:1098A000E06890F85E1011B1032909D00DE080F84E +:1098B0005E600120FDF744FC07E00000100100207D +:1098C00080F85E900120FDF73BFCE06890F85E10A8 +:1098D000012905D1A18811F4807F18BF80F85E901E +:1098E000002F7DD1A18811F4007F18BFA0F8E850A7 +:1098F00004D1B0F8E810491CA0F8E81000F04CFBC7 +:1099000000F0F7FC01F09FF80028E06818BFA0F80D +:10991000C85004D1B0F8C810491CA0F8C81001F014 +:1099200095F840B1E16891F8D40002289CBF401C32 +:1099300081F8D40004D8E06890F8D400022806D951 +:10994000E068A0F8C850A0F8CA5080F8D450E06889 +:109950000123002190F85C20503002F0F1F920B989 +:10996000E06890F85C0007285AD1E06801230021E4 +:1099700090F85B20503002F0E3F9002850D0E06806 +:109980000123002190F85D20503002F0D9F9002821 +:1099900046D0E06890F85E10022904BF90F8D40029 +:1099A00000283DD14046F4F782FDC0B3FAF76CF8C9 +:1099B000A8B3E268B2F8C200012831D982F8CD60BC +:1099C000B2F87600B2F87410831E9942A8BF012144 +:1099D00002DA401A401E81B2B2F8C800E38800E003 +:1099E00035E098422FBF0120181A401C80B28142F6 +:1099F00088BF0146012908BF82F8CD5092F8F000D7 +:109A000090B1B2F8CA00B2F8F22090422FBF012004 +:109A1000101A401C80B2814288BF014604E0FFE773 +:109A2000E068012180F8CD50D4F80CC0BCF850207B +:109A3000501880B2ACF8C4009CF85E10002918BF22 +:109A400001290ED002291CBF0329FFDF0CD0A088FA +:109A5000C0F340200028E06818BFA0F8D6506DD1B0 +:109A600065E0ACF8C000F2E79CF85D1003292CD04B +:109A70009CF85C100829F4D0BCF87410BCF876008F +:109A80008A1C4FF0000890420AD3401A801E1FFA29 +:109A900080F8B8F1000F1CBFA8F101001FFA80F890 +:109AA0009CF8720060B19CF85B20012309210CF145 +:109AB000500002F045F9002808BF4FF000082FD0F1 +:109AC000E06890F8601099B90AE0BCF874100329B6 +:109AD000C7D3BCF876001044401CACF8C000B6E711 +:109AE00090F85C2001230621503002F029F980B162 +:109AF000E2680020B2F86E10B2F86C20931C994214 +:109B000003D3881A801E18BF401E404538BF1FFA75 +:109B100080F8B8F1000F1CBFA8F101001FFA80F80F +:109B2000E068B0F8C4104144A0F8C0108FE7B0F866 +:109B3000D610B0F8C6201144A0F8D610E06890F80E +:109B4000F61039B990F85D2001231946503002F023 +:109B5000F7F838B1E068B0F87810B0F8C6201144D2 +:109B6000A0F87810E06890F87E3033B1B0F87A1041 +:109B7000B0F8C6201144A0F87A1090F8822032B1D3 +:109B8000B0F88010B0F8C6C06144A0F880104FF063 +:109B90003D0C17B180F86AC010E02178022910D07E +:109BA000012908BF90F8F81006D06178F1B111F0E2 +:109BB000140F18BF1E210BD080F86A1080F869605E +:109BC0004BE090F88D10002914BF06211621F3E711 +:109BD00011F0080FDED111F0030F08BFFFDF2A21BB +:109BE000E06880F86A1080F8696036E02BB1B0F860 +:109BF0007A10B0F87C3099420FD22AB1B0F88010B8 +:109C0000B0F87C20914208D2B0F87820B0F87610F5 +:109C10008A4208D390F8F6202AB1222180F86A10EF +:109C200080F8696019E090F85E204AB1B0F87420BD +:109C30008A420FD3082180F86A1080F869600CE02E +:109C4000B0F87410062905D33E2180F86A1080F818 +:109C5000696002E090F8690090B1E06880F85B50BC +:109C600080F85C5080F85E5090F8CE00002814BF59 +:109C700002200320FDF764FAE078F0F71BF902E018 +:109C80000020FDF75DFAE06880F8CE50BDE8F0876F +:109C9000F7494A788B781A430DD150B1087910F002 +:109CA000080F04D0C86890F85D00032803D0012095 +:109CB0007047FDF7B1B9002070472DE9F041EC4C39 +:109CC00005460E46A0882843A08015F0020F04D058 +:109CD00015F0010F18BFFFDF266115F0010F4FF0DF +:109CE00000084FF001071CD03046666102F0AFFB60 +:109CF000062802D00B280BD013E0E06890F85C1027 +:109D000014290ED10021C0E9241180F85F7008E009 +:109D1000E06890F85C100E2904BF80F85F8080F83E +:109D2000847015F0020F18D02069C078052802D081 +:109D30000B280BD011E0E06890F85C1012290CD1D0 +:109D40000021C0E9261180F8607006E0E06890F814 +:109D50005C100D2908BF80F8608015F0800F1CBFD3 +:109D60000820A070BDE8F0812DE9F047C04C82B01A +:109D70000127216900250191A5806570A5702570D6 +:109D8000E06067F30708064680F8CE700088F5F7B4 +:109D9000FDF85FEA000908BFFFDFE0680088F9F717 +:109DA00029FEE0680088F9F74BFEE068B0F8C200D1 +:109DB000D0B101A8F9F721FEB0B1E06890F8F61033 +:109DC00091B190F85D2001231946503001F0B8FFA1 +:109DD00050B9E068A0F8785080F88D500220FFF765 +:109DE00054FBE06880F8CD50D4F80CC09CF82201F8 +:109DF00038B9BCF82000BCF80410884288BFE08065 +:109E000002D8BCF80400E080BCF8C600401E1FFA6F +:109E100080FABCF8C8005044ACF8C8009CF8CC00EC +:109E200000281CBFACF8CA508CF8CC5004D1BCF848 +:109E3000CA005044ACF8CA00BCF874005044ACF8F6 +:109E400074009CF8600040B99CF85C200123062156 +:109E50000CF1500001F074FF28B1E068B0F86C100C +:109E60005144A0F86C10E068B0F8C21001299CBF02 +:109E7000491CA0F8C210BAF1000F18BF80F8D450E6 +:109E800090F8CD10A1B1B0F8C800E18888420FD297 +:109E90004846F4F70CFB58B1E06890F8F01039B17F +:109EA000B0F8CA10B0F8F200814228BF00F0D1FD2E +:109EB000E06880F8CD5090F85C10062918BF07299B +:109EC00017D1B0F85010B0F80C21891A09B2002946 +:109ED0000FDB00F58771083004F097F90221E06884 +:109EE00001F0FEFBE06880F80B5180F85C5080F8D0 +:109EF0008E70E16801F15000B1F8C62001F0CDFD8F +:109F0000E06890F8F010002918BFA0F8CA5059482E +:109F10000090594B594A3146404600F062FBE068D8 +:109F20000123052190F85C20503001F009FF002842 +:109F300018BF00F052FBE06890F81811002904BF28 +:109F400002B0BDE8F08790F81911002907BF90F81A +:109F50008F10002902B0BDE8F08790F85C101A2934 +:109F600004BF02B0BDE8F087B0F81A118187B0F8DD +:109F70001C11C187B0F81E1129B1A0F84010B0F82B +:109F80002011A0F8421080F88F7080F8185102B0AC +:109F9000BDE8F08700F033BD2DE9F041344C4FF0BF +:109FA00002074FF00005207910F0080F13D06078F9 +:109FB00088B9E06890F85C10162905D180F88350C4 +:109FC00080F8825080F85C5090F85D10032904BF3F +:109FD000277080F85D50FEF719FFA1884FF0010649 +:109FE00011F0040F14D0607890B9E06890F85C200C +:109FF000062A08BF80F80B6103D0082A08BF80F842 +:10A000000B7190F85D20022A04BF267080F85D5025 +:10A0100011F0020F4FF0030700F00581607800286F +:10A0200040F001812069C078801E142880F0FA80F9 +:10A03000DFE800F00AF84B566C26F831F83E9B61D9 +:10A04000F8F8F8F8C6F2D6ECE0680123194690F863 +:10A050005D20503001F074FE002840F0E480E0689C +:10A0600080F85D7080F87E5080F8825000F0DBB898 +:10A0700010010020E5970100919C0100BB9C0100AC +:10A08000E06890F85C00052818BFFFDFE06880F802 +:10A090005C5000F0C3B8E06890F85C00092818BF75 +:10A0A000FFDFE06880F8825080F85C5000F0BBB8B9 +:10A0B000E06890F85C000D2818BFFFDFE0680E2113 +:10A0C00080F8836080F85C10ADE0E06890F85C0098 +:10A0D000112818BFFFDFE068122180F88360F1E7E4 +:10A0E000E06890F85C00122818BFFFDF1420E168D8 +:10A0F00081F85C0097E0E06890F85C00122818BFD7 +:10A10000FFDF1620E16881F85C008CE0E06890F8E1 +:10A110005C00182818BFFFDFE06880F8835080F8E3 +:10A12000825090F82E01002818BFFFDFE06890F8F9 +:10A13000841041B180F884500188A0F8321180F871 +:10A1400030510C2107E00188A0F8321180F830511D +:10A1500080F834610B2180F82E11E078EFF7AAFE29 +:10A16000D4F80C0080F85C505DE0E06890F80A11CB +:10A1700004290ED0E0680123082190F85C205030BB +:10A1800001F0DEFD00281CBFE06880F882504AD054 +:10A19000E8E790F85B2001230021503001F0D0FD6A +:10A1A000002808BFFFDFE06890F8861011F0020F6A +:10A1B0000EBF80F85B6080F87E5080F80A51D9E7C6 +:10A1C000E0680123002190F85B20503001F0B8FDD9 +:10A1D000002808BFFFDF0A20E16881F85B0022E069 +:10A1E000E06890F88F00012818BFFFDFE0680123C6 +:10A1F000002190F85B20503001F0A2FD002808BF3C +:10A20000FFDF1920E16881F85B000CE0E06890F85E +:10A210005C00002818BFFFDFD4F80C0080F88250E3 +:10A2200001E0FFE7FFDF207910F0100F09D0607820 +:10A2300038B9E06890F85C10062904BF072180F85F +:10A240005C10A07810F0080F10D0E0680123052101 +:10A2500090F85C20503001F073FD28B10820607048 +:10A26000E06880F82E5101E000F0F7FBE06890F81C +:10A270005C10082918BFBDE8F081B0F85010B0F8A4 +:10A280000C21491C914206BF61780029BDE8F0818C +:10A29000B0F812114288914209D1B0F81421838894 +:10A2A0009A4204D1B0F81621C3889A4211D002888C +:10A2B000A0F82621A0F82811B0F81411A0F82A114E +:10A2C000B0F81611A0F82C1180F82261E078EFF7B1 +:10A2D000F1FD0121E06801F003FA0420FCF730FFF2 +:10A2E000E06880F80B5180F85C5080F85E70BDE843 +:10A2F000F0812DE9F84F6846F9F77FFB002808BF89 +:10A30000BDE8F88FAC4C6078002818BFBDE8F88F26 +:10A31000E0680123194690F85D20503001F010FDEF +:10A32000002818BFBDE8F88FE068002590F8F61007 +:10A3300029B1A0F8785080F88D5002206DE090F897 +:10A340005B2001230021503001F0FAFC88B1E06865 +:10A350000123042190F85C20503001F0F1FC40B959 +:10A36000E06890F8720020B11220FFF78EF8BDE887 +:10A37000F88FE068012690F85C200D2A08BF0B20BA +:10A380004BD00CDC012A79D0052A08BF072044D025 +:10A39000092A08BF092040D00B2A70D007E0112AF3 +:10A3A00027D0122A3DD0182A6CD01A2A69D001234E +:10A3B0000421503001F0C4FC002818BFBDE8F88F1C +:10A3C000E06890F80A11002970D090F85B20012312 +:10A3D0000021503001F0B4FC002867D0E06890F80C +:10A3E0000A11042904BF90F8860010F0030F7CD0F6 +:10A3F000C5E0F7F7FFFE0C2838BFBDE8F88F08214D +:10A40000E068E030F7F7F7FE28B1E0680421B430E7 +:10A41000F7F7F1FE00B9FFDF0420FFF736F8BDE8DB +:10A42000F88F90F8F910012912D0022918BFBDE861 +:10A43000F88F90F8841000291ABF80F88D600220F0 +:10A440000D20FFF722F8E06880F8F950BDE8F88F9A +:10A4500090F82E11002918BFBDE8F88F00F1A00375 +:10A4600000F1D8010022FA3001F0FFFB0520FFF7D0 +:10A470000CF8E06880F8F950BDE8F88F09E016E0C4 +:10A4800000E01BE00620FFF700F8E06880F882504B +:10A49000F2E70C20FEF7F9FFE068A0F8805090F892 +:10A4A000861041F0010180F88610E5E767E013208F +:10A4B000FEF7EBFFE068A0F880504FE0C18E838F7D +:10A4C000B0F82CA0B0F82E80B0F83090478E9942AA +:10A4D00038BF0B468385828EB0F840108A4238BF61 +:10A4E0001146C185B0F838C000E03AE0B0F842202B +:10A4F000944538BF62464286B0F83AB0B0F83EC0E4 +:10A50000E34538BFDC46A0F830C0414538BF41467E +:10A51000C185BA4238BF3A464286534508BF4145D5 +:10A5200003D1CC4508BFBA4214D00288A0F84A2112 +:10A53000828DA0F84C21028EA0F84E21C28D00F52C +:10A540009171A0F85021408E088681F82660E0784D +:10A55000EFF7B0FC1520FEF798FFE06880F85C503C +:10A560008AE70C20FEF791FFE068A0F87A5080F8A7 +:10A570007E6090F8861041F0010180F886106846F0 +:10A58000F9F73BFA00283FF477AFE0680123002198 +:10A5900090F85B20503001F0D3FB00283FF46CAF03 +:10A5A000E06890F88F1000291EBF90F85C001A2810 +:10A5B00014207FF432AF5FE710010020FB480078E1 +:10A5C000002818BF0C20704730B5F84C054620789D +:10A5D000002818BFFFDF657230BDF4490120087202 +:10A5E00070472DE9F047F14C8146DDF82080207856 +:10A5F0001E4617460D4628B9002F1CBF002EB8F185 +:10A60000000F00D1FFDFC4F81C80C4E90C95C4E939 +:10A61000057600202072E0712071E0706071A071F9 +:10A62000E34EA07060813078012705F1500828883A +:10A63000F4F7ACFCA0622888F4F796FCE062F8F727 +:10A640006BFEF8F79EFBF8F7BCFE05F11100F8F77A +:10A650004CFE05F10D00F8F777FC307800280CBFB0 +:10A6600003200120F8F755FE98F81800F8F774FC5D +:10A67000F8F749FE30786FF00D01F8B16A8EE88D79 +:10A6800001EBD20198F810308AB2824298BF88B2AA +:10A690000BB1001D80B2F8F762FB30784FF001017A +:10A6A000C8B10120F8F7CCFC7068D0F8D000F8F7FA +:10A6B00041FE2770BDE8F047F8F736BE2A8EA88D18 +:10A6C00001EBD20198F80F308AB2824298BF88B26B +:10A6D000002BE0D0DDE70020F8F7B2FCE9E72DE938 +:10A6E000F041B34C6FF00D072046012640684FF053 +:10A6F0000008418E07EBD102C18D93B28B4298BF07 +:10A7000091B2AA4DE86AF3F70EFF6862002811BF04 +:10A7100085F801806E70A7486862207860680146FD +:10A7200000F15006498E90F86020C08D07EBD101F2 +:10A730008BB2834298BF88B2002A1CBF001D80B232 +:10A74000F8F70DFB307C40B306F15001994891E8D1 +:10A750000E1000F5027787E80E10316EC0F8211256 +:10A76000716EC0F8251200F58170F8F7E0FD2078D1 +:10A7700000280CBF0120002080F001018E480176E6 +:10A78000D6E91212C0E90412A0F58372696AF8F7DB +:10A790000EFA0120F8F71CFA04E0686AF8F7C7FD22 +:10A7A000F8F73EFA01210020F8F783FE0320287015 +:10A7B000BDE8F0812DE9F04F7D4E83B030464FF07B +:10A7C000000B40684FF0010800F1500490F855105C +:10A7D000A6F1100A4FF002096FF00D07A6F130053F +:10A7E00071B3012969D002296BD0032918BFFFDF9B +:10A7F00076D0286A0823017821F008010170A27937 +:10A8000003EAC202114321F004010170E27904233A +:10A8100003EA8202114321F01001017094F805B09F +:10A82000A86AF3F752FE8246F9F72EF9BBF1020F40 +:10A830005DD0BBF1010F5ED0BBF1030F5FD063E0D1 +:10A84000018E07EBD102818D93B28B4298BF91B2FA +:10A85000ADF80410A0F848105046F9F7F4F848B1E4 +:10A86000296A85F802806A694FF480609047032066 +:10A870006071BEE76A4601A9A86AF3F711FD286274 +:10A8800010B194F8331029B15046F9F7B0F884F8B4 +:10A890000580AEE79DF8001031B9A0F800B080F84F +:10A8A00002B0012101F046FDBDF80400C1B2286AE2 +:10A8B00001F0BEFE84F805909BE75046F9F797F843 +:10A8C00097E7B0F84800ADF804006A4601A9A86A05 +:10A8D000F3F7E6FC2862002808BFFFDF89E7FFE7FF +:10A8E0005046F9F7B0F8002808BFFFDF81E730EAEB +:10A8F0000A0009D106E030EA0A0005D102E0BAF107 +:10A90000000F01D0012100E00021286A027842EA0C +:10A9100001110170716891F85F20888D098E07EB35 +:10A92000D1018BB2834298BF88B2002A1CBF001DA0 +:10A9300080B2F8F714FAE07B00281CBF6079012888 +:10A9400026D004F150011B4891E80E1000F5027763 +:10A9500087E80E10216EC0F82112616EC0F8251232 +:10A9600000F58170F8F7E3FC307800280CBF012176 +:10A97000002111480176D4E91012C0E90412A0F5B3 +:10A9800083712A6AF8F713F90020F8F721F904E037 +:10A99000286AF8F7CCFCF8F743F9307870B1286AE8 +:10A9A000007810F0100F0ED015E0000028010020F4 +:10A9B00058010020280E00203010002001210846F8 +:10A9C000F8F777FD0AE0FE48007810F0100F04BF9A +:10A9D0002879002802D0A8780028EFD068790028CC +:10A9E00004BF85F80580F8F7CAFC286A0188A981A8 +:10A9F0008078A87385F8009003B0BDE8F08FF14827 +:10AA000010B50078012818BFFFDFF8F785FCEE4885 +:10AA10000178446811B9FFF7CDFE01E0FFF75FFE52 +:10AA200094F82800012818BF10BDBDE81040F8F7C1 +:10AA30001DBDE44810B50078032818BFFFDFBDE84E +:10AA4000104000F09DB9DF4840797047DD4800793B +:10AA50007047DC490120887170472DE9F041DA48E0 +:10AA6000D84D012601784068002700F15004686A3B +:10AA7000E96A90F8018002F0EDFE68B1012821D06A +:10AA8000022834D003281CBFFFDFBDE8F081E86A4C +:10AA9000BDE8F041F3F72EBF01224146E86AF3F723 +:10AAA0009FFDD4E91210491C40F10000C4E91210C6 +:10AAB000E079012814BFE671E771687ABDE8F041DA +:10AAC000EFF7F8B900224146E86AF3F789FDD4E9C7 +:10AAD0001201401C41F10001C4E91201E079012892 +:10AAE00002D1E771BDE8F081E671BDE8F081E86A66 +:10AAF000F3F700FFD4E91201401C41F10001C4E961 +:10AB00001201E0790128EFD1EBE72DE9F041AE4FDA +:10AB10004FF000083846A7F130044068012600F1E4 +:10AB200050052078022818BFFFDFA87850B185F8BB +:10AB30000280A67062694146042090473878002858 +:10AB400018BF2E71206A0321007831EA000004BF8B +:10AB5000E878002805D1EE70216AA67062690220AB +:10AB600090470121002000F035F918B1BDE8F0410F +:10AB700000F006B9BDE8F041B1E52DE9F05F924E75 +:10AB800082463046A6F130054068317800F1500920 +:10AB900028784FF000080127032818BFFFDF6889D5 +:10ABA000BAF1000F40F40070688104BF40F040002B +:10ABB000688100F0D580F8F749F888B999F8100055 +:10ABC00070B1686A417859B1007899F80710C0F3FC +:10ABD000C000884204D1EF70BDE8F05F00F0D0B84B +:10ABE000686A0188A5F80F1080786874688940F059 +:10ABF0002000688185F804803078706800F1500B7F +:10AC0000044690F82800012816D1F8F725FC59468B +:10AC1000204601F06AF878B13078002870680CBFDF +:10AC2000FC3000F5AA70218841809BF80810017162 +:10AC30000770687AEFF73EF9686A99F806100078AD +:10AC4000C0F38000884234D03078706800F150043E +:10AC500090F8550048B3022845D000BF84F805801D +:10AC6000307838B12079414620B12171AF706A69DE +:10AC700010209047E07890B184F80380F8F7F2FE56 +:10AC8000002808BFFFDF0820AF706A6900219047E5 +:10AC9000D4E91002411C42F10000C4E91010A0796F +:10ACA00001280CBF84F80680A771688940F4807081 +:10ACB0006881686A99F807300178C1F3C0029A4246 +:10ACC0004ED13278726801F0030102F1500401297B +:10ACD00018BF022931D003291CBFE87940F00400D5 +:10ACE00012D0E8713CE0A86AF3F714FB002808BF13 +:10ACF000FFDFD4E91010491C40F10000C4E9101036 +:10AD0000687AEFF7D7F8A9E701F035FB88B1A770AB +:10AD10006989384641F400616981696AAF706A697E +:10AD20009047E079012802D184F8078018E0E771A4 +:10AD300016E0E87940F01000D3E74078C8B169899F +:10AD400041F400616981697839B9FB28F1D8287A22 +:10AD500020B180206A690021904701E0FFF77DFE65 +:10AD60005146012000F036F838B1BDE8F05F00F040 +:10AD700007B8E0790128DAD1D6E7BDE8F05F19E538 +:10AD800070B5114900254C68F8F738FBF8F72AFB35 +:10AD9000F8F74CFAF8F7AFFAF7F742FFF8F71EFBAF +:10ADA000F8F7C2FA94F82800012808BFF8F754FB16 +:10ADB000044C0021626960899047E179E07805E000 +:10ADC000370100202801002058010020E269904747 +:10ADD000257070BD70B51F4C0546002908BF012DB8 +:10ADE00005D12079401CC0B22071012830D8A1695A +:10ADF0002846884700282BD0A179174839B1012D62 +:10AE000001BF41780029017811F0100F20D0E179BD +:10AE1000F1B912490978002918BF002102D029434D +:10AE200004D013E0012D18BF0121F8D10C49097895 +:10AE300011F0100F04BF007810F0100F08D0A078A8 +:10AE400030B9607810B111F0100F01D0002070BD42 +:10AE5000012070BD2801002037010020580100208A +:10AE60003401002010B540F2BB11F74803F093F80D +:10AE7000F648002141704FF46171418010BD2DE909 +:10AE8000F0410F46064600F0E8FAEF4C102817D0C4 +:10AE900004EBC00191F8421111F0010F1CBF012019 +:10AEA000BDE8F081617808291FD2617804EBC00009 +:10AEB000491C6170012180F842110846BDE8F0810B +:10AEC0006178082911D22578681C207004EBC50828 +:10AED0003868C8F83C01B888A8F84001102D28BF90 +:10AEE000FFDF88F83B612846DFE70020BDE8F081FE +:10AEF000D5480178491E4BB2002BB8BF704770B4DB +:10AF00005FF0000500EBC30191F8421111F0010F51 +:10AF10003BD04278D9B2521E427000EBC10282F897 +:10AF2000425190F802C00022BCF1000F0BD98418E6 +:10AF300094F803618E4202D1102A26D103E0521CFC +:10AF4000D2B29445F3D80278521ED2B202708A422D +:10AF50001BD000EBC20200EBC10CD2F83B41CCF895 +:10AF60003B41D2F83F21CCF83F21847890F800C0D3 +:10AF70000022002C09D9861896F8036166450AD18B +:10AF8000102A1CBF024482F80311591E4BB2002B39 +:10AF9000B8DA70BC7047521CD2B29442EBD8F4E7D6 +:10AFA0002DE9F0471E4617468846814600F055FABF +:10AFB000A54C0546102831D0A078002100280ED9D4 +:10AFC000621892F80331AB4205D110291CBF122040 +:10AFD000BDE8F08703E0491CC9B28842F0D80828D0 +:10AFE00032D2102D1DD000BF94F80280102208F13B +:10AFF0000100A07004EB081909F10300394600F0C4 +:10B0000023FE09F183001022314600F01DFE04EBFF +:10B01000080080F803510020BDE8F087A0780828D8 +:10B0200012D22578681C207004EBC50AD8F80000FD +:10B03000CAF83C01B8F80400AAF84001102D28BF56 +:10B04000FFDF8AF83B91CFE70720BDE8F08770B4B7 +:10B050007D488178491E4BB2002BBCBF70BC704745 +:10B0600003F0FF0C8178491ECAB2827050FA83F156 +:10B0700091F8031194453AD000EB021400EB0C1543 +:10B08000D4F80360C5F80360D4F80760C5F807601A +:10B09000D4F80B60C5F80B60D4F80F60C5F80F60EA +:10B0A000D4F88360C5F88360D4F88760C5F88760FA +:10B0B000D4F88B60C5F88B60D4F88F40C5F88F400A +:10B0C000841800EB0C0502EB420294F803410CEBF0 +:10B0D0004C0C00EB420285F8034100EB4C0CD2F81B +:10B0E0000B41CCF80B41B2F80F21ACF80F2100EB6B +:10B0F000C10292F8422112F0010F35D190F802C03E +:10B1000000220C46BCF1000F0BD9851895F80351AD +:10B110008D4202D1102A27D103E0521CD2B29445AD +:10B12000F3D80178491EC9B20170A1421CD000EBCE +:10B13000C10100EBC402D1F83BC1C2F83BC1D1F858 +:10B140003F11C2F83F1190F802C002780021BCF113 +:10B15000000F09D9451895F8035195420BD11029D4 +:10B160001CBF014481F80341591E4BB2002BBFF6AE +:10B1700077AF70BC7047491CC9B28C45EAD8F3E779 +:10B1800032494870704731484078704738B14AF2C8 +:10B19000B811884203D82D4948800120704700200B +:10B1A00070472A484088704710B500F056F91028BB +:10B1B00014D0254A0146002092F802C0BCF1000FCD +:10B1C0000CD9131893F803318B4203D1102818BF00 +:10B1D00010BD03E0401CC0B28445F2D8082010BD69 +:10B1E00019498A78824286BF01EB00108330002023 +:10B1F000704715498A78824286BF01EB0010C01C57 +:10B2000000207047104B93F802C084459CBF00207B +:10B210007047184490F8030103EBC00090F83B31ED +:10B220000B70D0F83C111160B0F840019080012003 +:10B230007047054A114491F8032104490A700268D5 +:10B240004A60808808817047581000206001002003 +:10B2500010B5144600F001F9102809D0F9490A7810 +:10B26000824205D1486820600889A080012010BD75 +:10B27000002010BD10B5F7F749FC002804BFFF20DF +:10B2800010BDBDE81040F7F767BCEF498A788242ED +:10B290009CBF00207047084490F8030101EBC000F8 +:10B2A00090F8420100F00100704770B5E64E0024AE +:10B2B00025463078002814D906EBC50090F84211D5 +:10B2C00011F0010F08D090F83B2100F59E71204647 +:10B2D000631CDCB2F7F7D1FD681CC5B23078A84218 +:10B2E000EAD87078A04218BFFFDF70BD70B5D64CA9 +:10B2F00000263546A078002812D96019731C90F8F2 +:10B30000030104EBC00000F59E7190F83B2130462C +:10B31000DEB2F7F7B2FD681CC5B2A078A842ECD83F +:10B32000C0B2B04218BFFFDF70BD10B5F7F704FE22 +:10B3300058B30024F7F704FEC34A00211378002B0A +:10B3400023D900BF02EBC10C9CF842C11CF0010FD5 +:10B3500017D084421CBF04F1010C0CF0FF0410D183 +:10B3600093780020002B0AD902EB000C9CF803C153 +:10B370008C4508BF10BD401CC0B28342F4D81020D9 +:10B3800010BD491CC9B28B42DCD8082010BD10B5D5 +:10B39000F7F7D2FD002804BF082010BDBDE810401B +:10B3A000F7F7CEBDA74910B5497841B1A64B9978BA +:10B3B00029B1C21CD81CF7F746FB012010BD0020A4 +:10B3C00010BDA14A01EB410102EB41010268C1F845 +:10B3D0000B218088A1F80F01704770B59A4D0024A9 +:10B3E000A878002898BF70BDC0B2A04212D905EB62 +:10B3F000041010F183060DD01021304600F000FC3F +:10B4000040B904EB440005EB400000F20B1130465C +:10B41000F8F7B7FB601CC4B2A878A042E4D870BDAE +:10B4200001461022894800F00FBC8848704770B56B +:10B43000854D0446A878A04206D905EB04101021DA +:10B44000833000F0DDFB08B1002070BD04EB440048 +:10B4500005EB400000F20B1070BD2DE9F0417A4D74 +:10B460000646002428780F46002811D905EBC400B1 +:10B4700090F83B11B14206D10622394600F59E7084 +:10B4800002F0E6FC38B1601CC4B22878A042EDD8C6 +:10B490001020BDE8F0812046BDE8F0816A4910B473 +:10B4A0004A7801EBC003521E4A70002283F8422101 +:10B4B00091F802C0BCF1000F0DD98B1893F803412D +:10B4C000844204D1102A1CBF10BC704703E0521CF8 +:10B4D000D2B29445F1D80A78521ED2B20A70824292 +:10B4E00004BF10BC704701EBC00301EBC202D2F8ED +:10B4F0003BC1C3F83BC1D2F83F21C3F83F218C7850 +:10B5000091F800C00022002C9CBF10BC70478B1823 +:10B5100093F80331634506D1102A1CBF114481F80A +:10B52000030110BC7047521CD2B29442EFD810BC39 +:10B53000704770B444490D188A78521ED3B28B708C +:10B5400095F80321984239D001EB001C01EB03145C +:10B5500000EB4000D4F80360CCF80360D4F8076037 +:10B56000CCF80760D4F80B60CCF80B60D4F80F600F +:10B57000CCF80F60D4F88360CCF88360D4F887608F +:10B58000CCF88760D4F88B60CCF88B60D4F88F400F +:10B59000CCF88F4001EB030C03EB43039CF803C191 +:10B5A00001EB430385F803C101EB4000D3F80BC165 +:10B5B000C0F80BC1B3F80F31A0F80F3101EBC20096 +:10B5C00090F8420110F0010F1CBF70BC70470020C2 +:10B5D0008C78002C0DD90B1893F803C1944504D135 +:10B5E00010281CBF70BC704703E0401CC0B28442EE +:10B5F000F1D80878401EC0B20870904204BF70BCF9 +:10B60000704701EBC20301EBC000D0F83BC1C3F8A7 +:10B610003BC1D0F83F01C3F83F018C780B78002084 +:10B62000002C9CBF70BC704701EB000C9CF803C160 +:10B630009C450DD110281CBF084480F8032170BC24 +:10B6400070470000600100205810002013120020F5 +:10B65000401CC0B28442E7D8F1E7000010B50A7B75 +:10B6600002F01F020A73002282758B181B7A03F006 +:10B67000010C5B0803F00104A4445B0803F001041F +:10B68000A4445B0803F00104A4445B0803F0010434 +:10B6900064444FEA530C0CF0010323444FEA5C0C62 +:10B6A0000CF00104234403EB5C0300EB020C521C7E +:10B6B0008CF8113090F816C0D2B263448375052A15 +:10B6C000D3D3D8B2252888BFFFDF10BD00238383E2 +:10B6D000028401EBC202521EB2FBF1F1C18370473A +:10B6E0000A4630B40021032A0DD04FF4FA4C002A48 +:10B6F0007ED0012A7DD0022A1CBF30BC7047014693 +:10B7000030BC5030AAE7A0F8501080F8561080F8EE +:10B71000571080F85B1080F85C1080F85D1080F89E +:10B720005E1080F8521080F8531080F8541080F8A2 +:10B73000551080F86910A0F86C1080F87210A0F80D +:10B740007410A0F87A1080F87E10A0F8801080F8AD +:10B75000821080F8671080F8681080F85F1080F819 +:10B76000601080F8831080F8841080F88610F12231 +:10B7700080F88C20A0F8781080F88E10A0F8C01007 +:10B78000A0F8C210A0F8C410A0F8C610A0F8C81005 +:10B79000A0F8CA1080F8CD10A0F8D61080F8D41008 +:10B7A000A0F8E810A0F8EA1080F8281001844FF4FF +:10B7B000486242801B228286C2864FF4A47343876C +:10B7C00003878285C28543860386A0F84020A0F8BF +:10B7D00042308287C387A0F84420A0F84620A0F812 +:10B7E000482080F88F1080F8181180F8F01001E0E0 +:10B7F00006E043E080F8F61080F8F91030BC70479E +:10B80000A0F8D61080F8CE104288FB4B1344B3FB4F +:10B81000F2F3A0F86E304BF68033A0F87030C48895 +:10B82000A0F87410B0F8781000F15003514391FB68 +:10B83000F2F1A0F87810E100B1FBF2F1491C89B2F5 +:10B8400001FB02F4A0F87610B4F5C84FC4BF491E3E +:10B85000D984BCFBF2F1491C998502F5802101F5E0 +:10B86000EE31A1F1010CBCFBF2F1D983B3F81CC09D +:10B870000CFB02F1B1FBF2F1998340E7A0F8D6107E +:10B8800000F150024488B0F81231B0F816019184EA +:10B89000118DC0006143B0FBF3F091FBF3F1401C4C +:10B8A000118580B200FB03F1D084B1F5C84FC4BF4D +:10B8B000401ED084BCFBF3F0401C9085108C03EB41 +:10B8C000C000401EB0FBF3F0D083908B6043B0FB10 +:10B8D000F3F0908330BC70470A4630B40021032A4D +:10B8E0000DD04FF4FA4C002A71D0012A6ED0022AF2 +:10B8F0001CBF30BC7047014630BC5030AEE6A0F8EB +:10B90000501080F8561080F8571080F85B1080F8BF +:10B910005C1080F85D1080F85E1080F8521080F89E +:10B92000531080F8541080F8551080F86910A0F872 +:10B930006C1080F87210A0F87410A0F87A1080F8DB +:10B940007E10A0F8801080F8821080F8671080F8D0 +:10B95000681080F85F1080F8601080F8831080F81D +:10B96000841080F88610F12280F88C20A0F87810DE +:10B9700080F88E10A0F8C81080F8CA1080F8C010A7 +:10B98000C0F8C41080F828101B228286C2864FF4AB +:10B99000A473438703878285C28543860386A0F804 +:10B9A0004020A0F842308287C387A0F84420A0F846 +:10B9B0004620A0F8482080F88F1080F8F01080F81A +:10B9C000DC1080F8EC1030BC704700E039E04288B1 +:10B9D000894B1344B3FBF2F3A0F86E304BF680337F +:10B9E000A0F87030C488A0F87410B0F8781000F196 +:10B9F0005003514391FBF2F1A0F87810E100B1FB44 +:10BA0000F2F1491C89B201FB02F4A0F87610B4F5FA +:10BA1000C84FC4BF491ED984BCFBF2F1491C9985AB +:10BA200002F5802101F5EE31A1F1010CBCFBF2F130 +:10BA3000D983B3F81CC00CFB02F1B1FBF2F199837E +:10BA400059E7D0F8E44000F1500243886089E48966 +:10BA50009184118D594391FBF0F11185E100B1FB07 +:10BA6000F0F1491C89B201FB00F4D184B4F5C84F50 +:10BA7000C4BF491ED184BCFBF0F1491C9185118CD7 +:10BA800000EBC101491EB1FBF0F1D183918B594309 +:10BA9000B1FBF0F0908330BC7047837D0BB1252B58 +:10BAA00001D912207047002A04BF0020704770B4EB +:10BAB00090F817C00C7E514D04FB02C22C464FF08B +:10BAC000000CE2FB054C4FEA1C1C6FF024040CFB3D +:10BAD0000422D2B201EBD20CC27502F007059CF829 +:10BAE00008C0012404FA05F51CEA050F18BF027608 +:10BAF0002CD1B2FBF3FC03FB1C22521CD2B24FF040 +:10BB0000000C00BF00EB0C035B7C93423CBFD21ADD +:10BB1000D2B20ED301EB0C0500232D7A04FA03F602 +:10BB200035421CBF521ED2B26AB15B1CDBB2082B7D +:10BB3000F4D30CF1010303F0FF0CBCF1050FE1D3CA +:10BB400070BC1F20704703EBCC01017670BC002055 +:10BB5000704730B50D460446072988BFFFDFE078FF +:10BB600005F0070100F05000084340F08800E07045 +:10BB7000A07800F0A70040F01800A070607800F0F6 +:10BB80005E0040F020006070207800F0BC0040F0C3 +:10BB90004000207030BD017931F01F0113BF00203B +:10BBA00000221146704710B4435C491C03F0010C9D +:10BBB0005B0803F00104A4445B0803F00104A444FF +:10BBC0005B0803F00104A4445B0803F00104A444EF +:10BBD0005B0803F001045B08A44403F00104A444DF +:10BBE0000CEB53031A44D2B20529DDDB012A8CBFCA +:10BBF0000120002010BC7047FFDB050053E4B36E4A +:10BC000030B40022A1F1010CBCF1000F12DD431E83 +:10BC100011F0010F08BF13F8012F5C785FEA6C0C7C +:10BC200008D000BF13F8025F22435C782A43BCF1BE +:10BC3000010CF7D1491E5CBF405C0243002A0CBFD7 +:10BC40000120002030BC7047130008BF704710B4BB +:10BC500001EB030CD41A1CF801CC5B1E00F804C0E5 +:10BC600013F0FF03F4D110BC7047F0B58DB0164649 +:10BC700010251C466A46AC4600EB0C03A5EB0C07EE +:10BC800013F8013CD355ACF1010313F0FF0CF3D1D1 +:10BC900015461032102084460B18ACEB000713F841 +:10BCA000013C401ED35510F0FF00F5D1284601F0AD +:10BCB00081F986B1102005F1200201461318A1EB8D +:10BCC000000C13F8013C401E04F80C3010F0FF008B +:10BCD000F4D10DB0F0BD08982060099860600A9812 +:10BCE000A0600B98E0600DB0F0BD38B505460C467D +:10BCF0006846F7F7C6FB002808BF38BD9DF900204D +:10BD0000227294F909100020511A48BF494295F84F +:10BD100029308B42C8BF38BDFF2B08BF38BDA17A80 +:10BD2000491CC9B2A17295F82A30994203D8617AA8 +:10BD30007F2918BF38BD62720020A072012038BD73 +:10BD40000B294AD2DFE801F006090E13161B323C1C +:10BD50003F474200002A42D03FE0022A18BF032A90 +:10BD60003DD03AE0072A18BF062A38D035E0082A25 +:10BD700035D032E0A2F10C000C2830D92DE023B1EF +:10BD8000A2F10D000B282AD927E00F2A18BF0E2A8E +:10BD900025D090F8340020B10F2A1ED3172A1ED9BF +:10BDA0001BE0132A19D3172A19D916E0A2F10C01A6 +:10BDB000032914D990F8340078B1182A0FD90CE06F +:10BDC000092A0CD009E0012A09D006E0192A18BF77 +:10BDD0001A2A04D001E00A2A01D00020704701206D +:10BDE00070472DE9F04187680D4604462046F4F778 +:10BDF00085FE90B1CDB13846A168F5F71EFFA0B120 +:10BE0000401EB0FBF5F0461C06FB05F13846F4F782 +:10BE100004FEA0603046BDE8F081F4F7E5FD40F295 +:10BE20006171F4F7FAFDA060E0E70020BDE8F08161 +:10BE3000904228BF704770B50446101B642838BF75 +:10BE4000642025188D4205D8F5F722FF00281CBF75 +:10BE5000284670BD204670BD8A8D0B8ED200703290 +:10BE600092B2934238BF1A46CB8D498EDB007033B5 +:10BE70009BB2994238BF0B46012100280CBF01201C +:10BE8000002003FB01210023702212FB03119831D3 +:10BE9000002818BF04200844704710B4B0F844309C +:10BEA000FB2B28BFFB23DB007033B0F846009BB2AE +:10BEB000FB2828BFFB20C00070301FFA80FC914295 +:10BEC00034BF012000200844C4B28A4234BF01209C +:10BED00000201044C1B28C4234BF0A4622460020E2 +:10BEE000002A04BF10BC704703FB04F00CFB0100E8 +:10BEF00021447023C1EB420113FB01004D2112FBD1 +:10BF000001F100EB810010BC98387047828DD2009F +:10BF1000703293B2028E9A4238BF1346C28DB0F887 +:10BF200032C0D200703292B2944538BF62464FF0B0 +:10BF3000010C02FB0C324FF0000C702313FB0C229F +:10BF400002F19C03428840F2712C02FB0CF2DFF8F4 +:10BF5000F8C099420CEB420234BF9C468C46944593 +:10BF600028BF114602D2994238BF19464162704734 +:10BF700010B4B0F84430FB2B28BFFB23DB00703338 +:10BF8000B0F846009BB2FB2828BFFB20C0007030F1 +:10BF90001FFA80FC914234BF012000200844C4B243 +:10BFA0008A4234BF012000201044C1B28C4234BF09 +:10BFB0000A4622460020002A04BF10BC704703FB3B +:10BFC00004F00CFB010021447023C1EB420113FB80 +:10BFD00001004D2112FB01F100EB810010BC9C38E7 +:10BFE000704710B4838DDB0070339CB2038EA34284 +:10BFF00038BF1C46C38DDB0070331FFA83FC438EB1 +:10C00000634538BF9C4601230CFB034300244FF0DB +:10C01000700C1CFB0433B0F802C040F271240CFB1E +:10C0200004FCC2EB4C029833A2F22132994234BF95 +:10C030009C468C46944528BF114602D2994238BF8F +:10C040001946416210BC7047F1FCFFFF282101F046 +:10C05000A2BF30B50546007801F00F0220F00F00B6 +:10C060001043287007290BD2DFE801F0040604060C +:10C0700004080400062405E00C2403E0222401E067 +:10C080000024FFDF687820F03F002043687030BD57 +:10C09000007800F00F0070470A68C0F80320898814 +:10C0A000A0F807107047D0F803200A60B0F8070026 +:10C0B000888070470A68C0F809208988A0F80D10A8 +:10C0C0007047D0F809200A60B0F80D0088807047EA +:10C0D0000278402322F0400203EA811111430170EB +:10C0E00070470078C0F3801070470278802322F0F8 +:10C0F000800203EAC1111143017070470078C00942 +:10C100007047D0F80320C1F80920B0F80720A1F843 +:10C110000D200A7822F080020A700078800942EA35 +:10C12000C0100870704770B515460E4604461F2AA9 +:10C1300088BFFFDF2A46314604F1090001F0B4FE52 +:10C140006078A91D20F03F0001F03F0108436070B6 +:10C1500070BD70B5054640780E4600F03F04062CD1 +:10C1600038BFFFDFA01FC4B21F2C88BF1F24224688 +:10C1700005F10901304601F097FE204670BD70B50B +:10C1800015460E4604461F2A88BFFFDF2A46314661 +:10C1900004F1090001F088FE6078A91D20F03F003D +:10C1A00001F03F010843607070BD70B505464078EE +:10C1B0000E4600F03F04062C38BFFFDFA01FC4B2BC +:10C1C0001F2C88BFFFDF224605F10901304601F030 +:10C1D0006BFE204670BD0968C0F80F1070470A88D2 +:10C1E000A0F813208978417570474176090A817655 +:10C1F0007047C176090A017770474177090A81774C +:10C200007047C175090A017670478175704790F8CB +:10C21000242001F01F0122F01F02114380F8241096 +:10C22000704790F82420E02322F0E00203EA411155 +:10C23000114380F8241070471F3001F0E6BF4178A9 +:10C24000007801F03F0110F00F0006D0012808D05F +:10C25000022809D006280BD00FE0881F1F280AD912 +:10C260000BE00C2909D106E0881F1F2803D904E040 +:10C27000881F1F2801D8012070470020704741788F +:10C28000007801F03F0100F00F00042805D10629D5 +:10C2900003D325299CBF012070470020704710B4AC +:10C2A000017801F00F01032922D0052925D1447816 +:10C2B000B0F81910B0F81BC0B0F81730827D04F048 +:10C2C0003F04222C19D1062917D3B1F5486F98BF26 +:10C2D000BCF5FA7F11D282B1082A98BF8A420CD2EB +:10C2E0008B429CBFB0F81D00B0F5486F05D807E041 +:10C2F000407800F03F000C2802D010BC00207047AE +:10C3000010BC01207047222101F045BE00B5027823 +:10C3100001F0030322F003021A430270002242706C +:10C32000012914BF022900BD032912BFFFDF01212B +:10C33000417000BD01F0030300B5027822F0030252 +:10C340001A43027000224270012914BF022900BD65 +:10C35000032912BFFFDF0121417000BD007800F00A +:10C36000030070470278102322F0100203EA011143 +:10C370001143017070474178C07814283BD2DFE840 +:10C3800000F00A0D101316191C1F2225282B2E3120 +:10C390003A3A3A3A34370C292FD030E008292CD0D9 +:10C3A0002DE0022929D02AE0172926D027E00D29DF +:10C3B00023D024E0012920D021E001291DD01EE056 +:10C3C00002291AD01BE0092917D018E0092914D036 +:10C3D00015E0012911D012E001290ED00FE0062945 +:10C3E0000BD00CE0022908D009E0012905D006E0B5 +:10C3F000012902D003E0FB2901D801207047002069 +:10C40000704730B50546C17016291CD2DFE801F02F +:10C410000B0D0F111315150F17171515190F1B1BE2 +:10C420001B1B151517170C240FE008240DE0022420 +:10C430000BE0172409E00D2407E0012405E009249E +:10C4400003E0062401E00024FFDF6C7030BDC078FB +:10C450007047C171090A01727047B0F80700704750 +:10C460004172090A81727047B0F809007047C172C1 +:10C47000090A01737047B0F80B0070474171090A4F +:10C4800081717047B0F805007047017170470079FD +:10C4900070474173090A81737047B0F80D00704707 +:10C4A00030B4B0F80720664DB0F809C0B0F80530D8 +:10C4B0000179941F2D1998BFBCF5FA7F0ED269B18E +:10C4C000082998BF914209D293429FBFB0F80B0050 +:10C4D000B0F5486F012030BC98BF7047002030BCD9 +:10C4E0007047001D01F091BE021D0846114601F083 +:10C4F0008CBE4172090A81727047B0F8090070471A +:10C5000001717047007970470A684260496881602C +:10C51000704742680A608068486070470988818176 +:10C5200070478089088070470A68C0F80E20496803 +:10C53000C0F812107047D0F80E200A60D0F8120030 +:10C54000486070470968C0F816107047D0F81600A8 +:10C55000086070470A6842604968816070474268B5 +:10C560000A608068486070470968C1607047C068A9 +:10C5700008607047017170474171090A8171704705 +:10C58000C171090A0172704700797047B0F805005F +:10C590007047B0F807007047017170470079704725 +:10C5A000017170470A68426049688160704742685B +:10C5B0000A608068486070470171090A41717047DC +:10C5C0008171090AC17170470172090A417270478D +:10C5D0008172090AC172704780887047C0887047AD +:10C5E000008970474089704701891B2914D3FB29B2 +:10C5F00012D84189B1F5A47F21BF40F648028A4292 +:10C6000081881B2908D3FB2906D8C088B0F5A47FF0 +:10C6100022BF824201207047002070470A684260B2 +:10C6200049688160704742680A6080684860704766 +:10C6300030B50C460546FB2988BFFFDF6C7030BD66 +:10C6400086F3FFFF70B50446C2F11005281901F00A +:10C650002BFC15F0FF0108D0491EC9B280206054A0 +:10C660002046BDE8704001F096BC70BD30B505E0D5 +:10C670005B1EDBB2CC5CD55C6C40C454002BF7D1A4 +:10C6800030BD10B5002409E00B78521E44EA430384 +:10C6900000F8013B11F8013BD2B2DC09002AF3D1CA +:10C6A00010BD2DE9F0410C4601200978FF4E92B0F3 +:10C6B000154602274FF006084FF0040C71B101290E +:10C6C0001ED0022945D0032905D12978042902D199 +:10C6D00005201070002012B0BDE8F081606850B1F4 +:10C6E000CDE90106012020708DF80080606A049079 +:10C6F0001146684663E0277085F800C0566026E062 +:10C7000029780429E7D1696810222069FFF7B9FF69 +:10C710006868C07B000606D5E44A20691023103201 +:10C720000146FFF7A3FFD4E904101022FFF7A9FF89 +:10C730002069C07B000606D5DC4A606910231032F0 +:10C740000146FFF793FF277085F800C06E60032055 +:10C75000C1E729780429BED1A08910280CD9A0F1FD +:10C76000100080B2A081A1684FF010030144684618 +:10C770006A68FFF77BFF18E004D14FF010032269CD +:10C78000A16807E0C2B20DA8A168FFF75BFF62696C +:10C7900010230DA909A8FFF769FF102309A968460E +:10C7A0006A68FFF763FF0320207060680590CDF88A +:10C7B00018D08DF81080606A0890294604A8F3F715 +:10C7C000DDFD88E72DE9F04107460D4601200B7895 +:10C7D00006213BB1012B04D11378052B01D1117037 +:10C7E000002079E76C69012620226170E8686060AA +:10C7F000686A6062A168287C0870A681A068A96840 +:10C80000401C01F051FBA08920222030A081A068AB +:10C810006968213001F048FBA08921462030A081C1 +:10C820002E703846BDE8F041F3F7BFBD2DE9F05F4B +:10C830000D46834601200978174606464FF0060844 +:10C84000D1B1DFF868A24FF00009AAF1080A012966 +:10C8500023D002297ED003290CD13978052909D1AA +:10C8600079681022E86901F01FFB0720387018353D +:10C8700000207D60BDE8F09F2C6A8C48202284F85F +:10C880000180203060602020A081686A6062696851 +:10C89000A06801F009FB2E70D4E039780529E9D1B0 +:10C8A0002C6A84F80180686A606251681022E86925 +:10C8B00001F0FAFAE8696060A0684F4680F80090DD +:10C8C000A681A0684670A089401C80B2A081A168A2 +:10C8D0000844696951F8012F026089888180A08924 +:10C8E000801D80B2A0816969A2680978C1F3400106 +:10C8F0001154A089401C80B2A081A1680844296914 +:10C9000051F8012F026089888180A089801D80B242 +:10C91000A0812969A2680978C1F340011154A08956 +:10C920001022401C80B2A081A1680844E96801F08F +:10C93000BBFAA0891022103080B2A081A1680844FF +:10C94000A96801F0B1FAA089103080B2A081A16875 +:10C95000014400E00DE0DAF804000860A089001D41 +:10C9600080B2A081A1680F54A089401CA081022040 +:10C9700067E03978052992D151681022A86901F041 +:10C9800093FA2C6A84F80180E8696060686A6062E2 +:10C99000A16881F80090A681A0684670A089401C1B +:10C9A00080B2A081A1680844696951F8012F026032 +:10C9B00089888180A089801D80B2A0816969A26870 +:10C9C0000978C1F340011154A089401C80B2A081B4 +:10C9D000A1680844296951F8012F02608988818083 +:10C9E000A089801D80B2A0812969A2680978C1F35D +:10C9F00040011154A0891022401C80B2A081A1687E +:10CA00000844E96801F050FAA0891022103080B281 +:10CA1000A081A1680844A96801F046FAA0891030F5 +:10CA200080B2A081A1680144DAF804000860A089FE +:10CA3000001D80B2A081A1680E54A089401CA08175 +:10CA40000320287021465846BDE8F05FF3F7ADBCDF +:10CA500070B50D4606460978012041B1012905D17E +:10CA60001178052902D108201070002070BD2C6AB1 +:10CA70000620607069686160696A6162EA69A1683C +:10CA800052F8013F0B6092888A80A081E869A16812 +:10CA90000078C0F340008871A089401C80B2A0815A +:10CAA000A1680844A96951F8012F01E014E60100CA +:10CAB000026089888180A089801D80B2A081A969D7 +:10CAC000A2680978C1F340011154A089401C80B2CA +:10CAD000A081A168084469690A8802808978817008 +:10CAE000A0891022C01C80B2A081A16808442969D5 +:10CAF00001F0DAF9A0891022103080B2A081A1687B +:10CB00000844E96801F0D0F9A0891022103080B201 +:10CB1000A081A1680844A96801F0C6F9A08921464E +:10CB20001030A081012028703046BDE87040F3F736 +:10CB30003CBC70B50D4606460978012059B1012963 +:10CB400008D11178052905D10920107050680068B6 +:10CB50005060002070BD6C69062010226070E8688B +:10CB60006060686A60622969A06801F09DF9102020 +:10CB7000A081A06820221030A96801F095F9A08951 +:10CB80002022203080B2A081A1680844696801F0A9 +:10CB90008BF9A08921462030A081012028703046E1 +:10CBA000BDE87040F3F701BC70B50C460120097870 +:10CBB0008EB01546062659B1012934D0022905D177 +:10CBC0002978042902D10A20107000200EB070BD0F +:10CBD000606910236A460078C0F340008DF80000B9 +:10CBE000A0690078C0F340008DF80100E06801689A +:10CBF000CDF802108188ADF8061080798DF8080014 +:10CC000020690168CDF809108188ADF80D10807990 +:10CC10008DF80F006068059009A80690A168FFF7DD +:10CC200025FD01201DE029780429CFD1A06910231A +:10CC30006A4650F8011F00918088ADF804006069D1 +:10CC400050F8011FCDF806108088ADF80A000020CA +:10CC500003906068059009A806906968FFF706FDD3 +:10CC6000022020708DF81060606A0890294604A8A0 +:10CC7000F3F784FBAAE700B50B7889B001204BB12C +:10CC8000012B05D11178042902D10B20107000204E +:10CC900009B000BD4868019005A80290C868036803 +:10CCA0000593406806908868036807934068089079 +:10CCB0000120087006208DF80000486A0490114693 +:10CCC0006846F3F75BFBE3E700B50B7889B001201A +:10CCD00043B1012BDCD111780429D9D10C2010707B +:10CCE0000020D5E74868019005A80290886803688D +:10CCF0000593406806900020079008900120087076 +:10CD000006208DF80000486A049011466846F3F743 +:10CD100035FBBDE700B50B7889B0012043B1012B8D +:10CD2000B6D111780429B3D10D2010700020AFE7DF +:10CD300048680590CDF818D088680088ADF80000E4 +:10CD4000C8680088ADF802000020019002900390AE +:10CD50000120087006208DF81000486A08901146DE +:10CD600004A8F3F70BFB93E730B403460C780120DB +:10CD70005CB1012C15D0022C05D111780C2902D1FF +:10CD80000E201070002030BC704701200870C86869 +:10CD9000042242704A6842600B4A8260921EC2605E +:10CDA0000BE014780D2CEED102200870C868032423 +:10CDB0004470526842608A688260496A41620146F2 +:10CDC00030BC1846F3F7F1BA0EE6010070B41D78D6 +:10CDD000039C4FF0000CAA4204BF70BC70478E5CED +:10CDE000864208BF4FF0010C02D0BCF1000F05D005 +:10CDF000561CA64208BF00268E5D8E54561CA642C5 +:10CE00000CBF0022521CD2B2AA42E8D1BCF1000FE2 +:10CE100004BF70BC70471878411E19703CBF601E7B +:10CE2000187070BC704700002DE9F0410C461149A4 +:10CE30000D68104A104908321160A0F120012A291A +:10CE400001D301200CE03E2810D040CC0B4F94E8D9 +:10CE50000E0007EB8000241F50F8807C3046B84756 +:10CE600020600448001D0560BDE8F0812046E4F71D +:10CE7000A7F9F5E7100502400100000144E60100B2 +:10CE800010B5524800F04EFA00B1FFDF4F48401C89 +:10CE900000F048FA002800D0FFDF10BD2DE9F14F67 +:10CEA0004B4ED6F800B00127484800F043FADFF8AF +:10CEB0001C8128B95FF0000708F1010000F050FA6A +:10CEC000444C00254FF0030901206060C4F8005174 +:10CED000C4F80451009931602060DFF8FCA018E02C +:10CEE000DAF80000C00614D50E2000F064F8EFF365 +:10CEF000108010F0010072B600D00120C4F8049335 +:10CF0000D4F8001119B9D4F8041101B920BF00B93F +:10CF100062B6D4F8000118B9D4F804010028DFD0B3 +:10CF2000D4F804010028CFD137B1C6F800B008F119 +:10CF3000010000F0FFF911E008F1010000F0FAF93A +:10CF40000028B9D1C4F80893C4F80451C4F80051BA +:10CF50000E2000F030F81D4800F002FA0020BDE875 +:10CF6000F88F2DE9F0438DB00D46064600240DF1F3 +:10CF700010090DF1200817E004EB4407102255F8C2 +:10CF80002710684600F090FF05EB870710224846FF +:10CF9000796800F089FF6846FFF780FF102241465C +:10CFA000B86800F081FF641CB442E5DB0DB00020DE +:10CFB000BDE8F08372E700F01F02012191404009B3 +:10CFC000800000F1E020C0F8801270476A01002064 +:10CFD00004E5004000E0004010ED00E0C7480021FB +:10CFE00001708170704770B5C54D01232B60C54B32 +:10CFF0001C68002CFCD0002407E00E6806601E6848 +:10D00000002EFCD0001D091D641C9442F5D30020A5 +:10D01000286018680028FCD070BD70B5B74E044673 +:10D02000B94D3078022800D0FFDFAC4200D3FFDFDB +:10D030007169B648012903D847F23052944201DDA4 +:10D0400003224271491C7161291BC160AF4970788C +:10D05000BDE87040F3F759BE70B5A84C0D46617835 +:10D06000884200D0FFDFA84E092D4FD2DFE805F03F +:10D070004E0522314E4E4E4E3C002078022800D004 +:10D08000FFDF03202070A078022802D0012804D0FE +:10D0900008E0A06800F01AFC04E004F1080007C8EA +:10D0A000FFF7A1FF052020700020A070BDE87040B0 +:10D0B000F3F7C9BBF3F798FC01466068F4F7BDFDD0 +:10D0C000B04202D2616902290BD30320F4F7DAFFE0 +:10D0D00012E0F3F789FC01466068F4F7AEFDB04258 +:10D0E000F3D2BDE8704098E7207802280AD00528DE +:10D0F00006D0FFDF04202070BDE8704000F0F4B8D7 +:10D10000022000E00320F4F7BDFFF3E7FFDF70BD6E +:10D1100070B50546F3F768FC784C6060207801280C +:10D1200000D0FFDF79490220087000220A718D606B +:10D1300004224A71744ACA6020706078BDE8704069 +:10D14000F3F7E3BD10B56D4CA07808B9207808B1AD +:10D15000112010BD6E48F3F7E1FB6070607820B1DC +:10D16000012020700020606110BD032010BD024628 +:10D17000010B0120B2F5003F02D2884000F020BE32 +:10D18000B2F5802F03D22039884000F021BEB2F5DD +:10D19000C02F03D24039884000F023BEB2F5002FE3 +:10D1A00003D26039884000F025BE002070472DE989 +:10D1B000F041144600EB84070E4605463F1F00F081 +:10D1C00098FB4FF080510A69504306EB8402121F0E +:10D1D000B24201D2012200E000221CB10969B4EB85 +:10D1E000910F02D90920BDE8F0814A498D4216D33A +:10D1F000AF4214D3854205D2874203D245EA0600E6 +:10D20000800701D01020EEE78E4208D33AB92846B5 +:10D21000FFF7ADFF18B93846FFF7A9FF08B10F2097 +:10D22000E1E73D483D490068884205D02246314645 +:10D230002846FFF7D8FE10E0FFF784FF0028D2D180 +:10D240002E4801218560C0E9036481704FF4A97103 +:10D2500004FB01F01830FFF75BFF0020C3E770B557 +:10D260004FF08055044628692A49B1FBF0F084420A +:10D270000AD300F03EFBA04201D8102070BD2869FF +:10D280006043FFF774FF08B10F2070BD22482349A7 +:10D290000068884204D02869604300F017FB0CE066 +:10D2A000FFF750FF0028F0D12969144861438160DD +:10D2B000022181701A48FFF72BFF002070BD15482E +:10D2C000010B01208840401E704770B50D46044692 +:10D2D000FFF7F5FF204201D00F2070BD2946204600 +:10D2E000BDE8704000F08FBD10B5044C6078F3F7D6 +:10D2F00065FB00202070A07010BD00006C010020B4 +:10D3000004E5014000E40140105C0C002412002000 +:10D3100059D0010000F0010098000020BEBAFECAFA +:10D320007C5E010000210170084670470146002024 +:10D3300008707047EFF3108101F0010172B60278B6 +:10D34000012A01D0012200E000220123037001B96B +:10D3500062B60AB1002070474FF400507047E9E709 +:10D36000EFF3108111F0010F72B64FF0000202705E +:10D3700000D162B600207047F2E700005649096804 +:10D380000160002070475449086000207047012167 +:10D390008A0720B1012804D042F204007047916747 +:10D3A00000E0D167002070474C490120086042F23C +:10D3B0000600704708B50423484A1907103230B1F7 +:10D3C000C1F80433106840F0010010600BE01068F1 +:10D3D00020F001001060C1F808330020C1F80801F6 +:10D3E0003F4800680090002008BD3C49103140B122 +:10D3F00001280CD0022812D0032816D042F20500D2 +:10D400007047086820F01E0040F0100004E0086833 +:10D4100020F01E0040F014000860002070470868EB +:10D4200020F01E0040F01800F6E7086820F01E000B +:10D4300040F01C00F0E7294924310A6802430A60E1 +:10D4400000207047254924310A6882430A60002081 +:10D450007047224924310968016000207047012883 +:10D4600001D9072070471F4A52F8200002680A437A +:10D47000026000207047012801D907207047194A2F +:10D4800052F8200002688A43026000207047012899 +:10D4900001D907207047134A52F82000006808603D +:10D4A00000207047020010494FF0000003D0012A0D +:10D4B00001D0072070470A6070474FF0804100207C +:10D4C000C1F808014FF0E020802180F8001401210C +:10D4D000C0F8001170470000000400400005004043 +:10D4E00008010040ECE60100780500406249634B0A +:10D4F0000A6863499A42096801D1C1F310010160C9 +:10D50000002070475C495D4B0A685D49091D9A42DD +:10D5100001D1C0F310000860002070475649574BF6 +:10D520000A68574908319A4201D1C0F310000860D7 +:10D530000020704730B5504B504D1C6842F2080334 +:10D54000AC4202D0142802D203E0112801D31846BD +:10D5500030BDC3004B481844C0F81015C0F814255E +:10D56000002030BD4449454B0A6842F209019A4205 +:10D5700002D0062802D203E0042801D308467047EF +:10D58000404A012142F83010002070473A493B4B95 +:10D590000A6842F209019A4202D0062802D203E048 +:10D5A000042801D308467047364A012102EBC00027 +:10D5B00041600020704770B52F4A304E314C1568DD +:10D5C00042F2090304EB8002B54204D0062804D2DB +:10D5D000C2F8001807E0042801D3184670BDC1F353 +:10D5E0001000C2F80008002070BD70B5224A234E1A +:10D5F000244C156842F2090304EB8002B54204D0C2 +:10D60000062804D2D2F8000807E0042801D31846FF +:10D6100070BDD2F80008C0F310000860002070BD93 +:10D62000174910B50831184808601120154A002123 +:10D6300002EBC003C3F81015C3F81415401C1428DE +:10D64000F6D3002006E0042804D302EB8003C3F8DD +:10D65000001807E002EB8003D3F80048C4F310047D +:10D66000C3F80048401C0628EDD310BD0449064805 +:10D67000083108607047000098000020BEBAFECA5A +:10D6800000F5014000F001400000FEFF10B572B649 +:10D6900000F0C6F850B1E3F733FEF3F7BCF8F4F747 +:10D6A00097FCECF764FB63490020086062B6002039 +:10D6B00010BD70B50D46044672B600F0B1F810B159 +:10D6C00062B6082070BDE3F791FDE3F71BFE02464A +:10D6D000002043099B0003F1E02300F01F01D3F871 +:10D6E0000031CB40D9071DD0202803D222FA00F107 +:10D6F000C9071CD141B2002906DA01F00F0101F17E +:10D70000E02191F8141D03E001F1E02191F80014EB +:10D71000490908290BD251B1012908D0042906D0A2 +:10D72000052904D0401C6428D3D324B104E062B698 +:10D7300041F2010070BD404C2078022803D962B646 +:10D740004FF4805070BD3D49802081F8140DECF7F6 +:10D75000E5FA20780028607801D058B908E048B18F +:10D76000202807D8A078212804D8012802D003E077 +:10D77000A07808B1072070BD2E49314808603148B3 +:10D780000560E3F7BFFD2146F4F708FCF2F7F6FF6A +:10D7900000F0E6F8FFF722FC2046E3F77FFD0400E7 +:10D7A00062B603D0FFF772FF204670BD002070BD47 +:10D7B00010B5044600F034F800B1012020700020BC +:10D7C00010BD214908600020704770B50C461F4904 +:10D7D0000D681E491E4E08310E60102807D0112812 +:10D7E0000CD012280FD0132811D0012013E0D4E957 +:10D7F0000001FFF75EFF354620600DE0FFF746FFB2 +:10D800000025206008E02068FFF7D2FF03E00E4902 +:10D8100020680860002020600C48001D056070BD75 +:10D82000044807490068884201D101207047002060 +:10D830007047000098000020F4E601000BE000E0D3 +:10D84000BEBAFECA84010020040000201005024078 +:10D85000010000012DE9F04184B088460746FEF73B +:10D860007DFD05467E786A4601A94046F1F748F8F5 +:10D8700004000ED0012D1EBF032004B0BDE8F081CE +:10D8800002AA40460199F0F741FF0298B0F8030060 +:10D890000AE0022D14D1042E12D3B7F80300BDF80C +:10D8A0000020011D8A420BD3001D80B2A1198142C4 +:10D8B00038BF012008BF00209CBF04B0BDE8F08144 +:10D8C0004FF0020004B0BDE8F08100000B4A0221D5 +:10D8D00011600B490B68002BFCD0084B1B1D186016 +:10D8E00008680028FCD00020106008680028FCD0E0 +:10D8F00070474FF0805040697047000004E50140D8 +:10D9000000E4014010B54FF000040B460200204631 +:10D9100021461ED0012A04D0022A04D0032A1DD198 +:10D9200003E0012002E0022013E00320072B15D2C0 +:10D93000DFE803F0140406080A0C0E00012108E0D9 +:10D94000022106E0032104E0042102E0052100E0B9 +:10D950000621F2F7FDFF08B1204610BD0724FBE7C2 +:10D96000FE4805218170002101704170C170816005 +:10D970007047FB490A78022A06D0CA681044C8607A +:10D98000C8683238F4F705B98A6810448860886836 +:10D99000F7E70378F349F44A13B1012B0ED011E0F5 +:10D9A0000379012B00D06BB943790BB1012B09D15D +:10D9B0008368643B8B4205D2C0680EE00379012B7B +:10D9C00002D00BB10020704743790BB1012BF9D184 +:10D9D000C368643B8B42F5D280689042F2D8012044 +:10D9E00070472DE9F04704460226F3F760FB006814 +:10D9F00000B1FFDFD94D01273CB12078B0B101283B +:10DA000005D0022810D0032813D02F710CE06068D5 +:10DA1000C82807D3F4F73CF920B16068FFF7A9FFE5 +:10DA2000012603E0002601E000F0AFF93046BDE832 +:10DA3000F08728780028F7D16068FFF7AAFF002850 +:10DA4000E3D06068DFF81883007810B3A878042862 +:10DA500000D0FFDF0020474688F8000060680079AA +:10DA6000C0B30020387160684079A0B30420787199 +:10DA700060688168E868F2F7D0FFB8606068C068E5 +:10DA80003230F8600320A870B549E878F3F73DF923 +:10DA9000CAE74FF00209404688F8009061680979AA +:10DAA000D1B10021017161684979B9B10421417195 +:10DAB00061688968323181606168C968C160C06825 +:10DAC000A64C14346060F2F78FFF20606F7085F809 +:10DAD0000290A9E704E005E00321E3E70321E6E77C +:10DAE0000120BFE70320C2E72DE9F0479B4C8846A1 +:10DAF000E178884200D0FFDFDFF86092002501273F +:10DB0000974E09F11409B8F1090F76D2DFE808F051 +:10DB1000050D2A3D646A769E7E00A078032886D093 +:10DB2000A078022883D0FFDF81E7A078032803D004 +:10DB3000A078022800D0FFDF0420A0702571207893 +:10DB400000285FD1FFF715FF3078022806D0B068B3 +:10DB5000E06000F06CF92061002048E0E078F2F726 +:10DB60007AFFF5E7A078032803D0A078022800D038 +:10DB7000FFDF207878BBA078032812D1042026E0AC +:10DB80000420F4F77FFAA57051E7A078032803D0AA +:10DB9000A078022800D0FFDF2078E0B9A078032821 +:10DBA00014D0F2F721FF01464F46D9F80000F4F7F0 +:10DBB00044F80028E4DB79688142E1DB081AF06070 +:10DBC0006749E078BDE8F047F3F79FB80520F4F720 +:10DBD00059FAA7702BE724E0A078042800D0FFDFD3 +:10DBE000022004E0A078042800D0FFDF0120A16813 +:10DBF0008847FFF7F6FE05462EE027E0A0780428C8 +:10DC000000D0FFDFBDE8F04700F0BFB8A0780428DF +:10DC100005D0607810B1A078022800D0FFDF20780E +:10DC200018B1BDE8F04700F0B9B8207920B106205E +:10DC3000F4F728FA2571CCE7607828B14849E078F4 +:10DC4000F3F763F86570F2E60720C0E7FFDFEEE662 +:10DC50003DB1012D03D0FFDF022DF9D1E7E604200D +:10DC6000C5E70320C3E770B5050005D03B4CA0789D +:10DC7000052803D0112070BD102070BD3B48F2F77D +:10DC80004DFEE070E07818B1A5600020A07070BD76 +:10DC9000032070BD314810B5017809B1112010BDC5 +:10DCA000817805290CD0817801290BD0817849B180 +:10DCB000012101708178012904D0807810B103E03E +:10DCC0000F2010BD00F06AF8002010BD2DE9F041D2 +:10DCD000224E0446B07808B101280AD164B120462A +:10DCE000FFF757FE50B120781D4D48B1B07801289C +:10DCF00022D00F20BDE8F0811020FBE70720F9E7D4 +:10DD000002272F70207998B100202871607988B19E +:10DD100004206871A0683230A860E068E860E868B4 +:10DD20000E4C14346060F2F75FFE2060B77022E0A2 +:10DD30000320EAE70320ECE700202870207900B3F5 +:10DD4000002028716079F0B104206871A168F06842 +:10DD5000F2F763FEA860E068323009E08801002035 +:10DD6000341200203D860100FF1FA107E9DA0100FF +:10DD7000E8600320B0701049F078F2F7C6FF002089 +:10DD8000B8E70320DDE70320DFE70C4810B50069A2 +:10DD900000F045F8BDE81040F2F755BD10B5074C4E +:10DDA000E078F2F70BFE0820F4F76CF90520A0707C +:10DDB00000202070607010BD341200208801002007 +:10DDC0001F490968014201D00120704700207047B7 +:10DDD0001B49091D0968014201D00120704700203C +:10DDE0007047174910310968014201D0012070477E +:10DDF00000207047124914310968014201D0012006 +:10DE000070470020704710B50D4C2060201D016048 +:10DE10000B4810300260001D0360002010BD09494E +:10DE20000A6848F202139A4302430A607047054A9F +:10DE3000116848F2021301EA030099431160704728 +:10DE400000060040C80602407047704770477047A0 +:10DE500040EA010310B59B070FD1042A0DD310C867 +:10DE600008C9121F9C42F8D020BA19BA884201D9B9 +:10DE7000012010BD4FF0FF3010BD1AB1D30703D001 +:10DE8000521C07E0002010BD10F8013B11F8014BB7 +:10DE90001B1B07D110F8013B11F8014B1B1B01D1D3 +:10DEA000921EF1D1184610BD032A40F2308010F0C6 +:10DEB000030C00F0158011F8013BBCF1020F624425 +:10DEC00098BF11F801CB00F8013B38BF11F8013BB6 +:10DED000A2F1040298BF00F801CB38BF00F8013B63 +:10DEE00011F0030300F02580083AC0F0088051F8D3 +:10DEF000043B083A51F804CBA0E80810F5E7121DDE +:10DF00005CBF51F8043B40F8043BAFF30080D207FC +:10DF100024BF11F8013B11F801CB48BF11F8012BC8 +:10DF200024BF00F8013B00F801CB48BF00F8012BEB +:10DF3000704710B5203AC0F00B80B1E81850203A75 +:10DF4000A0E81850B1E81850A0E81850BFF4F5AF99 +:10DF50005FEA027C24BFB1E81850A0E8185044BF23 +:10DF600018C918C0BDE810405FEA827C24BF51F890 +:10DF7000043B40F8043B08BF7047D20728BF31F884 +:10DF8000023B48BF11F8012B28BF20F8023B48BFD5 +:10DF900000F8012B70474FF000020429C0F01280F6 +:10DFA00010F0030C00F01B80CCF1040CBCF1020F4C +:10DFB00018BF00F8012BA8BF20F8022BA1EB0C0121 +:10DFC00000F00DB85FEAC17C24BF00F8012B00F817 +:10DFD000012B48BF00F8012B70474FF0000200B53D +:10DFE000134694469646203922BFA0E80C50A0E87C +:10DFF0000C50B1F12001BFF4F7AF090728BFA0E82A +:10E000000C5048BF0CC05DF804EB890028BF40F8F5 +:10E01000042B08BF704748BF20F8022B11F0804F37 +:10E0200018BF00F8012B7047704770477047000019 +:10E03000164B1860164B1960164B1A607047FEDFBE +:10E040000420714608421BD10699134A914217DCFD +:10E05000069902394878DF2812D10878FE2808D0BE +:10E06000FF280DD14FF001004FF000020B4B1B6851 +:10E07000184741F201000099019A084B1B681847A4 +:10E0800006980599064B1B68DB681847A801002015 +:10E09000AC010020B001002000F00100840100204C +:10E0A00004000020184819497047FFF7FBFFE3F709 +:10E0B00075F800BD4FF4805015490968884203D1B6 +:10E0C000144A13605B68184700BD000020BFFDE7DD +:10E0D0004FF480500E490968884210D10E4B1868E1 +:10E0E0004FF0FF318842F1D080F308884FF02021B3 +:10E0F000884204DD0948026802210A430260084898 +:10E10000804708488047FFDF48120020481200205F +:10E11000000000200400002000F001002405004061 +:10E12000152A0100B5E0010004207146084202D022 +:10E13000EFF3098101E0EFF3088188690238007884 +:10E14000102813DB20280FDB2B280BDB0A4A126870 +:10E150000A4B9A4203D1602804DB094A1047022087 +:10E1600008607047074A1047074A1047074A126875 +:10E170002C3212681047000098000020BEBAFECA78 +:10E180000913000029CE0100CBD7010004000020B4 +:10E190000E4B0F4908470F4B0D4908470E4B0C49D2 +:10E1A00008470E4B0A4908470D4B094908470D4BD4 +:10E1B000074908470C4B064908470C4B04490847D8 +:10E1C0000B4B034908470B4B01490847AD9B000027 +:10E1D000619F0000AD2E0000D59700005997000008 +:10E1E000532F000025130000932E0000CF9800004D +:10E1F000E99E0000A91100000021016081807047A4 +:10E20000002101604160017270470A6802600B7969 +:10E210000371704715850000C3860000E984000083 +:10E22000B9870000DD870000178800004B880000D8 +:10E2300085880000B5880000078900009112000061 +:10E24000911200002F2300006D2300008D23000099 +:10E25000432400007F250000512600008126000095 +:10E260004B2700003D1F000083290000652A0000A5 +:10E27000852A00008B320000AF320000DF31000041 +:10E2800033320000E1320000753300004B460000DD +:10E290000F480000B74B0000D34C0000574D000062 +:10E2A000F54D0000674E0000834F00005150000004 +:10E2B000CF5000009F2A0000A52A0000AF2A0000CE +:10E2C000F71E00007F2B0000C91E0000D52C0000A7 +:10E2D00091120000911200009112000091120000B2 +:10E2E00091120000215C0000A75C0000C35C0000EC +:10E2F000DF5C00006D5E0000095D0000135D000042 +:10E30000555D0000775D0000535E0000955E0000E3 +:10E31000911200002D7500004D7500004F75000032 +:10E3200089750000B7750000B37600005D770000C6 +:10E3300071770000BF770000A57800005B7A0000CD +:10E340009B7B00005B660000B37B00009112000025 +:10E350009112000025930000639300008593000054 +:10E36000100110013A0200001A0200040506000024 +:10E37000FFFFFFFF0000FFFF298F0000A11B00002F +:10E38000AB580000A5660000E77F00000000000019 +:10E39000557D0000698000004980000000000000F9 +:10E3A00000000000CDC700000000000000000000D9 +:10E3B0000000000013D80000000000000000000072 +:10E3C0000000000029C80000ADC8000000000000E7 +:10E3D000000000006BCC000031CA00006FD10000CB +:10E3E000000000000000000003DD0000000000004D +:10E3F000000000000000000011CD0000E1D8000086 +:10E4000000000000B1D9000025DA00000000000083 +:10E410000BD20000BDD2000000000000EBD90000CC +:10E420009DD30000ADD500001FD6000013D700001B +:10E43000C5CE0000A9D7000000000000DDCD00001F +:10E44000000000001DCB000093CA000041D800006E +:10E4500081DB0000EFDB000000000000FBC80000D3 +:10E460003DC900005BC800000000000077C9000043 +:10E4700000000000AFC90000E5C9000047DC000053 +:10E4800000000000BBCF0000E9D0000087D00000F2 +:10E4900027D10000CFCC0000BFCA000097CC0000FD +:10E4A0004BDE000033CC000051DD00000000000016 +:10E4B000AFDC000051CB00006BCA0000CBDD0000D8 +:10E4C0007FDF000051CD000035DF000055CF000098 +:10E4D000A9DE0000FBDE0000ED3C0000ED3C00008A +:10E4E000032300008D8E0000276900007B58000088 +:10E4F0000000000031960100313D0000313D000078 +:10E500002D230000E78E00009F6900008558000061 +:10E51000C183010057960100BC01BC013E002C00E4 +:10E520005400140018016001010000000100000007 +:10E530000001020304000F1011120000001300007C +:10E54000A9CB010077CC0100C9CC010015CD010099 +:10E5500069CD0100A3C60100C5C701002DC8010097 +:10E5600051CA010033CB010077F0000051010100D6 +:10E5700000000000060000000A0000003200000059 +:10E5800073000000B40000007B7201000B64010006 +:10E59000A77201000D6401007B43010033AA010052 +:10E5A0007556010033AA0100E54301007BAB010071 +:10E5B0001D4F01007BAB0100F34201000BAB0100DA +:10E5C000575501000BAB0100555555D6BE898E003D +:10E5D00000006606F30C801300000A033B066C097A +:10E5E00000005604D308500D555555252627D6BE94 +:10E5F000898EF401FA00960064004B0032001E0080 +:10E6000014000000210000000000000000000300D2 +:10E61000656C746200000000000000000000000053 +:10E620000000000087000000000000000000000063 +:10E6300000000000BE83605ADB0B376038A5F5AAE6 +:10E640009183886CEDD4010005D501001DD5010032 +:10E6500035D5010065D501008DD50100B7D5010084 +:10E66000EBD501005FD20100AFD10100CBD2010098 +:10E6700025D3010035D3010061D301003B22010005 +:10E6800043220100512201008FD30100A9D30100D0 +:10E690007DD3010087D30100B5D30100EBD3010086 +:10E6A00037D4010045D4010053D401005FD40100E8 +:10E6B00077D401008FD40100A5D401000000000030 +:10E6C00073990000C9990000DF99000005D9010085 +:10E6D0009DCE010063CF010067DC010095DC0100E5 +:10E6E000CDDC010031200100152501001C05004092 +:10E6F000200500400010020018E70100080000207B +:10E70000AC0100004411000040E70100B40100200A +:10E710009410000080110000013F021A173601001A +:10E720000100683720FB349B5F80041F80001002CB +:10E730002C01337F0102A029024410E431E00100E2 +:00000001FF diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/toolchain/armgcc/armgcc_s132v3_nrf52832_xxaa.ld nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/toolchain/armgcc/armgcc_s132v3_nrf52832_xxaa.ld new file mode 100644 index 0000000..03585db --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/toolchain/armgcc/armgcc_s132v3_nrf52832_xxaa.ld @@ -0,0 +1,34 @@ +/* Linker script to configure memory regions. */ + +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x1f000, LENGTH = 0x61000 + RAM (rwx) : ORIGIN = 0x200019c0, LENGTH = 0xe640 +} + +SECTIONS +{ +} + +SECTIONS +{ + . = ALIGN(4); + .mem_section_dummy_ram : + { + } + +} INSERT AFTER .data; + +SECTIONS +{ + .mem_section_dummy_rom : + { + } + +} INSERT AFTER .text + + +INCLUDE "nrf_common.ld" diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/toolchain/iar/iar_s132v3_nrf52832_xxaa.icf nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/toolchain/iar/iar_s132v3_nrf52832_xxaa.icf new file mode 100644 index 0000000..b5eb033 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v3/toolchain/iar/iar_s132v3_nrf52832_xxaa.icf @@ -0,0 +1,37 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x1f000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x1f000; +define symbol __ICFEDIT_region_ROM_end__ = 0x7ffff; +define symbol __ICFEDIT_region_RAM_start__ = 0x200019c0; +define symbol __ICFEDIT_region_RAM_end__ = 0x2000ffff; +export symbol __ICFEDIT_region_RAM_start__; +export symbol __ICFEDIT_region_RAM_end__; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = ; +define symbol __ICFEDIT_size_heap__ = ; +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; +define block RO_END with alignment = 8, size = 0 { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +keep { section .intvec }; +place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; +place in ROM_region { readonly, + block RO_END }; +place in RAM_region { readwrite, + block CSTACK, + block HEAP }; + diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble.h new file mode 100644 index 0000000..ed16f6d --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble.h @@ -0,0 +1,628 @@ +/* + * 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. + */ + +/** + @addtogroup BLE_COMMON BLE SoftDevice Common + @{ + @defgroup ble_api Events, type definitions and API calls + @{ + + @brief Module independent events, type definitions and API calls for the BLE SoftDevice. + + */ + +#ifndef BLE_H__ +#define BLE_H__ + +#include +#include "nrf_svc.h" +#include "nrf_error.h" +#include "ble_hci.h" +#include "ble_ranges.h" +#include "ble_types.h" +#include "ble_err.h" +#include "ble_gap.h" +#include "ble_l2cap.h" +#include "ble_gatt.h" +#include "ble_gattc.h" +#include "ble_gatts.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup BLE_COMMON_ENUMERATIONS Enumerations + * @{ */ + +/** + * @brief Common API SVC numbers. + */ +enum BLE_COMMON_SVCS +{ + SD_BLE_ENABLE = BLE_SVC_BASE, /**< Enable and initialize the BLE stack */ + SD_BLE_EVT_GET, /**< Get an event from the pending events queue. */ + SD_BLE_UUID_VS_ADD, /**< Add a Vendor Specific UUID. */ + SD_BLE_UUID_DECODE, /**< Decode UUID bytes. */ + SD_BLE_UUID_ENCODE, /**< Encode UUID bytes. */ + SD_BLE_VERSION_GET, /**< Get the local version information (company ID, Link Layer Version, Link Layer Subversion). */ + SD_BLE_USER_MEM_REPLY, /**< User Memory Reply. */ + SD_BLE_OPT_SET, /**< Set a BLE option. */ + SD_BLE_OPT_GET, /**< Get a BLE option. */ + SD_BLE_CFG_SET, /**< Add a configuration to the BLE stack. */ +}; + +/** + * @brief BLE Module Independent Event IDs. + */ +enum BLE_COMMON_EVTS +{ + BLE_EVT_USER_MEM_REQUEST = BLE_EVT_BASE + 0, /**< User Memory request. @ref ble_evt_user_mem_request_t */ + BLE_EVT_USER_MEM_RELEASE = BLE_EVT_BASE + 1, /**< User Memory release. @ref ble_evt_user_mem_release_t */ +}; + +/**@brief BLE Connection Configuration IDs. + * + * IDs that uniquely identify a connection configuration. + */ +enum BLE_CONN_CFGS +{ + BLE_CONN_CFG_GAP = BLE_CONN_CFG_BASE + 0, /**< BLE GAP specific connection configuration. */ + BLE_CONN_CFG_GATTC = BLE_CONN_CFG_BASE + 1, /**< BLE GATTC specific connection configuration. */ + BLE_CONN_CFG_GATTS = BLE_CONN_CFG_BASE + 2, /**< BLE GATTS specific connection configuration. */ + BLE_CONN_CFG_GATT = BLE_CONN_CFG_BASE + 3, /**< BLE GATT specific connection configuration. */ + BLE_CONN_CFG_L2CAP = BLE_CONN_CFG_BASE + 4, /**< BLE L2CAP specific connection configuration. */ +}; + +/**@brief BLE Common Configuration IDs. + * + * IDs that uniquely identify a common configuration. + */ +enum BLE_COMMON_CFGS +{ + BLE_COMMON_CFG_VS_UUID = BLE_CFG_BASE, /**< Vendor specific UUID configuration */ +}; + +/**@brief Common Option IDs. + * IDs that uniquely identify a common option. + */ +enum BLE_COMMON_OPTS +{ + BLE_COMMON_OPT_PA_LNA = BLE_OPT_BASE + 0, /**< PA and LNA options */ + BLE_COMMON_OPT_CONN_EVT_EXT = BLE_OPT_BASE + 1, /**< Extended connection events option */ +}; + +/** @} */ + +/** @addtogroup BLE_COMMON_DEFINES Defines + * @{ */ + +/** @brief Required pointer alignment for BLE Events. +*/ +#define BLE_EVT_PTR_ALIGNMENT 4 + +/** @brief Leaves the maximum of the two arguments. +*/ +#define BLE_MAX(a, b) ((a) < (b) ? (b) : (a)) + +/** @brief Maximum possible length for BLE Events. + * @note The highest value used for @ref ble_gatt_conn_cfg_t::att_mtu in any connection configuration shall be used as a parameter. + * If that value has not been configured for any connections then @ref BLE_GATT_ATT_MTU_DEFAULT must be used instead. +*/ +#define BLE_EVT_LEN_MAX(ATT_MTU) ( \ + BLE_MAX( \ + sizeof(ble_evt_t), \ + offsetof(ble_evt_t, evt.gattc_evt.params.prim_srvc_disc_rsp.services) + ((ATT_MTU) - 1) / 4 * sizeof(ble_gattc_service_t) \ + ) \ +) + +/** @defgroup BLE_USER_MEM_TYPES User Memory Types + * @{ */ +#define BLE_USER_MEM_TYPE_INVALID 0x00 /**< Invalid User Memory Types. */ +#define BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES 0x01 /**< User Memory for GATTS queued writes. */ +/** @} */ + +/** @defgroup BLE_UUID_VS_COUNTS Vendor Specific UUID counts + * @{ + */ +#define BLE_UUID_VS_COUNT_DEFAULT 10 /**< Default VS UUID count. */ +#define BLE_UUID_VS_COUNT_MAX 254 /**< Maximum VS UUID count. */ +/** @} */ + +/** @defgroup BLE_COMMON_CFG_DEFAULTS Configuration defaults. + * @{ + */ +#define BLE_CONN_CFG_TAG_DEFAULT 0 /**< Default configuration tag, SoftDevice default connection configuration. */ + +/** @} */ + +/** @} */ + +/** @addtogroup BLE_COMMON_STRUCTURES Structures + * @{ */ + +/**@brief User Memory Block. */ +typedef struct +{ + uint8_t *p_mem; /**< Pointer to the start of the user memory block. */ + uint16_t len; /**< Length in bytes of the user memory block. */ +} ble_user_mem_block_t; + +/**@brief Event structure for @ref BLE_EVT_USER_MEM_REQUEST. */ +typedef struct +{ + uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ +} ble_evt_user_mem_request_t; + +/**@brief Event structure for @ref BLE_EVT_USER_MEM_RELEASE. */ +typedef struct +{ + uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ + ble_user_mem_block_t mem_block; /**< User memory block */ +} ble_evt_user_mem_release_t; + +/**@brief Event structure for events not associated with a specific function module. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which this event occurred. */ + union + { + ble_evt_user_mem_request_t user_mem_request; /**< User Memory Request Event Parameters. */ + ble_evt_user_mem_release_t user_mem_release; /**< User Memory Release Event Parameters. */ + } params; /**< Event parameter union. */ +} ble_common_evt_t; + +/**@brief BLE Event header. */ +typedef struct +{ + uint16_t evt_id; /**< Value from a BLE__EVT series. */ + uint16_t evt_len; /**< Length in octets including this header. */ +} ble_evt_hdr_t; + +/**@brief Common BLE Event type, wrapping the module specific event reports. */ +typedef struct +{ + ble_evt_hdr_t header; /**< Event header. */ + union + { + ble_common_evt_t common_evt; /**< Common Event, evt_id in BLE_EVT_* series. */ + ble_gap_evt_t gap_evt; /**< GAP originated event, evt_id in BLE_GAP_EVT_* series. */ + ble_gattc_evt_t gattc_evt; /**< GATT client originated event, evt_id in BLE_GATTC_EVT* series. */ + ble_gatts_evt_t gatts_evt; /**< GATT server originated event, evt_id in BLE_GATTS_EVT* series. */ + ble_l2cap_evt_t l2cap_evt; /**< L2CAP originated event, evt_id in BLE_L2CAP_EVT* series. */ + } evt; /**< Event union. */ +} ble_evt_t; + + +/** + * @brief Version Information. + */ +typedef struct +{ + uint8_t version_number; /**< Link Layer Version number. See https://www.bluetooth.org/en-us/specification/assigned-numbers/link-layer for assigned values. */ + uint16_t company_id; /**< Company ID, Nordic Semiconductor's company ID is 89 (0x0059) (https://www.bluetooth.org/apps/content/Default.aspx?doc_id=49708). */ + uint16_t subversion_number; /**< Link Layer Sub Version number, corresponds to the SoftDevice Config ID or Firmware ID (FWID). */ +} ble_version_t; + +/** + * @brief Configuration parameters for the PA and LNA. + */ +typedef struct +{ + uint8_t enable :1; /**< Enable toggling for this amplifier */ + uint8_t active_high :1; /**< Set the pin to be active high */ + uint8_t gpio_pin :6; /**< The GPIO pin to toggle for this amplifier */ +} ble_pa_lna_cfg_t; + +/** + * @brief PA & LNA GPIO toggle configuration + * + * This option configures the SoftDevice to toggle pins when the radio is active for use with a power amplifier and/or + * a low noise amplifier. + * + * Toggling the pins is achieved by using two PPI channels and a GPIOTE channel. The hardware channel IDs are provided + * by the application and should be regarded as reserved as long as any PA/LNA toggling is enabled. + * + * @note @ref sd_ble_opt_get is not supported for this option. + * @note Setting this option while the radio is in use (i.e. any of the roles are active) may have undefined consequences + * and must be avoided by the application. + */ +typedef struct +{ + ble_pa_lna_cfg_t pa_cfg; /**< Power Amplifier configuration */ + ble_pa_lna_cfg_t lna_cfg; /**< Low Noise Amplifier configuration */ + + uint8_t ppi_ch_id_set; /**< PPI channel used for radio pin setting */ + uint8_t ppi_ch_id_clr; /**< PPI channel used for radio pin clearing */ + uint8_t gpiote_ch_id; /**< GPIOTE channel used for radio pin toggling */ +} ble_common_opt_pa_lna_t; + +/** + * @brief Configuration of extended BLE connection events. + * + * When enabled the SoftDevice will dynamically extend the connection event when possible. + * + * The connection event length is controlled by the connection configuration as set by @ref ble_gap_conn_cfg_t::event_length. + * The connection event can be extended if there is time to send another packet pair before the start of the next connection interval, + * and if there are no conflicts with other BLE roles requesting radio time. + * + * @note @ref sd_ble_opt_get is not supported for this option. + */ +typedef struct +{ + uint8_t enable : 1; /**< Enable extended BLE connection events, disabled by default. */ +} ble_common_opt_conn_evt_ext_t; + +/**@brief Option structure for common options. */ +typedef union +{ + ble_common_opt_pa_lna_t pa_lna; /**< Parameters for controlling PA and LNA pin toggling. */ + ble_common_opt_conn_evt_ext_t conn_evt_ext; /**< Parameters for enabling extended connection events. */ +} ble_common_opt_t; + +/**@brief Common BLE Option type, wrapping the module specific options. */ +typedef union +{ + ble_common_opt_t common_opt; /**< COMMON options, opt_id in @ref BLE_COMMON_OPTS series. */ + ble_gap_opt_t gap_opt; /**< GAP option, opt_id in @ref BLE_GAP_OPTS series. */ +} ble_opt_t; + +/**@brief BLE connection configuration type, wrapping the module specific configurations, set with + * @ref sd_ble_cfg_set. + * + * @note Connection configurations don't have to be set. + * In the case that no configurations has been set, or fewer connection configurations has been set than enabled connections, + * the default connection configuration will be automatically added for the remaining connections. + * When creating connections with the default configuration, @ref BLE_CONN_CFG_TAG_DEFAULT should be used in + * place of @ref ble_conn_cfg_t::conn_cfg_tag. + * + * @sa sd_ble_gap_adv_start() + * @sa sd_ble_gap_connect() + * + * @mscs + * @mmsc{@ref BLE_CONN_CFG} + * @endmscs + + */ +typedef struct +{ + uint8_t conn_cfg_tag; /**< The application chosen tag it can use with the + @ref sd_ble_gap_adv_start() and @ref sd_ble_gap_connect() calls + to select this configuration when creating a connection. + Must be different for all connection configurations added and not @ref BLE_CONN_CFG_TAG_DEFAULT. */ + union { + ble_gap_conn_cfg_t gap_conn_cfg; /**< GAP connection configuration, cfg_id is @ref BLE_CONN_CFG_GAP. */ + ble_gattc_conn_cfg_t gattc_conn_cfg; /**< GATTC connection configuration, cfg_id is @ref BLE_CONN_CFG_GATTC. */ + ble_gatts_conn_cfg_t gatts_conn_cfg; /**< GATTS connection configuration, cfg_id is @ref BLE_CONN_CFG_GATTS. */ + ble_gatt_conn_cfg_t gatt_conn_cfg; /**< GATT connection configuration, cfg_id is @ref BLE_CONN_CFG_GATT. */ + ble_l2cap_conn_cfg_t l2cap_conn_cfg; /**< L2CAP connection configuration, cfg_id is @ref BLE_CONN_CFG_L2CAP. */ + } params; /**< Connection configuration union. */ +} ble_conn_cfg_t; + +/** + * @brief Configuration of Vendor Specific UUIDs, set with @ref sd_ble_cfg_set. + * + * @retval ::NRF_ERROR_INVALID_PARAM Too many UUIDs configured. + */ +typedef struct +{ + uint8_t vs_uuid_count; /**< Number of 128-bit Vendor Specific UUID bases to allocate memory for. + Default value is @ref BLE_UUID_VS_COUNT_DEFAULT. Maximum value is + @ref BLE_UUID_VS_COUNT_MAX. */ +} ble_common_cfg_vs_uuid_t; + +/**@brief Common BLE Configuration type, wrapping the common configurations. */ +typedef union +{ + ble_common_cfg_vs_uuid_t vs_uuid_cfg; /**< Vendor specific UUID configuration, cfg_id is @ref BLE_COMMON_CFG_VS_UUID. */ +} ble_common_cfg_t; + +/**@brief BLE Configuration type, wrapping the module specific configurations. */ +typedef union +{ + ble_conn_cfg_t conn_cfg; /**< Connection specific configurations, cfg_id in @ref BLE_CONN_CFGS series. */ + ble_common_cfg_t common_cfg; /**< Global common configurations, cfg_id in @ref BLE_COMMON_CFGS series. */ + ble_gap_cfg_t gap_cfg; /**< Global GAP configurations, cfg_id in @ref BLE_GAP_CFGS series. */ + ble_gatts_cfg_t gatts_cfg; /**< Global GATTS configuration, cfg_id in @ref BLE_GATTS_CFGS series. */ +} ble_cfg_t; + +/** @} */ + +/** @addtogroup BLE_COMMON_FUNCTIONS Functions + * @{ */ + +/**@brief Enable the BLE stack + * + * @param[in, out] p_app_ram_base Pointer to a variable containing the start address of the + * application RAM region (APP_RAM_BASE). On return, this will + * contain the minimum start address of the application RAM region + * required by the SoftDevice for this configuration. + * + * @note The memory requirement for a specific configuration will not increase between SoftDevices + * with the same major version number. + * + * @note The value of *p_app_ram_base when the app has done no custom configuration of the + * SoftDevice, i.e. the app has not called @ref sd_ble_cfg_set before @ref sd_ble_enable, can + * be found in the release notes. + * + * @note At runtime the IC's RAM is split into 2 regions: The SoftDevice RAM region is located + * between 0x20000000 and APP_RAM_BASE-1 and the application's RAM region is located between + * APP_RAM_BASE and the start of the call stack. + * + * @details This call initializes the BLE stack, no BLE related function other than @ref + * sd_ble_cfg_set can be called before this one. + * + * @mscs + * @mmsc{@ref BLE_COMMON_ENABLE} + * @endmscs + * + * @retval ::NRF_SUCCESS The BLE stack has been initialized successfully. + * @retval ::NRF_ERROR_INVALID_STATE The BLE stack had already been initialized and cannot be reinitialized. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. + * @retval ::NRF_ERROR_NO_MEM The amount of memory assigned to the SoftDevice by *p_app_ram_base is not + * large enough to fit this configuration's memory requirement. Check *p_app_ram_base + * and set the start address of the application RAM region accordingly. + */ +SVCALL(SD_BLE_ENABLE, uint32_t, sd_ble_enable(uint32_t * p_app_ram_base)); + +/**@brief Add configurations for the BLE stack + * + * @param[in] cfg_id Config ID, see @ref BLE_CONN_CFGS, @ref BLE_COMMON_CFGS, @ref + * BLE_GAP_CFGS or @ref BLE_GATTS_CFGS. + * @param[in] p_cfg Pointer to a ble_cfg_t structure containing the configuration value. + * @param[in] app_ram_base The start address of the application RAM region (APP_RAM_BASE). + * See @ref sd_ble_enable for details about APP_RAM_BASE. + * + * @note The memory requirement for a specific configuration will not increase between SoftDevices + * with the same major version number. + * + * @note If a configuration is set more than once, the last one set is the one that takes effect on + * @ref sd_ble_enable. + * + * @note Any part of the BLE stack that is NOT configured with @ref sd_ble_cfg_set will have default + * configuration. + * + * @note @ref sd_ble_cfg_set may be called at any time when the SoftDevice is enabled (see @ref + * sd_softdevice_enable) while the BLE part of the SoftDevice is not enabled (see @ref + * sd_ble_enable). + * + * @note Error codes for the configurations are described in the configuration structs. + * + * @mscs + * @mmsc{@ref BLE_COMMON_ENABLE} + * @endmscs + * + * @retval ::NRF_SUCCESS The configuration has been added successfully. + * @retval ::NRF_ERROR_INVALID_STATE The BLE stack had already been initialized. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid cfg_id supplied. + * @retval ::NRF_ERROR_NO_MEM The amount of memory assigned to the SoftDevice by app_ram_base is not + * large enough to fit this configuration's memory requirement. + */ +SVCALL(SD_BLE_CFG_SET, uint32_t, sd_ble_cfg_set(uint32_t cfg_id, ble_cfg_t const * p_cfg, uint32_t app_ram_base)); + +/**@brief Get an event from the pending events queue. + * + * @param[out] p_dest Pointer to buffer to be filled in with an event, or NULL to retrieve the event length. + * This buffer must be aligned to the extend defined by @ref BLE_EVT_PTR_ALIGNMENT. + * The buffer should be interpreted as a @ref ble_evt_t struct. + * @param[in, out] p_len Pointer the length of the buffer, on return it is filled with the event length. + * + * @details This call allows the application to pull a BLE event from the BLE stack. The application is signaled that + * an event is available from the BLE stack by the triggering of the SD_EVT_IRQn interrupt. + * The application is free to choose whether to call this function from thread mode (main context) or directly from the + * Interrupt Service Routine that maps to SD_EVT_IRQn. In any case however, and because the BLE stack runs at a higher + * priority than the application, this function should be called in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) + * every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the BLE stack. Failure to do so + * could potentially leave events in the internal queue without the application being aware of this fact. + * + * Sizing the p_dest buffer is equally important, since the application needs to provide all the memory necessary for the event to + * be copied into application memory. If the buffer provided is not large enough to fit the entire contents of the event, + * @ref NRF_ERROR_DATA_SIZE will be returned and the application can then call again with a larger buffer size. + * The maximum possible event length is defined by @ref BLE_EVT_LEN_MAX. The application may also "peek" the event length + * by providing p_dest as a NULL pointer and inspecting the value of *p_len upon return: + * + * \code + * uint16_t len; + * errcode = sd_ble_evt_get(NULL, &len); + * \endcode + * + * @mscs + * @mmsc{@ref BLE_COMMON_IRQ_EVT_MSC} + * @mmsc{@ref BLE_COMMON_THREAD_EVT_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Event pulled and stored into the supplied buffer. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. + * @retval ::NRF_ERROR_NOT_FOUND No events ready to be pulled. + * @retval ::NRF_ERROR_DATA_SIZE Event ready but could not fit into the supplied buffer. + */ +SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t *p_dest, uint16_t *p_len)); + + +/**@brief Add a Vendor Specific base UUID. + * + * @details This call enables the application to add a vendor specific base UUID to the BLE stack's table, for later + * use with all other modules and APIs. This then allows the application to use the shorter, 24-bit @ref ble_uuid_t + * format when dealing with both 16-bit and 128-bit UUIDs without having to check for lengths and having split code + * paths. This is accomplished by extending the grouping mechanism that the Bluetooth SIG standard base UUID uses + * for all other 128-bit UUIDs. The type field in the @ref ble_uuid_t structure is an index (relative to + * @ref BLE_UUID_TYPE_VENDOR_BEGIN) to the table populated by multiple calls to this function, and the UUID field + * in the same structure contains the 2 bytes at indexes 12 and 13. The number of possible 128-bit UUIDs available to + * the application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536, + * although restricted to modifying bytes 12 and 13 for each of the entries in the supplied array. + * + * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by + * the 16-bit uuid field in @ref ble_uuid_t. + * + * @note If a UUID is already present in the BLE stack's internal table, the corresponding index will be returned in + * p_uuid_type along with an @ref NRF_SUCCESS error code. + * + * @param[in] p_vs_uuid Pointer to a 16-octet (128-bit) little endian Vendor Specific UUID disregarding + * bytes 12 and 13. + * @param[out] p_uuid_type Pointer to a uint8_t where the type field in @ref ble_uuid_t corresponding to this UUID will be stored. + * + * @retval ::NRF_SUCCESS Successfully added the Vendor Specific UUID. + * @retval ::NRF_ERROR_INVALID_ADDR If p_vs_uuid or p_uuid_type is NULL or invalid. + * @retval ::NRF_ERROR_NO_MEM If there are no more free slots for VS UUIDs. + */ +SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const *p_vs_uuid, uint8_t *p_uuid_type)); + + +/** @brief Decode little endian raw UUID bytes (16-bit or 128-bit) into a 24 bit @ref ble_uuid_t structure. + * + * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared + * to the corresponding ones in each entry of the table of vendor specific UUIDs populated with @ref sd_ble_uuid_vs_add + * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index + * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type. + * + * @note If the UUID length supplied is 2, then the type set by this call will always be @ref BLE_UUID_TYPE_BLE. + * + * @param[in] uuid_le_len Length in bytes of the buffer pointed to by p_uuid_le (must be 2 or 16 bytes). + * @param[in] p_uuid_le Pointer pointing to little endian raw UUID bytes. + * @param[out] p_uuid Pointer to a @ref ble_uuid_t structure to be filled in. + * + * @retval ::NRF_SUCCESS Successfully decoded into the @ref ble_uuid_t structure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_LENGTH Invalid UUID length. + * @retval ::NRF_ERROR_NOT_FOUND For a 128-bit UUID, no match in the populated table of UUIDs. + */ +SVCALL(SD_BLE_UUID_DECODE, uint32_t, sd_ble_uuid_decode(uint8_t uuid_le_len, uint8_t const *p_uuid_le, ble_uuid_t *p_uuid)); + + +/** @brief Encode a @ref ble_uuid_t structure into little endian raw UUID bytes (16-bit or 128-bit). + * + * @note The pointer to the destination buffer p_uuid_le may be NULL, in which case only the validity and size of p_uuid is computed. + * + * @param[in] p_uuid Pointer to a @ref ble_uuid_t structure that will be encoded into bytes. + * @param[out] p_uuid_le_len Pointer to a uint8_t that will be filled with the encoded length (2 or 16 bytes). + * @param[out] p_uuid_le Pointer to a buffer where the little endian raw UUID bytes (2 or 16) will be stored. + * + * @retval ::NRF_SUCCESS Successfully encoded into the buffer. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid UUID type. + */ +SVCALL(SD_BLE_UUID_ENCODE, uint32_t, sd_ble_uuid_encode(ble_uuid_t const *p_uuid, uint8_t *p_uuid_le_len, uint8_t *p_uuid_le)); + + +/**@brief Get Version Information. + * + * @details This call allows the application to get the BLE stack version information. + * + * @param[out] p_version Pointer to a ble_version_t structure to be filled in. + * + * @retval ::NRF_SUCCESS Version information stored successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY The BLE stack is busy (typically doing a locally-initiated disconnection procedure). + */ +SVCALL(SD_BLE_VERSION_GET, uint32_t, sd_ble_version_get(ble_version_t *p_version)); + + +/**@brief Provide a user memory block. + * + * @note This call can only be used as a response to a @ref BLE_EVT_USER_MEM_REQUEST event issued to the application. + * + * @param[in] conn_handle Connection handle. + * @param[in] p_block Pointer to a user memory block structure or NULL if memory is managed by the application. + * + * @mscs + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_PEER_CANCEL_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_NOAUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Successfully queued a response to the peer. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_LENGTH Invalid user memory block length supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection state or no user memory request pending. + */ +SVCALL(SD_BLE_USER_MEM_REPLY, uint32_t, sd_ble_user_mem_reply(uint16_t conn_handle, ble_user_mem_block_t const *p_block)); + +/**@brief Set a BLE option. + * + * @details This call allows the application to set the value of an option. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} + * @endmscs + * + * @param[in] opt_id Option ID, see @ref BLE_COMMON_OPTS and @ref BLE_GAP_OPTS. + * @param[in] p_opt Pointer to a ble_opt_t structure containing the option value. + * + * @retval ::NRF_SUCCESS Option set successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. + * @retval ::NRF_ERROR_INVALID_STATE Unable to set the parameter at this time. + * @retval ::NRF_ERROR_BUSY The BLE stack is busy or the previous procedure has not completed. + */ +SVCALL(SD_BLE_OPT_SET, uint32_t, sd_ble_opt_set(uint32_t opt_id, ble_opt_t const *p_opt)); + + +/**@brief Get a BLE option. + * + * @details This call allows the application to retrieve the value of an option. + * + * @param[in] opt_id Option ID, see @ref BLE_COMMON_OPTS and @ref BLE_GAP_OPTS. + * @param[out] p_opt Pointer to a ble_opt_t structure to be filled in. + * + * @retval ::NRF_SUCCESS Option retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. + * @retval ::NRF_ERROR_INVALID_STATE Unable to retrieve the parameter at this time. + * @retval ::NRF_ERROR_BUSY The BLE stack is busy or the previous procedure has not completed. + * @retval ::NRF_ERROR_NOT_SUPPORTED This option is not supported. + * + */ +SVCALL(SD_BLE_OPT_GET, uint32_t, sd_ble_opt_get(uint32_t opt_id, ble_opt_t *p_opt)); + +/** @} */ +#ifdef __cplusplus +} +#endif +#endif /* BLE_H__ */ + +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_err.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_err.h new file mode 100644 index 0000000..2699abc --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_err.h @@ -0,0 +1,91 @@ +/* + * 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. + */ + +/** + @addtogroup BLE_COMMON + @{ + @addtogroup nrf_error + @{ + @ingroup BLE_COMMON + @} + + @defgroup ble_err General error codes + @{ + + @brief General error code definitions for the BLE API. + + @ingroup BLE_COMMON +*/ +#ifndef NRF_BLE_ERR_H__ +#define NRF_BLE_ERR_H__ + +#include "nrf_error.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* @defgroup BLE_ERRORS Error Codes + * @{ */ +#define BLE_ERROR_NOT_ENABLED (NRF_ERROR_STK_BASE_NUM+0x001) /**< @ref sd_ble_enable has not been called. */ +#define BLE_ERROR_INVALID_CONN_HANDLE (NRF_ERROR_STK_BASE_NUM+0x002) /**< Invalid connection handle. */ +#define BLE_ERROR_INVALID_ATTR_HANDLE (NRF_ERROR_STK_BASE_NUM+0x003) /**< Invalid attribute handle. */ +#define BLE_ERROR_INVALID_ROLE (NRF_ERROR_STK_BASE_NUM+0x004) /**< Invalid role. */ +/** @} */ + + +/** @defgroup BLE_ERROR_SUBRANGES Module specific error code subranges + * @brief Assignment of subranges for module specific error codes. + * @note For specific error codes, see ble_.h or ble_error_.h. + * @{ */ +#define NRF_L2CAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x100) /**< L2CAP specific errors. */ +#define NRF_GAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x200) /**< GAP specific errors. */ +#define NRF_GATTC_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x300) /**< GATT client specific errors. */ +#define NRF_GATTS_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x400) /**< GATT server specific errors. */ +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif + + +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gap.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gap.h new file mode 100644 index 0000000..fa61bb9 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gap.h @@ -0,0 +1,2189 @@ +/* + * Copyright (c) 2011 - 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. + */ + +/** + @addtogroup BLE_GAP Generic Access Profile (GAP) + @{ + @brief Definitions and prototypes for the GAP interface. + */ + +#ifndef BLE_GAP_H__ +#define BLE_GAP_H__ + +#include +#include "nrf_svc.h" +#include "nrf_error.h" +#include "ble_hci.h" +#include "ble_ranges.h" +#include "ble_types.h" +#include "ble_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/**@addtogroup BLE_GAP_ENUMERATIONS Enumerations + * @{ */ + +/**@brief GAP API SVC numbers. + */ +enum BLE_GAP_SVCS +{ + SD_BLE_GAP_ADDR_SET = BLE_GAP_SVC_BASE, /**< Set own Bluetooth Address. */ + SD_BLE_GAP_ADDR_GET = BLE_GAP_SVC_BASE + 1, /**< Get own Bluetooth Address. */ + SD_BLE_GAP_WHITELIST_SET = BLE_GAP_SVC_BASE + 2, /**< Set active whitelist. */ + SD_BLE_GAP_DEVICE_IDENTITIES_SET = BLE_GAP_SVC_BASE + 3, /**< Set device identity list. */ + SD_BLE_GAP_PRIVACY_SET = BLE_GAP_SVC_BASE + 4, /**< Set Privacy settings*/ + SD_BLE_GAP_PRIVACY_GET = BLE_GAP_SVC_BASE + 5, /**< Get Privacy settings*/ + SD_BLE_GAP_ADV_DATA_SET = BLE_GAP_SVC_BASE + 6, /**< Set Advertising Data. */ + SD_BLE_GAP_ADV_START = BLE_GAP_SVC_BASE + 7, /**< Start Advertising. */ + SD_BLE_GAP_ADV_STOP = BLE_GAP_SVC_BASE + 8, /**< Stop Advertising. */ + SD_BLE_GAP_CONN_PARAM_UPDATE = BLE_GAP_SVC_BASE + 9, /**< Connection Parameter Update. */ + SD_BLE_GAP_DISCONNECT = BLE_GAP_SVC_BASE + 10, /**< Disconnect. */ + SD_BLE_GAP_TX_POWER_SET = BLE_GAP_SVC_BASE + 11, /**< Set TX Power. */ + SD_BLE_GAP_APPEARANCE_SET = BLE_GAP_SVC_BASE + 12, /**< Set Appearance. */ + SD_BLE_GAP_APPEARANCE_GET = BLE_GAP_SVC_BASE + 13, /**< Get Appearance. */ + SD_BLE_GAP_PPCP_SET = BLE_GAP_SVC_BASE + 14, /**< Set PPCP. */ + SD_BLE_GAP_PPCP_GET = BLE_GAP_SVC_BASE + 15, /**< Get PPCP. */ + SD_BLE_GAP_DEVICE_NAME_SET = BLE_GAP_SVC_BASE + 16, /**< Set Device Name. */ + SD_BLE_GAP_DEVICE_NAME_GET = BLE_GAP_SVC_BASE + 17, /**< Get Device Name. */ + SD_BLE_GAP_AUTHENTICATE = BLE_GAP_SVC_BASE + 18, /**< Initiate Pairing/Bonding. */ + SD_BLE_GAP_SEC_PARAMS_REPLY = BLE_GAP_SVC_BASE + 19, /**< Reply with Security Parameters. */ + SD_BLE_GAP_AUTH_KEY_REPLY = BLE_GAP_SVC_BASE + 20, /**< Reply with an authentication key. */ + SD_BLE_GAP_LESC_DHKEY_REPLY = BLE_GAP_SVC_BASE + 21, /**< Reply with an LE Secure Connections DHKey. */ + SD_BLE_GAP_KEYPRESS_NOTIFY = BLE_GAP_SVC_BASE + 22, /**< Notify of a keypress during an authentication procedure. */ + SD_BLE_GAP_LESC_OOB_DATA_GET = BLE_GAP_SVC_BASE + 23, /**< Get the local LE Secure Connections OOB data. */ + SD_BLE_GAP_LESC_OOB_DATA_SET = BLE_GAP_SVC_BASE + 24, /**< Set the remote LE Secure Connections OOB data. */ + SD_BLE_GAP_ENCRYPT = BLE_GAP_SVC_BASE + 25, /**< Initiate encryption procedure. */ + SD_BLE_GAP_SEC_INFO_REPLY = BLE_GAP_SVC_BASE + 26, /**< Reply with Security Information. */ + SD_BLE_GAP_CONN_SEC_GET = BLE_GAP_SVC_BASE + 27, /**< Obtain connection security level. */ + SD_BLE_GAP_RSSI_START = BLE_GAP_SVC_BASE + 28, /**< Start reporting of changes in RSSI. */ + SD_BLE_GAP_RSSI_STOP = BLE_GAP_SVC_BASE + 29, /**< Stop reporting of changes in RSSI. */ + SD_BLE_GAP_SCAN_START = BLE_GAP_SVC_BASE + 30, /**< Start Scanning. */ + SD_BLE_GAP_SCAN_STOP = BLE_GAP_SVC_BASE + 31, /**< Stop Scanning. */ + SD_BLE_GAP_CONNECT = BLE_GAP_SVC_BASE + 32, /**< Connect. */ + SD_BLE_GAP_CONNECT_CANCEL = BLE_GAP_SVC_BASE + 33, /**< Cancel ongoing connection procedure. */ + SD_BLE_GAP_RSSI_GET = BLE_GAP_SVC_BASE + 34, /**< Get the last RSSI sample. */ + SD_BLE_GAP_PHY_UPDATE = BLE_GAP_SVC_BASE + 35, /**< Initiate or respond to a PHY Update Procedure. */ + SD_BLE_GAP_DATA_LENGTH_UPDATE = BLE_GAP_SVC_BASE + 36, /**< Initiate or respond to a Data Length Update Procedure. */ +}; + +/**@brief GAP Event IDs. + * IDs that uniquely identify an event coming from the stack to the application. + */ +enum BLE_GAP_EVTS +{ + BLE_GAP_EVT_CONNECTED = BLE_GAP_EVT_BASE, + BLE_GAP_EVT_DISCONNECTED = BLE_GAP_EVT_BASE + 1, /**< Disconnected from peer. \n See @ref ble_gap_evt_disconnected_t. */ + BLE_GAP_EVT_CONN_PARAM_UPDATE = BLE_GAP_EVT_BASE + 2, /**< Connection Parameters updated. \n See @ref ble_gap_evt_conn_param_update_t. */ + BLE_GAP_EVT_SEC_PARAMS_REQUEST = BLE_GAP_EVT_BASE + 3, /**< Request to provide security parameters. \n Reply with @ref sd_ble_gap_sec_params_reply. \n See @ref ble_gap_evt_sec_params_request_t. */ + BLE_GAP_EVT_SEC_INFO_REQUEST = BLE_GAP_EVT_BASE + 4, /**< Request to provide security information. \n Reply with @ref sd_ble_gap_sec_info_reply. \n See @ref ble_gap_evt_sec_info_request_t. */ + BLE_GAP_EVT_PASSKEY_DISPLAY = BLE_GAP_EVT_BASE + 5, /**< Request to display a passkey to the user. \n In LESC Numeric Comparison, reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_passkey_display_t. */ + BLE_GAP_EVT_KEY_PRESSED = BLE_GAP_EVT_BASE + 6, /**< Notification of a keypress on the remote device.\n See @ref ble_gap_evt_key_pressed_t */ + BLE_GAP_EVT_AUTH_KEY_REQUEST = BLE_GAP_EVT_BASE + 7, /**< Request to provide an authentication key. \n Reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_auth_key_request_t. */ + BLE_GAP_EVT_LESC_DHKEY_REQUEST = BLE_GAP_EVT_BASE + 8, /**< Request to calculate an LE Secure Connections DHKey. \n Reply with @ref sd_ble_gap_lesc_dhkey_reply. \n See @ref ble_gap_evt_lesc_dhkey_request_t */ + BLE_GAP_EVT_AUTH_STATUS = BLE_GAP_EVT_BASE + 9, /**< Authentication procedure completed with status. \n See @ref ble_gap_evt_auth_status_t. */ + BLE_GAP_EVT_CONN_SEC_UPDATE = BLE_GAP_EVT_BASE + 10, /**< Connection security updated. \n See @ref ble_gap_evt_conn_sec_update_t. */ + BLE_GAP_EVT_TIMEOUT = BLE_GAP_EVT_BASE + 11, /**< Timeout expired. \n See @ref ble_gap_evt_timeout_t. */ + BLE_GAP_EVT_RSSI_CHANGED = BLE_GAP_EVT_BASE + 12, /**< RSSI report. \n See @ref ble_gap_evt_rssi_changed_t. */ + BLE_GAP_EVT_ADV_REPORT = BLE_GAP_EVT_BASE + 13, /**< Advertising report. \n See @ref ble_gap_evt_adv_report_t. */ + BLE_GAP_EVT_SEC_REQUEST = BLE_GAP_EVT_BASE + 14, /**< Security Request. \n See @ref ble_gap_evt_sec_request_t. */ + BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST = BLE_GAP_EVT_BASE + 15, /**< Connection Parameter Update Request. \n Reply with @ref sd_ble_gap_conn_param_update. \n See @ref ble_gap_evt_conn_param_update_request_t. */ + BLE_GAP_EVT_SCAN_REQ_REPORT = BLE_GAP_EVT_BASE + 16, /**< Scan request report. \n See @ref ble_gap_evt_scan_req_report_t. */ + BLE_GAP_EVT_PHY_UPDATE_REQUEST = BLE_GAP_EVT_BASE + 17, /**< PHY Update Request. \n Reply with @ref sd_ble_gap_phy_update. \n See @ref ble_gap_evt_phy_update_request_t. */ + BLE_GAP_EVT_PHY_UPDATE = BLE_GAP_EVT_BASE + 18, /**< PHY Update Procedure is complete. \n See @ref ble_gap_evt_phy_update_t. */ + BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST = BLE_GAP_EVT_BASE + 19, /**< Data Length Update Request. \n Reply with @ref sd_ble_gap_data_length_update.\n See @ref ble_gap_evt_data_length_update_request_t. */ + BLE_GAP_EVT_DATA_LENGTH_UPDATE = BLE_GAP_EVT_BASE + 20, /**< LL Data Channel PDU payload length updated. \n See @ref ble_gap_evt_data_length_update_t. */ +}; + +/**@brief GAP Option IDs. + * IDs that uniquely identify a GAP option. + */ +enum BLE_GAP_OPTS +{ + BLE_GAP_OPT_CH_MAP = BLE_GAP_OPT_BASE, /**< Channel Map. @ref ble_gap_opt_ch_map_t */ + BLE_GAP_OPT_LOCAL_CONN_LATENCY = BLE_GAP_OPT_BASE + 1, /**< Local connection latency. @ref ble_gap_opt_local_conn_latency_t */ + BLE_GAP_OPT_PASSKEY = BLE_GAP_OPT_BASE + 2, /**< Set passkey. @ref ble_gap_opt_passkey_t */ + BLE_GAP_OPT_SCAN_REQ_REPORT = BLE_GAP_OPT_BASE + 3, /**< Scan request report. @ref ble_gap_opt_scan_req_report_t */ + BLE_GAP_OPT_COMPAT_MODE_1 = BLE_GAP_OPT_BASE + 4, /**< Compatibility mode. @ref ble_gap_opt_compat_mode_1_t */ + BLE_GAP_OPT_AUTH_PAYLOAD_TIMEOUT = BLE_GAP_OPT_BASE + 5, /**< Set Authenticated payload timeout. @ref ble_gap_opt_auth_payload_timeout_t */ + BLE_GAP_OPT_SLAVE_LATENCY_DISABLE = BLE_GAP_OPT_BASE + 6, /**< Disable slave latency. @ref ble_gap_opt_slave_latency_disable_t */ +}; + +/**@brief GAP Configuration IDs. + * + * IDs that uniquely identify a GAP configuration. + */ +enum BLE_GAP_CFGS +{ + BLE_GAP_CFG_ROLE_COUNT = BLE_GAP_CFG_BASE, /**< Role count configuration. */ + BLE_GAP_CFG_DEVICE_NAME = BLE_GAP_CFG_BASE + 1, /**< Device name configuration. */ +}; + +/** @} */ + +/**@addtogroup BLE_GAP_DEFINES Defines + * @{ */ + +/**@defgroup BLE_ERRORS_GAP SVC return values specific to GAP + * @{ */ +#define BLE_ERROR_GAP_UUID_LIST_MISMATCH (NRF_GAP_ERR_BASE + 0x000) /**< UUID list does not contain an integral number of UUIDs. */ +#define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST (NRF_GAP_ERR_BASE + 0x001) /**< Use of Whitelist not permitted with discoverable advertising. */ +#define BLE_ERROR_GAP_INVALID_BLE_ADDR (NRF_GAP_ERR_BASE + 0x002) /**< The upper two bits of the address do not correspond to the specified address type. */ +#define BLE_ERROR_GAP_WHITELIST_IN_USE (NRF_GAP_ERR_BASE + 0x003) /**< Attempt to modify the whitelist while already in use by another operation. */ +#define BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE (NRF_GAP_ERR_BASE + 0x004) /**< Attempt to modify the device identity list while already in use by another operation. */ +#define BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE (NRF_GAP_ERR_BASE + 0x005) /**< The device identity list contains entries with duplicate identity addresses. */ +/**@} */ + + +/**@defgroup BLE_GAP_ROLES GAP Roles + * @{ */ +#define BLE_GAP_ROLE_INVALID 0x0 /**< Invalid Role. */ +#define BLE_GAP_ROLE_PERIPH 0x1 /**< Peripheral Role. */ +#define BLE_GAP_ROLE_CENTRAL 0x2 /**< Central Role. */ +/**@} */ + + +/**@defgroup BLE_GAP_TIMEOUT_SOURCES GAP Timeout sources + * @{ */ +#define BLE_GAP_TIMEOUT_SRC_ADVERTISING 0x00 /**< Advertising timeout. */ +#define BLE_GAP_TIMEOUT_SRC_SCAN 0x01 /**< Scanning timeout. */ +#define BLE_GAP_TIMEOUT_SRC_CONN 0x02 /**< Connection timeout. */ +#define BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD 0x03 /**< Authenticated payload timeout. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADDR_TYPES GAP Address types + * @{ */ +#define BLE_GAP_ADDR_TYPE_PUBLIC 0x00 /**< Public address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_STATIC 0x01 /**< Random static address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE 0x02 /**< Random private resolvable address. */ +#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03 /**< Random private non-resolvable address. */ +/**@} */ + + +/**@brief The default interval in seconds at which a private address is refreshed. */ +#define BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S (900) /* 15 minutes. */ +/**@brief The maximum interval in seconds at which a private address can be refreshed. */ +#define BLE_GAP_MAX_PRIVATE_ADDR_CYCLE_INTERVAL_S (41400) /* 11 hours 30 minutes. */ + + +/** @brief BLE address length. */ +#define BLE_GAP_ADDR_LEN (6) + + +/**@defgroup BLE_GAP_PRIVACY_MODES Privacy modes + * @{ */ +#define BLE_GAP_PRIVACY_MODE_OFF 0x00 /**< Device will send and accept its identity address for its own address. */ +#define BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY 0x01 /**< Device will send and accept only private addresses for its own address. */ +#define BLE_GAP_PRIVACY_MODE_NETWORK_PRIVACY 0x02 /**< Device will send and accept only private addresses for its own address, + and will not accept a peer using identity address as sender address when + the peer IRK is exchanged, non-zero and added to the identity list. */ +/**@} */ + + +/**@defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format + * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm + * @{ */ +#define BLE_GAP_AD_TYPE_FLAGS 0x01 /**< Flags for discoverability. */ +#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02 /**< Partial list of 16 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03 /**< Complete list of 16 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04 /**< Partial list of 32 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05 /**< Complete list of 32 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /**< Partial list of 128 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07 /**< Complete list of 128 bit service UUIDs. */ +#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08 /**< Short local device name. */ +#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 /**< Complete local device name. */ +#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A /**< Transmit power level. */ +#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D /**< Class of device. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E /**< Simple Pairing Hash C. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F /**< Simple Pairing Randomizer R. */ +#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 /**< Security Manager TK Value. */ +#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11 /**< Security Manager Out Of Band Flags. */ +#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /**< Slave Connection Interval Range. */ +#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14 /**< List of 16-bit Service Solicitation UUIDs. */ +#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15 /**< List of 128-bit Service Solicitation UUIDs. */ +#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16 /**< Service Data - 16-bit UUID. */ +#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17 /**< Public Target Address. */ +#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18 /**< Random Target Address. */ +#define BLE_GAP_AD_TYPE_APPEARANCE 0x19 /**< Appearance. */ +#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL 0x1A /**< Advertising Interval. */ +#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B /**< LE Bluetooth Device Address. */ +#define BLE_GAP_AD_TYPE_LE_ROLE 0x1C /**< LE Role. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 0x1D /**< Simple Pairing Hash C-256. */ +#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 0x1E /**< Simple Pairing Randomizer R-256. */ +#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID 0x20 /**< Service Data - 32-bit UUID. */ +#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID 0x21 /**< Service Data - 128-bit UUID. */ +#define BLE_GAP_AD_TYPE_LESC_CONFIRMATION_VALUE 0x22 /**< LE Secure Connections Confirmation Value */ +#define BLE_GAP_AD_TYPE_LESC_RANDOM_VALUE 0x23 /**< LE Secure Connections Random Value */ +#define BLE_GAP_AD_TYPE_URI 0x24 /**< URI */ +#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA 0x3D /**< 3D Information Data. */ +#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF /**< Manufacturer Specific Data. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_FLAGS GAP Advertisement Flags + * @{ */ +#define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE (0x01) /**< LE Limited Discoverable Mode. */ +#define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE (0x02) /**< LE General Discoverable Mode. */ +#define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED (0x04) /**< BR/EDR not supported. */ +#define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER (0x08) /**< Simultaneous LE and BR/EDR, Controller. */ +#define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST (0x10) /**< Simultaneous LE and BR/EDR, Host. */ +#define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE Limited Discoverable Mode, BR/EDR not supported. */ +#define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE General Discoverable Mode, BR/EDR not supported. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_INTERVALS GAP Advertising interval max and min + * @{ */ +#define BLE_GAP_ADV_INTERVAL_MIN 0x0020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */ +#define BLE_GAP_ADV_INTERVAL_MAX 0x4000 /**< Maximum Advertising interval in 625 us units, i.e. 10.24 s. */ + /**@} */ + + +/**@defgroup BLE_GAP_SCAN_INTERVALS GAP Scan interval max and min + * @{ */ +#define BLE_GAP_SCAN_INTERVAL_MIN 0x0004 /**< Minimum Scan interval in 625 us units, i.e. 2.5 ms. */ +#define BLE_GAP_SCAN_INTERVAL_MAX 0x4000 /**< Maximum Scan interval in 625 us units, i.e. 10.24 s. */ + /** @} */ + + +/**@defgroup BLE_GAP_SCAN_WINDOW GAP Scan window max and min + * @{ */ +#define BLE_GAP_SCAN_WINDOW_MIN 0x0004 /**< Minimum Scan window in 625 us units, i.e. 2.5 ms. */ +#define BLE_GAP_SCAN_WINDOW_MAX 0x4000 /**< Maximum Scan window in 625 us units, i.e. 10.24 s. */ + /** @} */ + + +/**@defgroup BLE_GAP_SCAN_TIMEOUT GAP Scan timeout max and min + * @{ */ +#define BLE_GAP_SCAN_TIMEOUT_MIN 0x0001 /**< Minimum Scan timeout in seconds. */ +#define BLE_GAP_SCAN_TIMEOUT_MAX 0xFFFF /**< Maximum Scan timeout in seconds. */ + /** @} */ + + +/**@brief Maximum size of advertising data in octets. */ +#define BLE_GAP_ADV_MAX_SIZE (31) + + +/**@defgroup BLE_GAP_ADV_TYPES GAP Advertising types + * @{ */ +#define BLE_GAP_ADV_TYPE_ADV_IND 0x00 /**< Connectable undirected. */ +#define BLE_GAP_ADV_TYPE_ADV_DIRECT_IND 0x01 /**< Connectable directed. */ +#define BLE_GAP_ADV_TYPE_ADV_SCAN_IND 0x02 /**< Scannable undirected. */ +#define BLE_GAP_ADV_TYPE_ADV_NONCONN_IND 0x03 /**< Non connectable undirected. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_FILTER_POLICIES GAP Advertising filter policies + * @{ */ +#define BLE_GAP_ADV_FP_ANY 0x00 /**< Allow scan requests and connect requests from any device. */ +#define BLE_GAP_ADV_FP_FILTER_SCANREQ 0x01 /**< Filter scan requests with whitelist. */ +#define BLE_GAP_ADV_FP_FILTER_CONNREQ 0x02 /**< Filter connect requests with whitelist. */ +#define BLE_GAP_ADV_FP_FILTER_BOTH 0x03 /**< Filter both scan and connect requests with whitelist. */ +/**@} */ + + +/**@defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values + * @{ */ +#define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX (180) /**< Maximum advertising time in limited discoverable mode (TGAP(lim_adv_timeout) = 180 s). */ +#define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED (0) /**< Unlimited advertising in general discoverable mode. */ +/**@} */ + + +/**@defgroup BLE_GAP_DISC_MODES GAP Discovery modes + * @{ */ +#define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE 0x00 /**< Not discoverable discovery Mode. */ +#define BLE_GAP_DISC_MODE_LIMITED 0x01 /**< Limited Discovery Mode. */ +#define BLE_GAP_DISC_MODE_GENERAL 0x02 /**< General Discovery Mode. */ +/**@} */ + + +/**@defgroup BLE_GAP_IO_CAPS GAP IO Capabilities + * @{ */ +#define BLE_GAP_IO_CAPS_DISPLAY_ONLY 0x00 /**< Display Only. */ +#define BLE_GAP_IO_CAPS_DISPLAY_YESNO 0x01 /**< Display and Yes/No entry. */ +#define BLE_GAP_IO_CAPS_KEYBOARD_ONLY 0x02 /**< Keyboard Only. */ +#define BLE_GAP_IO_CAPS_NONE 0x03 /**< No I/O capabilities. */ +#define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY 0x04 /**< Keyboard and Display. */ +/**@} */ + + +/**@defgroup BLE_GAP_AUTH_KEY_TYPES GAP Authentication Key Types + * @{ */ +#define BLE_GAP_AUTH_KEY_TYPE_NONE 0x00 /**< No key (may be used to reject). */ +#define BLE_GAP_AUTH_KEY_TYPE_PASSKEY 0x01 /**< 6-digit Passkey. */ +#define BLE_GAP_AUTH_KEY_TYPE_OOB 0x02 /**< Out Of Band data. */ +/**@} */ + + +/**@defgroup BLE_GAP_KP_NOT_TYPES GAP Keypress Notification Types + * @{ */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_START 0x00 /**< Passkey entry started. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_IN 0x01 /**< Passkey digit entered. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_OUT 0x02 /**< Passkey digit erased. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_CLEAR 0x03 /**< Passkey cleared. */ +#define BLE_GAP_KP_NOT_TYPE_PASSKEY_END 0x04 /**< Passkey entry completed. */ +/**@} */ + + +/**@defgroup BLE_GAP_SEC_STATUS GAP Security status + * @{ */ +#define BLE_GAP_SEC_STATUS_SUCCESS 0x00 /**< Procedure completed with success. */ +#define BLE_GAP_SEC_STATUS_TIMEOUT 0x01 /**< Procedure timed out. */ +#define BLE_GAP_SEC_STATUS_PDU_INVALID 0x02 /**< Invalid PDU received. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE1_BEGIN 0x03 /**< Reserved for Future Use range #1 begin. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE1_END 0x80 /**< Reserved for Future Use range #1 end. */ +#define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED 0x81 /**< Passkey entry failed (user canceled or other). */ +#define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE 0x82 /**< Out of Band Key not available. */ +#define BLE_GAP_SEC_STATUS_AUTH_REQ 0x83 /**< Authentication requirements not met. */ +#define BLE_GAP_SEC_STATUS_CONFIRM_VALUE 0x84 /**< Confirm value failed. */ +#define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP 0x85 /**< Pairing not supported. */ +#define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE 0x86 /**< Encryption key size. */ +#define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED 0x87 /**< Unsupported SMP command. */ +#define BLE_GAP_SEC_STATUS_UNSPECIFIED 0x88 /**< Unspecified reason. */ +#define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS 0x89 /**< Too little time elapsed since last attempt. */ +#define BLE_GAP_SEC_STATUS_INVALID_PARAMS 0x8A /**< Invalid parameters. */ +#define BLE_GAP_SEC_STATUS_DHKEY_FAILURE 0x8B /**< DHKey check failure. */ +#define BLE_GAP_SEC_STATUS_NUM_COMP_FAILURE 0x8C /**< Numeric Comparison failure. */ +#define BLE_GAP_SEC_STATUS_BR_EDR_IN_PROG 0x8D /**< BR/EDR pairing in progress. */ +#define BLE_GAP_SEC_STATUS_X_TRANS_KEY_DISALLOWED 0x8E /**< BR/EDR Link Key cannot be used for LE keys. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE2_BEGIN 0x8F /**< Reserved for Future Use range #2 begin. */ +#define BLE_GAP_SEC_STATUS_RFU_RANGE2_END 0xFF /**< Reserved for Future Use range #2 end. */ +/**@} */ + + +/**@defgroup BLE_GAP_SEC_STATUS_SOURCES GAP Security status sources + * @{ */ +#define BLE_GAP_SEC_STATUS_SOURCE_LOCAL 0x00 /**< Local failure. */ +#define BLE_GAP_SEC_STATUS_SOURCE_REMOTE 0x01 /**< Remote failure. */ +/**@} */ + + +/**@defgroup BLE_GAP_CP_LIMITS GAP Connection Parameters Limits + * @{ */ +#define BLE_GAP_CP_MIN_CONN_INTVL_NONE 0xFFFF /**< No new minimum connection interval specified in connect parameters. */ +#define BLE_GAP_CP_MIN_CONN_INTVL_MIN 0x0006 /**< Lowest minimum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ +#define BLE_GAP_CP_MIN_CONN_INTVL_MAX 0x0C80 /**< Highest minimum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_NONE 0xFFFF /**< No new maximum connection interval specified in connect parameters. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_MIN 0x0006 /**< Lowest maximum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ +#define BLE_GAP_CP_MAX_CONN_INTVL_MAX 0x0C80 /**< Highest maximum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ +#define BLE_GAP_CP_SLAVE_LATENCY_MAX 0x01F3 /**< Highest slave latency permitted, in connection events. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE 0xFFFF /**< No new supervision timeout specified in connect parameters. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN 0x000A /**< Lowest supervision timeout permitted, in units of 10 ms, i.e. 100 ms. */ +#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX 0x0C80 /**< Highest supervision timeout permitted, in units of 10 ms, i.e. 32 s. */ +/**@} */ + + +/**@defgroup BLE_GAP_DEVNAME GAP device name defines. + * @{ */ +#define BLE_GAP_DEVNAME_DEFAULT "nRF5x" /**< Default device name value. */ +#define BLE_GAP_DEVNAME_DEFAULT_LEN 31 /**< Default number of octets in device name. */ +#define BLE_GAP_DEVNAME_MAX_LEN 248 /**< Maximum number of octets in device name. */ +/**@} */ + + +/**@brief Disable RSSI events for connections */ +#define BLE_GAP_RSSI_THRESHOLD_INVALID 0xFF + +/**@defgroup BLE_GAP_PHYS GAP PHYs + * @{ */ +#define BLE_GAP_PHY_AUTO 0x00 /**< Automatic PHY selection. Refer @ref sd_ble_gap_phy_update for more information.*/ +#define BLE_GAP_PHY_1MBPS 0x01 /**< 1 Mbps PHY. */ +#define BLE_GAP_PHY_2MBPS 0x02 /**< 2 Mbps PHY. */ +#define BLE_GAP_PHY_CODED 0x04 /**< Coded PHY. */ + +/**@} */ + +/**@defgroup BLE_GAP_CONN_SEC_MODE_SET_MACROS GAP attribute security requirement setters + * + * See @ref ble_gap_conn_sec_mode_t. + * @{ */ +/**@brief Set sec_mode pointed to by ptr to have no access rights.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr) do {(ptr)->sm = 0; (ptr)->lv = 0;} while(0) +/**@brief Set sec_mode pointed to by ptr to require no protection, open link.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr) do {(ptr)->sm = 1; (ptr)->lv = 1;} while(0) +/**@brief Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 2;} while(0) +/**@brief Set sec_mode pointed to by ptr to require encryption and MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 3;} while(0) +/**@brief Set sec_mode pointed to by ptr to require LESC encryption and MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_LESC_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 4;} while(0) +/**@brief Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 1;} while(0) +/**@brief Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/ +#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 2;} while(0) +/**@} */ + + +/**@brief GAP Security Random Number Length. */ +#define BLE_GAP_SEC_RAND_LEN 8 + + +/**@brief GAP Security Key Length. */ +#define BLE_GAP_SEC_KEY_LEN 16 + + +/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key Length. */ +#define BLE_GAP_LESC_P256_PK_LEN 64 + + +/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman DHKey Length. */ +#define BLE_GAP_LESC_DHKEY_LEN 32 + + +/**@brief GAP Passkey Length. */ +#define BLE_GAP_PASSKEY_LEN 6 + + +/**@brief Maximum amount of addresses in the whitelist. */ +#define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8) + + +/**@brief Maximum amount of identities in the device identities list. */ +#define BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT (8) + + +/**@brief Default connection count for a configuration. */ +#define BLE_GAP_CONN_COUNT_DEFAULT (1) + + +/**@defgroup BLE_GAP_EVENT_LENGTH GAP event length defines. + * @{ */ +#define BLE_GAP_EVENT_LENGTH_MIN (2) /**< Minimum event length, in 1.25 ms units. */ +#define BLE_GAP_EVENT_LENGTH_DEFAULT (3) /**< Default event length, in 1.25 ms units. */ +/**@} */ + + +/**@defgroup BLE_GAP_ROLE_COUNT GAP concurrent connection count defines. + * @{ */ +#define BLE_GAP_ROLE_COUNT_PERIPH_DEFAULT (1) /**< Default maximum number of connections concurrently acting as peripherals. */ +#define BLE_GAP_ROLE_COUNT_CENTRAL_DEFAULT (3) /**< Default maximum number of connections concurrently acting as centrals. */ +#define BLE_GAP_ROLE_COUNT_CENTRAL_SEC_DEFAULT (1) /**< Default number of SMP instances shared between all connections acting as centrals. */ +#define BLE_GAP_ROLE_COUNT_COMBINED_MAX (20) /**< Maximum supported number of concurrent connections in the peripheral and central roles combined. */ + +/**@} */ + +/**@brief Automatic data length parameter. */ +#define BLE_GAP_DATA_LENGTH_AUTO 0 + +/**@defgroup BLE_GAP_AUTH_PAYLOAD_TIMEOUT Authenticated payload timeout defines. + * @{ */ +#define BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MAX (48000) /**< Maximum authenticated payload timeout in 10 ms units, i.e. 8 minutes. */ +#define BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MIN (1) /**< Minimum authenticated payload timeout in 10 ms units, i.e. 10 ms. */ +/**@} */ + +/**@defgroup GAP_SEC_MODES GAP Security Modes + * @{ */ +#define BLE_GAP_SEC_MODE 0x00 /**< No key (may be used to reject). */ +/**@} */ +/** @} */ + + +/**@addtogroup BLE_GAP_STRUCTURES Structures + * @{ */ + +/**@brief Bluetooth Low Energy address. */ +typedef struct +{ + uint8_t addr_id_peer : 1; /**< Only valid for peer addresses. + Reference to peer in device identities list (as set with @ref sd_ble_gap_device_identities_set) when peer is using privacy. */ + uint8_t addr_type : 7; /**< See @ref BLE_GAP_ADDR_TYPES. */ + uint8_t addr[BLE_GAP_ADDR_LEN]; /**< 48-bit address, LSB format. */ +} ble_gap_addr_t; + + +/**@brief GAP connection parameters. + * + * @note When ble_conn_params_t is received in an event, both min_conn_interval and + * max_conn_interval will be equal to the connection interval set by the central. + * + * @note If both conn_sup_timeout and max_conn_interval are specified, then the following constraint applies: + * conn_sup_timeout * 4 > (1 + slave_latency) * max_conn_interval + * that corresponds to the following Bluetooth Spec requirement: + * The Supervision_Timeout in milliseconds shall be larger than + * (1 + Conn_Latency) * Conn_Interval_Max * 2, where Conn_Interval_Max is given in milliseconds. + */ +typedef struct +{ + uint16_t min_conn_interval; /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t max_conn_interval; /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t slave_latency; /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/ + uint16_t conn_sup_timeout; /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/ +} ble_gap_conn_params_t; + + +/**@brief GAP connection security modes. + * + * Security Mode 0 Level 0: No access permissions at all (this level is not defined by the Bluetooth Core specification).\n + * Security Mode 1 Level 1: No security is needed (aka open link).\n + * Security Mode 1 Level 2: Encrypted link required, MITM protection not necessary.\n + * Security Mode 1 Level 3: MITM protected encrypted link required.\n + * Security Mode 1 Level 4: LESC MITM protected encrypted link using a 128-bit strength encryption key required.\n + * Security Mode 2 Level 1: Signing or encryption required, MITM protection not necessary.\n + * Security Mode 2 Level 2: MITM protected signing required, unless link is MITM protected encrypted.\n + */ +typedef struct +{ + uint8_t sm : 4; /**< Security Mode (1 or 2), 0 for no permissions at all. */ + uint8_t lv : 4; /**< Level (1, 2, 3 or 4), 0 for no permissions at all. */ + +} ble_gap_conn_sec_mode_t; + + +/**@brief GAP connection security status.*/ +typedef struct +{ + ble_gap_conn_sec_mode_t sec_mode; /**< Currently active security mode for this connection.*/ + uint8_t encr_key_size; /**< Length of currently active encryption key, 7 to 16 octets (only applicable for bonding procedures). */ +} ble_gap_conn_sec_t; + +/**@brief Identity Resolving Key. */ +typedef struct +{ + uint8_t irk[BLE_GAP_SEC_KEY_LEN]; /**< Array containing IRK. */ +} ble_gap_irk_t; + + +/**@brief Channel mask for RF channels used in advertising. */ +typedef struct +{ + uint8_t ch_37_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 37 */ + uint8_t ch_38_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 38 */ + uint8_t ch_39_off : 1; /**< Setting this bit to 1 will turn off advertising on channel 39 */ +} ble_gap_adv_ch_mask_t; + + +/**@brief GAP advertising parameters. */ +typedef struct +{ + uint8_t type; /**< See @ref BLE_GAP_ADV_TYPES. */ + ble_gap_addr_t const *p_peer_addr; /**< Address of a known peer. + - When privacy is enabled and the local device use @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE addresses, the device identity list is searched for a matching + entry. If the local IRK for that device identity is set, the local IRK for that device will be used to generate the advertiser address field in the advertise packet. + - If type is @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this must be set to the targeted initiator. If the initiator is in the device identity list, + the peer IRK for that device will be used to generate the initiator address field in the ADV_DIRECT_IND packet. */ + uint8_t fp; /**< Filter Policy, see @ref BLE_GAP_ADV_FILTER_POLICIES. */ + uint16_t interval; /**< Advertising interval between 0x0020 and 0x4000 in 0.625 ms units (20 ms to 10.24 s), see @ref BLE_GAP_ADV_INTERVALS. + - If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this parameter must be set to 0 for high duty cycle directed advertising. + - If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, set @ref BLE_GAP_ADV_INTERVAL_MIN <= interval <= @ref BLE_GAP_ADV_INTERVAL_MAX for low duty cycle advertising.*/ + uint16_t timeout; /**< Advertising timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. See also @ref BLE_GAP_ADV_TIMEOUT_VALUES. If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this parameter must be set to 0 for High duty cycle directed advertising. */ + ble_gap_adv_ch_mask_t channel_mask; /**< Advertising channel mask. See @ref ble_gap_adv_ch_mask_t. */ +} ble_gap_adv_params_t; + + +/**@brief GAP scanning parameters. */ +typedef struct +{ + uint8_t active : 1; /**< If 1, perform active scanning (scan requests). */ + uint8_t use_whitelist : 1; /**< If 1, filter advertisers using current active whitelist. */ + uint8_t adv_dir_report : 1; /**< If 1, also report directed advertisements where the initiator field is set to a private resolvable address, + even if the address did not resolve to an entry in the device identity list. A report will be generated + even if the peer is not in the whitelist. */ + uint16_t interval; /**< Scan interval between 0x0004 and 0x4000 in 0.625 ms units (2.5 ms to 10.24 s). */ + uint16_t window; /**< Scan window between 0x0004 and 0x4000 in 0.625 ms units (2.5 ms to 10.24 s). */ + uint16_t timeout; /**< Scan timeout between 0x0001 and 0xFFFF in seconds, 0x0000 disables timeout. */ +} ble_gap_scan_params_t; + + +/**@brief Privacy. + * + * The privacy feature provides a way for the device to avoid being tracked over a period of time. + * The privacy feature, when enabled, hides the local device identity and replaces it with a private address + * that is automatically refreshed at a specified interval. + * + * If a device still wants to be recognized by other peers, it needs to share it's Identity Resolving Key (IRK). + * With this key, a device can generate a random private address that can only be recognized by peers in possession of that key, + * and devices can establish connections without revealing their real identities. + * + * Both network privacy (@ref BLE_GAP_PRIVACY_MODE_NETWORK_PRIVACY) and device privacy (@ref BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY) + * are supported. + * + * @note If the device IRK is updated, the new IRK becomes the one to be distributed in all + * bonding procedures performed after @ref sd_ble_gap_privacy_set returns. + * The IRK distributed during bonding procedure is the device IRK that is active when @ref sd_ble_gap_sec_params_reply is called. + */ +typedef struct +{ + uint8_t privacy_mode; /**< Privacy mode, see @ref BLE_GAP_PRIVACY_MODES. Default is @ref BLE_GAP_PRIVACY_MODE_OFF. */ + uint8_t private_addr_type; /**< The private address type must be either @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE or @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE. */ + uint16_t private_addr_cycle_s; /**< Private address cycle interval in seconds. Providing an address cycle value of 0 will use the default value defined by @ref BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S. */ + ble_gap_irk_t *p_device_irk; /**< When used as input, pointer to IRK structure that will be used as the default IRK. If NULL, the device default IRK will be used. + When used as output, pointer to IRK structure where the current default IRK will be written to. If NULL, this argument is ignored. + By default, the default IRK is used to generate random private resolvable addresses for the local device unless instructed otherwise. */ +} ble_gap_privacy_params_t; + + +/**@brief PHY preferences for TX and RX + * @note tx_phys and rx_phys are bit fields. Multiple bits can be set in them to indicate multiple preferred PHYs for each direction. + * @code + * p_gap_phys->tx_phys = BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS; + * p_gap_phys->rx_phys = BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS; + * @endcode + * + */ +typedef struct +{ + uint8_t tx_phys; /**< Preferred transmit PHYs, see @ref BLE_GAP_PHYS. */ + uint8_t rx_phys; /**< Preferred receive PHYs, see @ref BLE_GAP_PHYS. */ +} ble_gap_phys_t; + +/** @brief Keys that can be exchanged during a bonding procedure. */ +typedef struct +{ + uint8_t enc : 1; /**< Long Term Key and Master Identification. */ + uint8_t id : 1; /**< Identity Resolving Key and Identity Address Information. */ + uint8_t sign : 1; /**< Connection Signature Resolving Key. */ + uint8_t link : 1; /**< Derive the Link Key from the LTK. */ +} ble_gap_sec_kdist_t; + + +/**@brief GAP security parameters. */ +typedef struct +{ + uint8_t bond : 1; /**< Perform bonding. */ + uint8_t mitm : 1; /**< Enable Man In The Middle protection. */ + uint8_t lesc : 1; /**< Enable LE Secure Connection pairing. */ + uint8_t keypress : 1; /**< Enable generation of keypress notifications. */ + uint8_t io_caps : 3; /**< IO capabilities, see @ref BLE_GAP_IO_CAPS. */ + uint8_t oob : 1; /**< The OOB data flag. + - In LE legacy pairing, this flag is set if a device has out of band authentication data. + The OOB method is used if both of the devices have out of band authentication data. + - In LE Secure Connections pairing, this flag is set if a device has the peer device's out of band authentication data. + The OOB method is used if at least one device has the peer device's OOB data available. */ + uint8_t min_key_size; /**< Minimum encryption key size in octets between 7 and 16. If 0 then not applicable in this instance. */ + uint8_t max_key_size; /**< Maximum encryption key size in octets between min_key_size and 16. */ + ble_gap_sec_kdist_t kdist_own; /**< Key distribution bitmap: keys that the local device will distribute. */ + ble_gap_sec_kdist_t kdist_peer; /**< Key distribution bitmap: keys that the remote device will distribute. */ +} ble_gap_sec_params_t; + + +/**@brief GAP Encryption Information. */ +typedef struct +{ + uint8_t ltk[BLE_GAP_SEC_KEY_LEN]; /**< Long Term Key. */ + uint8_t lesc : 1; /**< Key generated using LE Secure Connections. */ + uint8_t auth : 1; /**< Authenticated Key. */ + uint8_t ltk_len : 6; /**< LTK length in octets. */ +} ble_gap_enc_info_t; + + +/**@brief GAP Master Identification. */ +typedef struct +{ + uint16_t ediv; /**< Encrypted Diversifier. */ + uint8_t rand[BLE_GAP_SEC_RAND_LEN]; /**< Random Number. */ +} ble_gap_master_id_t; + + +/**@brief GAP Signing Information. */ +typedef struct +{ + uint8_t csrk[BLE_GAP_SEC_KEY_LEN]; /**< Connection Signature Resolving Key. */ +} ble_gap_sign_info_t; + + +/**@brief GAP LE Secure Connections P-256 Public Key. */ +typedef struct +{ + uint8_t pk[BLE_GAP_LESC_P256_PK_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key. Stored in the standard SMP protocol format: {X,Y} both in little-endian. */ +} ble_gap_lesc_p256_pk_t; + + +/**@brief GAP LE Secure Connections DHKey. */ +typedef struct +{ + uint8_t key[BLE_GAP_LESC_DHKEY_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman Key. Stored in little-endian. */ +} ble_gap_lesc_dhkey_t; + + +/**@brief GAP LE Secure Connections OOB data. */ +typedef struct +{ + ble_gap_addr_t addr; /**< Bluetooth address of the device. */ + uint8_t r[BLE_GAP_SEC_KEY_LEN]; /**< Random Number. */ + uint8_t c[BLE_GAP_SEC_KEY_LEN]; /**< Confirm Value. */ +} ble_gap_lesc_oob_data_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONNECTED. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 + and the address is the device's identity address. */ + uint8_t role; /**< BLE role for this connection, see @ref BLE_GAP_ROLES */ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_connected_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_DISCONNECTED. */ +typedef struct +{ + uint8_t reason; /**< HCI error code, see @ref BLE_HCI_STATUS_CODES. */ +} ble_gap_evt_disconnected_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE. */ +typedef struct +{ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_conn_param_update_t; + +/**@brief Event structure for @ref BLE_GAP_EVT_PHY_UPDATE_REQUEST. */ +typedef struct +{ + ble_gap_phys_t peer_preferred_phys; /**< The PHYs the peer prefers to use. */ +} ble_gap_evt_phy_update_request_t; + +/**@brief Event Structure for @ref BLE_GAP_EVT_PHY_UPDATE. */ +typedef struct +{ + uint8_t status; /**< Status of the procedure, see @ref BLE_HCI_STATUS_CODES.*/ + uint8_t tx_phy; /**< TX PHY for this connection, see @ref BLE_GAP_PHYS. */ + uint8_t rx_phy; /**< RX PHY for this connection, see @ref BLE_GAP_PHYS. */ +} ble_gap_evt_phy_update_t; + +/**@brief Event structure for @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST. */ +typedef struct +{ + ble_gap_sec_params_t peer_params; /**< Initiator Security Parameters. */ +} ble_gap_evt_sec_params_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SEC_INFO_REQUEST. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ + ble_gap_master_id_t master_id; /**< Master Identification for LTK lookup. */ + uint8_t enc_info : 1; /**< If 1, Encryption Information required. */ + uint8_t id_info : 1; /**< If 1, Identity Information required. */ + uint8_t sign_info : 1; /**< If 1, Signing Information required. */ +} ble_gap_evt_sec_info_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_PASSKEY_DISPLAY. */ +typedef struct +{ + uint8_t passkey[BLE_GAP_PASSKEY_LEN]; /**< 6-digit passkey in ASCII ('0'-'9' digits only). */ + uint8_t match_request : 1; /**< If 1 requires the application to report the match using @ref sd_ble_gap_auth_key_reply + with either @ref BLE_GAP_AUTH_KEY_TYPE_NONE if there is no match or + @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY if there is a match. */ +} ble_gap_evt_passkey_display_t; + +/**@brief Event structure for @ref BLE_GAP_EVT_KEY_PRESSED. */ +typedef struct +{ + uint8_t kp_not; /**< Keypress notification type, see @ref BLE_GAP_KP_NOT_TYPES. */ +} ble_gap_evt_key_pressed_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_KEY_REQUEST. */ +typedef struct +{ + uint8_t key_type; /**< See @ref BLE_GAP_AUTH_KEY_TYPES. */ +} ble_gap_evt_auth_key_request_t; + +/**@brief Event structure for @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST. */ +typedef struct +{ + ble_gap_lesc_p256_pk_t *p_pk_peer; /**< LE Secure Connections remote P-256 Public Key. This will point to the application-supplied memory + inside the keyset during the call to @ref sd_ble_gap_sec_params_reply. */ + uint8_t oobd_req :1; /**< LESC OOB data required. A call to @ref sd_ble_gap_lesc_oob_data_set is required to complete the procedure. */ +} ble_gap_evt_lesc_dhkey_request_t; + + +/**@brief Security levels supported. + * @note See Bluetooth Specification Version 4.2 Volume 3, Part C, Chapter 10, Section 10.2.1. +*/ +typedef struct +{ + uint8_t lv1 : 1; /**< If 1: Level 1 is supported. */ + uint8_t lv2 : 1; /**< If 1: Level 2 is supported. */ + uint8_t lv3 : 1; /**< If 1: Level 3 is supported. */ + uint8_t lv4 : 1; /**< If 1: Level 4 is supported. */ +} ble_gap_sec_levels_t; + + +/**@brief Encryption Key. */ +typedef struct +{ + ble_gap_enc_info_t enc_info; /**< Encryption Information. */ + ble_gap_master_id_t master_id; /**< Master Identification. */ +} ble_gap_enc_key_t; + + +/**@brief Identity Key. */ +typedef struct +{ + ble_gap_irk_t id_info; /**< Identity Resolving Key. */ + ble_gap_addr_t id_addr_info; /**< Identity Address. */ +} ble_gap_id_key_t; + + +/**@brief Security Keys. */ +typedef struct +{ + ble_gap_enc_key_t *p_enc_key; /**< Encryption Key, or NULL. */ + ble_gap_id_key_t *p_id_key; /**< Identity Key, or NULL. */ + ble_gap_sign_info_t *p_sign_key; /**< Signing Key, or NULL. */ + ble_gap_lesc_p256_pk_t *p_pk; /**< LE Secure Connections P-256 Public Key. When in debug mode the application must use the value defined + in the Core Bluetooth Specification v4.2 Vol.3, Part H, Section 2.3.5.6.1 */ +} ble_gap_sec_keys_t; + + +/**@brief Security key set for both local and peer keys. */ +typedef struct +{ + ble_gap_sec_keys_t keys_own; /**< Keys distributed by the local device. For LE Secure Connections the encryption key will be generated locally and will always be stored if bonding. */ + ble_gap_sec_keys_t keys_peer; /**< Keys distributed by the remote device. For LE Secure Connections, p_enc_key must always be NULL. */ +} ble_gap_sec_keyset_t; + + +/**@brief Data Length Update Procedure parameters. */ +typedef struct +{ + uint16_t max_tx_octets; /**< Maximum number of payload octets that a Controller supports for transmission of a single Link Layer Data Channel PDU. */ + uint16_t max_rx_octets; /**< Maximum number of payload octets that a Controller supports for reception of a single Link Layer Data Channel PDU. */ + uint16_t max_tx_time_us; /**< Maximum time, in microseconds, that a Controller supports for transmission of a single Link Layer Data Channel PDU. */ + uint16_t max_rx_time_us; /**< Maximum time, in microseconds, that a Controller supports for reception of a single Link Layer Data Channel PDU. */ +} ble_gap_data_length_params_t; + + +/**@brief Data Length Update Procedure local limitation. */ +typedef struct +{ + uint16_t tx_payload_limited_octets; /**< If > 0, the requested TX packet length is too long by this many octets. */ + uint16_t rx_payload_limited_octets; /**< If > 0, the requested RX packet length is too long by this many octets. */ + uint16_t tx_rx_time_limited_us; /**< If > 0, the requested combination of TX and RX packet lengths is too long by this many microseconds. */ +} ble_gap_data_length_limitation_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_STATUS. */ +typedef struct +{ + uint8_t auth_status; /**< Authentication status, see @ref BLE_GAP_SEC_STATUS. */ + uint8_t error_src : 2; /**< On error, source that caused the failure, see @ref BLE_GAP_SEC_STATUS_SOURCES. */ + uint8_t bonded : 1; /**< Procedure resulted in a bond. */ + uint8_t lesc : 1; /**< Procedure resulted in a LE Secure Connection. */ + ble_gap_sec_levels_t sm1_levels; /**< Levels supported in Security Mode 1. */ + ble_gap_sec_levels_t sm2_levels; /**< Levels supported in Security Mode 2. */ + ble_gap_sec_kdist_t kdist_own; /**< Bitmap stating which keys were exchanged (distributed) by the local device. If bonding with LE Secure Connections, the enc bit will be always set. */ + ble_gap_sec_kdist_t kdist_peer; /**< Bitmap stating which keys were exchanged (distributed) by the remote device. If bonding with LE Secure Connections, the enc bit will never be set. */ +} ble_gap_evt_auth_status_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONN_SEC_UPDATE. */ +typedef struct +{ + ble_gap_conn_sec_t conn_sec; /**< Connection security level. */ +} ble_gap_evt_conn_sec_update_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_TIMEOUT. */ +typedef struct +{ + uint8_t src; /**< Source of timeout event, see @ref BLE_GAP_TIMEOUT_SOURCES. */ +} ble_gap_evt_timeout_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_RSSI_CHANGED. */ +typedef struct +{ + int8_t rssi; /**< Received Signal Strength Indication in dBm. */ +} ble_gap_evt_rssi_changed_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_ADV_REPORT. */ +typedef struct +{ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 + and the address is the device's identity address. */ + ble_gap_addr_t direct_addr; /**< Set when the scanner is unable to resolve the private resolvable address of the initiator + field of a directed advertisement packet and the scanner has been enabled to report this in @ref ble_gap_scan_params_t::adv_dir_report. */ + int8_t rssi; /**< Received Signal Strength Indication in dBm. */ + uint8_t scan_rsp : 1; /**< If 1, the report corresponds to a scan response and the type field may be ignored. */ + uint8_t type : 2; /**< See @ref BLE_GAP_ADV_TYPES. Only valid if the scan_rsp field is 0. */ + uint8_t dlen : 5; /**< Advertising or scan response data length. */ + uint8_t data[BLE_GAP_ADV_MAX_SIZE]; /**< Advertising or scan response data. */ +} ble_gap_evt_adv_report_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SEC_REQUEST. */ +typedef struct +{ + uint8_t bond : 1; /**< Perform bonding. */ + uint8_t mitm : 1; /**< Man In The Middle protection requested. */ + uint8_t lesc : 1; /**< LE Secure Connections requested. */ + uint8_t keypress : 1; /**< Generation of keypress notifications requested. */ +} ble_gap_evt_sec_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST. */ +typedef struct +{ + ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ +} ble_gap_evt_conn_param_update_request_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_SCAN_REQ_REPORT. */ +typedef struct +{ + int8_t rssi; /**< Received Signal Strength Indication in dBm. */ + ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 + and the address is the device's identity address. */ +} ble_gap_evt_scan_req_report_t; + + +/**@brief Event structure for @ref BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST. */ +typedef struct +{ + ble_gap_data_length_params_t peer_params; /**< Peer data length parameters. */ +} ble_gap_evt_data_length_update_request_t; + +/**@brief Event structure for @ref BLE_GAP_EVT_DATA_LENGTH_UPDATE. */ +typedef struct +{ + ble_gap_data_length_params_t effective_params; /**< The effective data length parameters. */ +} ble_gap_evt_data_length_update_t; + + +/**@brief GAP event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occurred. */ + union /**< union alternative identified by evt_id in enclosing struct. */ + { + ble_gap_evt_connected_t connected; /**< Connected Event Parameters. */ + ble_gap_evt_disconnected_t disconnected; /**< Disconnected Event Parameters. */ + ble_gap_evt_conn_param_update_t conn_param_update; /**< Connection Parameter Update Parameters. */ + ble_gap_evt_sec_params_request_t sec_params_request; /**< Security Parameters Request Event Parameters. */ + ble_gap_evt_sec_info_request_t sec_info_request; /**< Security Information Request Event Parameters. */ + ble_gap_evt_passkey_display_t passkey_display; /**< Passkey Display Event Parameters. */ + ble_gap_evt_key_pressed_t key_pressed; /**< Key Pressed Event Parameters. */ + ble_gap_evt_auth_key_request_t auth_key_request; /**< Authentication Key Request Event Parameters. */ + ble_gap_evt_lesc_dhkey_request_t lesc_dhkey_request; /**< LE Secure Connections DHKey calculation request. */ + ble_gap_evt_auth_status_t auth_status; /**< Authentication Status Event Parameters. */ + ble_gap_evt_conn_sec_update_t conn_sec_update; /**< Connection Security Update Event Parameters. */ + ble_gap_evt_timeout_t timeout; /**< Timeout Event Parameters. */ + ble_gap_evt_rssi_changed_t rssi_changed; /**< RSSI Event Parameters. */ + ble_gap_evt_adv_report_t adv_report; /**< Advertising Report Event Parameters. */ + ble_gap_evt_sec_request_t sec_request; /**< Security Request Event Parameters. */ + ble_gap_evt_conn_param_update_request_t conn_param_update_request; /**< Connection Parameter Update Parameters. */ + ble_gap_evt_scan_req_report_t scan_req_report; /**< Scan Request Report Parameters. */ + ble_gap_evt_phy_update_request_t phy_update_request; /**< PHY Update Request Event Parameters. */ + ble_gap_evt_phy_update_t phy_update; /**< PHY Update Parameters. */ + ble_gap_evt_data_length_update_request_t data_length_update_request; /**< Data Length Update Request Event Parameters. */ + ble_gap_evt_data_length_update_t data_length_update; /**< Data Length Update Event Parameters. */ + } params; /**< Event Parameters. */ +} ble_gap_evt_t; + + +/** + * @brief BLE GAP connection configuration parameters, set with @ref sd_ble_cfg_set. + * + * @retval ::NRF_ERROR_CONN_COUNT The connection count for the connection configurations is zero. + * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: + * - The sum of conn_count for all connection configurations combined exceeds UINT8_MAX. + * - The event length is smaller than @ref BLE_GAP_EVENT_LENGTH_MIN. + */ +typedef struct +{ + uint8_t conn_count; /**< The number of concurrent connections the application can create with this configuration. + The default and minimum value is @ref BLE_GAP_CONN_COUNT_DEFAULT. */ + uint16_t event_length; /**< The time set aside for this connection on every connection interval in 1.25 ms units. + The default value is @ref BLE_GAP_EVENT_LENGTH_DEFAULT, the minimum value is @ref BLE_GAP_EVENT_LENGTH_MIN. + The event length and the connection interval are the primary parameters + for setting the throughput of a connection. + See the SoftDevice Specification for details on throughput. */ +} ble_gap_conn_cfg_t; + + +/** + * @brief Configuration of maximum concurrent connections in the different connected roles, set with + * @ref sd_ble_cfg_set. + * + * @retval ::NRF_ERROR_CONN_COUNT The sum of periph_role_count and central_role_count is too + * large. The maximum supported sum of concurrent connections is + * @ref BLE_GAP_ROLE_COUNT_COMBINED_MAX. + * @retval ::NRF_ERROR_INVALID_PARAM central_sec_count is larger than central_role_count. + */ +typedef struct +{ + uint8_t periph_role_count; /**< Maximum number of connections concurrently acting as a peripheral. Default value is @ref BLE_GAP_ROLE_COUNT_PERIPH_DEFAULT. */ + uint8_t central_role_count; /**< Maximum number of connections concurrently acting as a central. Default value is @ref BLE_GAP_ROLE_COUNT_CENTRAL_DEFAULT. */ + uint8_t central_sec_count; /**< Number of SMP instances shared between all connections acting as a central. Default value is @ref BLE_GAP_ROLE_COUNT_CENTRAL_SEC_DEFAULT. */ +} ble_gap_cfg_role_count_t; + + +/** + * @brief Device name and its properties, set with @ref sd_ble_cfg_set. + * + * @note If the device name is not configured, the default device name will be + * @ref BLE_GAP_DEVNAME_DEFAULT, the maximum device name length will be + * @ref BLE_GAP_DEVNAME_DEFAULT_LEN, vloc will be set to @ref BLE_GATTS_VLOC_STACK and the device name + * will have no write access. + * + * @note If @ref max_len is more than @ref BLE_GAP_DEVNAME_DEFAULT_LEN and vloc is set to @ref BLE_GATTS_VLOC_STACK, + * the attribute table size must be increased to have room for the longer device name (see + * @ref sd_ble_cfg_set and @ref ble_gatts_cfg_attr_tab_size_t). + * + * @note If vloc is @ref BLE_GATTS_VLOC_STACK : + * - p_value must point to non-volatile memory (flash) or be NULL. + * - If p_value is NULL, the device name will initially be empty. + * + * @note If vloc is @ref BLE_GATTS_VLOC_USER : + * - p_value cannot be NULL. + * - If the device name is writable, p_value must point to volatile memory (RAM). + * + * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: + * - Invalid device name location (vloc). + * - Invalid device name security mode. + * @retval ::NRF_ERROR_INVALID_LENGTH One or more of the following is true: + * - The device name length is invalid (must be between 0 and @ref BLE_GAP_DEVNAME_MAX_LEN). + * - The device name length is too long for the given Attribute Table. + * @retval ::NRF_ERROR_NOT_SUPPORTED Device name security mode is not supported. + */ +typedef struct +{ + ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ + uint8_t vloc:2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ + uint8_t *p_value; /**< Pointer to where the value (device name) is stored or will be stored. */ + uint16_t current_len; /**< Current length in bytes of the memory pointed to by p_value.*/ + uint16_t max_len; /**< Maximum length in bytes of the memory pointed to by p_value.*/ +} ble_gap_cfg_device_name_t; + + +/**@brief Configuration structure for GAP configurations. */ +typedef union +{ + ble_gap_cfg_role_count_t role_count_cfg; /**< Role count configuration, cfg_id is @ref BLE_GAP_CFG_ROLE_COUNT. */ + ble_gap_cfg_device_name_t device_name_cfg; /**< Device name configuration, cfg_id is @ref BLE_GAP_CFG_DEVICE_NAME. */ +} ble_gap_cfg_t; + + +/**@brief Channel Map option. + * Used with @ref sd_ble_opt_get to get the current channel map + * or @ref sd_ble_opt_set to set a new channel map. When setting the + * channel map, it applies to all current and future connections. When getting the + * current channel map, it applies to a single connection and the connection handle + * must be supplied. + * + * @note Setting the channel map may take some time, depending on connection parameters. + * The time taken may be different for each connection and the get operation will + * return the previous channel map until the new one has taken effect. + * + * @note After setting the channel map, by spec it can not be set again until at least 1 s has passed. + * See Bluetooth Specification Version 4.1 Volume 2, Part E, Section 7.3.46. + * + * @retval ::NRF_SUCCESS Get or set successful. + * @retval ::NRF_ERROR_BUSY Channel map was set again before enough time had passed. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied for get. + * @retval ::NRF_ERROR_NOT_SUPPORTED Returned by sd_ble_opt_set in peripheral-only SoftDevices. + * + */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle (only applicable for get) */ + uint8_t ch_map[5]; /**< Channel Map (37-bit). */ +} ble_gap_opt_ch_map_t; + + +/**@brief Local connection latency option. + * + * Local connection latency is a feature which enables the slave to improve + * current consumption by ignoring the slave latency set by the peer. The + * local connection latency can only be set to a multiple of the slave latency, + * and cannot be longer than half of the supervision timeout. + * + * Used with @ref sd_ble_opt_set to set the local connection latency. The + * @ref sd_ble_opt_get is not supported for this option, but the actual + * local connection latency (unless set to NULL) is set as a return parameter + * when setting the option. + * + * @note The latency set will be truncated down to the closest slave latency event + * multiple, or the nearest multiple before half of the supervision timeout. + * + * @note The local connection latency is disabled by default, and needs to be enabled for new + * connections and whenever the connection is updated. + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. + */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle */ + uint16_t requested_latency; /**< Requested local connection latency. */ + uint16_t * p_actual_latency; /**< Pointer to storage for the actual local connection latency (can be set to NULL to skip return value). */ +} ble_gap_opt_local_conn_latency_t; + +/**@brief Disable slave latency + * + * Used with @ref sd_ble_opt_set to temporarily disable slave latency of a peripheral connection (see @ref ble_gap_conn_params_t::slave_latency). And to re-enable it again. + * When disabled, the peripheral will ignore the slave_latency set by the central. + * + * @note Shall only be called on peripheral links. + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. + */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle */ + uint8_t disable : 1; /**< Set to 1 to disable slave latency. Set to 0 enable it again.*/ +} ble_gap_opt_slave_latency_disable_t; + +/**@brief Passkey Option. + * + * Structure containing the passkey to be used during pairing. This can be used with @ref + * sd_ble_opt_set to make the SoftDevice use a preprogrammed passkey for authentication + * instead of generating a random one. + * + * @note Repeated pairing attempts using the same preprogrammed passkey makes pairing vulnerable to MITM attacks. + * + * @note @ref sd_ble_opt_get is not supported for this option. + * + */ +typedef struct +{ + uint8_t const * p_passkey; /**< Pointer to 6-digit ASCII string (digit 0..9 only, no NULL termination) passkey to be used during pairing. If this is NULL, the SoftDevice will generate a random passkey if required.*/ +} ble_gap_opt_passkey_t; + + +/**@brief Scan request report option. + * + * This can be used with @ref sd_ble_opt_set to make the SoftDevice send + * @ref BLE_GAP_EVT_SCAN_REQ_REPORT events. + * + * @note Due to the limited space reserved for scan request report events, + * not all received scan requests will be reported. + * + * @note If whitelisting is used, only whitelisted requests are reported. + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_STATE When advertising is ongoing while the option is set. + */ +typedef struct +{ + uint8_t enable : 1; /**< Enable scan request reports. */ +} ble_gap_opt_scan_req_report_t; + + +/**@brief Compatibility mode 1 option. + * + * This can be used with @ref sd_ble_opt_set to enable and disable + * compatibility mode 1. Compatibility mode 1 is disabled by default. + * + * @note Compatibility mode 1 enables interoperability with devices that do not support a value of + * 0 for the WinOffset parameter in the Link Layer CONNECT_IND packet. This applies to a + * limited set of legacy peripheral devices from another vendor. Enabling this compatibility + * mode will only have an effect if the local device will act as a central device and + * initiate a connection to a peripheral device. In that case it may lead to the connection + * creation taking up to one connection interval longer to complete for all connections. + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_STATE When connection creation is ongoing while mode 1 is set. + */ +typedef struct +{ + uint8_t enable : 1; /**< Enable compatibility mode 1.*/ +} ble_gap_opt_compat_mode_1_t; + + +/**@brief Authenticated payload timeout option. + * + * This can be used with @ref sd_ble_opt_set to change the Authenticated payload timeout to a value other + * than the default of @ref BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MAX. + * + * @note The authenticated payload timeout event ::BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD will be generated + * if auth_payload_timeout time has elapsed without receiving a packet with a valid MIC on an encrypted + * link. + * + * @note The LE ping procedure will be initiated before the timer expires to give the peer a chance + * to reset the timer. In addition the stack will try to prioritize running of LE ping over other + * activities to increase chances of finishing LE ping before timer expires. To avoid side-effects + * on other activities, it is recommended to use high timeout values. + * Recommended timeout > 2*(connInterval * (6 + connSlaveLatency)). + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. auth_payload_timeout was outside of allowed range. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. + */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle */ + uint16_t auth_payload_timeout; /**< Requested timeout in 10 ms unit, see @ref BLE_GAP_AUTH_PAYLOAD_TIMEOUT. */ +} ble_gap_opt_auth_payload_timeout_t; + + +/**@brief Option structure for GAP options. */ +typedef union +{ + ble_gap_opt_ch_map_t ch_map; /**< Parameters for the Channel Map option. */ + ble_gap_opt_local_conn_latency_t local_conn_latency; /**< Parameters for the Local connection latency option */ + ble_gap_opt_passkey_t passkey; /**< Parameters for the Passkey option.*/ + ble_gap_opt_scan_req_report_t scan_req_report; /**< Parameters for the scan request report option.*/ + ble_gap_opt_compat_mode_1_t compat_mode_1; /**< Parameters for the compatibility mode 1 option.*/ + ble_gap_opt_auth_payload_timeout_t auth_payload_timeout; /**< Parameters for the authenticated payload timeout option.*/ + ble_gap_opt_slave_latency_disable_t slave_latency_disable; /**< Parameters for the Disable slave latency option */ +} ble_gap_opt_t; +/**@} */ + + +/**@addtogroup BLE_GAP_FUNCTIONS Functions + * @{ */ + +/**@brief Set the local Bluetooth identity address. + * + * The local Bluetooth identity address is the address that identifies this device to other peers. + * The address type must be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. + * + * @note The identity address cannot be changed while advertising, scanning or creating a connection. + * + * @note This address will be distributed to the peer during bonding. + * If the address changes, the address stored in the peer device will not be valid and the ability to + * reconnect using the old address will be lost. + * + * @note By default the SoftDevice will set an address of type @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC upon being + * enabled. The address is a random number populated during the IC manufacturing process and remains unchanged + * for the lifetime of each IC. + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @endmscs + * + * @param[in] p_addr Pointer to address structure. + * + * @retval ::NRF_SUCCESS Address successfully set. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_INVALID_STATE The identity address cannot be changed while advertising, + * scanning or creating a connection. + */ +SVCALL(SD_BLE_GAP_ADDR_SET, uint32_t, sd_ble_gap_addr_set(ble_gap_addr_t const *p_addr)); + + +/**@brief Get local Bluetooth identity address. + * + * @note This will always return the identity address irrespective of the privacy settings, + * i.e. the address type will always be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. + * + * @param[out] p_addr Pointer to address structure to be filled in. + * + * @retval ::NRF_SUCCESS Address successfully retrieved. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. + */ +SVCALL(SD_BLE_GAP_ADDR_GET, uint32_t, sd_ble_gap_addr_get(ble_gap_addr_t *p_addr)); + + +/**@brief Set the active whitelist in the SoftDevice. + * + * @note Only one whitelist can be used at a time and the whitelist is shared between the BLE roles. + * The whitelist cannot be set if a BLE role is using the whitelist. + * + * @note If an address is resolved using the information in the device identity list, then the whitelist + * filter policy applies to the peer identity address and not the resolvable address sent on air. + * + * @mscs + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_PRIVATE_SCAN_MSC} + * @endmscs + * + * @param[in] pp_wl_addrs Pointer to a whitelist of peer addresses, if NULL the whitelist will be cleared. + * @param[in] len Length of the whitelist, maximum @ref BLE_GAP_WHITELIST_ADDR_MAX_COUNT. + * + * @retval ::NRF_SUCCESS The whitelist is successfully set/cleared. + * @retval ::NRF_ERROR_INVALID_ADDR The whitelist (or one of its entries) provided is invalid. + * @retval ::BLE_ERROR_GAP_WHITELIST_IN_USE The whitelist is in use by a BLE role and cannot be set or cleared. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. + * @retval ::NRF_ERROR_DATA_SIZE The given whitelist size is invalid (zero or too large); this can only return when + * pp_wl_addrs is not NULL. + */ +SVCALL(SD_BLE_GAP_WHITELIST_SET, uint32_t, sd_ble_gap_whitelist_set(ble_gap_addr_t const * const * pp_wl_addrs, uint8_t len)); + + +/**@brief Set device identity list. + * + * @note Only one device identity list can be used at a time and the list is shared between the BLE roles. + * The device identity list cannot be set if a BLE role is using the list. + * + * @param[in] pp_id_keys Pointer to an array of peer identity addresses and peer IRKs, if NULL the device identity list will be cleared. + * @param[in] pp_local_irks Pointer to an array of local IRKs. Each entry in the array maps to the entry in pp_id_keys at the same index. + * To fill in the list with the currently set device IRK for all peers, set to NULL. + * @param[in] len Length of the device identity list, maximum @ref BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT. + * + * @mscs + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_PRIVATE_SCAN_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_PRIV_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS The device identity list successfully set/cleared. + * @retval ::NRF_ERROR_INVALID_ADDR The device identity list (or one of its entries) provided is invalid. + * This code may be returned if the local IRK list also has an invalid entry. + * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE The device identity list is in use and cannot be set or cleared. + * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE The device identity list contains multiple entries with the same identity address. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. + * @retval ::NRF_ERROR_DATA_SIZE The given device identity list size invalid (zero or too large); this can + * only return when pp_id_keys is not NULL. + */ +SVCALL(SD_BLE_GAP_DEVICE_IDENTITIES_SET, uint32_t, sd_ble_gap_device_identities_set(ble_gap_id_key_t const * const * pp_id_keys, ble_gap_irk_t const * const * pp_local_irks, uint8_t len)); + + +/**@brief Set privacy settings. + * + * @note Privacy settings cannot be changed while advertising, scanning or creating a connection. + * + * @param[in] p_privacy_params Privacy settings. + * + * @mscs + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Set successfully. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. + * @retval ::NRF_ERROR_INVALID_ADDR The pointer to privacy settings is NULL or invalid. + * Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. + * @retval ::NRF_ERROR_INVALID_PARAM Out of range parameters are provided. + * @retval ::NRF_ERROR_INVALID_STATE Privacy settings cannot be changed while advertising, scanning + * or creating a connection. + */ +SVCALL(SD_BLE_GAP_PRIVACY_SET, uint32_t, sd_ble_gap_privacy_set(ble_gap_privacy_params_t const *p_privacy_params)); + + +/**@brief Get privacy settings. + * + * @note ::ble_gap_privacy_params_t::p_device_irk must be initialized to NULL or a valid address before this function is called. + * If it is initialized to a valid address, the address pointed to will contain the current device IRK on return. + * + * @param[in,out] p_privacy_params Privacy settings. + * + * @retval ::NRF_SUCCESS Privacy settings read. + * @retval ::NRF_ERROR_INVALID_ADDR The pointer given for returning the privacy settings may be NULL or invalid. + * Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. + */ +SVCALL(SD_BLE_GAP_PRIVACY_GET, uint32_t, sd_ble_gap_privacy_get(ble_gap_privacy_params_t *p_privacy_params)); + + +/**@brief Set, clear or update advertising and scan response data. + * + * @note The format of the advertising data will be checked by this call to ensure interoperability. + * Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and + * duplicating the local name in the advertising data and scan response data. + * + * @note To clear the advertising data and set it to a 0-length packet, simply provide a valid pointer (p_data/p_sr_data) with its corresponding + * length (dlen/srdlen) set to 0. + * + * @note The call will fail if p_data and p_sr_data are both NULL since this would have no effect. + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @param[in] p_data Raw data to be placed in advertising packet. If NULL, no changes are made to the current advertising packet data. + * @param[in] dlen Data length for p_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_data is NULL, can be 0 if p_data is not NULL. + * @param[in] p_sr_data Raw data to be placed in scan response packet. If NULL, no changes are made to the current scan response packet data. + * @param[in] srdlen Data length for p_sr_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_sr_data is NULL, can be 0 if p_data is not NULL. + * + * @retval ::NRF_SUCCESS Advertising data successfully updated or cleared. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, both p_data and p_sr_data cannot be NULL. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_FLAGS Invalid combination of advertising flags supplied. + * @retval ::NRF_ERROR_INVALID_DATA Invalid data type(s) supplied, check the advertising data format specification. + * @retval ::NRF_ERROR_INVALID_LENGTH Invalid data length(s) supplied. + * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported data type. + * @retval ::BLE_ERROR_GAP_UUID_LIST_MISMATCH Invalid UUID list supplied. + */ +SVCALL(SD_BLE_GAP_ADV_DATA_SET, uint32_t, sd_ble_gap_adv_data_set(uint8_t const *p_data, uint8_t dlen, uint8_t const *p_sr_data, uint8_t srdlen)); + + +/**@brief Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). + * + * @note Only one advertiser may be active at any time. + * + * @events + * @event{@ref BLE_GAP_EVT_CONNECTED, Generated after connection has been established through connectable advertising.} + * @event{@ref BLE_GAP_EVT_TIMEOUT, Advertisement has timed out.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} + * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @param[in] p_adv_params Pointer to advertising parameters structure. + * @param[in] conn_cfg_tag Tag identifying a configuration set by @ref sd_ble_cfg_set or + * @ref BLE_CONN_CFG_TAG_DEFAULT to use the default connection configuration. If + * @ref ble_gap_adv_params_t::type is @ref BLE_GAP_ADV_TYPE_ADV_NONCONN_IND, + * this is ignored. + * + * @retval ::NRF_SUCCESS The BLE stack has started advertising. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached; connectable advertiser cannot be started. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check the accepted ranges and limits. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Bluetooth address supplied. + * @retval ::BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST Discoverable mode and whitelist incompatible. + * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. + * Stop one or more currently active roles (Central, Peripheral, Broadcaster or Observer) and try again + */ +SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(ble_gap_adv_params_t const *p_adv_params, uint8_t conn_cfg_tag)); + + +/**@brief Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). + * + * @mscs + * @mmsc{@ref BLE_GAP_ADV_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS The BLE stack has stopped advertising. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation (most probably not in advertising state). + */ +SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(void)); + + + +/**@brief Update connection parameters. + * + * @details In the central role this will initiate a Link Layer connection parameter update procedure, + * otherwise in the peripheral role, this will send the corresponding L2CAP request and wait for + * the central to perform the procedure. In both cases, and regardless of success or failure, the application + * will be informed of the result with a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE event. + * + * @details This function can be used as a central both to reply to a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST or to start the procedure unrequested. + * + * @events + * @event{@ref BLE_GAP_EVT_CONN_PARAM_UPDATE, Result of the connection parameter update procedure.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CPU_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} + * @mmsc{@ref BLE_GAP_MULTILINK_CPU_MSC} + * @mmsc{@ref BLE_GAP_MULTILINK_CTRL_PROC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CPU_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_conn_params Pointer to desired connection parameters. If NULL is provided on a peripheral role, + * the parameters in the PPCP characteristic of the GAP service will be used instead. + * If NULL is provided on a central role and in response to a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST, the peripheral request will be rejected + * + * @retval ::NRF_SUCCESS The Connection Update procedure has been started successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_BUSY Procedure already in progress, wait for pending procedures to complete and retry. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const *p_conn_params)); + + +/**@brief Disconnect (GAP Link Termination). + * + * @details This call initiates the disconnection procedure, and its completion will be communicated to the application + * with a @ref BLE_GAP_EVT_DISCONNECTED event. + * + * @events + * @event{@ref BLE_GAP_EVT_DISCONNECTED, Generated when disconnection procedure is complete.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CONN_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] hci_status_code HCI status code, see @ref BLE_HCI_STATUS_CODES (accepted values are @ref BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION and @ref BLE_HCI_CONN_INTERVAL_UNACCEPTABLE). + * + * @retval ::NRF_SUCCESS The disconnection procedure has been started successfully. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation (disconnection is already in progress). + */ +SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code)); + + +/**@brief Set the radio's transmit power. + * + * @param[in] tx_power Radio transmit power in dBm (accepted values are -40, -20, -16, -12, -8, -4, 0, 3, and 4 dBm). + * + * @retval ::NRF_SUCCESS Successfully changed the transmit power. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(int8_t tx_power)); + + +/**@brief Set GAP Appearance value. + * + * @param[in] appearance Appearance (16-bit), see @ref BLE_APPEARANCES. + * + * @retval ::NRF_SUCCESS Appearance value set successfully. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance)); + + +/**@brief Get GAP Appearance value. + * + * @param[out] p_appearance Pointer to appearance (16-bit) to be filled in, see @ref BLE_APPEARANCES. + * + * @retval ::NRF_SUCCESS Appearance value retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t *p_appearance)); + + +/**@brief Set GAP Peripheral Preferred Connection Parameters. + * + * @param[in] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure with the desired parameters. + * + * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters set successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + */ +SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const *p_conn_params)); + + +/**@brief Get GAP Peripheral Preferred Connection Parameters. + * + * @param[out] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure where the parameters will be stored. + * + * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t *p_conn_params)); + + +/**@brief Set GAP device name. + * + * @note If the device name is located in application flash memory (see @ref ble_gap_cfg_device_name_t), + * it cannot be changed. Then @ref NRF_ERROR_FORBIDDEN will be returned. + * + * @param[in] p_write_perm Write permissions for the Device Name characteristic, see @ref ble_gap_conn_sec_mode_t. + * @param[in] p_dev_name Pointer to a UTF-8 encoded, non NULL-terminated string. + * @param[in] len Length of the UTF-8, non NULL-terminated string pointed to by p_dev_name in octets (must be smaller or equal than @ref BLE_GAP_DEVNAME_MAX_LEN). + * + * @retval ::NRF_SUCCESS GAP device name and permissions set successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + * @retval ::NRF_ERROR_FORBIDDEN Device name is not writable. + */ +SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len)); + + +/**@brief Get GAP device name. + * + * @note If the device name is longer than the size of the supplied buffer, + * p_len will return the complete device name length, + * and not the number of bytes actually returned in p_dev_name. + * The application may use this information to allocate a suitable buffer size. + * + * @param[out] p_dev_name Pointer to an empty buffer where the UTF-8 non NULL-terminated string will be placed. Set to NULL to obtain the complete device name length. + * @param[in,out] p_len Length of the buffer pointed by p_dev_name, complete device name length on output. + * + * @retval ::NRF_SUCCESS GAP device name retrieved successfully. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + */ +SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t *p_dev_name, uint16_t *p_len)); + + +/**@brief Initiate the GAP Authentication procedure. + * + * @details In the central role, this function will send an SMP Pairing Request (or an SMP Pairing Failed if rejected), + * otherwise in the peripheral role, an SMP Security Request will be sent. + * + * @events + * @event{Depending on the security parameters set and the packet exchanges with the peer\, the following events may be generated:} + * @event{@ref BLE_GAP_EVT_SEC_PARAMS_REQUEST} + * @event{@ref BLE_GAP_EVT_SEC_INFO_REQUEST} + * @event{@ref BLE_GAP_EVT_PASSKEY_DISPLAY} + * @event{@ref BLE_GAP_EVT_KEY_PRESSED} + * @event{@ref BLE_GAP_EVT_AUTH_KEY_REQUEST} + * @event{@ref BLE_GAP_EVT_LESC_DHKEY_REQUEST} + * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE} + * @event{@ref BLE_GAP_EVT_AUTH_STATUS} + * @event{@ref BLE_GAP_EVT_TIMEOUT} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_SEC_REQ_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_SEC_REQ_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_sec_params Pointer to the @ref ble_gap_sec_params_t structure with the security parameters to be used during the pairing or bonding procedure. + * In the peripheral role, only the bond, mitm, lesc and keypress fields of this structure are used. + * In the central role, this pointer may be NULL to reject a Security Request. + * + * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_NO_MEM The maximum number of authentication procedures that can run in parallel for the given role is reached. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. + * @retval ::NRF_ERROR_TIMEOUT A SMP timeout has occurred, and further SMP operations on this link is prohibited. + */ +SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const *p_sec_params)); + + +/**@brief Reply with GAP security parameters. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_PERIPH_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_CONFIRM_FAIL_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_KS_TOO_SMALL_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_APP_ERROR_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_REMOTE_PAIRING_FAIL_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_TIMEOUT_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] sec_status Security status, see @ref BLE_GAP_SEC_STATUS. + * @param[in] p_sec_params Pointer to a @ref ble_gap_sec_params_t security parameters structure. In the central role this must be set to NULL, as the parameters have + * already been provided during a previous call to @ref sd_ble_gap_authenticate. + * @param[in,out] p_sec_keyset Pointer to a @ref ble_gap_sec_keyset_t security keyset structure. Any keys generated and/or distributed as a result of the ongoing security procedure + * will be stored into the memory referenced by the pointers inside this structure. The keys will be stored and available to the application + * upon reception of a @ref BLE_GAP_EVT_AUTH_STATUS event. + * Note that the SoftDevice expects the application to provide memory for storing the + * peer's keys. So it must be ensured that the relevant pointers inside this structure are not NULL. The pointers to the local key + * can, however, be NULL, in which case, the local key data will not be available to the application upon reception of the + * @ref BLE_GAP_EVT_AUTH_STATUS event. + * + * @retval ::NRF_SUCCESS Successfully accepted security parameter from the application. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. + */ +SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const *p_sec_params, ble_gap_sec_keyset_t const *p_sec_keyset)); + + +/**@brief Reply with an authentication key. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_AUTH_KEY_REQUEST or a @ref BLE_GAP_EVT_PASSKEY_DISPLAY, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] key_type See @ref BLE_GAP_AUTH_KEY_TYPES. + * @param[in] p_key If key type is @ref BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL. + * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination) + * or NULL when confirming LE Secure Connections Numeric Comparison. + * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in little-endian format. + * + * @retval ::NRF_SUCCESS Authentication key successfully set. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const *p_key)); + + +/**@brief Reply with an LE Secure connections DHKey. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_dhkey LE Secure Connections DHKey. + * + * @retval ::NRF_SUCCESS DHKey successfully set. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_LESC_DHKEY_REPLY, uint32_t, sd_ble_gap_lesc_dhkey_reply(uint16_t conn_handle, ble_gap_lesc_dhkey_t const *p_dhkey)); + + +/**@brief Notify the peer of a local keypress. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] kp_not See @ref BLE_GAP_KP_NOT_TYPES. + * + * @retval ::NRF_SUCCESS Keypress notification successfully queued for transmission. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either not entering a passkey or keypresses have not been enabled by both peers. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_BUSY The BLE stack is busy. Retry at later time. + */ +SVCALL(SD_BLE_GAP_KEYPRESS_NOTIFY, uint32_t, sd_ble_gap_keypress_notify(uint16_t conn_handle, uint8_t kp_not)); + + +/**@brief Generate a set of OOB data to send to a peer out of band. + * + * @note The @ref ble_gap_addr_t included in the OOB data returned will be the currently active one (or, if a connection has already been established, + * the one used during connection setup). The application may manually overwrite it with an updated value. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. Can be @ref BLE_CONN_HANDLE_INVALID if a BLE connection has not been established yet. + * @param[in] p_pk_own LE Secure Connections local P-256 Public Key. + * @param[out] p_oobd_own The OOB data to be sent out of band to a peer. + * + * @retval ::NRF_SUCCESS OOB data successfully generated. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_LESC_OOB_DATA_GET, uint32_t, sd_ble_gap_lesc_oob_data_get(uint16_t conn_handle, ble_gap_lesc_p256_pk_t const *p_pk_own, ble_gap_lesc_oob_data_t *p_oobd_own)); + +/**@brief Provide the OOB data sent/received out of band. + * + * @note An authentication procedure with OOB selected as an algorithm must be in progress when calling this function. + * @note A @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST event with the oobd_req set to 1 must have been received prior to calling this function. + * + * @events + * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_oobd_own The OOB data sent out of band to a peer or NULL if the peer has not received OOB data. + * Must correspond to @ref ble_gap_sec_params_t::oob flag in @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST. + * @param[in] p_oobd_peer The OOB data received out of band from a peer or NULL if none received. + * Must correspond to @ref ble_gap_sec_params_t::oob flag in @ref sd_ble_gap_authenticate in the central role + * or @ref sd_ble_gap_sec_params_reply in the peripheral role. + * + * @retval ::NRF_SUCCESS OOB data accepted. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_LESC_OOB_DATA_SET, uint32_t, sd_ble_gap_lesc_oob_data_set(uint16_t conn_handle, ble_gap_lesc_oob_data_t const *p_oobd_own, ble_gap_lesc_oob_data_t const *p_oobd_peer)); + + +/**@brief Initiate GAP Encryption procedure. + * + * @details In the central role, this function will initiate the encryption procedure using the encryption information provided. + * + * @events + * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE, The connection security has been updated.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_ENC_MSC} + * @mmsc{@ref BLE_GAP_MULTILINK_CTRL_PROC_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_SEC_REQ_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_master_id Pointer to a @ref ble_gap_master_id_t master identification structure. + * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. + * + * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::BLE_ERROR_INVALID_ROLE Operation is not supported in the Peripheral role. + * @retval ::NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, wait for pending procedures to complete and retry. + */ +SVCALL(SD_BLE_GAP_ENCRYPT, uint32_t, sd_ble_gap_encrypt(uint16_t conn_handle, ble_gap_master_id_t const *p_master_id, ble_gap_enc_info_t const *p_enc_info)); + + +/**@brief Reply with GAP security information. + * + * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in @ref NRF_ERROR_INVALID_STATE. + * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. + * @note Data signing is not yet supported, and p_sign_info must therefore be NULL. + * + * @mscs + * @mmsc{@ref BLE_GAP_PERIPH_ENC_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available. + * @param[in] p_id_info Pointer to a @ref ble_gap_irk_t identity information structure. May be NULL to signal none is available. + * @param[in] p_sign_info Pointer to a @ref ble_gap_sign_info_t signing information structure. May be NULL to signal none is available. + * + * @retval ::NRF_SUCCESS Successfully accepted security information. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const *p_enc_info, ble_gap_irk_t const *p_id_info, ble_gap_sign_info_t const *p_sign_info)); + + +/**@brief Get the current connection security. + * + * @param[in] conn_handle Connection handle. + * @param[out] p_conn_sec Pointer to a @ref ble_gap_conn_sec_t structure to be filled in. + * + * @retval ::NRF_SUCCESS Current connection security successfully retrieved. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t *p_conn_sec)); + + +/**@brief Start reporting the received signal strength to the application. + * + * A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called. + * + * @events + * @event{@ref BLE_GAP_EVT_RSSI_CHANGED, New RSSI data available. How often the event is generated is + * dependent on the settings of the threshold_dbm + * and skip_count input parameters.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} + * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] threshold_dbm Minimum change in dBm before triggering the @ref BLE_GAP_EVT_RSSI_CHANGED event. Events are disabled if threshold_dbm equals @ref BLE_GAP_RSSI_THRESHOLD_INVALID. + * @param[in] skip_count Number of RSSI samples with a change of threshold_dbm or more before sending a new @ref BLE_GAP_EVT_RSSI_CHANGED event. + * + * @retval ::NRF_SUCCESS Successfully activated RSSI reporting. + * @retval ::NRF_ERROR_INVALID_STATE Disconnection in progress. Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle, uint8_t threshold_dbm, uint8_t skip_count)); + + +/**@brief Stop reporting the received signal strength. + * + * @note An RSSI change detected before the call but not yet received by the application + * may be reported after @ref sd_ble_gap_rssi_stop has been called. + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} + * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * + * @retval ::NRF_SUCCESS Successfully deactivated RSSI reporting. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + */ +SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle)); + + +/**@brief Get the received signal strength for the last connection event. + * + * @ref sd_ble_gap_rssi_start must be called to start reporting RSSI before using this function. @ref NRF_ERROR_NOT_FOUND + * will be returned until RSSI was sampled for the first time after calling @ref sd_ble_gap_rssi_start. + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[out] p_rssi Pointer to the location where the RSSI measurement shall be stored. + * + * @retval ::NRF_SUCCESS Successfully read the RSSI. + * @retval ::NRF_ERROR_NOT_FOUND No sample is available. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is not ongoing, or disconnection in progress. + */ +SVCALL(SD_BLE_GAP_RSSI_GET, uint32_t, sd_ble_gap_rssi_get(uint16_t conn_handle, int8_t *p_rssi)); + + +/**@brief Start scanning (GAP Discovery procedure, Observer Procedure). + * + * @events + * @event{@ref BLE_GAP_EVT_ADV_REPORT, An advertising or scan response packet has been received.} + * @event{@ref BLE_GAP_EVT_TIMEOUT, Scanner has timed out.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_SCAN_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @param[in] p_scan_params Pointer to scan parameters structure. + * + * @retval ::NRF_SUCCESS Successfully initiated scanning procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. + * Stop one or more currently active roles (Central, Peripheral or Broadcaster) and try again + */ +SVCALL(SD_BLE_GAP_SCAN_START, uint32_t, sd_ble_gap_scan_start(ble_gap_scan_params_t const *p_scan_params)); + + +/**@brief Stop scanning (GAP Discovery procedure, Observer Procedure). + * + * @mscs + * @mmsc{@ref BLE_GAP_SCAN_MSC} + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Successfully stopped scanning procedure. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation (most probably not in scanning state). + */ +SVCALL(SD_BLE_GAP_SCAN_STOP, uint32_t, sd_ble_gap_scan_stop(void)); + + +/**@brief Create a connection (GAP Link Establishment). + * + * @note If a scanning procedure is currently in progress it will be automatically stopped when calling this function. + * The scanning procedure will be stopped even if the function returns an error. + * + * @mscs + * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_PRIV_MSC} + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_MSC} + * @endmscs + * + * @param[in] p_peer_addr Pointer to peer address. If the use_whitelist bit is set in @ref ble_gap_scan_params_t, then this is ignored. + * @param[in] p_scan_params Pointer to scan parameters structure. + * @param[in] p_conn_params Pointer to desired connection parameters. + * @param[in] conn_cfg_tag Tag identifying a configuration set by @ref sd_ble_cfg_set or + * @ref BLE_CONN_CFG_TAG_DEFAULT to use the default connection configuration. + * + * @retval ::NRF_SUCCESS Successfully initiated connection procedure. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid parameter(s) pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * - Invalid parameter(s) in p_scan_params or p_conn_params. + * - Use of whitelist requested but whitelist has not been set, see @ref sd_ble_gap_whitelist_set. + * - Peer address was not present in the device identity list, see @ref sd_ble_gap_device_identities_set. + * @retval ::NRF_ERROR_INVALID_STATE The SoftDevice is in an invalid state to perform this operation. This may be due to an + * existing locally initiated connect procedure, which must complete before initiating again. + * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Peer address. + * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached. + * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. + * Stop one or more currently active roles (Central, Peripheral or Broadcaster) and try again + */ +SVCALL(SD_BLE_GAP_CONNECT, uint32_t, sd_ble_gap_connect(ble_gap_addr_t const *p_peer_addr, ble_gap_scan_params_t const *p_scan_params, ble_gap_conn_params_t const *p_conn_params, uint8_t conn_cfg_tag)); + + +/**@brief Cancel a connection establishment. + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_CONN_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Successfully canceled an ongoing connection procedure. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + */ +SVCALL(SD_BLE_GAP_CONNECT_CANCEL, uint32_t, sd_ble_gap_connect_cancel(void)); + + +/**@brief Initiate or respond to a PHY Update Procedure + * + * @details This function is used to initiate or respond to a PHY Update Procedure. It will always + * generate a @ref BLE_GAP_EVT_PHY_UPDATE event if successfully executed. + * If this function is used to initiate a PHY Update procedure and the only option + * provided in @ref ble_gap_phys_t::tx_phys and @ref ble_gap_phys_t::rx_phys is the + * currently active PHYs in the respective directions, the SoftDevice will generate a + * @ref BLE_GAP_EVT_PHY_UPDATE with the current PHYs set and will not initiate the + * procedure in the Link Layer. + * If @ref ble_gap_phys_t::tx_phys or @ref ble_gap_phys_t::rx_phys is + * @ref BLE_GAP_PHY_AUTO, then the stack will select a PHY for the respective direction + * based on the peer's PHY preferences and the local stack configuration. + * If the peer does not support the PHY Update Procedure, then the resulting + * @ref BLE_GAP_EVT_PHY_UPDATE event will have a status set to + * @ref BLE_HCI_UNSUPPORTED_REMOTE_FEATURE. + * If the PHY procedure was rejected by the peer due to a procedure collision, the status + * will be @ref BLE_HCI_STATUS_CODE_LMP_ERROR_TRANSACTION_COLLISION or + * @ref BLE_HCI_DIFFERENT_TRANSACTION_COLLISION. + * If the peer responds to the PHY Update procedure with invalid parameters, the status + * will be @ref BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS. + * If the PHY procedure was rejected by the peer for a different reason, the status will + * contain the reason as specified by the peer. + * + * @events + * @event{@ref BLE_GAP_EVT_PHY_UPDATE, Result of the PHY Update Procedure.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GAP_CENTRAL_PHY_UPDATE} + * @mmsc{@ref BLE_GAP_PERIPHERAL_PHY_UPDATE} + * @endmscs + * + * @param[in] conn_handle Connection handle to indicate the connection for which the PHY Update is requested. + * @param[in] p_gap_phys Pointer to PHY structure. + * + * @retval ::NRF_SUCCESS Successfully requested a PHY Update. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Unsupported PHYs supplied to the call. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_BUSY Procedure is already in progress or not allowed at this time. Process pending events and wait for the pending procedure to complete and retry. + * + */ +SVCALL(SD_BLE_GAP_PHY_UPDATE, uint32_t, sd_ble_gap_phy_update(uint16_t conn_handle, ble_gap_phys_t const *p_gap_phys)); + + +/**@brief Initiate or respond to a Data Length Update Procedure. + * + * @note Only symmetric input parameters for the Data Length Update is supported. Only + * @ref BLE_GAP_DATA_LENGTH_AUTO for max_tx_time_us and max_rx_time_us is supported. + * + * @note If the application uses @ref BLE_GAP_DATA_LENGTH_AUTO for one or more members of + * p_dl_params, the SoftDevice will choose the highest value supported in current + * configuration and connection parameters. + * + * @param[in] conn_handle Connection handle. + * @param[in] p_dl_params Pointer to local parameters to be used in Data Length Update + * Procedure. Set any member to @ref BLE_GAP_DATA_LENGTH_AUTO to let + * the SoftDevice automatically decide the value for that member. + * Set to NULL to use automatic values for all members. + * @param[out] p_dl_limitation Pointer to limitation to be written when local device does not + * have enough resources to accommodate the requested Data Length + * Update parameters. Ignored if NULL. + * + * @mscs + * @mmsc{@ref BLE_GAP_DATA_LENGTH_UPDATE_PROCEDURE_MSC} + * @endmscs + * + * @retval ::NRF_SUCCESS Successfully set Data Length Extension initiation/response parameters. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameters supplied. + * @retval ::NRF_ERROR_NOT_SUPPORTED The requested parameters are not supported by the SoftDevice. + * @retval ::NRF_ERROR_RESOURCES The requested parameters can not be accommodated. Inspect + * p_dl_limitation so see where the limitation is. + * @retval ::NRF_ERROR_BUSY Peer has already initiated a Data Length Update Procedure. Process the + * pending @ref BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST event to respond. + */ +SVCALL(SD_BLE_GAP_DATA_LENGTH_UPDATE, uint32_t, sd_ble_gap_data_length_update(uint16_t conn_handle, ble_gap_data_length_params_t const *p_dl_params, ble_gap_data_length_limitation_t *p_dl_limitation)); + + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // BLE_GAP_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gatt.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gatt.h new file mode 100644 index 0000000..f1651c8 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gatt.h @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2013 - 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. + */ + +/** + @addtogroup BLE_GATT Generic Attribute Profile (GATT) Common + @{ + @brief Common definitions and prototypes for the GATT interfaces. + */ + +#ifndef BLE_GATT_H__ +#define BLE_GATT_H__ + +#include +#include "nrf_svc.h" +#include "nrf_error.h" +#include "ble_hci.h" +#include "ble_ranges.h" +#include "ble_types.h" +#include "ble_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup BLE_GATT_DEFINES Defines + * @{ */ + +/** @brief Default ATT MTU, in bytes. */ +#define BLE_GATT_ATT_MTU_DEFAULT 23 + +/**@brief Invalid Attribute Handle. */ +#define BLE_GATT_HANDLE_INVALID 0x0000 + +/**@brief First Attribute Handle. */ +#define BLE_GATT_HANDLE_START 0x0001 + +/**@brief Last Attribute Handle. */ +#define BLE_GATT_HANDLE_END 0xFFFF + +/** @defgroup BLE_GATT_TIMEOUT_SOURCES GATT Timeout sources + * @{ */ +#define BLE_GATT_TIMEOUT_SRC_PROTOCOL 0x00 /**< ATT Protocol timeout. */ +/** @} */ + +/** @defgroup BLE_GATT_WRITE_OPS GATT Write operations + * @{ */ +#define BLE_GATT_OP_INVALID 0x00 /**< Invalid Operation. */ +#define BLE_GATT_OP_WRITE_REQ 0x01 /**< Write Request. */ +#define BLE_GATT_OP_WRITE_CMD 0x02 /**< Write Command. */ +#define BLE_GATT_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ +#define BLE_GATT_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ +#define BLE_GATT_OP_EXEC_WRITE_REQ 0x05 /**< Execute Write Request. */ +/** @} */ + +/** @defgroup BLE_GATT_EXEC_WRITE_FLAGS GATT Execute Write flags + * @{ */ +#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL 0x00 /**< Cancel prepared write. */ +#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE 0x01 /**< Execute prepared write. */ +/** @} */ + +/** @defgroup BLE_GATT_HVX_TYPES GATT Handle Value operations + * @{ */ +#define BLE_GATT_HVX_INVALID 0x00 /**< Invalid Operation. */ +#define BLE_GATT_HVX_NOTIFICATION 0x01 /**< Handle Value Notification. */ +#define BLE_GATT_HVX_INDICATION 0x02 /**< Handle Value Indication. */ +/** @} */ + +/** @defgroup BLE_GATT_STATUS_CODES GATT Status Codes + * @{ */ +#define BLE_GATT_STATUS_SUCCESS 0x0000 /**< Success. */ +#define BLE_GATT_STATUS_UNKNOWN 0x0001 /**< Unknown or not applicable status. */ +#define BLE_GATT_STATUS_ATTERR_INVALID 0x0100 /**< ATT Error: Invalid Error Code. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_HANDLE 0x0101 /**< ATT Error: Invalid Attribute Handle. */ +#define BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED 0x0102 /**< ATT Error: Read not permitted. */ +#define BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED 0x0103 /**< ATT Error: Write not permitted. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_PDU 0x0104 /**< ATT Error: Used in ATT as Invalid PDU. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION 0x0105 /**< ATT Error: Authenticated link required. */ +#define BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED 0x0106 /**< ATT Error: Used in ATT as Request Not Supported. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_OFFSET 0x0107 /**< ATT Error: Offset specified was past the end of the attribute. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION 0x0108 /**< ATT Error: Used in ATT as Insufficient Authorization. */ +#define BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL 0x0109 /**< ATT Error: Used in ATT as Prepare Queue Full. */ +#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND 0x010A /**< ATT Error: Used in ATT as Attribute not found. */ +#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG 0x010B /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE 0x010C /**< ATT Error: Encryption key size used is insufficient. */ +#define BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH 0x010D /**< ATT Error: Invalid value size. */ +#define BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR 0x010E /**< ATT Error: Very unlikely error. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION 0x010F /**< ATT Error: Encrypted link required. */ +#define BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE 0x0110 /**< ATT Error: Attribute type is not a supported grouping attribute. */ +#define BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES 0x0111 /**< ATT Error: Encrypted link required. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN 0x0112 /**< ATT Error: Reserved for Future Use range #1 begin. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END 0x017F /**< ATT Error: Reserved for Future Use range #1 end. */ +#define BLE_GATT_STATUS_ATTERR_APP_BEGIN 0x0180 /**< ATT Error: Application range begin. */ +#define BLE_GATT_STATUS_ATTERR_APP_END 0x019F /**< ATT Error: Application range end. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN 0x01A0 /**< ATT Error: Reserved for Future Use range #2 begin. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END 0x01DF /**< ATT Error: Reserved for Future Use range #2 end. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN 0x01E0 /**< ATT Error: Reserved for Future Use range #3 begin. */ +#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END 0x01FC /**< ATT Error: Reserved for Future Use range #3 end. */ +#define BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR 0x01FD /**< ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */ +#define BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG 0x01FE /**< ATT Common Profile and Service Error: Procedure Already in Progress. */ +#define BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE 0x01FF /**< ATT Common Profile and Service Error: Out Of Range. */ +/** @} */ + + +/** @defgroup BLE_GATT_CPF_FORMATS Characteristic Presentation Formats + * @note Found at http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml + * @{ */ +#define BLE_GATT_CPF_FORMAT_RFU 0x00 /**< Reserved For Future Use. */ +#define BLE_GATT_CPF_FORMAT_BOOLEAN 0x01 /**< Boolean. */ +#define BLE_GATT_CPF_FORMAT_2BIT 0x02 /**< Unsigned 2-bit integer. */ +#define BLE_GATT_CPF_FORMAT_NIBBLE 0x03 /**< Unsigned 4-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT8 0x04 /**< Unsigned 8-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT12 0x05 /**< Unsigned 12-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT16 0x06 /**< Unsigned 16-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT24 0x07 /**< Unsigned 24-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT32 0x08 /**< Unsigned 32-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT48 0x09 /**< Unsigned 48-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT64 0x0A /**< Unsigned 64-bit integer. */ +#define BLE_GATT_CPF_FORMAT_UINT128 0x0B /**< Unsigned 128-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT8 0x0C /**< Signed 2-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT12 0x0D /**< Signed 12-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT16 0x0E /**< Signed 16-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT24 0x0F /**< Signed 24-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT32 0x10 /**< Signed 32-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT48 0x11 /**< Signed 48-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT64 0x12 /**< Signed 64-bit integer. */ +#define BLE_GATT_CPF_FORMAT_SINT128 0x13 /**< Signed 128-bit integer. */ +#define BLE_GATT_CPF_FORMAT_FLOAT32 0x14 /**< IEEE-754 32-bit floating point. */ +#define BLE_GATT_CPF_FORMAT_FLOAT64 0x15 /**< IEEE-754 64-bit floating point. */ +#define BLE_GATT_CPF_FORMAT_SFLOAT 0x16 /**< IEEE-11073 16-bit SFLOAT. */ +#define BLE_GATT_CPF_FORMAT_FLOAT 0x17 /**< IEEE-11073 32-bit FLOAT. */ +#define BLE_GATT_CPF_FORMAT_DUINT16 0x18 /**< IEEE-20601 format. */ +#define BLE_GATT_CPF_FORMAT_UTF8S 0x19 /**< UTF-8 string. */ +#define BLE_GATT_CPF_FORMAT_UTF16S 0x1A /**< UTF-16 string. */ +#define BLE_GATT_CPF_FORMAT_STRUCT 0x1B /**< Opaque Structure. */ +/** @} */ + +/** @defgroup BLE_GATT_CPF_NAMESPACES GATT Bluetooth Namespaces + * @{ + */ +#define BLE_GATT_CPF_NAMESPACE_BTSIG 0x01 /**< Bluetooth SIG defined Namespace. */ +#define BLE_GATT_CPF_NAMESPACE_DESCRIPTION_UNKNOWN 0x0000 /**< Namespace Description Unknown. */ +/** @} */ + +/** @} */ + +/** @addtogroup BLE_GATT_STRUCTURES Structures + * @{ */ + +/** + * @brief BLE GATT connection configuration parameters, set with @ref sd_ble_cfg_set. + * + * @retval ::NRF_ERROR_INVALID_PARAM att_mtu is smaller than @ref BLE_GATT_ATT_MTU_DEFAULT. + */ +typedef struct +{ + uint16_t att_mtu; /**< Maximum size of ATT packet the SoftDevice can send or receive. + The default and minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. + @mscs + @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} + @mmsc{@ref BLE_GATTS_MTU_EXCHANGE} + @endmscs + */ +} ble_gatt_conn_cfg_t; + +/**@brief GATT Characteristic Properties. */ +typedef struct +{ + /* Standard properties */ + uint8_t broadcast :1; /**< Broadcasting of the value permitted. */ + uint8_t read :1; /**< Reading the value permitted. */ + uint8_t write_wo_resp :1; /**< Writing the value with Write Command permitted. */ + uint8_t write :1; /**< Writing the value with Write Request permitted. */ + uint8_t notify :1; /**< Notification of the value permitted. */ + uint8_t indicate :1; /**< Indications of the value permitted. */ + uint8_t auth_signed_wr :1; /**< Writing the value with Signed Write Command permitted. */ +} ble_gatt_char_props_t; + +/**@brief GATT Characteristic Extended Properties. */ +typedef struct +{ + /* Extended properties */ + uint8_t reliable_wr :1; /**< Writing the value with Queued Write operations permitted. */ + uint8_t wr_aux :1; /**< Writing the Characteristic User Description descriptor permitted. */ +} ble_gatt_char_ext_props_t; + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // BLE_GATT_H__ + +/** @} */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gattc.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gattc.h new file mode 100644 index 0000000..f1428cd --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gattc.h @@ -0,0 +1,707 @@ +/* + * Copyright (c) 2011 - 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. + */ + +/** + @addtogroup BLE_GATTC Generic Attribute Profile (GATT) Client + @{ + @brief Definitions and prototypes for the GATT Client interface. + */ + +#ifndef BLE_GATTC_H__ +#define BLE_GATTC_H__ + +#include +#include "nrf.h" +#include "nrf_svc.h" +#include "nrf_error.h" +#include "ble_hci.h" +#include "ble_ranges.h" +#include "ble_types.h" +#include "ble_err.h" +#include "ble_gatt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup BLE_GATTC_ENUMERATIONS Enumerations + * @{ */ + +/**@brief GATTC API SVC numbers. */ +enum BLE_GATTC_SVCS +{ + SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER = BLE_GATTC_SVC_BASE, /**< Primary Service Discovery. */ + SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, /**< Relationship Discovery. */ + SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, /**< Characteristic Discovery. */ + SD_BLE_GATTC_DESCRIPTORS_DISCOVER, /**< Characteristic Descriptor Discovery. */ + SD_BLE_GATTC_ATTR_INFO_DISCOVER, /**< Attribute Information Discovery. */ + SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, /**< Read Characteristic Value by UUID. */ + SD_BLE_GATTC_READ, /**< Generic read. */ + SD_BLE_GATTC_CHAR_VALUES_READ, /**< Read multiple Characteristic Values. */ + SD_BLE_GATTC_WRITE, /**< Generic write. */ + SD_BLE_GATTC_HV_CONFIRM, /**< Handle Value Confirmation. */ + SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. */ +}; + +/** + * @brief GATT Client Event IDs. + */ +enum BLE_GATTC_EVTS +{ + BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP = BLE_GATTC_EVT_BASE, /**< Primary Service Discovery Response event. \n See @ref ble_gattc_evt_prim_srvc_disc_rsp_t. */ + BLE_GATTC_EVT_REL_DISC_RSP, /**< Relationship Discovery Response event. \n See @ref ble_gattc_evt_rel_disc_rsp_t. */ + BLE_GATTC_EVT_CHAR_DISC_RSP, /**< Characteristic Discovery Response event. \n See @ref ble_gattc_evt_char_disc_rsp_t. */ + BLE_GATTC_EVT_DESC_DISC_RSP, /**< Descriptor Discovery Response event. \n See @ref ble_gattc_evt_desc_disc_rsp_t. */ + BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, /**< Attribute Information Response event. \n See @ref ble_gattc_evt_attr_info_disc_rsp_t. */ + BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP, /**< Read By UUID Response event. \n See @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t. */ + BLE_GATTC_EVT_READ_RSP, /**< Read Response event. \n See @ref ble_gattc_evt_read_rsp_t. */ + BLE_GATTC_EVT_CHAR_VALS_READ_RSP, /**< Read multiple Response event. \n See @ref ble_gattc_evt_char_vals_read_rsp_t. */ + BLE_GATTC_EVT_WRITE_RSP, /**< Write Response event. \n See @ref ble_gattc_evt_write_rsp_t. */ + BLE_GATTC_EVT_HVX, /**< Handle Value Notification or Indication event. \n Confirm indication with @ref sd_ble_gattc_hv_confirm. \n See @ref ble_gattc_evt_hvx_t. */ + BLE_GATTC_EVT_EXCHANGE_MTU_RSP, /**< Exchange MTU Response event. \n See @ref ble_gattc_evt_exchange_mtu_rsp_t. */ + BLE_GATTC_EVT_TIMEOUT, /**< Timeout event. \n See @ref ble_gattc_evt_timeout_t. */ + BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE /**< Write without Response transmission complete. \n See @ref ble_gattc_evt_write_cmd_tx_complete_t. */ +}; + +/** @} */ + +/** @addtogroup BLE_GATTC_DEFINES Defines + * @{ */ + +/** @defgroup BLE_ERRORS_GATTC SVC return values specific to GATTC + * @{ */ +#define BLE_ERROR_GATTC_PROC_NOT_PERMITTED (NRF_GATTC_ERR_BASE + 0x000) /**< Procedure not Permitted. */ +/** @} */ + +/** @defgroup BLE_GATTC_ATTR_INFO_FORMAT Attribute Information Formats + * @{ */ +#define BLE_GATTC_ATTR_INFO_FORMAT_16BIT 1 /**< 16-bit Attribute Information Format. */ +#define BLE_GATTC_ATTR_INFO_FORMAT_128BIT 2 /**< 128-bit Attribute Information Format. */ +/** @} */ + +/** @defgroup BLE_GATTC_DEFAULTS GATT Client defaults + * @{ */ +#define BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT 1 /**< Default number of Write without Response that can be queued for transmission. */ +/** @} */ + +/** @} */ + +/** @addtogroup BLE_GATTC_STRUCTURES Structures + * @{ */ + +/** + * @brief BLE GATTC connection configuration parameters, set with @ref sd_ble_cfg_set. + */ +typedef struct +{ + uint8_t write_cmd_tx_queue_size; /**< The guaranteed minimum number of Write without Response that can be queued for transmission. + The default value is @ref BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT */ +} ble_gattc_conn_cfg_t; + +/**@brief Operation Handle Range. */ +typedef struct +{ + uint16_t start_handle; /**< Start Handle. */ + uint16_t end_handle; /**< End Handle. */ +} ble_gattc_handle_range_t; + + +/**@brief GATT service. */ +typedef struct +{ + ble_uuid_t uuid; /**< Service UUID. */ + ble_gattc_handle_range_t handle_range; /**< Service Handle Range. */ +} ble_gattc_service_t; + + +/**@brief GATT include. */ +typedef struct +{ + uint16_t handle; /**< Include Handle. */ + ble_gattc_service_t included_srvc; /**< Handle of the included service. */ +} ble_gattc_include_t; + + +/**@brief GATT characteristic. */ +typedef struct +{ + ble_uuid_t uuid; /**< Characteristic UUID. */ + ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ + uint8_t char_ext_props : 1; /**< Extended properties present. */ + uint16_t handle_decl; /**< Handle of the Characteristic Declaration. */ + uint16_t handle_value; /**< Handle of the Characteristic Value. */ +} ble_gattc_char_t; + + +/**@brief GATT descriptor. */ +typedef struct +{ + uint16_t handle; /**< Descriptor Handle. */ + ble_uuid_t uuid; /**< Descriptor UUID. */ +} ble_gattc_desc_t; + + +/**@brief Write Parameters. */ +typedef struct +{ + uint8_t write_op; /**< Write Operation to be performed, see @ref BLE_GATT_WRITE_OPS. */ + uint8_t flags; /**< Flags, see @ref BLE_GATT_EXEC_WRITE_FLAGS. */ + uint16_t handle; /**< Handle to the attribute to be written. */ + uint16_t offset; /**< Offset in bytes. @note For WRITE_CMD and WRITE_REQ, offset must be 0. */ + uint16_t len; /**< Length of data in bytes. */ + uint8_t const *p_value; /**< Pointer to the value data. */ +} ble_gattc_write_params_t; + +/**@brief Attribute Information for 16-bit Attribute UUID. */ +typedef struct +{ + uint16_t handle; /**< Attribute handle. */ + ble_uuid_t uuid; /**< 16-bit Attribute UUID. */ +} ble_gattc_attr_info16_t; + +/**@brief Attribute Information for 128-bit Attribute UUID. */ +typedef struct +{ + uint16_t handle; /**< Attribute handle. */ + ble_uuid128_t uuid; /**< 128-bit Attribute UUID. */ +} ble_gattc_attr_info128_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Service count. */ + ble_gattc_service_t services[1]; /**< Service data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_prim_srvc_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_REL_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Include count. */ + ble_gattc_include_t includes[1]; /**< Include data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_rel_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Characteristic count. */ + ble_gattc_char_t chars[1]; /**< Characteristic data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_char_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_DESC_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Descriptor count. */ + ble_gattc_desc_t descs[1]; /**< Descriptor data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_desc_disc_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP. */ +typedef struct +{ + uint16_t count; /**< Attribute count. */ + uint8_t format; /**< Attribute information format, see @ref BLE_GATTC_ATTR_INFO_FORMAT. */ + union { + ble_gattc_attr_info16_t attr_info16[1]; /**< Attribute information for 16-bit Attribute UUID. + @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ + ble_gattc_attr_info128_t attr_info128[1]; /**< Attribute information for 128-bit Attribute UUID. + @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ + } info; /**< Attribute information union. */ +} ble_gattc_evt_attr_info_disc_rsp_t; + +/**@brief GATT read by UUID handle value pair. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint8_t *p_value; /**< Pointer to the Attribute Value, length is available in @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t::value_len. */ +} ble_gattc_handle_value_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP. */ +typedef struct +{ + uint16_t count; /**< Handle-Value Pair Count. */ + uint16_t value_len; /**< Length of the value in Handle-Value(s) list. */ + uint8_t handle_value[1]; /**< Handle-Value(s) list. To iterate through the list use @ref sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter. + @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_char_val_by_uuid_read_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_READ_RSP. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint16_t offset; /**< Offset of the attribute data. */ + uint16_t len; /**< Attribute data length. */ + uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_read_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP. */ +typedef struct +{ + uint16_t len; /**< Concatenated Attribute values length. */ + uint8_t values[1]; /**< Attribute values. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_char_vals_read_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_WRITE_RSP. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + uint8_t write_op; /**< Type of write operation, see @ref BLE_GATT_WRITE_OPS. */ + uint16_t offset; /**< Data offset. */ + uint16_t len; /**< Data length. */ + uint8_t data[1]; /**< Data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_write_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_HVX. */ +typedef struct +{ + uint16_t handle; /**< Handle to which the HVx operation applies. */ + uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ + uint16_t len; /**< Attribute data length. */ + uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gattc_evt_hvx_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. */ +typedef struct +{ + uint16_t server_rx_mtu; /**< Server RX MTU size. */ +} ble_gattc_evt_exchange_mtu_rsp_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_TIMEOUT. */ +typedef struct +{ + uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ +} ble_gattc_evt_timeout_t; + +/**@brief Event structure for @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE. */ +typedef struct +{ + uint8_t count; /**< Number of write without response transmissions completed. */ +} ble_gattc_evt_write_cmd_tx_complete_t; + +/**@brief GATTC event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which event occurred. */ + uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ + uint16_t error_handle; /**< In case of error: The handle causing the error. In all other cases @ref BLE_GATT_HANDLE_INVALID. */ + union + { + ble_gattc_evt_prim_srvc_disc_rsp_t prim_srvc_disc_rsp; /**< Primary Service Discovery Response Event Parameters. */ + ble_gattc_evt_rel_disc_rsp_t rel_disc_rsp; /**< Relationship Discovery Response Event Parameters. */ + ble_gattc_evt_char_disc_rsp_t char_disc_rsp; /**< Characteristic Discovery Response Event Parameters. */ + ble_gattc_evt_desc_disc_rsp_t desc_disc_rsp; /**< Descriptor Discovery Response Event Parameters. */ + ble_gattc_evt_char_val_by_uuid_read_rsp_t char_val_by_uuid_read_rsp; /**< Characteristic Value Read by UUID Response Event Parameters. */ + ble_gattc_evt_read_rsp_t read_rsp; /**< Read Response Event Parameters. */ + ble_gattc_evt_char_vals_read_rsp_t char_vals_read_rsp; /**< Characteristic Values Read Response Event Parameters. */ + ble_gattc_evt_write_rsp_t write_rsp; /**< Write Response Event Parameters. */ + ble_gattc_evt_hvx_t hvx; /**< Handle Value Notification/Indication Event Parameters. */ + ble_gattc_evt_exchange_mtu_rsp_t exchange_mtu_rsp; /**< Exchange MTU Response Event Parameters. */ + ble_gattc_evt_timeout_t timeout; /**< Timeout Event Parameters. */ + ble_gattc_evt_attr_info_disc_rsp_t attr_info_disc_rsp; /**< Attribute Information Discovery Event Parameters. */ + ble_gattc_evt_write_cmd_tx_complete_t write_cmd_tx_complete; /**< Write without Response transmission complete Event Parameters. */ + } params; /**< Event Parameters. @note Only valid if @ref gatt_status == @ref BLE_GATT_STATUS_SUCCESS. */ +} ble_gattc_evt_t; +/** @} */ + +/** @addtogroup BLE_GATTC_FUNCTIONS Functions + * @{ */ + +/**@brief Initiate or continue a GATT Primary Service Discovery procedure. + * + * @details This function initiates or resumes a Primary Service discovery procedure, starting from the supplied handle. + * If the last service has not been reached, this function must be called again with an updated start handle value to continue the search. + * + * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with + * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. + * + * @events + * @event{@ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_PRIM_SRVC_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] start_handle Handle to start searching from. + * @param[in] p_srvc_uuid Pointer to the service UUID to be found. If it is NULL, all primary services will be returned. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Primary Service Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_BUSY GATT Client procedure already in progress or blocked because of a previous GATT procedure timeout. + */ +SVCALL(SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER, uint32_t, sd_ble_gattc_primary_services_discover(uint16_t conn_handle, uint16_t start_handle, ble_uuid_t const *p_srvc_uuid)); + + +/**@brief Initiate or continue a GATT Relationship Discovery procedure. + * + * @details This function initiates or resumes the Find Included Services sub-procedure. If the last included service has not been reached, + * this must be called again with an updated handle range to continue the search. + * + * @events + * @event{@ref BLE_GATTC_EVT_REL_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_REL_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Relationship Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_BUSY GATT Client procedure already in progress or blocked because of a previous GATT procedure timeout. + */ +SVCALL(SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, uint32_t, sd_ble_gattc_relationships_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Characteristic Discovery procedure. + * + * @details This function initiates or resumes a Characteristic discovery procedure. If the last Characteristic has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @note If any of the discovered characteristics have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with + * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. + * + * @events + * @event{@ref BLE_GATTC_EVT_CHAR_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_CHAR_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Characteristic Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY GATT Client procedure already in progress or blocked because of a previous GATT procedure timeout. + */ +SVCALL(SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, uint32_t, sd_ble_gattc_characteristics_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Characteristic Descriptor Discovery procedure. + * + * @details This function initiates or resumes a Characteristic Descriptor discovery procedure. If the last Descriptor has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @events + * @event{@ref BLE_GATTC_EVT_DESC_DISC_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_DESC_DISC_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range A pointer to the range of handles of the Characteristic to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Descriptor Discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY GATT Client procedure already in progress or blocked because of a previous GATT procedure timeout. + */ +SVCALL(SD_BLE_GATTC_DESCRIPTORS_DISCOVER, uint32_t, sd_ble_gattc_descriptors_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Read using Characteristic UUID procedure. + * + * @details This function initiates or resumes a Read using Characteristic UUID procedure. If the last Characteristic has not been reached, + * this must be called again with an updated handle range to continue the discovery. + * + * @events + * @event{@ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_READ_UUID_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_uuid Pointer to a Characteristic value UUID to read. + * @param[in] p_handle_range A pointer to the range of handles to perform this procedure on. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Read using Characteristic UUID procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY GATT Client procedure already in progress or blocked because of a previous GATT procedure timeout. + */ +SVCALL(SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, uint32_t, sd_ble_gattc_char_value_by_uuid_read(uint16_t conn_handle, ble_uuid_t const *p_uuid, ble_gattc_handle_range_t const *p_handle_range)); + + +/**@brief Initiate or continue a GATT Read (Long) Characteristic or Descriptor procedure. + * + * @details This function initiates or resumes a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor + * to be read is longer than ATT_MTU - 1, this function must be called multiple times with appropriate offset to read the + * complete value. + * + * @events + * @event{@ref BLE_GATTC_EVT_READ_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_VALUE_READ_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] handle The handle of the attribute to be read. + * @param[in] offset Offset into the attribute value to be read. + * + * @retval ::NRF_SUCCESS Successfully started or resumed the Read (Long) procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_BUSY GATT Client procedure already in progress or blocked because of a previous GATT procedure timeout. + */ +SVCALL(SD_BLE_GATTC_READ, uint32_t, sd_ble_gattc_read(uint16_t conn_handle, uint16_t handle, uint16_t offset)); + + +/**@brief Initiate a GATT Read Multiple Characteristic Values procedure. + * + * @details This function initiates a GATT Read Multiple Characteristic Values procedure. + * + * @events + * @event{@ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_READ_MULT_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handles A pointer to the handle(s) of the attribute(s) to be read. + * @param[in] handle_count The number of handles in p_handles. + * + * @retval ::NRF_SUCCESS Successfully started the Read Multiple Characteristic Values procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY GATT Client procedure already in progress or blocked because of a previous GATT procedure timeout. + */ +SVCALL(SD_BLE_GATTC_CHAR_VALUES_READ, uint32_t, sd_ble_gattc_char_values_read(uint16_t conn_handle, uint16_t const *p_handles, uint16_t handle_count)); + + +/**@brief Perform a Write (Characteristic Value or Descriptor, with or without response, signed or not, long or reliable) procedure. + * + * @details This function can perform all write procedures described in GATT. + * + * @note Only one write with response procedure can be ongoing per connection at a time. + * If the application tries to write with response while another write with response procedure is ongoing, + * the function call will return @ref NRF_ERROR_BUSY. + * A @ref BLE_GATTC_EVT_WRITE_RSP event will be issued as soon as the write response arrives from the peer. + * + * @note The number of Write without Response that can be queued is configured by @ref ble_gattc_conn_cfg_t::write_cmd_tx_queue_size + * When the queue is full, the function call will return @ref NRF_ERROR_RESOURCES. + * A @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event will be issued as soon as the transmission of the write without response is complete. + * + * @note The application can keep track of the available queue element count for writes without responses by following the procedure below: + * - Store initial queue element count in a variable. + * - Decrement the variable, which stores the currently available queue element count, by one when a call to this function returns @ref NRF_SUCCESS. + * - Increment the variable, which stores the current available queue element count, by the count variable in @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event. + * + * @events + * @event{@ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE, Write without response transmission complete.} + * @event{@ref BLE_GATTC_EVT_WRITE_RSP, Write response received from the peer.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_VALUE_WRITE_WITHOUT_RESP_MSC} + * @mmsc{@ref BLE_GATTC_VALUE_WRITE_MSC} + * @mmsc{@ref BLE_GATTC_VALUE_LONG_WRITE_MSC} + * @mmsc{@ref BLE_GATTC_VALUE_RELIABLE_WRITE_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_write_params A pointer to a write parameters structure. + * + * @retval ::NRF_SUCCESS Successfully started the Write procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + * @retval ::NRF_ERROR_BUSY For write with response, GATT Client procedure already in progress or blocked because of a previous GATT procedure timeout. + Wait for a @ref BLE_GATTC_EVT_WRITE_RSP event and retry. + For write without response it can only mean GATT procedure timeout. + * @retval ::NRF_ERROR_RESOURCES Too many writes without responses queued. + * Wait for a @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event and retry. + */ +SVCALL(SD_BLE_GATTC_WRITE, uint32_t, sd_ble_gattc_write(uint16_t conn_handle, ble_gattc_write_params_t const *p_write_params)); + + +/**@brief Send a Handle Value Confirmation to the GATT Server. + * + * @mscs + * @mmsc{@ref BLE_GATTC_HVI_MSC} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] handle The handle of the attribute in the indication. + * + * @retval ::NRF_SUCCESS Successfully queued the Handle Value Confirmation for transmission. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no Indication pending to be confirmed. + * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle. + */ +SVCALL(SD_BLE_GATTC_HV_CONFIRM, uint32_t, sd_ble_gattc_hv_confirm(uint16_t conn_handle, uint16_t handle)); + +/**@brief Discovers information about a range of attributes on a GATT server. + * + * @events + * @event{@ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, Generated when information about a range of attributes has been received.} + * @endevents + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] p_handle_range The range of handles to request information about. + * + * @retval ::NRF_SUCCESS Successfully started an attribute information discovery procedure. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_BUSY GATT Client procedure already in progress or blocked because of a previous GATT procedure timeout. + */ +SVCALL(SD_BLE_GATTC_ATTR_INFO_DISCOVER, uint32_t, sd_ble_gattc_attr_info_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * p_handle_range)); + +/**@brief Start an ATT_MTU exchange by sending an Exchange MTU Request to the server. + * + * @details The SoftDevice sets ATT_MTU to the minimum of: + * - The Client RX MTU value, and + * - The Server RX MTU value from @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. + * + * However, the SoftDevice never sets ATT_MTU lower than @ref BLE_GATT_ATT_MTU_DEFAULT. + * + * @events + * @event{@ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] client_rx_mtu Client RX MTU size. + * - The minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. + * - The maximum value is @ref ble_gatt_conn_cfg_t::att_mtu in the connection configuration + used for this connection. + * - The value must be equal to Server RX MTU size given in @ref sd_ble_gatts_exchange_mtu_reply + * if an ATT_MTU exchange has already been performed in the other direction. + * + * @retval ::NRF_SUCCESS Successfully sent request to the server. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state or an ATT_MTU exchange was already requested once. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid Client RX MTU size supplied. + * @retval ::NRF_ERROR_BUSY GATT Client procedure already in progress or blocked because of a previous GATT procedure timeout. + */ +SVCALL(SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, uint32_t, sd_ble_gattc_exchange_mtu_request(uint16_t conn_handle, uint16_t client_rx_mtu)); + +/**@brief Iterate through Handle-Value(s) list in @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. + * + * @param[in] p_gattc_evt Pointer to event buffer containing @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. + * @note If the buffer contains different event, behavior is undefined. + * @param[in,out] p_iter Iterator, points to @ref ble_gattc_handle_value_t structure that will be filled in with + * the next Handle-Value pair in each iteration. If the function returns other than + * @ref NRF_SUCCESS, it will not be changed. + * - To start iteration, initialize the structure to zero. + * - To continue, pass the value from previous iteration. + * + * \code + * ble_gattc_handle_value_t iter; + * memset(&iter, 0, sizeof(ble_gattc_handle_value_t)); + * while (sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(&ble_evt.evt.gattc_evt, &iter) == NRF_SUCCESS) + * { + * app_handle = iter.handle; + * memcpy(app_value, iter.p_value, ble_evt.evt.gattc_evt.params.char_val_by_uuid_read_rsp.value_len); + * } + * \endcode + * + * @retval ::NRF_SUCCESS Successfully retrieved the next Handle-Value pair. + * @retval ::NRF_ERROR_NOT_FOUND No more Handle-Value pairs available in the list. + */ +__STATIC_INLINE uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter); + +/** @} */ + +#ifndef SUPPRESS_INLINE_IMPLEMENTATION + +__STATIC_INLINE uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter) +{ + uint32_t value_len = p_gattc_evt->params.char_val_by_uuid_read_rsp.value_len; + uint8_t *p_first = p_gattc_evt->params.char_val_by_uuid_read_rsp.handle_value; + uint8_t *p_next = p_iter->p_value ? p_iter->p_value + value_len : p_first; + + if ((p_next - p_first) / (sizeof(uint16_t) + value_len) < p_gattc_evt->params.char_val_by_uuid_read_rsp.count) + { + p_iter->handle = (uint16_t)p_next[1] << 8 | p_next[0]; + p_iter->p_value = p_next + sizeof(uint16_t); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_NOT_FOUND; + } +} + +#endif /* SUPPRESS_INLINE_IMPLEMENTATION */ + +#ifdef __cplusplus +} +#endif +#endif /* BLE_GATTC_H__ */ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gatts.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gatts.h new file mode 100644 index 0000000..1bba73d --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_gatts.h @@ -0,0 +1,841 @@ +/* + * Copyright (c) 2011 - 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. + */ + +/** + @addtogroup BLE_GATTS Generic Attribute Profile (GATT) Server + @{ + @brief Definitions and prototypes for the GATTS interface. + */ + +#ifndef BLE_GATTS_H__ +#define BLE_GATTS_H__ + +#include +#include "nrf_svc.h" +#include "nrf_error.h" +#include "ble_hci.h" +#include "ble_ranges.h" +#include "ble_types.h" +#include "ble_err.h" +#include "ble_gatt.h" +#include "ble_gap.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup BLE_GATTS_ENUMERATIONS Enumerations + * @{ */ + +/** + * @brief GATTS API SVC numbers. + */ +enum BLE_GATTS_SVCS +{ + SD_BLE_GATTS_SERVICE_ADD = BLE_GATTS_SVC_BASE, /**< Add a service. */ + SD_BLE_GATTS_INCLUDE_ADD, /**< Add an included service. */ + SD_BLE_GATTS_CHARACTERISTIC_ADD, /**< Add a characteristic. */ + SD_BLE_GATTS_DESCRIPTOR_ADD, /**< Add a generic attribute. */ + SD_BLE_GATTS_VALUE_SET, /**< Set an attribute value. */ + SD_BLE_GATTS_VALUE_GET, /**< Get an attribute value. */ + SD_BLE_GATTS_HVX, /**< Handle Value Notification or Indication. */ + SD_BLE_GATTS_SERVICE_CHANGED, /**< Perform a Service Changed Indication to one or more peers. */ + SD_BLE_GATTS_RW_AUTHORIZE_REPLY, /**< Reply to an authorization request for a read or write operation on one or more attributes. */ + SD_BLE_GATTS_SYS_ATTR_SET, /**< Set the persistent system attributes for a connection. */ + SD_BLE_GATTS_SYS_ATTR_GET, /**< Retrieve the persistent system attributes. */ + SD_BLE_GATTS_INITIAL_USER_HANDLE_GET, /**< Retrieve the first valid user handle. */ + SD_BLE_GATTS_ATTR_GET, /**< Retrieve the UUID and/or metadata of an attribute. */ + SD_BLE_GATTS_EXCHANGE_MTU_REPLY /**< Reply to Exchange MTU Request. */ +}; + +/** + * @brief GATT Server Event IDs. + */ +enum BLE_GATTS_EVTS +{ + BLE_GATTS_EVT_WRITE = BLE_GATTS_EVT_BASE, /**< Write operation performed. \n See @ref ble_gatts_evt_write_t. */ + BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST, /**< Read/Write Authorization request. \n Reply with @ref sd_ble_gatts_rw_authorize_reply. \n See @ref ble_gatts_evt_rw_authorize_request_t. */ + BLE_GATTS_EVT_SYS_ATTR_MISSING, /**< A persistent system attribute access is pending. \n Respond with @ref sd_ble_gatts_sys_attr_set. \n See @ref ble_gatts_evt_sys_attr_missing_t. */ + BLE_GATTS_EVT_HVC, /**< Handle Value Confirmation. \n See @ref ble_gatts_evt_hvc_t. */ + BLE_GATTS_EVT_SC_CONFIRM, /**< Service Changed Confirmation. \n No additional event structure applies. */ + BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. \n Reply with @ref sd_ble_gatts_exchange_mtu_reply. \n See @ref ble_gatts_evt_exchange_mtu_request_t. */ + BLE_GATTS_EVT_TIMEOUT, /**< Peer failed to respond to an ATT request in time. \n See @ref ble_gatts_evt_timeout_t. */ + BLE_GATTS_EVT_HVN_TX_COMPLETE /**< Handle Value Notification transmission complete. \n See @ref ble_gatts_evt_hvn_tx_complete_t. */ +}; + +/**@brief GATTS Configuration IDs. + * + * IDs that uniquely identify a GATTS configuration. + */ +enum BLE_GATTS_CFGS +{ + BLE_GATTS_CFG_SERVICE_CHANGED = BLE_GATTS_CFG_BASE, /**< Service changed configuration. */ + BLE_GATTS_CFG_ATTR_TAB_SIZE, /**< Attribute table size configuration. */ +}; + +/** @} */ + +/** @addtogroup BLE_GATTS_DEFINES Defines + * @{ */ + +/** @defgroup BLE_ERRORS_GATTS SVC return values specific to GATTS + * @{ */ +#define BLE_ERROR_GATTS_INVALID_ATTR_TYPE (NRF_GATTS_ERR_BASE + 0x000) /**< Invalid attribute type. */ +#define BLE_ERROR_GATTS_SYS_ATTR_MISSING (NRF_GATTS_ERR_BASE + 0x001) /**< System Attributes missing. */ +/** @} */ + +/** @defgroup BLE_GATTS_ATTR_LENS_MAX Maximum attribute lengths + * @{ */ +#define BLE_GATTS_FIX_ATTR_LEN_MAX (510) /**< Maximum length for fixed length Attribute Values. */ +#define BLE_GATTS_VAR_ATTR_LEN_MAX (512) /**< Maximum length for variable length Attribute Values. */ +/** @} */ + +/** @defgroup BLE_GATTS_SRVC_TYPES GATT Server Service Types + * @{ */ +#define BLE_GATTS_SRVC_TYPE_INVALID 0x00 /**< Invalid Service Type. */ +#define BLE_GATTS_SRVC_TYPE_PRIMARY 0x01 /**< Primary Service. */ +#define BLE_GATTS_SRVC_TYPE_SECONDARY 0x02 /**< Secondary Type. */ +/** @} */ + + +/** @defgroup BLE_GATTS_ATTR_TYPES GATT Server Attribute Types + * @{ */ +#define BLE_GATTS_ATTR_TYPE_INVALID 0x00 /**< Invalid Attribute Type. */ +#define BLE_GATTS_ATTR_TYPE_PRIM_SRVC_DECL 0x01 /**< Primary Service Declaration. */ +#define BLE_GATTS_ATTR_TYPE_SEC_SRVC_DECL 0x02 /**< Secondary Service Declaration. */ +#define BLE_GATTS_ATTR_TYPE_INC_DECL 0x03 /**< Include Declaration. */ +#define BLE_GATTS_ATTR_TYPE_CHAR_DECL 0x04 /**< Characteristic Declaration. */ +#define BLE_GATTS_ATTR_TYPE_CHAR_VAL 0x05 /**< Characteristic Value. */ +#define BLE_GATTS_ATTR_TYPE_DESC 0x06 /**< Descriptor. */ +#define BLE_GATTS_ATTR_TYPE_OTHER 0x07 /**< Other, non-GATT specific type. */ +/** @} */ + + +/** @defgroup BLE_GATTS_OPS GATT Server Operations + * @{ */ +#define BLE_GATTS_OP_INVALID 0x00 /**< Invalid Operation. */ +#define BLE_GATTS_OP_WRITE_REQ 0x01 /**< Write Request. */ +#define BLE_GATTS_OP_WRITE_CMD 0x02 /**< Write Command. */ +#define BLE_GATTS_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ +#define BLE_GATTS_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ +#define BLE_GATTS_OP_EXEC_WRITE_REQ_CANCEL 0x05 /**< Execute Write Request: Cancel all prepared writes. */ +#define BLE_GATTS_OP_EXEC_WRITE_REQ_NOW 0x06 /**< Execute Write Request: Immediately execute all prepared writes. */ +/** @} */ + +/** @defgroup BLE_GATTS_VLOCS GATT Value Locations + * @{ */ +#define BLE_GATTS_VLOC_INVALID 0x00 /**< Invalid Location. */ +#define BLE_GATTS_VLOC_STACK 0x01 /**< Attribute Value is located in stack memory, no user memory is required. */ +#define BLE_GATTS_VLOC_USER 0x02 /**< Attribute Value is located in user memory. This requires the user to maintain a valid buffer through the lifetime of the attribute, since the stack + will read and write directly to the memory using the pointer provided in the APIs. There are no alignment requirements for the buffer. */ +/** @} */ + +/** @defgroup BLE_GATTS_AUTHORIZE_TYPES GATT Server Authorization Types + * @{ */ +#define BLE_GATTS_AUTHORIZE_TYPE_INVALID 0x00 /**< Invalid Type. */ +#define BLE_GATTS_AUTHORIZE_TYPE_READ 0x01 /**< Authorize a Read Operation. */ +#define BLE_GATTS_AUTHORIZE_TYPE_WRITE 0x02 /**< Authorize a Write Request Operation. */ +/** @} */ + +/** @defgroup BLE_GATTS_SYS_ATTR_FLAGS System Attribute Flags + * @{ */ +#define BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS (1 << 0) /**< Restrict system attributes to system services only. */ +#define BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS (1 << 1) /**< Restrict system attributes to user services only. */ +/** @} */ + +/** @defgroup BLE_GATTS_SERVICE_CHANGED Service Changed Inclusion Values + * @{ + */ +#define BLE_GATTS_SERVICE_CHANGED_DEFAULT (1) /**< Default is to include the Service Changed characteristic in the Attribute Table. */ +/** @} */ + +/** @defgroup BLE_GATTS_ATTR_TAB_SIZE Attribute Table size + * @{ + */ +#define BLE_GATTS_ATTR_TAB_SIZE_MIN (248) /**< Minimum Attribute Table size */ +#define BLE_GATTS_ATTR_TAB_SIZE_DEFAULT (1408) /**< Default Attribute Table size. */ +/** @} */ + +/** @defgroup BLE_GATTS_DEFAULTS GATT Server defaults + * @{ + */ +#define BLE_GATTS_HVN_TX_QUEUE_SIZE_DEFAULT 1 /**< Default number of Handle Value Notifications that can be queued for transmission. */ +/** @} */ + +/** @} */ + +/** @addtogroup BLE_GATTS_STRUCTURES Structures + * @{ */ + +/** + * @brief BLE GATTS connection configuration parameters, set with @ref sd_ble_cfg_set. + */ +typedef struct +{ + uint8_t hvn_tx_queue_size; /**< Minimum guaranteed number of Handle Value Notifications that can be queued for transmission. + The default value is @ref BLE_GATTS_HVN_TX_QUEUE_SIZE_DEFAULT */ +} ble_gatts_conn_cfg_t; + +/**@brief Attribute metadata. */ +typedef struct +{ + ble_gap_conn_sec_mode_t read_perm; /**< Read permissions. */ + ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ + uint8_t vlen :1; /**< Variable length attribute. */ + uint8_t vloc :2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ + uint8_t rd_auth :1; /**< Read authorization and value will be requested from the application on every read operation. */ + uint8_t wr_auth :1; /**< Write authorization will be requested from the application on every Write Request operation (but not Write Command). */ +} ble_gatts_attr_md_t; + + +/**@brief GATT Attribute. */ +typedef struct +{ + ble_uuid_t const *p_uuid; /**< Pointer to the attribute UUID. */ + ble_gatts_attr_md_t const *p_attr_md; /**< Pointer to the attribute metadata structure. */ + uint16_t init_len; /**< Initial attribute value length in bytes. */ + uint16_t init_offs; /**< Initial attribute value offset in bytes. If different from zero, the first init_offs bytes of the attribute value will be left uninitialized. */ + uint16_t max_len; /**< Maximum attribute value length in bytes, see @ref BLE_GATTS_ATTR_LENS_MAX for maximum values. */ + uint8_t *p_value; /**< Pointer to the attribute data. Please note that if the @ref BLE_GATTS_VLOC_USER value location is selected in the attribute metadata, this will have to point to a buffer + that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location. + The stack may access that memory directly without the application's knowledge. For writable characteristics, this value must not be a location in flash memory.*/ +} ble_gatts_attr_t; + +/**@brief GATT Attribute Value. */ +typedef struct +{ + uint16_t len; /**< Length in bytes to be written or read. Length in bytes written or read after successful return.*/ + uint16_t offset; /**< Attribute value offset. */ + uint8_t *p_value; /**< Pointer to where value is stored or will be stored. + If value is stored in user memory, only the attribute length is updated when p_value == NULL. + Set to NULL when reading to obtain the complete length of the attribute value */ +} ble_gatts_value_t; + + +/**@brief GATT Characteristic Presentation Format. */ +typedef struct +{ + uint8_t format; /**< Format of the value, see @ref BLE_GATT_CPF_FORMATS. */ + int8_t exponent; /**< Exponent for integer data types. */ + uint16_t unit; /**< Unit from Bluetooth Assigned Numbers. */ + uint8_t name_space; /**< Namespace from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ + uint16_t desc; /**< Namespace description from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ +} ble_gatts_char_pf_t; + + +/**@brief GATT Characteristic metadata. */ +typedef struct +{ + ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ + ble_gatt_char_ext_props_t char_ext_props; /**< Characteristic Extended Properties. */ + uint8_t const *p_char_user_desc; /**< Pointer to a UTF-8 encoded string (non-NULL terminated), NULL if the descriptor is not required. */ + uint16_t char_user_desc_max_size; /**< The maximum size in bytes of the user description descriptor. */ + uint16_t char_user_desc_size; /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */ + ble_gatts_char_pf_t const *p_char_pf; /**< Pointer to a presentation format structure or NULL if the CPF descriptor is not required. */ + ble_gatts_attr_md_t const *p_user_desc_md; /**< Attribute metadata for the User Description descriptor, or NULL for default values. */ + ble_gatts_attr_md_t const *p_cccd_md; /**< Attribute metadata for the Client Characteristic Configuration Descriptor, or NULL for default values. */ + ble_gatts_attr_md_t const *p_sccd_md; /**< Attribute metadata for the Server Characteristic Configuration Descriptor, or NULL for default values. */ +} ble_gatts_char_md_t; + + +/**@brief GATT Characteristic Definition Handles. */ +typedef struct +{ + uint16_t value_handle; /**< Handle to the characteristic value. */ + uint16_t user_desc_handle; /**< Handle to the User Description descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ + uint16_t cccd_handle; /**< Handle to the Client Characteristic Configuration Descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ + uint16_t sccd_handle; /**< Handle to the Server Characteristic Configuration Descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ +} ble_gatts_char_handles_t; + + +/**@brief GATT HVx parameters. */ +typedef struct +{ + uint16_t handle; /**< Characteristic Value Handle. */ + uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ + uint16_t offset; /**< Offset within the attribute value. */ + uint16_t *p_len; /**< Length in bytes to be written, length in bytes written after successful return. */ + uint8_t const *p_data; /**< Actual data content, use NULL to use the current attribute value. */ +} ble_gatts_hvx_params_t; + +/**@brief GATT Authorization parameters. */ +typedef struct +{ + uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ + uint8_t update : 1; /**< If set, data supplied in p_data will be used to update the attribute value. + Please note that for @ref BLE_GATTS_AUTHORIZE_TYPE_WRITE operations this bit must always be set, + as the data to be written needs to be stored and later provided by the application. */ + uint16_t offset; /**< Offset of the attribute value being updated. */ + uint16_t len; /**< Length in bytes of the value in p_data pointer, see @ref BLE_GATTS_ATTR_LENS_MAX. */ + uint8_t const *p_data; /**< Pointer to new value used to update the attribute value. */ +} ble_gatts_authorize_params_t; + +/**@brief GATT Read or Write Authorize Reply parameters. */ +typedef struct +{ + uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ + union { + ble_gatts_authorize_params_t read; /**< Read authorization parameters. */ + ble_gatts_authorize_params_t write; /**< Write authorization parameters. */ + } params; /**< Reply Parameters. */ +} ble_gatts_rw_authorize_reply_params_t; + +/**@brief Service Changed Inclusion configuration parameters, set with @ref sd_ble_cfg_set. */ +typedef struct +{ + uint8_t service_changed : 1; /**< If 1, include the Service Changed characteristic in the Attribute Table. Default is @ref BLE_GATTS_SERVICE_CHANGED_DEFAULT. */ +} ble_gatts_cfg_service_changed_t; + +/**@brief Attribute table size configuration parameters, set with @ref sd_ble_cfg_set. + * + * @retval ::NRF_ERROR_INVALID_LENGTH One or more of the following is true: + * - The specified Attribute Table size is too small. + * The minimum acceptable size is defined by @ref BLE_GATTS_ATTR_TAB_SIZE_MIN. + * - The specified Attribute Table size is not a multiple of 4. + */ +typedef struct +{ + uint32_t attr_tab_size; /**< Attribute table size. Default is @ref BLE_GATTS_ATTR_TAB_SIZE_DEFAULT, minimum is @ref BLE_GATTS_ATTR_TAB_SIZE_MIN. */ +} ble_gatts_cfg_attr_tab_size_t; + +/**@brief Config structure for GATTS configurations. */ +typedef union +{ + ble_gatts_cfg_service_changed_t service_changed; /**< Include service changed characteristic, cfg_id is @ref BLE_GATTS_CFG_SERVICE_CHANGED. */ + ble_gatts_cfg_attr_tab_size_t attr_tab_size; /**< Attribute table size, cfg_id is @ref BLE_GATTS_CFG_ATTR_TAB_SIZE. */ +} ble_gatts_cfg_t; + + +/**@brief Event structure for @ref BLE_GATTS_EVT_WRITE. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + ble_uuid_t uuid; /**< Attribute UUID. */ + uint8_t op; /**< Type of write operation, see @ref BLE_GATTS_OPS. */ + uint8_t auth_required; /**< Writing operation deferred due to authorization requirement. Application may use @ref sd_ble_gatts_value_set to finalize the writing operation. */ + uint16_t offset; /**< Offset for the write operation. */ + uint16_t len; /**< Length of the received data. */ + uint8_t data[1]; /**< Received data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. + See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ +} ble_gatts_evt_write_t; + +/**@brief Event substructure for authorized read requests, see @ref ble_gatts_evt_rw_authorize_request_t. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ + ble_uuid_t uuid; /**< Attribute UUID. */ + uint16_t offset; /**< Offset for the read operation. */ +} ble_gatts_evt_read_t; + +/**@brief Event structure for @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST. */ +typedef struct +{ + uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ + union { + ble_gatts_evt_read_t read; /**< Attribute Read Parameters. */ + ble_gatts_evt_write_t write; /**< Attribute Write Parameters. */ + } request; /**< Request Parameters. */ +} ble_gatts_evt_rw_authorize_request_t; + +/**@brief Event structure for @ref BLE_GATTS_EVT_SYS_ATTR_MISSING. */ +typedef struct +{ + uint8_t hint; /**< Hint (currently unused). */ +} ble_gatts_evt_sys_attr_missing_t; + + +/**@brief Event structure for @ref BLE_GATTS_EVT_HVC. */ +typedef struct +{ + uint16_t handle; /**< Attribute Handle. */ +} ble_gatts_evt_hvc_t; + +/**@brief Event structure for @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST. */ +typedef struct +{ + uint16_t client_rx_mtu; /**< Client RX MTU size. */ +} ble_gatts_evt_exchange_mtu_request_t; + +/**@brief Event structure for @ref BLE_GATTS_EVT_TIMEOUT. */ +typedef struct +{ + uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ +} ble_gatts_evt_timeout_t; + +/**@brief Event structure for @ref BLE_GATTS_EVT_HVN_TX_COMPLETE. */ +typedef struct +{ + uint8_t count; /**< Number of notification transmissions completed. */ +} ble_gatts_evt_hvn_tx_complete_t; + +/**@brief GATTS event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which the event occurred. */ + union + { + ble_gatts_evt_write_t write; /**< Write Event Parameters. */ + ble_gatts_evt_rw_authorize_request_t authorize_request; /**< Read or Write Authorize Request Parameters. */ + ble_gatts_evt_sys_attr_missing_t sys_attr_missing; /**< System attributes missing. */ + ble_gatts_evt_hvc_t hvc; /**< Handle Value Confirmation Event Parameters. */ + ble_gatts_evt_exchange_mtu_request_t exchange_mtu_request; /**< Exchange MTU Request Event Parameters. */ + ble_gatts_evt_timeout_t timeout; /**< Timeout Event. */ + ble_gatts_evt_hvn_tx_complete_t hvn_tx_complete; /**< Handle Value Notification transmission complete Event Parameters. */ + } params; /**< Event Parameters. */ +} ble_gatts_evt_t; + +/** @} */ + +/** @addtogroup BLE_GATTS_FUNCTIONS Functions + * @{ */ + +/**@brief Add a service declaration to the Attribute Table. + * + * @note Secondary Services are only relevant in the context of the entity that references them, it is therefore forbidden to + * add a secondary service declaration that is not referenced by another service later in the Attribute Table. + * + * @mscs + * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} + * @endmscs + * + * @param[in] type Toggles between primary and secondary services, see @ref BLE_GATTS_SRVC_TYPES. + * @param[in] p_uuid Pointer to service UUID. + * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. + * + * @retval ::NRF_SUCCESS Successfully added a service declaration. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, Vendor Specific UUIDs need to be present in the table. + * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_GATTS_SERVICE_ADD, uint32_t, sd_ble_gatts_service_add(uint8_t type, ble_uuid_t const *p_uuid, uint16_t *p_handle)); + + +/**@brief Add an include declaration to the Attribute Table. + * + * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential population is supported at this time). + * + * @note The included service must already be present in the Attribute Table prior to this call. + * + * @mscs + * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} + * @endmscs + * + * @param[in] service_handle Handle of the service where the included service is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. + * @param[in] inc_srvc_handle Handle of the included service. + * @param[out] p_include_handle Pointer to a 16-bit word where the assigned handle will be stored. + * + * @retval ::NRF_SUCCESS Successfully added an include declaration. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, handle values need to match previously added services. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. + * @retval ::NRF_ERROR_NOT_SUPPORTED Feature is not supported, service_handle must be that of the last added service. + * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, self inclusions are not allowed. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. + */ +SVCALL(SD_BLE_GATTS_INCLUDE_ADD, uint32_t, sd_ble_gatts_include_add(uint16_t service_handle, uint16_t inc_srvc_handle, uint16_t *p_include_handle)); + + +/**@brief Add a characteristic declaration, a characteristic value declaration and optional characteristic descriptor declarations to the Attribute Table. + * + * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential population is supported at this time). + * + * @note Several restrictions apply to the parameters, such as matching permissions between the user description descriptor and the writable auxiliaries bits, + * readable (no security) and writable (selectable) CCCDs and SCCDs and valid presentation format values. + * + * @note If no metadata is provided for the optional descriptors, their permissions will be derived from the characteristic permissions. + * + * @mscs + * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} + * @endmscs + * + * @param[in] service_handle Handle of the service where the characteristic is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. + * @param[in] p_char_md Characteristic metadata. + * @param[in] p_attr_char_value Pointer to the attribute structure corresponding to the characteristic value. + * @param[out] p_handles Pointer to the structure where the assigned handles will be stored. + * + * @retval ::NRF_SUCCESS Successfully added a characteristic. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, service handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required. + * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. + */ +SVCALL(SD_BLE_GATTS_CHARACTERISTIC_ADD, uint32_t, sd_ble_gatts_characteristic_add(uint16_t service_handle, ble_gatts_char_md_t const *p_char_md, ble_gatts_attr_t const *p_attr_char_value, ble_gatts_char_handles_t *p_handles)); + + +/**@brief Add a descriptor to the Attribute Table. + * + * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential population is supported at this time). + * + * @mscs + * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} + * @endmscs + * + * @param[in] char_handle Handle of the characteristic where the descriptor is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. + * @param[in] p_attr Pointer to the attribute structure. + * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. + * + * @retval ::NRF_SUCCESS Successfully added a descriptor. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, characteristic handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. + * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a characteristic context is required. + * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. + */ +SVCALL(SD_BLE_GATTS_DESCRIPTOR_ADD, uint32_t, sd_ble_gatts_descriptor_add(uint16_t char_handle, ble_gatts_attr_t const *p_attr, uint16_t *p_handle)); + +/**@brief Set the value of a given attribute. + * + * @note Values other than system attributes can be set at any time, regardless of whether any active connections exist. + * + * @mscs + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. Ignored if the value does not belong to a system attribute. + * @param[in] handle Attribute handle. + * @param[in,out] p_value Attribute value information. + * + * @retval ::NRF_SUCCESS Successfully set the value of the attribute. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. + * @retval ::NRF_ERROR_FORBIDDEN Forbidden handle supplied, certain attributes are not modifiable by the application. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied on a system attribute. + */ +SVCALL(SD_BLE_GATTS_VALUE_SET, uint32_t, sd_ble_gatts_value_set(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)); + +/**@brief Get the value of a given attribute. + * + * @note If the attribute value is longer than the size of the supplied buffer, + * p_len will return the total attribute value length (excluding offset), + * and not the number of bytes actually returned in p_data. + * The application may use this information to allocate a suitable buffer size. + * + * @note When retrieving system attribute values with this function, the connection handle + * may refer to an already disconnected connection. Refer to the documentation of + * @ref sd_ble_gatts_sys_attr_get for further information. + * + * @param[in] conn_handle Connection handle. Ignored if the value does not belong to a system attribute. + * @param[in] handle Attribute handle. + * @param[in,out] p_value Attribute value information. + * + * @retval ::NRF_SUCCESS Successfully retrieved the value of the attribute. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid attribute offset supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied on a system attribute. + * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. + */ +SVCALL(SD_BLE_GATTS_VALUE_GET, uint32_t, sd_ble_gatts_value_get(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)); + +/**@brief Notify or Indicate an attribute value. + * + * @details This function checks for the relevant Client Characteristic Configuration descriptor value to verify that the relevant operation + * (notification or indication) has been enabled by the client. It is also able to update the attribute value before issuing the PDU, so that + * the application can atomically perform a value update and a server initiated transaction with a single API call. + * + * @note The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution. + * The Attribute Table has been updated if one of the following error codes is returned: @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, + * @ref NRF_ERROR_FORBIDDEN, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and @ref NRF_ERROR_RESOURCES. + * The caller can check whether the value has been updated by looking at the contents of *(p_hvx_params->p_len). + * + * @note Only one indication procedure can be ongoing per connection at a time. + * If the application tries to indicate an attribute value while another indication procedure is ongoing, + * the function call will return @ref NRF_ERROR_BUSY. + * A @ref BLE_GATTS_EVT_HVC event will be issued as soon as the confirmation arrives from the peer. + * + * @note The number of Handle Value Notifications that can be queued is configured by @ref ble_gatts_conn_cfg_t::hvn_tx_queue_size + * When the queue is full, the function call will return @ref NRF_ERROR_RESOURCES. + * A @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event will be issued as soon as the transmission of the notification is complete. + * + * @note The application can keep track of the available queue element count for notifications by following the procedure below: + * - Store initial queue element count in a variable. + * - Decrement the variable, which stores the currently available queue element count, by one when a call to this function returns @ref NRF_SUCCESS. + * - Increment the variable, which stores the current available queue element count, by the count variable in @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event. + * + * @events + * @event{@ref BLE_GATTS_EVT_HVN_TX_COMPLETE, Notification transmission complete.} + * @event{@ref BLE_GATTS_EVT_HVC, Confirmation received from the peer.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC} + * @mmsc{@ref BLE_GATTS_HVN_MSC} + * @mmsc{@ref BLE_GATTS_HVI_MSC} + * @mmsc{@ref BLE_GATTS_HVX_DISABLED_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_hvx_params Pointer to an HVx parameters structure. If the p_data member contains a non-NULL pointer the attribute value will be updated with + * the contents pointed by it before sending the notification or indication. + * + * @retval ::NRF_SUCCESS Successfully queued a notification or indication for transmission, and optionally updated the attribute value. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true: + * - Invalid Connection State + * - Notifications and/or indications not enabled in the CCCD + * - An ATT_MTU exchange is ongoing + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied. Only attributes added directly by the application are available to notify and indicate. + * @retval ::BLE_ERROR_GATTS_INVALID_ATTR_TYPE Invalid attribute type(s) supplied, only characteristic values may be notified and indicated. + * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. + * @retval ::NRF_ERROR_FORBIDDEN The connection's current security level is lower than the one required by the write permissions of the CCCD associated with this characteristic. + * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. + * @retval ::NRF_ERROR_BUSY For @ref BLE_GATT_HVX_INDICATION, GATT Server procedure already in progress or blocked because of a previous GATT procedure timeout. + Wait for a @ref BLE_GATTS_EVT_HVC event and retry. + For @ref BLE_GATT_HVX_NOTIFICATION it can only mean GATT procedure timeout. + * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. + * @retval ::NRF_ERROR_RESOURCES Too many notifications queued. + * Wait for a @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event and retry. + */ +SVCALL(SD_BLE_GATTS_HVX, uint32_t, sd_ble_gatts_hvx(uint16_t conn_handle, ble_gatts_hvx_params_t const *p_hvx_params)); + +/**@brief Indicate the Service Changed attribute value. + * + * @details This call will send a Handle Value Indication to one or more peers connected to inform them that the Attribute + * Table layout has changed. As soon as the peer has confirmed the indication, a @ref BLE_GATTS_EVT_SC_CONFIRM event will + * be issued. + * + * @note Some of the restrictions and limitations that apply to @ref sd_ble_gatts_hvx also apply here. + * + * @events + * @event{@ref BLE_GATTS_EVT_SC_CONFIRM, Confirmation of attribute table change received from peer.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_GATTS_SC_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] start_handle Start of affected attribute handle range. + * @param[in] end_handle End of affected attribute handle range. + * + * @retval ::NRF_SUCCESS Successfully queued the Service Changed indication for transmission. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_NOT_SUPPORTED Service Changed not enabled at initialization. See @ref + * sd_ble_cfg_set and @ref ble_gatts_cfg_service_changed_t. + * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true: + * - Invalid Connection State + * - Notifications and/or indications not enabled in the CCCD + * - An ATT_MTU exchange is ongoing + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied, handles must be in the range populated by the application. + * @retval ::NRF_ERROR_BUSY GATT Server procedure already in progress or blocked because of a previous GATT procedure timeout. + * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. + */ +SVCALL(SD_BLE_GATTS_SERVICE_CHANGED, uint32_t, sd_ble_gatts_service_changed(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle)); + +/**@brief Respond to a Read/Write authorization request. + * + * @note This call should only be used as a response to a @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event issued to the application. + * + * @mscs + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} + * @mmsc{@ref BLE_GATTS_READ_REQ_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_WRITE_REQ_AUTH_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} + * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_PEER_CANCEL_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_rw_authorize_reply_params Pointer to a structure with the attribute provided by the application. + * + * @note @ref ble_gatts_authorize_params_t::p_data is ignored when this function is used to respond + * to a @ref BLE_GATTS_AUTHORIZE_TYPE_READ event if @ref ble_gatts_authorize_params_t::update + * is set to 0. + * + * @retval ::NRF_SUCCESS Successfully queued a response to the peer, and in the case of a write operation, Attribute Table updated. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no authorization request pending. + * @retval ::NRF_ERROR_INVALID_PARAM Authorization op invalid, + * handle supplied does not match requested handle, + * or invalid data to be written provided by the application. + */ +SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_reply(uint16_t conn_handle, ble_gatts_rw_authorize_reply_params_t const *p_rw_authorize_reply_params)); + + +/**@brief Update persistent system attribute information. + * + * @details Supply information about persistent system attributes to the stack, + * previously obtained using @ref sd_ble_gatts_sys_attr_get. + * This call is only allowed for active connections, and is usually + * made immediately after a connection is established with an known bonded device, + * often as a response to a @ref BLE_GATTS_EVT_SYS_ATTR_MISSING. + * + * p_sysattrs may point directly to the application's stored copy of the system attributes + * obtained using @ref sd_ble_gatts_sys_attr_get. + * If the pointer is NULL, the system attribute info is initialized, assuming that + * the application does not have any previously saved system attribute data for this device. + * + * @note The state of persistent system attributes is reset upon connection establishment and then remembered for its duration. + * + * @note If this call returns with an error code different from @ref NRF_SUCCESS, the storage of persistent system attributes may have been completed only partially. + * This means that the state of the attribute table is undefined, and the application should either provide a new set of attributes using this same call or + * reset the SoftDevice to return to a known state. + * + * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS is used with this function, only the system attributes included in system services will be modified. + * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS is used with this function, only the system attributes included in user services will be modified. + * + * @mscs + * @mmsc{@ref BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC} + * @mmsc{@ref BLE_GATTS_SYS_ATTRS_UNK_PEER_MSC} + * @mmsc{@ref BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle. + * @param[in] p_sys_attr_data Pointer to a saved copy of system attributes supplied to the stack, or NULL. + * @param[in] len Size of data pointed by p_sys_attr_data, in octets. + * @param[in] flags Optional additional flags, see @ref BLE_GATTS_SYS_ATTR_FLAGS + * + * @retval ::NRF_SUCCESS Successfully set the system attribute information. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid flags supplied. + * @retval ::NRF_ERROR_INVALID_DATA Invalid data supplied, the data should be exactly the same as retrieved with @ref sd_ble_gatts_sys_attr_get. + * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. + */ +SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const *p_sys_attr_data, uint16_t len, uint32_t flags)); + + +/**@brief Retrieve persistent system attribute information from the stack. + * + * @details This call is used to retrieve information about values to be stored persistently by the application + * during the lifetime of a connection or after it has been terminated. When a new connection is established with the same bonded device, + * the system attribute information retrieved with this function should be restored using using @ref sd_ble_gatts_sys_attr_set. + * If retrieved after disconnection, the data should be read before a new connection established. The connection handle for + * the previous, now disconnected, connection will remain valid until a new one is created to allow this API call to refer to it. + * Connection handles belonging to active connections can be used as well, but care should be taken since the system attributes + * may be written to at any time by the peer during a connection's lifetime. + * + * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS is used with this function, only the system attributes included in system services will be returned. + * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS is used with this function, only the system attributes included in user services will be returned. + * + * @mscs + * @mmsc{@ref BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC} + * @endmscs + * + * @param[in] conn_handle Connection handle of the recently terminated connection. + * @param[out] p_sys_attr_data Pointer to a buffer where updated information about system attributes will be filled in. The format of the data is described + * in @ref BLE_GATTS_SYS_ATTRS_FORMAT. NULL can be provided to obtain the length of the data. + * @param[in,out] p_len Size of application buffer if p_sys_attr_data is not NULL. Unconditionally updated to actual length of system attribute data. + * @param[in] flags Optional additional flags, see @ref BLE_GATTS_SYS_ATTR_FLAGS + * + * @retval ::NRF_SUCCESS Successfully retrieved the system attribute information. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid flags supplied. + * @retval ::NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer. + * @retval ::NRF_ERROR_NOT_FOUND No system attributes found. + */ +SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t *p_sys_attr_data, uint16_t *p_len, uint32_t flags)); + + +/**@brief Retrieve the first valid user attribute handle. + * + * @param[out] p_handle Pointer to an integer where the handle will be stored. + * + * @retval ::NRF_SUCCESS Successfully retrieved the handle. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + */ +SVCALL(SD_BLE_GATTS_INITIAL_USER_HANDLE_GET, uint32_t, sd_ble_gatts_initial_user_handle_get(uint16_t *p_handle)); + +/**@brief Retrieve the attribute UUID and/or metadata. + * + * @param[in] handle Attribute handle + * @param[out] p_uuid UUID of the attribute. Use NULL to omit this field. + * @param[out] p_md Metadata of the attribute. Use NULL to omit this field. + * + * @retval ::NRF_SUCCESS Successfully retrieved the attribute metadata, + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameters supplied. Returned when both @c p_uuid and @c p_md are NULL. + * @retval ::NRF_ERROR_NOT_FOUND Attribute was not found. + */ +SVCALL(SD_BLE_GATTS_ATTR_GET, uint32_t, sd_ble_gatts_attr_get(uint16_t handle, ble_uuid_t * p_uuid, ble_gatts_attr_md_t * p_md)); + +/**@brief Reply to an ATT_MTU exchange request by sending an Exchange MTU Response to the client. + * + * @details This function is only used to reply to a @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST event. + * + * @details The SoftDevice sets ATT_MTU to the minimum of: + * - The Client RX MTU value from @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST, and + * - The Server RX MTU value. + * + * However, the SoftDevice never sets ATT_MTU lower than @ref BLE_GATT_ATT_MTU_DEFAULT. + * + * @mscs + * @mmsc{@ref BLE_GATTS_MTU_EXCHANGE} + * @endmscs + * + * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. + * @param[in] server_rx_mtu Server RX MTU size. + * - The minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. + * - The maximum value is @ref ble_gatt_conn_cfg_t::att_mtu in the connection configuration + * used for this connection. + * - The value must be equal to Client RX MTU size given in @ref sd_ble_gattc_exchange_mtu_request + * if an ATT_MTU exchange has already been performed in the other direction. + * + * @retval ::NRF_SUCCESS Successfully sent response to the client. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no ATT_MTU exchange request pending. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid Server RX MTU size supplied. + * @retval ::NRF_ERROR_BUSY GATT Blocked because of a previous GATT procedure timeout. + */ +SVCALL(SD_BLE_GATTS_EXCHANGE_MTU_REPLY, uint32_t, sd_ble_gatts_exchange_mtu_reply(uint16_t conn_handle, uint16_t server_rx_mtu)); +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // BLE_GATTS_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_hci.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_hci.h new file mode 100644 index 0000000..b48d706 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_hci.h @@ -0,0 +1,135 @@ +/* + * 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. + */ + +/** + @addtogroup BLE_COMMON + @{ +*/ + + +#ifndef BLE_HCI_H__ +#define BLE_HCI_H__ +#ifdef __cplusplus +extern "C" { +#endif + +/** @defgroup BLE_HCI_STATUS_CODES Bluetooth status codes + * @{ */ + +#define BLE_HCI_STATUS_CODE_SUCCESS 0x00 /**< Success. */ +#define BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND 0x01 /**< Unknown BLE Command. */ +#define BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER 0x02 /**< Unknown Connection Identifier. */ +/*0x03 Hardware Failure +0x04 Page Timeout +*/ +#define BLE_HCI_AUTHENTICATION_FAILURE 0x05 /**< Authentication Failure. */ +#define BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING 0x06 /**< Pin or Key missing. */ +#define BLE_HCI_MEMORY_CAPACITY_EXCEEDED 0x07 /**< Memory Capacity Exceeded. */ +#define BLE_HCI_CONNECTION_TIMEOUT 0x08 /**< Connection Timeout. */ +/*0x09 Connection Limit Exceeded +0x0A Synchronous Connection Limit To A Device Exceeded +0x0B ACL Connection Already Exists*/ +#define BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED 0x0C /**< Command Disallowed. */ +/*0x0D Connection Rejected due to Limited Resources +0x0E Connection Rejected Due To Security Reasons +0x0F Connection Rejected due to Unacceptable BD_ADDR +0x10 Connection Accept Timeout Exceeded +0x11 Unsupported Feature or Parameter Value*/ +#define BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS 0x12 /**< Invalid BLE Command Parameters. */ +#define BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION 0x13 /**< Remote User Terminated Connection. */ +#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES 0x14 /**< Remote Device Terminated Connection due to low resources.*/ +#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF 0x15 /**< Remote Device Terminated Connection due to power off. */ +#define BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION 0x16 /**< Local Host Terminated Connection. */ +/* +0x17 Repeated Attempts +0x18 Pairing Not Allowed +0x19 Unknown LMP PDU +*/ +#define BLE_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A /**< Unsupported Remote Feature. */ +/* +0x1B SCO Offset Rejected +0x1C SCO Interval Rejected +0x1D SCO Air Mode Rejected*/ +#define BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS 0x1E /**< Invalid LMP Parameters. */ +#define BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR 0x1F /**< Unspecified Error. */ +/*0x20 Unsupported LMP Parameter Value +0x21 Role Change Not Allowed +*/ +#define BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT 0x22 /**< LMP Response Timeout. */ +#define BLE_HCI_STATUS_CODE_LMP_ERROR_TRANSACTION_COLLISION 0x23 /**< LMP Error Transaction Collision/LL Procedure Collision. */ +#define BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED 0x24 /**< LMP PDU Not Allowed. */ +/*0x25 Encryption Mode Not Acceptable +0x26 Link Key Can Not be Changed +0x27 Requested QoS Not Supported +*/ +#define BLE_HCI_INSTANT_PASSED 0x28 /**< Instant Passed. */ +#define BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED 0x29 /**< Pairing with Unit Key Unsupported. */ +#define BLE_HCI_DIFFERENT_TRANSACTION_COLLISION 0x2A /**< Different Transaction Collision. */ +/* +0x2B Reserved +0x2C QoS Unacceptable Parameter +0x2D QoS Rejected +0x2E Channel Classification Not Supported +0x2F Insufficient Security +*/ +#define BLE_HCI_PARAMETER_OUT_OF_MANDATORY_RANGE 0x30 /**< Parameter Out Of Mandatory Range. */ +/* +0x31 Reserved +0x32 Role Switch Pending +0x33 Reserved +0x34 Reserved Slot Violation +0x35 Role Switch Failed +0x36 Extended Inquiry Response Too Large +0x37 Secure Simple Pairing Not Supported By Host. +0x38 Host Busy - Pairing +0x39 Connection Rejected due to No Suitable Channel Found*/ +#define BLE_HCI_CONTROLLER_BUSY 0x3A /**< Controller Busy. */ +#define BLE_HCI_CONN_INTERVAL_UNACCEPTABLE 0x3B /**< Connection Interval Unacceptable. */ +#define BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT 0x3C /**< Directed Advertisement Timeout. */ +#define BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE 0x3D /**< Connection Terminated due to MIC Failure. */ +#define BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED 0x3E /**< Connection Failed to be Established. */ + +/** @} */ + + +#ifdef __cplusplus +} +#endif +#endif // BLE_HCI_H__ + +/** @} */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_l2cap.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_l2cap.h new file mode 100644 index 0000000..96d833a --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_l2cap.h @@ -0,0 +1,507 @@ +/* + * Copyright (c) 2011 - 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. + */ + +/** + @addtogroup BLE_L2CAP Logical Link Control and Adaptation Protocol (L2CAP) + @{ + @brief Definitions and prototypes for the L2CAP interface. + */ + +#ifndef BLE_L2CAP_H__ +#define BLE_L2CAP_H__ + +#include +#include "nrf_svc.h" +#include "nrf_error.h" +#include "ble_hci.h" +#include "ble_ranges.h" +#include "ble_types.h" +#include "ble_err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/**@addtogroup BLE_L2CAP_TERMINOLOGY Terminology + * @{ + * @details + * + * L2CAP SDU + * - A data unit that the application can send/receive to/from a peer. + * + * L2CAP PDU + * - A data unit that is exchanged between local and remote L2CAP entities. + * It consists of L2CAP protocol control information and payload fields. + * The payload field can contain an L2CAP SDU or a part of an L2CAP SDU. + * + * L2CAP MTU + * - The maximum length of an L2CAP SDU. + * + * L2CAP MPS + * - The maximum length of an L2CAP PDU payload field. + * + * Credits + * - A value indicating the number of L2CAP PDUs that the receiver of the credit can send to the peer. + * @} */ + +/**@addtogroup BLE_L2CAP_ENUMERATIONS Enumerations + * @{ */ + +/**@brief L2CAP API SVC numbers. */ +enum BLE_L2CAP_SVCS +{ + SD_BLE_L2CAP_CH_SETUP = BLE_L2CAP_SVC_BASE + 0, /**< Set up an L2CAP channel. */ + SD_BLE_L2CAP_CH_RELEASE = BLE_L2CAP_SVC_BASE + 1, /**< Release an L2CAP channel. */ + SD_BLE_L2CAP_CH_RX = BLE_L2CAP_SVC_BASE + 2, /**< Receive an SDU on an L2CAP channel. */ + SD_BLE_L2CAP_CH_TX = BLE_L2CAP_SVC_BASE + 3, /**< Transmit an SDU on an L2CAP channel. */ + SD_BLE_L2CAP_CH_FLOW_CONTROL = BLE_L2CAP_SVC_BASE + 4, /**< Advanced SDU reception flow control. */ +}; + +/**@brief L2CAP Event IDs. */ +enum BLE_L2CAP_EVTS +{ + BLE_L2CAP_EVT_CH_SETUP_REQUEST = BLE_L2CAP_EVT_BASE + 0, /**< L2CAP Channel Setup Request event. + \n See @ref ble_l2cap_evt_ch_setup_request_t. */ + BLE_L2CAP_EVT_CH_SETUP_REFUSED = BLE_L2CAP_EVT_BASE + 1, /**< L2CAP Channel Setup Refused event. + \n See @ref ble_l2cap_evt_ch_setup_refused_t. */ + BLE_L2CAP_EVT_CH_SETUP = BLE_L2CAP_EVT_BASE + 2, /**< L2CAP Channel Setup Completed event. + \n See @ref ble_l2cap_evt_ch_setup_t. */ + BLE_L2CAP_EVT_CH_RELEASED = BLE_L2CAP_EVT_BASE + 3, /**< L2CAP Channel Released event. + \n No additional event structure applies. */ + BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED = BLE_L2CAP_EVT_BASE + 4, /**< L2CAP Channel SDU data buffer released event. + \n See @ref ble_l2cap_evt_ch_sdu_buf_released_t. */ + BLE_L2CAP_EVT_CH_CREDIT = BLE_L2CAP_EVT_BASE + 5, /**< L2CAP Channel Credit received. + \n See @ref ble_l2cap_evt_ch_credit_t. */ + BLE_L2CAP_EVT_CH_RX = BLE_L2CAP_EVT_BASE + 6, /**< L2CAP Channel SDU received. + \n See @ref ble_l2cap_evt_ch_rx_t. */ + BLE_L2CAP_EVT_CH_TX = BLE_L2CAP_EVT_BASE + 7, /**< L2CAP Channel SDU transmitted. + \n See @ref ble_l2cap_evt_ch_tx_t. */ +}; + +/** @} */ + +/**@addtogroup BLE_L2CAP_DEFINES Defines + * @{ */ + +/**@brief Maximum number of L2CAP channels per connection. */ +#define BLE_L2CAP_CH_COUNT_MAX (64) + +/**@brief Minimum L2CAP MTU, in bytes. */ +#define BLE_L2CAP_MTU_MIN (23) + +/**@brief Minimum L2CAP MPS, in bytes. */ +#define BLE_L2CAP_MPS_MIN (23) + +/**@brief Invalid CID. */ +#define BLE_L2CAP_CID_INVALID (0x0000) + +/**@brief Default number of credits for @ref sd_ble_l2cap_ch_flow_control. */ +#define BLE_L2CAP_CREDITS_DEFAULT (1) + +/**@defgroup BLE_L2CAP_CH_SETUP_REFUSED_SRCS L2CAP channel setup refused sources + * @{ */ +#define BLE_L2CAP_CH_SETUP_REFUSED_SRC_LOCAL (0x01) /**< Local. */ +#define BLE_L2CAP_CH_SETUP_REFUSED_SRC_REMOTE (0x02) /**< Remote. */ + /** @} */ + + /** @defgroup BLE_L2CAP_CH_STATUS_CODES L2CAP channel status codes + * @{ */ +#define BLE_L2CAP_CH_STATUS_CODE_SUCCESS (0x0000) /**< Success. */ +#define BLE_L2CAP_CH_STATUS_CODE_LE_PSM_NOT_SUPPORTED (0x0002) /**< LE_PSM not supported. */ +#define BLE_L2CAP_CH_STATUS_CODE_NO_RESOURCES (0x0004) /**< No resources available. */ +#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_AUTHENTICATION (0x0005) /**< Insufficient authentication. */ +#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_AUTHORIZATION (0x0006) /**< Insufficient authorization. */ +#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_ENC_KEY_SIZE (0x0007) /**< Insufficient encryption key size. */ +#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_ENC (0x0008) /**< Insufficient encryption. */ +#define BLE_L2CAP_CH_STATUS_CODE_INVALID_SCID (0x0009) /**< Invalid Source CID. */ +#define BLE_L2CAP_CH_STATUS_CODE_SCID_ALLOCATED (0x000A) /**< Source CID already allocated. */ +#define BLE_L2CAP_CH_STATUS_CODE_UNACCEPTABLE_PARAMS (0x000B) /**< Unacceptable parameters. */ +#define BLE_L2CAP_CH_STATUS_CODE_NOT_UNDERSTOOD (0x8000) /**< Command Reject received instead of LE Credit Based Connection Response. */ +#define BLE_L2CAP_CH_STATUS_CODE_TIMEOUT (0xC000) /**< Operation timed out. */ +/** @} */ + +/** @} */ + +/**@addtogroup BLE_L2CAP_STRUCTURES Structures + * @{ */ + +/** + * @brief BLE L2CAP connection configuration parameters, set with @ref sd_ble_cfg_set. + * + * @note These parameters are set per connection, so all L2CAP channels created on this connection + * will have the same parameters. + * + * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: + * - rx_mps is smaller than @ref BLE_L2CAP_MPS_MIN. + * - tx_mps is smaller than @ref BLE_L2CAP_MPS_MIN. + * - ch_count is greater than @ref BLE_L2CAP_CH_COUNT_MAX. + * @retval ::NRF_ERROR_NO_MEM rx_mps or tx_mps is set too high. + */ +typedef struct +{ + uint16_t rx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP shall + be able to receive on L2CAP channels on connections with this + configuration. The minimum value is @ref BLE_L2CAP_MPS_MIN. */ + uint16_t tx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP shall + be able to transmit on L2CAP channels on connections with this + configuration. The minimum value is @ref BLE_L2CAP_MPS_MIN. */ + uint8_t rx_queue_size; /**< Number of SDU data buffers that can be queued for reception per + L2CAP channel. The minimum value is one. */ + uint8_t tx_queue_size; /**< Number of SDU data buffers that can be queued for transmission + per L2CAP channel. The minimum value is one. */ + uint8_t ch_count; /**< Number of L2CAP channels the application can create per connection + with this configuration. The default value is zero, the maximum + value is @ref BLE_L2CAP_CH_COUNT_MAX. + @note if this parameter is set to zero, all other parameters in + @ref ble_l2cap_conn_cfg_t are ignored. */ +} ble_l2cap_conn_cfg_t; + +/**@brief L2CAP channel RX parameters. */ +typedef struct +{ + uint16_t rx_mtu; /**< The maximum L2CAP SDU size, in bytes, that L2CAP shall be able to + receive on this L2CAP channel. + - Must be equal to or greater than @ref BLE_L2CAP_MTU_MIN. */ + uint16_t rx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP shall be + able to receive on this L2CAP channel. + - Must be equal to or greater than @ref BLE_L2CAP_MPS_MIN. + - Must be equal to or less than @ref ble_l2cap_conn_cfg_t::rx_mps. */ + ble_data_t sdu_buf; /**< SDU data buffer for reception. + - If @ref ble_data_t::p_data is non-NULL, initial credits are + issued to the peer. + - If @ref ble_data_t::p_data is NULL, no initial credits are + issued to the peer. */ +} ble_l2cap_ch_rx_params_t; + +/**@brief L2CAP channel setup parameters. */ +typedef struct +{ + ble_l2cap_ch_rx_params_t rx_params; /**< L2CAP channel RX parameters. */ + uint16_t le_psm; /**< LE Protocol/Service Multiplexer. Used when requesting + setup of an L2CAP channel, ignored otherwise. */ + uint16_t status; /**< Status code, see @ref BLE_L2CAP_CH_STATUS_CODES. + Used when replying to a setup request of an L2CAP + channel, ignored otherwise. */ +} ble_l2cap_ch_setup_params_t; + +/**@brief L2CAP channel TX parameters. */ +typedef struct +{ + uint16_t tx_mtu; /**< The maximum L2CAP SDU size, in bytes, that L2CAP is able to + transmit on this L2CAP channel. */ + uint16_t peer_mps; /**< The maximum L2CAP PDU payload size, in bytes, that the peer is + able to receive on this L2CAP channel. */ + uint16_t tx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP is able + to transmit on this L2CAP channel. This is effective tx_mps, + selected by the SoftDevice as + MIN( @ref ble_l2cap_ch_tx_params_t::peer_mps, @ref ble_l2cap_conn_cfg_t::tx_mps ) */ + uint16_t credits; /**< Initial credits given by the peer. */ +} ble_l2cap_ch_tx_params_t; + +/**@brief L2CAP Channel Setup Request event. */ +typedef struct +{ + ble_l2cap_ch_tx_params_t tx_params; /**< L2CAP channel TX parameters. */ + uint16_t le_psm; /**< LE Protocol/Service Multiplexer. */ +} ble_l2cap_evt_ch_setup_request_t; + +/**@brief L2CAP Channel Setup Refused event. */ +typedef struct +{ + uint8_t source; /**< Source, see @ref BLE_L2CAP_CH_SETUP_REFUSED_SRCS */ + uint16_t status; /**< Status code, see @ref BLE_L2CAP_CH_STATUS_CODES */ +} ble_l2cap_evt_ch_setup_refused_t; + +/**@brief L2CAP Channel Setup Completed event. */ +typedef struct +{ + ble_l2cap_ch_tx_params_t tx_params; /**< L2CAP channel TX parameters. */ +} ble_l2cap_evt_ch_setup_t; + +/**@brief L2CAP Channel SDU Data Duffer Released event. */ +typedef struct +{ + ble_data_t sdu_buf; /**< Returned reception or transmission SDU data buffer. The SoftDevice + returns SDU data buffers supplied by the application, which have + not yet been returned previously via a @ref BLE_L2CAP_EVT_CH_RX or + @ref BLE_L2CAP_EVT_CH_TX event. */ +} ble_l2cap_evt_ch_sdu_buf_released_t; + +/**@brief L2CAP Channel Credit received event. */ +typedef struct +{ + uint16_t credits; /**< Additional credits given by the peer. */ +} ble_l2cap_evt_ch_credit_t; + +/**@brief L2CAP Channel received SDU event. */ +typedef struct +{ + uint16_t sdu_len; /**< Total SDU length, in bytes. */ + ble_data_t sdu_buf; /**< SDU data buffer. + @note If there is not enough space in the buffer + (sdu_buf.len < sdu_len) then the rest of the SDU will be + silently discarded by the SoftDevice. */ +} ble_l2cap_evt_ch_rx_t; + +/**@brief L2CAP Channel transmitted SDU event. */ +typedef struct +{ + ble_data_t sdu_buf; /**< SDU data buffer. */ +} ble_l2cap_evt_ch_tx_t; + +/**@brief L2CAP event structure. */ +typedef struct +{ + uint16_t conn_handle; /**< Connection Handle on which the event occured. */ + uint16_t local_cid; /**< Local Channel ID of the L2CAP channel, or + @ref BLE_L2CAP_CID_INVALID if not present. */ + union + { + ble_l2cap_evt_ch_setup_request_t ch_setup_request; /**< L2CAP Channel Setup Request Event Parameters. */ + ble_l2cap_evt_ch_setup_refused_t ch_setup_refused; /**< L2CAP Channel Setup Refused Event Parameters. */ + ble_l2cap_evt_ch_setup_t ch_setup; /**< L2CAP Channel Setup Completed Event Parameters. */ + ble_l2cap_evt_ch_sdu_buf_released_t ch_sdu_buf_released;/**< L2CAP Channel SDU Data Buffer Released Event Parameters. */ + ble_l2cap_evt_ch_credit_t credit; /**< L2CAP Channel Credit Received Event Parameters. */ + ble_l2cap_evt_ch_rx_t rx; /**< L2CAP Channel SDU Received Event Parameters. */ + ble_l2cap_evt_ch_tx_t tx; /**< L2CAP Channel SDU Transmitted Event Parameters. */ + } params; /**< Event Parameters. */ +} ble_l2cap_evt_t; + +/** @} */ + +/**@addtogroup BLE_L2CAP_FUNCTIONS Functions + * @{ */ + +/**@brief Set up an L2CAP channel. + * + * @details This function is used to: + * - Request setup of an L2CAP channel: sends an LE Credit Based Connection Request packet to a peer. + * - Reply to a setup request of an L2CAP channel (if called in response to a + * @ref BLE_L2CAP_EVT_CH_SETUP_REQUEST event): sends an LE Credit Based Connection + * Response packet to a peer. + * + * @note A call to this function will require the application to keep the SDU data buffer alive + * until the SDU data buffer is returned in @ref BLE_L2CAP_EVT_CH_RX or + * @ref BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED event. + * + * @events + * @event{@ref BLE_L2CAP_EVT_CH_SETUP, Setup successful.} + * @event{@ref BLE_L2CAP_EVT_CH_SETUP_REFUSED, Setup failed.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_L2CAP_CH_SETUP_MSC} + * @endmscs + * + * @param[in] conn_handle Connection Handle. + * @param[in,out] p_local_cid Pointer to a uint16_t containing Local Channel ID of the L2CAP channel: + * - As input: @ref BLE_L2CAP_CID_INVALID when requesting setup of an L2CAP + * channel or local_cid provided in the @ref BLE_L2CAP_EVT_CH_SETUP_REQUEST + * event when replying to a setup request of an L2CAP channel. + * - As output: local_cid for this channel. + * @param[in] p_params L2CAP channel parameters. + * + * @retval ::NRF_SUCCESS Successfully queued request or response for transmission. + * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. + * @retval ::NRF_ERROR_INVALID_LENGTH Supplied higher rx_mps than has been configured on this link. + * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (L2CAP channel already set up). + * @retval ::NRF_ERROR_NOT_FOUND CID not found. + * @retval ::NRF_ERROR_RESOURCES The limit has been reached for available L2CAP channels, + * see @ref ble_l2cap_conn_cfg_t::ch_count. + */ +SVCALL(SD_BLE_L2CAP_CH_SETUP, uint32_t, sd_ble_l2cap_ch_setup(uint16_t conn_handle, uint16_t *p_local_cid, ble_l2cap_ch_setup_params_t const *p_params)); + +/**@brief Release an L2CAP channel. + * + * @details This sends a Disconnection Request packet to a peer. + * + * @events + * @event{@ref BLE_L2CAP_EVT_CH_RELEASED, Release complete.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_L2CAP_CH_RELEASE_MSC} + * @endmscs + * + * @param[in] conn_handle Connection Handle. + * @param[in] local_cid Local Channel ID of the L2CAP channel. + * + * @retval ::NRF_SUCCESS Successfully queued request for transmission. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is + * in progress for the L2CAP channel). + * @retval ::NRF_ERROR_NOT_FOUND CID not found. + */ +SVCALL(SD_BLE_L2CAP_CH_RELEASE, uint32_t, sd_ble_l2cap_ch_release(uint16_t conn_handle, uint16_t local_cid)); + +/**@brief Receive an SDU on an L2CAP channel. + * + * @details This may issue additional credits to the peer using an LE Flow Control Credit packet. + * + * @note A call to this function will require the application to keep the memory pointed by + * @ref ble_data_t::p_data alive until the SDU data buffer is returned in @ref BLE_L2CAP_EVT_CH_RX + * or @ref BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED event. + * + * @note The SoftDevice can queue up to @ref ble_l2cap_conn_cfg_t::rx_queue_size SDU data buffers + * for reception per L2CAP channel. + * + * @events + * @event{@ref BLE_L2CAP_EVT_CH_RX, The SDU is received.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_L2CAP_CH_RX_MSC} + * @endmscs + * + * @param[in] conn_handle Connection Handle. + * @param[in] local_cid Local Channel ID of the L2CAP channel. + * @param[in] p_sdu_buf Pointer to the SDU data buffer. + * + * @retval ::NRF_SUCCESS Buffer accepted. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is + * in progress for an L2CAP channel). + * @retval ::NRF_ERROR_NOT_FOUND CID not found. + * @retval ::NRF_ERROR_RESOURCES Too many SDU data buffers supplied. Wait for a + * @ref BLE_L2CAP_EVT_CH_RX event and retry. + */ +SVCALL(SD_BLE_L2CAP_CH_RX, uint32_t, sd_ble_l2cap_ch_rx(uint16_t conn_handle, uint16_t local_cid, ble_data_t const *p_sdu_buf)); + +/**@brief Transmit an SDU on an L2CAP channel. + * + * @note A call to this function will require the application to keep the memory pointed by + * @ref ble_data_t::p_data alive until the SDU data buffer is returned in @ref BLE_L2CAP_EVT_CH_TX + * or @ref BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED event. + * + * @note The SoftDevice can queue up to @ref ble_l2cap_conn_cfg_t::tx_queue_size SDUs for + * transmission per L2CAP channel. + * + * @note The application can keep track of the available credits for transmission by following + * the procedure below: + * - Store initial credits given by the peer in a variable. + * (Initial credits are provided in a @ref BLE_L2CAP_EVT_CH_SETUP event.) + * - Decrement the variable, which stores the currently available credits, by + * ceiling((@ref ble_data_t::len + 2) / tx_mps) when a call to this function returns + * @ref NRF_SUCCESS. (tx_mps is provided in a @ref BLE_L2CAP_EVT_CH_SETUP event.) + * - Increment the variable, which stores the currently available credits, by additional + * credits given by the peer in a @ref BLE_L2CAP_EVT_CH_CREDIT event. + * + * @events + * @event{@ref BLE_L2CAP_EVT_CH_TX, The SDU is transmitted.} + * @endevents + * + * @mscs + * @mmsc{@ref BLE_L2CAP_CH_TX_MSC} + * @endmscs + * + * @param[in] conn_handle Connection Handle. + * @param[in] local_cid Local Channel ID of the L2CAP channel. + * @param[in] p_sdu_buf Pointer to the SDU data buffer. + * + * @retval ::NRF_SUCCESS Successfully queued L2CAP SDU for transmission. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is + * in progress for the L2CAP channel). + * @retval ::NRF_ERROR_NOT_FOUND CID not found. + * @retval ::NRF_ERROR_DATA_SIZE Invalid SDU length supplied, must not be more than + * @ref ble_l2cap_ch_tx_params_t::tx_mtu provided in + * @ref BLE_L2CAP_EVT_CH_SETUP event. + * @retval ::NRF_ERROR_RESOURCES Too many SDUs queued for transmission. Wait for a + * @ref BLE_L2CAP_EVT_CH_TX event and retry. + */ +SVCALL(SD_BLE_L2CAP_CH_TX, uint32_t, sd_ble_l2cap_ch_tx(uint16_t conn_handle, uint16_t local_cid, ble_data_t const *p_sdu_buf)); + +/**@brief Advanced SDU reception flow control. + * + * @details Adjust the way the SoftDevice issues credits to the peer. + * This may issue additional credits to the peer using an LE Flow Control Credit packet. + * + * @mscs + * @mmsc{@ref BLE_L2CAP_CH_FLOW_CONTROL_MSC} + * @endmscs + * + * @param[in] conn_handle Connection Handle. + * @param[in] local_cid Local Channel ID of the L2CAP channel or @ref BLE_L2CAP_CID_INVALID to set + * the value that will be used for newly created channels. + * @param[in] credits Number of credits that the SoftDevice will make sure the peer has every + * time it starts using a new reception buffer. + * - @ref BLE_L2CAP_CREDITS_DEFAULT is the default value the SoftDevice will + * use if this function is not called. + * - If set to zero, the SoftDevice will stop issuing credits for new reception + * buffers the application provides or has provided. SDU reception that is + * currently ongoing will be allowed to complete. + * @param[out] p_credits NULL or pointer to a uint16_t. If a valid pointer is provided, it will be + * written by the SoftDevice with the number of credits that is or will be + * available to the peer. If the value written by the SoftDevice is 0 when + * credits parameter was set to 0, the peer will not be able to send more + * data until more credits are provided by calling this function again with + * credits > 0. This parameter is ignored when local_cid is set to + * @ref BLE_L2CAP_CID_INVALID. + * + * @note Application should take care when setting number of credits higher than default value. In + * this case the application must make sure that the SoftDevice always has reception buffers + * available (see @ref sd_ble_l2cap_ch_rx) for that channel. If the SoftDevice does not have + * such buffers available, packets may be NACKed on the Link Layer and all Bluetooth traffic + * on the connection handle may be stalled until the SoftDevice again has an available + * reception buffer. This applies even if the application has used this call to set the + * credits back to default, or zero. + * + * @retval ::NRF_SUCCESS Flow control parameters accepted. + * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. + * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. + * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is + * in progress for an L2CAP channel). + * @retval ::NRF_ERROR_NOT_FOUND CID not found. + */ +SVCALL(SD_BLE_L2CAP_CH_FLOW_CONTROL, uint32_t, sd_ble_l2cap_ch_flow_control(uint16_t conn_handle, uint16_t local_cid, uint16_t credits, uint16_t *p_credits)); + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // BLE_L2CAP_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_ranges.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_ranges.h new file mode 100644 index 0000000..9bff917 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_ranges.h @@ -0,0 +1,156 @@ +/* + * 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. + */ + +/** + @addtogroup BLE_COMMON + @{ + @defgroup ble_ranges Module specific SVC, event and option number subranges + @{ + + @brief Definition of SVC, event and option number subranges for each API module. + + @note + SVCs, event and option numbers are split into subranges for each API module. + Each module receives its entire allocated range of SVC calls, whether implemented or not, + but return BLE_ERROR_NOT_SUPPORTED for unimplemented or undefined calls in its range. + + Note that the symbols BLE__SVC_LAST is the end of the allocated SVC range, + rather than the last SVC function call actually defined and implemented. + + Specific SVC, event and option values are defined in each module's ble_.h file, + which defines names of each individual SVC code based on the range start value. +*/ + +#ifndef BLE_RANGES_H__ +#define BLE_RANGES_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define BLE_SVC_BASE 0x60 /**< Common BLE SVC base. */ +#define BLE_SVC_LAST 0x6B /**< Common BLE SVC last. */ + +#define BLE_GAP_SVC_BASE 0x6C /**< GAP BLE SVC base. */ +#define BLE_GAP_SVC_LAST 0x93 /**< GAP BLE SVC last. */ + +#define BLE_GATTC_SVC_BASE 0x94 /**< GATTC BLE SVC base. */ +#define BLE_GATTC_SVC_LAST 0x9F /**< GATTC BLE SVC last. */ + +#define BLE_GATTS_SVC_BASE 0xA0 /**< GATTS BLE SVC base. */ +#define BLE_GATTS_SVC_LAST 0xAF /**< GATTS BLE SVC last. */ + +#define BLE_L2CAP_SVC_BASE 0xB0 /**< L2CAP BLE SVC base. */ +#define BLE_L2CAP_SVC_LAST 0xBF /**< L2CAP BLE SVC last. */ + + +#define BLE_EVT_INVALID 0x00 /**< Invalid BLE Event. */ + +#define BLE_EVT_BASE 0x01 /**< Common BLE Event base. */ +#define BLE_EVT_LAST 0x0F /**< Common BLE Event last. */ + +#define BLE_GAP_EVT_BASE 0x10 /**< GAP BLE Event base. */ +#define BLE_GAP_EVT_LAST 0x2F /**< GAP BLE Event last. */ + +#define BLE_GATTC_EVT_BASE 0x30 /**< GATTC BLE Event base. */ +#define BLE_GATTC_EVT_LAST 0x4F /**< GATTC BLE Event last. */ + +#define BLE_GATTS_EVT_BASE 0x50 /**< GATTS BLE Event base. */ +#define BLE_GATTS_EVT_LAST 0x6F /**< GATTS BLE Event last. */ + +#define BLE_L2CAP_EVT_BASE 0x70 /**< L2CAP BLE Event base. */ +#define BLE_L2CAP_EVT_LAST 0x8F /**< L2CAP BLE Event last. */ + + +#define BLE_OPT_INVALID 0x00 /**< Invalid BLE Option. */ + +#define BLE_OPT_BASE 0x01 /**< Common BLE Option base. */ +#define BLE_OPT_LAST 0x1F /**< Common BLE Option last. */ + +#define BLE_GAP_OPT_BASE 0x20 /**< GAP BLE Option base. */ +#define BLE_GAP_OPT_LAST 0x3F /**< GAP BLE Option last. */ + +#define BLE_GATT_OPT_BASE 0x40 /**< GATT BLE Option base. */ +#define BLE_GATT_OPT_LAST 0x5F /**< GATT BLE Option last. */ + +#define BLE_GATTC_OPT_BASE 0x60 /**< GATTC BLE Option base. */ +#define BLE_GATTC_OPT_LAST 0x7F /**< GATTC BLE Option last. */ + +#define BLE_GATTS_OPT_BASE 0x80 /**< GATTS BLE Option base. */ +#define BLE_GATTS_OPT_LAST 0x9F /**< GATTS BLE Option last. */ + +#define BLE_L2CAP_OPT_BASE 0xA0 /**< L2CAP BLE Option base. */ +#define BLE_L2CAP_OPT_LAST 0xBF /**< L2CAP BLE Option last. */ + + +#define BLE_CFG_INVALID 0x00 /**< Invalid BLE configuration. */ + +#define BLE_CFG_BASE 0x01 /**< Common BLE configuration base. */ +#define BLE_CFG_LAST 0x1F /**< Common BLE configuration last. */ + +#define BLE_CONN_CFG_BASE 0x20 /**< BLE connection configuration base. */ +#define BLE_CONN_CFG_LAST 0x3F /**< BLE connection configuration last. */ + +#define BLE_GAP_CFG_BASE 0x40 /**< GAP BLE configuration base. */ +#define BLE_GAP_CFG_LAST 0x5F /**< GAP BLE configuration last. */ + +#define BLE_GATT_CFG_BASE 0x60 /**< GATT BLE configuration base. */ +#define BLE_GATT_CFG_LAST 0x7F /**< GATT BLE configuration last. */ + +#define BLE_GATTC_CFG_BASE 0x80 /**< GATTC BLE configuration base. */ +#define BLE_GATTC_CFG_LAST 0x9F /**< GATTC BLE configuration last. */ + +#define BLE_GATTS_CFG_BASE 0xA0 /**< GATTS BLE configuration base. */ +#define BLE_GATTS_CFG_LAST 0xBF /**< GATTS BLE configuration last. */ + +#define BLE_L2CAP_CFG_BASE 0xC0 /**< L2CAP BLE configuration base. */ +#define BLE_L2CAP_CFG_LAST 0xDF /**< L2CAP BLE configuration last. */ + + + + + +#ifdef __cplusplus +} +#endif +#endif /* BLE_RANGES_H__ */ + +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_types.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_types.h new file mode 100644 index 0000000..cd5fbaf --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/ble_types.h @@ -0,0 +1,215 @@ +/* + * 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. + */ + +/** + @addtogroup BLE_COMMON + @{ + @defgroup ble_types Common types and macro definitions + @{ + + @brief Common types and macro definitions for the BLE SoftDevice. + */ + +#ifndef BLE_TYPES_H__ +#define BLE_TYPES_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup BLE_TYPES_DEFINES Defines + * @{ */ + +/** @defgroup BLE_CONN_HANDLES BLE Connection Handles + * @{ */ +#define BLE_CONN_HANDLE_INVALID 0xFFFF /**< Invalid Connection Handle. */ +#define BLE_CONN_HANDLE_ALL 0xFFFE /**< Applies to all Connection Handles. */ +/** @} */ + + +/** @defgroup BLE_UUID_VALUES Assigned Values for BLE UUIDs + * @{ */ +/* Generic UUIDs, applicable to all services */ +#define BLE_UUID_UNKNOWN 0x0000 /**< Reserved UUID. */ +#define BLE_UUID_SERVICE_PRIMARY 0x2800 /**< Primary Service. */ +#define BLE_UUID_SERVICE_SECONDARY 0x2801 /**< Secondary Service. */ +#define BLE_UUID_SERVICE_INCLUDE 0x2802 /**< Include. */ +#define BLE_UUID_CHARACTERISTIC 0x2803 /**< Characteristic. */ +#define BLE_UUID_DESCRIPTOR_CHAR_EXT_PROP 0x2900 /**< Characteristic Extended Properties Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CHAR_USER_DESC 0x2901 /**< Characteristic User Description Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG 0x2902 /**< Client Characteristic Configuration Descriptor. */ +#define BLE_UUID_DESCRIPTOR_SERVER_CHAR_CONFIG 0x2903 /**< Server Characteristic Configuration Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CHAR_PRESENTATION_FORMAT 0x2904 /**< Characteristic Presentation Format Descriptor. */ +#define BLE_UUID_DESCRIPTOR_CHAR_AGGREGATE_FORMAT 0x2905 /**< Characteristic Aggregate Format Descriptor. */ +/* GATT specific UUIDs */ +#define BLE_UUID_GATT 0x1801 /**< Generic Attribute Profile. */ +#define BLE_UUID_GATT_CHARACTERISTIC_SERVICE_CHANGED 0x2A05 /**< Service Changed Characteristic. */ +/* GAP specific UUIDs */ +#define BLE_UUID_GAP 0x1800 /**< Generic Access Profile. */ +#define BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME 0x2A00 /**< Device Name Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_APPEARANCE 0x2A01 /**< Appearance Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_RECONN_ADDR 0x2A03 /**< Reconnection Address Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_PPCP 0x2A04 /**< Peripheral Preferred Connection Parameters Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_CAR 0x2AA6 /**< Central Address Resolution Characteristic. */ +#define BLE_UUID_GAP_CHARACTERISTIC_RPA_ONLY 0x2AC9 /**< Resolvable Private Address Only Characteristic. */ +/** @} */ + + +/** @defgroup BLE_UUID_TYPES Types of UUID + * @{ */ +#define BLE_UUID_TYPE_UNKNOWN 0x00 /**< Invalid UUID type. */ +#define BLE_UUID_TYPE_BLE 0x01 /**< Bluetooth SIG UUID (16-bit). */ +#define BLE_UUID_TYPE_VENDOR_BEGIN 0x02 /**< Vendor UUID types start at this index (128-bit). */ +/** @} */ + + +/** @defgroup BLE_APPEARANCES Bluetooth Appearance values + * @note Retrieved from http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml + * @{ */ +#define BLE_APPEARANCE_UNKNOWN 0 /**< Unknown. */ +#define BLE_APPEARANCE_GENERIC_PHONE 64 /**< Generic Phone. */ +#define BLE_APPEARANCE_GENERIC_COMPUTER 128 /**< Generic Computer. */ +#define BLE_APPEARANCE_GENERIC_WATCH 192 /**< Generic Watch. */ +#define BLE_APPEARANCE_WATCH_SPORTS_WATCH 193 /**< Watch: Sports Watch. */ +#define BLE_APPEARANCE_GENERIC_CLOCK 256 /**< Generic Clock. */ +#define BLE_APPEARANCE_GENERIC_DISPLAY 320 /**< Generic Display. */ +#define BLE_APPEARANCE_GENERIC_REMOTE_CONTROL 384 /**< Generic Remote Control. */ +#define BLE_APPEARANCE_GENERIC_EYE_GLASSES 448 /**< Generic Eye-glasses. */ +#define BLE_APPEARANCE_GENERIC_TAG 512 /**< Generic Tag. */ +#define BLE_APPEARANCE_GENERIC_KEYRING 576 /**< Generic Keyring. */ +#define BLE_APPEARANCE_GENERIC_MEDIA_PLAYER 640 /**< Generic Media Player. */ +#define BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 704 /**< Generic Barcode Scanner. */ +#define BLE_APPEARANCE_GENERIC_THERMOMETER 768 /**< Generic Thermometer. */ +#define BLE_APPEARANCE_THERMOMETER_EAR 769 /**< Thermometer: Ear. */ +#define BLE_APPEARANCE_GENERIC_HEART_RATE_SENSOR 832 /**< Generic Heart rate Sensor. */ +#define BLE_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT 833 /**< Heart Rate Sensor: Heart Rate Belt. */ +#define BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE 896 /**< Generic Blood Pressure. */ +#define BLE_APPEARANCE_BLOOD_PRESSURE_ARM 897 /**< Blood Pressure: Arm. */ +#define BLE_APPEARANCE_BLOOD_PRESSURE_WRIST 898 /**< Blood Pressure: Wrist. */ +#define BLE_APPEARANCE_GENERIC_HID 960 /**< Human Interface Device (HID). */ +#define BLE_APPEARANCE_HID_KEYBOARD 961 /**< Keyboard (HID Subtype). */ +#define BLE_APPEARANCE_HID_MOUSE 962 /**< Mouse (HID Subtype). */ +#define BLE_APPEARANCE_HID_JOYSTICK 963 /**< Joystick (HID Subtype). */ +#define BLE_APPEARANCE_HID_GAMEPAD 964 /**< Gamepad (HID Subtype). */ +#define BLE_APPEARANCE_HID_DIGITIZERSUBTYPE 965 /**< Digitizer Tablet (HID Subtype). */ +#define BLE_APPEARANCE_HID_CARD_READER 966 /**< Card Reader (HID Subtype). */ +#define BLE_APPEARANCE_HID_DIGITAL_PEN 967 /**< Digital Pen (HID Subtype). */ +#define BLE_APPEARANCE_HID_BARCODE 968 /**< Barcode Scanner (HID Subtype). */ +#define BLE_APPEARANCE_GENERIC_GLUCOSE_METER 1024 /**< Generic Glucose Meter. */ +#define BLE_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR 1088 /**< Generic Running Walking Sensor. */ +#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE 1089 /**< Running Walking Sensor: In-Shoe. */ +#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE 1090 /**< Running Walking Sensor: On-Shoe. */ +#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP 1091 /**< Running Walking Sensor: On-Hip. */ +#define BLE_APPEARANCE_GENERIC_CYCLING 1152 /**< Generic Cycling. */ +#define BLE_APPEARANCE_CYCLING_CYCLING_COMPUTER 1153 /**< Cycling: Cycling Computer. */ +#define BLE_APPEARANCE_CYCLING_SPEED_SENSOR 1154 /**< Cycling: Speed Sensor. */ +#define BLE_APPEARANCE_CYCLING_CADENCE_SENSOR 1155 /**< Cycling: Cadence Sensor. */ +#define BLE_APPEARANCE_CYCLING_POWER_SENSOR 1156 /**< Cycling: Power Sensor. */ +#define BLE_APPEARANCE_CYCLING_SPEED_CADENCE_SENSOR 1157 /**< Cycling: Speed and Cadence Sensor. */ +#define BLE_APPEARANCE_GENERIC_PULSE_OXIMETER 3136 /**< Generic Pulse Oximeter. */ +#define BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP 3137 /**< Fingertip (Pulse Oximeter subtype). */ +#define BLE_APPEARANCE_PULSE_OXIMETER_WRIST_WORN 3138 /**< Wrist Worn(Pulse Oximeter subtype). */ +#define BLE_APPEARANCE_GENERIC_WEIGHT_SCALE 3200 /**< Generic Weight Scale. */ +#define BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS_ACT 5184 /**< Generic Outdoor Sports Activity. */ +#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_DISP 5185 /**< Location Display Device (Outdoor Sports Activity subtype). */ +#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_DISP 5186 /**< Location and Navigation Display Device (Outdoor Sports Activity subtype). */ +#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_POD 5187 /**< Location Pod (Outdoor Sports Activity subtype). */ +#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_POD 5188 /**< Location and Navigation Pod (Outdoor Sports Activity subtype). */ +/** @} */ + +/** @brief Set .type and .uuid fields of ble_uuid_struct to specified UUID value. */ +#define BLE_UUID_BLE_ASSIGN(instance, value) do {\ + instance.type = BLE_UUID_TYPE_BLE; \ + instance.uuid = value;} while(0) + +/** @brief Copy type and uuid members from src to dst ble_uuid_t pointer. Both pointers must be valid/non-null. */ +#define BLE_UUID_COPY_PTR(dst, src) do {\ + (dst)->type = (src)->type; \ + (dst)->uuid = (src)->uuid;} while(0) + +/** @brief Copy type and uuid members from src to dst ble_uuid_t struct. */ +#define BLE_UUID_COPY_INST(dst, src) do {\ + (dst).type = (src).type; \ + (dst).uuid = (src).uuid;} while(0) + +/** @brief Compare for equality both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ +#define BLE_UUID_EQ(p_uuid1, p_uuid2) \ + (((p_uuid1)->type == (p_uuid2)->type) && ((p_uuid1)->uuid == (p_uuid2)->uuid)) + +/** @brief Compare for difference both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ +#define BLE_UUID_NEQ(p_uuid1, p_uuid2) \ + (((p_uuid1)->type != (p_uuid2)->type) || ((p_uuid1)->uuid != (p_uuid2)->uuid)) + +/** @} */ + +/** @addtogroup BLE_TYPES_STRUCTURES Structures + * @{ */ + +/** @brief 128 bit UUID values. */ +typedef struct +{ + uint8_t uuid128[16]; /**< Little-Endian UUID bytes. */ +} ble_uuid128_t; + +/** @brief Bluetooth Low Energy UUID type, encapsulates both 16-bit and 128-bit UUIDs. */ +typedef struct +{ + uint16_t uuid; /**< 16-bit UUID value or octets 12-13 of 128-bit UUID. */ + uint8_t type; /**< UUID type, see @ref BLE_UUID_TYPES. If type is @ref BLE_UUID_TYPE_UNKNOWN, the value of uuid is undefined. */ +} ble_uuid_t; + +/**@brief Data structure. */ +typedef struct +{ + uint8_t *p_data; /**< Pointer to the data buffer provided to/from the application. */ + uint16_t len; /**< Length of the data buffer, in bytes. */ +} ble_data_t; + +/** @} */ +#ifdef __cplusplus +} +#endif + +#endif /* BLE_TYPES_H__ */ + +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf52/nrf_mbr.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf52/nrf_mbr.h new file mode 100644 index 0000000..ea231b3 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf52/nrf_mbr.h @@ -0,0 +1,241 @@ +/* + * Copyright (c) 2014 - 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. + */ + +/** + @defgroup nrf_mbr_api Master Boot Record API + @{ + + @brief APIs for updating SoftDevice and BootLoader + +*/ + +#ifndef NRF_MBR_H__ +#define NRF_MBR_H__ + +#include "nrf_svc.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup NRF_MBR_DEFINES Defines + * @{ */ + +/**@brief MBR SVC Base number. */ +#define MBR_SVC_BASE (0x18) + +/**@brief Page size in words. */ +#define MBR_PAGE_SIZE_IN_WORDS (1024) + +/** @brief The size that must be reserved for the MBR when a SoftDevice is written to flash. +This is the offset where the first byte of the SoftDevice hex file is written.*/ +#define MBR_SIZE (0x1000) + +/** @} */ + +/** @addtogroup NRF_MBR_ENUMS Enumerations + * @{ */ + +/**@brief nRF Master Boot Record API SVC numbers. */ +enum NRF_MBR_SVCS +{ + SD_MBR_COMMAND = MBR_SVC_BASE, /**< ::sd_mbr_command */ +}; + +/**@brief Possible values for ::sd_mbr_command_t.command */ +enum NRF_MBR_COMMANDS +{ + SD_MBR_COMMAND_COPY_BL, /**< Copy a new BootLoader. @see ::sd_mbr_command_copy_bl_t*/ + SD_MBR_COMMAND_COPY_SD, /**< Copy a new SoftDevice. @see ::sd_mbr_command_copy_sd_t*/ + SD_MBR_COMMAND_INIT_SD, /**< Initialize forwarding interrupts to SD, and run reset function in SD. Does not require any parameters in ::sd_mbr_command_t params.*/ + SD_MBR_COMMAND_COMPARE, /**< This command works like memcmp. @see ::sd_mbr_command_compare_t*/ + SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET, /**< Change the address the MBR starts after a reset. @see ::sd_mbr_command_vector_table_base_set_t*/ + SD_MBR_COMMAND_RESERVED, + SD_MBR_COMMAND_IRQ_FORWARD_ADDRESS_SET, /**< Start forwarding all interrupts to this address. @see ::sd_mbr_command_irq_forward_address_set_t*/ +}; + +/** @} */ + +/** @addtogroup NRF_MBR_TYPES Types + * @{ */ + +/**@brief This command copies part of a new SoftDevice + * + * The destination area is erased before copying. + * If dst is in the middle of a flash page, that whole flash page will be erased. + * If (dst+len) is in the middle of a flash page, that whole flash page will be erased. + * + * The user of this function is responsible for setting the BPROT registers. + * + * @retval ::NRF_SUCCESS indicates that the contents of the memory blocks where copied correctly. + * @retval ::NRF_ERROR_INTERNAL indicates that the contents of the memory blocks where not verified correctly after copying. + */ +typedef struct +{ + uint32_t *src; /**< Pointer to the source of data to be copied.*/ + uint32_t *dst; /**< Pointer to the destination where the content is to be copied.*/ + uint32_t len; /**< Number of 32 bit words to copy. Must be a multiple of @ref MBR_PAGE_SIZE_IN_WORDS words.*/ +} sd_mbr_command_copy_sd_t; + + +/**@brief This command works like memcmp, but takes the length in words. + * + * @retval ::NRF_SUCCESS indicates that the contents of both memory blocks are equal. + * @retval ::NRF_ERROR_NULL indicates that the contents of the memory blocks are not equal. + */ +typedef struct +{ + uint32_t *ptr1; /**< Pointer to block of memory. */ + uint32_t *ptr2; /**< Pointer to block of memory. */ + uint32_t len; /**< Number of 32 bit words to compare.*/ +} sd_mbr_command_compare_t; + + +/**@brief This command copies a new BootLoader. + * + * With this command, destination of BootLoader is always the address written in + * NRF_UICR->BOOTADDR. + * + * Destination is erased by this function. + * If (destination+bl_len) is in the middle of a flash page, that whole flash page will be erased. + * + * This function will use PROTENSET to protect the flash that is not intended to be written. + * + * On success, this function will not return. It will start the new BootLoader from reset-vector as normal. + * + * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen. + * @retval ::NRF_ERROR_FORBIDDEN if NRF_UICR->BOOTADDR is not set. + * @retval ::NRF_ERROR_INVALID_LENGTH if parameters attempts to read or write outside flash area. + * @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see SoftDevice Specification for more info) + */ +typedef struct +{ + uint32_t *bl_src; /**< Pointer to the source of the Bootloader to be be copied.*/ + uint32_t bl_len; /**< Number of 32 bit words to copy for BootLoader. */ +} sd_mbr_command_copy_bl_t; + +/**@brief Change the address the MBR starts after a reset + * + * Once this function has been called, this address is where the MBR will start to forward + * interrupts to after a reset. + * + * To restore default forwarding this function should be called with @ref address set to 0. The + * MBR will then start forwarding interrupts to the address in NFR_UICR->BOOTADDR or to the + * SoftDevice if the BOOTADDR is not set. + * + * On success, this function will not return. It will reset the device. + * + * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen. + * @retval ::NRF_ERROR_INVALID_ADDR if parameter address is outside of the flash size. + * @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see SoftDevice Specification for more info) + */ +typedef struct +{ + uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/ +} sd_mbr_command_vector_table_base_set_t; + +/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the MBR + * + * Unlike sd_mbr_command_vector_table_base_set_t, this function does not reset, and it does not + * change where the MBR starts after reset. + * + * @retval ::NRF_SUCCESS + */ +typedef struct +{ + uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/ +} sd_mbr_command_irq_forward_address_set_t; + +/**@brief Input structure containing data used when calling ::sd_mbr_command + * + * Depending on what command value that is set, the corresponding params value type must also be + * set. See @ref NRF_MBR_COMMANDS for command types and corresponding params value type. If command + * @ref SD_MBR_COMMAND_INIT_SD is set, it is not necessary to set any values under params. + */ +typedef struct +{ + uint32_t command; /**< Type of command to be issued. See @ref NRF_MBR_COMMANDS. */ + union + { + sd_mbr_command_copy_sd_t copy_sd; /**< Parameters for copy SoftDevice.*/ + sd_mbr_command_compare_t compare; /**< Parameters for verify.*/ + sd_mbr_command_copy_bl_t copy_bl; /**< Parameters for copy BootLoader. Requires parameter page. */ + sd_mbr_command_vector_table_base_set_t base_set; /**< Parameters for vector table base set. Requires parameter page.*/ + sd_mbr_command_irq_forward_address_set_t irq_forward_address_set; /**< Parameters for irq forward address set*/ + } params; /**< Command parameters. */ +} sd_mbr_command_t; + +/** @} */ + +/** @addtogroup NRF_MBR_FUNCTIONS Functions + * @{ */ + +/**@brief Issue Master Boot Record commands + * + * Commands used when updating a SoftDevice and bootloader. + * + * The @ref SD_MBR_COMMAND_COPY_BL and @ref SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET requires + * parameters to be retained by the MBR when resetting the IC. This is done in a separate flash + * page provided by the application. The UICR register UICR.NRFFW[1] must be set to an address + * corresponding to a page in the application flash space. This page will be cleared by the MBR and + * used to store the command before reset. When the UICR.NRFFW[1] field is set the page it refers + * to must not be used by the application. If the UICR.NRFFW[1] is set to 0xFFFFFFFF (the default) + * MBR commands which use flash will be unavailable and return @ref NRF_ERROR_NO_MEM. + * + * @param[in] param Pointer to a struct describing the command. + * + * @note For return values, see ::sd_mbr_command_copy_sd_t, ::sd_mbr_command_copy_bl_t, + * ::sd_mbr_command_compare_t, ::sd_mbr_command_vector_table_base_set_t, + * ::sd_mbr_command_irq_forward_address_set_t + * + * @retval ::NRF_ERROR_NO_MEM if UICR.NRFFW[1] is not set (i.e. is 0xFFFFFFFF). + * @retval ::NRF_ERROR_INVALID_PARAM if an invalid command is given. +*/ +SVCALL(SD_MBR_COMMAND, uint32_t, sd_mbr_command(sd_mbr_command_t* param)); + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // NRF_MBR_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_error.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_error.h new file mode 100644 index 0000000..09d3044 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_error.h @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2014 - 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. + */ + + /** + @defgroup nrf_error SoftDevice Global Error Codes + @{ + + @brief Global Error definitions +*/ + +/* Header guard */ +#ifndef NRF_ERROR_H__ +#define NRF_ERROR_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/** @defgroup NRF_ERRORS_BASE Error Codes Base number definitions + * @{ */ +#define NRF_ERROR_BASE_NUM (0x0) ///< Global error base +#define NRF_ERROR_SDM_BASE_NUM (0x1000) ///< SDM error base +#define NRF_ERROR_SOC_BASE_NUM (0x2000) ///< SoC error base +#define NRF_ERROR_STK_BASE_NUM (0x3000) ///< STK error base +/** @} */ + +#define NRF_SUCCESS (NRF_ERROR_BASE_NUM + 0) ///< Successful command +#define NRF_ERROR_SVC_HANDLER_MISSING (NRF_ERROR_BASE_NUM + 1) ///< SVC handler is missing +#define NRF_ERROR_SOFTDEVICE_NOT_ENABLED (NRF_ERROR_BASE_NUM + 2) ///< SoftDevice has not been enabled +#define NRF_ERROR_INTERNAL (NRF_ERROR_BASE_NUM + 3) ///< Internal Error +#define NRF_ERROR_NO_MEM (NRF_ERROR_BASE_NUM + 4) ///< No Memory for operation +#define NRF_ERROR_NOT_FOUND (NRF_ERROR_BASE_NUM + 5) ///< Not found +#define NRF_ERROR_NOT_SUPPORTED (NRF_ERROR_BASE_NUM + 6) ///< Not supported +#define NRF_ERROR_INVALID_PARAM (NRF_ERROR_BASE_NUM + 7) ///< Invalid Parameter +#define NRF_ERROR_INVALID_STATE (NRF_ERROR_BASE_NUM + 8) ///< Invalid state, operation disallowed in this state +#define NRF_ERROR_INVALID_LENGTH (NRF_ERROR_BASE_NUM + 9) ///< Invalid Length +#define NRF_ERROR_INVALID_FLAGS (NRF_ERROR_BASE_NUM + 10) ///< Invalid Flags +#define NRF_ERROR_INVALID_DATA (NRF_ERROR_BASE_NUM + 11) ///< Invalid Data +#define NRF_ERROR_DATA_SIZE (NRF_ERROR_BASE_NUM + 12) ///< Invalid Data size +#define NRF_ERROR_TIMEOUT (NRF_ERROR_BASE_NUM + 13) ///< Operation timed out +#define NRF_ERROR_NULL (NRF_ERROR_BASE_NUM + 14) ///< Null Pointer +#define NRF_ERROR_FORBIDDEN (NRF_ERROR_BASE_NUM + 15) ///< Forbidden Operation +#define NRF_ERROR_INVALID_ADDR (NRF_ERROR_BASE_NUM + 16) ///< Bad Memory Address +#define NRF_ERROR_BUSY (NRF_ERROR_BASE_NUM + 17) ///< Busy +#define NRF_ERROR_CONN_COUNT (NRF_ERROR_BASE_NUM + 18) ///< Maximum connection count exceeded. +#define NRF_ERROR_RESOURCES (NRF_ERROR_BASE_NUM + 19) ///< Not enough resources for operation + +#ifdef __cplusplus +} +#endif +#endif // NRF_ERROR_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_error_sdm.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_error_sdm.h new file mode 100644 index 0000000..85e08f3 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_error_sdm.h @@ -0,0 +1,70 @@ +/* + * 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. + */ + + /** + @addtogroup nrf_sdm_api + @{ + @defgroup nrf_sdm_error SoftDevice Manager Error Codes + @{ + + @brief Error definitions for the SDM API +*/ + +/* Header guard */ +#ifndef NRF_ERROR_SDM_H__ +#define NRF_ERROR_SDM_H__ + +#include "nrf_error.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN (NRF_ERROR_SDM_BASE_NUM + 0) ///< Unknown LFCLK source. +#define NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION (NRF_ERROR_SDM_BASE_NUM + 1) ///< Incorrect interrupt configuration (can be caused by using illegal priority levels, or having enabled SoftDevice interrupts). +#define NRF_ERROR_SDM_INCORRECT_CLENR0 (NRF_ERROR_SDM_BASE_NUM + 2) ///< Incorrect CLENR0 (can be caused by erroneous SoftDevice flashing). + +#ifdef __cplusplus +} +#endif +#endif // NRF_ERROR_SDM_H__ + +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_error_soc.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_error_soc.h new file mode 100644 index 0000000..ea9825e --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_error_soc.h @@ -0,0 +1,85 @@ +/* + * 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. + */ + +/** + @addtogroup nrf_soc_api + @{ + @defgroup nrf_soc_error SoC Library Error Codes + @{ + + @brief Error definitions for the SoC library + +*/ + +/* Header guard */ +#ifndef NRF_ERROR_SOC_H__ +#define NRF_ERROR_SOC_H__ + +#include "nrf_error.h" +#ifdef __cplusplus +extern "C" { +#endif + +/* Mutex Errors */ +#define NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN (NRF_ERROR_SOC_BASE_NUM + 0) ///< Mutex already taken + +/* NVIC errors */ +#define NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE (NRF_ERROR_SOC_BASE_NUM + 1) ///< NVIC interrupt not available +#define NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED (NRF_ERROR_SOC_BASE_NUM + 2) ///< NVIC interrupt priority not allowed +#define NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 3) ///< NVIC should not return + +/* Power errors */ +#define NRF_ERROR_SOC_POWER_MODE_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 4) ///< Power mode unknown +#define NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 5) ///< Power POF threshold unknown +#define NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 6) ///< Power off should not return + +/* Rand errors */ +#define NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES (NRF_ERROR_SOC_BASE_NUM + 7) ///< RAND not enough values + +/* PPI errors */ +#define NRF_ERROR_SOC_PPI_INVALID_CHANNEL (NRF_ERROR_SOC_BASE_NUM + 8) ///< Invalid PPI Channel +#define NRF_ERROR_SOC_PPI_INVALID_GROUP (NRF_ERROR_SOC_BASE_NUM + 9) ///< Invalid PPI Group + +#ifdef __cplusplus +} +#endif +#endif // NRF_ERROR_SOC_H__ +/** + @} + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_nvic.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_nvic.h new file mode 100644 index 0000000..1705cb6 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_nvic.h @@ -0,0 +1,486 @@ +/* + * Copyright (c) 2016 - 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. + */ + +/** + * @defgroup nrf_nvic_api SoftDevice NVIC API + * @{ + * + * @note In order to use this module, the following code has to be added to a .c file: + * \code + * nrf_nvic_state_t nrf_nvic_state = {0}; + * \endcode + * + * @note Definitions and declarations starting with __ (double underscore) in this header file are + * not intended for direct use by the application. + * + * @brief APIs for the accessing NVIC when using a SoftDevice. + * + */ + +#ifndef NRF_NVIC_H__ +#define NRF_NVIC_H__ + +#include +#include "nrf.h" +#include "nrf_svc.h" +#include "nrf_error.h" +#include "nrf_error_soc.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/**@addtogroup NRF_NVIC_DEFINES Defines + * @{ */ + +/**@defgroup NRF_NVIC_ISER_DEFINES SoftDevice NVIC internal definitions + * @{ */ + +#define __NRF_NVIC_NVMC_IRQn (30) /**< The peripheral ID of the NVMC. IRQ numbers are used to identify peripherals, but the NVMC doesn't have an IRQ number in the MDK. */ + +#define __NRF_NVIC_ISER_COUNT (2) /**< The number of ISER/ICER registers in the NVIC that are used. */ + +/**@brief Interrupts used by the SoftDevice, with IRQn in the range 0-31. */ +#define __NRF_NVIC_SD_IRQS_0 ((uint32_t)( \ + (1U << POWER_CLOCK_IRQn) \ + | (1U << RADIO_IRQn) \ + | (1U << RTC0_IRQn) \ + | (1U << TIMER0_IRQn) \ + | (1U << RNG_IRQn) \ + | (1U << ECB_IRQn) \ + | (1U << CCM_AAR_IRQn) \ + | (1U << TEMP_IRQn) \ + | (1U << __NRF_NVIC_NVMC_IRQn) \ + | (1U << (uint32_t)SWI5_IRQn) \ + )) + +/**@brief Interrupts used by the SoftDevice, with IRQn in the range 32-63. */ +#define __NRF_NVIC_SD_IRQS_1 ((uint32_t)0) + +/**@brief Interrupts available for to application, with IRQn in the range 0-31. */ +#define __NRF_NVIC_APP_IRQS_0 (~__NRF_NVIC_SD_IRQS_0) + +/**@brief Interrupts available for to application, with IRQn in the range 32-63. */ +#define __NRF_NVIC_APP_IRQS_1 (~__NRF_NVIC_SD_IRQS_1) + +/**@} */ + +/**@} */ + +/**@addtogroup NRF_NVIC_VARIABLES Variables + * @{ */ + +/**@brief Type representing the state struct for the SoftDevice NVIC module. */ +typedef struct +{ + uint32_t volatile __irq_masks[__NRF_NVIC_ISER_COUNT]; /**< IRQs enabled by the application in the NVIC. */ + uint32_t volatile __cr_flag; /**< Non-zero if already in a critical region */ +} nrf_nvic_state_t; + +/**@brief Variable keeping the state for the SoftDevice NVIC module. This must be declared in an + * application source file. */ +extern nrf_nvic_state_t nrf_nvic_state; + +/**@} */ + +/**@addtogroup NRF_NVIC_INTERNAL_FUNCTIONS SoftDevice NVIC internal functions + * @{ */ + +/**@brief Disables IRQ interrupts globally, including the SoftDevice's interrupts. + * + * @retval The value of PRIMASK prior to disabling the interrupts. + */ +__STATIC_INLINE int __sd_nvic_irq_disable(void); + +/**@brief Enables IRQ interrupts globally, including the SoftDevice's interrupts. + */ +__STATIC_INLINE void __sd_nvic_irq_enable(void); + +/**@brief Checks if IRQn is available to application + * @param[in] IRQn IRQ to check + * + * @retval 1 (true) if the IRQ to check is available to the application + */ +__STATIC_INLINE uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn); + +/**@brief Checks if priority is available to application + * @param[in] priority priority to check + * + * @retval 1 (true) if the priority to check is available to the application + */ +__STATIC_INLINE uint32_t __sd_nvic_is_app_accessible_priority(uint32_t priority); + +/**@} */ + +/**@addtogroup NRF_NVIC_FUNCTIONS SoftDevice NVIC public functions + * @{ */ + +/**@brief Enable External Interrupt. + * @note Corresponds to NVIC_EnableIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_EnableIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt was enabled. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt has a priority not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn); + +/**@brief Disable External Interrupt. + * @note Corresponds to NVIC_DisableIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_DisableIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt was disabled. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn); + +/**@brief Get Pending Interrupt. + * @note Corresponds to NVIC_GetPendingIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_GetPendingIRQ documentation in CMSIS. + * @param[out] p_pending_irq Return value from NVIC_GetPendingIRQ. + * + * @retval ::NRF_SUCCESS The interrupt is available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq); + +/**@brief Set Pending Interrupt. + * @note Corresponds to NVIC_SetPendingIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_SetPendingIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt is set pending. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn); + +/**@brief Clear Pending Interrupt. + * @note Corresponds to NVIC_ClearPendingIRQ in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_ClearPendingIRQ documentation in CMSIS. + * + * @retval ::NRF_SUCCESS The interrupt pending flag is cleared. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn); + +/**@brief Set Interrupt Priority. + * @note Corresponds to NVIC_SetPriority in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * @pre Priority is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_SetPriority documentation in CMSIS. + * @param[in] priority A valid IRQ priority for use by the application. + * + * @retval ::NRF_SUCCESS The interrupt and priority level is available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt priority is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority); + +/**@brief Get Interrupt Priority. + * @note Corresponds to NVIC_GetPriority in CMSIS. + * + * @pre IRQn is valid and not reserved by the stack. + * + * @param[in] IRQn See the NVIC_GetPriority documentation in CMSIS. + * @param[out] p_priority Return value from NVIC_GetPriority. + * + * @retval ::NRF_SUCCESS The interrupt priority is returned in p_priority. + * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE - IRQn is not available for the application. + */ +__STATIC_INLINE uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority); + +/**@brief System Reset. + * @note Corresponds to NVIC_SystemReset in CMSIS. + * + * @retval ::NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN + */ +__STATIC_INLINE uint32_t sd_nvic_SystemReset(void); + +/**@brief Enter critical region. + * + * @post Application interrupts will be disabled. + * @note sd_nvic_critical_region_enter() and ::sd_nvic_critical_region_exit() must be called in matching pairs inside each + * execution context + * @sa sd_nvic_critical_region_exit + * + * @param[out] p_is_nested_critical_region If 1, the application is now in a nested critical region. + * + * @retval ::NRF_SUCCESS + */ +__STATIC_INLINE uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region); + +/**@brief Exit critical region. + * + * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter. + * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. + * + * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter. + * + * @retval ::NRF_SUCCESS + */ +__STATIC_INLINE uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region); + +/**@} */ + +#ifndef SUPPRESS_INLINE_IMPLEMENTATION + +__STATIC_INLINE int __sd_nvic_irq_disable(void) +{ + int pm = __get_PRIMASK(); + __disable_irq(); + return pm; +} + +__STATIC_INLINE void __sd_nvic_irq_enable(void) +{ + __enable_irq(); +} + +__STATIC_INLINE uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn) +{ + if (IRQn < 32) + { + return ((1UL<= (1 << __NVIC_PRIO_BITS)) + { + return 0; + } + if( priority == 0 + || priority == 1 + || priority == 4 + ) + { + return 0; + } + return 1; +} + + +__STATIC_INLINE uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn) +{ + if (!__sd_nvic_app_accessible_irq(IRQn)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } + if (!__sd_nvic_is_app_accessible_priority(NVIC_GetPriority(IRQn))) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; + } + + if (nrf_nvic_state.__cr_flag) + { + nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] |= (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); + } + else + { + NVIC_EnableIRQ(IRQn); + } + return NRF_SUCCESS; +} + +__STATIC_INLINE uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn) +{ + if (!__sd_nvic_app_accessible_irq(IRQn)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } + + if (nrf_nvic_state.__cr_flag) + { + nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] &= ~(1UL << ((uint32_t)(IRQn) & 0x1F)); + } + else + { + NVIC_DisableIRQ(IRQn); + } + + return NRF_SUCCESS; +} + +__STATIC_INLINE uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + *p_pending_irq = NVIC_GetPendingIRQ(IRQn); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + +__STATIC_INLINE uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + NVIC_SetPendingIRQ(IRQn); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + +__STATIC_INLINE uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + NVIC_ClearPendingIRQ(IRQn); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + +__STATIC_INLINE uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if (!__sd_nvic_app_accessible_irq(IRQn)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } + + if (!__sd_nvic_is_app_accessible_priority(priority)) + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; + } + + NVIC_SetPriority(IRQn, (uint32_t)priority); + return NRF_SUCCESS; +} + +__STATIC_INLINE uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority) +{ + if (__sd_nvic_app_accessible_irq(IRQn)) + { + *p_priority = (NVIC_GetPriority(IRQn) & 0xFF); + return NRF_SUCCESS; + } + else + { + return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; + } +} + +__STATIC_INLINE uint32_t sd_nvic_SystemReset(void) +{ + NVIC_SystemReset(); + return NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN; +} + +__STATIC_INLINE uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region) +{ + int was_masked = __sd_nvic_irq_disable(); + if (!nrf_nvic_state.__cr_flag) + { + nrf_nvic_state.__cr_flag = 1; + nrf_nvic_state.__irq_masks[0] = ( NVIC->ICER[0] & __NRF_NVIC_APP_IRQS_0 ); + NVIC->ICER[0] = __NRF_NVIC_APP_IRQS_0; + nrf_nvic_state.__irq_masks[1] = ( NVIC->ICER[1] & __NRF_NVIC_APP_IRQS_1 ); + NVIC->ICER[1] = __NRF_NVIC_APP_IRQS_1; + *p_is_nested_critical_region = 0; + } + else + { + *p_is_nested_critical_region = 1; + } + if (!was_masked) + { + __sd_nvic_irq_enable(); + } + return NRF_SUCCESS; +} + +__STATIC_INLINE uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region) +{ + if (nrf_nvic_state.__cr_flag && (is_nested_critical_region == 0)) + { + int was_masked = __sd_nvic_irq_disable(); + NVIC->ISER[0] = nrf_nvic_state.__irq_masks[0]; + NVIC->ISER[1] = nrf_nvic_state.__irq_masks[1]; + nrf_nvic_state.__cr_flag = 0; + if (!was_masked) + { + __sd_nvic_irq_enable(); + } + } + + return NRF_SUCCESS; +} + +#endif /* SUPPRESS_INLINE_IMPLEMENTATION */ + +#ifdef __cplusplus +} +#endif + +#endif // NRF_NVIC_H__ + +/**@} */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_sd_def.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_sd_def.h new file mode 100644 index 0000000..7bf0ff0 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_sd_def.h @@ -0,0 +1,28 @@ +/* Copyright (c) 2015 - 2018 Nordic Semiconductor ASA. All Rights Reserved. + * + * The information contained herein is confidential property of Nordic Semiconductor ASA. + * The use, copying, transfer or disclosure of such information is prohibited except by + * express written agreement with Nordic Semiconductor ASA. + * + */ + +#ifndef NRF_SD_DEF_H__ +#define NRF_SD_DEF_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SD_PPI_CHANNELS_USED 0xFFFE0000uL /**< PPI channels utilized by SotfDevice (not available to the application). */ +#define SD_PPI_GROUPS_USED 0x0000000CuL /**< PPI groups utilized by SoftDevice (not available to the application). */ +#define SD_TIMERS_USED 0x00000001uL /**< Timers used by SoftDevice. */ +#define SD_SWI_USED 0x0000003CuL /**< Software interrupts used by SoftDevice */ + + +#ifdef __cplusplus +} +#endif + +#endif /* NRF_SD_DEF_H__ */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_sdm.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_sdm.h new file mode 100644 index 0000000..09eaecb --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_sdm.h @@ -0,0 +1,357 @@ +/* + * Copyright (c) 2015 - 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. + */ + +/** + @defgroup nrf_sdm_api SoftDevice Manager API + @{ + + @brief APIs for SoftDevice management. + +*/ + +#ifndef NRF_SDM_H__ +#define NRF_SDM_H__ + +#include +#include "nrf.h" +#include "nrf_svc.h" +#include "nrf_error.h" +#include "nrf_error_sdm.h" +#include "nrf_soc.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup NRF_SDM_DEFINES Defines + * @{ */ +#ifdef NRFSOC_DOXYGEN +/// Declared in nrf_mbr.h +#define MBR_SIZE 0 +#warning test +#endif + +/** @brief The major version for the SoftDevice binary distributed with this header file. */ +#define SD_MAJOR_VERSION (5) + +/** @brief The minor version for the SoftDevice binary distributed with this header file. */ +#define SD_MINOR_VERSION (1) + +/** @brief The bugfix version for the SoftDevice binary distributed with this header file. */ +#define SD_BUGFIX_VERSION (0) + +/** @brief The full version number for the SoftDevice binary this header file was distributed + * with, as a decimal number in the form Mmmmbbb, where: + * - M is major version (one or more digits) + * - mmm is minor version (three digits) + * - bbb is bugfix version (three digits). */ +#define SD_VERSION (SD_MAJOR_VERSION * 1000000 + SD_MINOR_VERSION * 1000 + SD_BUGFIX_VERSION) + +/** @brief SoftDevice Manager SVC Base number. */ +#define SDM_SVC_BASE 0x10 + +/** @brief SoftDevice unique string size in bytes. */ +#define SD_UNIQUE_STR_SIZE 20 + +/** @brief Invalid info field. Returned when an info field does not exist. */ +#define SDM_INFO_FIELD_INVALID (0) + +/** @brief Defines the SoftDevice Information Structure location (address) as an offset from +the start of the SoftDevice (without MBR)*/ +#define SOFTDEVICE_INFO_STRUCT_OFFSET (0x2000) + +/** @brief Defines the absolute SoftDevice Information Structure location (address) when the + * SoftDevice is installed just above the MBR (the usual case). */ +#define SOFTDEVICE_INFO_STRUCT_ADDRESS (SOFTDEVICE_INFO_STRUCT_OFFSET + MBR_SIZE) + +/** @brief Defines the offset for the SoftDevice Information Structure size value relative to the + * SoftDevice base address. The size value is of type uint8_t. */ +#define SD_INFO_STRUCT_SIZE_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET) + +/** @brief Defines the offset for the SoftDevice size value relative to the SoftDevice base address. + * The size value is of type uint32_t. */ +#define SD_SIZE_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x08) + +/** @brief Defines the offset for FWID value relative to the SoftDevice base address. The FWID value + * is of type uint16_t. */ +#define SD_FWID_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x0C) + +/** @brief Defines the offset for the SoftDevice ID relative to the SoftDevice base address. The ID + * is of type uint32_t. */ +#define SD_ID_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x10) + +/** @brief Defines the offset for the SoftDevice version relative to the SoftDevice base address in + * the same format as @ref SD_VERSION, stored as an uint32_t. */ +#define SD_VERSION_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x14) + +/** @brief Defines the offset for the SoftDevice unique string relative to the SoftDevice base address. + * The SD_UNIQUE_STR is stored as an array of uint8_t. The size of array is @ref SD_UNIQUE_STR_SIZE. + */ +#define SD_UNIQUE_STR_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x18) + +/** @brief Defines a macro for retrieving the actual SoftDevice Information Structure size value + * from a given base address. Use @ref MBR_SIZE as the argument when the SoftDevice is + * installed just above the MBR (the usual case). */ +#define SD_INFO_STRUCT_SIZE_GET(baseaddr) (*((uint8_t *) ((baseaddr) + SD_INFO_STRUCT_SIZE_OFFSET))) + +/** @brief Defines a macro for retrieving the actual SoftDevice size value from a given base + * address. Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above + * the MBR (the usual case). */ +#define SD_SIZE_GET(baseaddr) (*((uint32_t *) ((baseaddr) + SD_SIZE_OFFSET))) + +/** @brief Defines a macro for retrieving the actual FWID value from a given base address. Use + * @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the usual + * case). */ +#define SD_FWID_GET(baseaddr) (*((uint16_t *) ((baseaddr) + SD_FWID_OFFSET))) + +/** @brief Defines a macro for retrieving the actual SoftDevice ID from a given base address. Use + * @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the + * usual case). */ +#define SD_ID_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_ID_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ + ? (*((uint32_t *) ((baseaddr) + SD_ID_OFFSET))) : SDM_INFO_FIELD_INVALID) + +/** @brief Defines a macro for retrieving the actual SoftDevice version from a given base address. + * Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR + * (the usual case). */ +#define SD_VERSION_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_VERSION_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ + ? (*((uint32_t *) ((baseaddr) + SD_VERSION_OFFSET))) : SDM_INFO_FIELD_INVALID) + +/** @brief Defines a macro for retrieving the address of SoftDevice unique str based on a given base address. + * Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR + * (the usual case). */ +#define SD_UNIQUE_STR_ADDR_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_UNIQUE_STR_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ + ? (((uint8_t *) ((baseaddr) + SD_UNIQUE_STR_OFFSET))) : SDM_INFO_FIELD_INVALID) + +/**@defgroup NRF_FAULT_ID_RANGES Fault ID ranges + * @{ */ +#define NRF_FAULT_ID_SD_RANGE_START 0x00000000 /**< SoftDevice ID range start. */ +#define NRF_FAULT_ID_APP_RANGE_START 0x00001000 /**< Application ID range start. */ +/**@} */ + +/**@defgroup NRF_FAULT_IDS Fault ID types + * @{ */ +#define NRF_FAULT_ID_SD_ASSERT (NRF_FAULT_ID_SD_RANGE_START + 1) /**< SoftDevice assertion. The info parameter is reserved for future used. */ +#define NRF_FAULT_ID_APP_MEMACC (NRF_FAULT_ID_APP_RANGE_START + 1) /**< Application invalid memory access. The info parameter will contain 0x00000000, + in case of SoftDevice RAM access violation. In case of SoftDevice peripheral + register violation the info parameter will contain the sub-region number of + PREGION[0], on whose address range the disallowed write access caused the + memory access fault. */ +/**@} */ + +/** @} */ + +/** @addtogroup NRF_SDM_ENUMS Enumerations + * @{ */ + +/**@brief nRF SoftDevice Manager API SVC numbers. */ +enum NRF_SD_SVCS +{ + SD_SOFTDEVICE_ENABLE = SDM_SVC_BASE, /**< ::sd_softdevice_enable */ + SD_SOFTDEVICE_DISABLE, /**< ::sd_softdevice_disable */ + SD_SOFTDEVICE_IS_ENABLED, /**< ::sd_softdevice_is_enabled */ + SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, /**< ::sd_softdevice_vector_table_base_set */ + SVC_SDM_LAST /**< Placeholder for last SDM SVC */ +}; + +/** @} */ + +/** @addtogroup NRF_SDM_DEFINES Defines + * @{ */ + +/**@defgroup NRF_CLOCK_LF_ACCURACY Clock accuracy + * @{ */ + +#define NRF_CLOCK_LF_ACCURACY_250_PPM (0) /**< Default: 250 ppm */ +#define NRF_CLOCK_LF_ACCURACY_500_PPM (1) /**< 500 ppm */ +#define NRF_CLOCK_LF_ACCURACY_150_PPM (2) /**< 150 ppm */ +#define NRF_CLOCK_LF_ACCURACY_100_PPM (3) /**< 100 ppm */ +#define NRF_CLOCK_LF_ACCURACY_75_PPM (4) /**< 75 ppm */ +#define NRF_CLOCK_LF_ACCURACY_50_PPM (5) /**< 50 ppm */ +#define NRF_CLOCK_LF_ACCURACY_30_PPM (6) /**< 30 ppm */ +#define NRF_CLOCK_LF_ACCURACY_20_PPM (7) /**< 20 ppm */ +#define NRF_CLOCK_LF_ACCURACY_10_PPM (8) /**< 10 ppm */ +#define NRF_CLOCK_LF_ACCURACY_5_PPM (9) /**< 5 ppm */ +#define NRF_CLOCK_LF_ACCURACY_2_PPM (10) /**< 2 ppm */ +#define NRF_CLOCK_LF_ACCURACY_1_PPM (11) /**< 1 ppm */ + +/** @} */ + +/**@defgroup NRF_CLOCK_LF_SRC Possible LFCLK oscillator sources + * @{ */ + +#define NRF_CLOCK_LF_SRC_RC (0) /**< LFCLK RC oscillator. */ +#define NRF_CLOCK_LF_SRC_XTAL (1) /**< LFCLK crystal oscillator. */ +#define NRF_CLOCK_LF_SRC_SYNTH (2) /**< LFCLK Synthesized from HFCLK. */ + +/** @} */ + +/** @} */ + +/** @addtogroup NRF_SDM_TYPES Types + * @{ */ + +/**@brief Type representing LFCLK oscillator source. */ +typedef struct +{ + uint8_t source; /**< LF oscillator clock source, see @ref NRF_CLOCK_LF_SRC. */ + uint8_t rc_ctiv; /**< Only for ::NRF_CLOCK_LF_SRC_RC: Calibration timer interval in 1/4 second + units (nRF52: 1-32). + @note To avoid excessive clock drift, 0.5 degrees Celsius is the + maximum temperature change allowed in one calibration timer + interval. The interval should be selected to ensure this. + + @note Must be 0 if source is not ::NRF_CLOCK_LF_SRC_RC. */ + uint8_t rc_temp_ctiv; /**< Only for ::NRF_CLOCK_LF_SRC_RC: How often (in number of calibration + intervals) the RC oscillator shall be calibrated if the temperature + hasn't changed. + 0: Always calibrate even if the temperature hasn't changed. + 1: Only calibrate if the temperature has changed (legacy - nRF51 only). + 2-33: Check the temperature and only calibrate if it has changed, + however calibration will take place every rc_temp_ctiv + intervals in any case. + + @note Must be 0 if source is not ::NRF_CLOCK_LF_SRC_RC. + + @note For nRF52, the application must ensure calibration at least once + every 8 seconds to ensure +/-500 ppm clock stability. The + recommended configuration for ::NRF_CLOCK_LF_SRC_RC on nRF52 is + rc_ctiv=16 and rc_temp_ctiv=2. This will ensure calibration at + least once every 8 seconds and for temperature changes of 0.5 + degrees Celsius every 4 seconds. See the Product Specification + for the nRF52 device being used for more information.*/ + uint8_t accuracy; /**< External clock accuracy used in the LL to compute timing + windows, see @ref NRF_CLOCK_LF_ACCURACY.*/ +} nrf_clock_lf_cfg_t; + +/**@brief Fault Handler type. + * + * When certain unrecoverable errors occur within the application or SoftDevice the fault handler will be called back. + * The protocol stack will be in an undefined state when this happens and the only way to recover will be to + * perform a reset, using e.g. CMSIS NVIC_SystemReset(). + * If the application returns from the fault handler the SoftDevice will call NVIC_SystemReset(). + * + * @note This callback is executed in HardFault context, thus SVC functions cannot be called from the fault callback. + * + * @param[in] id Fault identifier. See @ref NRF_FAULT_IDS. + * @param[in] pc The program counter of the instruction that triggered the fault. + * @param[in] info Optional additional information regarding the fault. Refer to each Fault identifier for details. + * + * @note When id is set to @ref NRF_FAULT_ID_APP_MEMACC, pc will contain the address of the instruction being executed at the time when + * the fault is detected by the CPU. The CPU program counter may have advanced up to 2 instructions (no branching) after the one that triggered the fault. + */ +typedef void (*nrf_fault_handler_t)(uint32_t id, uint32_t pc, uint32_t info); + +/** @} */ + +/** @addtogroup NRF_SDM_FUNCTIONS Functions + * @{ */ + +/**@brief Enables the SoftDevice and by extension the protocol stack. + * + * @note Some care must be taken if a low frequency clock source is already running when calling this function: + * If the LF clock has a different source then the one currently running, it will be stopped. Then, the new + * clock source will be started. + * + * @note This function has no effect when returning with an error. + * + * @post If return code is ::NRF_SUCCESS + * - SoC library and protocol stack APIs are made available. + * - A portion of RAM will be unavailable (see relevant SDS documentation). + * - Some peripherals will be unavailable or available only through the SoC API (see relevant SDS documentation). + * - Interrupts will not arrive from protected peripherals or interrupts. + * - nrf_nvic_ functions must be used instead of CMSIS NVIC_ functions for reliable usage of the SoftDevice. + * - Interrupt latency may be affected by the SoftDevice (see relevant SDS documentation). + * - Chosen low frequency clock source will be running. + * + * @param p_clock_lf_cfg Low frequency clock source and accuracy. + If NULL the clock will be configured as an RC source with rc_ctiv = 16 and .rc_temp_ctiv = 2 + In the case of XTAL source, the PPM accuracy of the chosen clock source must be greater than or equal to the actual characteristics of your XTAL clock. + * @param fault_handler Callback to be invoked in case of fault, cannot be NULL. + * + * @retval ::NRF_SUCCESS + * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. + * @retval ::NRF_ERROR_INVALID_STATE SoftDevice is already enabled, and the clock source and fault handler cannot be updated. + * @retval ::NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION SoftDevice interrupt is already enabled, or an enabled interrupt has an illegal priority level. + * @retval ::NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN Unknown low frequency clock source selected. + */ +SVCALL(SD_SOFTDEVICE_ENABLE, uint32_t, sd_softdevice_enable(nrf_clock_lf_cfg_t const * p_clock_lf_cfg, nrf_fault_handler_t fault_handler)); + + +/**@brief Disables the SoftDevice and by extension the protocol stack. + * + * Idempotent function to disable the SoftDevice. + * + * @post SoC library and protocol stack APIs are made unavailable. + * @post All interrupts that was protected by the SoftDevice will be disabled and initialized to priority 0 (highest). + * @post All peripherals used by the SoftDevice will be reset to default values. + * @post All of RAM become available. + * @post All interrupts are forwarded to the application. + * @post LFCLK source chosen in ::sd_softdevice_enable will be left running. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_SOFTDEVICE_DISABLE, uint32_t, sd_softdevice_disable(void)); + +/**@brief Check if the SoftDevice is enabled. + * + * @param[out] p_softdevice_enabled If the SoftDevice is enabled: 1 else 0. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_SOFTDEVICE_IS_ENABLED, uint32_t, sd_softdevice_is_enabled(uint8_t * p_softdevice_enabled)); + +/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the SoftDevice + * + * This function is only intended to be called when a bootloader is enabled. + * + * @param[in] address The base address of the interrupt vector table for forwarded interrupts. + + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, uint32_t, sd_softdevice_vector_table_base_set(uint32_t address)); + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // NRF_SDM_H__ + +/** + @} +*/ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_soc.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_soc.h new file mode 100644 index 0000000..60fff94 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_soc.h @@ -0,0 +1,934 @@ +/* + * Copyright (c) 2015 - 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. + */ + +/** + * @defgroup nrf_soc_api SoC Library API + * @{ + * + * @brief APIs for the SoC library. + * + */ + +#ifndef NRF_SOC_H__ +#define NRF_SOC_H__ + +#include +#include "nrf.h" +#include "nrf_svc.h" +#include "nrf_error.h" +#include "nrf_error_soc.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/**@addtogroup NRF_SOC_DEFINES Defines + * @{ */ + +/**@brief The number of the lowest SVC number reserved for the SoC library. */ +#define SOC_SVC_BASE (0x20) /**< Base value for SVCs that are available when the SoftDevice is disabled. */ +#define SOC_SVC_BASE_NOT_AVAILABLE (0x2B) /**< Base value for SVCs that are not available when the SoftDevice is disabled. */ + +/**@brief Guaranteed time for application to process radio inactive notification. */ +#define NRF_RADIO_NOTIFICATION_INACTIVE_GUARANTEED_TIME_US (62) + +/**@brief The minimum allowed timeslot extension time. */ +#define NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US (200) + +/**@brief The maximum processing time to handle a timeslot extension. */ +#define NRF_RADIO_MAX_EXTENSION_PROCESSING_TIME_US (17) + +/**@brief The latest time before the end of a timeslot the timeslot can be extended. */ +#define NRF_RADIO_MIN_EXTENSION_MARGIN_US (79) + +#define SOC_ECB_KEY_LENGTH (16) /**< ECB key length. */ +#define SOC_ECB_CLEARTEXT_LENGTH (16) /**< ECB cleartext length. */ +#define SOC_ECB_CIPHERTEXT_LENGTH (SOC_ECB_CLEARTEXT_LENGTH) /**< ECB ciphertext length. */ + +#define SD_EVT_IRQn (SWI2_IRQn) /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */ +#define SD_EVT_IRQHandler (SWI2_IRQHandler) /**< SoftDevice Event IRQ handler. Used for both protocol events and SoC events. + The default interrupt priority for this handler is set to 4 */ +#define RADIO_NOTIFICATION_IRQn (SWI1_IRQn) /**< The radio notification IRQ number. */ +#define RADIO_NOTIFICATION_IRQHandler (SWI1_IRQHandler) /**< The radio notification IRQ handler. + The default interrupt priority for this handler is set to 4 */ +#define NRF_RADIO_LENGTH_MIN_US (100) /**< The shortest allowed radio timeslot, in microseconds. */ +#define NRF_RADIO_LENGTH_MAX_US (100000) /**< The longest allowed radio timeslot, in microseconds. */ + +#define NRF_RADIO_DISTANCE_MAX_US (128000000UL - 1UL) /**< The longest timeslot distance, in microseconds, allowed for the distance parameter (see @ref nrf_radio_request_normal_t) in the request. */ + +#define NRF_RADIO_EARLIEST_TIMEOUT_MAX_US (128000000UL - 1UL) /**< The longest timeout, in microseconds, allowed when requesting the earliest possible timeslot. */ + +#define NRF_RADIO_START_JITTER_US (2) /**< The maximum jitter in @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START relative to the requested start time. */ + +/**@} */ + +/**@addtogroup NRF_SOC_ENUMS Enumerations + * @{ */ + +/**@brief The SVC numbers used by the SVC functions in the SoC library. */ +enum NRF_SOC_SVCS +{ + SD_PPI_CHANNEL_ENABLE_GET = SOC_SVC_BASE, + SD_PPI_CHANNEL_ENABLE_SET, + SD_PPI_CHANNEL_ENABLE_CLR, + SD_PPI_CHANNEL_ASSIGN, + SD_PPI_GROUP_TASK_ENABLE, + SD_PPI_GROUP_TASK_DISABLE, + SD_PPI_GROUP_ASSIGN, + SD_PPI_GROUP_GET, + SD_FLASH_PAGE_ERASE, + SD_FLASH_WRITE, + SD_FLASH_PROTECT, + SD_MUTEX_NEW = SOC_SVC_BASE_NOT_AVAILABLE, + SD_MUTEX_ACQUIRE, + SD_MUTEX_RELEASE, + SD_RAND_APPLICATION_POOL_CAPACITY_GET, + SD_RAND_APPLICATION_BYTES_AVAILABLE_GET, + SD_RAND_APPLICATION_VECTOR_GET, + SD_POWER_MODE_SET, + SD_POWER_SYSTEM_OFF, + SD_POWER_RESET_REASON_GET, + SD_POWER_RESET_REASON_CLR, + SD_POWER_POF_ENABLE, + SD_POWER_POF_THRESHOLD_SET, + SD_POWER_RAM_POWER_SET, + SD_POWER_RAM_POWER_CLR, + SD_POWER_RAM_POWER_GET, + SD_POWER_GPREGRET_SET, + SD_POWER_GPREGRET_CLR, + SD_POWER_GPREGRET_GET, + SD_POWER_DCDC_MODE_SET, + SD_APP_EVT_WAIT, + SD_CLOCK_HFCLK_REQUEST, + SD_CLOCK_HFCLK_RELEASE, + SD_CLOCK_HFCLK_IS_RUNNING, + SD_RADIO_NOTIFICATION_CFG_SET, + SD_ECB_BLOCK_ENCRYPT, + SD_ECB_BLOCKS_ENCRYPT, + SD_RADIO_SESSION_OPEN, + SD_RADIO_SESSION_CLOSE, + SD_RADIO_REQUEST, + SD_EVT_GET, + SD_TEMP_GET, + SVC_SOC_LAST +}; + +/**@brief Possible values of a ::nrf_mutex_t. */ +enum NRF_MUTEX_VALUES +{ + NRF_MUTEX_FREE, + NRF_MUTEX_TAKEN +}; + +/**@brief Power modes. */ +enum NRF_POWER_MODES +{ + NRF_POWER_MODE_CONSTLAT, /**< Constant latency mode. See power management in the reference manual. */ + NRF_POWER_MODE_LOWPWR /**< Low power mode. See power management in the reference manual. */ +}; + + +/**@brief Power failure thresholds */ +enum NRF_POWER_THRESHOLDS +{ + NRF_POWER_THRESHOLD_V17 = 4UL, /**< 1.7 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V18, /**< 1.8 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V19, /**< 1.9 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V20, /**< 2.0 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V21, /**< 2.1 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V22, /**< 2.2 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V23, /**< 2.3 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V24, /**< 2.4 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V25, /**< 2.5 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V26, /**< 2.6 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V27, /**< 2.7 Volts power failure threshold. */ + NRF_POWER_THRESHOLD_V28 /**< 2.8 Volts power failure threshold. */ +}; + + +/**@brief DC/DC converter modes. */ +enum NRF_POWER_DCDC_MODES +{ + NRF_POWER_DCDC_DISABLE, /**< The DCDC is disabled. */ + NRF_POWER_DCDC_ENABLE /**< The DCDC is enabled. */ +}; + +/**@brief Radio notification distances. */ +enum NRF_RADIO_NOTIFICATION_DISTANCES +{ + NRF_RADIO_NOTIFICATION_DISTANCE_NONE = 0, /**< The event does not have a notification. */ + NRF_RADIO_NOTIFICATION_DISTANCE_800US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_1740US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_2680US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_3620US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_4560US, /**< The distance from the active notification to start of radio activity. */ + NRF_RADIO_NOTIFICATION_DISTANCE_5500US /**< The distance from the active notification to start of radio activity. */ +}; + + +/**@brief Radio notification types. */ +enum NRF_RADIO_NOTIFICATION_TYPES +{ + NRF_RADIO_NOTIFICATION_TYPE_NONE = 0, /**< The event does not have a radio notification signal. */ + NRF_RADIO_NOTIFICATION_TYPE_INT_ON_ACTIVE, /**< Using interrupt for notification when the radio will be enabled. */ + NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE, /**< Using interrupt for notification when the radio has been disabled. */ + NRF_RADIO_NOTIFICATION_TYPE_INT_ON_BOTH, /**< Using interrupt for notification both when the radio will be enabled and disabled. */ +}; + +/**@brief The Radio signal callback types. */ +enum NRF_RADIO_CALLBACK_SIGNAL_TYPE +{ + NRF_RADIO_CALLBACK_SIGNAL_TYPE_START, /**< This signal indicates the start of the radio timeslot. */ + NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0, /**< This signal indicates the NRF_TIMER0 interrupt. */ + NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO, /**< This signal indicates the NRF_RADIO interrupt. */ + NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_FAILED, /**< This signal indicates extend action failed. */ + NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_SUCCEEDED /**< This signal indicates extend action succeeded. */ +}; + +/**@brief The actions requested by the signal callback. + * + * This code gives the SOC instructions about what action to take when the signal callback has + * returned. + */ +enum NRF_RADIO_SIGNAL_CALLBACK_ACTION +{ + NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE, /**< Return without action. */ + NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND, /**< Request an extension of the current + timeslot. Maximum execution time for this action: + @ref NRF_RADIO_MAX_EXTENSION_PROCESSING_TIME_US. + This action must be started at least + @ref NRF_RADIO_MIN_EXTENSION_MARGIN_US before + the end of the timeslot. */ + NRF_RADIO_SIGNAL_CALLBACK_ACTION_END, /**< End the current radio timeslot. */ + NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END /**< Request a new radio timeslot and end the current timeslot. */ +}; + +/**@brief Radio timeslot high frequency clock source configuration. */ +enum NRF_RADIO_HFCLK_CFG +{ + NRF_RADIO_HFCLK_CFG_XTAL_GUARANTEED, /**< The SoftDevice will guarantee that the high frequency clock source is the + external crystal for the whole duration of the timeslot. This should be the + preferred option for events that use the radio or require high timing accuracy. + @note The SoftDevice will automatically turn on and off the external crystal, + at the beginning and end of the timeslot, respectively. The crystal may also + intentionally be left running after the timeslot, in cases where it is needed + by the SoftDevice shortly after the end of the timeslot. */ + NRF_RADIO_HFCLK_CFG_NO_GUARANTEE /**< This configuration allows for earlier and tighter scheduling of timeslots. + The RC oscillator may be the clock source in part or for the whole duration of the timeslot. + The RC oscillator's accuracy must therefore be taken into consideration. + @note If the application will use the radio peripheral in timeslots with this configuration, + it must make sure that the crystal is running and stable before starting the radio. */ +}; + +/**@brief Radio timeslot priorities. */ +enum NRF_RADIO_PRIORITY +{ + NRF_RADIO_PRIORITY_HIGH, /**< High (equal priority as the normal connection priority of the SoftDevice stack(s)). */ + NRF_RADIO_PRIORITY_NORMAL, /**< Normal (equal priority as the priority of secondary activities of the SoftDevice stack(s)). */ +}; + +/**@brief Radio timeslot request type. */ +enum NRF_RADIO_REQUEST_TYPE +{ + NRF_RADIO_REQ_TYPE_EARLIEST, /**< Request radio timeslot as early as possible. This should always be used for the first request in a session. */ + NRF_RADIO_REQ_TYPE_NORMAL /**< Normal radio timeslot request. */ +}; + +/**@brief SoC Events. */ +enum NRF_SOC_EVTS +{ + NRF_EVT_HFCLKSTARTED, /**< Event indicating that the HFCLK has started. */ + NRF_EVT_POWER_FAILURE_WARNING, /**< Event indicating that a power failure warning has occurred. */ + NRF_EVT_FLASH_OPERATION_SUCCESS, /**< Event indicating that the ongoing flash operation has completed successfully. */ + NRF_EVT_FLASH_OPERATION_ERROR, /**< Event indicating that the ongoing flash operation has timed out with an error. */ + NRF_EVT_RADIO_BLOCKED, /**< Event indicating that a radio timeslot was blocked. */ + NRF_EVT_RADIO_CANCELED, /**< Event indicating that a radio timeslot was canceled by SoftDevice. */ + NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN, /**< Event indicating that a radio timeslot signal callback handler return was invalid. */ + NRF_EVT_RADIO_SESSION_IDLE, /**< Event indicating that a radio timeslot session is idle. */ + NRF_EVT_RADIO_SESSION_CLOSED, /**< Event indicating that a radio timeslot session is closed. */ + NRF_EVT_NUMBER_OF_EVTS +}; + +/**@} */ + + +/**@addtogroup NRF_SOC_STRUCTURES Structures + * @{ */ + +/**@brief Represents a mutex for use with the nrf_mutex functions. + * @note Accessing the value directly is not safe, use the mutex functions! + */ +typedef volatile uint8_t nrf_mutex_t; + +/**@brief Parameters for a request for a timeslot as early as possible. */ +typedef struct +{ + uint8_t hfclk; /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */ + uint8_t priority; /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */ + uint32_t length_us; /**< The radio timeslot length (in the range 100 to 100,000] microseconds). */ + uint32_t timeout_us; /**< Longest acceptable delay until the start of the requested timeslot (up to @ref NRF_RADIO_EARLIEST_TIMEOUT_MAX_US microseconds). */ +} nrf_radio_request_earliest_t; + +/**@brief Parameters for a normal radio timeslot request. */ +typedef struct +{ + uint8_t hfclk; /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */ + uint8_t priority; /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */ + uint32_t distance_us; /**< Distance from the start of the previous radio timeslot (up to @ref NRF_RADIO_DISTANCE_MAX_US microseconds). */ + uint32_t length_us; /**< The radio timeslot length (in the range [100..100,000] microseconds). */ +} nrf_radio_request_normal_t; + +/**@brief Radio timeslot request parameters. */ +typedef struct +{ + uint8_t request_type; /**< Type of request, see @ref NRF_RADIO_REQUEST_TYPE. */ + union + { + nrf_radio_request_earliest_t earliest; /**< Parameters for requesting a radio timeslot as early as possible. */ + nrf_radio_request_normal_t normal; /**< Parameters for requesting a normal radio timeslot. */ + } params; /**< Parameter union. */ +} nrf_radio_request_t; + +/**@brief Return parameters of the radio timeslot signal callback. */ +typedef struct +{ + uint8_t callback_action; /**< The action requested by the application when returning from the signal callback, see @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION. */ + union + { + struct + { + nrf_radio_request_t * p_next; /**< The request parameters for the next radio timeslot. */ + } request; /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END. */ + struct + { + uint32_t length_us; /**< Requested extension of the radio timeslot duration (microseconds) (for minimum time see @ref NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US). */ + } extend; /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND. */ + } params; /**< Parameter union. */ +} nrf_radio_signal_callback_return_param_t; + +/**@brief The radio timeslot signal callback type. + * + * @note In case of invalid return parameters, the radio timeslot will automatically end + * immediately after returning from the signal callback and the + * @ref NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN event will be sent. + * @note The returned struct pointer must remain valid after the signal callback + * function returns. For instance, this means that it must not point to a stack variable. + * + * @param[in] signal_type Type of signal, see @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE. + * + * @return Pointer to structure containing action requested by the application. + */ +typedef nrf_radio_signal_callback_return_param_t * (*nrf_radio_signal_callback_t) (uint8_t signal_type); + +/**@brief AES ECB parameter typedefs */ +typedef uint8_t soc_ecb_key_t[SOC_ECB_KEY_LENGTH]; /**< Encryption key type. */ +typedef uint8_t soc_ecb_cleartext_t[SOC_ECB_CLEARTEXT_LENGTH]; /**< Cleartext data type. */ +typedef uint8_t soc_ecb_ciphertext_t[SOC_ECB_CIPHERTEXT_LENGTH]; /**< Ciphertext data type. */ + +/**@brief AES ECB data structure */ +typedef struct +{ + soc_ecb_key_t key; /**< Encryption key. */ + soc_ecb_cleartext_t cleartext; /**< Cleartext data. */ + soc_ecb_ciphertext_t ciphertext; /**< Ciphertext data. */ +} nrf_ecb_hal_data_t; + +/**@brief AES ECB block. Used to provide multiple blocks in a single call + to @ref sd_ecb_blocks_encrypt.*/ +typedef struct +{ + soc_ecb_key_t const * p_key; /**< Pointer to the Encryption key. */ + soc_ecb_cleartext_t const * p_cleartext; /**< Pointer to the Cleartext data. */ + soc_ecb_ciphertext_t * p_ciphertext; /**< Pointer to the Ciphertext data. */ +} nrf_ecb_hal_data_block_t; + +/**@} */ + +/**@addtogroup NRF_SOC_FUNCTIONS Functions + * @{ */ + +/**@brief Initialize a mutex. + * + * @param[in] p_mutex Pointer to the mutex to initialize. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_MUTEX_NEW, uint32_t, sd_mutex_new(nrf_mutex_t * p_mutex)); + +/**@brief Attempt to acquire a mutex. + * + * @param[in] p_mutex Pointer to the mutex to acquire. + * + * @retval ::NRF_SUCCESS The mutex was successfully acquired. + * @retval ::NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN The mutex could not be acquired. + */ +SVCALL(SD_MUTEX_ACQUIRE, uint32_t, sd_mutex_acquire(nrf_mutex_t * p_mutex)); + +/**@brief Release a mutex. + * + * @param[in] p_mutex Pointer to the mutex to release. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_MUTEX_RELEASE, uint32_t, sd_mutex_release(nrf_mutex_t * p_mutex)); + +/**@brief Query the capacity of the application random pool. + * + * @param[out] p_pool_capacity The capacity of the pool. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_RAND_APPLICATION_POOL_CAPACITY_GET, uint32_t, sd_rand_application_pool_capacity_get(uint8_t * p_pool_capacity)); + +/**@brief Get number of random bytes available to the application. + * + * @param[out] p_bytes_available The number of bytes currently available in the pool. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_RAND_APPLICATION_BYTES_AVAILABLE_GET, uint32_t, sd_rand_application_bytes_available_get(uint8_t * p_bytes_available)); + +/**@brief Get random bytes from the application pool. + * + * @param[out] p_buff Pointer to unit8_t buffer for storing the bytes. + * @param[in] length Number of bytes to take from pool and place in p_buff. + * + * @retval ::NRF_SUCCESS The requested bytes were written to p_buff. + * @retval ::NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES No bytes were written to the buffer, because there were not enough bytes available. +*/ +SVCALL(SD_RAND_APPLICATION_VECTOR_GET, uint32_t, sd_rand_application_vector_get(uint8_t * p_buff, uint8_t length)); + +/**@brief Gets the reset reason register. + * + * @param[out] p_reset_reason Contents of the NRF_POWER->RESETREAS register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RESET_REASON_GET, uint32_t, sd_power_reset_reason_get(uint32_t * p_reset_reason)); + +/**@brief Clears the bits of the reset reason register. + * + * @param[in] reset_reason_clr_msk Contains the bits to clear from the reset reason register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RESET_REASON_CLR, uint32_t, sd_power_reset_reason_clr(uint32_t reset_reason_clr_msk)); + +/**@brief Sets the power mode when in CPU sleep. + * + * @param[in] power_mode The power mode to use when in CPU sleep, see @ref NRF_POWER_MODES. @sa sd_app_evt_wait + * + * @retval ::NRF_SUCCESS The power mode was set. + * @retval ::NRF_ERROR_SOC_POWER_MODE_UNKNOWN The power mode was unknown. + */ +SVCALL(SD_POWER_MODE_SET, uint32_t, sd_power_mode_set(uint8_t power_mode)); + +/**@brief Puts the chip in System OFF mode. + * + * @retval ::NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN + */ +SVCALL(SD_POWER_SYSTEM_OFF, uint32_t, sd_power_system_off(void)); + +/**@brief Enables or disables the power-fail comparator. + * + * Enabling this will give a SoftDevice event (NRF_EVT_POWER_FAILURE_WARNING) when the power failure warning occurs. + * The event can be retrieved with sd_evt_get(); + * + * @param[in] pof_enable True if the power-fail comparator should be enabled, false if it should be disabled. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_POF_ENABLE, uint32_t, sd_power_pof_enable(uint8_t pof_enable)); + +/**@brief Sets the power-fail threshold value. + * + * @param[in] threshold The power-fail threshold value to use, see @ref NRF_POWER_THRESHOLDS. + * + * @retval ::NRF_SUCCESS The power failure threshold was set. + * @retval ::NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN The power failure threshold is unknown. + */ +SVCALL(SD_POWER_POF_THRESHOLD_SET, uint32_t, sd_power_pof_threshold_set(uint8_t threshold)); + +/**@brief Writes the NRF_POWER->RAM[index].POWERSET register. + * + * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWERSET register to write to. + * @param[in] ram_powerset Contains the word to write to the NRF_POWER->RAM[index].POWERSET register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RAM_POWER_SET, uint32_t, sd_power_ram_power_set(uint8_t index, uint32_t ram_powerset)); + +/**@brief Writes the NRF_POWER->RAM[index].POWERCLR register. + * + * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWERCLR register to write to. + * @param[in] ram_powerclr Contains the word to write to the NRF_POWER->RAM[index].POWERCLR register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RAM_POWER_CLR, uint32_t, sd_power_ram_power_clr(uint8_t index, uint32_t ram_powerclr)); + +/**@brief Get contents of NRF_POWER->RAM[index].POWER register, indicates power status of RAM[index] blocks. + * + * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWER register to read from. + * @param[out] p_ram_power Content of NRF_POWER->RAM[index].POWER register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_RAM_POWER_GET, uint32_t, sd_power_ram_power_get(uint8_t index, uint32_t * p_ram_power)); + +/**@brief Set bits in the general purpose retention registers (NRF_POWER->GPREGRET*). + * + * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. + * @param[in] gpregret_msk Bits to be set in the GPREGRET register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_GPREGRET_SET, uint32_t, sd_power_gpregret_set(uint32_t gpregret_id, uint32_t gpregret_msk)); + +/**@brief Clear bits in the general purpose retention registers (NRF_POWER->GPREGRET*). + * + * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. + * @param[in] gpregret_msk Bits to be clear in the GPREGRET register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_GPREGRET_CLR, uint32_t, sd_power_gpregret_clr(uint32_t gpregret_id, uint32_t gpregret_msk)); + +/**@brief Get contents of the general purpose retention registers (NRF_POWER->GPREGRET*). + * + * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. + * @param[out] p_gpregret Contents of the GPREGRET register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_POWER_GPREGRET_GET, uint32_t, sd_power_gpregret_get(uint32_t gpregret_id, uint32_t *p_gpregret)); + +/**@brief Sets the DCDC mode. + * + * Enable or disable the DCDC peripheral. + * + * @param[in] dcdc_mode The mode of the DCDC, see @ref NRF_POWER_DCDC_MODES. + * + * @retval ::NRF_SUCCESS + * @retval ::NRF_ERROR_INVALID_PARAM The DCDC mode is invalid. + */ +SVCALL(SD_POWER_DCDC_MODE_SET, uint32_t, sd_power_dcdc_mode_set(uint8_t dcdc_mode)); + +/**@brief Request the high frequency crystal oscillator. + * + * Will start the high frequency crystal oscillator, the startup time of the crystal varies + * and the ::sd_clock_hfclk_is_running function can be polled to check if it has started. + * + * @see sd_clock_hfclk_is_running + * @see sd_clock_hfclk_release + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_CLOCK_HFCLK_REQUEST, uint32_t, sd_clock_hfclk_request(void)); + +/**@brief Releases the high frequency crystal oscillator. + * + * Will stop the high frequency crystal oscillator, this happens immediately. + * + * @see sd_clock_hfclk_is_running + * @see sd_clock_hfclk_request + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_CLOCK_HFCLK_RELEASE, uint32_t, sd_clock_hfclk_release(void)); + +/**@brief Checks if the high frequency crystal oscillator is running. + * + * @see sd_clock_hfclk_request + * @see sd_clock_hfclk_release + * + * @param[out] p_is_running 1 if the external crystal oscillator is running, 0 if not. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_CLOCK_HFCLK_IS_RUNNING, uint32_t, sd_clock_hfclk_is_running(uint32_t * p_is_running)); + +/**@brief Waits for an application event. + * + * An application event is either an application interrupt or a pended interrupt when the interrupt + * is disabled. + * + * When the application waits for an application event by calling this function, an interrupt that + * is enabled will be taken immediately on pending since this function will wait in thread mode, + * then the execution will return in the application's main thread. + * + * In order to wake up from disabled interrupts, the SEVONPEND flag has to be set in the Cortex-M + * MCU's System Control Register (SCR), CMSIS_SCB. In that case, when a disabled interrupt gets + * pended, this function will return to the application's main thread. + * + * @note The application must ensure that the pended flag is cleared using ::sd_nvic_ClearPendingIRQ + * in order to sleep using this function. This is only necessary for disabled interrupts, as + * the interrupt handler will clear the pending flag automatically for enabled interrupts. + * + * @note If an application interrupt has happened since the last time sd_app_evt_wait was + * called this function will return immediately and not go to sleep. This is to avoid race + * conditions that can occur when a flag is updated in the interrupt handler and processed + * in the main loop. + * + * @post An application interrupt has happened or a interrupt pending flag is set. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_APP_EVT_WAIT, uint32_t, sd_app_evt_wait(void)); + +/**@brief Get PPI channel enable register contents. + * + * @param[out] p_channel_enable The contents of the PPI CHEN register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ENABLE_GET, uint32_t, sd_ppi_channel_enable_get(uint32_t * p_channel_enable)); + +/**@brief Set PPI channel enable register. + * + * @param[in] channel_enable_set_msk Mask containing the bits to set in the PPI CHEN register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ENABLE_SET, uint32_t, sd_ppi_channel_enable_set(uint32_t channel_enable_set_msk)); + +/**@brief Clear PPI channel enable register. + * + * @param[in] channel_enable_clr_msk Mask containing the bits to clear in the PPI CHEN register. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ENABLE_CLR, uint32_t, sd_ppi_channel_enable_clr(uint32_t channel_enable_clr_msk)); + +/**@brief Assign endpoints to a PPI channel. + * + * @param[in] channel_num Number of the PPI channel to assign. + * @param[in] evt_endpoint Event endpoint of the PPI channel. + * @param[in] task_endpoint Task endpoint of the PPI channel. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_CHANNEL The channel number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_CHANNEL_ASSIGN, uint32_t, sd_ppi_channel_assign(uint8_t channel_num, const volatile void * evt_endpoint, const volatile void * task_endpoint)); + +/**@brief Task to enable a channel group. + * + * @param[in] group_num Number of the channel group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_TASK_ENABLE, uint32_t, sd_ppi_group_task_enable(uint8_t group_num)); + +/**@brief Task to disable a channel group. + * + * @param[in] group_num Number of the PPI group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_TASK_DISABLE, uint32_t, sd_ppi_group_task_disable(uint8_t group_num)); + +/**@brief Assign PPI channels to a channel group. + * + * @param[in] group_num Number of the channel group. + * @param[in] channel_msk Mask of the channels to assign to the group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_ASSIGN, uint32_t, sd_ppi_group_assign(uint8_t group_num, uint32_t channel_msk)); + +/**@brief Gets the PPI channels of a channel group. + * + * @param[in] group_num Number of the channel group. + * @param[out] p_channel_msk Mask of the channels assigned to the group. + * + * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_PPI_GROUP_GET, uint32_t, sd_ppi_group_get(uint8_t group_num, uint32_t * p_channel_msk)); + +/**@brief Configures the Radio Notification signal. + * + * @note + * - The notification signal latency depends on the interrupt priority settings of SWI used + * for notification signal. + * - To ensure that the radio notification signal behaves in a consistent way, the radio + * notifications must be configured when there is no protocol stack or other SoftDevice + * activity in progress. It is recommended that the radio notification signal is + * configured directly after the SoftDevice has been enabled. + * - In the period between the ACTIVE signal and the start of the Radio Event, the SoftDevice + * will interrupt the application to do Radio Event preparation. + * - Using the Radio Notification feature may limit the bandwidth, as the SoftDevice may have + * to shorten the connection events to have time for the Radio Notification signals. + * + * @param[in] type Type of notification signal, see @ref NRF_RADIO_NOTIFICATION_TYPES. + * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE shall be used to turn off radio + * notification. Using @ref NRF_RADIO_NOTIFICATION_DISTANCE_NONE is + * recommended (but not required) to be used with + * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE. + * + * @param[in] distance Distance between the notification signal and start of radio activity, see @ref NRF_RADIO_NOTIFICATION_DISTANCES. + * This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or + * @ref NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE is used. + * + * @retval ::NRF_ERROR_INVALID_PARAM The group number is invalid. + * @retval ::NRF_ERROR_INVALID_STATE A protocol stack or other SoftDevice is running. Stop all + * running activities and retry. + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_RADIO_NOTIFICATION_CFG_SET, uint32_t, sd_radio_notification_cfg_set(uint8_t type, uint8_t distance)); + +/**@brief Encrypts a block according to the specified parameters. + * + * 128-bit AES encryption. + * + * @note: + * - The application may set the SEVONPEND bit in the SCR to 1 to make the SoftDevice sleep while + * the ECB is running. The SEVONPEND bit should only be cleared (set to 0) from application + * main or low interrupt level. + * + * @param[in, out] p_ecb_data Pointer to the ECB parameters' struct (two input + * parameters and one output parameter). + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_ECB_BLOCK_ENCRYPT, uint32_t, sd_ecb_block_encrypt(nrf_ecb_hal_data_t * p_ecb_data)); + +/**@brief Encrypts multiple data blocks provided as an array of data block structures. + * + * @details: Performs 128-bit AES encryption on multiple data blocks + * + * @note: + * - The application may set the SEVONPEND bit in the SCR to 1 to make the SoftDevice sleep while + * the ECB is running. The SEVONPEND bit should only be cleared (set to 0) from application + * main or low interrupt level. + * + * @param[in] block_count Count of blocks in the p_data_blocks array. + * @param[in,out] p_data_blocks Pointer to the first entry in a contiguous array of + * @ref nrf_ecb_hal_data_block_t structures. + * + * @retval ::NRF_SUCCESS + */ +SVCALL(SD_ECB_BLOCKS_ENCRYPT, uint32_t, sd_ecb_blocks_encrypt(uint8_t block_count, nrf_ecb_hal_data_block_t * p_data_blocks)); + +/**@brief Gets any pending events generated by the SoC API. + * + * The application should keep calling this function to get events, until ::NRF_ERROR_NOT_FOUND is returned. + * + * @param[out] p_evt_id Set to one of the values in @ref NRF_SOC_EVTS, if any events are pending. + * + * @retval ::NRF_SUCCESS An event was pending. The event id is written in the p_evt_id parameter. + * @retval ::NRF_ERROR_NOT_FOUND No pending events. + */ +SVCALL(SD_EVT_GET, uint32_t, sd_evt_get(uint32_t * p_evt_id)); + +/**@brief Get the temperature measured on the chip + * + * This function will block until the temperature measurement is done. + * It takes around 50 us from call to return. + * + * @param[out] p_temp Result of temperature measurement. Die temperature in 0.25 degrees Celsius. + * + * @retval ::NRF_SUCCESS A temperature measurement was done, and the temperature was written to temp + */ +SVCALL(SD_TEMP_GET, uint32_t, sd_temp_get(int32_t * p_temp)); + +/**@brief Flash Write +* +* Commands to write a buffer to flash +* +* If the SoftDevice is enabled: +* This call initiates the flash access command, and its completion will be communicated to the +* application with exactly one of the following events: +* - @ref NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. +* - @ref NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. +* +* If the SoftDevice is not enabled no event will be generated, and this call will return @ref NRF_SUCCESS when the + * write has been completed +* +* @note +* - This call takes control over the radio and the CPU during flash erase and write to make sure that +* they will not interfere with the flash access. This means that all interrupts will be blocked +* for a predictable time (depending on the NVMC specification in the device's Product Specification +* and the command parameters). +* - The data in the p_src buffer should not be modified before the @ref NRF_EVT_FLASH_OPERATION_SUCCESS +* or the @ref NRF_EVT_FLASH_OPERATION_ERROR have been received if the SoftDevice is enabled. +* +* +* @param[in] p_dst Pointer to start of flash location to be written. +* @param[in] p_src Pointer to buffer with data to be written. +* @param[in] size Number of 32-bit words to write. Maximum size is the number of words in one +* flash page. See the device's Product Specification for details. +* +* @retval ::NRF_ERROR_INVALID_ADDR Tried to write to a non existing flash address, or p_dst or p_src was unaligned. +* @retval ::NRF_ERROR_BUSY The previous command has not yet completed. +* @retval ::NRF_ERROR_INVALID_LENGTH Size was 0, or higher than the maximum allowed size. +* @retval ::NRF_ERROR_FORBIDDEN Tried to write to or read from protected location. +* @retval ::NRF_SUCCESS The command was accepted. +*/ +SVCALL(SD_FLASH_WRITE, uint32_t, sd_flash_write(uint32_t * p_dst, uint32_t const * p_src, uint32_t size)); + + +/**@brief Flash Erase page +* +* Commands to erase a flash page +* If the SoftDevice is enabled: +* This call initiates the flash access command, and its completion will be communicated to the +* application with exactly one of the following events: +* - @ref NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. +* - @ref NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. +* +* If the SoftDevice is not enabled no event will be generated, and this call will return @ref NRF_SUCCESS when the +* erase has been completed +* +* @note +* - This call takes control over the radio and the CPU during flash erase and write to make sure that +* they will not interfere with the flash access. This means that all interrupts will be blocked +* for a predictable time (depending on the NVMC specification in the device's Product Specification +* and the command parameters). +* +* +* @param[in] page_number Page number of the page to erase +* +* @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. +* @retval ::NRF_ERROR_INVALID_ADDR Tried to erase to a non existing flash page. +* @retval ::NRF_ERROR_BUSY The previous command has not yet completed. +* @retval ::NRF_ERROR_FORBIDDEN Tried to erase a protected page. +* @retval ::NRF_SUCCESS The command was accepted. +*/ +SVCALL(SD_FLASH_PAGE_ERASE, uint32_t, sd_flash_page_erase(uint32_t page_number)); + + +/**@brief Flash Protection set + * + * Commands to set the flash protection configuration registers. + This sets the CONFIGx registers of the BPROT peripheral. + * + * @note Not all parameters are valid for all products. Some bits in each parameter may not be + * valid for your product. Please refer your Product Specification for more details. + * + * @note To read the values read them directly. They are only write-protected. + * + * @param[in] block_cfg0 Value to be written to the configuration register. + * @param[in] block_cfg1 Value to be written to the configuration register. + * @param[in] block_cfg2 Value to be written to the configuration register. + * @param[in] block_cfg3 Value to be written to the configuration register. + * + * @retval ::NRF_ERROR_NOT_SUPPORTED Non-zero value supplied to one or more of the unsupported parameters. + * @retval ::NRF_ERROR_FORBIDDEN Tried to protect the flash region used by the SoftDevice. + * @retval ::NRF_SUCCESS Values successfully written to configuration registers. + */ +SVCALL(SD_FLASH_PROTECT, uint32_t, sd_flash_protect(uint32_t block_cfg0, uint32_t block_cfg1, uint32_t block_cfg2, uint32_t block_cfg3)); + +/**@brief Opens a session for radio timeslot requests. + * + * @note Only one session can be open at a time. + * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) will be called when the radio timeslot + * starts. From this point the NRF_RADIO and NRF_TIMER0 peripherals can be freely accessed + * by the application. + * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0) is called whenever the NRF_TIMER0 + * interrupt occurs. + * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO) is called whenever the NRF_RADIO + * interrupt occurs. + * @note p_radio_signal_callback() will be called at ARM interrupt priority level 0. This + * implies that none of the sd_* API calls can be used from p_radio_signal_callback(). + * + * @param[in] p_radio_signal_callback The signal callback. + * + * @retval ::NRF_ERROR_INVALID_ADDR p_radio_signal_callback is an invalid function pointer. + * @retval ::NRF_ERROR_BUSY If session cannot be opened. + * @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. + * @retval ::NRF_SUCCESS Otherwise. + */ + SVCALL(SD_RADIO_SESSION_OPEN, uint32_t, sd_radio_session_open(nrf_radio_signal_callback_t p_radio_signal_callback)); + +/**@brief Closes a session for radio timeslot requests. + * + * @note Any current radio timeslot will be finished before the session is closed. + * @note If a radio timeslot is scheduled when the session is closed, it will be canceled. + * @note The application cannot consider the session closed until the @ref NRF_EVT_RADIO_SESSION_CLOSED + * event is received. + * + * @retval ::NRF_ERROR_FORBIDDEN If session not opened. + * @retval ::NRF_ERROR_BUSY If session is currently being closed. + * @retval ::NRF_SUCCESS Otherwise. + */ + SVCALL(SD_RADIO_SESSION_CLOSE, uint32_t, sd_radio_session_close(void)); + +/**@brief Requests a radio timeslot. + * + * @note The request type is determined by p_request->request_type, and can be one of @ref NRF_RADIO_REQ_TYPE_EARLIEST + * and @ref NRF_RADIO_REQ_TYPE_NORMAL. The first request in a session must always be of type @ref NRF_RADIO_REQ_TYPE_EARLIEST. + * @note For a normal request (@ref NRF_RADIO_REQ_TYPE_NORMAL), the start time of a radio timeslot is specified by + * p_request->distance_us and is given relative to the start of the previous timeslot. + * @note A too small p_request->distance_us will lead to a @ref NRF_EVT_RADIO_BLOCKED event. + * @note Timeslots scheduled too close will lead to a @ref NRF_EVT_RADIO_BLOCKED event. + * @note See the SoftDevice Specification for more on radio timeslot scheduling, distances and lengths. + * @note If an opportunity for the first radio timeslot is not found before 100 ms after the call to this + * function, it is not scheduled, and instead a @ref NRF_EVT_RADIO_BLOCKED event is sent. + * The application may then try to schedule the first radio timeslot again. + * @note Successful requests will result in nrf_radio_signal_callback_t(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START). + * Unsuccessful requests will result in a @ref NRF_EVT_RADIO_BLOCKED event, see @ref NRF_SOC_EVTS. + * @note The jitter in the start time of the radio timeslots is +/- @ref NRF_RADIO_START_JITTER_US us. + * @note The nrf_radio_signal_callback_t(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) call has a latency relative to the + * specified radio timeslot start, but this does not affect the actual start time of the timeslot. + * @note NRF_TIMER0 is reset at the start of the radio timeslot, and is clocked at 1MHz from the high frequency + * (16 MHz) clock source. If p_request->hfclk_force_xtal is true, the high frequency clock is + * guaranteed to be clocked from the external crystal. + * @note The SoftDevice will neither access the NRF_RADIO peripheral nor the NRF_TIMER0 peripheral + * during the radio timeslot. + * + * @param[in] p_request Pointer to the request parameters. + * + * @retval ::NRF_ERROR_FORBIDDEN If session not opened or the session is not IDLE. + * @retval ::NRF_ERROR_INVALID_ADDR If the p_request pointer is invalid. + * @retval ::NRF_ERROR_INVALID_PARAM If the parameters of p_request are not valid. + * @retval ::NRF_SUCCESS Otherwise. + */ + SVCALL(SD_RADIO_REQUEST, uint32_t, sd_radio_request(nrf_radio_request_t const * p_request)); + +/**@} */ + +#ifdef __cplusplus +} +#endif +#endif // NRF_SOC_H__ + +/**@} */ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_svc.h nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_svc.h new file mode 100644 index 0000000..c26ce74 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers/nrf_svc.h @@ -0,0 +1,90 @@ +/* + * 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. + */ + +#ifndef NRF_SVC__ +#define NRF_SVC__ + +#include "stdint.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef SVCALL_AS_NORMAL_FUNCTION +#define SVCALL(number, return_type, signature) return_type signature +#else + +#ifndef SVCALL +#if defined (__CC_ARM) +#define SVCALL(number, return_type, signature) return_type __svc(number) signature +#elif defined (__GNUC__) +#ifdef __cplusplus +#define GCC_CAST_CPP (uint16_t) +#else +#define GCC_CAST_CPP +#endif +#define SVCALL(number, return_type, signature) \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \ + __attribute__((naked)) \ + __attribute__((unused)) \ + static return_type signature \ + { \ + __asm( \ + "svc %0\n" \ + "bx r14" : : "I" (GCC_CAST_CPP number) : "r0" \ + ); \ + } \ + _Pragma("GCC diagnostic pop") + +#elif defined (__ICCARM__) +#define PRAGMA(x) _Pragma(#x) +#define SVCALL(number, return_type, signature) \ +PRAGMA(swi_number = (number)) \ + __swi return_type signature; +#else +#define SVCALL(number, return_type, signature) return_type signature +#endif +#endif // SVCALL + +#endif // SVCALL_AS_NORMAL_FUNCTION + +#ifdef __cplusplus +} +#endif +#endif // NRF_SVC__ diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers_replacement/test.rb nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers_replacement/test.rb new file mode 100644 index 0000000..f58ae1e --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/headers_replacement/test.rb @@ -0,0 +1,2 @@ +a = 'xxx const * const*' +puts a.gsub('const','') \ No newline at end of file diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/hex/s132_nrf52_5.1.0_softdevice.hex nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/hex/s132_nrf52_5.1.0_softdevice.hex new file mode 100644 index 0000000..757b5f6 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/hex/s132_nrf52_5.1.0_softdevice.hex @@ -0,0 +1,7843 @@ +:020000040000FA +:1000000000040020E90800007D050000C908000088 +:1000100087050000910500009B050000000000001E +:100020000000000000000000000000000D090000BA +:10003000A505000000000000AF050000B9050000A4 +:10004000C3050000CD050000D7050000E105000054 +:10005000EB050000F5050000FF05000009060000A3 +:10006000130600001D0600002706000031060000F0 +:100070003B060000450600004F0600005906000040 +:10008000630600006D060000770600008106000090 +:100090008B060000950600009F060000A9060000E0 +:1000A000B3060000BD060000C7060000D106000030 +:1000B000DB060000E5060000EF060000F906000080 +:1000C000030700000D0700001707000021070000CC +:1000D0002B070000350700003F070000490700001C +:1000E000530700005D07000067070000710700006C +:1000F0007B070000850700008F07000099070000BC +:10010000A30700001FB500F003F88DE80F001FBD26 +:1001100000F0E0BB1FB56FF00100009040100390AD +:10012000029001904FF010208069000B420900F00E +:100130001F045DF822300120A04083434DF8223097 +:10014000684600F045F91FBDF0B54FF6FF734FF458 +:10015000B4751A466E1E11E0A94201D3344600E080 +:100160000C46091B30F8027B641E3B441A44F9D14B +:100170009CB204EB134394B204EB12420029EBD17E +:1001800098B200EB134002EB124140EA0140F0BD8F +:10019000DE4992B00446D1E90001CDE91001FF2209 +:1001A0004021684600F03CFB94E80F008DE80F000A +:1001B000684610A902E004C841F8042D8842FAD12B +:1001C00010216846FFF7C0FF1090AA208DF8440068 +:1001D000FFF7A0FF00F0F3F84FF01024A069102201 +:1001E0006946803000F002F9A069082210A900F0E9 +:1001F000FDF800F0D8F84FF080510A6949690068AD +:100200004A43824201D8102070470020704710B541 +:10021000D0E900214FF0805002EB8103026944696C +:100220006243934209D84FF01022536903EB8103D4 +:100230000169406941438B4201D9092010BD5069D1 +:10024000401C01D0002010BD0F2010BD70B501680A +:100250000446AF4D4FF01020072952D2DFE801F0DD +:10026000330419293C1E2500D4E902656468294637 +:10027000304600F0CDF82A462146304600F0B6F868 +:10028000AA002146304600F09FFA002800D0032043 +:1002900070BD00F051FB4FF4805007E0201DFFF7C8 +:1002A000AAFF0028F4D100F047FB60682860002016 +:1002B00070BD241D94E80700920000F085FA002824 +:1002C000F6D00E2070BD8069401C12D0201DFFF7B3 +:1002D0009EFF0028F6D109E08069401C09D0201D4E +:1002E000FFF789FF0028EDD1606820B12046FFF7B5 +:1002F0004FFF042070BDFFF70DFF00F060F800F025 +:1003000052F8072070BD10B50C46182802D0012005 +:10031000086010BD2068FFF799FF206010BD4FF006 +:100320001024A069401C05D0A569A66980353079E4 +:10033000AA2808D06069401C2DD060690068401C64 +:1003400029D060692CE010212846FFF7FDFE3168B6 +:1003500081421CD1A16901F18002C03105E030B1B8 +:1003600008CA51F8040D984201D1012000E0002094 +:100370008A42F4D158B1286810B1042803D0FEE7AE +:10038000284600F057F862496868086008E000F005 +:1003900016F800F008F84FF480500168491C01D0AD +:1003A00000F0A4FAFEE7BFF34F8F5A4801685A4A9B +:1003B00001F4E06111430160BFF34F8FFEE74FF09E +:1003C00010208169491C02D0806900F0AEB87047E6 +:1003D000524A01681160121D416811604F4A8168DC +:1003E00010321160111DC068086070472DE9F0419E +:1003F00017460D460646002406E03046296800F000 +:10040000A7F8641C2D1D361DBC42F6D3BDE8F08153 +:1004100070B50C4605464FF4806608E0284600F0AB +:1004200084F8B44205D3A4F5806405F58055002C0A +:10043000F4D170BD4168044609B1012500E00025F2 +:100440004FF010267069A268920000F0BDF9C8B1A3 +:10045000204600F01AF89DB17669A56864684FF4EB +:10046000002084420AD2854208D229463046FFF74E +:10047000CFFF2A4621463046FFF7B8FFFFF79FFF20 +:10048000FFF791FFFFF746FEF8E72DE9FF414FF038 +:100490001024616980680D0B01EB800000F6FF708D +:1004A000010B0020009001900290024603906846E4 +:1004B00001230BE0560902F01F0C50F8267003FAD6 +:1004C0000CFC47EA0C0740F82670521CAA42F1D3F4 +:1004D0000AE04A0901F01F0650F8225003FA06F616 +:1004E000354340F82250491C8029F2D3A169090BF9 +:1004F0004A0901F01F0150F822408B409C4340F80C +:100500002240FFF765FFBDE8FF8100005C090000A5 +:10051000000000200CED00E00400FA050006004099 +:10052000144801680029FCD07047134A0221116069 +:1005300010490B68002BFCD00F4B1B1D186008687E +:100540000028FCD00020106008680028FCD070470C +:10055000094B10B501221A60064A1468002CFCD021 +:10056000016010680028FCD0002018601068002886 +:10057000FCD010BD00E4014004E5014008208F4993 +:1005800009680958084710208C4909680958084724 +:1005900014208A49096809580847182087490968BA +:1005A0000958084730208549096809580847382004 +:1005B00082490968095808473C2080490968095858 +:1005C000084740207D4909680958084744207B496D +:1005D00009680958084748207849096809580847B0 +:1005E0004C20764909680958084750207349096822 +:1005F0000958084754207149096809580847582084 +:100600006E490968095808475C206C49096809580F +:100610000847602069490968095808476420674904 +:100620000968095808476820644909680958084753 +:100630006C20624909680958084770205F490968B9 +:100640000958084774205D49096809580847782007 +:100650005A490968095808477C20584909680958C7 +:10066000084780205549096809580847842053499C +:1006700009680958084788205049096809580847F7 +:100680008C204E4909680958084790204B49096851 +:10069000095808479420494909680958084798208B +:1006A00046490968095808479C204449096809587F +:1006B0000847A0204149096809580847A4203F4934 +:1006C000096809580847A8203C490968095808479B +:1006D000AC203A49096809580847B02037490968E9 +:1006E00009580847B4203549096809580847B8200F +:1006F0003249096809580847BC2030490968095837 +:100700000847C0202D49096809580847C4202B49CB +:10071000096809580847C82028490968095808473E +:10072000CC202649096809580847D0202349096880 +:1007300009580847D4202149096809580847D82092 +:100740001E49096809580847DC201C4909680958EE +:100750000847E0201949096809580847E420174963 +:10076000096809580847E8201449096809580847E2 +:10077000EC201249096809580847F0200F49096818 +:1007800009580847F4200D49096809580847F82016 +:100790000A49096809580847FC20084909680958A6 +:1007A00008475FF480700549096809580847000048 +:1007B00003480449024A034B704700000000002030 +:1007C000680900006809000040EA010310B59B07B2 +:1007D0000FD1042A0DD310C808C9121F9C42F8D0AB +:1007E00020BA19BA884201D9012010BD4FF0FF305C +:1007F00010BD1AB1D30703D0521C07E0002010BD72 +:1008000010F8013B11F8014B1B1B07D110F8013BFD +:1008100011F8014B1B1B01D1921EF1D1184610BDDE +:1008200002F0FF0343EA032242EA024200F005B865 +:100830007047704770474FF000020429C0F01280E3 +:1008400010F0030C00F01B80CCF1040CBCF1020F83 +:1008500018BF00F8012BA8BF20F8022BA1EB0C0158 +:1008600000F00DB85FEAC17C24BF00F8012B00F84E +:10087000012B48BF00F8012B70474FF0000200B574 +:10088000134694469646203922BFA0E80C50A0E8B3 +:100890000C50B1F12001BFF4F7AF090728BFA0E861 +:1008A0000C5048BF0CC05DF804EB890028BF40F82D +:1008B000042B08BF704748BF20F8022B11F0804F6F +:1008C00018BF00F8012B7047014B1B68DB68184705 +:1008D0000000002009480A497047FFF7FBFFFFF7B7 +:1008E00011FC00BD20BFFDE7064B1847064A10600B +:1008F000016881F30888406800470000680900002B +:10090000680900001F030000000000201EF0040F13 +:100910000CBFEFF30881EFF3098188690238007892 +:10092000182803D100E00000074A1047074A126860 +:100930002C3212681047000000B5054B1B68054AB1 +:100940009B58984700BD00000703000000000020EE +:100950005809000004000000001000000000000022 +:0809600000FFFFFF0090D0032F +:10100000A8110020F5EA0100BD2F000067EA0100E9 +:10101000BD2F0000BD2F0000BD2F0000000000000C +:101020000000000000000000000000004DEB010087 +:10103000BD2F000000000000BD2F0000BD2F0000EC +:10104000B5EB0100BBEB0100BD2F0000BD2F000080 +:10105000BD2F0000BD2F0000BD2F0000BD2F0000E0 +:10106000C1EB0100BD2F0000BD2F0000C7EB010048 +:10107000BD2F0000CDEB0100D3EB0100D9EB010047 +:10108000BD2F0000BD2F0000BD2F0000BD2F0000B0 +:10109000BD2F0000BD2F0000BD2F0000BD2F0000A0 +:1010A000BD2F0000DFEB0100BD2F0000BD2F0000B1 +:1010B000BD2F0000BD2F0000BD2F0000BD2F000080 +:1010C000E5EB0100BD2F0000BD2F0000BD2F00008B +:1010D000BD2F0000BD2F0000BD2F0000BD2F000060 +:1010E000BD2F0000BD2F0000BD2F0000BD2F000050 +:1010F000BD2F0000BD2F0000BD2F0000BD2F000040 +:10110000BD2F0000BD2F000000F002F81DF0DFFC35 +:101110000AA090E8000C82448344AAF10107DA4552 +:1011200001D11DF0D4FCAFF2090EBAE80F0013F0A4 +:10113000010F18BFFB1A43F001031847F8DE010046 +:1011400018DF01000A444FF0000C10F8013B13F0C7 +:10115000070408BF10F8014B1D1108BF10F8015B10 +:10116000641E05D010F8016B641E01F8016BF9D103 +:1011700013F0080F1EBF10F8014BAD1C0C1B09D15A +:101180006D1E58BF01F801CBFAD505E014F8016BCC +:1011900001F8016B6D1EF9D59142D6D3704700005E +:1011A0000023002400250026103A28BF78C1FBD870 +:1011B000520728BF30C148BF0B6070471FB500F011 +:1011C0003DF88DE80F001FBD1EF0040F0CBFEFF3BC +:1011D0000880EFF30980014A1047000011B80000B1 +:1011E0008269034981614FF001001044704700009B +:1011F000F511000001B41EB400B511F01DFF01B4DB +:101200000198864601BC01B01EBD0000F0B4404606 +:10121000494652465B460FB402A0013001B506486C +:10122000004700BF01BC86460FBC804689469246F7 +:101230009B46F0BC70470000091100001DF044BC43 +:1012400070B51A4C054609202070A01C00F05FF80C +:101250005920A08029462046BDE8704007F02CBBED +:1012600007F035BB70B50C461149097829B1A0F1DA +:101270006001562908D3012013E0602804D06928B2 +:1012800002D043F201000CE020CC0A4E94E80E009C +:1012900006EB8000A0F58050241FD0F8806E284611 +:1012A000B047206070BD012070470000080000209A +:1012B0001C00002014EC010010B5044600210120A0 +:1012C00000F03DF800210B2000F039F8042119202E +:1012D00000F035F804210D2000F031F804210E2033 +:1012E00000F02DF804210F2000F029F80421C84354 +:1012F00000F025F80621162000F021F8062115201F +:1013000000F01DF82046FFF79BFF002010BDA5212F +:1013100001807047FFF7A4BF11487047104870471D +:10132000104A10B514680F4B0F4A08331A60FFF7C4 +:1013300099FF0C48001D046010BD704770474907B5 +:10134000090E002806DA00F00F0000F1E02080F816 +:10135000141D704700F1E02080F800147047000071 +:1013600003F90042100502400100000130B5FA4DBA +:10137000044610280AD0112C06D02846122CC17819 +:1013800006D0132C08D0FFDFEC7030BDFFDFFBE789 +:101390001129F9D0FFDFF7E71129F5D0FFDFF3E7D7 +:1013A0002DE9F04110F000FB044611F094FC201AE6 +:1013B000C5B206200EF094FB044606200EF098FB02 +:1013C000211AE54CE078132818D000200F180720C8 +:1013D0000EF086FB064607200EF08AFB301A3918FD +:1013E000E07812280CD0002001442078022809D08F +:1013F00000200844281AC0B2BDE8F0810120E5E7CA +:101400000120F1E70120F4E7D34810B5817900F11C +:101410000700490805D00CF079FEBDE8104007F040 +:10142000FFB80CF054FEF8E702210EF0B1BB2DE935 +:10143000FC411D4690460E460746FFF7F5FF0400A7 +:101440000AD02078222804D3A07FC0F34010A842FD +:1014500005D10820BDE8FC8143F20200FAE7ADF8AF +:1014600000703DB101208DF802008DF803608DF809 +:10147000048002E000208DF8020068460DF015FCA3 +:10148000A07F65F34510A0770020E3E730B5044660 +:10149000A1F120000D460A284AD2DFE800F0050736 +:1014A0000C1C2328353A3F44FFDF42E020782028F7 +:1014B0003FD1FFDF3DE0A8480178032939D0C0784B +:1014C000132836D02078242833D0252831D023285B +:1014D0002FD0FFDF2DE0207822282AD0232828D8FB +:1014E000FFDF26E02078222823D0FFDF21E02078CC +:1014F00022281ED024281CD026281AD0272818D00D +:10150000292816D0FFDF14E02078252811D0FFDF2E +:101510000FE0207825280CD0FFDF0AE0207825286E +:1015200007D0FFDF05E02078282802D0FFDF00E0A9 +:10153000FFDF257030BD1FB504466A46002001F06C +:101540005EFCB4B1BDF802204FF6FF700621824266 +:1015500001D1ADF80210BDF80420824201D1ADF8EE +:101560000410BDF80810814203D14FF44860ADF873 +:10157000080068460DF067F807F052F804B010BD97 +:1015800070B514460D46064611F0D6FF58B90DB198 +:10159000A54201D90C2070BD002408E056F82400B3 +:1015A00011F0CAFF08B1102070BD641CE4B2AC4257 +:1015B000F4D3002070BDF0B50024059D10B1A94200 +:1015C00003D850E009B90020F0BD0920F0BD055D49 +:1015D000D5B1071997F801C0BCF1150F2DD03BDC30 +:1015E000BCF1150F38D2DFE80CF037122020262688 +:1015F00028282F2F373737373737373737372000F7 +:10160000025D22BB641CE4B28C42F9D3DBE7022DFD +:10161000DBD1BD781D70072D01D26D0701D40A20E2 +:10162000F0BD157845F0010515E0EF43FF0707E031 +:10163000012D07D010E00620F0BD2F07A7F180573D +:10164000002FF5D03046F0BD1578AF0701D50B203F +:10165000F0BD45F002051570055D641C2C44E4B234 +:101660008C4202D9B1E74FF448568C42AFD3AAE777 +:1016700010B50278540809D0012243F20223012C4C +:1016800007D0022C0DD0032C13D10FE000200870DE +:1016900005E080790324B4EB901F0AD10A70002082 +:1016A00010BD8079B2EB901F03D1F7E780798009F4 +:1016B000F4D0184610BD284A117C39B1517C02295A +:1016C00008D0032908D043F2022070470146901D3C +:1016D00001F002BC032100E00121017000207047ED +:1016E00038B50C460546694601F0F6FB00280DD1D9 +:1016F0009DF80010207861F34700207055F8010F25 +:10170000C4F80100A888A4F80500002038BD38B549 +:101710001378C0B1022816D010A46D462468009436 +:101720004C7905EB9414247864F347031370032871 +:101730000ED003F0FE0010700868C2F8010088881F +:10174000A2F8050038BD23F0FE0313700228EED185 +:10175000D8B240F00100EEE7C80100200302FF010B +:1017600038B50C460978222901D2082038BDADF8D9 +:1017700000008DF8022068460CF010FD06F050FFC6 +:10178000050003D121212046FFF780FE284638BD01 +:101790001CB500208DF80000CDF80100ADF8050063 +:1017A000FE48007C022801D0012000E000208DF8D6 +:1017B000070068460CF030FE002800D0FFDF1CBD9B +:1017C0002DE9FF470220F54E8DF804000027B08A6E +:1017D000ADF80600B84643F202094CE001A80EF04D +:1017E0003EF9050006D0B08AA8B3A6F81480ADF87B +:1017F00006803EE0039CA07F01072DD504F1240064 +:101800000090A28EBDF80800214604F1360301F0D5 +:101810007DFF050005D04D452AD0112D3CD0FFDFBE +:101820003AE0A07F20F00800A077E07F810861F314 +:101830000000C10861F34100E07794F8210000F056 +:101840001F0084F820002078282826D1292120464E +:10185000FFF71CFE21E014E040070AD5BDF80800A0 +:1018600004F10E0101F050FB05000DD04D4510D1E3 +:1018700000257F1CFFB202200EF032F9401CB84256 +:10188000ACD8052D12D008E0A07F20F00400A0778E +:1018900003E0112D00D0FFDF0025BDF80600B08267 +:1018A000052D05D0284604B0BDE8F087A6F81480C1 +:1018B0000020F8E770B50646FFF7B6FD054607F0CD +:1018C00079F8040000D1FFDF6680207820F00F0057 +:1018D000801C20F0F000203020700620207295F847 +:1018E0003E006072BDE8704007F067B82DE9F04730 +:1018F00086B0040000D1FFDF2078A84E20F00F0052 +:10190000801C20F0F0007030207060680178091FA2 +:10191000182931D2DFE801F0FD30303053FC300CB3 +:10192000FCFC40FD3030FD76FDFD3030FDFDFBFA66 +:1019300086883046FFF778FD0546304608F0E0FB24 +:10194000E0B16068807985F83E0021212846FFF7E4 +:101950009DFD304603F0CBFF304605F037F93146A8 +:10196000022011F09DFDA87F20F01000A877FFF75E +:1019700027FF002800D0FFDF06B095E7207820F091 +:10198000F000203020700620207266806068807928 +:10199000607207F012F8D8E785882846FFF744FD03 +:1019A00000B9FFDF60688078012800D0FFDF606841 +:1019B000817906B02846BDE8F04708F07DBF8688EB +:1019C0003046FFF731FD050000D1FFDF06F0F5FFDF +:1019D00060683146C08828816068008968816068D5 +:1019E0004089A881022011F05BFD0020A875A87F26 +:1019F00000F003000228BFD1FFF7E2FE0028BBD0B1 +:101A0000FFDFB9E780783C2803D0002502280AD000 +:101A100000E00125002720B13C2802D0022800D098 +:101A2000FFDF17B1B3E00127F5E706F0C6FF1DB1F0 +:101A3000B07801F022FA9CE06568B5F804A0A879B6 +:101A4000AD1C012806D03079814606F055FD07000F +:101A500003D101E0B078F7E7FFDF00220221504612 +:101A60000EF08DF8040000D1FFDF22212046FFF7A1 +:101A70000DFD2879012800D00220A17F804668F35F +:101A80000101A177288B2081688B6081A88BA081C0 +:101A900084F822908DF80880B8680090F86801906A +:101AA0006A46032150460EF06AF800B9FFDFB88895 +:101AB000ADF81000B8788DF8120004AA0521504640 +:101AC0000EF05DF800B9FFDFB888ADF80C00F878CB +:101AD0008DF80E0003AA042150460EF050F800B90C +:101AE000FFDF062105F1120001F02CFA28B3687916 +:101AF000800700D5FFDF6979E07D61F34700E0757D +:101B0000D5F80600A0616889A08303E05CE055E099 +:101B10004EE060E0062105F10C0001F013FAB0B1CF +:101B2000B0794108607861F347006070D6F807002B +:101B3000C4F80200B6F80B0012E0E07D20F0FE00D1 +:101B4000801CE075D5F81200A061E88ADCE76078B7 +:101B500020F0FE00801C6070E868C4F80200288A4B +:101B6000E080B8F1010F04D0B8F1020F0FD0FFDF11 +:101B700002E73078032800D0FFDF0021084611F08B +:101B80008FFC06B00120BDE8F04701F045B9F078C0 +:101B9000132800D0FFDF0021062001E0C80100204B +:101BA00011F07EFC06B01120BDE8F047FFF7DEBB68 +:101BB00006B02046BDE8F04702F030B806F0FDFE62 +:101BC000B07C40F0020004E006F0F7FEB07C40F08C +:101BD0000400B074D0E606B0BDE8F04706F0EDBEF4 +:101BE0002DE9F04705460078914600270209FB4899 +:101BF0000C463E46012A6DD000234FF6FF71022AA3 +:101C000069D0072A09D00A2A71D0FFDFA9F800603D +:101C10000CB127806680002046E6D5F804C09CF809 +:101C20000060142E7DD010DC04F1080204F11808C5 +:101C30000F2E21D004DC042E5AD0082E57D10DE0EF +:101C4000122E6FD0132EF9D11FE0153E072E4ED263 +:101C5000DFE806F0C14D4D099FEAB00012271026BB +:101C6000BCF8040014E11C27092694B3BCF8020058 +:101C7000A080686800795AE11B2709264CB303202D +:101C8000207268684088A080C0E79CF802003C2869 +:101C900027D0102718260CF1020CD4B1BCF8020092 +:101CA000A080BCF818006082BCF818002082BCF844 +:101CB0001A00A082BCF81C00E0829CF805000CF120 +:101CC0000601FFF724FD9CF8040028B10120E07311 +:101CD0009CE703E0BFE0DFE00220F8E7A9F800603E +:101CE00099E71B270926002CF8D023728EE720E104 +:101CF0001D273726002CF1D0A18069680879491D7D +:101D0000FFF705FD686890F82B00A0756868C0783B +:101D10000428E07D16D020F00100E0756968C978DC +:101D200001E06DE011E061F34200E07569681F2297 +:101D3000C97A61F3C700E075696840460C311CF050 +:101D4000C4FD63E740F00100E7E71D273726002CBC +:101D5000C4D0A1806868411D0079FFF7D8FC69688C +:101D600004F10F0201F10C00CB7A01461846FFF78F +:101D7000CEFC6868807CA0756868C178E07D61F3FE +:101D8000420020F0F900E0751F2140461CF03EFEA5 +:101D90003CE720271026002CA0D0A180686804F121 +:101DA0000902407A20726968CB1C88781946FFF7CF +:101DB000AEFC2BE721270A26002C8FD0BCF802109E +:101DC000A180696809792172696849796172817CA9 +:101DD00021F0040157E022270B26002C84D0BCF808 +:101DE0000400A0806868807820726868807901F0BB +:101DF000B8F860726868C07901F0B3F8A07205E7BE +:101E000024271026002CA3D0BCF80200A08068680C +:101E1000007920816868007A60816868C088A08144 +:101E200068684089E081F1E623271026002C8FD0D6 +:101E3000BCF80210A1806968898821816968C98815 +:101E4000618169680989A18169684989E181817C29 +:101E500021F0020117E0297A012903D0022914D0C8 +:101E6000FFDFD3E61F271026002C95D06988A180BC +:101E7000A9892181E9896181298AA181698AE18110 +:101E8000817C21F001018174C0E612276888102648 +:101E9000214601F044F8B9E6287A072850D2DFE855 +:101EA00000F0373D3D484848040011270926002C22 +:101EB00094D0B5F802804046FFF7B6FA90F822A019 +:101EC000A4F80480687A2072042140460DF072FE66 +:101ED000052140460DF06EFE002140460DF06AFEE1 +:101EE000012140460DF066FE032140460DF062FEE2 +:101EF000022140460DF05EFE062140460DF05AFEDE +:101F0000072140460DF056FE504600F0B6FF7DE634 +:101F10001B270926002C8AD0A180E6E61B2709266C +:101F2000002C84D0A180287A012800D002202072C1 +:101F30006CE64A4621462846BDE8F04701F0F8BF66 +:101F4000FFDF63E670B5254DE878132801D008203F +:101F500070BD0CF0B3FC06F063FB040002D12879DD +:101F600000F08BFF0021062011F09AFA204670BD88 +:101F70001A4810B5C078122801D0082010BD0021E1 +:101F800008460CF0FAFA06F04BFB0028F6D10021C7 +:101F9000062011F085FA1120FFF7E8F9002010BDA6 +:101FA00010B50E4C207801280ED000200CF0A1FDB9 +:101FB00006F036FB002808D10021084611F070FA1F +:101FC0002078032802D004E0082010BDA07800F09B +:101FD00054FF012000F020FF002010BDC8010020A8 +:101FE00070B5002538B1022817D0062836D007284A +:101FF00000D0FFDF70BDFFF7D3FF0028FAD106F055 +:10200000D9FC0028F6D0017821F00F01891C21F0BD +:10201000F0012031017005723FE08EB23046FFF7CB +:1020200003FA040000D1FFDF20782128E2D006F077 +:10203000C1FC60B1017821F00F01891C21F0F00191 +:1020400010310170022101724680A57525E02146FC +:102050003046BDE870401322FFF782BBFE48C478CB +:10206000122C03D0132C04D0FFDF70BDFFF780FFCC +:1020700001E0FFF767FF0028F7D106F09BFC00287E +:10208000F3D0017821F00F01891C21F0F0012031FB +:102090000170122C05D002210172BDE8704006F0DB +:1020A0008CBC0121F8E72DE9F04116460C00804672 +:1020B00000D1FFDF307820F00F00801C20F0F0000E +:1020C000103030702078012804D0022817D0FFDFAC +:1020D000BDE8F0814046FFF7A7F9050000D1FFDF1A +:1020E0000320A87506F069FC94E80F00083686E81E +:1020F0000F00D948817C41F001018174E8E7404636 +:10210000FFF792F9050000D1FFDFA1884FF6FF70BD +:102110000027814202D1E288824203D0814201D16C +:10212000E08840B106F049FC94E80F00083686E8E4 +:102130000F00AF75CCE7A87D0128C9D17823002214 +:102140004146022011F002F90220A875C0E738B517 +:1021500005460C46084611F0EFF920BB203D072D3F +:1021600051D2DFE805F0041C383D4349310000211D +:10217000072011F06BF908B1112038BDA01C0CF03C +:1021800010FC06F04DFA05003ED10022082311464E +:10219000072011F0DBF8072836D0FFDF34E0606855 +:1021A00011F00EFA08B1102038BD618820886A4607 +:1021B0000CF0CBFD06F034FA050025D1606818B3A9 +:1021C000BDF8001001801FE0A07800F00101208818 +:1021D0000CF0F1FD14E0206802F057F9054613E019 +:1021E000207800F001000CF058FE09E0207800F0A3 +:1021F00001000BF05FFF03E0618820880CF02DFDEB +:1022000006F00EFAEAE70725284638BD70B5054600 +:102210000C46084611F0B6F908B1102070BD203DFB +:10222000072D1BD2DFE805F0041818181A1A180039 +:102230002088FFF7F9F820B10078222804D208207E +:1022400070BD43F2020070BD2088A11C0CF003F8A1 +:10225000BDE8704006F0E4B9062070BD072070BDEF +:102260007D48801D704738B516217B481CF0ACFBBB +:10227000012000F0D1FD1120FFF778F8764C684678 +:10228000E11D06F02DFB9DF80010A07961F34700D9 +:1022900020F00100A071002020744FF46170E081F3 +:1022A00002206074FFF7B0F800B1FFDF00F0BEFE5F +:1022B00001F07FFC38BD10B50C46402120461CF0D3 +:1022C00083FBA07F20F00300A07720202070002057 +:1022D000A07584F8230080E670477CB5054611F0B0 +:1022E0002BF908B110207CBD5B4CA11DD4F8060071 +:1022F0000090D4F80A0001902846FFF7F1F9002871 +:10230000F1D1FFF781F80028EDD00099C4F806104C +:10231000BDF8041061819DF8061021737CBD10B5D5 +:10232000044611F02FF908B1102056E64A4922461A +:102330008879C91D4008FFF7EAF900204DE6FEB58F +:102340000D4604004FF0000711D00822FFF718F9DE +:10235000002811D1002608E054F826006946FFF74E +:1023600087F9002808D1761CF6B2AE42F4D30BF000 +:102370000BFE10B143F20320FEBD374E7771FCB166 +:1023800000271AE054F8270002A9FFF771F900B1FD +:10239000FFDF9DF808008DF8000054F8270050F882 +:1023A000011FCDF801108088ADF8050068460BF0DC +:1023B00010FE00B1FFDF7F1CFFB2AF42E2D37571A8 +:1023C0000020FEBD2DE9F0478AB01546894604007D +:1023D0001DD00F4608222946FFF7D2F8002810D159 +:1023E000002612E054F826006946103000F074FD13 +:1023F000002806D13FB157F8260011F09DF810B122 +:1024000010200AB008E4761CF6B2AE42EAD30026E9 +:10241000A5F101081CE000BF06F1010A0AF0FF0760 +:1024200012E000BF54F82600017C4A0854F8271037 +:102430000B7CB2EB530F05D10622113011311CF089 +:1024400018FA70B17F1CFFB2AF42EBD30AF0FF065F +:102450004645E1DB4E4601E0C801002024B10120E1 +:1024600003E043F20520CCE700200BF0D2FD10B9C9 +:102470000BF0DBFD10B143F20420C2E764B3002788 +:102480000DF1170826E000BF54F827006946103008 +:1024900000F022FD00B1FFDF54F82700102250F8B1 +:1024A000111FCDF801108088ADF8050054F82710F1 +:1024B0000DF107001CF009FA96B156F8271010220A +:1024C00040461CF002FA68460BF068FD00B1FFDFE1 +:1024D0007F1CFFB2AF42D7D3FFF75AF9002090E735 +:1024E000404601F0C6FFEEE730B585B0044611F076 +:1024F00023F818B9606811F06CF810B1102005B01D +:1025000030BD60884AF2B811884206D82078F74D6D +:1025100028B1012806D0022804D00720EFE7FEF7F3 +:1025200073FF17E06078022804D0032802D043F23A +:102530000220E4E76874C1B200200090ADF8040006 +:1025400002292BD0032926D0FFDF68460BF0DEFDE1 +:1025500006F066F80028D2D1606801F07DFF20788F +:1025600058B101208DF800000DF1010001F081FF4C +:1025700068460CF07CFC00B1FFDF20782874FFF780 +:1025800007F9608860B1E88180B20BF03AFD00B1D4 +:10259000FFDF0020B3E78DF80500D6E74020FAE71B +:1025A0004FF46170EFE710B5044610F0EBFF20B96F +:1025B000606838B111F004F808B110200DE56068CA +:1025C00001F057FFC948C1896180417C6170007C7E +:1025D0002070002001E52DE9F04186B0054600207D +:1025E0008DF80C008DF804008DF808008DF81000AF +:1025F0001E4614468846284610F0EBFF18B92046C0 +:1026000010F0E7FF10B1102006B061E555EA0400B4 +:1026100018D01F2702AB03AA414628460097FEF7B1 +:10262000CAFF0028F0D104AB01AA3146204600972A +:10263000FEF7C1FF0028E7D19DF80400C00703D0D2 +:102640000A20E1E70720DFE73DB1294640460CF0CC +:102650003EFA05F0E5FF0028D6D13CB121463046D0 +:102660000CF03EFA05F0DCFF0028CDD19F499DF823 +:10267000080048700020C7E72DE9F04387B089467D +:102680004FF000089AA104468DF81080D1E90001AE +:10269000CDE90501204610F04FFF80B920780128D0 +:1026A00003D1606810F048FF48B9904D287C50B1C4 +:1026B000687C022807D1606810F08BFF18B11020E9 +:1026C00007B0BDE8F0832878012801D00820F7E79B +:1026D00007200DF00DFA18B9207878B101280DD037 +:1026E000FEF75EFE60B1608943F6E172A0F1200161 +:1026F000914221780CD3012904D0B2E01220DFE707 +:102700001320DDE700287CD1A189002979D109E0D7 +:10271000012907D06978C90704D0A189002970D0A0 +:10272000B4296ED8217831B1012908D0022904D00A +:10273000032966D10AE0002609E0022607E008B96D +:10274000A08908B1042609E0012607E00326287CB9 +:1027500050B1687C022807D1606828B104A960687C +:10276000FEF786FF0028ABD1207A30B1012806D0D1 +:10277000022806D0032874D105E0002704E00127D1 +:1027800002E0022700E003270EB1022E0ED16FB146 +:102790006879B0B36878800702D043F201208FE7F0 +:1027A000022E03D1022F5CD0032F5AD0207808B11B +:1027B000012806D1484600F043FB002880D185F867 +:1027C00002906089ADF800006089ADF802008DF8D4 +:1027D00004600DF10500FEF76EFF00B1FFDF9DF80C +:1027E00010008DF806002078012806D0287C68B1FA +:1027F000687C02280AD1606840B1606850F8011F07 +:1028000000E02EE0CDF80710808802E04046CDF8C9 +:102810000780ADF80B008DF80E70A07BC0F340026E +:10282000014662F35F01C0F3800041EA800005A920 +:10283000085C8DF80D00A0B168460CF017F905F0A2 +:10284000EFFE0028ABD101200CF053F905F0E8FEB3 +:102850000028A4D1052E0ED2DFE806F005050A0AED +:10286000050007202CE7A87800F0FAFA032000E022 +:10287000022000F0D1FA012E0AD0A08940B1002236 +:1028800083001146104610F061FD08B1032017E7E0 +:10289000002015E72DE9FC4180460E460325084639 +:1028A00010F097FE00286DD14046FEF7BDFD0400F4 +:1028B00005D02078222805D20820BDE8FC8143F20B +:1028C0000200FAE7A07F00F003073EB1012F13D00A +:1028D00000203146FEF72FFE0500EED1012F0DD06E +:1028E000022F21D0FFDF2846E7E70000C8010020C3 +:1028F00007060504030201000120EAE7A07D314636 +:10290000022801D011B107E01120D6E7684600F097 +:102910009AFC0028D1D16946404607F090FF050097 +:10292000E1D10120A075DEE7A07D032803D1FE4898 +:10293000807CC00701D02EB30EE026B1A07F4007F7 +:102940001ED4002100E00121404607F098FF050059 +:10295000C9D1A075002EC6D03146404600F0D4FA49 +:1029600005461128BFD1A07F4107BCD4316844F887 +:102970000E1F7168616040F0040020740025B2E70A +:102980001125B0E7102098E770B50C460546FEF714 +:102990004BFD010005D022462846BDE87040FEF7F9 +:1029A000DFBE43F2020070BD10B50BF05CFBBDE86A +:1029B000104005F035BE0123FEF739BD00231A464D +:1029C0001946FEF734BD7CB5044610F0B5FD08B1DC +:1029D00010207CBD628843F6FD73111F07209942C9 +:1029E000F7D2A1880429F4D3B1F5804FF1D89142F0 +:1029F000EFD8CD4DE878112801D008207CBDFEF736 +:102A0000CFFCB0B32078810701D5697991B300F08C +:102A100001008DF800006088ADF80200A088ADF8D4 +:102A2000040020780222C0F3400102EA5000014372 +:102A30008DF807100DF10600FEF73DFE00B1FFDF37 +:102A400068460BF05EFD05F0EBFD0028D6D10021B5 +:102A500001200BF092FD05F0E3FD0028CED1E088C7 +:102A600000F044FA0400C9D11220FEF77FFC204692 +:102A70007CBD00E001E01320FAE70720F8E72DE92C +:102A8000F043DFF8A482074687B098F80300994620 +:102A900015460C46122803D1FFF76AFA00281CD10C +:102AA000204610F049FDB8B9284610F045FD98B908 +:102AB0006088ADF80000A088ADF8020020784FF0E3 +:102AC0000006C0F340008DF80400207880071ED473 +:102AD000384610F031FD08B11020F1E53878400893 +:102AE00008D0012809D0022807D0032805D043F2D6 +:102AF0000220E5E58DF8056002E001208DF8050073 +:102B000057F8010FCDF80600B888ADF80A0003A801 +:102B1000FEF7D1FD08B10320D2E52888ADF80E00FC +:102B20006888ADF81000A888ADF81200E888ADF804 +:102B30001400ADF81660ADF8186068460BF0A8FDFB +:102B4000B8B998F803004546112801D00820B7E528 +:102B500006200CF0CDFF50B12078800701D56879B0 +:102B600038B1FEF71DFC022805D21320A8E512207B +:102B7000A6E50720A4E5484600F062F90028ACD19C +:102B800085F8049068460BF0C0FD05F049FD00286B +:102B9000A3D1287900F064F9E08800F0A7F90400D7 +:102BA0009BD11320FEF7E2FB204689E570B5054670 +:102BB0000C46084610F0E6FC08B1102070BD28460F +:102BC000FEF732FC38B10178222902D3807F8006DB +:102BD00004D4082070BD43F2020070BD214628468F +:102BE0000CF097F8BDE8704005F01ABD38B5054601 +:102BF0000C46084610F0A0FC08B1102038BD28464D +:102C0000FEF712FC20B10078222804D2082038BD3B +:102C100043F2020038BD4448807C400701D51120B2 +:102C200038BD2078800802D16078800801D0072064 +:102C300038BDADF8005020788DF8020060788DF82E +:102C4000030068460BF04EFC05F0EAFC38BD2DE9A8 +:102C5000F0418EB014460D460646FEF7E5FB070030 +:102C600006D03878222806D208200EB0BDE8F081C0 +:102C700043F20200F9E7284610F0ABFC30B94FF000 +:102C800000084CB1204610F09BFC08B11020ECE786 +:102C9000C4F80080A4F804802348807C800701D514 +:102CA0001120E2E797F8220005F026FC8088011D3C +:102CB000FB2901D2001D00E0FB20C0B26A46294674 +:102CC00000F0E5F8ADF81060BDF80200ADF81200B4 +:102CD000BDF80600ADF81400BDF80000ADF8160010 +:102CE000BDF80400ADF8180007A904A80BF03FFBDD +:102CF00000B1FFDFBDF81E00ADF80800BDF82000F0 +:102D0000ADF80A00BDF82200BDF82410BDF800207F +:102D10000844ADF80C0007201B2AA6D3BDF802100A +:102D20001B29A2D3FB2A01E0C80100209DD8FB2962 +:102D30009BD806278A4210D10121104600F056F890 +:102D4000BDF80410884208D1BDF80200012100F04E +:102D50004DF8BDF80610884201D0384685E7BDF829 +:102D6000080028B9BDF80A1011B9BDF80C1029B334 +:102D70005DB1298849B1698839B124B102982060D0 +:102D8000BDF80C00A08013206FE7BDF80010BDF85F +:102D90000A20081A80B2ADF80000BDF80210891AA6 +:102DA000ADF80210012100F021F8ADF80400BDF8E3 +:102DB0000200012100F01AF8ADF80600ADF8286015 +:102DC000BDF80200ADF82A00BDF80600ADF82C00F1 +:102DD000BDF80000ADF82E00BDF80400ADF83000DD +:102DE0000AA80BF076FA05F01BFC3EE7022903D097 +:102DF000C000703080B2704780003C30FAE710802D +:102E00000888508048889080C88810818888D08041 +:102E1000002050819081704730B5564D040008D095 +:102E2000012C04D0022C06D0032C04D0FFDF2C7020 +:102E300030BDFFDFFBE728780128F8D0FFDFF6E799 +:102E400010B5044605F058FB30B1407830B120464B +:102E500005F057FE002010BD072010BD122010BD48 +:102E600010B505F049FB040000D1FFDF607800B920 +:102E7000FFDF6078401E607010BD10B505F03CFBB0 +:102E8000040000D1FFDF6078401C607010BD10B5F9 +:102E9000144631B10A68226049686160218839B1FD +:102EA00007E0208060800121FFF7A0FFA0800DE0F7 +:102EB0002080618801B96080A08820B92088012124 +:102EC000FFF794FFA080E088002804D160880121EA +:102ED000FFF78CFFE08010BD0278520804D0012A71 +:102EE00002D043F202207047FEF7C2BB10B548B1D2 +:102EF000830000221146062010F028FA062801D08F +:102F0000032010BD002010BD1FB56A46FFF777FFF4 +:102F100068460BF0FCFC05F083FB04B010BD70B5F7 +:102F20000C0006460DD0FEF77FFA050000D1FFDF4A +:102F3000A68028892081288960816889A081A88944 +:102F4000E08170BD10B500231A4603E0845C234382 +:102F5000521CD2B28A42F9D30BB1002010BD01201D +:102F600010BD00B5012803D0022801D0FFDF0020EA +:102F700000BD0000C80100200A4810B504680949D6 +:102F80000948083108600FF0FCFB0648001D04608A +:102F900010BD0649002008604FF0E0210220C1F872 +:102FA000800270471005024001000001FC1F004034 +:102FB0000F4A12680D498A420CD118470C4A126810 +:102FC0000A4B9A4206D101B510F02AF808F009FC24 +:102FD000BDE80140074909680958084706480749FC +:102FE000054A064B7047000000000000BEBAFECA4A +:102FF000B000002004000020A8110020A81100202B +:103000002CFFFFFFDBE5B15100300200A500FFFF00 +:1030100084000000284F4C00DA0D499A2F95338424 +:1030200077AC2F1307CD6F7D177A70DEFE48002135 +:1030300001604160018170472DE9F743044692B079 +:103040009146406810F0BCFA40B1606810F0C1FAD7 +:1030500020B9607800F00300022801D0012000E0D0 +:103060000020F14E3072484610F066FA18B1102078 +:1030700015B0BDE8F08349460120FEF75CFA002850 +:10308000F6D101258DF842504FF4C050ADF8400004 +:10309000002210A9284604F061F80028E8D18DF834 +:1030A00042504FF428504FF00008ADF8400047461A +:1030B0001C216846CDF81C801BF0A8FC9DF81C0064 +:1030C00008AA20F00F00401C20F0F00010308DF80E +:1030D0001C0020788DF81D0061789DF81E0061F3BA +:1030E000420040F001008DF81E009DF800000AA982 +:1030F00040F002008DF800002089ADF83000ADF8F6 +:103100003270608907AFADF834000B97606810AC7F +:103110000E900A94684603F016FE0028A8D1BDF868 +:10312000200030808DF8425042F60120ADF840007A +:103130009DF81E0008AA20F00600801C20F0010067 +:103140008DF81E000220ADF83000ADF8340013A851 +:103150000E900AA9684603F0F6FD002888D1BDF854 +:1031600020007080311D484600F033F9002887D1D7 +:103170008DF8425042F6A620ADF840001C2168466A +:10318000CDF81C801BF042FC9DF81C00ADF83450BB +:1031900020F00F00401C20F0F00010308DF81C00D3 +:1031A0009DF81D0008AA20F0FF008DF81D009DF875 +:1031B0001E000AA920F0060040F00100801C8DF8D6 +:1031C0001E009DF800008DF8445040F002008DF87C +:1031D0000000CDE90A4711A80E90ADF830506846BE +:1031E00003F0B1FD002899D1BDF82000F080002047 +:1031F0003EE73EB504460820ADF80000204610F03A +:103200009BF908B110203EBD21460120FEF793F93D +:103210000028F8D12088ADF804006088ADF80600D9 +:10322000A088ADF80800E088ADF80A007E4801AB40 +:103230006A468088002104F08BF9BDF80010082947 +:10324000E1D003203EBD1FB50446002002900820B7 +:10325000ADF80800CDF80CD0204610F06DF910B193 +:10326000102004B010BD704802AA81884FF6FF708C +:1032700004F0B0FB0028F4D1BDF80810082901D0F3 +:103280000320EEE7BDF800102180BDF80210618038 +:10329000BDF80410A180BDF80610E180E1E701B59A +:1032A00082B00220ADF800005F4802AB6A46408859 +:1032B000002104F04DF9BDF80010022900D00320D0 +:1032C0000EBD1CB5002100910221ADF80010019047 +:1032D00010F058F908B110201CBD53486A464188C7 +:1032E0004FF6FF7004F076FBBDF800100229F3D012 +:1032F00003201CBDFEB54C4C06461546207A0F46F1 +:10330000C00705D0084610F017F918B11020FEBD0F +:103310000F20FEBDF82D01D90C20FEBD304610F067 +:103320000BF918BB208801A903F053FA0028F4D147 +:1033300030788DF80500208801A904F0E8F800280D +:10334000EBD100909DF800009DF8051040F00200C0 +:103350008DF80000090703D040F008008DF8000048 +:103360002088694604F070F80028D6D1ADF80850DE +:1033700020883B4602AA002104F0EAF8BDF80810B4 +:10338000A942CAD00320FEBD7CB5054600200090AE +:1033900001900888ADF800000C462846019510F011 +:1033A0000FF918B9204610F0EDF808B110207CBDD7 +:1033B00015B1BDF8000050B11B486A4601884FF6B0 +:1033C000FF7004F007FBBDF8001021807CBD0C20CD +:1033D0007CBD30B593B0044600200D46009014210A +:1033E00001A81BF013FB1C2108A81BF00FFB9DF884 +:1033F0000000CDF808D020F00F00401C20F0F000B5 +:1034000010308DF800009DF8010020F0FF008DF8CD +:1034100001009DF8200040F002008DF820000120FE +:103420008DF8460002E00000DE01002042F6042094 +:10343000ADF8440011A801902088ADF83C006088E8 +:10344000ADF83E00A088ADF84000E088ADF842003D +:103450009DF8020006AA20F00600801C20F0010062 +:103460008DF802000820ADF80C00ADF810000FA890 +:10347000059001A908A803F066FC002803D1BDF857 +:1034800018002880002013B030BD000010B504469D +:1034900010F052F808B1102010BD2078C0F30210CF +:1034A000042807D86078072804D3A178102901D808 +:1034B000814201D2072010BDE078410706D421796E +:1034C0004A0703D4000701D4080701D5062010BD20 +:1034D000002010BD10B513785C08C37F64F30003AF +:1034E000C3771478A40864F34103C3771078C30941 +:1034F000487863F34100487013781C090B7864F333 +:1035000047130B701378DB0863F3000048705078A2 +:10351000487110BD10B5C4780B7864F300030B70CC +:10352000C478640864F341030B70C478A40864F39E +:1035300082030B70C478E40864F3C3030B7003794F +:10354000117863F30001117003795B0863F34101A3 +:10355000117003799B0863F3820111700079C00830 +:1035600060F3C301117010BD70B514460D460646D8 +:1035700005F020FA80B10178182221F00F01891C92 +:1035800021F0F001A03100F8081B21461BF0E2F900 +:10359000BDE8704005F011BA29463046BDE87040DC +:1035A0001322FEF7DDB82DE9F047064608A8894644 +:1035B00090E830041F469046142128461BF026FA56 +:1035C0000021CAF80010B8F1000F03D0B9F1000FC4 +:1035D00003D114E03878C00711D020680FF0D2FF73 +:1035E000C0BBB8F1000F07D12068123028602068F6 +:1035F000143068602068A8602168CAF80010387824 +:10360000800724D560680FF0DBFF18BBB9F1000F0D +:1036100021D0FEF725FE0168C6F868118188A6F85A +:103620006C11807986F86E0101F0FBFCF94FEF60B8 +:10363000626862B196F8680106F2691140081032BA +:10364000FEF765F81022394660681BF03EF900204D +:10365000BDE8F08706E0606820B1E8606068C6F801 +:103660006401F4E71020F3E730B5054608780C460E +:1036700020F00F00401C20F0F001103121700020DC +:10368000607095F8230030B104280FD0052811D0C0 +:10369000062814D0FFDF20780121B1EB101F04D2DF +:1036A00095F8200000F01F00607030BD21F0F000A0 +:1036B000203002E021F0F00030302070EBE721F004 +:1036C000F0004030F9E7F0B591B0022715460C46FE +:1036D00006463A46ADF80870092103AB05F089FFAC +:1036E0000490002810D004208DF804008DF801709B +:1036F000E034099605948DF818500AA968460DF033 +:1037000039FF00B1FFDF012011B0F0BD10B588B066 +:103710000C460A99ADF80000CBB11868CDF802004C +:10372000D3F80400CDF80600ADF80A20102203A853 +:103730001BF0CBF868460BF061F904F071FF00282C +:1037400003D1A17F41F01001A17708B010BD002086 +:10375000CDF80200E6E72DE9F84F0646808A0D46CF +:1037600080B28246FDF760FE04463078DFF8A4821E +:1037700000274FF00509A8F120080F2870D2DFE8D4 +:1037800000F06FF23708387D8CC8F1F0EFF35FF38B +:10379000F300A07F00F00300022809D05FF00000D2 +:1037A00080F0010150460CF0F3F9050003D101E06F +:1037B0000120F5E7FFDF98F85C10C90702D0D8F8C0 +:1037C00060000BE0032105F11D000FF090FBD5F820 +:1037D0001D009149B0FBF1F201FB1200C5F81D007C +:1037E00070686867B068A8672078252800D0FFDF78 +:1037F000CAE0A07F00F00300022809D05FF00000BB +:1038000080F0010150460CF0C3F9060003D101E03D +:103810000120F5E7FFDF3078810702D521782529DF +:1038200004D040F001003070BDE8F88F022028700D +:10383000307F287106F11D002D36C5E90206F3E739 +:10384000A07F00F00300022808D0002080F00101D2 +:1038500050460CF09DF9040004D102E00120F5E788 +:10386000A5E1FFDF2078C10604D5072028703D348C +:103870006C60D9E740F008002070D5E7E07FC00613 +:1038800000D5FFDF307CB28800F0010301B0504664 +:10389000BDE8F04F092106F035BD04B9FFDF7168BE +:1038A00021B1102204F124001BF00FF8282120463A +:1038B000FDF7ECFDA07F00F0030002280ED104F11B +:1038C0002400002300901A4621465046FFF71EFFB1 +:1038D000112807D029212046FDF7D8FD307A84F839 +:1038E0002000A1E7A07F000700D5FFDF14F81E0F1E +:1038F00040F008002070E782A761E7616178084620 +:1039000061F38200410861F3C3006070307AE070B7 +:103910008AE7A07F00F00300022809D05FF00000D2 +:1039200080F0010150460CF033F9040003D101E0AE +:103930000120F5E7FFDF022104F185000FF0D7FA3F +:103940000420287004F5B4706860B4F885002882FB +:10395000304810387C346C61C5E9028064E703E0CC +:1039600022E15BE02DE015E0A07F00F003000228DB +:1039700007D0002080F0010150460CF009F918B979 +:1039800001E00120F6E7FFDF324621465046BDE860 +:10399000F84FE9E504B9FFDF20782128A1D9307973 +:1039A000012803D1E07F40F01000E0773246214645 +:1039B0005046FFF7D9FD2046BDE8F84F2321FDF71B +:1039C00065BD3279AA8005F108030921504605F04A +:1039D00010FEE86010B185F8009025E7A07F00F0A8 +:1039E0000300022808D0002080F0010150460CF0AE +:1039F000CFF8040003D101E00120F5E7FFDF04F177 +:103A0000620102231022081F0BF049FF0770317971 +:103A1000417009E70802002040420F00A07F00F03B +:103A20000300022808D0002080F0010150460CF06D +:103A3000AFF8050003D101E00120F5E7FFDF95F8BD +:103A4000840000F00300012878D1A07F00F0030774 +:103A5000E07FC0F3400616B1022F04D132E095F8A2 +:103A6000A000C0072AD0D5F8601119B395F88320BB +:103A7000087C62F387000874E27FD5F8601162F376 +:103A800041000874D5F8601166F300000874AEB107 +:103A9000D5F86001102204F1240188351AF015FFD1 +:103AA000287E40F001002876287820F0010005F8F3 +:103AB000880900E016B1022F04D02CE095F88800A8 +:103AC000C00726D0D5F85C1119B395F88320087C7F +:103AD00062F387000874E27FD5F85C1162F341005D +:103AE0000874D5F85C1166F3000008748EB1D5F83F +:103AF0005C01102204F1240188351AF0E6FE2878D2 +:103B000040F0010005F8180B287820F0010005F8B6 +:103B1000A009022F44D0002000EB400005EBC000BC +:103B200090F88800800709D595F87C00D5F86421C5 +:103B3000400805F17D011032FDF7E9FD8DF8009098 +:103B400095F884006A4600F003008DF8010095F8AE +:103B500088108DF8021095F8A0008DF8030021461A +:103B6000504601F047FA2078252805D0212807D0B3 +:103B7000FFDF2078222803D922212046FDF786FC8A +:103B8000A07F00F0030002280CD0002080F001018B +:103B900050460CF00FF800283FF451AEFFDF43E62B +:103BA0000120B9E70120F1E7706847703CE6FFDFCC +:103BB0003AE670B5FE4C002584F85C5025660DF0A1 +:103BC000A6FC04F11001204604F0B0FE84F8305049 +:103BD00070BD70B50D46FDF727FC040000D1FFDF76 +:103BE0004FF4B87128461AF011FF04F1240028613F +:103BF000A07F00F00300022808D0012105F1E000B9 +:103C00000DF086FC002800D0FFDF70BD0221F5E733 +:103C10000A46014602F1E0000DF09ABC70B5054677 +:103C2000406886B00178092906D00C2933D00D29C7 +:103C30002FD0FFDF06B070BD46883046FDF7F4FB9D +:103C4000040000D1FFDF20782128F3D028281BD1E1 +:103C5000686802210C3001F0C2F9A8B16868082137 +:103C6000001D01F0BCF978B104F1240130460AF0DE +:103C7000B9FF04F0D5FC00B1FFDF06B02046BDE877 +:103C800070402921FDF702BC06B0BDE8704004F089 +:103C900094BE01218171686886883046FDF7C4FBB7 +:103CA000040000D1FFDFA07F00F00301022902D150 +:103CB00020F01000A077207821280AD06868817948 +:103CC00009B1807880B1A07F00F00300022862D0A3 +:103CD000FFDFA07F00F003000228ABD1FDF770FDED +:103CE0000028A7D0FFDFA5E704F067FEE07FC1074B +:103CF00029D0800705D594F8200000F01F00102877 +:103D00001FD0052084F82300207829281DD02428DE +:103D1000DFD1314605200FF0C3FB22212046FDF7FD +:103D2000B5FBA07F00F00300022832D05FF0000056 +:103D300080F0010130460BF03DFF0028C9D0FFDFC5 +:103D4000C7E70620DEE70420DCE7A07F00F00300E1 +:103D5000022809D05FF0000080F0010130460BF02E +:103D600017FF050003D101E00120F5E7FFDF252162 +:103D70002046FDF78BFB03208DF80000694605F116 +:103D8000E0000DF0DCFB0228A3D00028A1D0FFDF6B +:103D90009FE70120CCE704F010FE9AE72DE9F043FD +:103DA00087B09946164688460746FDF73DFB040056 +:103DB0004BD02078222848D3232846D0E07FC00665 +:103DC00043D4A07F00F00300022809D05FF0000078 +:103DD00080F0010138460BF0DBFE050002D00CE05C +:103DE0000120F5E7A07F00F00300022805D00121A3 +:103DF000002238460BF0C3FE05466946284601F00E +:103E000020F9009800B9FFDF45B10098E035056161 +:103E10002078222806D0242804D007E0009900202A +:103E2000086103E025212046FDF730FB00980121C1 +:103E300041704762868001A9C0E902890DF09AFBB2 +:103E4000022802D0002800D0FFDF07B0BDE8F083D1 +:103E500070B586B00546FDF7E7FA017822291ED92C +:103E6000807F00F00300022808D0002080F00101CC +:103E700028460BF08DFE04002FD101E00120F5E76C +:103E8000FFDF2AE0B4F85E0004F1620630440178F6 +:103E9000427829B121462846FFF715FCB0B9C9E69A +:103EA000ADF804200921284602AB05F0A2FB0390DF +:103EB0000028F4D005208DF80000694604F1E000E8 +:103EC0000DF03DFB022801D000B1FFDF02231022DC +:103ED000314604F15E000BF018FDB4F860000028D4 +:103EE000D0D1A7E610B586B00446FDF79DFA01785B +:103EF00022291BD9807F00F00300022808D000206F +:103F000080F0010120460BF043FE040003D101E0E4 +:103F10000120F5E7FFDF06208DF80000694604F177 +:103F2000E0000DF00CFB002800D0FFDF06B010BD54 +:103F30002DE9F05F05460C46002700789046010900 +:103F40003E4604F1080BBA4602297DD0072902D06B +:103F50000A2909D146E068680178092905D00C29A9 +:103F600030D00D292ED0FFDFBCE114271C26002CF9 +:103F70006BD04088A080FDF757FA5FEA000900D1B6 +:103F8000FFDF99F817005A46400809F11801FDF7BC +:103F9000BEFB68688089208269684868C4F812009E +:103FA0008868C4F81600A07E20F0060002E0000039 +:103FB000E801002040F00100A07699F81E0040F0D2 +:103FC00040014DE01A270A26002CD1D08088A0801D +:103FD000FDF72AFA050000D1FFDF59462846FFF712 +:103FE00043FB7FE10CB1A88BA080287A0B287DD001 +:103FF00006DC01287BD0022808D0032804D135E054 +:104000000D2875D00E2874D0FFDF6BE11E2709261E +:10401000002CADD0A088FDF707FA5FEA000900D1B7 +:10402000FFDF287B00F003000128207A1BD020F05E +:1040300001002072297B890861F341002072297BED +:10404000C90861F3820001E041E1F2E02072297BBE +:10405000090961F3C300207299F81E0040F0800145 +:1040600089F81E103EE140F00100E2E713270D261B +:10407000002CAAD0A088FDF7D7F98146807F00F0F8 +:104080000300022808D0002080F00101A0880BF076 +:104090007FFD050003D101E00120F5E7FFDF99F87E +:1040A0001E0000F00302022A50D0686F817801F0F0 +:1040B00003010129217A4BD021F00101217283787B +:1040C0009B0863F3410121728378DB0863F382016B +:1040D000217283781B0963F3C3012172037863F3B0 +:1040E00006112172437863F3C71103E061E0A9E090 +:1040F00090E0A1E0217284F809A0C178A172022A9F +:1041000029D00279E17A62F30001E1720279520862 +:1041100062F34101E1720279920862F38201E17275 +:104120000279D20862F3C301E1724279217B62F322 +:10413000000121734279520862F3410121734279EF +:10414000920862F382012173407928E0A86FADE7FD +:1041500041F00101B2E74279E17A62F30001E172D4 +:104160004279520862F34101E1724279920862F3A6 +:104170008201E1724279D20862F3C301E1720279ED +:10418000217B62F3000121730279520862F341013D +:1041900021730279920862F3820121730079C008C9 +:1041A00060F3C301217399F80000232831D9262137 +:1041B00040E018271026E4B3A088FDF735F98346C0 +:1041C000807F00F00300022809D0002080F0010168 +:1041D000A0880BF0DDFC5FEA000903D101E00120BB +:1041E000F4E7FFDFE868A06099F8000040F0040100 +:1041F00089F8001099F80100800708D50120207384 +:104200009BF8000023286DD92721584651E084F8F7 +:104210000CA067E015270F265CB1A088FDF704F914 +:10422000814606225946E86809F0A8FC0120A073DF +:10423000A2E041E048463CE016270926E4B3287B8B +:1042400020724FE0287B19270E26ACB3C4F808A0D3 +:10425000A4F80CA0012807D0022805D0032805D017 +:10426000042803D0FFDF0DE0207207E0697B0428FB +:1042700001F00F0141F0800121721ED0607A20F020 +:1042800003006072A088FDF7CFF80546007821286A +:1042900028D0232800D0FFDFA87F00F003000228E9 +:1042A00013D0002080F00101A0880BF083FC2221B4 +:1042B0002846FDF7EBF815E004E0607A20F00300F3 +:1042C000401CDEE7A8F8006011E00120EAE70CB12D +:1042D0006888A080287A03282ED004280AD00528D0 +:1042E00050D0FFDFA8F800600CB127806680002066 +:1042F000BDE8F09F15270F26002CE3D0A088FDF71E +:1043000093F8807F00F00300022809D05FF00000DE +:1043100080F00101A0880BF03BFC050003D101E017 +:104320000120F5E7FFDFD5F81D000622594609F008 +:1043300025FC84F80EA0D5E717270926002CC1D04C +:10434000A088FDF771F88146807F00F00300022805 +:1043500008D0002080F00101A0880BF019FC0500B6 +:1043600003D101E00120F5E7FFDF6878800701D580 +:10437000022000E00120207299F800002328B1D922 +:10438000272157E719270E26002C9BD0A088FDF780 +:104390004BF85FEA000900D1FFDFC4F808A0A4F8D9 +:1043A0000CA084F808A0A07A40F00300A07299F84D +:1043B0001F1061F38200A07299F81F10C1F3400230 +:1043C000114205D099F8201001F01F0110292CD0BE +:1043D00020F00800A07299F81F004108607A61F38C +:1043E000C3006072697A01F003010129A3D140F092 +:1043F0000400607299F81E0000F003000228E87AB9 +:1044000016D0217B60F300012173AA7A607B62F3EE +:1044100000006073EA7A520862F341012173A97ABD +:10442000490861F3410060735CE740F00800D1E7A0 +:10443000617B60F300016173AA7A207B62F3000064 +:104440002073EA7A520862F341016173A97A49083C +:1044500061F34100207345E710B5FE4C30B10146D1 +:10446000102204F120001AF030FA012084F8300004 +:1044700010BD10B5044600F0D4FDF64920461022C8 +:10448000BDE8104020311AF020BA70B5F14D060099 +:104490004FF0000412D00FF04FF808B110240BE0D9 +:1044A0000621304609F051FB411C04D0286601204A +:1044B00085F85C0000E00724204670BD0020F7E787 +:1044C000007810F00F0204D0012A05D0022A0CD186 +:1044D00010E0000909D10AE00009012807D00228EC +:1044E00005D0032803D0042801D0072070470870A6 +:1044F000002070470620704705282AD2DFE800F028 +:1045000003070F171F00087820F0FF001EE008784F +:1045100020F00F00401C20F0F000103016E008786A +:1045200020F00F00401C20F0F00020300EE0087852 +:1045300020F00F00401C20F0F000303006E008783A +:1045400020F00F00401C20F0F000403008700020E8 +:104550007047072070472DE9F041804688B00D462E +:10456000002708460FF035F8A8B94046FCF75CFF75 +:10457000040003D02078222815D104E043F2020081 +:1045800008B0BDE8F08145B9A07F010603D500F071 +:104590000300022801D01020F2E7A07FC10601D459 +:1045A000010702D50DB10820EAE7E17FC90601D570 +:1045B0000D20E5E700F00300022805D125B12846CB +:1045C000FEF764FF0700DBD1A07F00F003000228A4 +:1045D00008D0002080F0010140460BF0D9FA060017 +:1045E00002D00FE00120F5E7A07F00F003000228D1 +:1045F0000ED0002080F00101002240460BF0BFFAEF +:10460000060007D0A07F00F00300022804D009E0D4 +:104610000120EFE70420B3E725B12A4631462046C2 +:10462000FEF758FF6946304600F00BFD009800B9D0 +:10463000FFDF0099022006F1E0024870C1F82480F3 +:104640004A6100220A81A27F02F00302022A1CD0E2 +:1046500001200871287800F00102087E62F3010051 +:1046600008762A78520862F3820008762A7892083F +:1046700062F3C30008762A78D20862F30410087641 +:1046800024212046FCF702FF33E035B30871301DCA +:1046900088613078400908777078C0F34000487727 +:1046A000287800F00102887F62F301008877E27FBA +:1046B00062F382008877E27F520862F3C300887752 +:1046C000727862F304108877A878C87701F1210224 +:1046D00028462031FEF71EFF03E003200871052065 +:1046E000087625212046FCF7D1FEA07F20F080002F +:1046F000A07701A900980CF03DFF022801D000B17D +:10470000FFDF38463CE72DE9FF4F534A0D4699B08D +:104710009A4607CA0BAB002783E807001998FCF7F5 +:1047200083FE060006D03078262806D008201DB06B +:10473000BDE8F08F43F20200F9E7B07F00F0030913 +:10474000B9F1020F03D00020284302D006E0012077 +:10475000FAE71B98FEF79AFE0028E8D1B07F00F038 +:104760000300022801D11B9979BB022808D0002040 +:1047700080F0010119980BF00BFA040003D101E05D +:104780000120F5E7FFDF852D28D007DCF5B1812D6D +:104790001ED0822D1ED0832D08D11DE0862D1FD066 +:1047A000882D1FD0892D1FD08A2D1FD00F2020715A +:1047B0000F281DD004F0FEF8E0B101208DF8400074 +:1047C000201D11902079B8B165E111E00020EEE7DD +:1047D0000120ECE70220EAE70320E8E70520E6E70E +:1047E0000620E4E70820E2E70920E0E70A20DEE708 +:1047F00007209CE711209AE7B9F1020F03D0A56FBB +:1048000003D1A06F02E0656FFAE7606F804632D097 +:104810004FF0010000904FF0020001902146304619 +:104820001B9AFEF757FE1B98007800F00101A8784C +:1048300061F30100A870F17F61F38200A870F17F3D +:10484000490861F3C300A870617861F30410A8708F +:10485000207803E0E801002068ED0100400928709D +:104860006078C0F3400068701B988078E870002082 +:104870006871287103E00220009001200190A8785F +:1048800098F80210C0F3C000C1F3C00108405FEA0D +:10489000000B2CD050460EF04FFE90BBDAF80C0007 +:1048A0000EF04AFE68BBDAF81C000EF045FE40BB75 +:1048B000DAF80C00A060DAF81C00E06098F801005B +:1048C000617800F0010041EA4000607098F8021041 +:1048D000C0B2C1F30011891E08406070002020772B +:1048E000019906F1170002290CD001210BE098F87C +:1048F0000110607801F00101FD2242EA4101084007 +:10490000E3E732E0002104EB810148610099701C6B +:10491000022901D0012100E0002104EB810148615E +:10492000A87800F00300012858D198F8020000F0A0 +:104930000300012852D1B9F1020F04D02A1D691DCC +:104940001B98FEF7E7FD297998F8040001408DF8DF +:104950003810687998F8052010408DF83C00014324 +:104960003CD050460EF0E8FD08B11020DFE60AF119 +:1049700010010491B9F1020F18D008465FF0000150 +:1049800004F18C03CDE9000304F5AE7202920EAB84 +:104990005A462046FEF707FE0028E7D1B9F1020F7C +:1049A00008D0504608D14FF0010107E050464FF0C3 +:1049B0000101E5E70498F5E74FF0000104F1A403D5 +:1049C000CDE9000304F5B072029281F001010FAB52 +:1049D0005A462046FEF7E7FD0028C7D160788007D9 +:1049E00034D4A87898F80210C0F38000C1F3800195 +:1049F00008432BD0297898F800000BAAB9F1020FD0 +:104A000006D032F811204300DA4002F003070AE032 +:104A100032F810204B00DA4012F0030705D0012FC6 +:104A20000BD0022F0BD0032F07D0BBF1000F0DD0FE +:104A3000012906D0042904D008E00227F5E7012760 +:104A4000F3E7012801D0042800D10427F07F40F0CB +:104A500001006BF34100F077607881074FF00300AD +:104A60000CD5A071BBF1000F15D100BF8DF85C0013 +:104A700017AA3146199800F0BDFA0CE00221022F66 +:104A800018D0012F18D0042F22D00020A071F07F61 +:104A900020F00100F07725213046FCF7F7FC10A943 +:104AA00004F1E0000CF04BFD10B1022800D0FFDF54 +:104AB00000203CE6A171D9E7A1710D2104F120008D +:104AC00019F0A4FF207840F0020020700420CDE708 +:104AD0000120A071DFE72DE9F04387B090468946B9 +:104AE00004460025FCF7A0FC060006D030782728F5 +:104AF00006D0082007B0BDE8F08343F20200F9E7D2 +:104B0000B07F00F00300022808D0002080F00101EF +:104B100020460BF03DF8040003D101E00120F5E749 +:104B2000FFDFA7795FEA090005D0012821D0B9F19C +:104B3000020F26D110E0B8F1000F22D1012F05D0CD +:104B4000022F05D0032F05D0FFDF2DE00C252BE031 +:104B5000012529E0022527E040460EF0EDFCB0B922 +:104B6000032F0ED11022414604F11D0019F0ADFEB5 +:104B70001AE0012F02D0022F03D104E0B8F1000F98 +:104B800012D00720B6E740460EF0D6FC08B1102040 +:104B9000B0E7102104F11D0019F016FF0621404670 +:104BA00008F0D3FFC4F81D002078252140F0020052 +:104BB00020703046FCF76AFC2078C10713D020F043 +:104BC0000100207002208DF8000004F11D00029009 +:104BD0008DF804506946C3300CF0B1FC022803D0B4 +:104BE00010B1FFDF00E02577002083E730B587B004 +:104BF0000D460446FCF718FCA0B1807F00F00300CE +:104C0000022812D05FF0000080F0010120460AF077 +:104C1000BFFF04000ED028460EF08EFC38B11020E5 +:104C200007B030BD43F20200FAE70120ECE720783C +:104C3000400701D40820F3E7294604F13D00202273 +:104C4000054619F042FE207840F010002070010760 +:104C50000FD520F00800207007208DF8000069466D +:104C600004F1E00001950CF06AFC022801D000B1CB +:104C7000FFDF0020D4E770B50D460646FCF7D4FBF5 +:104C800018B10178272921D102E043F2020070BD5A +:104C9000807F00F00300022808D0002080F001018E +:104CA00030460AF075FF040003D101E00120F5E76A +:104CB000FFDFA079022809D16078C00706D02A4614 +:104CC00021463046FEF7FFFC10B10FE0082070BD12 +:104CD000B4F860000E280BD204F162010223102206 +:104CE000081F0AF0DCFD012101704570002070BD35 +:104CF000112070BD70B5064614460D4608460EF0EC +:104D00001BFC18B920460EF03DFC08B1102070BD08 +:104D1000A6F57F40FF380ED03046FCF785FB38B152 +:104D2000417822464B08811C1846FCF7F0FC07E04E +:104D300043F2020070BD2046FDF7F1FA0028F9D1D8 +:104D40001021E01D0EF0D3F8E21D294604F11700F2 +:104D500000F087F9002070BD2DE9F04104468AB0CB +:104D600015468846002708460EF033FC18B9284639 +:104D70000EF02FFC18B110200AB0BDE8F0812046DB +:104D8000FCF752FB060003D0307827281BD102E045 +:104D900043F20200F0E7B07F00F00300022809D0E0 +:104DA0005FF0000080F0010120460AF0F1FE0400EF +:104DB00003D101E00120F5E7FFDF2078400702D5AD +:104DC0006078800701D40820D6E7B07F00F00300A8 +:104DD000022803D0A06F03D1A16F02E0606FFAE751 +:104DE000616F407800B19DB1487810B1B8F1000F03 +:104DF0000ED0ADB1EA1D06A8E16800F032F910222C +:104E000006A905F1170019F034FD18B1042707E0D1 +:104E10000720B1E71022E91D04F12D0019F055FD1E +:104E2000B8F1000F06D0102208F1070104F11D00AF +:104E300019F04BFD2078252140F00200207030460B +:104E4000FCF724FB2078C10715D020F0010020706A +:104E500002208DF8000004F11D0002901030039034 +:104E60008DF804706946B3300CF069FB022803D05A +:104E700010B1FFDF00E0277700207DE7F8B5154689 +:104E80000E460746FCF7D0FA040004D0207822280A +:104E900004D00820F8BD43F20200F8BDA07F00F066 +:104EA0000300022802D043F20400F8BD30460EF0A1 +:104EB00043FB18B928460EF03FFB08B11020F8BD9F +:104EC00000953288B31C21463846FEF71FFC112896 +:104ED00014D00028F3D1297C4A08E17F62F3000155 +:104EE000E1772A7C62F34101E177297C890884F823 +:104EF0002010A17F21F08001A177F8BDA17F0907D3 +:104F0000FBD4D6F80200C4F83600D6F80600C4F880 +:104F10003A003088A0861022294604F1240019F0B6 +:104F2000D4FC287C4108E07F61F38200E077297C93 +:104F300061F3C300E077287C800884F82100A07F1B +:104F400040F00800A0770020D3E770B50D46064674 +:104F50000BB1072070BDFCF767FA040007D020787A +:104F6000222802D3A07F400604D4082070BD43F25B +:104F7000020070BDA5B12946304609F033FE03F0AA +:104F80004FFB297C4A08E17F62F30001E1772A7C2C +:104F900062F34101E177297C890884F8201004E05C +:104FA000304609F042FE03F03BFBA17F21F04001B7 +:104FB000A17770BD70B50D46FCF736FA040005D038 +:104FC00028460EF0DFFA20B1102070BD43F2020037 +:104FD00070BD29462046FEF747FB002070BD04E067 +:104FE00010F8012B0AB100207047491E89B2F7D290 +:104FF0000120704770B51546064603F0DBFC04003F +:1050000000D1FFDF207820F00F00801C20F0F0009E +:105010002030207066802868A060BDE8704003F0F2 +:10502000CCBC10B5134C94F83000002808D104F122 +:105030002001A1F110000CF0C4FA012084F8300026 +:1050400010BD10B190F8B9202AB10A4890F8350087 +:1050500018B1002003E0B83001E0064834300860A1 +:10506000704708B50023009313460A460AF08BFFE9 +:1050700008BD0000E8010020F0B5007B059F1E463A +:1050800014460D46012800D0FFDF0C2030803A2066 +:105090003880002C08D0287A032806D0287B0128E5 +:1050A00000D0FFDF17206081F0BDA889FBE72DE964 +:1050B000F04786B0144691F80C900E9A0D46B9F15F +:1050C000010F0BD01021007B2E8A8846052807D0BF +:1050D000062833D0FFDF06B0BDE8F0870221F2E7F3 +:1050E000E8890C2100EB400001EB400018803320E0 +:1050F0001080002CEFD0E889608100271AE000962C +:10510000688808F1020301AA696900F085FF06EBCF +:105110000800801C07EB470186B204EB4102BDF892 +:10512000040090810DF1060140460E320CF0B2FAF7 +:105130007F1CBFB26089B842E1D8CCE73420108030 +:10514000E889B9F1010F11D0122148430E301880BF +:10515000002CC0D0E88960814846B9F1010F00D029 +:105160000220207300270DF1040A1FE00621ECE75E +:105170000096688808F1020301AA696900F04CFFF3 +:1051800006EB0800801C86B2B9F1010F12D007EBC4 +:10519000C70004EB4000BDF80410C18110220AF1E1 +:1051A0000201103019F091FB7F1CBFB26089B84238 +:1051B000DED890E707EB470104EB4102BDF804009D +:1051C000D0810AF10201404610320CF063FAEBE79D +:1051D0002DE9F0470E4688B090F80CC096F80C8088 +:1051E000378AF5890C20109902F10C044FF0000A5F +:1051F000BCF1030F08D0BCF1040F3ED0BCF1070F87 +:105200007DD0FFDF08B067E705EB850C00EB4C00B5 +:10521000188031200880002AF4D0A8F1060000F0A0 +:10522000FF09558125E0182101A819F0EFFB00972F +:105230007088434601AA716900F0EEFEBDF80400D3 +:105240002080BDF80600E080BDF808002081A21C87 +:105250000DF10A0148460CF01DFAB9F1000F00D01B +:1052600018B184F804A0A4F802A007EB080087B2E4 +:105270000A346D1EADB2D6D2C4E705EB850C00EB47 +:105280004C00188032200880002ABBD0A8F105000D +:1052900000F0FF09558137E000977088434601AA66 +:1052A000716900F0B9FE9DF80600BDF80410E180B8 +:1052B0002179420860F3000162F34101820862F340 +:1052C0008201C20862F3C301020962F304114209B8 +:1052D00062F34511820962F386112171C009607180 +:1052E000BDF80700208122460DF1090148460CF067 +:1052F000D1F918B184F802A0A4F800A000E007E0FA +:1053000007EB080087B20A346D1EADB2C4D279E74C +:10531000A8F1020084B205FB08F000F10E0CA3F81E +:1053200000C035230B80002AA6D0558194810097B8 +:1053300083B270880E32716900F06EFE62E72DE96B +:10534000F84F1E460A9D0C4681462AB1607A00F548 +:105350008070D080E089108199F80C000C274FF004 +:1053600000084FF00E0A0D2873D2DFE800F09E0708 +:105370000E1C28303846556A737373002146484620 +:105380000095FFF779FEBDE8F88F207B914608284D +:1053900002D0032800D0FFDF378030200AE000BFB2 +:1053A000A9F80A80EFE7207B9146042800D0FFDFB0 +:1053B000378031202880B9F1000FF1D1E3E7207B5D +:1053C0009146042800D0FFDF37803220F2E7207BAF +:1053D0009146022800D0FFDF37803320EAE7207BA8 +:1053E0001746022800D0FFDF3420A6F800A028804E +:1053F000002FC8D0A7F80A80C5E7207B17460428ED +:1054000000D0FFDF3520A6F800A02880002FBAD0FA +:105410004046A7F80A8012E0207B1746052802D0F4 +:10542000062800D0FFDF1020308036202880002F93 +:10543000A9D0E0897881A7F80E80B9F80E00B8816C +:10544000A1E7207B9146072800D0FFDF3780372077 +:10545000B0E72AE04FF0120018804FF03800170034 +:10546000288090D0E0897881A7F80E80A7F8108076 +:1054700099F80C000A2805D00B2809D00C280DD06B +:10548000FFDF80E7207B0A2800D0FFDF01200AE051 +:10549000207B0B2800D0FFDF042004E0207B0C28B9 +:1054A00000D0FFDF052038736DE7FFDF6BE770B5D5 +:1054B0000C460546FBF7B8FF20B10078222804D23D +:1054C000082070BD43F2020070BD052128460AF095 +:1054D0005FFB206008B1002070BD032070BD30B4B8 +:1054E0004880087820F00F00C01C20F0F0009030B9 +:1054F00001F8080B1DCA81E81D0030BC03F05DBA3D +:105500002DE9FF4784B0002782460297079890460E +:105510008946123006F086FA401D20F003060798EF +:1055200028B907A95046FFF7C2FF002853D1B9F1A7 +:10553000000F05D00798017B19BB052504681BE007 +:1055400098F80000092803D00D2812D0FFDF45E0AD +:10555000079903254868B0B3497B4288714391425B +:1055600038D98AB2B3B2011D0AF085F90446078022 +:1055700002E0079C042508340CB1208810B1032DEB +:1055800028D02BE007980121123006F07DFAADF803 +:105590000C00024602AB2946504604F02AF80700E8 +:1055A00001D1A01C029007983A461230C8F80400B6 +:1055B000A8F802A003A94046029B06F072FAC0B107 +:1055C000072814D200E005E0DFE800F0060811111A +:1055D0000F0A0C00132015E6002013E6112011E637 +:1055E00008200FE643F203000CE607200AE603203A +:1055F00008E6BDF80C002346CDE900702A46504667 +:10560000079900F019FD57B9032D08D10798B3B2D7 +:10561000417B406871438AB2011D0AF040F9B9F13B +:10562000000FD9D0079981F80C90D5E72DE9FE4FEE +:1056300091461A881C468A468046FAB102AB494612 +:1056400003F0D7FF050019D04046A61C27880AF0B2 +:10565000E3FB3246072629463B46009609F0F1FF58 +:1056600020882346CDE900504A465146404600F086 +:10567000E3FC002020800120BDE8FE8F0020FBE736 +:1056800010B586B01C46AAB104238DF800301388EB +:10569000ADF808305288ADF80A208A788DF80E20CF +:1056A0000988ADF80C1000236A462146FFF728FF51 +:1056B00006B010BD1020FBE770B50D4605210AF0BD +:1056C00067FA040000D1FFDF294604F11200BDE8AB +:1056D000704006F0C2B92DE9F8430D468046002619 +:1056E00003F068F904462878102878D2DFE800F043 +:1056F000773B34533131123131310831313131316D +:105700002879001FC0B2022801D0102810D114BB84 +:10571000FFDF35E004B9FFDF052140460AF038FA23 +:10572000007B032806D004280BD0072828D0FFDFF1 +:10573000072655E02879801FC0B2022820D050B13A +:10574000F6E72879401FC0B2022819D0102817D0D8 +:10575000EEE704B9FFDF13E004B9FFDF2879012881 +:105760000ED1172137E0052140460AF011FA070053 +:1057700000D1FFDF07F11201404606F04BF92CB1D2 +:105780002A4621464046FFF7AAFE29E0132140465B +:10579000FDF7FAF824E004B9FFDF052140460AF0DE +:1057A000F7F9060000D1FFDF694606F1120006F0A6 +:1057B0003BF9060000D0FFDFA988172901D2172284 +:1057C00000E00A46BDF80000824202D9014602E02C +:1057D00005E01729C5D3404600F03EFCD0E7FFDFC7 +:1057E0003046BDE8F883401D20F0030219B102FBEA +:1057F00001F0001D00E000201044704713B5009830 +:1058000050B100244FEA0D0009F0DFFF002C02D157 +:10581000F74A009911601CBD01240020F4E72DE92E +:10582000F0470C4615462421204619F0EFF805B93B +:10583000FFDFA87860732888DFF8B4A3401D20F04C +:105840000301AF788946DAF8000009F0DCFF0600B2 +:1058500000D1FFDF4FF000082660A6F8008077B186 +:1058600009FB07F1091D0AD0DAF8000009F0CBFFA7 +:10587000060000D1FFDF6660C6F8008001E0C4F8D2 +:105880000480298804F11200BDE8F04706F0B4B89E +:105890002DE9F047804601F112000D46814606F0E1 +:1058A000C1F8401DD24F20F003026E7B14462968D8 +:1058B000386809F0D3FF3EB104FB06F2121D03D095 +:1058C0006968386809F0CAFF05200AF009F904463A +:1058D00005200AF00DF9201A012802D1386809F0D4 +:1058E00087FF49464046BDE8F04706F09AB870B5D4 +:1058F000054605210AF04CF9040000D1FFDF04F150 +:1059000012012846BDE8704006F084B82DE9F04F3A +:1059100091B04FF0000BADF834B0ADF804B047884B +:105920000C4605469246052138460AF031F9060034 +:1059300000D1FFDF24B1A780A4F806B0A4F808B016 +:10594000297809220B20B2EB111F7DD12A7A04F1AC +:10595000100138274FF00C084FF001090391102A6D +:1059600073D2DFE802F072F2F1F07F08D2888D9FE7 +:105970003DDBF3EEB6B6307B022800D0FFDFA8890E +:1059800008EBC001ADF804103021ADF83410002C44 +:1059900025D06081B5F80E9000271DE004EBC70804 +:1059A000317C88F80E10F189A8F80C10CDF8009021 +:1059B0006888042304AA296900F02EFBBDF81010A2 +:1059C000A8F8101009F10400BDF812107F1C1FFA8E +:1059D00080F9A8F81210BFB26089B842DED80DE194 +:1059E000307B022800D0FFDFE98908EBC100ADF869 +:1059F00004003020ADF83400287B0A90001FC0B2AC +:105A00000F90002CEBD06181B5F81090002725E0B5 +:105A1000CDF800906888696903AA0A9B00F0FCFA37 +:105A20000A9804EBC70848441FFA80F908F10C02F1 +:105A300004A90F980BF02EFE18B188F80EB0A8F844 +:105A40000CB0BDF80C1001E0D4E0CFE0A8F81010C5 +:105A5000BDF80E107F1CA8F81210BFB26089B842C2 +:105A6000D6D8CBE00DA8009001AB2246294630469F +:105A7000FFF71DFBC2E0307B082805D0FFDF03E005 +:105A8000307B082800D0FFDFE8891030ADF8040033 +:105A90003620ADF83400002C3FD0A9896181F1890E +:105AA000A18127E0307B092800D0FFDFA88900F121 +:105AB0000C01ADF804103721ADF83410002C2CD0B7 +:105AC0006081E8890090AB89688804F10C0229693B +:105AD00056E0E8893921103080B2ADF80400ADF805 +:105AE0003410002C74D0A9896181287A0E280AD03C +:105AF00002212173E989E181288A0090EB89688875 +:105B00006969039A3CE00121F3E70DA8009001AB1D +:105B1000224629463046FFF75BFB6FE0307B0A28C0 +:105B200000D0FFDF1220ADF80400ADF834704CB3A4 +:105B3000A9896181A4F810B0A4F80EB084F80C9083 +:105B40005CE020E002E031E039E042E0307B0B280D +:105B500000D0FFDF288AADF834701230ADF80400B1 +:105B600084B104212173A9896181E989E181298AAC +:105B70002182688A00902B8A688804F11202696980 +:105B800000F04AFA3AE0307B0C2800D0FFDF122008 +:105B9000ADF80400ADF834703CB305212173A4F8CE +:105BA0000AB0A4F80EB0A4F810B027E00DA8009039 +:105BB00001AB224629463046FFF75EFA1EE00DA8EB +:105BC000009001AB224629463046FFF7B8FB15E0AE +:105BD00036E03B21ADF80400ADF8341084B3A4F8EE +:105BE0000690A4F808B084F80AB007E0FFDF05E0EB +:105BF00010000020297A012919D0FFDFBDF8040028 +:105C0000AAF800007CB1BDF834002080BDF8040083 +:105C10006080BDF83400392805D03B2803D03C28EB +:105C200001D086F80CB011B00020BDE8F08F3C2107 +:105C3000ADF80400ADF8341014B1697AA172DDE753 +:105C4000FFE7AAF80000EEE72DE9F84356880F4673 +:105C5000804615460521304609F09AFF040000D120 +:105C6000FFDF123400943B46414630466A6806F036 +:105C70004AF8B6E570B50D46052109F089FF040024 +:105C800000D1FFDF294604F11200BDE8704005F0A5 +:105C9000D6BE70B50D46052109F07AFF040000D18B +:105CA000FFDF294604F11200BDE8704005F0F4BEA4 +:105CB00070B50546052109F06BFF040000D1FFDF38 +:105CC00004F1080321462846BDE870400422ADE4F3 +:105CD00070B50546052109F05BFF040000D1FFDF28 +:105CE000214628462368BDE8704005229EE470B531 +:105CF0000646052109F04CFF040000D1FFDF04F146 +:105D0000120005F08FFE401D20F0030511E0011D7B +:105D100000880322431821463046FFF787FC0028FD +:105D20000BD0607BABB2684382B26068011D09F0A2 +:105D3000ECFD606841880029E9D170BD70B50E4660 +:105D4000054602F037FE040000D1FFDF012020727B +:105D500066726580207820F00F00C01C20F0F000F3 +:105D600030302070BDE8704002F027BE2DE9F043CE +:105D70008BB00D461446814606A9FFF798FB002814 +:105D800014D14FF6FF7601274FF420588CB1032031 +:105D90008DF800001020ADF8100007A8059007AAA4 +:105DA000204604A90BF095FC78B107200BB0BDE8A4 +:105DB000F0830820ADF808508DF80E708DF80000C3 +:105DC000ADF80A60ADF80C800CE00698A17801747B +:105DD0002188C1818DF80E70ADF80850ADF80C80A7 +:105DE000ADF80A606A4602214846069BFFF788FB29 +:105DF000DCE708B501228DF8022042F60202ADF878 +:105E000000200A4603236946FFF73AFC08BD08B59F +:105E100001228DF8022042F60302ADF800200A4666 +:105E200004236946FFF72CFC08BD00B587B079B1A3 +:105E300002228DF800200A88ADF808204988ADF8C4 +:105E40000A1000236A460521FFF75AFB07B000BD80 +:105E50001020FBE709B1072312E40720704770B553 +:105E600088B00D461446064606A9FFF720FB002819 +:105E70000ED17CB10620ADF808508DF80000ADF8C9 +:105E80000A40069B6A460821DC813046FFF738FB52 +:105E900008B070BD05208DF80000ADF80850F0E79F +:105EA00000B587B059B107238DF80030ADF8082050 +:105EB000039100236A460921FFF722FBC6E7102061 +:105EC000C4E770B588B00C460646002506A9FFF762 +:105ED000EEFA0028DCD106980121123005F0D4FD3D +:105EE0009CB12178062921D2DFE801F020050516B2 +:105EF0000318801E80B2C01EE28880B20AB1A36877 +:105F00001BB1824203D90C20C2E71020C0E704294C +:105F100004D0A08850B901E00620B9E7012913D0C8 +:105F2000022905D004291CD005292AD00720AFE773 +:105F300009208DF800006088ADF80800E088ADF811 +:105F40000A00A068039023E00A208DF80000608812 +:105F5000ADF80800E088ADF80A00A0680A250390B3 +:105F600016E00B208DF800006088ADF80800A088CE +:105F7000ADF80A00E088ADF80C00A0680B2504908D +:105F800006E00C208DF8000060788DF808000C25E4 +:105F90006A4629463046069BFFF7B2FA78E700B515 +:105FA00087B00D228DF80020ADF8081000236A4656 +:105FB0001946FFF7A5FA49E700B587B071B102228B +:105FC0008DF800200A88ADF808204988ADF80A103D +:105FD00000236A460621FFF793FA37E7102035E7DA +:105FE00070B586B0064601200D46ADF808108DF854 +:105FF0000000014600236A463046FFF781FA04009C +:1060000008D12946304601F0BDFA0021304601F0A2 +:10601000D7FA204606B070BDF8B51C4615460E46A8 +:10602000069F09F0E7FE2346FF1DBCB231462A4613 +:10603000009409F0D2FAF8BD30B41146DDE902420D +:106040003CB1032903D0002330BC04F05BB9012329 +:10605000FAE71A8030BC704770B50C460546FFF76A +:106060002BFB2146284601F09CFA2846BDE87040EB +:10607000012101F0A5BA000018B18178012938D1B9 +:1060800001E010207047018842F60112881A9142FF +:1060900031D018DC42F60102A1EB020091422AD075 +:1060A0000CDC41B3B1F5C05F25D06FF4C0500818C7 +:1060B00021D0A0F57060FF381BD11CE001281AD058 +:1060C00002280AD117E0B0F5807F14D008DC01283F +:1060D00011D002280FD003280DD0FF2809D10AE0E3 +:1060E000B0F5817F07D0A0F58070033803D0012878 +:1060F00001D0002070470F2070470A281ED007DC0F +:1061000018D2DFE800F0191B1F1F171F231D1F21C6 +:10611000102815D008DC0B2812D00C2810D00D2820 +:1061200016D00F2806D10DE011280BD084280BD0F3 +:1061300087280FD003207047002070470520704744 +:10614000072070470F2070470420704706207047D3 +:106150000C20704743F20200704738B50C4605002A +:1061600041D06946FEF7ACF9002819D19DF800101E +:10617000607861F3020060706946681CFEF7A0F960 +:1061800000280DD19DF80010607861F3C5006070A3 +:10619000A978C1F34101012903D0022905D00720C4 +:1061A00038BD217821F0200102E0217841F0200162 +:1061B0002170410704D0A978C90861F38610607086 +:1061C000607810F0380F07D0A978090961F3C7107B +:1061D000607010F0380F02D16078400603D5207847 +:1061E00040F040002070002038BD70B5044600200B +:1061F000088015466068FFF7B0FF002816D1208997 +:10620000A189884211D860688078C0070AD0B1F5AA +:10621000007F0AD840F20120B1FBF0F200FB12101F +:10622000288007E0B1F5FF7F01D90C2070BD01F295 +:1062300001212980002070BD10B50478137864F323 +:10624000000313700478640864F341031370047846 +:10625000A40864F3820313700478E40864F3C303AE +:1062600013700478240964F3041313700478640928 +:1062700064F3451313700078800960F3861313707C +:1062800031B10878C10701D1800701D5012000E0B4 +:10629000002060F3C713137010BD4278530702D07B +:1062A00002F0070306E012F0380F02D0C2F3C20377 +:1062B00000E001234A7863F302024A70407810F04C +:1062C000380F02D0C0F3C20005E0430702D000F04F +:1062D000070000E0012060F3C5024A7070472DE915 +:1062E000F04F95B00D00824612D01221284618F0CA +:1062F0006BFB4FF6FF7B05AA0121584607F065FAB4 +:106300000024264637464FF420586FF4205972E097 +:10631000102015B0BDE8F08F9DF81E0001280AD1AD +:10632000BDF81C1041450BD011EB09000AD0012823 +:106330000CD002280CD0042C0ED0052C0FD10DE06F +:10634000012400E00224BDF81A6008E0032406E0FE +:106350000424BDF81A7002E0052400E00624BDF80C +:106360001A10514547D12C74BEB34FF0000810AA43 +:106370004FF0070ACDE90282CDE900A80DF13C09F2 +:106380001023CDF8109042463146584607F0D0FA17 +:1063900008BBBDF83C002A46C0B210A90BF07AF940 +:1063A000C8B9AE81CFB1CDE900A80DF1080C0AAE95 +:1063B00040468CE84102132300223946584607F034 +:1063C000B7FA40B9BDF83C00F11CC01EC0B22A1D8E +:1063D0000BF060F910B103209BE70AE0BDF829003B +:1063E000E881062C05D19DF81E00A872BDF81C009E +:1063F000288100208DE705A807F0F3F900288BD04D +:10640000FFF77BFE85E72DE9F0471C46DDE90978BB +:10641000DDF8209015460E00824600D1FFDF0CB15A +:10642000208818B1D5B11120BDE8F087022D01D028 +:10643000012100E0002106F1140006F0B7F8A8F8E9 +:10644000000002463B462946504603F0D2F8C9F800 +:10645000000008B9A41C3C600020E5E71320E3E736 +:10646000F0B41446DDE904528DB1002314B1022CBE +:1064700009D101E0012306E00D7CEE0703D025F0F1 +:10648000010501230D742146F0BC03F03BBF1A80C7 +:10649000F0BC70472DE9FE4F91461A881C468A468B +:1064A0008046FAB102AB494603F0A3F8050019D0C3 +:1064B0004046A61C278809F0AFFC3246072629462D +:1064C0003B46009609F0BDF820882346CDE90050F0 +:1064D0004A4651464046FFF7C3FF00202080012076 +:1064E000BDE8FE8F0020FBE72DE9F04786B091461E +:1064F000DDE90E460F46824603AA05A904A8109DB1 +:106500008DE807009846324621465046FFF77BFF4C +:10651000049909B1012200E000222A70002817D155 +:10652000F84A03AB1060059A009104F11400CDE91C +:1065300001204A463946504606F0EFFB90B1082844 +:106540000ED2DFE800F00407040D0D090B0B00204C +:1065500006B069E71120FBE70720F9E70820F7E715 +:106560000320F5E7BDF80C100498CDE9000143467F +:10657000324621465046FFF773FFE8E72DE9F04326 +:1065800089B00D46DDE9108781461C461646142168 +:1065900003A818F03BFA012002218DF810108DF8A5 +:1065A0000C008DF81170ADF8146064B1A278D207B8 +:1065B00009D08DF81600E088ADF81A00A088ADF873 +:1065C0001800A068079008A80095CDE90110424680 +:1065D00003A948466B68FFF787FF09B0BDE8F08361 +:1065E000F0B58BB00024064606940794072708945C +:1065F00005A80994019400970294CDE903400D4643 +:1066000010232246304607F093F978B90AA806A964 +:10661000019400970294CDE90310BDF814300022D4 +:106620002946304606F05AFF002801D0FFF765FDE5 +:106630000BB0F0BD06F0FABD2DE9FC410C468046DA +:10664000002602F0B7F9054620780D287ED2DFE853 +:1066500000F0BC0713B325BD49496383AF959B0088 +:10666000A848006820B1417841F010014170ADE0C8 +:10667000404602F0CFF9A9E00421404609F088FA2B +:10668000070000D1FFDF07F11401404605F022FFAB +:10669000A5BB13214046FCF777F997E0042140465B +:1066A00009F076FA070000D1FFDFE088ADF80000BE +:1066B0000020B8819DF80000010704D5C00602D56E +:1066C000A088B88105E09DF8010040067ED5A0882D +:1066D000F88105B9FFDF22462946404601F066FCF5 +:1066E000022673E0E188ADF800109DF8011009065C +:1066F0000FD5072803D006280AD00AE024E0042199 +:10670000404609F045FA060000D1FFDFA088F0817D +:106710000226CDB9FFDF17E00421404609F038FA20 +:10672000070000D1FFDF07F1140006F0B6FD90F07E +:10673000010F02D1E079000648D5387C022640F0EE +:106740000200387405B9FFDF224600E03DE029462B +:10675000404601F02BFC39E00421404609F018FACC +:10676000017C002D01F00206C1F340016171017C42 +:1067700021F002010174E7D1FFDFE5E702260121E4 +:10678000404602F079F921E00421404609F000FA80 +:106790000546606800902089ADF804000122694632 +:1067A000404602F08AF9287C20F0020028740DE0AF +:1067B000002DC9D1FFDFC7E7022600214046FFF7C1 +:1067C00068FA002DC0D1FFDFBEE7FFDF3046BDE82D +:1067D000FC813EB50C0009D001466B4601AA0020A1 +:1067E00007F028F920B1FFF788FC3EBD10203EBD20 +:1067F00000202080A0709DF8050002A900F007008D +:10680000FDF77AFE50B99DF8080020709DF805004C +:1068100002A9C0F3C200FDF76FFE08B103203EBD20 +:106820009DF8080060709DF80500C109A07861F32B +:106830000410A0709DF80510890961F3C300A070D1 +:106840009DF80410890601D5022100E0012161F3C1 +:1068500042009DF8001061F30000A07000203EBDD2 +:1068600070B5144606460D4651EA040005D075B1D0 +:1068700008460CF0A5FE78B901E0072070BD294656 +:10688000304607F038F910B1BDE8704035E454B136 +:1068900020460CF095FE08B1102070BD2146304610 +:1068A000BDE8704095E7002070BD2DE9FC5F0C4607 +:1068B00090460546002701780822007A3E46B2EB52 +:1068C000111F7DD104F10A0100910A31821E4FF09F +:1068D000020A04F1080B0191092A72D2DFE802F0E2 +:1068E000EDE005F528287BAACE006888042109F090 +:1068F0004FF9060000D1FFDFB08928B152270726E3 +:10690000C3E000004C02002051271026002C7DD04F +:106910006888A0800120A071A88900220099FFF753 +:106920009FFF002873D1A8892081288AE081D1E0C7 +:10693000B5F81290072824D1E87B000621D551270D +:1069400009F1140086B2002CE1D0A8890022009938 +:10695000FFF786FF00285AD16888A08084F806A037 +:10696000A88920810120A073288A2082A4F812908F +:10697000A88A009068884B46A969019A01F0F3FA49 +:10698000A8E0502709F1120086B2002C3ED0A88959 +:1069900000225946FFF764FF002838D16888A0809C +:1069A000A889E080287A072813D002202073288A3B +:1069B000E081E87BC0096073A4F81090A88A01E028 +:1069C00085E082E0009068884B4604F11202A969D4 +:1069D000D4E70120EAE7B5F81290512709F1140035 +:1069E00086B2002C66D06888042109F0D1F883466D +:1069F0006888A080A88900220099FFF731FF00284D +:106A00006ED184F806A0A889208101E052E067E0F9 +:106A10000420A073288A2082A4F81290A88A0090EB +:106A200068884B46A969019A01F09DFAA989ABF8DB +:106A30000E104FE06888FAF7F7FC074668880421D3 +:106A400009F0A6F8064607B9FFDF06B9FFDF687B45 +:106A5000C00702D05127142601E0502712264CB35C +:106A60006888A080502F06D084F806A0287B59465D +:106A700001F089FA2EE0287BA11DF9E7FE49A889DB +:106A80004989814205D1542706269CB16888A08097 +:106A900020E053270BE06888A080A889E08019E0F7 +:106AA0006888042109F074F800B9FFDF552708262B +:106AB000002CF0D1A8F8006011E056270726002C22 +:106AC000F8D06888A080002013E0FFDF02E00128F2 +:106AD00008D0FFDFA8F800600CB127806680002096 +:106AE000BDE8FC9F57270726002CE3D06888A080CC +:106AF000687AA071EEE7401D20F0030009B1414320 +:106B0000091D01EB4000704713B5DB4A00201071EE +:106B1000009848B10024684608F057FE002C02D1C6 +:106B2000D64A009911601CBD01240020F4E770B51D +:106B30000D46064686B014465C21284617F066FFCF +:106B400004B9FFDFA0786874A2782188284601F094 +:106B500044FA0020A881E881228805F1140130461A +:106B600005F09DFC6A460121304606F02EFE19E034 +:106B70009DF80300000715D5BDF806103046FFF755 +:106B80002FFD9DF80300BDF8061040F010008DF8B1 +:106B90000300BDF80300ADF81400FF233046059A4A +:106BA00006F074FF684606F01CFE0028E0D006B030 +:106BB00070BD10B50C4601F1140005F0A7FC0146AC +:106BC000627C2046BDE8104001F03CBA70B5054635 +:106BD000042108F0DDFF040000D1FFDF04F11401FF +:106BE0000C46284605F076FC21462846BDE8704054 +:106BF00005F077BC70B58AB00C460646FAF714FC6F +:106C0000050014D02878222827D30CB1A08890B191 +:106C100001208DF80C0003208DF8100000208DF865 +:106C2000110054B1A088ADF81800206807E043F2C5 +:106C300002000AB070BD0920FBE7ADF8180005900E +:106C40000421304608F0A4FF040000D1FFDF04F166 +:106C5000140005F072FC000701D40820E9E701F0F8 +:106C6000A9FE60B108A802210094CDE9011095F8B1 +:106C7000232003A930466368FFF736FCD9E71120CB +:106C8000D7E72DE9F04FB2F802A0834689B0154648 +:106C900089465046FAF7C8FB07460421504608F0DB +:106CA00077FF0026044605964FF002080696ADF8D9 +:106CB0001C6007B9FFDF04B9FFDF4146504603F00F +:106CC00088FE60B907AA06A905A88DE80700424614 +:106CD000214650466368FFF796FB00B1FFDF664828 +:106CE00007AB0660DDE9051204F11400CDF8009051 +:106CF000CDE90320CDE9013197F8232059465046CC +:106D00006B6805F063FC06000AD0022E04D0032E47 +:106D100014D0042E00D0FFDF09B03046BDE8F08F5C +:106D2000BDF81C000028F7D00599CDE900104246B7 +:106D3000214650466368FFF793FBEDE7687840F023 +:106D400008006870E8E72DE9F04F9BB004464FF06B +:106D500000084948ADF85480ADF83080ADF8508057 +:106D6000A0F80880ADF81480ADF81880ADF8208048 +:106D7000ADF81C80007916460D464746012808D01C +:106D8000022806D0032804D0042802D008201BB013 +:106D9000C4E720460CF0D0FBD0BB28460CF0CCFB5F +:106DA000B0BB60680CF015FC90BB606848B16089AE +:106DB0002189884202D8B1F5007F01D90C20E6E78D +:106DC00080460BAA06A92846FFF70FFA0028DED155 +:106DD00068688078C0F34100022808D19DF8190046 +:106DE00010F0380F03D028690CF0EAFB80B905A930 +:106DF0002069FFF7B2F90028C9D1206950B1607845 +:106E000080079DF8150000F0380002D5C0B301E0FE +:106E100011E0A8BB9DF8140080060ED59DF8150062 +:106E200010F0380F03D060680CF0CAFB18B9606826 +:106E30000CF0CFFB08B11020A9E707A96069FFF7A4 +:106E40008CF90028A3D1606940B19DF81D0000F0C5 +:106E5000070101293FD110F0380F3CD008A9A069E3 +:106E6000FFF77BF9002892D19DF81C00800632D4F0 +:106E70009DF82000800604E04C0200201400002051 +:106E800029E028D4A06940B19DF8210000F0070155 +:106E9000012920D110F0380F1DD0E06818B100781A +:106EA000C8B11C2817D20EAA611C2046FFF7C4F9EE +:106EB0000120B94660F30F27BA4607468DF84E0009 +:106EC00042F60300ADF84C000DF13B0217A928680B +:106ED0000AF0FFFB08B1072059E79DF85C0016A9EE +:106EE000CDF80090C01CCDE9019100F0FF0B00230C +:106EF0000BF20122514613A806F0AAFBF0BBBDF825 +:106F000058000990FE482A8929690092CDE90110AC +:106F10006B89BDF82C202868069906F099FB0100C2 +:106F20007ED120784FF0020AC10601D480062BD50D +:106F3000ADF80C90606950B907A906A8FFF7ADF944 +:106F40009DF81D0020F00700401C8DF81D009DF8E5 +:106F50001C008DF84E7040F0C8008DF81C0042F601 +:106F60000210ADF84C000CA903AACDF800A0CDE9A1 +:106F70000121002340F2032213A800E01EE007993C +:106F800006F066FB01004BD1DD484D4608385B46F4 +:106F90000089ADF839000EA8CDE90290CDF8049033 +:106FA000CDF810904FF007090022CDF80090BDF801 +:106FB00058104FF6FF7006F091FA10B1FFF79DF8E8 +:106FC000E5E69DF83800000625D52946012060F346 +:106FD0000F218DF84E704FF42450ADF84C00ADF8F1 +:106FE000105062789DF81000002362F300008DF8C5 +:106FF00010006278CDF800A0520862F341008DF8CD +:10700000100004AACDE9012540F2032213A806F0DE +:107010001FFB010004D1606888B32069A8B900E0B3 +:1070200086E005A906A8FFF738F96078800706D43E +:107030009DF8150020F038008DF8150005E09DF84A +:10704000140040F040008DF814008DF84E7042F6A8 +:107050000110ADF84C00208940F20121B0FBF1F2A3 +:1070600001FB1202606814ABCDF80080CDE901038A +:10707000002313A8059906F0EBFA010058D12078F7 +:10708000C00729D0ADF80C50A06950B908A906A8CE +:10709000FFF703F99DF8210020F00700401C8DF850 +:1070A00021009DF820008DF84E7040F040008DF8D2 +:1070B000200042F60310ADF84C0015A903AACDF844 +:1070C00000A0CDE90121002340F2032213A8089972 +:1070D00006F0BEFA01002BD1E06868B32946012012 +:1070E00060F30F218DF84E7042F60410ADF84C009D +:1070F000E068002302788DF8602040788DF8610008 +:10710000E06818AA4088ADF86200E06800798DF860 +:107110006400E068C088ADF86500CDF80090CDE966 +:1071200001254FF4027213A806F092FA010003D071 +:10713000099800F0B3FF2AE671480321083801716D +:1071400056B100893080BDF850007080BDF8300025 +:10715000B080BDF85400F080002018E670B501251D +:107160008AB016460B46012802D0022816D104E048 +:107170008DF80E504FF4205003E08DF80E5042F67B +:107180000100ADF80C005BB10024601C60F30F241B +:1071900004AA08A918460AF09CFA18B1072048E585 +:1071A000102046E504A99DF820205548CDE900218E +:1071B000801E02900023214603A802F2012206F05D +:1071C00047FA10B1FEF799FF33E54D4808380EB184 +:1071D000C1883180057100202BE5F0B593B00746DA +:1071E00001268DF83E6041F60100ADF83C0012AA80 +:1071F0000FA93046FFF7B2FF002848D1404C0025C8 +:10720000083CE7B31C2102A817F000FC9DF8080019 +:107210008DF83E6040F020008DF8080042F6052011 +:10722000ADF83C000E959DF83A00119520F006004F +:10723000801C8DF83A009DF838006A4620F0FF0067 +:107240008DF838009DF8390009A920F0FF008DF86D +:1072500039000420ADF82C00ADF830000EA80A90DB +:1072600011A80D900FA80990ADF82E5002A8FFF7B5 +:107270006AFD00280BD1BDF80000608100E008E045 +:10728000BDF80400A081401CE0812571002013B0EE +:10729000F0BD6581A581BDF84800F4E72DE9F74F01 +:1072A0001749A0B00024083917940A79A146012A89 +:1072B00004D0022A02D0082023B02FE5CA888242D7 +:1072C00001D00620F8E721988A46824201D10720A2 +:1072D000F2E701202146ADF848004FF6FF7860F351 +:1072E0000F21ADF84A808DF86E0042F6020B069130 +:1072F0008DF87240ADF86CB0ADF870401CA901E09B +:10730000540200201391ADF8508012A806F08DFAB7 +:1073100000252E462F460DAB072212A9404606F047 +:1073200087FA78B10A285DD195B38EB3ADF8645071 +:10733000ADF866609DF85E008DF8144019AC012828 +:1073400064D06BE09DF83A001FB3012859D1BDF815 +:10735000381059451FD118A809A901940294CDE904 +:10736000031007200090BDF836101023002240467D +:1073700006F0DEFAB0BBBDF86000042801D0062894 +:107380004AD1BDF82410219881423AD10F2093E7C9 +:107390003AE0012835D1BDF83800B0F5205F03D0C0 +:1073A00042F6010188422CD1BAF80600BDF8361029 +:1073B000884201D1012700E0002705B19EB1219844 +:1073C00081421ED118A809AA01940294CDE9032094 +:1073D000072000900D4610230022404606F0A8FA30 +:1073E00000B902E02DE04E460BE0BDF86000022837 +:1073F00001D0102810D1C0B217AA09A90AF04AF981 +:1074000050B9BDF8369086E7052055E705A917A8BD +:10741000221D0AF05EF908B103204DE79DF8140023 +:107420000023001DC2B28DF8142022980092CDE9ED +:1074300001401BA8069906F00BF910B902228AF840 +:107440000420FEF75AFE37E710B50B46401E88B001 +:1074500084B205AA00211846FEF7EEFE00200DF1C9 +:10746000080C06AA05A901908CE8070007200090E7 +:107470000123002221464FF6FF7006F02FF8044644 +:10748000BDF81800012800D0FFDF2046FEF735FECA +:1074900008B010BDF0B5FF4F044687B038790E46EE +:1074A000032804D0042802D0082007B0F0BD04AAA5 +:1074B00003A92046FEF799FE0500F6D160688078A2 +:1074C000C0F3410002280AD19DF80D0010F0380FDA +:1074D00005D020690CF074F808B11020E5E7208988 +:1074E00005AA21698DE807006389BDF8102020688E +:1074F000039906F0ADF810B1FEF7FFFDD5E716B120 +:10750000BDF814003080042038712846CDE7F8B566 +:107510000C0006460BD001464FF6FF7500236A4665 +:10752000284606F087FA20B1FEF7E7FDF8BD1020E7 +:10753000F8BD69462046FEF710FE0028F8D1A07875 +:10754000314600F001032846009A06F09FFAEBE767 +:1075500030B587B0144600220DF1080C05AD01923C +:107560008CE82C00072200920A46014623884FF639 +:10757000FF7005F0B3FFBDF814102180FEF7BDFDCC +:1075800007B030BD70B50D46042108F001FB0400C2 +:1075900000D1FFDF294604F11400BDE8704004F07B +:1075A000C5BF70B50D46042108F0F2FA040000D101 +:1075B000FFDF294604F11400BDE8704004F0D9BF94 +:1075C00070B50D46042108F0E3FA040000D1FFDF96 +:1075D000294604F11400BDE8704004F0F1BF70B515 +:1075E0000546042108F0D4FA040000D1FFDF21464B +:1075F00028462368BDE870400122FEF74BBF70B5F6 +:107600000646042108F0C4FA040000D1FFDF04F1AB +:10761000140004F07BFF401D20F0030511E0011D64 +:1076200000880022431821463046FEF733FF002829 +:107630000BD0607CABB2684382B2A068011D08F039 +:1076400064F9A06841880029E9D170BD70B505468C +:10765000042108F09DFA040000D1FFDF21462846EE +:107660006368BDE870400222FEF714BF70B50E4695 +:10767000054601F09FF9040000D1FFDF01202072D0 +:1076800066726580207820F00F00001D20F0F00069 +:1076900040302070BDE8704001F08FB910B504464D +:1076A000012900D0FFDF2046BDE810400121FEF790 +:1076B000F0BA2DE9F04F97B04FF0000A0C00834666 +:1076C000ADF814A0D04619D0E06830B1A068A8B1D8 +:1076D0000188ADF81410A0F800A05846F9F7A4FEF0 +:1076E000070043F2020961D0387822285CD30421D4 +:1076F000584608F04DFA050005D103E0102017B0F8 +:10770000BDE8F08FFFDF05F1140004F0FFFE401D1F +:1077100020F00306A078012803D0022801D007201A +:10772000EDE7218807AA584606F04FF830BB07A8B6 +:1077300006F057F810BB07A806F053F848B99DF8B3 +:107740002600012805D1BDF82400A0F524510239F6 +:1077500002D04FF45050D2E7E068B0B1CDE902A0BA +:107760000720009005AACDF804A00492A2882188E1 +:10777000BDF81430584605F0B1FE10B1FEF7BDFC5F +:10778000BDE7A168BDF8140008809DF81F00C00681 +:1077900002D543F20140B2E70B9838B1A1780078E6 +:1077A000012905D080071AD40820A8E74846A6E793 +:1077B000C007F9D002208DF83C00A8684FF00009FE +:1077C000A0B1697C4288714391420FD98AB2B3B2A9 +:1077D000011D08F050F88046A0F800A006E0032044 +:1077E0008DF83C00D5F800804FF001099DF820008D +:1077F00010F0380F00D1FFDF9DF820002649C0F3BC +:10780000C200084497F8231010F8010C884201D9EF +:107810000F2074E72088ADF8400014A90095CDE949 +:107820000191434607220FA95846FEF75DFE002846 +:1078300091D19DF8500050B9A078012807D1687CFB +:10784000B3B2704382B2A868011D08F028F8002086 +:1078500055E770B5064615460C460846FEF70CFC83 +:10786000002805D12A4621463046BDE8704075E41F +:1078700070BD13E570B51E4614460D000ED06CB1F8 +:10788000616859B160B10349C988814208D00720B5 +:1078900070BD00004C02002072ED01001020F7E7DF +:1078A0002068FEF7E9FB0028F2D13246214628463F +:1078B000BDE87040FFF747BA70B515460C0006D01A +:1078C00038B1FE490989814203D00720E0E7102042 +:1078D000DEE72068FEF7D0FB0028D9D129462046F4 +:1078E000BDE87040D6E570B5064686B00D46144634 +:1078F00010460BF047FED0BB60680BF06AFEB0BBD1 +:10790000A6F57F40FF3803D03046F9F78DFD80B1F2 +:1079100028466946FEF7E3FC00280CD19DF81010BC +:107920000F2008293CD2DFE801F008060606060A07 +:107930000A0843F2020006B0AAE70320FBE79DF81D +:107940000210012908D1BDF80010B1F5C05FF2D0D6 +:107950006FF4C052D142EED09DF8061001290DD12E +:10796000BDF80410A1F52851062907D200E028E04F +:10797000DFE801F0030304030303DCE79DF80A10CA +:1079800001290ED1BDF80810B1F5245FD3D0A1F5BF +:1079900024510239CFD00129CDD0022901D1CAE723 +:1079A000FFDF606878B9002305AA2946304606F053 +:1079B00041F810B1FEF7A1FBBDE79DF81400800669 +:1079C00001D41020B7E76188224628466368FFF794 +:1079D000BFFDB0E72DE9F043814687B088461446E5 +:1079E00010460BF0CFFD18B1102007B0BDE8F083B2 +:1079F000002306AA4146484606F01CF818B100BF0D +:107A0000FEF77BFBF1E79DF81800C00602D543F2B4 +:107A10000140EAE70025072705A801950097029590 +:107A2000CDE9035062884FF6FF734146484605F0A2 +:107A30007FFF060013D160680BF0A4FD60B9606899 +:107A40000195CDE90250009704952388628841464C +:107A5000484605F06DFF0646BDF81400208030460C +:107A6000CEE739B1954B0A889B899A4202D843F2F6 +:107A7000030070471DE610B586B0904C0423ADF8A6 +:107A80001430638943B1A4898C4201D2914205D953 +:107A900043F2030006B010BD0620FBE7ADF810105E +:107AA000002100910191ADF8003002218DF8021003 +:107AB00005A9029104A90391ADF812206946FFF7C8 +:107AC000F8FDE7E72DE9FC4781460E4608460BF036 +:107AD00033FD88BB4846F9F7A7FC5FEA00080AD0E7 +:107AE00098F80000222829D30421484608F050F8CD +:107AF000070005D103E043F20200BDE8FC87FFDF89 +:107B000007F1140004F019FD05463078012803D070 +:107B1000022804D00720F0E7A8070FD502E015F0EF +:107B20001C0F0BD0B079341DC00709D0E08838B1E4 +:107B3000A0680BF001FD18B11020DEE70820DCE79B +:107B400032782088002628B3A0F201130721112BD8 +:107B500018D20CD2DFE803F00B090D0B1D0B121D20 +:107B6000100B0B1D1D1D1D0B1D00022A11D10846F7 +:107B7000C3E7012AFBD00CE02A0700E0EA06002A4E +:107B8000F5DA06E0A0F5C0721F2A02D97D3A022A72 +:107B9000EDD8C6B200F00EFF50B198F82300CDE941 +:107BA0000006FA89234639464846FEF7E7FCA4E773 +:107BB0001120A2E72DE9F04F8BB01F4615460C4669 +:107BC00083460026F9F730FC28B10078222805D238 +:107BD00008200BB094E543F20200FAE7B80801D0A0 +:107BE0000720F6E7032F00D100274FF6FF79CCB12D +:107BF000022D73D320460BF0ECFC30B904EB0508E2 +:107C0000A8F101000BF0E5FC08B11020E1E7AD1E82 +:107C1000AAB22146484605F0C2FF38F8021C884245 +:107C20005CD1ADB22549B80702D58889401C00E077 +:107C300001201FFA80F8F80701D08F8900E04F4635 +:107C400005AA4146584605F0C0FD4FF0070A4FF01F +:107C50000009ACB3204608E0408810283ED8361D05 +:107C6000304486B2AE4239D2A01902884245F3D3DD +:107C700054E000BF9DF8170002074FD584B304EB12 +:107C80000608361DB8F80230B6B2102B26D89A195D +:107C9000AA4223D8B8F8002091421FD1C00620D5AF +:107CA000CDE900A90DF1080C0AAAA11948468CE8F3 +:107CB0000700B8F800100022584603E04C020020EC +:107CC0002CE00BE005F00AFC10B1FEF716FA80E795 +:107CD000B8F80200BDF82810884202D00B2078E7DF +:107CE00004E0B8F80200304486B206E0C00604D5CD +:107CF0005846FEF775FC002888D19DF81700BDF89E +:107D00001A1020F010008DF81700BDF81700ADF81C +:107D10000000FF235846009A05F0B8FE05A805F0BC +:107D200060FD18B9BDF81A10B942A3D9042158460C +:107D300007F02EFF040000D1FFDFA2895AB1CDE980 +:107D400000A94D46002321465846FEF717FC00289F +:107D5000BDD1A5813DE700203BE72DE9FF4F8BB06A +:107D60001E4617000D464FF0000412D0B00802D096 +:107D700007200FB0C4E4032E00D100265DB10846F1 +:107D80000BF01EFC28B93888691E08440BF018FC5B +:107D900008B11020EDE7C74AB00701D5D18900E04E +:107DA0000121F0074FF6FF7802D0D089401E00E095 +:107DB000404686B206AA0B9805F007FD4FF0000971 +:107DC0004FF0070B0DF1140A39E000BF9DF81B00BE +:107DD000000734D5CDF80490CDF800B0CDF8089068 +:107DE000CDE9039A434600220B9805F0A1FD60BB44 +:107DF00005B3BDF814103A8821442819091D8A4298 +:107E000030D3BDF81E2020F8022BBDF8142020F836 +:107E1000022BCDE900B9CDE90290CDF810A0BDF854 +:107E20001E10BDF8143000220B9805F081FD08B13A +:107E300003209EE7BDF814002044001D84B206A86C +:107E400005F0CFFC20B10A2806D0FEF756F990E7DE +:107E5000BDF81E10B142B9D934B17DB13888A11C2A +:107E6000884203D20C2084E7052082E72246294677 +:107E7000404605F094FE014628190180A41C3C8070 +:107E8000002076E710B504460BF07CFB08B110200B +:107E900010BD8848C0892080002010BDF0B58BB08F +:107EA0000D460646142103A816F0B0FD01208DF8FA +:107EB0000C008DF8100000208DF81100ADF8145062 +:107EC0003046F9F7B1FA48B10078222812D30421DC +:107ED000304607F05DFE040005D103E043F20200E6 +:107EE0000BB0F0BDFFDF04F11400074604F025FBE2 +:107EF000800601D40820F3E7207C022140F0010035 +:107F0000207409A80094CDE90110072203A9304686 +:107F10006368FEF7E9FA20B1217C21F001012174A8 +:107F2000DEE729463046FDF7A5FE08A9384604F0ED +:107F3000F3FA00B1FFDFBDF82040172C01D2172063 +:107F400000E02046A84201D92C4602E0172C00D2BE +:107F5000172421463046FFF724FB21463046FDF723 +:107F6000ABFB0020BCE7F8B51C4615460E46069F45 +:107F700007F040FF2346FF1DBCB231462A4600945D +:107F800007F02BFBF8BD70B50C4605460E212046C8 +:107F900016F01AFD002020802DB1012D01D0FFDF49 +:107FA00076E4062000E00520A07171E410B5488059 +:107FB0000878134620F00F00001D20F0F0008030FC +:107FC0000C4608701422194604F1080016F0C2FC91 +:107FD00000F0F3FC3748046010BD2DE9F047DFF8EE +:107FE000D890491D064621F0030117460C46D9F8E2 +:107FF000000007F008FC050000D1FFDF4FF000088B +:108000003560A5F800802146D9F8000007F0FBFB99 +:10801000050000D1FFDF7560A5F800807FB104FB8B +:1080200007F1091D0BD0D9F8000007F0ECFB0400A4 +:1080300000D1FFDFB460C4F80080BDE8F087C6F867 +:108040000880FAE72DE9F0411746491D21F00302A7 +:10805000194D064601681446286807F0FFFB2246C2 +:108060007168286807F0FAFB3FB104FB07F2121DA4 +:1080700003D0B168286807F0F1FB042007F030FD59 +:108080000446042007F034FD201A012804D1286892 +:10809000BDE8F04107F0ACBBBDE8F08110B50C467F +:1080A00005F05FFB00B1FFDF2046BDE81040FEF7A2 +:1080B00024B800004C020020140000204FF0E02201 +:1080C0004FF400410020C2F880111D4908701D497D +:1080D00090020860704770B5194D04462878A04298 +:1080E00002D00CB100B1FFDF2878A0420DD01649B4 +:1080F000144A2C700020CCB1134E144B1436151FAB +:10810000012C03D0022C08D0FFDF70BD08600220D4 +:10811000086033604FF0407005E00860032008609D +:1081200033604FF400001060286070BD0860086084 +:108130004FF06070106070BD00B5FFDF00BD000043 +:108140001800002008F5014000F500405C02002006 +:1081500038B50C468288817B19B14189914200D99A +:108160000A462280C188121D90B26A4606F054FE6B +:10817000BDF80000032800D30320C1B2208800F01E +:1081800095FF38BD38B50C468288817B19B10189CD +:10819000914200D90A462280C188121D90B26A46D7 +:1081A00006F03AFEBDF80000022800D30220C1B25A +:1081B000208800F07BFF401CC0B238BD2DE9FF5F76 +:1081C0000C46FB4981462C22D1E90201CDE902018E +:1081D00009F1030020F00301C91C21F00301009103 +:1081E0006846114607F0F1FAF24E002C02D1F2492E +:1081F000009A8A60009901440091357E05F10105DD +:1082000004D1E8B209F0ECF900B1FFDF00984FF0BB +:10821000000B00EB0510C01C20F0030100915CB9BD +:10822000307A727A81F800B01044C2B2B08B80B25A +:1082300005F01FF900B1FFDF0098F16908440090D4 +:108240002146684600F0FCFE0098C01C20F00300A8 +:108250000090737AB27A317A04B1002007F0ABFB58 +:108260000099084400902146684600F02AFF002744 +:108270003D46B24696F801800CE0284600F0C3FE69 +:10828000064681788088FDF7AEFA71786D1C00FB98 +:108290000177EDB24545F0D10098C01C20F00300F5 +:1082A000009004B100203946FDF7A8FA0099002794 +:1082B000084400903D469AF801800CE0284600F002 +:1082C000A2FE0646C1788088FEF715FC71786D1C09 +:1082D00000FB0177EDB24545F0D10098C01C20F0BD +:1082E0000300009004B100203946FEF70DFC009910 +:1082F0004FF000080844009045469AF801700EE0DF +:10830000284600F080FE0646807B30B106F108006A +:1083100001F0A7FE727800FB02886D1CEDB2BD4231 +:10832000EED10098C01C20F00300009004B10020A2 +:10833000414601F09AFE00990844C01D20F0070252 +:108340000092ECBB9D49002003F055FA05F0F2FBCA +:1083500099484178C06805F085FD97481030C0788D +:108360008DF8040010B1012804D005E001208DF83B +:10837000040001E08DF804B001A805F0B5FEF9F79E +:1083800072FF8C4802AA00210C30FAF755FE00B1AA +:10839000FFDF9AF81900FEF720FF00B1FFDF8548E4 +:1083A0004FF4F671443016F031FB8248042144301A +:1083B00080F8E91180F8EA11062180F8EB1100E05D +:1083C00001E003210171009904B0A1EB0900BDE8AF +:1083D000F09F70B5774C06464434207804EB401586 +:1083E000E078083590B9A01990F8E80100280ED07F +:1083F000A0780F2800D3FFDF2021284616F006FBC7 +:10840000687866F3020068700120E070284670BD4D +:108410002DE9F04105460C460027007805219046DD +:108420003E46B1EB101F00D0FFDF287A50B1012883 +:108430000ED0FFDFA8F800600CB127806680002016 +:10844000BDE8F0810127092674B16888A08008E0A2 +:108450000227142644B16888A0802869E060A88AB1 +:108460002082287B2072E5E7A8F80060E7E710B5D6 +:10847000514C6068C11D21F00701814200D0FFDF2F +:108480004C480121002201704270017203234372A3 +:1084900081720273052282821F22C282417348A226 +:1084A00002610A22027641764FF4B061C1616168CF +:1084B000416010BD30B5404C1568636810339D4273 +:1084C00002D20420136030BD3A4B5D785A6802EB4B +:1084D0000512107051700320D08017209080012069 +:1084E000D0709070002090735878401C587060686D +:1084F00010306060002030BD70B506462D48002465 +:10850000457807E0204600F07EFD0178B14204D0B6 +:10851000641CE4B2AC42F5D1002070BDF7B507464B +:1085200008780C4610B3FFF7E7FF0546A7F12006D1 +:10853000202F06D0052E19D2DFE806F00F2B2B15C1 +:108540001A0000F06BFD0DB1697800E00021401ABF +:10855000A17880B20844FF2808D8A07830B1A0885C +:10856000022831D202E0608817282DD20720FEBDF4 +:10857000207AE0B161881729F8D3A1881729F5D3AB +:10858000A1790029F2D0E1790029EFD0402804D95F +:10859000ECE7242F18D1207A48B161884FF6FB70A0 +:1085A000814202D8A18881420ED90420FEBD0BE091 +:1085B00078ED0100680300201C000020000000206E +:1085C0006E5246357800000065B9207802AA012174 +:1085D000FFF770FF0028E9D12078FFF78DFF050035 +:1085E00000D1FFDF052E18D2DFE806F0030B0E08DE +:1085F0001100A0786870A088E8800FE06088A880EB +:108600000CE0A078A87009E0A078E87006E054F8C3 +:10861000020FA8606068E86000E0FFDF0020C5E7A7 +:108620001E2829D00EDC0C2822D008DC092825D2EF +:10863000DFE800F013241524241C1C181A0012284B +:108640001CD119E0302817D018DDA0F13A0003281A +:1086500014D2DFE800F00F1309000020704743F246 +:1086600002007047042070470D2070470F207047AC +:10867000082070471120704707207047032070477B +:1086800010B5007800F0010006F0BDFBBDE8104019 +:10869000C6E70EB5017801F001018DF800104178B0 +:1086A00001F001018DF801100178C1F340018DF84E +:1086B00002104178C1F340018DF803100178890858 +:1086C0008DF80410417889088DF8051081788DF8AF +:1086D0000610C1788DF8071000798DF808006846FB +:1086E00005F021FDFFF79CFF0EBD2DE9F84FDFF8E7 +:1086F000F883FE4C00261FE0012000F025FD01203C +:10870000FFF767FE05462C214746D8F8080007F01A +:108710007AF8686000B9FFDF686805F0D6FBA8B199 +:108720002846F9F7E3F8284600F014FD20B92C227A +:108730006968B86807F092F894F9E9010428DBDA6F +:10874000022007F0CDF907460025A6E02C22696833 +:10875000D8F8080007F082F8F2E7B8F802104046AF +:10876000491C89B2A8F80210B94201D30021418006 +:108770000221B8F8020007F00BFA002865D0B8F81B +:108780000200694606F0B2FAFFF74AFF00B1FFDFC8 +:108790009DF8000078B1B8F8020007F03DFB5FEAF1 +:1087A000000900D1FFDF484606F0ABFD18B1B8F86C +:1087B000020002F0FDF8B8F8020007F01BFB5FEAC8 +:1087C000000900D1FFDF484606F093FDE8BB032116 +:1087D000B8F8020007F0DCF95FEA000B48D1FFDFD0 +:1087E00046E000BFDBF8100010B10078FF2849D048 +:1087F000022000F0A9FC0220FFF7EBFD824648466C +:1088000006F083FECAF8040000B9FFDFDAF80400BE +:1088100006F04BFF002100900170B8F8021050469E +:10882000AAF8021001F0CAFD484606F040FF00B960 +:10883000FFDF504600F08EFC18B99AF801000007DF +:1088400004D50099CBF8101012E024E0DBF81000FA +:1088500038B10178491C11F0FF01017008D1FFDF28 +:1088600006E000221146484600F0CBFB00B9FFDFCE +:1088700094F9EA01022805DBB8F8020001F063FD73 +:108880000028AFD194F9E901042804DB484606F03A +:1088900072FF00B101266D1CEDB2BD4204D294F905 +:1088A000EA010228BFF659AF002E7FF423AFBDE8DE +:1088B000F84F032000F048BC10B58B4CE06008680E +:1088C0002061AFF2D91002F0FEFF607010BD874842 +:1088D0000021443801708448017085494160704727 +:1088E00070B505464FF080500C46D0F8A410491CD6 +:1088F00005D1D0F8A810C9430904090C0BD050F8D1 +:10890000A01F01F001012970416821608068A080EA +:10891000287830B970BD062120460AF0E8FA012017 +:108920002870607940F0C000607170BD70B54FF084 +:1089300080540D46D4F88010491C0BD1D4F8841013 +:10894000491C07D1D4F88810491C03D1D4F88C10E5 +:10895000491C0CD0D4F880100160D4F88410416018 +:10896000D4F888108160D4F88C10C16002E0102126 +:108970000AF0BDFAD4F89000401C0BD1D4F8940052 +:10898000401C07D1D4F89800401C03D1D4F89C00B7 +:10899000401C09D054F8900F286060686860A06897 +:1089A000A860E068E86070BD2846BDE8704010210E +:1089B0000AF09DBA4D4800790BE570B54B4CE07854 +:1089C00030B3207804EB4010407A00F007002044D8 +:1089D00090F9E801002800DCFFDF2078002504EB97 +:1089E0004010407A00F00700011991F8E801401E9C +:1089F00081F8E8012078401CC0B220700F2800D117 +:108A00002570A078401CA0700AF0ACF9E57070BD2C +:108A1000FFDF70BD3EB50546032107F0B9F80446F7 +:108A2000284607F0E7F9054604B9FFDF206918B1C9 +:108A30000078FF2800D1FFDF01AA6946284600F030 +:108A4000E0FA60B9FFDF0AE0002202A9284600F040 +:108A5000D8FA00B9FFDF9DF8080000B1FFDF9DF8EC +:108A60000000411E8DF80010EED220690199884265 +:108A700001D1002020613EBD70B50546A0F57F40C4 +:108A80000C46FF3800D1FFDF012C01D0FFDF70BDA5 +:108A9000FFF790FF040000D1FFDF207820F00F00E7 +:108AA000401D20F0F00050302070658000202072C2 +:108AB00001202073BDE870407FE72DE9F0411646A4 +:108AC0000D460746FFF776FF040000D1FFDF207850 +:108AD00020F00F00401D20F0F00050302070678023 +:108AE00001202072286805E01C000020AC03002053 +:108AF000281200202061A888A0822673BDE8F041DA +:108B00005BE77FB5FFF7F8FC040000D1FFDF02A9A7 +:108B10002046FFF71DFB054603A92046FFF732FB61 +:108B20008DF800508DF80100BDF80800001DADF86B +:108B30000200BDF80C00001DADF80400E088ADF89F +:108B40000600684606F049F9002800D0FFDF7FBD27 +:108B50002DE9F047DFF8F8930546002799F8000063 +:108B600010B10820BDE8F08728460AF00BFD08B1D7 +:108B70001020F7E7F74C207808B9FFF778FC607A07 +:108B8000217A0844C6B200F049FAB04207D2301A3E +:108B9000C1B22A460020FFF78DFC0700E2D1D9F8C8 +:108BA00004004E46C01C20F00300C9F8040000F089 +:108BB00044FB716800EB010801214046FFF7FEFA13 +:108BC000064629684044884202D8B6F5803F15D34E +:108BD00028600020FFF790FC05000DD005F1130080 +:108BE000D9F8041020F003004E46884200D0FFDF81 +:108BF0006078401E607075600420B3E70021404635 +:108C0000FFF7DCFA0446A64200D0FFDF04EB0801C0 +:108C1000C9F8041029604FF6FF71A9F8021001216C +:108C200089F8001038469DE72DE9F0410446C84810 +:108C300017460D46007810B10820BDE8F0810846BF +:108C40000AF07AFC08B11020F7E7C24E307808B974 +:108C5000FFF70DFC601E1E2807D8012C3FD1287895 +:108C6000FE283CD830760020E7E7A4F120001F283A +:108C700005D8E0B23A462946BDE8F0414EE4A4F1F9 +:108C800040004FF000081F2821D8402C02D0412C72 +:108C900025D117E0687829780C18A97881421ED868 +:108CA000FF2C08D808F080FE07460AF014F8381A9E +:108CB000801EA04201DA1220BFE728883081A87800 +:108CC000B07224E02846BDE8F04100F06BBAA4F190 +:108CD000A0001F2803D8A02C03D0A12C06D0072069 +:108CE000ABE7287800F00100707610E029680920D1 +:108CF000F829A2D38A07A0D1727B02F00302012ACD +:108D000004D1F28AD73293B28B4296D8F1614046B1 +:108D100093E72DE9F04781460E4608460AF032FCFB +:108D200048B948460AF04CFC28B909F1030020F084 +:108D30000301494501D0102014E786484FF0000A8E +:108D40004430817869B14178804600EB41140834A1 +:108D5000378832460021204600F00AFA050004D088 +:108D600027E0A6F800A00520FCE6B9F1000F24D00A +:108D70003088B84201D90C251FE0607800F0070563 +:108D8000284600F0E1F908EB0507324697F8E801BC +:108D90004946401C87F8E801204607F5F47700F0C3 +:108DA000E7F905463878401E3870032000F0CCF90A +:108DB0002DB10C2D01D0A6F800A02846D2E660788F +:108DC000634E00F00701012923D002290CD00329AA +:108DD00033D0FFDF98F801104046491CC9B288F82B +:108DE00001100F2934D035E0616821B1000702D4A9 +:108DF0006088FFF70FFE98F8EA014746012802D184 +:108E0000707802F07FFD97F9EA010428E2DBFFDFCA +:108E1000E0E7616819B12C22B06806F01FFD98F8F0 +:108E2000E9014746032802D1707802F06BFD97F9FB +:108E3000E9010428CEDBFFDFCCE7C00602D560885D +:108E4000FFF7E8FD98F9EB010628C3DBFFDFC1E778 +:108E500080F801A08178491E8170617801F00701D6 +:108E600001EB080090F8E811491C80F8E811A4E72C +:108E700070B50D4604460AF05FFB18B928460AF0A3 +:108E800081FB08B1102070BD29462046BDE8704026 +:108E900008F0DDBB70B5044615460E4608460AF0DC +:108EA0004BFB18B928460AF06DFB08B1102070BDC5 +:108EB000022C03D0102C01D0092070BD2A46314667 +:108EC000204608F0E7FB0028F7D0052070BD70B5FC +:108ED00014460D4606460AF02FFB38B928460AF01C +:108EE00051FB18B920460AF06BFB08B1102070BD89 +:108EF00022462946304608F0ECFB0028F7D0072030 +:108F000070BD3EB504460AF03DFB08B110203EBDE1 +:108F1000684605F097F8FFF783FB0028F7D19DF826 +:108F200006002070BDF808006080BDF80A00A0802F +:108F300000203EBD70B505460C4608460AF040FBD1 +:108F400020B95CB120680AF01DFB28B1102070BD6B +:108F50001C00002068030020A08828B12146284674 +:108F6000BDE87040FDF746BE0920F0E770B5044645 +:108F70000D4608460AF0E0FA30B9601E1E2814D8E3 +:108F800028460AF0D9FA08B11020E0E7022C01D9EE +:108F90000720DCE704B9FFDFDC4800EB840050F871 +:108FA000041C2846BDE870400847A4F120001F2893 +:108FB000EED829462046BDE87040F9F7C8B870B52C +:108FC00004460D4608460AF0DDFA30B9601E1E2838 +:108FD0000DD828460AF0B0FA08B11020B7E7012CE6 +:108FE00001D0022C01D10620B1E70720AFE7A4F1A0 +:108FF00020001F28F9D829462046BDE87040F9F71F +:1090000005B906F045B930B5C14D04466878A042AF +:1090100000D8FFDF686800EB041030BD70B5BC48B5 +:1090200000252C46467807E02046FFF7ECFF407805 +:10903000641C2844C5B2E4B2B442F5D1284686E7A0 +:109040002DE9F0410C46064600F02FF9074630683E +:10905000C01C20F0030232601CBBAD483B46092116 +:1090600020300AF043F9002408E0092C11D2DFE88F +:1090700004F005070509090B05050700A54804E0EC +:10908000A54802E0A54800E0A5480AF04FF90546CA +:1090900000E0FFDFA54200D0FFDF641CE4B2092C32 +:1090A000E3D3306800EB07103060C6E5021D514382 +:1090B000452900D245210844C01CB0FBF2F0C0B2E3 +:1090C00070472DE9FC5F064691484FF000088B463B +:1090D0004746444690F8019022E02046FFF793FF70 +:1090E000050000D1FFDF687869463844C7B22846DA +:1090F000FFF72EF8824601A92846FFF743F80346FA +:10910000BDF804005246001D81B2BDF80000001DEC +:1091100080B206F0BBFD6A78641C00FB0288E4B2F2 +:109120004C45DAD13068C01C20F003003060BBF140 +:10913000000F00D000204246394606F0B5FD3168E8 +:1091400008443060BDE8FC9F71494431087100203B +:10915000C87070476E494431CA782AB10A7801EB69 +:1091600042110831814201D0012070470020704730 +:109170002DE9F04106460078154600F00F04002066 +:109180001080601E0F46052800D3FFDF5F482A4687 +:10919000103000EB8400394650F8043C3046BDE8FE +:1091A000F041184738B50446407800F00300012824 +:1091B00003D002280BD0072038BD606858B10AF0F0 +:1091C00008FAD0B960680AF0FBF920B915E06068C8 +:1091D0000AF0B2F988B969462046FBF771F9002810 +:1091E000EAD1607800F00300022808D19DF8000061 +:1091F00028B160680AF0E4F908B1102038BD61892F +:10920000F8290DD8208988420AD8607800F0030236 +:109210003F48012A06D1D731C26989B28A4201D2B8 +:10922000092038BD94E80E0000F10C0585E80E0019 +:109230000AB900218182002038BD2DE9F05F4FF08E +:1092400000093348C8464F464E464D46CB464C462D +:1092500090F801A011E02046FFF7D5FE4178827812 +:1092600009F10109884412FB0177C27812FB0166FB +:10927000807B10FB0155641CE4B25445EBD10BEB31 +:10928000890000EBC80000EB870000EB860000EBD4 +:10929000C5011F48027A01EBC201427A807A01EBD4 +:1092A000C20101EBC000BDE8F09F2DE9F047DFF8F7 +:1092B00060900026344699F8080099F8092099F83A +:1092C00001700244D5B299F80A20104400F0FF085A +:1092D00008E02046FFF797FE817B407811FB00668F +:1092E000641CE4B2BC42F4D199F8080099F8091062 +:1092F000401C284428444044401C01B1012108443A +:109300008419FF2C00D9FFDFE0B22BE478ED0100D7 +:1093100068030020E11F000037A10000B1B9000080 +:10932000D31301002DE9F04107461446884608464C +:1093300001F020FD064608EB88001C22796802EB4C +:10934000C0000D18688C58B14146384601F01AFD2E +:10935000014678680078C200082305F120000CE07F +:10936000E88CA8B14146384601F013FD0146786803 +:1093700008234078C20005F1240006F0C6FA38B18F +:10938000062121726681D0E90010C4E9031009E0CA +:10939000287809280BD00520207266816868E06073 +:1093A000002028702046BDE8F04101F0D9BC07201C +:1093B00020726681F4E72DE9F04116460D46074616 +:1093C000406801EB85011C2202EBC10144182046D4 +:1093D00001F001FD40B10021708865F30F2160F3B9 +:1093E0001F4108200AF05CF8092020703246294607 +:1093F0003846BDE8F04195E72DE9F0410E460746B5 +:1094000000241C21F07816E004EB8403726801EB61 +:10941000C303D25C6AB1FFF7CDFA050000D1FFDFCC +:109420006F802A4621463046FFF7C5FF0120BDE880 +:10943000F081641CE4B2A042E6D80020F7E770B5E2 +:10944000064600241C21C0780AE000BF04EB840318 +:10945000726801EBC303D5182A782AB1641CE4B200 +:10946000A042F3D8402070BD2821284615F0ACFA60 +:10947000706880892881204670BD70B50346002041 +:109480001C25DC780DE000BF00EB80065A6805EB78 +:10949000C6063244167816B1128A8A4204D0401C9D +:1094A000C0B28442F0D8402070BDF0B50446002020 +:1094B0001C26E5780EE000BF00EB8007636806EB32 +:1094C000C7073B441F788F4202D15B78934204D098 +:1094D000401CC0B28542EFD84020F0BD0078032880 +:1094E00001D000207047012070470078022801D089 +:1094F00000207047012070470078072801D0002025 +:109500007047012070472DE9F041064688461078E3 +:10951000F1781546884200D3FFDF2C781C27641CA5 +:10952000F078E4B2A04201D8201AC4B204EB84015E +:10953000706807EBC1010844017821B141468847B2 +:1095400008B12C7073E72878A042E8D14020287039 +:109550006DE770B514460B880122A240134207D173 +:1095600013430B8001230A22011D06F098F90470B1 +:1095700070BD2DE9FF4F81B00878DDE90E7B9A467A +:1095800091460E4640072CD4019806F045FC040095 +:1095900000D1FFDF07F1040820461FFA88F105F02B +:1095A00084FD050000D1FFDF204629466A4605F00C +:1095B000CEFF0098A0F80370A0F805A0284606F09A +:1095C00074F8017869F306016BF3C7110170204646 +:1095D0001FFA88F105F0ACFD00B9FFDF019804F037 +:1095E000AEFB06EB0900017F491C017705B0BDE821 +:1095F000F08F2DE9F84F0E469A4691460746032113 +:1096000006F0C6FA0446008DDFF8B485002518B1CF +:1096100098F80000B0421ED1384606F0FDFB070066 +:1096200000D1FFDF09F10401384689B205F03DFDA4 +:10963000050010D0384629466A4605F088FF009894 +:1096400000210A460180817004F030FC0098C01DA2 +:10965000CAF8000021E098F80000B04216D104F1E9 +:10966000260734F8341F012000FA06F911EA090F21 +:1096700000D0FFDF2088012340EA090020800A2271 +:10968000391D384606F026F9067006E0324604F128 +:10969000340104F12600FFF75CFF0A2188F800106E +:1096A0002846BDE8F88FFEB514460D46064602ABC7 +:1096B0000C220621FFF79DFF002826D0029968782A +:1096C00012220A70801C487008224A80A8702088E4 +:1096D00088806088C880A0880881E088488100244C +:1096E0000C20CDE900040523062229463046FFF769 +:1096F00040FF214666F31F41F0230022012009F0BC +:1097000025FE6878801C68700120FEBDFEB51446F9 +:109710000D460622064602AB1146FFF76AFF0028F7 +:1097200012D0029B132000211870A87858700220D4 +:1097300058809C800620CDE9000102460523294679 +:109740003046FFF716FF0120FEBD2DE9FE430C4613 +:10975000804644E002AB0E2207214046FFF749FF56 +:10976000002841D060681C2267788678BF1C06EB11 +:10977000860102EBC101451802981421017047705F +:109780000A214180698A0181E98A4181A988818011 +:10979000A9898181304601F0EDFA0299052307225B +:1097A000C8806F700420287000250E20CDE90005C8 +:1097B00021464046FFF7DDFE294666F30F2168F398 +:1097C0001F41F0230022082009F0C0FD6078FD4908 +:1097D000801C607062682046921CFFF794FE6068EF +:1097E00080784028B6D10120BDE8FE83FEB50D4645 +:1097F000064638E002AB0E2207213046FFF7F9FE9D +:10980000002835D068681C23C17801EB810203EB86 +:10981000C2028418029815220270627842700A22ED +:109820004280A2894281A2888281084601F0A2FA80 +:10983000014602988180618AC180E18A0181A08805 +:10984000B8B10020207000210E20CDE900010523D1 +:10985000072229463046FFF78CFE6A68DA49284617 +:10986000D21CFFF750FE6868C0784028C2D10120A2 +:10987000FEBD0620E6E72DE9FE430C46814644E0A6 +:10988000204601F092FAD0B302AB082207214846E5 +:10989000FFF7AFFE0028A7D060681C226578067924 +:1098A000AD1C06EB860102EBC10147180298B7F820 +:1098B000108006210170457004214180304601F07E +:1098C00059FA0146029805230722C180A0F80480B6 +:1098D0007D70082038700025CDE9000521464846F6 +:1098E000FFF747FE294666F30F2169F31F41F02376 +:1098F0000022082009F02AFD6078801C60706268F0 +:10990000B2492046121DFFF7FEFD6068017940292B +:10991000B6D1012068E72DE9F34F83B00E4680E011 +:10992000304601F042FA002875D071681C2091F889 +:10993000068008EB880200EBC2000C184146304656 +:1099400001F027FA0146A078C30070684078C20091 +:1099500004F1240005F0F5FF07468088E18B401AEA +:1099600080B2002581B3AA46218B814200D80846E7 +:109970008146024602AB07210398FFF73AFE010039 +:1099800028D0BAF1000F03D0029AB88802251080BF +:109990008B46E28B3968A9EB05001FFA80FA0A446E +:1099A0000398009206F038FAED1D009A5946534686 +:1099B000009505F046FEE08B504480B2E083B98804 +:1099C000884209D1012508E0FFE7801C4FF0010A19 +:1099D00080B2C9E7002009E60025CDE90095238A79 +:1099E000072231460398FFF7C4FDE089401EE0815D +:1099F0008DB1A078401CA0707068F178427811FB9E +:109A000002F1CAB2816901230E3005F048FF80F8E7 +:109A100000800020E08372686D493046921DFFF798 +:109A200072FD7068817940297FF47AAF0120DDE50D +:109A300070B5064648680D4614468179402910D114 +:109A400004EB84011C2202EBC101084401F0E4F99B +:109A5000002806D06868294684713046BDE8704009 +:109A600059E770BDFEB50C460746002645E0204686 +:109A700001F09BF9D8B360681C22417901EB8101A8 +:109A800002EBC1014518688900B9FFDF02AB08226B +:109A900007213846FFF7ADFD002833D002996078E2 +:109AA00016220A70801C4870042048806068407943 +:109AB00001F060F901460298052307228180698937 +:109AC000C1800820CDE9000621463846FFF751FD48 +:109AD0006078801C6070A88969890844B0F5803F6F +:109AE00000D3FFDFA88969890844A8816E81626874 +:109AF00038492046521DFFF706FD6068417940292C +:109B0000B5D10120FEBD30B5438C458BC3F3C704EE +:109B1000002345B1838B641EED1AC38A6D1E1D445C +:109B200095FBF3F3E4B22CB1008918B1A04200D840 +:109B3000204603444FF6FF70834200D30346138050 +:109B40000C7030BD2DE9FC41074616460D464868AD +:109B500002EB86011C2202EBC10144186A4601A9EE +:109B60002046FFF7D0FFA089618901448AB2BDF881 +:109B70000010914212D0081A00D500206081686858 +:109B8000407940280AD1204601F03CF9002805D050 +:109B90006868294646713846FFF764FFBDE8FC81D6 +:109BA0002DE9FE4F8946804615465088032105F071 +:109BB000EFFF8346B8F8020040280DD240200CE0A9 +:109BC00030000020DD940000EB940000F9940000C8 +:109BD00019AE000005AE0000403880B28246014652 +:109BE000584601F0E2F800287ED00AEB8A001C22D9 +:109BF000DBF8041002EBC0000C18204601F0EBF873 +:109C0000002877D1B8F80000E18A88423CD8A189C1 +:109C1000D1B348456ED100265146584601F0B2F8FE +:109C2000218C0F18608B48B9B9F1020F62D3B8F8D4 +:109C300004006083618A884226D80226A9EB0600C8 +:109C40001FFA80F9B888A28B801A002814DD4946D3 +:109C5000814500DA084683B26888696802913968EC +:109C60000A44CDE9003206F0C5F8DDE90121F61D10 +:109C7000009B009605F0B1FCA18B01EB090080B2BE +:109C8000A083618B884207D9688803B05246594641 +:109C9000BDE8F04F01F0DDB81FD14FF00900287288 +:109CA000B8F802006881D7E90001C5E90401608BBA +:109CB000A881284601F054F85146584601F062F850 +:109CC0000146DBF8040008230078C20004F12000FC +:109CD00005F01BFE0020A0836083A0890AF0FF022C +:109CE000401EA081688800E004E003B05946BDE84A +:109CF000F04F27E7BDE8FE8F2DE9F04106461546F7 +:109D00000F461C46184609F017FC18B9206809F0E0 +:109D100039FC08B1102015E47168688C0978B0EB43 +:109D2000C10F01D313200DE43946304601F02AF863 +:109D30000146706808230078C20005F1200005F094 +:109D4000AEFDD4E90012C0E900120020E3E710B52F +:109D50000446032105F01CFF0146007800F00300D3 +:109D6000022805D02046BDE8104001F114029AE413 +:109D70008A8A2046BDE81040C8E470B50446032135 +:109D800005F006FF054601462046FFF774FD002852 +:109D900016D029462046FFF765FE002810D0294638 +:109DA0002046FFF723FD00280AD029462046FFF76A +:109DB000CCFC002804D029462046BDE87040AAE526 +:109DC00070BD2DE9F0410C4680461EE0E1784278F6 +:109DD00011FB02F1CAB2816901230E3005F095FD35 +:109DE000077860681C22C179491EC17107EB8701A1 +:109DF000606802EBC10146183946204600F0D5FFE5 +:109E000018B1304600F0E0FF20B16068C179002948 +:109E1000DCD180E7FEF7CEFD050000D1FFDF0A2090 +:109E20002872384600F0A6FF68813946204600F0C7 +:109E3000B0FF0146606808234078C20006F12400A4 +:109E400005F063FDD0E90010C5E90310A5F8028014 +:109E5000284600F085FFB07800B9FFDFB078401EDB +:109E6000B07058E770B50C460546032105F090FE2A +:109E700001464068C2792244C2712846BDE870405C +:109E80009FE72DE9FE4F8246507814460F464FF06B +:109E9000000800284FD0012807D0022822D0FFDF79 +:109EA0002068B8606068F86024E702AB0E220821E1 +:109EB0005046FFF79EFB0028F2D00298152105239B +:109EC0000170217841700A214180C0F80480C0F8F7 +:109ED0000880A0F80C80628882810E20CDE90008FD +:109EE000082221E0A678304600F044FF054606EB44 +:109EF00086012C22786802EBC1010822465A02AB87 +:109F000011465046FFF775FB0028C9D0029807217B +:109F10000170217841700421418008218580C6802C +:109F2000CDE9001805230A4639465046FFF721FBC4 +:109F300087F80880DEE6A678022516B1022E13D037 +:109F4000FFDF2A1D914602AB08215046FFF751FB67 +:109F50000028A5D002980121022E017021784170BD +:109F60004580868002D005E00625EAE7A188C18009 +:109F7000E1880181CDE90098052308223946504641 +:109F8000D4E710B50446032105F002FE014600F1B6 +:109F900008022046BDE8104073E72DE9F05F0C464B +:109FA00001281DD0957992F80480567905EB85013A +:109FB0001F2202EBC10121F0030B08EB060111FB8C +:109FC00005F14FF6FF7202EAC10909F1030115FB21 +:109FD0000611F94F21F0031A40B101283DD124E0C8 +:109FE0006168E57891F800804E78DFE75946786837 +:109FF00005F009FC606000B9FFDF5946606814F0A5 +:10A0000005FDE5705146786805F0FDFB6168486123 +:10A0100000B9FFDF6068426902EB09018161606895 +:10A0200080F800806068467017E0606852464169B9 +:10A03000786805F013FC5A466168786805F00EFCF4 +:10A04000032005F04DFD0446032005F051FD201AC4 +:10A05000012802D1786805F0CBFB0BEB0A00BDE8C4 +:10A06000F09F02460021022097E773B5D24D0A20E7 +:10A070002870009848B100244FEA0D0005F0A5FBB8 +:10A08000002C01D1009969607CBD01240020F5E716 +:10A0900070B50C4615463821204614F0B7FC012651 +:10A0A00066700A2104F11C0014F0B0FC05B9FFDF52 +:10A0B000297A207861F301002070A879002817D050 +:10A0C0002A4621460020FFF768FF6168402088701B +:10A0D0006168C870616808716168487161688871F9 +:10A0E000616828880881616868884881606886811D +:10A0F00070BDC878002802D0002201204DE77047CB +:10A1000070B50546002165F31F41012009F0C8F92B +:10A110000321284605F03CFD040000D1FFDF214665 +:10A120002846FFF769F9002804D0207840F0100095 +:10A130002070012070BD2DE9FF4180460E460F0CB6 +:10A14000FEF738FC050007D06F800321384605F084 +:10A150001FFD040008D106E004B03846BDE8F04118 +:10A160001321F8F711BCFFDFB8F1010F05D0B8F1EA +:10A17000080F18D0FFDFBDE8FF8120782A4620F0C5 +:10A18000080020700020ADF8020002208DF80000C9 +:10A190004FF6FF70ADF80400ADF80600694638468A +:10A1A000F7F781FFE7E7C6F3072101EB81021C23E4 +:10A1B000606803EBC202805C042803D008280AD040 +:10A1C000FFDFD8E7012000904FF440432A462046A5 +:10A1D00000F008FECFE704B02A462046BDE8F04173 +:10A1E000FFF7E9B82DE9F05F0027B0F80A90904634 +:10A1F0000C4605463E46B9F1400F01D2402001E031 +:10A20000A9F140001FFA80FA287AC01E08286BD2F4 +:10A21000DFE800F00D04192058363C47722710265D +:10A22000002C6CD0D5E90301C4E902015CE0702781 +:10A230001226002C63D00A2205F10C0104F108005B +:10A2400014F088FB50E071270C26002C57D0E868EA +:10A25000A06049E0742710269CB3D5E90301C4E946 +:10A2600002016888032105F093FC8346FEF7A2FBF8 +:10A2700002466888508051465846FFF753F833E04D +:10A2800075270A26ECB1A88920812DE076271426AF +:10A29000BCB105F10C0004F1080307C883E807000E +:10A2A00022E07727102664B1D5E90301C4E9020151 +:10A2B0006888032105F06CFC01466888FFF781FD82 +:10A2C00012E01CE073270826CCB16888032105F052 +:10A2D0005FFC01460078C00606D56888FFF78CF859 +:10A2E00010B96888F7F7E6FAA8F800602CB1278063 +:10A2F000A4F8069066806888A0800020AFE6A8F8E1 +:10A300000060FAE72DE9FC410C461E4617468046E0 +:10A31000032105F03DFC05460A2C0AD2DFE804F0D3 +:10A3200005050505050509090907042303E00623BA +:10A3300001E0FFDF0023CDE90076224629464046B2 +:10A34000FFF717F92AE438B50546A0F57F40FF3836 +:10A3500030D0284605F04EFD040000D1FFDF204636 +:10A3600005F0D3F8002815D001466A46204605F0CE +:10A37000EEF800980321B0F80540284605F008FCE7 +:10A380000546052C03D0402C05D2402404E0007A79 +:10A3900080B1002038BD403CA4B2214600F005FD4C +:10A3A00040B1686804EB84013E2202EBC101405ACF +:10A3B0000028EFD0012038BD300000202DE9F04FFB +:10A3C000044689B0408805F015FD050000D1FFDF87 +:10A3D00006AA2846616800F0C1FC069D001F81B2F4 +:10A3E00035F8032F6B888A4205D1042B0AD0052B40 +:10A3F0001DD0062B15D022462846FFF7D1FB09B009 +:10A40000BDE8F08F16462D1D224629463046FBF743 +:10A410001BFC0828F3D1224629463046FCF731FCC4 +:10A42000EDE76088291D6368F9F7B8FCE7E7174690 +:10A430006088032105F0ACFB4FF000088DF8048024 +:10A440000646ADF80680042FD9D36A79002AD6D003 +:10A4500028794FF6FF794FF01C0A13282CD008DC1E +:10A46000012878D0062847D0072875D0122874D143 +:10A4700006E0142872D0152871D016286DD1ACE1F1 +:10A480000C2F6AD1307800F00301022965D140F029 +:10A49000080030706879B07001208DF804002889B8 +:10A4A000ADF808006889ADF80A00A889ADF80C007D +:10A4B000E889ADF80E0019E0B07890429FD130786D +:10A4C00001079CD5062F9AD120F0080030706088D3 +:10A4D000414660F31F41012008F0E2FF02208DF8A1 +:10A4E0000400ADF808902889ADF80A00608822467B +:10A4F00001A9F7F7D8FD82E7082F80D12F89B5F899 +:10A500000A90402F01D2402001E0A7F1400080B224 +:10A5100080460146304600F048FC08B3716808EBFD +:10A5200088002C2202EBC000095A4945E3D1FE48BD +:10A5300007AAD0E90210CDE9071068798DF81C0050 +:10A5400008F0FF058DF81E5060883146FFF799FC32 +:10A550002246294639E0B6E014E03CE039E0E6E086 +:10A56000F148D0E90010CDE907106879ADF8207006 +:10A570008DF81C00ADF82290608807AA3146FFF7DD +:10A5800080FC3CE7082FB6D16889B5F808804028E0 +:10A5900001D2402000E0403887B23946304600F012 +:10A5A00004FC0028A7D007EB870271680AEBC20001 +:10A5B0000844028A42459ED1017808299BD14078FF +:10A5C0006979884297D1F9B222463046FEF7F3FE08 +:10A5D00015E70E2F07D0CDF81C80CDF820806879C4 +:10A5E0008DF81C00C8E76989EF898B46B5F80C9097 +:10A5F0003046FEF742FFABF14001402901D309206C +:10A600004AE0B9F1170F01D3172F01D20B2043E015 +:10A6100040280ED000EB800271680AEBC2000844AB +:10A620000178012903D1407869798842A9D00A20AC +:10A6300032E03046FEF703FF014640282BD001EB05 +:10A64000810372680AEBC30002EB0008012288F85C +:10A6500000206A7988F8012070682A894089B84208 +:10A6600000D938462D8A03232372A282E7812082F3 +:10A67000A4F80C906582084600F07CFB6081A8F885 +:10A680001490A8F81870A8F80E50A8F810B020463A +:10A6900000F066FBB3E6042005212172A4F80A80CD +:10A6A000E08101212173A049D1E90421CDE90721ED +:10A6B00069798DF81C10ADF81E00608807AA314634 +:10A6C000FFF7DFFBE3E7062FE4D3B078904215D124 +:10A6D0003078010712D520F00800307060884146BC +:10A6E00060F31F41012008F0DBFE02208DF804001A +:10A6F0002889ADF80800ADF80A90F7E60421304645 +:10A70000FEF7D3FE05464028C4D002208303009004 +:10A7100022462946304600F065FB4146608865F3D5 +:10A720000F2160F31F41082008F0BAFE67E60E2FE4 +:10A73000B0D104213046FEF7B8FE81464028A9D0AA +:10A740004146608869F30F2160F31F41082008F03B +:10A75000A7FE288A0790E88900907068AF89408931 +:10A76000B84200D938468346B5F80A802889059052 +:10A77000484600F0FFFA6081079840B10220079B2D +:10A78000009022464946304600F02CFB37E6B8F1EF +:10A79000170F1ED3172F1CD304202072009860823D +:10A7A000E781A4F810B0A4F80C8009EB8902716865 +:10A7B0000AEBC2000D1800990598A5F81480A5F8B9 +:10A7C00018B0E9812882204600F0CAFA06202870D5 +:10A7D00015E601200B230090D3E7082FA6D1298985 +:10A7E0003046FEF74AFE074640289FD007EB870217 +:10A7F00071680AEBC2000844804600F0ECFA0028B9 +:10A8000094D16D89B8F80E002844B0F5803F05D387 +:10A8100060883A46314600F01CFBF0E5002D85D0FB +:10A82000A8F80E0060883A463146FFF701F9082083 +:10A830002072384600F09EFA6081A58127E770B546 +:10A840000D460646032105F0A3F9040004D0207844 +:10A85000000704D5112070BD43F2020070BD2A46E6 +:10A8600021463046FEF71FFF18B928686061686806 +:10A87000A061207840F008002070002070BD70B505 +:10A880000D460646032105F083F9040004D0207824 +:10A89000000704D4082070BD43F2020070BD2A46B0 +:10A8A00021463046FEF732FF00B9A582207820F01D +:10A8B00008002070002070BD2DE9F04F0E4691B0C9 +:10A8C0008046032105F064F90446404605F0A4FAE9 +:10A8D00007460020079008900990ADF830000A90D4 +:10A8E00002900390049004B9FFDF0DF1080917BB33 +:10A8F000FFDF20E038460BA9002204F0C9FC9DF8D8 +:10A900002C0000F07F050A2D00D3FFDF6019017FC6 +:10A91000491E01779DF82C0000060CD52A460CA98B +:10A9200007A8FEF716FE01E0A0ED010019F80510DA +:10A93000491C09F80510761EF6B2DBD204F134008A +:10A94000FC4D04F1260BDFF8F0A304F12A07069072 +:10A9500010E05846069900F06EFA064628700A285C +:10A9600000D3FFDF5AF8261040468847E08CC05DD0 +:10A97000B04202D0208D0028EBD10A202870EE4D85 +:10A980004E4628350EE00CA907A800F054FA0446FC +:10A99000375D55F8240000B9FFDF55F8242039460B +:10A9A00040469047BDF81E000028ECD111B027E5C5 +:10A9B00010B5032105F0ECF8040000D1FFDF0A21F7 +:10A9C00004F11C0014F022F8207840F004002070FC +:10A9D00010BD10B50C46032105F0DAF801190A7F05 +:10A9E00001211AB9808EA140084000D0012010BD7D +:10A9F0002DE9F84F894615468246032105F0C8F82F +:10AA0000070004D0284608F097FD40B903E043F260 +:10AA10000200BDE8F88F484608F0B4FD08B11020E8 +:10AA2000F7E7786828B169880089814201D909204F +:10AA3000EFE7B9F800001C2418B1402809D24020E3 +:10AA400008E03846FEF7FBFC8046402819D1132069 +:10AA5000DFE7403880B280460146384600F0A5F96D +:10AA600048B108EB8800796804EBC000085C012855 +:10AA700003D00820CDE70520CBE7FDF79BFF0600BC +:10AA80000BD008EB8800796804EBC0000C18B9F80B +:10AA9000000020B1E88910B113E01120B9E728883F +:10AAA000172802D36888172801D20720B1E7686801 +:10AAB00038B12B1D224641463846FFF71DF90028C4 +:10AAC000A7D104F10C0269462046FFF71CF828883C +:10AAD00060826888E082B9F8000030B102202070FE +:10AAE000E889A080E889A0B12BE003202070A88924 +:10AAF000A08078688178402905D180F802803946A5 +:10AB00005046FEF722FE404600F034F9A9F8000056 +:10AB100021E07868218B4089884200D9084620834B +:10AB2000A6F802A004203072B9F800007081E08914 +:10AB30007082F181208B3082A08AB081304600F093 +:10AB40000FF97868C178402905D180F8038039462B +:10AB50005046FEF74BFE00205BE770B50D460646FB +:10AB6000032105F015F8040003D0402D04D2402540 +:10AB700003E043F2020070BD403DADB2294600F053 +:10AB800014F958B105EB85011C22606802EBC10184 +:10AB9000084400F020F918B1082070BD052070BDF0 +:10ABA0002A462146304600F054F9002070BD2DE9B8 +:10ABB000F0410D4616468046032104F0E9FF0446A5 +:10ABC000402D01D2402500E0403DADB28CB1294678 +:10ABD00000F0EBF880B105EB85011C22606802EB08 +:10ABE000C1014718384600F0F6F838B10820BDE832 +:10ABF000F08143F20200FAE70520F8E733463A46CF +:10AC000029462046FFF778F80028F0D1EAB221461D +:10AC10004046FEF797FF0020E9E72DE9F0410D4699 +:10AC200016468046032104F0B3FF0446402D01D2AE +:10AC3000402500E0403DAFB224B1304608F07CFC36 +:10AC400038B902E043F20200D1E7306808F074FC42 +:10AC500008B11020CBE73946204600F0A6F860B1D5 +:10AC600007EB87011C22606802EBC10145182846EA +:10AC700000F0B1F818B10820B9E70520B7E7B088AF +:10AC8000A98A884201D90C20B1E76168E88C49782B +:10AC9000B0EBC10F01D31320A9E73946204600F0DD +:10ACA00078F80146606808234078C20005F1240066 +:10ACB00004F0F5FDD6E90012C0E90012FAB221460F +:10ACC0004046FEF7B5FE002091E72DE9F0470D461E +:10ACD0001F4690468146032104F05AFF0446402D4A +:10ACE00001D2402001E0A5F1400086B23CB14DB157 +:10ACF000384608F065FC50B11020BDE8F08743F2FB +:10AD00000200FAE76068C8B1A0F80C8024E0314680 +:10AD1000204600F04AF888B106EB86011C226068E4 +:10AD200002EBC1014518284600F055F840B1082053 +:10AD3000E3E7000030000020B8ED01000520DCE76B +:10AD4000A5F80880F2B221464846FEF7FBFE1FB187 +:10AD5000A8896989084438800020CEE704F0F7BB51 +:10AD6000017821F00F01491C21F0F0011031017030 +:10AD7000FDF723BE10B50446402800D9FFDF40345C +:10AD8000A0B210BD406842690078484302EBC000A1 +:10AD90007047C2784068037812FB03F24378406939 +:10ADA00001FB032100EBC1007047C2788A4209D938 +:10ADB000406801EB81011C2202EBC101405C08B13B +:10ADC00001207047002070470078062801D9012033 +:10ADD0007047002070470078062801D00120704796 +:10ADE00000207047F0B401EB81061C27446807EB94 +:10ADF000C6063444049D05262670E3802571F0BC08 +:10AE0000FEF790BA10B5418911B1FFF7DDFF08B127 +:10AE1000002010BD012010BD10B5C18C8278B1EBAF +:10AE2000C20F04D9C18911B1FFF7CEFF08B10020CC +:10AE300010BD012010BD10B50C4601230A22011DD2 +:10AE400004F063FD00782188012282409143218033 +:10AE500010BDF0B402EB82051C264C6806EBC5055C +:10AE6000072363554B681C79402C03D11A71F0BC41 +:10AE7000FEF701BDF0BC704770B50B2000F0B5F9CE +:10AE8000082000F0B2F900210B2000F0C4F90021E5 +:10AE9000082000F0C0F9EC4C01256560A560002099 +:10AEA000C4F84001C4F84401C4F848010B2000F084 +:10AEB000A7F9082000F0A4F90B2000F08BF9256019 +:10AEC00070BD10B50B2000F090F9082000F08DF94E +:10AED000DD48012141608160DC490A68002AFCD11B +:10AEE0000021C0F84011C0F84411C0F848110B20EF +:10AEF00000F086F9BDE81040082000F081B910B5D7 +:10AF00000B2000F07DF9BDE81040082000F078B972 +:10AF100000B530B1012806D0022806D0FFDF00209E +:10AF200000BDCB4800BDCB4800BDCA48001D00BDD8 +:10AF300070B5C9494FF000400860C84DC00BC5F856 +:10AF40000803C74800240460C5F840410820C43500 +:10AF500000F04BF9C5F83C41C248047070BD08B51B +:10AF6000B94A002128B1012811D002281CD0FFDFE6 +:10AF700008BD4FF48030C2F80803C2F84803B34854 +:10AF80003C300160C2F84011BDE80840D0E74FF402 +:10AF90000030C2F80803C2F84803AC4840300160F2 +:10AFA000C2F84411AB480CE04FF48020C2F808030B +:10AFB000C2F84803A54844300160C2F84811A548CA +:10AFC000001D0068009008BD70B516460D46044689 +:10AFD000022800D9FFDF00229B48012304F1100161 +:10AFE0008B4000EB8401C1F8405526B1C1F84021E7 +:10AFF000C0F8043303E0C0F80833C1F84021C0F8BA +:10B00000443370BD2DE9F0411C46154630B101288E +:10B0100034D0022839D0FFDFBDE8F081891E00223C +:10B0200021F07F411046FFF7CFFF012C24D00020F4 +:10B030008C4E8A4F012470703C61894900203C3954 +:10B0400008600220091D0860854904203039086025 +:10B0500083483D350560C7F80042082000F0D0F86D +:10B060002004C7F80403082000F0B4F87A49E00788 +:10B07000091F08603470CFE70120D9E7012B02D007 +:10B080000022012005E00122FBE7012B04D0002271 +:10B090000220BDE8F04197E70122F9E76B4800681C +:10B0A000704770B500F0C7F8674C0546D4F840010A +:10B0B0000026012809D1D4F80803C00305D54FF4B0 +:10B0C0008030C4F80803C4F84061D4F84401012872 +:10B0D0000CD1D4F80803800308D54FF40030C4F82D +:10B0E0000803C4F84461012007F0B7FAD4F8480116 +:10B0F00001280CD1D4F80803400308D54FF4802070 +:10B10000C4F80803C4F84861022007F0A6FA5648BC +:10B11000056070BD70B500F08EF8524D0446287879 +:10B1200058B1FFF705FF687820B1002085F80100CD +:10B1300007F093FA4C48046070BD0320F8E74FF025 +:10B14000E0214FF40010C1F800027047152000F014 +:10B1500057B8424901200861082000F051B83F4922 +:10B160004FF47C10C1F808030020024601EB800375 +:10B17000C3F84025C3F84021401CC0B20628F5D3CF +:10B180007047410A43F609525143C0F3080010FBCF +:10B1900002F000F5807001EB5020704710B5430BB2 +:10B1A00048F2376463431B0C5C020C602F4C03FBBA +:10B1B00004002F4B4CF2F72443435B0D13FB04F4C4 +:10B1C00004EB402000F580704012107008681844AD +:10B1D000086010BD00F01F0201219140400980006D +:10B1E00000F1E020C0F80011704700F01F020121BB +:10B1F00091404009800000F1E020C0F880117047C4 +:10B2000000F01F02012191404009800000F1E02080 +:10B21000C0F8801270474907090E002806DA00F0CE +:10B220000F0000F1E02080F8141D704700F1E020CD +:10B2300080F8001470470C48001F00680A4A0D4946 +:10B24000121D11607047000000B0004004B50040BE +:10B250004081004044B1004008F5014000800040BA +:10B26000408500403800002014050240F7C2FFFF6F +:10B270006F0C01000100000110B5EFF3108000F029 +:10B28000010472B6E9484178491C417040780128B0 +:10B2900001D107F087FD002C00D162B610BD70B55A +:10B2A000E24CE07848B90125E570FFF7E5FF07F0CB +:10B2B00081FD20B1002007F05CFD002070BD4FF043 +:10B2C00080406571C0F80453F7E770B5EFF3108064 +:10B2D00000F0010572B6D54C607800B9FFDF6078E8 +:10B2E000401E6070607808B907F060FD002D00D145 +:10B2F00062B670BDCD4810B5C17821B10021417151 +:10B30000C170FFF7E2FF002010BD10B5044607F042 +:10B3100051FDC649C978084000D0012020600020B6 +:10B3200010BD2DE9F05FDFF804934278817889F849 +:10B330000620002689F80710074689F8086000787B +:10B34000354620B101280FD002280FD0FFDF07F0CB +:10B350003EFD98B107F042FDB0420FD1304607F0F4 +:10B3600041FD0028FAD047E00126F0E7FFF784FF0F +:10B3700007F020FD0028FBD00226E8E70120840723 +:10B38000E060C4F80451AA490E600107D1F84412E4 +:10B39000A74AC1F3423124321160A5493431086013 +:10B3A0004FF0020BC4F804B3A060DFF888A2DAF80B +:10B3B0000010C94341F3001101F10108DAF800104F +:10B3C00041F01001CAF8001000E020BFD4F80401D9 +:10B3D0000028FAD0304607F005FD0028FAD0B8F171 +:10B3E000000F05D1DAF8001021F01001CAF80010A2 +:10B3F000C4F808B3C4F8045199F807004C4670B17A +:10B40000387860B907F0D6FC074607F037FE6FF0D2 +:10B41000004117B1C4E9031001E0C4E9030116B10A +:10B420002571BDE8F09F0127BE0727714FF019086D +:10B43000C6F80883B761C6F80051C6F80C51C6F8C3 +:10B44000105107F0B7FC10B1A770376100E027700A +:10B45000FFF712FF7649A07920310860C6F804830F +:10B46000DFE770B5050000D1FFDF4FF080424FF0FD +:10B47000FF30C2F808030021C2F80011C2F804111D +:10B48000C2F80C11C2F81011684C617007F098FCFA +:10B4900010B10120E07060702846BDE8704040E7C0 +:10B4A0002DE9F05F6448D0F800B0634A6349083280 +:10B4B00011608406D4F8080110B14FF0010801E0D2 +:10B4C0004FF00008D4F8000100B101208146D4F803 +:10B4D000040108B1012600E00026D4F80C0100B1F7 +:10B4E00001208246D4F8100108B1012700E00027AE +:10B4F00048EA090126EA010020EA0A00B84300D020 +:10B50000FFDF0025B8F1000F04D0C4F80851012076 +:10B5100007F02FFC5FEA0900DFF810814FF0010906 +:10B5200013D0C4F8005198F8050020B188F80550F0 +:10B53000002007F01EFC98F8000030B107F03AFC3C +:10B5400018B188F80290C4F810900EB1C4F80451F4 +:10B55000BAF1000F0CD0C4F80C5198F8020046461E +:10B5600000B9FFDFB5703570C4F81490FFF7ADFE79 +:10B5700037B1C4F8105198F8040008B100F020F871 +:10B580002D49091DC1F800B04BE770B5274DE8788B +:10B5900008B907F00BFC01208407A061A87850B11E +:10B5A000D4F80C0120B9002007F01CFC0028F7D1CA +:10B5B0000020C4F80C014FF0FF30C4F8080370BD40 +:10B5C0002DE9F041194C4FF080470125E079F0B1A9 +:10B5D000012803D0217A401E814218DA07F0EAFBE5 +:10B5E000064607F04BFDE179012902D9217A491C71 +:10B5F00021720EB1216900E0E168411A022902DAE4 +:10B6000011F1020F0BDC0EB1206100E0E060FFF7EA +:10B6100033FE07F0CFFB28B13D61A57003E07D61EB +:10B62000BDE8F081257000202072F9E73C00002081 +:10B630001805004010ED00E0100502400100000177 +:10B6400010B50D2000F06FF8C4B26FF0040000F0E8 +:10B650006AF8C0B2844200D0FFDF3A490120086096 +:10B6600010BD70B50D2000F048F8374C0020C4F82C +:10B6700000010125C4F804530D2000F049F82560AD +:10B680004FF0E0216014C1F8000170BD10B50D202D +:10B6900000F033F82C48012141600021C0F800116E +:10B6A000BDE810400D2000F033B8284810B50468FC +:10B6B00026492748083108602349D1F800010128AC +:10B6C00004D0FFDF2148001D046010BD1D48001D8F +:10B6D00000680022C0B2C1F8002107F027FCF1E7A2 +:10B6E00010B51948D0F800110029FBD0FFF7DDFF95 +:10B6F000BDE810400D2000F00BB800F01F02012142 +:10B7000091404009800000F1E020C0F880117047AE +:10B7100000F01F02012191404009800000F1E0206B +:10B72000C0F880127047002806DA00F00F0000F120 +:10B73000E02090F8140D03E000F1E02090F8000400 +:10B740004009704704D5004000D000401005024079 +:10B750000100000110B5202000F082F8202000F048 +:10B760008AF84A49202081F8000449490006086007 +:10B77000091D48480860F5F7CFFD4549C831086004 +:10B780004548D0F8041341F00101C0F80413D0F883 +:10B79000041341F08071C0F804133C4901201C39A6 +:10B7A000C1F8000110BD10B5202000F059F838484C +:10B7B00000210160001D0160354A481EE83A106012 +:10B7C000354AC2F80803324BC8331960C2F8000189 +:10B7D000C2F8600131490860BDE81040202000F047 +:10B7E0004AB82B492E48EC390860704728492C4844 +:10B7F000E8390860704726480160001D521E02604B +:10B80000704723490120E8390860BFF34F8F704724 +:10B8100070B51F4A8069E83A214911601E49D1F884 +:10B82000006100231F4D1D4A5C1E1EB1A84206D3B5 +:10B8300000210FE0D1F8606186B1A84209D2C1F8B9 +:10B840000031C1F860311460BDE87040202000F084 +:10B8500012B81168BDE8704013F004B9FFDF70BD85 +:10B8600000F01F02012191404009800000F1E0201A +:10B87000C0F88011704700F01F020121914040097B +:10B88000800000F1E020C0F88012704720E000E066 +:10B890000006024024120020000002400004024082 +:10B8A00001000001003002004FF0E0214FF0007075 +:10B8B000C1F88001C1F88002384B802283F800244F +:10B8C000C1F80001704700B502460420344903E086 +:10B8D00001EBC0031B792BB1401EC0B2F8D2FFDFD1 +:10B8E000FF2000BD41F8302001EBC00100224A7169 +:10B8F0008A7101220A7100BD294A002102EBC000B1 +:10B900000171704710B50446042800D3FFDF2448B6 +:10B9100000EBC4042079012800D0FFDF6079A17911 +:10B92000401CC0B2814200D060714FF0E0214FF066 +:10B930000070C1F8000210BD2DE9F04119480568FA +:10B9400018491948083108601448042690F8000482 +:10B95000134F4009154C042818D0FFDF16E021785A +:10B9600007EBC1000279012A08D1427983799A4212 +:10B9700004D04279827157F8310080472078401C0A +:10B98000C0B22070042801D300202070761EF6B2C9 +:10B99000E5D20448001D0560BDE8F08119E000E033 +:10B9A0009805002010050240010000015000002011 +:10B9B00070B50C46054600F043FB21462846BDE81D +:10B9C000704001F026BC0000F8B51D46DDE90647D1 +:10B9D0000E000AD004F020FA2346FF1DBCB2314607 +:10B9E0002A46009403F02DFEF8BDD01922461946D0 +:10B9F00012F06BFF2046F8BD70B50D4604461021CD +:10BA000012F0E2FF258117206081A07B40F00A0040 +:10BA1000A07370BD4FF6FF720A800146032007F045 +:10BA20003FBD704700897047827BD30701D19207E1 +:10BA300003D4808908800020704705207047827BEE +:10BA4000920700D58181704701460020098841F6A0 +:10BA5000FE52114200D00120704700B50346807BA2 +:10BA6000C00701D0052000BD59811846FFF7ECFF43 +:10BA7000C00703D0987B40F004009873987B40F097 +:10BA800001009873002000BD827B520700D509B1E8 +:10BA90004089704717207047827B61F3C30282732D +:10BAA00070472DE9FC5F0E4604460178964601205A +:10BAB00000FA01F14DF6FF5201EA020962684FF601 +:10BAC000FF7B1188594506D0B9F1000F06D041F629 +:10BAD000FE55294202D00120BDE8FC9F41EA090140 +:10BAE00011801D0014D04FF0000C85F800C02378A1 +:10BAF0000521032267464FF0020A0E2B74D2DFE8BD +:10BB000003F0F809252F47626974479092B3D0D7A4 +:10BB10000420E1E7616820898B7B9B077DD517288E +:10BB200048D30B89834245D38989172901D38142A0 +:10BB300040D185F800A0A5F80100328061688881B5 +:10BB40006068817B21F002018173C5E004202870C8 +:10BB50002089A5F801006089A5F803003180BBE0C9 +:10BB6000208A3188C01D1FFA80F8414522D3062063 +:10BB700028702089A5F801006089A5F80300A08934 +:10BB8000A5F805000721208ACDE9000163693EE0A0 +:10BB9000082B10D0082028702089A5F801006089A2 +:10BBA000A5F8030031806A1D694604F10C0005F018 +:10BBB00090FD10B15FE01020EDE730889DF8001097 +:10BBC0000844308088E00A2028702089A5F8010008 +:10BBD000328045E00C2028702089A5F8010060899A +:10BBE000A5F8030031803BE083E02189338800EB36 +:10BBF00041021FFA82F843453DD3B8F1050F3AD30D +:10BC00000E222A700BEA4101CDE90010E36860883A +:10BC10002A467146FFF7D8FE00E04DE0A6F8008006 +:10BC20005AE04020287060893188C01C1FFA80F8D3 +:10BC3000414520D32878714620F03F00123028700B +:10BC40002089A5F801006089CDE9000260882A46B4 +:10BC5000E368FFF7B9FEA6F80080287840063BD4D9 +:10BC600061682089888037E0A0893288401D1FFAEA +:10BC700080F8424501D204273EE016202870208932 +:10BC8000A5F801006089A5F80300A089CDE90001AD +:10BC900060882A4671462369FFF796FEA6F8008061 +:10BCA000DEE718202870207A6870A6F800A013E05C +:10BCB00061680A88920401D405271DE0C988228999 +:10BCC000914201D0062717E01E212970308060685C +:10BCD000018821F400510180B9F1000F0CD0618876 +:10BCE00078230022032007F031FB616820788870F8 +:10BCF00007E0A6F800C003276068018821EA09016F +:10BD000001803846E8E62DE9FF4F85B01746129CC2 +:10BD10000D001E461CD03078C10703D000F03F0054 +:10BD2000192801D9012100E000212046FFF7ACFECF +:10BD3000A8420DD32088A0F57F41FF3908D0307884 +:10BD4000410601D4000605D5082009B0BDE8F08FF2 +:10BD50000720FAE700208DF800008DF80100307808 +:10BD60006B1E00F03F0C0121A81E4FF0050A4FF09A +:10BD700002094FF0030B9AB2BCF1200F75D2DFE835 +:10BD80000CF08B10745E7468748C749C74B674BB05 +:10BD900074C974D574E2747474F274F074EF74EE50 +:10BDA000748B052D78D18DF80090A0788DF8040063 +:10BDB0007088ADF8060030798DF80100707800F0D9 +:10BDC0003F000C2829D00ADCA0F10200092863D228 +:10BDD000DFE800F0126215621A621D62200012286C +:10BDE00024D004DC0E281BD01028DBD11BE0162841 +:10BDF0001FD01828D6D11FE02078800701E02078D6 +:10BE00004007002848DAEFE020780007F9E72078BB +:10BE1000C006F6E720788006F3E720784006F0E7D2 +:10BE200020780006EDE72088C005EAE72088400575 +:10BE3000E7E720880005E4E72088C004E1E72078F0 +:10BE4000800729D5032D27D18DF800B0B6F8010061 +:10BE500082E0217849071FD5062D1DD381B2707865 +:10BE6000012803D0022817D102E0CAE0022000E036 +:10BE7000102004228DF8002072788DF80420801C98 +:10BE8000B1FBF0F2ADF8062092B242438A4203D1F0 +:10BE90000397ADF80890A7E07AE02078000777D5FF +:10BEA00098B282088DF800A0ADF80420B0EB820FA4 +:10BEB0006ED10297ADF8061096E02178C90667D5D5 +:10BEC000022D65D381B206208DF80000707802281B +:10BED0005ED300BFB1FBF0F28DF80400ADF8062090 +:10BEE00092B242438A4253D1ADF808907BE0207869 +:10BEF00080064DD5072003E0207840067FD5082036 +:10BF00008DF80000A088ADF80400ADF80620ADF86B +:10BF1000081068E02078000671D50920ADF80420EB +:10BF20008DF80000ADF8061002975DE02188C90584 +:10BF300065D5022D63D381B20A208DF80000707898 +:10BF400004285CD3C6E72088400558D5012D56D17A +:10BF50000B208DF80000A088ADF8040044E021E03B +:10BF600026E016E0FFE72088000548D5052D46D3DA +:10BF70000C208DF80000A088ADF80400B6F803008E +:10BF80006D1FADF80850ADF80600ADF80AA02AE024 +:10BF900035E02088C00432D5012D30D10D208DF838 +:10BFA000000021E02088800429D4B6F80100E08058 +:10BFB000A07B000723D5032D21D3307800F03F006C +:10BFC0001B2818D00F208DF80000208840F4005066 +:10BFD000A4F80000B6F80100ADF80400ED1EADF8BD +:10BFE0000650ADF808B0039769460598F9F773FB5A +:10BFF000050008D016E00E208DF80000EAE70725BE +:10C0000010E008250EE0307800F03F001B2809D032 +:10C010001D2807D00320059907F042FA208800F474 +:10C0200000502080A07B400708D52046FFF70CFD7C +:10C03000C00703D1A07B20F00400A073284684E64B +:10C040001FB5032806D101208DF8000088B269468B +:10C05000F9F741FB1FBD0000F8B51D46DDE90647B5 +:10C060000E000AD003F0D8FE2346FF1DBCB23146B5 +:10C070002A46009403F0E5FAF8BDD0192246194685 +:10C0800012F023FC2046F8BD2DE9FF4F8DB09B46F2 +:10C09000DDE91B57DDF87CA00C46082B05D0E069D4 +:10C0A00001F000F950B11020D2E02888092140F0B9 +:10C0B000100028808AF80010022617E0E1690120AC +:10C0C0008871E2694FF420519180E1698872E069DA +:10C0D00042F601010181E069002181732888112164 +:10C0E00040F0200028808AF80010042638780A9052 +:10C0F0000A2038704FF0020904F118004D460C90E8 +:10C1000001F093FBB04681E0BBF1100F0ED1022D80 +:10C110000CD0A9EB0800801C80B20221CDE90010F0 +:10C1200005AB52461E990D98FFF796FFBDF8161005 +:10C130001A98814203D9F74800790F9004E003D19F +:10C140000A9808B138702FE04FF00201CDE90019CC +:10C150000DF1160352461E990D98FFF77DFF1D98AD +:10C160000088401B801B83B2C6F1FF00984200D2BA +:10C1700003461E990BA8D9B15FF00002DDF878C024 +:10C18000CDE9032009EB060189B2CDE901C10F9881 +:10C190000090BDF8161000220D9801F0C9FB387010 +:10C1A00070B1C0B2832807D0BDF8160020833AE0F2 +:10C1B0000AEB09018A19E1E7022011B0BDE8F08F0E +:10C1C000BDF82C00811901F0FF08022D0DD09AF85E +:10C1D0000120424506D1BDF82010814207D0B8F1B8 +:10C1E000FF0F04D09AF801801FE08AF80180C94847 +:10C1F00000680178052902D1BDF81610818009EB8D +:10C2000008001FFA80F905EB080085B2DDE90C1083 +:10C2100005AB0F9A01F00CFB28B91D980088411B53 +:10C220004145BFF671AF022D13D0BBF1100F0CD1F9 +:10C23000A9EB0800801C81B20220CDE9000105AB0A +:10C2400052461E990D98FFF707FF1D9805800020A4 +:10C2500038700020B1E72DE9F8439C46089E13464C +:10C260000027B26B9AB3491F8CB2F18FA1F57F45BD +:10C27000FF3D05D05518AD882944891D8DB200E0D9 +:10C2800000252919B6F83C800831414520D82A44B8 +:10C29000BCF8011022F8021BBCF8031022F8021BA4 +:10C2A000984622F8024B914603F0A4FD4FF00C0C87 +:10C2B00041464A462346CDF800C003F08EF9F58783 +:10C2C000B16B00202944A41D2144088003E001E053 +:10C2D000092700E083273846BDE8F88310B50B88AE +:10C2E000848F9C420CD9846BE018048844B1848804 +:10C2F00024F40044A41D23440B801060002010BDD2 +:10C300000A2010BD2DE9F0478AB0002590468946E5 +:10C310008246ADF8185007274BE0059806888088BC +:10C32000000446D4A8F8006007A80195009702957C +:10C33000CDE903504FF4007300223146504601F01E +:10C34000F7FA04003CD1BDF81800ADF820000598BC +:10C3500004888188B44216D10A0414D40195029548 +:10C36000039521F400410097049541F480434288ED +:10C370002146504601F0B2F804000BD1059881889F +:10C3800041F40041818005AA08A94846FFF7A6FFAD +:10C390000400DCD00097059802950195039504955B +:10C3A0000188BDF81C300022504601F097F80A2C95 +:10C3B00006D105AA06A94846FFF790FF0400ACD0B5 +:10C3C000ADF8185004E00598818821F4004181807F +:10C3D00005AA06A94846FFF781FF0028F3D00A2CDA +:10C3E00003D020460AB0BDE8F0870020FAE710B578 +:10C3F0000C46896B86B051B10C218DF80010A18FCD +:10C40000ADF80810A16B01916946FAF715F9002003 +:10C410004FF6FF71A063E187A08706B010BD2DE93C +:10C42000F0410D460746896B0020069E1446002900 +:10C4300011D0012B0FD1324629463846FFF762FF53 +:10C44000002808D1002C06D0324629463846BDE8DF +:10C45000F04100F036BFBDE8F0812DE9FC41144603 +:10C46000DDE9087C0E46DDE90A15521DBCF800E046 +:10C4700092B2964502D20720BDE8FC81ACF80020BC +:10C4800017222A70A5F80160A5F803300522CDE92E +:10C4900000423B462A46FFF7DFFD0020ECE770B57F +:10C4A0000C4615464821204612F0B0FA04F1080067 +:10C4B00044F81C0F00204FF6FF71E0616184208476 +:10C4C000A5841720E08494F82A0040F00A0084F83C +:10C4D0002A0070BD4FF6FF720A800146042006F064 +:10C4E000DFBF30B585B00C460546FFF780FFA18E53 +:10C4F000284629B101218DF800106946FAF79CF809 +:10C500000020E0622063606305B030BDB0F84000F9 +:10C51000704700005400002090F84620920703D492 +:10C52000408808800020F3E70620F1E790F84620D5 +:10C530009207EDD5A0F84410EAE7014600200988EB +:10C540000A0700D5012011F0F00F01D040F00200E1 +:10C55000CA0501D540F004008A0501D540F0080065 +:10C560004A0501D540F010000905D1D540F0200062 +:10C57000CEE700B5034690F84600C00701D006207C +:10C5800000BDA3F842101846FFF7D7FF10F03E0F8A +:10C5900005D093F8460040F0040083F8460013F8F5 +:10C5A000460F40F001001870002000BD90F84620B2 +:10C5B000520700D511B1B0F84200A9E71720A7E74C +:10C5C00010F8462F61F3C3020270A1E72DE9FF4F77 +:10C5D0009BB00E00DDE92B34DDE92978289D24D0BD +:10C5E0002878C10703D000F03F00192801D90121A4 +:10C5F00000E000212046FFF7D9FFB04215D328788C +:10C60000410600F03F010CD41E290CD0218811F402 +:10C610007F6F0AD13A8842B1A1F57F42FF3A04D038 +:10C6200001E0122901D1000602D504201FB0C5E5A2 +:10C63000F9491D984FF0000A08718DF818A08DF87F +:10C640003CA00FAA0A60ADF81CA0ADF850A0297854 +:10C65000994601F03F02701F5B1C04F1180C4FF06B +:10C66000060E4FF0040BCDF858C01F2A7ED2DFE82B +:10C6700002F07D7D107D267DAC7DF47DF37DF27D25 +:10C68000F17DF47DF07D7D7DEF7DEE7D7D7D7D7D99 +:10C69000ED0094F84610B5F80100890701D5032E86 +:10C6A00002D08DF818B022E34FF40061ADF85010BD +:10C6B000608003218DF83C10ADF84000D8E2052ED3 +:10C6C000EFD1B5F801002083ADF81C00B5F80310D8 +:10C6D000618308B1884201D901207FE10020A07266 +:10C6E00020814FF6FF702084169801F09EF80520F7 +:10C6F00089F800000220029083460AAB1D9A169921 +:10C700001B9801F095F890BB9DF82E00012804D0ED +:10C71000022089F80100102003E0012089F80100BF +:10C7200002200590002203A90BA804F0D2FFE8BB69 +:10C730009DF80C00059981423DD13A88801CA2EBFE +:10C740000B01814237DB02990220CDE900010DF196 +:10C750002A034A4641461B98FFF77EFC02980BF1DC +:10C76000020B801C80B217AA03A901E0A0E228E016 +:10C7700002900BA804F0ADFF02999DF80C00CDE9E2 +:10C78000000117AB4A4641461B98FFF765FC9DF830 +:10C790000C100AAB0BEB01001FFA80FB02981D9AEC +:10C7A000084480B2029016991B9800E003E001F063 +:10C7B0003FF80028B6D0BBF1020F02D0A7F800B0B6 +:10C7C00053E20A208DF818004FE200210391072E52 +:10C7D000FFF467AFB5F801002083ADF81C00B5F891 +:10C7E0000320628300283FF477AF90423FF674AF96 +:10C7F0000120A072B5F8050020810020A073E06937 +:10C8000000F050FD78B9E16901208871E2694FF4C8 +:10C8100020519180E1698872E06942F6010101814D +:10C82000E06900218173F01F20841E986062072058 +:10C830006084169800F0F9FF072089F800000120B5 +:10C84000049002900020ADF82A0028E01DE2A3E148 +:10C850003AE1EAE016E2AEE086E049E0029801281B +:10C8600014D0E0698079012803D1BDF82800ADF823 +:10C870000E00049803ABCDE900B04A4641461B9830 +:10C88000FFF7EAFB0498001D80B20490BDF82A006F +:10C89000ADF80C00ADF80E00059880B202900AAB1E +:10C8A0001D9A16991B9800F0C3FF28B90298398881 +:10C8B000001D05908142D1D20298012881D0E06903 +:10C8C0008079012805D0BDF82810A1F57F40FF38F8 +:10C8D00003D1BDF82800ADF80E00049803ABCDE9F4 +:10C8E00000B04A4641461B98FFF7B6FB0298BBE1F1 +:10C8F000072E02D0152E7FF4D4AEB5F80110218397 +:10C90000ADF81C10B5F80320628300293FF4E4AEB3 +:10C9100091423FF6E1AE0121A1724FF0000BA4F865 +:10C9200008B084F80EB0052E07D0C0B2691DE269C8 +:10C9300004F0B0FE00287FF444AF4FF6FF7020846F +:10C9400001A906AA14A8CDF800B081E885032878CB +:10C95000214600F03F031D9A1B98FFF795FB824686 +:10C96000208BADF81C0080E10120032EC3D14021B3 +:10C97000ADF85010B5F801102183ADF81C100AAACB +:10C98000B8F1000F00D00023CDE9020304921D98F6 +:10C99000CDF80480009038880022401E83B21B9896 +:10C9A00000F0C6FF8DF8180090BB0B2089F800003E +:10C9B000BDF8280037E04FF0010C052E9BD18020F8 +:10C9C000ADF85000B5F801102183B5F803002084BC +:10C9D000ADF81C10B0F5007F03D907208DF81800C2 +:10C9E00085E140F47C4222840CA8B8F1000F00D00D +:10C9F0000023CDE90330CDE9018C1D9800903888E3 +:10CA0000401E83B21B9800F093FF8DF8180028B1E8 +:10CA10008328A8D10220BDE0540000200D2189F810 +:10CA20000010BDF83000401C1EE1032E04D2480661 +:10CA30007FF537AE002017E1B5F80110ADF81C10F6 +:10CA40002878400602D58DF83CE002E007208DF8FA +:10CA50003C004FF000080320CDE902081E9BCDF8F2 +:10CA600010801D980193A6F1030B00901FFA8BF321 +:10CA700042461B9800F032FD8DF818008DF83C807E +:10CA8000297849060DD52088C00506D5208BBDF82C +:10CA90001C10884201D1C4F8248040468DF81880CB +:10CAA000E2E0832801D14FF0020A4FF48070ADF824 +:10CAB0005000BDF81C002083A4F820B01E986062CE +:10CAC000032060841321CCE0052EFFF4EAADB5F815 +:10CAD0000110ADF81C10A28F62B3A2F57F43FE3B9C +:10CAE00028D008228DF83C204FF0000B0523CDE91B +:10CAF000023BDDF878C0CDF810B01D9A80B2CDF8B9 +:10CB000004C040F400430092B5F803201B9800F0E5 +:10CB1000E5FC8DF83CB04FF400718DF81800ADF8CD +:10CB20005010832810D0F8B1A18FA1F57F40FE38B6 +:10CB300007D0DCE00B228DF83C204FF6FE72A28776 +:10CB4000D2E7A4F83CB0D2E000942B4631461E9ABE +:10CB50001B98FFF780FB8DF8180008B183284BD194 +:10CB6000BDF81C00208355E700942B4631461E9AE1 +:10CB70001B98FFF770FB8DF81800E8BBE18FA06BE6 +:10CB80000844811D8DE882034388828801881B98B0 +:10CB9000FFF763FC824668E095F80180022E70D1B1 +:10CBA0005FEA080002D0B8F1010F6AD109208DF8C0 +:10CBB0003C0007A800908DF84080434600222146A3 +:10CBC0001B98FFF72CFC8DF842004FF0000B8DF8FE +:10CBD00043B050B9B8F1010F12D0B8F1000F04D131 +:10CBE000A18FA1F57F40FF380AD0A08F40B18DF80A +:10CBF0003CB04FF4806000E037E0ADF850000DE04D +:10CC00000FA91B98F9F718FD82468DF83CB04FF438 +:10CC10008060ADF85000BAF1020F06D0FB48006802 +:10CC2000C07928B18DF8180027E0A4F8188044E0F6 +:10CC3000BAF1000F03D081208DF818003DE007A85D +:10CC400000904346012221461B98FFF7E8FB8DF830 +:10CC5000180021461B98FFF7CAFB9DF8180020B961 +:10CC6000192189F80010012038809DF83C0020B17E +:10CC70000FA91B98F9F7E0FC8246BAF1000F33D0F8 +:10CC80001BE018E08DF818E031E02078000712D59D +:10CC9000012E10D10A208DF83C00E088ADF840004C +:10CCA00004201B9906F0FCFB0820ADF85000C1E6FB +:10CCB00048067FF5F6AC4FF0040A2088BDF8501006 +:10CCC00008432080BDF8500080050BD5A18FA1F549 +:10CCD0007F40FE3806D11E98E06228982063A68621 +:10CCE0004FF0030A5046A1E49DF8180078B10120E6 +:10CCF00089F80000297889F80110BDF81C10A9F8FE +:10CD000002109DF8181089F804100520388020883A +:10CD1000BDF8501088432080E4E72DE9FF4F884696 +:10CD2000087895B0012181404FF20900249C014010 +:10CD3000ADF820102088DDF88890A0F57F424FF0F4 +:10CD4000000AFF3A02D029B1000703D5012019B02B +:10CD5000BDE8F08F239E4FF0000B0EA886F800B0C0 +:10CD600018995D460988ADF83410A8498DF81CB0B3 +:10CD7000179A0A718DF838B0086098F800000128F9 +:10CD80003BD0022809D003286FD1307820F03F0033 +:10CD90001D303070B8F80400E08098F800100320CF +:10CDA000022904D1317821F03F011B31317094F810 +:10CDB0004610090759D505ABB9F1000F13D0002172 +:10CDC00002AA82E80B000720CDE90009BDF8340073 +:10CDD000B8F80410C01E83B20022159800F0A8FD18 +:10CDE0000028D1D101E0F11CEAE7B8F80400A6F868 +:10CDF0000100BDF81400C01C04E198F805108DF87E +:10CE00001C1098F80400012806D04FF4007A02287C +:10CE10002CD00328B8D16CE12188B8F8080011F4AF +:10CE20000061ADF8201020D017281CD3B4F84010B2 +:10CE3000814218D3B4F84410172901D3814212D18A +:10CE4000317821F03F01C91C3170A6F8010003219F +:10CE5000ADF83410A4F8440094F8460020F0020025 +:10CE600084F8460065E105257EE177E1208808F138 +:10CE7000080700F4FE60ADF8200010F0F00F1BD0A2 +:10CE800010F0C00F03D03888228B9042EBD199B9B3 +:10CE9000B878C00710D0B9680720CDE902B1CDF845 +:10CEA00004B00090CDF810B0FB88BA883988159886 +:10CEB00000F014FB0028D6D12398BDF82010401CA8 +:10CEC00080294ED006DC10290DD020290BD0402916 +:10CED00087D124E0B1F5807F6ED051457ED0B1F589 +:10CEE000806F97D1DEE0C80601D5082000E0102051 +:10CEF00082460DA907AA0520CDE902218DF8380048 +:10CF0000ADF83CB0CDE9049608A93888CDE9000118 +:10CF10005346072221461598FFF7B6F8A8E09DF87A +:10CF20001C2001214FF00A0A002A9BD105ABB9F160 +:10CF3000000F00D00020CDE902100720CDE9000944 +:10CF4000BDF834000493401E83B2218B0022159853 +:10CF500000F0EEFC8DF81C000B203070BDF81400C2 +:10CF600020E09DF81C2001214FF00C0A002A22D15C +:10CF700013ABB9F1000F00D00020CDE9021007205B +:10CF8000CDE900090493BDF83400228C401E83B221 +:10CF9000218B159800F0CCFC8DF81C000D20307012 +:10CFA000BDF84C00401CADF8340005208DF8380069 +:10CFB000208BADF83C00BCE03888218B88427FF4A0 +:10CFC00052AF9DF81C004FF0120A00281CD1606A75 +:10CFD000A8B1B878C0073FF446AF00E018E0BA68DF +:10CFE0000720CDE902B2CDF804B00090CDF810B022 +:10CFF000FB88BA88159800F071FA8DF81C00132090 +:10D0000030700120ADF8340093E00000540000209F +:10D010003988208B8142D2D19DF81C004FF0160A2E +:10D020000028A06B08D0E0B34FF6FF7000215F46E8 +:10D03000ADF808B0019027E068B1B978C907BED152 +:10D04000E18F0DAB0844821D03968DE80C024388E6 +:10D050008288018809E0B878C007BCD0BA680DABF7 +:10D0600003968DE80C02BB88FA881598FFF7F5F94E +:10D0700005005ED0072D72D076E0019005AA02A9C6 +:10D080002046FFF72BF90146E28FBDF808008242E7 +:10D0900001D00029F1D0E08FA16B084407800198EE +:10D0A000E08746E09DF81C004FF0180A40B1208B45 +:10D0B000C8B13888208321461598FFF798F938E0E1 +:10D0C00004F118000090237E012221461598FFF7F5 +:10D0D000A6F98DF81C000028EDD119203070012030 +:10D0E000ADF83400E7E7052521461598FFF77FF9ED +:10D0F0003AE0208800F40070ADF8200050452DD1B2 +:10D10000A08FA0F57F41FE3901D006252CE0D8F88C +:10D1100008004FF0160A48B1A063B8F80C10A187B8 +:10D120004FF6FF71E187A0F800B002E04FF6FF7004 +:10D13000A087BDF8200030F47F611AD07823002248 +:10D140000420159906F002F998F800002071208853 +:10D15000BDF82010084320800EE000E0072520885D +:10D16000BDF8201088432080208810F47F6F1CD0E9 +:10D170003AE02188814321809DF8380020B10EA932 +:10D180001598F9F759FA05469DF81C000028EBD0D0 +:10D1900086F801A001203070208B70809DF81C0063 +:10D1A00030710520ADF83400DEE7A18EE1B11898AA +:10D1B0000DAB0088ADF834002398CDE90304CDE928 +:10D1C0000139206B0090E36A179A1598FFF7FEF972 +:10D1D000054601208DF838000EA91598F9F72CFAAC +:10D1E00000B10546A4F834B094F8460040070AD5CB +:10D1F0002046FFF7A2F910F03E0F04D114F8460FB5 +:10D2000020F0040020701898BDF8341001802846E2 +:10D210009DE500B585B0042806D102208DF80000F8 +:10D2200088B26946F9F708FA05B000BD10B5384C68 +:10D230000B782268012B02D0022B2AD111E013783F +:10D240000BB1052B01D10423137023688A889A80BF +:10D250002268CB88D38022680B8913814989518148 +:10D260000DE08B8893802268CB88D38022680B895D +:10D2700013814B8953818B899381096911612168DD +:10D28000F9F7DAF9226800210228117003D000288A +:10D2900000D0812010BD832010BD806B002800D0FD +:10D2A000012070478178012909D10088B0F5205FFD +:10D2B00003D042F60101884201D1002070470720C7 +:10D2C0007047F0B587B0002415460E460746ADF806 +:10D2D000144010E0069801882980811DCDE90241A3 +:10D2E000072101940494009183884288018838467C +:10D2F00000F0F4F830B906AA05A93046FEF7EEFFB3 +:10D300000028E7D00A2800D1002007B0F0BD0000B7 +:10D310005400002010B58B7883B102789A4205D171 +:10D320000B885BB102E08B79091D4BB18B789A4277 +:10D33000F9D1B0F801300C88A342F4D1002010BD1F +:10D34000812010BD072826D012B1012A27D103E081 +:10D35000497801F0070102E04978C1F3C2010529CB +:10D360001DD2DFE801F00318080C12000AB10320F7 +:10D3700070470220704704280DD250B10DE00528F7 +:10D3800009D2801E022808D303E0062803D0032810 +:10D3900003D005207047002070470F207047812080 +:10D3A0007047C0B282060BD4000607D5FE48807ACB +:10D3B0004143C01D01EBD00080B270470846704762 +:10D3C0000020704770B513880B800B781C0625D59C +:10D3D000F54CA47A844204D843F010000870002071 +:10D3E00070BD956800F0070605EBD0052D78F54077 +:10D3F00065F304130B701378D17803F0030341EA4B +:10D40000032140F20123B1FBF3F503FB15119268F0 +:10D41000E41D00FB012000EBD40070BD906870BDDE +:10D4200037B51446BDF8041011809DF804100A06A3 +:10D430001ED5C1F30013DC49A568897A814208D85A +:10D44000FE2811D1C91DC9085A42284611F0B4FA64 +:10D450000AE005EBD00100F00702012508789540AD +:10D46000A843934018430870207820F010002070E3 +:10D470003EBD2DE9F0410746C81C0E4620F00300D2 +:10D48000B04202D08620BDE8F081C74D002034466E +:10D490002E60AF802881AA72E8801AE0E988491CD2 +:10D4A000E980810614D4E17800F0030041EA00200D +:10D4B00040F20121B0FBF1F201FB12012068FFF7FD +:10D4C00070FF2989084480B22881381A3044A0604E +:10D4D0000C3420784107E1D40020D4E72DE9FF4F38 +:10D4E00089B01646DDE9168A0F46994623F4404571 +:10D4F000084600F00DFB04000FD0099802F00EFB67 +:10D500000290207800060AD5A748817A02988142C5 +:10D5100005D887200DB0BDE8F08F0120FAE722463C +:10D5200001A90298FFF74EFF834600208DF80C00FA +:10D530004046B8F1070F1AD001222146FFF702FF3B +:10D540000028E7D12078400611D502208DF80C0084 +:10D55000ADF81070BDF80400ADF81200ADF814601D +:10D560001898ADF81650CDF81CA0ADF818005FEA79 +:10D57000094004D500252E46A84601270CE0217855 +:10D58000E07801F0030140EA012040F20121B0FB04 +:10D59000F1F2804601FB12875FEA494009D5B845A0 +:10D5A00007D1A178207901F0030140EA0120B042BF +:10D5B00001D3BE4201D90720ACE7A8191FFA80F9B0 +:10D5C000B94501D90D20A5E79DF80C0028B103A9A4 +:10D5D0000998F9F72FF800289CD1B84507D1A07811 +:10D5E0004FEA192161F30100A07084F804901A98A1 +:10D5F00000B10580199850EA0A0027D0199830B177 +:10D600000BEB06002A46199911F05FF90EE00BEBBF +:10D6100006085746189E099802F0ECFB2B46F61DAB +:10D62000B5B239464246009501F0D7FF224601A91E +:10D630000298FFF7C7FE9DF80400224620F0100074 +:10D640008DF80400DDE90110FFF7EAFE002061E734 +:10D650002DE9FF4FDFF8509182461746B9F80610C2 +:10D66000D9F8000001EB410100EB810440F20120F8 +:10D67000B2FBF0F185B000FB11764D46DDF84C8031 +:10D6800031460698FFF78DFE29682A898B46611A74 +:10D690000C3101441144AB8889B28B4202D88420FA +:10D6A00009B038E70699CDB2290603D5A90601D5F8 +:10D6B0000620F5E7B9F806C00CF1010C1FFA8CFC46 +:10D6C000A9F806C0149909B1A1F800C0A90602D5AD +:10D6D000C4F8088007E0104480B2A9F80800191ABD +:10D6E00001EB0B00A0602246FE200699FFF798FE92 +:10D6F000E77026712078390A61F30100320AA178B7 +:10D7000040F0040062F30101A17020709AF8020059 +:10D710006071BAF80000E08000262673280602D562 +:10D7200099F80A7000E00127A80601D54FF000081B +:10D730004D4600244FF007090FE0CDE9026801963D +:10D74000CDF800900496E9882046129B089AFFF7CE +:10D75000C5FE0028A4D1641CE4B2BC42EDD3002075 +:10D760009EE72DE9F047804600F0D2F9070005D08A +:10D77000002644460C4D40F2012919E00120BDE885 +:10D78000F087204600F0C4F90278C17802F0030265 +:10D7900041EA0222B2FBF9F309FB13210068FFF70B +:10D7A00000FE304486B201E0B8050020641CA4B23B +:10D7B000E988601E8142E4DCA8F10100E880288944 +:10D7C000801B288100203870D9E710B5144631B18C +:10D7D000491E218002F0A2F9A070002010BD012096 +:10D7E00010BD10B5D24904460088CA88904201D3C2 +:10D7F0000A2010BD096800EB400001EB800250795F +:10D80000A072D08820819178107901F0030140EA5C +:10D810000120A081A078E11CFFF7D4FD20612088C1 +:10D82000401C2080E080002010BD01210182704753 +:10D830002DE9FF4F85B04FF6FF788246A3F80080B0 +:10D8400048681F460D4680788DF8060048680088B5 +:10D85000ADF8040000208DF80A00088A0C88A04268 +:10D8600000D304462C8241E0288A401C2882701D87 +:10D870006968FFF74FFDB8BB3988414501D1601E8B +:10D8800038806888A04236D3B178307901F003013E +:10D8900040EA012901A9701DFFF73CFD20BB298941 +:10D8A00041452CD0002231460798FFF74BFDD8B9EF +:10D8B0002989494518D1E9680391B5F80AC0D6F815 +:10D8C00008B05046CDF800C002F094FADDF800C070 +:10D8D0005A460CF1070C1FFA8CFC4B460399CDF805 +:10D8E00000C001F044FE50B1641CA4B2204600F018 +:10D8F0000FF90600B8D1641E2C820A20D0E67C8085 +:10D900007079B871F088B8803178F07801F003014F +:10D9100040EA01207881A7F80C90504602F0FEF80A +:10D92000324607F10801FFF74DFD38610020B7E6E8 +:10D930002DE9FF4F87B081461C469246DDF860B066 +:10D94000DDF85480089800F0E3F805000CD0484654 +:10D9500002F0E4F82978090608D57549897A8142E8 +:10D9600004D887200BB0D6E50120FBE7CAF30906EF +:10D970002A4601A9FFF726FD0746149807281CD060 +:10D9800000222946FFF7DEFC0028EBD1287840066C +:10D9900013D501208DF808000898ADF80C00BDF8EB +:10D9A0000400ADF80E00ADF81060ADF8124002A909 +:10D9B0004846F8F73FFE0028D4D12978E87801F0EE +:10D9C000030140EA0121AA78287902F0030240EA23 +:10D9D0000220564507D0B1F5007F04D9611E81426F +:10D9E00001DD0B20BEE7864201D90720BAE7801B84 +:10D9F00085B2A54200D92546BBF1000F01D0ABF896 +:10DA00000050179818B1B9192A4610F05EFFB8F106 +:10DA1000000F0DD03E4448464446169F02F0FCF9E4 +:10DA20002146FF1DBCB232462B46009401F009FE90 +:10DA3000002097E72DE9F04107461D4616460846A7 +:10DA400000F066F804000BD0384602F067F8217841 +:10DA5000090607D53649897A814203D8872012E51D +:10DA6000012010E522463146FFF7ACFC65B1217874 +:10DA7000E07801F0030140EA0120B0F5007F01D811 +:10DA8000012000E0002028700020FCE42DE9F04196 +:10DA900007461D461646084600F03AF804000BD02B +:10DAA000384602F03BF82178090607D52049897AE3 +:10DAB000814203D88720E6E40120E4E4224631468F +:10DAC000FFF7AEFCFF2D14D02178E07801F00302BF +:10DAD00040EA022040F20122B0FBF2F302FB130005 +:10DAE00015B900F2012080B2E070000A60F3010174 +:10DAF00021700020C7E410B50C4600F009F828B1E9 +:10DB0000C18821804079A070002010BD012010BD87 +:10DB10000749CA88824209D340B1096800EB400036 +:10DB20006FF00B0202EB8000084470470020704742 +:10DB3000B805002010B505F0BCFEFAF7BFFA05F0F5 +:10DB400079FDBDE8104005F007BE70B50346002022 +:10DB500002466FF02F050EE09C5CA4F130060A2E01 +:10DB600002D34FF0FF3070BD00EB800005EB4000AA +:10DB7000521C2044D2B28A42EED370BD30B50A2482 +:10DB80000AE0B0FBF4F304FB13008D18303005F805 +:10DB9000010C521E1846D2B2002AF2D130BD30B567 +:10DBA00000234FF6FF7510E0040A44EA002084B217 +:10DBB000C85C6040C0F30314604005EA0034444090 +:10DBC000E0B25B1C84EA40109BB29342ECD330BDC0 +:10DBD0000178406829B190F8041190F8720038B9C2 +:10DBE00001E001F0EFB919B1042901D0012070471B +:10DBF0000020704770B50C460546062101F0C8FFAD +:10DC0000606008B1002006E00721284601F0C0FF4F +:10DC1000606018B101202070002070BD022070BD2E +:10DC20002DE9FC470C4606466946FFF7E3FF00284E +:10DC30007DD19DF8000050B106F016FEB0427CD0B8 +:10DC40002146304609F0B8FB002873D12DE00CF0D6 +:10DC500067F9B04271D0214630460FF024FA00280F +:10DC600068D1019D95F8C80022E0012000E0002065 +:10DC7000804695F835004FF0010A4FF00009F0B1E9 +:10DC800095F8360080071AD584F8019084F800A032 +:10DC900084F80290A68095F83710A171298F218110 +:10DCA000698F618185F8359044E0019D95F8040104 +:10DCB00058350028DBD1A87E0028D8D0D5E73046DB +:10DCC00002F0AAF8070000D1FFDF384601F0BAFAE7 +:10DCD00040B184F801900E212170A680E08084F884 +:10DCE00002A027E0304602F085F8070000D1FFDFF0 +:10DCF000B8F1000F21D0384601F0FBFAB8B19DF819 +:10DD0000000038B90198D0F8F0004188B14201D143 +:10DD100080F80090304606F046FC84F801900B2114 +:10DD2000217084F80290A680E97EA17100E004E0F1 +:10DD300085F81A900120BDE8FC870020FBE71CB5A0 +:10DD40006946FFF757FF00B1FFDF684601F046F96B +:10DD5000FE4900208968A1F8CA001CBD2DE9FC41DC +:10DD600004460E46062001F0BBFE0546072001F0E2 +:10DD7000B7FE2844C7B20025A8463E4417E02088D5 +:10DD8000401C80B22080B04202D34046A4F80080FC +:10DD900080B2B84204D3B04202D20020BDE8FC8178 +:10DDA0006946FFF727FF0028F8D06D1CEDB2AE42A0 +:10DDB000E5D84FF6FF7020801220EFE738B54FF618 +:10DDC000FF70ADF800000DE00621BDF8000001F085 +:10DDD000F1FE04460721BDF8000001F0EBFE0CB196 +:10DDE00000B1FFDF00216846FFF7B8FF0028EBD045 +:10DDF00038BD2DE9F04106F047FC0AF0C7FED44CCF +:10DE0000042710206780A0804FF6FF76E6832684E3 +:10DE10000025D0A0257001680079A4F13E02A5710B +:10DE200042F8451FE11D1071A01D0FF06CFA25731B +:10DE30001B21E1814FF4A47020826182A082032221 +:10DE4000A2752046E775018341833E38A2830570A1 +:10DE50004680BE480C300570A4F110000570468065 +:10DE6000BDE8F08170B5B94C0D466060217006F0D8 +:10DE700098FBFFF7A3FFFFF7BCFF20780DF0B0FA87 +:10DE80000CF04EFA217860680FF0E1F920780AF082 +:10DE9000F9F8284607F08BFE06F026FD2178606829 +:10DEA00009F079FBBDE870400AF070BE10B501249E +:10DEB0000AB1002010BD21B1012903D00024204661 +:10DEC00010BD02210BF066FEF9E72DE9F0470400D2 +:10DED00000D1FFDF9E48022120308146FFF73EFF40 +:10DEE00000B1FFDF9A4D0620B5F8208001F0F8FD63 +:10DEF0000646072001F0F4FD3044C6B2701CC7B2DC +:10DF0000288CB04211D120460BF094FF48BB2878F2 +:10DF100078B300266670132020702021A01C10F01A +:10DF200053FD0220A0702E7020E0B8421AD1204686 +:10DF300006F052FCE8B12078132817D1A0783C28CD +:10DF400014D1A088072101F023FE050000D1FFDFD6 +:10DF5000288806F028FBA088072101F02BFE00B1DD +:10DF6000FFDF03E02146FFF75BFE10B10120BDE8B3 +:10DF7000F087FFE702214846FFF7F0FE10B9298C31 +:10DF80004145BDD10020F2E710B500F0C3FF08B154 +:10DF90000C2010BD0AF031FE002010BD10B5044663 +:10DFA000007818B1012801D0122010BD00F0C3FF85 +:10DFB00020B10AF07FFE08B10C2010BD207800F0DF +:10DFC00078FFE21D04F11703611CBDE810400AF060 +:10DFD00029BE10B50446007818B1012801D01220DE +:10DFE00010BD00F097FF08B10C2010BD207800F0A4 +:10DFF00060FF611C0AF0DDFD08B1002010BD0720A4 +:10E0000010BD10B50AF05AFE08B1002010BD302036 +:10E0100010BD10B5044600F08EFF08B10C2010BDF5 +:10E0200020460AF043FE002010BD10B500F083FF2B +:10E0300020B10AF03FFE08B10C2010BD0AF028FE06 +:10E04000002010BDFF2181704FF6FF7181803F4994 +:10E0500049680A7882718A88028149884181012150 +:10E0600041700020704710B510F1080F17D00CDC7C +:10E0700010F1280F13D010F1140F10D010F1100F61 +:10E080000DD010F10C0F08D109E010F1040F06D0EB +:10E0900028B1032803D0042801D0122010BD05F0B8 +:10E0A00014FD002010BD10B5134601220BF08AF9B3 +:10E0B000002010BD10B504460DF005FC052804D065 +:10E0C00020460DF07CF9002010BD0C2010BD10B5CD +:10E0D000044600F030FF08B10C2010BD214600209E +:10E0E00006F0D3FA002010BD10B504460DF0F0F98B +:10E0F00050B107F0AAFF38B1207807F08AFD2078E8 +:10E100000CF0ACFA002010BD0C2010BD10B5044678 +:10E1100000F011FF08B10C2010BD2146012006F0CF +:10E12000B4FA002010BD38B504464FF6FF70ADF8C4 +:10E130000000A079E17988421CD021791F2919D8E3 +:10E1400061791F2916D80022114607E05C000020E3 +:10E1500002060020FFFFFFFF1F0000000FF026FE59 +:10E1600040B90022E07911460FF020FE10B9207A64 +:10E17000072801D9122038BD07F073FF60B90DF0F0 +:10E18000A2FB48B900216846FFF7E8FD20B1204610 +:10E1900005F0BEFB002038BD0C2038BD2DE9FC4148 +:10E1A000817805461A2925D00EDC16292DD2DFE804 +:10E1B00001F02C2C2C2C2C212C2C2C2C2C2C2C2C11 +:10E1C0002C2C2C2C2C2121212A291ED00BDCA1F156 +:10E1D0001E010C2919D2DFE801F0181818181818B8 +:10E1E00018181818180D3A3904290ED2DFE801F072 +:10E1F0000D020D022888B0F5706F06D2012769461E +:10E20000FFF7F8FC18B10220C8E51220C6E59DF81A +:10E21000000000F055FE019C08B1EC3401E004F56B +:10E22000B3749DF8000000F04BFE019E08B1ED367E +:10E2300001E006F267166846FFF7CAFC08B12078CD +:10E2400008B10C20AAE52770A8783070684600F065 +:10E25000C5FE0020A2E57CB50D466946FFF7CAFC65 +:10E26000002618B12E602E7102207CBD9DF80000A2 +:10E2700000F026FE019C9DF80000583400F020FEBE +:10E28000DDF8040084F83E6081682960017B297113 +:10E2900094F83E100029F5D100207CBD10B540B1A6 +:10E2A0000478406813B1B0F84A0003E0B0F84C00BD +:10E2B00000E0FB201B2908D3814206D8B2F5A47FD9 +:10E2C00003D340F64800824201D9122010BD00203D +:10E2D00010BD2DE9FC41044600886946FFF78AFC21 +:10E2E000002843D12289E18801236846FFF7D6FF41 +:10E2F00000283BD1A288618800236846FFF7CEFF43 +:10E30000070033D19DF80000019DB846012640B1B9 +:10E3100085F88961019890F8C80105F5C47538B988 +:10E3200013E085F8FD60019890F82001FC3508B1F4 +:10E330003A2718E0E08868802089A8806088E88013 +:10E34000A08828810122019909E0E088688020895D +:10E35000A8806088E880A08828810199002228464A +:10E360000BF03CF92E7085F80180384616E530B583 +:10E3700085B00D460446008803A9FFF73BFC002842 +:10E3800048D19DF80C0040B100220499E388B1F80F +:10E390004A00984203D2181A02E00122F5E7002051 +:10E3A0006880B1F84C006388984201D2181A00E0E6 +:10E3B0000020A8800020009001900290E088ADF835 +:10E3C00002002089ADF804006088ADF80600A0883E +:10E3D000ADF8080068460BF001F92089BDF804107B +:10E3E000401AE880A088BDF80810401A2881E0880B +:10E3F000BDF80210411A6888814200DD0846688035 +:10E400006088BDF80610411AA888814200DD0846E0 +:10E41000A880002005B030BD10B5044600F08BFD8B +:10E4200020B10AF047FC08B10C2010BD207800F0A4 +:10E4300040FDE279611C0AF082FD08B1002010BDA8 +:10E44000022010BD7CB5044600886946FFF7D2FB68 +:10E4500000282FD1A17801B90321E27802B9032263 +:10E460009DF8005000240123002D019D06D085F861 +:10E470009331019D95F8DC512DBB1CE085F80731E7 +:10E48000019D95F82C513DB9019D95F806511DB996 +:10E49000019D95F87B500DB13A2008E0019D85F86B +:10E4A0000631019B83F80811019981F8092101992E +:10E4B00081F807417CBD019D95F892511DB9019DE0 +:10E4C00095F87B500DB13A2008E0019D85F8923116 +:10E4D000019B83F89411019981F89521019981F8A4 +:10E4E00093417CBD8178CA0802D1C278D30801D09B +:10E4F00012207047490701D4510701D511207047F8 +:10E50000A0E710B5044600F0F8FC08B10C2010BDDF +:10E51000A1791220012904D019B1022901D00329BF +:10E52000F5D1217809B10129F1D1E17929B1012988 +:10E5300003D0022901D00329E9D1618843F6FD7295 +:10E540000B1F30209342E2D2A3881B1F9342DED2DE +:10E55000F9484180A1888180A0790BF0D3FFE07950 +:10E560000CF00CF82078012805D00120BDE81040FF +:10E5700000210CF036B80220F8E710B5122201286D +:10E5800002D008B1104610BD09B10129FAD1012805 +:10E5900007D00DF098F9052811D0BDE810400CF017 +:10E5A000C7BE0BF0A5FF40B10BF0B4FFE248818875 +:10E5B0004088BDE810400CF097BF122010BD0C2021 +:10E5C00010BD2DE9F047DC4E92460C46B0F84C20C9 +:10E5D0000546F1891046814200D20846074695F863 +:10E5E0005210104600F080FC318A814200D2084669 +:10E5F000B5F84A208046718A1046B146814200D261 +:10E600000846064695F85110104600F06DFCB9F822 +:10E610001410814200D208464FF4A4721B2E01D080 +:10E62000904203D11B2F0DD090450BD0E780A4F86A +:10E6300008806680A0805246294620460AF0CEFF18 +:10E640000120207093E430B5428840F67B43911F4F +:10E65000994219D281888C1F9C4215D28A4213D8C4 +:10E66000C288B2F5FA7F0FD2038940F67745A3F14D +:10E670000A04AC4208D2521C4A43B2EB830F03DABD +:10E6800041898089814201D9302030BD002030BDD0 +:10E690001FB5018843F6FD720B1F934205D24388D4 +:10E6A0001C1F944201D28B4202D9302004B010BD0D +:10E6B000017911B1012910D107E0417929B101296E +:10E6C00003D0022901D0032907D1017B39B10129E7 +:10E6D00005D0022903D0032901D01220E6E7C18921 +:10E6E000ADF80210018AADF80410418AADF80610A9 +:10E6F000818AADF80810C18AADF80A10008BADF818 +:10E700000C006846FFF79FFFD0E72DE9F04385B086 +:10E710000546AFF2C051D1E90086FFF7B9FF0028E6 +:10E7200011D10DF0D0F805280CD00DF0CCF804284C +:10E7300008D0814F387828B90BF0F2FBA0F57F4163 +:10E74000FF3903D00C2005B0BDE8F0837A4801AA58 +:10E750003E3801907948029077480621103803909E +:10E7600004A801F0E3F904007ED003210AF07BFD48 +:10E770007148B946018BA4F84A10418BA4F84C109B +:10E78000428B018BFB7D0093BB7D208801F0BBFA9F +:10E7900000B1FFDF208805F005FF218804F10E009D +:10E7A00000F0D3FB66A004F112070068009003217B +:10E7B000684604F073FB002069460A5C3A54401C2A +:10E7C000C0B20328F9D3288A6080688AA080A88A0A +:10E7D000E08094F8522094F85110B9F81C000CF025 +:10E7E00009FF0146A06220460CF012FF002784F8C2 +:10E7F0005E7084F85F70687900F05BFB6076D5F836 +:10E800000600C4F81A006889E083C4F808802673FB +:10E81000012084F8F800024604F1FC012046FFF7CD +:10E82000D0FE8DF800700121684604F037FB9DF89A +:10E83000000000F00701C0F3C1021144C0F3401012 +:10E8400008448DF80000401D2076092801D20830C8 +:10E850002076002120460AF006FD287B0BF052FEB0 +:10E8600069792879AA1D00E00CE00BF023FE58B16D +:10E870000BF050FE69792879AA1D0BF08AFE06007C +:10E8800004D010E009205EE712260CE021460320A8 +:10E890000BF0A7FE060006D16A88298820460CF0F6 +:10E8A000DBFD060008D0208805F07DFE20880621CB +:10E8B00001F080F900B1FFDF304644E738B51E4C67 +:10E8C000207870B90CF0FFFF052805D00BF028FB6D +:10E8D000A0F57F41FF3904D068460CF033FE10B13B +:10E8E00013E00C2038BD0098008805F05CFE00980D +:10E8F0000621008801F05EF900B1FFDF01202070E1 +:10E900000E480C380078FCF7FDFF002038BD70B5CC +:10E910000546FFF798FE002815D12888062101F04A +:10E9200037F904000ED000F04DFB58B1D4F8F000D8 +:10E93000017869B908E000000206002068000020A4 +:10E9400011223300022070BDD4F83C11097809B1BE +:10E950003A2070BD05218171D4F8F01000200881A3 +:10E96000D4F8F010A8884881D4F8F010E88888819D +:10E97000D4F8F0102889C881D4F8F00002894189C0 +:10E980008A4204D88279082A01D88A4201D3122007 +:10E9900070BD29884180D4F8F01002200870002052 +:10E9A00070BD3EB504460AF0DBFCB0B1FC48012561 +:10E9B000A0F13E028571236842F8453F237900218A +:10E9C000137181716946062001F06BF800B1FFDF19 +:10E9D000684601F044F810B10EE012203EBDBDF8CB +:10E9E0000440029880F8F850684601F038F818B9E9 +:10E9F000BDF80400A042F4D100203EBD70B505462C +:10EA00000088062101F0C4F8040007D000F0DAFA0B +:10EA100020B1D4F8F010087830B901E0022070BDC0 +:10EA2000D4F83C01007808B13A2070BD9420005D14 +:10EA300010F0010F18D0D5F802004860D5F8060094 +:10EA4000886054F8F00F698910228181206805F1EF +:10EA50000C010E300FF039FF216803200870216887 +:10EA600028884880002070BD0C2070BD10B5044679 +:10EA700007F0F7FA08B10C2010BD6079032824D8FC +:10EA8000A179012921D8A17B03291ED8617BE1B19D +:10EA900007291AD82179052917D2DFE801F0030CDC +:10EAA000030303002288202A0FD361888A420CD8EE +:10EAB000B1F5804F09D805F071FFB9492079487048 +:10EAC0002046BDE8104006F031B8122010BD10B548 +:10EAD0001F2801D9122010BD06F0A2F8002010BD99 +:10EAE00010B51F2801D9122010BD06F088F80020AB +:10EAF00010BD7CB5012802D000285DD070E005F083 +:10EB0000FDFE00286CD005F02FFF002868D007F02C +:10EB1000A8FA002856D105F0A7FEA0F57F41FF39DD +:10EB200050D105F0B9FF9E4E707848B1012807D04A +:10EB3000042805D0002007F06FF8D0B3FFDF4DE0C8 +:10EB40000022072101A800F0F1FF040032D095480F +:10EB50000321846020460AF013FB204606F065F985 +:10EB60008F4D0121288BA4F84A00688BA4F84C0033 +:10EB7000B08B07F019F90146A0620022204606F08A +:10EB800052FC6A8B298BF07D0090B37D208801F0C8 +:10EB9000BAF800B1FFDF208805F004FD204607F039 +:10EBA0003BF800B1FFDF002204F5C4712046FFF7F7 +:10EBB00008FD13E009207CBD06F016FC044606F0B3 +:10EBC000CFFF08B10C207CBD44B1208805F0EBFCE0 +:10EBD0002088072100F0EEFF00B1FFDF00207CBDA0 +:10EBE00012207CBD70B50D46072100F0D1FF040056 +:10EBF00003D094F8690110B10AE0022070BD94F8C6 +:10EC00006400142801D0152802D194F8AA0108B193 +:10EC10000C2070BD1022294604F5B5700FF055FE8A +:10EC2000012084F86901002070BD10B5072100F0B3 +:10EC3000AFFF18B190F8691111B107E0022010BDC3 +:10EC400090F86410142903D0152901D00C2010BDB0 +:10EC5000022180F86911002010BD2DE9FC410C460D +:10EC60004BF68032122194421DD8E4B16946FEF77A +:10EC7000C1FF002815D19DF8000000F021F9019E88 +:10EC80009DF80000583600F01BF9019DAD1C2F883F +:10EC90002246394630460AF036FA2888B842F6D17C +:10ECA0000020BDE8FC810846FBE77CB504460088EF +:10ECB0006946FEF79FFF002817D19DF8000000F07D +:10ECC000FFF8019D9DF80000583500F0F9F87F210C +:10ECD0000198297269720021A972A17800F82C1F8D +:10ECE000E17841702179817000207CBD1CB50C4613 +:10ECF0006946FEF77FFF00280AD19DF8000000F06A +:10ED0000DFF8019890F8720000B101202070002017 +:10ED10001CBD1CB50C466946FEF76CFF002809D1E6 +:10ED20009DF8000000F0CCF8019890F82C00012824 +:10ED300001D00C201CBD9DF8000000F0C1F8019826 +:10ED400090F86000207000201CBD70B50D4616467E +:10ED5000072100F01DFF38B381880124C388428851 +:10ED600004EB4104AC4217D842F210746343A41080 +:10ED70006243B3FBF2F2521E94B24FF4FA72944221 +:10ED800000D91446A54200D22C46491C641CB4FB91 +:10ED9000F1F24A43521E91B290F8962142B906E030 +:10EDA000020600205C000020FFE7022070BD018405 +:10EDB0003180002070BD10B50C46072100F0E8FE40 +:10EDC00048B180F8D74024B190F8D51009B107F0C8 +:10EDD00008F8002010BD022010BD017889B14178EB +:10EDE00079B141881B290CD381881B2909D3C1889B +:10EDF000022906D3814902684A6540688865002077 +:10EE000070471220704710B504460CF0EFFB204607 +:10EE100006F099FF002010BD2DE9F04115460F4680 +:10EE200006460122114638460CF0E4FB0446012157 +:10EE3000384606F0B9FF844200D20446012130462C +:10EE400000F043F806460121002000F03EF831189A +:10EE5000012096318C4206D901F19600611AB1FB6E +:10EE6000F0F0401C80B228800020BDE8F08110B591 +:10EE7000044600F060F808B10C2010BD601C0AF0D8 +:10EE800035F8207800F0010005F08BFD207800F0C7 +:10EE900001000BF03BFB002010BD10B5044607F04D +:10EEA000E0F808B10C2010BD204605F0C9FE002096 +:10EEB00010BD18B1022801D0012070470020704712 +:10EEC00008B1002070470120704710B5012904D017 +:10EED000022905D0FFDF204610BDC000503001E000 +:10EEE00080002C3084B2F6E7022903D0C0007030D5 +:10EEF00080B2704780003C30FAE710B50CF0E3FCBC +:10EF0000042805D00CF0DFFC052801D0002010BD3E +:10EF1000012010BD10B5FFF7F0FF10B10BF06AFB38 +:10EF200028B907F09EF820B105F017FD08B10120BF +:10EF300010BD002010BD10B5FFF7DFFF18B907F0B6 +:10EF400090F8002800D0012010BD2DE9FE430025D7 +:10EF50000F4680460A260421404603F0C8FF40467B +:10EF60000AF0DCF9062000F0BBFD044615E0694616 +:10EF7000062000F096FD0AE0BDF80400B84206D075 +:10EF80000298042241460E300FF073FC50B16846DF +:10EF900000F065FD0500EFD0641E002C06DD002D9D +:10EFA000E5D005E040460AF0C3F9F5E705B9FFDF13 +:10EFB000D8F800000AF0B1F8761E01D00028CAD0B7 +:10EFC000BDE8FE8390F8C81090F8720020B919B11E +:10EFD000042901D0012070470020704701780029E2 +:10EFE0000AD0416891F8D520002A05D0002281F886 +:10EFF000D520406806F0F5BE70470000C40500202B +:10F0000030B5058825F4004421448CB24FF400410A +:10F0100094420AD2121B92B21B339A4201D2A943E4 +:10F0200007E005F40041214303E0A21A92B2A9438C +:10F030001143018030BD0844083050434A31084430 +:10F0400080B2704770B51D4616460B4604462946E9 +:10F050003046049AFFF7EFFF0646B34200D2FFDFC7 +:10F06000282120460FF0D2FC4FF6FF70A082283EE8 +:10F07000B0B265776080B0F5004F00D9FFDF6188DE +:10F0800005F13C00814200D2FFDF60880835401B5B +:10F09000343880B220801B2800D21B202080002022 +:10F0A000A07770BD8161886170472DE9F05F0D46E2 +:10F0B000C188044600F12809008921F4004620F4A3 +:10F0C000004800F062FB10B10020BDE8F09F4FF057 +:10F0D000000A4FF0010BB0450CD9617FA8EB060088 +:10F0E000401A0838854219DC09EB0600002105802A +:10F0F00041801AE06088617F801B471A083F0DD469 +:10F100001B2F00DAFFDFBD4201DC294600E0B9B267 +:10F11000681A0204120C04D0424502DD84F817A0DC +:10F12000D2E709EB06000180428084F817B0CCE7F3 +:10F1300070B5044600F12802C088E37D20F4004049 +:10F140002BB110440288438813448B4201D2002023 +:10F1500070BD00258A4202D30180458008E0891AEB +:10F160000904090C418003D0A01D00F01EFB08E03B +:10F17000637F00880833184481B26288A01DFFF7BE +:10F180003FFFE575012070BD70B5034600F128040E +:10F19000C588808820F400462644A84202D1002079 +:10F1A000188270BD98893588A84206D3401B75889F +:10F1B0002D1A2044ADB2C01E05E02C1AA5B25C7F0A +:10F1C00020443044401D0C88AC4200D90D809C89FD +:10F1D00024B1002414700988198270BD0124F9E754 +:10F1E00070B5044600F12801808820F400404518DD +:10F1F000208A002825D0A189084480B2A0812988CE +:10F200006A881144814200D2FFDF2888698800267D +:10F210000844A189884212D1A069807F2871698839 +:10F2200019B1201D00F0C1FA08E0637F2888083377 +:10F23000184481B26288201DFFF7E2FEA681268273 +:10F24000012070BD2DE9F0414189878800260446E0 +:10F2500000F12805B94218D004F10A0821F4004051 +:10F260002844418819B1404600F09FFA08E0637FC6 +:10F2700000880833184481B262884046FFF7C0FE18 +:10F28000761C6189B6B2B942E8D13046BDE8F0815A +:10F290002DE9F04104460B4627892830A68827F43B +:10F2A0000041B4F80A8001440D46B74201D1002064 +:10F2B000ECE70AB1481D106023B1627F691D184652 +:10F2C0000FF003FB2E88698804F1080021B18A1928 +:10F2D00096B200F06AFA06E0637F628808339919F3 +:10F2E00089B2FFF78DFE474501D120896081304604 +:10F2F000CCE78188C088814201D10120704700207D +:10F30000704701898088814201D101207047002027 +:10F31000704770B58588C38800F1280425F4004241 +:10F3200023F4004114449D421AD08389058A5E1952 +:10F3300025886388EC18A64214D313B18B4211D3ED +:10F340000EE0437F08325C192244408892B2801A52 +:10F3500080B22333984201D211B103E08A4201D135 +:10F36000002070BD012070BD2DE9F0478846C1889E +:10F370000446008921F4004604F1280720F40045E2 +:10F3800007EB060900F001FA002178BBB54204D969 +:10F39000627FA81B801A002503E06088627F801BC3 +:10F3A000801A083823D4E28962B1B9F80020B9F88C +:10F3B00002303BB1E81A2177404518DBE089384438 +:10F3C000801A09E0801A217740450ADB607FE189D5 +:10F3D0000830304439440844C01EA4F81280BDE807 +:10F3E000F087454503DB01202077E7E7FFE76182EF +:10F3F0000020F4E72DE9F74F044600F12805C08806 +:10F40000884620F4004A608A05EB0A0608B14045A8 +:10F4100002D20020BDE8FE8FE08978B13788B6F8C7 +:10F42000029007EB0901884200D0FFDF207F4FF0F8 +:10F43000000B50EA090106D088B33BE00027A07F0B +:10F44000B9463071F2E7E18959B1607F294408304B +:10F4500050440844B4F81F1020F8031D94F82110FC +:10F460008170E28907EB080002EB0801E18130803E +:10F47000A6F802B002985F4650B1637F3088083327 +:10F48000184481B26288A01DFFF7BAFDE78121E030 +:10F49000607FE18908305044294408442DE0FFE7AB +:10F4A000E089B4F81F102844C01B20F8031D94F80D +:10F4B0002110817009EB0800E28981B202EB08009B +:10F4C000E081378071800298A0B1A01D00F06DF935 +:10F4D000A4F80EB0A07F401CA077A07D08B1E08802 +:10F4E000A08284F816B000BFA4F812B084F817B058 +:10F4F00001208FE7E0892844C01B30F8031DA4F8E1 +:10F500001F10807884F82100EEE710B5818800F1A3 +:10F51000280321F400442344848AC288A14212D0E3 +:10F52000914210D0818971B9826972B11046FFF79A +:10F53000E8FE50B91089283220F4004010441979AF +:10F540000079884201D1002010BD184610BD00F19D +:10F550002803407F08300844C01E1060088808B99E +:10F56000DB1E136008884988084480B270472DE983 +:10F57000F04100F12806407F1C46083090464318B1 +:10F5800008884D88069ADB1EA0B1C01C80B290424C +:10F5900014D9801AA04200DB204687B298183A4658 +:10F5A00041460FF066F9002816D1E01B84B2B8443A +:10F5B000002005E0ED1CADB2F61EE8E7101A80B29F +:10F5C0000119A94206D8304422464146BDE8F0411F +:10F5D0000FF04FB94FF0FF3058E62DE9F04100F140 +:10F5E0002804407F1E4608309046431800250888AE +:10F5F0004F88069ADB1E90B1C01C80B2904212D98F +:10F60000801AB04200DB304685B299182A4640463F +:10F610000FF05BF9701B86B2A844002005E0FF1CC8 +:10F62000BFB2E41EEAE7101A80B28119B94206D8C7 +:10F630002118324640460FF048F9A81985B22846ED +:10F6400024E62DE9F04100F12804407F1E460830F1 +:10F6500090464318002508884F88069ADB1E90B113 +:10F66000C01C80B2904212D9801AB04200DB3046F2 +:10F6700085B298182A4641460FF027F9701B86B2CA +:10F68000A844002005E0FF1CBFB2E41EEAE7101A00 +:10F6900080B28119B94206D82044324641460FF063 +:10F6A00014F9A81985B22846F0E5401D704710B539 +:10F6B000044600F12801C288808820F400431944E0 +:10F6C000904206D0A28922B9228A12B9A28A904217 +:10F6D00001D1002010BD0888498831B1201D00F0FB +:10F6E00064F800202082012010BD637F6288083307 +:10F6F000184481B2201DFFF783FCF2E70021C1818D +:10F7000001774182C1758175704703881380C28972 +:10F7100042B1C28822F4004300F128021A440A6070 +:10F72000C08970470020704710B50446808AA0F554 +:10F730007F41FF3900D0FFDFE088A082E08900B17F +:10F740000120A07510BD4FF6FF71818200218175E7 +:10F75000704710B50446808AA0F57F41FF3900D17B +:10F76000FFDFA07D28B9A088A18A884201D10020AE +:10F7700010BD012010BD8188828A914201D1807D17 +:10F7800008B1002070470120704720F4004221F4A6 +:10F7900000439A4207D100F4004001F4004188423E +:10F7A00001D0012070470020704730B50446008822 +:10F7B0000D4620F40040A84200D2FFDF21884FF41C +:10F7C000004088432843208030BD70B50C000546BA +:10F7D00009D0082C00D2FFDF1DB1A1B2286800F0CB +:10F7E00044F8201D70BD0DB100202860002070BDC0 +:10F7F0000021026803E093881268194489B2002A44 +:10F80000F9D100F032B870B500260D46044608293B +:10F8100000D2FFDF206808B91EE004462068818816 +:10F82000A94202D001680029F7D181880646A94281 +:10F8300001D100680DE005F1080293B2002299425F +:10F8400009D32844491B026081802168096821602E +:10F850000160206000E00026304670BD00230B6090 +:10F860008A8002680A600160704700234360021DBD +:10F87000018102607047F0B50F4601884088154647 +:10F880000C181E46AC4200D3641B3044A84200D979 +:10F89000FFDFA019A84200D9FFDF3819F0BD2DE91C +:10F8A000F041884606460188408815460C181F46D8 +:10F8B000AC4200D3641B3844A84200D9FFDFE019F2 +:10F8C000A84200D9FFDF70883844708008EB04003C +:10F8D000BDE8F0812DE9F041054600881E46174637 +:10F8E000841B8846BC4200D33C442C80688830444A +:10F8F000B84200D9FFDFA019B84200D9FFDF6888FD +:10F900003044688008EB0400E2E72DE9F041068806 +:10F910001D460446701980B2174688462080B842BA +:10F9200001D3C01B20806088A84200D2FFDF70197D +:10F93000B84200D9FFDF6088401B608008EB0600FA +:10F94000C6E730B50D460188CC18944200D3A41AFE +:10F950004088984200D8FFDF281930BD2DE9F041DA +:10F96000C84D04469046A8780E46A04200D8FFDF56 +:10F9700005EB8607B86A50F8240000B1FFDFB868CD +:10F98000002816D0304600F044F90146B868FFF769 +:10F990003AFF05000CD0B86A082E40F8245000D376 +:10F9A000FFDFB9484246294650F82630204698479E +:10F9B0002846BDE8F0812DE9F8431E468C19914692 +:10F9C0000F460546FF2C00D9FFDFB14500D9FFDF08 +:10F9D000E4B200954DB300208046E81C20F00300FF +:10F9E000A84200D0FFDF4946DFF89892684689F8C0 +:10F9F000001089F8017089F8024089F8034089F8FD +:10FA0000044089F8054089F8066089F80770414686 +:10FA100000F008F9002142460F464B460098C01CF2 +:10FA200020F00300009012B10EE00120D4E703EBB8 +:10FA30008106B062002005E0D6F828C04CF820709E +:10FA4000401CC0B2A042F7D30098491C00EB8400D0 +:10FA5000C9B200900829E1D3401BBDE8F88310B576 +:10FA6000044603F08FFD08B1102010BD2078854AB0 +:10FA7000618802EB800092780EE0836A53F82130AF +:10FA800043B14A1C6280A180806A50F82100A060C6 +:10FA9000002010BD491C89B28A42EED86180052041 +:10FAA00010BD70B505460C46084603F06BFD08B165 +:10FAB000102070BD082D01D3072070BD25700020D7 +:10FAC000608070BD0EB56946FFF7EBFF00B1FFDF48 +:10FAD0006846FFF7C4FF08B100200EBD01200EBD2F +:10FAE00010B50446082800D3FFDF6648005D10BD4E +:10FAF0003EB5054600246946FFF7D3FF18B1FFDF86 +:10FB000001E0641CE4B26846FFF7A9FF0028F8D0C2 +:10FB10002846FFF7E5FF001BC0B23EBD5949897872 +:10FB2000814201D9C0B27047FF2070472DE9F041F2 +:10FB3000544B062903D007291CD19D7900E00025EC +:10FB400000244FF6FF7603EB810713F801C00AE0AB +:10FB50006319D7F828E09BB25EF823E0BEF1000FEE +:10FB600004D0641CA4B2A445F2D8334603801846DE +:10FB7000B34201D100201CE7BDE8F041EEE6A0F55C +:10FB80007F43FF3B01D0082901D300207047E5E601 +:10FB9000A0F57F42FF3A0BD0082909D2394A937861 +:10FBA000834205D902EB8101896A51F82000704730 +:10FBB000002070472DE9F04104460D46A4F57F4131 +:10FBC00043F20200FF3902D0082D01D30720F0E6EE +:10FBD0002C494FF000088A78A242F8D901EB85063B +:10FBE000B26A52F82470002FF1D0274839462030ED +:10FBF00050F8252020469047B16A284641F82480D5 +:10FC000000F007F802463946B068FFF727FE0020EB +:10FC1000CFE61D49403131F810004FF6FC71C01C91 +:10FC2000084070472DE9F843164E884605460024E3 +:10FC30002868C01C20F0030028602046FFF7E9FF79 +:10FC4000315D4843B8F1000F01D0002200E02A687E +:10FC50000146009232B100274FEA0D00FFF7B5FDD3 +:10FC60001FB106E001270020F8E706EB8401009AA7 +:10FC70008A602968641C0844E4B22860082CD7D341 +:10FC8000EBE600002406002008EE010070B50E46E9 +:10FC90001D46114600F0D4F804462946304600F0CF +:10FCA000D8F82044001D70BD2DE9F04190460D4666 +:10FCB00004004FF0000610D00027E01C20F00300E5 +:10FCC000A04200D0FFDFDDB141460020FFF77DFDFF +:10FCD0000C3000EB850617B112E00127EDE7614F0C +:10FCE00004F10C00A9003C602572606000EB850007 +:10FCF000206060680EF08AFE41463868FFF765FDB7 +:10FD00003046BDE8F0812DE9FF4F564C804681B06A +:10FD100020689A46934600B9FFDF2068027A424580 +:10FD200003D9416851F8280020B143F2020005B020 +:10FD3000BDE8F08F5146029800F082F886B258462E +:10FD40000E9900F086F885B27019001D87B2206800 +:10FD5000A14639460068FFF756FD04001FD06780B2 +:10FD600025802946201D0E9D07465A4601230095F1 +:10FD7000FFF768F92088314638440123029ACDF80C +:10FD800000A0FFF75FF92088C1193846FFF78AF90C +:10FD9000D9F800004168002041F82840C7E7042056 +:10FDA000C5E770B52F4C0546206800B9FFDF206815 +:10FDB000017AA9420ED9426852F8251051B10023A8 +:10FDC00042F825304A880068FFF748FD2168002086 +:10FDD0000A7A08E043F2020070BD4B6853F8203005 +:10FDE00033B9401CC0B28242F7D80868FFF700FD63 +:10FDF000002070BD70B51B4E05460024306800B968 +:10FE0000FFDF3068017AA94204D9406850F8250024 +:10FE100000B1041D204670BD70B5124E0546002489 +:10FE2000306800B9FFDF3068017AA94206D940681E +:10FE300050F8251011B131F8040B4418204670BD5C +:10FE400010B50A460121FFF7F6F8C01C20F00300A8 +:10FE500010BD10B50A460121FFF7EDF8C01C20F0D7 +:10FE6000030010BD7000002070B50446C2F11005FB +:10FE700028190EF02AFD15F0FF0108D0491EC9B25D +:10FE8000802060542046BDE870400EF09DBD70BDDE +:10FE900030B505E05B1EDBB2CC5CD55C6C40C45475 +:10FEA000002BF7D130BD10B5002409E00B78521EAD +:10FEB00044EA430300F8013B11F8013BD2B2DC09EC +:10FEC000002AF3D110BD2DE9F04389B01E46DDE9CB +:10FED000107990460D00044622D002460846F949A2 +:10FEE000FEF7E1F8102221463846FFF7DCFFE07B01 +:10FEF000000606D5F34A3946102310320846FFF7AC +:10FF0000C7FF102239464846FFF7CDFFF87B0006B1 +:10FF100006D5EC4A4946102310320846FFF7B8FFD1 +:10FF2000102120460EF050FD0DE0103EB6B208EB59 +:10FF30000601102322466846FFF7AAFF22462846FC +:10FF40006946FEF7B0F8102EEFD818D0F2B241464D +:10FF50006846FFF789FF10234A46694604A8FFF761 +:10FF600097FF1023224604A96846FFF791FF224617 +:10FF700028466946FEF797F809B0BDE8F0831023DC +:10FF80003A464146EAE770B59CB01E460546134620 +:10FF900020980C468DF80800202219460DF1090022 +:10FFA0000EF093FC202221460DF129000EF08DFC6D +:10FFB00017A913A8CDE90001412302AA314628461A +:10FFC000FFF781FF1CB070BD2DE9FF4F9FB014AE4D +:10FFD000DDE92D5410AFBB49CDE900762023203157 +:10FFE0001AA8FFF770FF4FF000088DF808804FF057 +:10FFF00001098DF8099054F8010FCDF80A00A08886 +:020000040001F9 +:10000000ADF80E0014F8010C1022C0F340008DF87A +:10001000100055F8010FCDF81100A888ADF81500B3 +:1000200015F8010C2C99C0F340008DF8170006A8B4 +:1000300082460EF04AFC0AA88346102222990EF04E +:1000400044FCA0483523083802AA40688DF83C805B +:10005000CDE900760E901AA91F98FFF734FF8DF8AE +:1000600008808DF809902068CDF80A00A088ADF8C6 +:100070000E0014F8010C1022C0F340008DF810009F +:100080002868CDF81100A888ADF8150015F8010C06 +:100090002C99C0F340008DF8170050460EF015FC67 +:1000A0005846102222990EF010FC86483523083855 +:1000B00002AA40688DF83C90CDE900760E901AA90E +:1000C0002098FFF700FF23B0BDE8F08FF0B59BB09C +:1000D0000C460546DDE922101E461746DDE92032B2 +:1000E000D0F801C0CDF808C0B0F805C0ADF80CC01C +:1000F0000078C0F340008DF80E00D1F80100CDF873 +:100100000F00B1F80500ADF8130008781946C0F3E8 +:1001100040008DF815001088ADF8160090788DF825 +:1001200018000DF1190010220EF0CFFB0DF129007F +:10013000102231460EF0C9FB0DF13900102239466C +:100140000EF0C3FB17A913A8CDE90001412302AAB1 +:1001500021462846FFF7B7FE1BB0F0BDF0B5A3B0AF +:1001600017460D4604461E46102202A828990EF096 +:10017000ACFB06A8202239460EF0A7FB0EA82022D1 +:1001800029460EF0A2FB1EA91AA8CDE900015023B2 +:1001900002AA314616A8FFF796FE1698206023B0F3 +:1001A000F0BDF0B589B00446DDE90E070D4639789B +:1001B000109EC1F340018DF8001031789446C1F3D0 +:1001C00040018DF801101968CDF802109988ADF83A +:1001D000061099798DF808100168CDF8091081880A +:1001E000ADF80D1080798DF80F0010236A46614636 +:1001F00004A8FFF74DFE2246284604A9FDF753FF49 +:10020000D6F801000090B6F80500ADF80400D7F864 +:100210000100CDF80600B7F80500ADF80A0000208F +:10022000039010236A46214604A8FFF731FE2246B8 +:10023000284604A9FDF737FF09B0F0BD1FB51C68BB +:1002400000945B680193136802935268039202461C +:1002500008466946FDF727FF1FBD10B588B0044664 +:10026000106804905068059000200690079008469A +:100270006A4604A9FDF717FFBDF80000208008B00A +:1002800010BD1FB51288ADF800201A88ADF8022005 +:100290000022019202920392024608466946FDF747 +:1002A00002FF1FBD7FB5074B14460546083B9A1C4D +:1002B0006846FFF7E6FF224669462846FFF7CDFF6E +:1002C0007FBD000060EE010070B5044600780E4668 +:1002D000012813D0052802D0092813D10EE0A06808 +:1002E00061690578052003F0DBF8052D0AD0782335 +:1002F00000220520616903F029F803E00520616907 +:1003000003F0CEF831462046BDE8704001F086B8D3 +:1003100010B500F12D02C3799478411D64F00304F7 +:100320002340C371DB070DD04B79547923404B71C7 +:100330000B79127913400B718278C9788A4200D9FF +:10034000817010BD00224A710A71F5E741780129D8 +:1003500000D00C21017070472DE9F04F93B04FF0A1 +:10036000000B0C690D468DF820B0097801260C2091 +:1003700017464FF00D084FF0110A4FF008091B29DE +:1003800075D2DFE811F01B00C30206031E035D03F4 +:100390007003A203B703F803190461049304A004D3 +:1003A000EC042A05340552055D05EE0531063406D8 +:1003B00063067F06F9061D07E606EB0614B12078F2 +:1003C0001D282AD0D5F808805FEA08004FD0012008 +:1003D0008DF82000686A02220D908DF824200A20F2 +:1003E0008DF82500A8690A90A8880028EED098F812 +:1003F000001091B10F2910D27ED2DFE801F07D13F9 +:1004000049DEFEFDFCFBFAF938089CF8F7000228EB +:100410002DD124B120780C2801D00026EFE38DF8EF +:100420002020CBE10520696A03F03AF8A888072864 +:10043000EED1204600F0EDFF022809D0204600F062 +:10044000E8FF032807D9204600F0E3FF072802D27F +:100450000120207004E0002CB8D020780128D7D1EA +:1004600098F80400C11F0A2902D30A2061E0C4E100 +:10047000A070D8F80010E162B8F80410218698F84E +:10048000060084F83200012028700320207044E028 +:100490000728BDD1002C99D020780D28B8D198F824 +:1004A000031094F82F20C1F3C000C2F3C002104221 +:1004B00001D0062000E00720890707D198F8051031 +:1004C0000142D2D198F806100142CED194F83120E1 +:1004D00098F8051020EA02021142C6D194F83220A1 +:1004E00098F8061090430142BFD198F80400C11F4C +:1004F0000A29BAD2617D00E006E281427ED8D8F8AE +:1005000000106160B8F80410218198F80600A0720C +:10051000012028700E20207003208DF82000686ACA +:100520000D9004F12D000990601D0A900F300B9082 +:1005300022E12875FDE3412891D1204600F069FFB2 +:10054000042802D1E078C00704D1204600F061FF02 +:100550000F2884D1A88CD5F80C8080B24FF0400BC6 +:10056000E669FFF747FC324641465B464E46CDF80A +:100570000090FFF732F80B208DF82000686A0D908C +:10058000E0690990002108A8FFF79EFE2078042862 +:1005900006D0A07D58B1012809D003280AD049E32C +:1005A00005202070032028708DF82060CDE184F8AC +:1005B00000A032E712202070E9E11128BCD12046CA +:1005C00000F027FF042802D1E078C00719D02046A8 +:1005D00000F01FFF062805D1E078C00711D1A07DEB +:1005E00002280ED0204600F014FF08E0CAE081E0A7 +:1005F0006FE14EE121E101E1E7E017E0ADE1112813 +:100600009AD1102208F1010104F13C000EF05DF9CD +:10061000607801287ED012202070E078C00760D07A +:10062000A07D0028C8D00128C6D05AE0112890D15A +:10063000204600F0EEFE082804D0204600F0E9FE37 +:10064000132886D104F16C00102208F1010106463E +:100650000EF03BF9207808280DD014202070E178A6 +:10066000C8070DD0A07D02280AD06278022A04D0E3 +:100670000328A1D035E00920F0E708B1012837D1DF +:10068000C80713D0A07D02281DD000200090D4E917 +:10069000062133460EA8FFF776FC10220EA904F1BE +:1006A0003C000EF0E6F8C8B1042042E7D4E9091294 +:1006B000201D8DE8070004F12C0332460EA8616B63 +:1006C000FFF76FFDE9E7606BC1F34401491E006865 +:1006D000C84000F0010040F08000D7E720780928EA +:1006E00006D185F800908DF8209033E32870ECE374 +:1006F0000920FBE711289AD1204600F08AFE0A283B +:1007000002D1E078C00704D1204600F082FE15280F +:100710008DD100E08DE104F13C00102208F10101CF +:1007200006460EF0D2F820780A2816D0162020703F +:10073000D4E90932606B611D8DE80F0004F15C03A0 +:1007400004F16C0247310EA8FFF7C0FC10220EA97D +:1007500030460EF08EF818B1F5E20B20207071E2F1 +:100760002046FFF7D5FDA078216A0A18C0F11001D4 +:1007700010460EF029F923E3394608A8FFF7A4FD37 +:1007800006463BE20228B6D1204600F042FE04288D +:1007900004D3204600F03DFE082809D3204600F08F +:1007A00038FE0E2829D3204600F033FE122824D22A +:1007B000A07D02289FD10E208DF82000686A0D9040 +:1007C00098F801008DF82400F0E3022893D1204628 +:1007D00000F01FFE002810D0204600F01AFE01286D +:1007E000F9D0204600F015FE0C28F4D004208DF836 +:1007F000240098F801008DF825005EE21128FCD154 +:10080000002CFAD020781728F7D16178606A022985 +:1008100011D0002101EB4101182606EBC101102285 +:10082000405808F101010EF050F80520696A00F007 +:10083000E3FD2670F1E50121ECE70B28DDD1002C6A +:10084000DBD020781828D8D16078616A02281CD0C3 +:100850005FF0000000EB4002102000EBC2000958DE +:10086000B8F8010008806078616A02280FD0002083 +:1008700000EB4002142000EBC2000958404650F83B +:10088000032F0A604068486039E00120E2E7012058 +:10089000EEE71128B1D1002CAFD020781928ACD1C7 +:1008A0006178606A022912D05FF0000101EB41011A +:1008B0001C2202EBC1011022405808F101010EF088 +:1008C00004F80520696A00F097FD1A20B6E00121BE +:1008D000ECE7082891D1002C8FD020781A288CD1F1 +:1008E000606A98F80120017862F347010170616A3B +:1008F000D8F8022041F8012FB8F8060088800520BA +:10090000696A00F079FD8EE2072012E63878012846 +:1009100094D1182204F1140079680EF01BF8E079E4 +:10092000C10894F82F0001EAD001E07861F30000DB +:10093000E070217D002974D12178032909D0C007F6 +:1009400025D0032028708DF82090686A0D904120F2 +:1009500004E3607DA178884201D90620E9E50226FA +:100960002671E179204621F0E001E171617A21F000 +:10097000F0016172A17A21F0F001A172FFF7C8FCC9 +:100980002E708DF82090686A0D900720E6E2042012 +:10099000ACE6387805289DD18DF82000686A0D9066 +:1009A000B8680A900720ADF824000A988DF830B096 +:1009B0006168016021898180A17A817104202070A1 +:1009C000F4E23978052985D18DF82010696A0D91F6 +:1009D000391D09AE0EC986E80E004121ADF824107C +:1009E0008DF830B01070A88CD7F80C8080B24026FB +:1009F000A769FFF711FA41463A463346C846CDF893 +:100A00000090FEF71EFE002108A8FFF75DFCE078CD +:100A100020F03E00801CE0702078052802D00F20D6 +:100A20000CE049E1A07D20B1012802D0032802D0CA +:100A300002E10720BFE584F80080EEE42070ECE4DA +:100A4000102104F15C0002F052FA606BB0BBA07D93 +:100A500018B1012801D00520FDE006202870F748D4 +:100A60006063A063BEE23878022894D1387908B177 +:100A70002875B3E3A07D022802D0032805D022E028 +:100A8000B8680028F5D060631CE06078012806D0C3 +:100A9000A07994F82E10012805D0E84806E0A17945 +:100AA00094F82E00F7E7B8680028E2D06063E07899 +:100AB000C00701D0012902D0E04803E003E0F86854 +:100AC0000028D6D0A063062010E68DF82090696A31 +:100AD0000D91E1784846C90709D06178022903D110 +:100AE000A17D29B1012903D0A17D032900D00720D0 +:100AF000287031E138780528BBD1207807281ED02E +:100B000084F800A005208DF82000686A0D90B86870 +:100B10000A90ADF824A08DF830B003210170E1787F +:100B2000CA070FD0A27D022A1AD000210091D4E971 +:100B3000061204F15C03401CFFF725FA67E384F812 +:100B40000090DFE7D4E90923211D8DE80E0004F1B0 +:100B50002C0304F15C02401C616BFFF722FB56E39F +:100B6000626BC1F34401491E1268CA4002F00101E0 +:100B700041F08001DAE738780528BDD18DF82000F2 +:100B8000686A0D90B8680A90ADF824A08DF830B06E +:100B9000042100F8011B102204F15C010DF095FE08 +:100BA000002108A8FFF790FB2078092801D0132026 +:100BB00044E70A2020709BE5E078C10742D0A17D80 +:100BC000012902D0022927D038E0617808A801293C +:100BD00016D004F16C010091D4E9061204F15C0313 +:100BE000001DFFF7BBFA0A20287003268DF820802D +:100BF000686A0D90002108A8FFF766FBDDE2C3E2FA +:100C000004F15C010091D4E9062104F16C03001D9C +:100C1000FFF7A4FA0026E9E7C0F3440114290DD236 +:100C20004FF0006101EBB0104FEAB060E070607807 +:100C3000012801D01020BEE40620FFE660780128DC +:100C40003FF4B7AC0A2051E5E178C90708D0A17D8F +:100C5000012903D10B20287004202FE028702DE0FB +:100C60000E2028706078616B012817D004F15C03B6 +:100C700004F16C020EA8FFF7E1FA2046FFF748FBEB +:100C8000A0780EAEC0F1100130440DF09DFE06209C +:100C90008DF82000686A09960D909AE004F16C03C3 +:100CA00004F15C020EA8FFF7C9FAE9E739780229D6 +:100CB00003D139790029D1D029758FE28DF8200030 +:100CC000686A0D9058E538780728F6D1D4E90921EB +:100CD0006078012808D004F16C00CDE9000202918F +:100CE00005D104F16C0304E004F15C00F5E704F1C4 +:100CF0005C0304F14C007A680646216AFFF764F948 +:100D00006078012821D1A078216A0A18C0F1100169 +:100D100010460DF059FED4E90923606B04F12D0152 +:100D20008DE80F0004F15C0304F16C0231460EA85B +:100D300000E055E2FFF7CAF910220EA904F13C00C9 +:100D40000DF097FD08B10B20AFE485F8008000BFDF +:100D50008DF82090686A0D908DF824A00CE5387805 +:100D60000528AAD18DF82000686A0D90B8680A900D +:100D7000ADF824A08DF830B080F8008061780129AA +:100D80001AD0D4E9093204F12D01A66B0392009622 +:100D9000CDE9011304F16C0304F15C0204F14C0190 +:100DA000401CFFF793F9002108A8FFF78DFA60783F +:100DB000012805D0152041E6D4E90923611DE4E7A7 +:100DC0000E20287006208DF82000686ACDF824B027 +:100DD0000D90A0788DF82800CEE438780328C0D193 +:100DE000E079C00770D00F202870072066E73878B8 +:100DF00004286BD11422391D04F114000DF0AAFD52 +:100E0000616A208CA1F80900616AA078C871E17953 +:100E1000626A01F003011172616A627A0A73616A9F +:100E2000A07A81F82400162060E485F800A08DF8EF +:100E30002090696A50460D9190E0000060EE01003C +:100E40003878052842D1B868A8616178606A0229BB +:100E500001D0012100E0002101EB4101142606EB45 +:100E6000C1014058082102F042F86178606A022905 +:100E700001D0012100E0002101EB410106EBC1019D +:100E8000425802A8E169FFF70DFA6078626A022809 +:100E900001D0012000E0002000EB4001102000EB19 +:100EA000C1000223105802A90932FEF7F1FF626A5D +:100EB000FD4B0EA80932A169FFF7E3F96178606A7A +:100EC000022904D0012103E042E18BE0BDE00021D2 +:100ED00001EB4101182606EBC101A27840580EA98A +:100EE0000DF0F3FC6178606A022901D0012100E075 +:100EF000002101EB410106EBC1014058A1780844F3 +:100F0000C1F110010DF060FD05208DF82000686A28 +:100F10000D90A8690A90ADF824A08DF830B0062194 +:100F200001706278616A022A01D0012200E0002289 +:100F300002EB420206EBC202401C895810220DF05F +:100F4000C4FC002108A8FFF7BFF91220C5F818B0AB +:100F500028708DF82090686A0D900B208DF8240081 +:100F60000AE43878052870D18DF82000686A0D9061 +:100F7000B8680A900B20ADF824000A980721017088 +:100F80006178626A022901D0012100E0002101EBB1 +:100F90004103102101EBC30151580988A0F8011049 +:100FA0006178626A022902D0012101E02FE100216B +:100FB00001EB4103142101EBC30151580A6840F8C9 +:100FC000032F4968416059E01920287001208DF8ED +:100FD000300077E6162028708DF830B0002108A880 +:100FE000FFF772F9032617E114202870B0E638786D +:100FF00005282AD18DF82000686A0D90B8680A90FB +:10100000ADF824A08DF830B080F800906278616A65 +:101010004E46022A01D0012200E0002202EB4202E9 +:101020001C2303EBC202401C895810220DF04DFC1A +:10103000002108A8FFF748F9152028708DF82060D6 +:10104000686A0D908DF824603CE680E038780528C9 +:101050007DD18DF82000686A0D90B8680A90ADF8CF +:10106000249009210170616909784908417061691A +:1010700051F8012FC0F802208988C18020781C28EF +:10108000A8D1A1E7E078C00702D04FF0060C01E03C +:101090004FF0070C607802280AD04FF0000000BF24 +:1010A00000EB040101F1090105D04FF0010004E05B +:1010B0004FF00100F4E74FF000000B78204413EAF2 +:1010C0000C030B7010F8092F02EA0C02027004D115 +:1010D0004FF01B0C84F800C0D2B394F801C0BCF1EF +:1010E000010F00D09BB990F800C0E0465FEACC7CCD +:1010F00004D028F001060670102606E05FEA887C1E +:1011000005D528F00206067013262E70032694F8E3 +:1011100001C0BCF1020F00D092B991F800C05FEAA3 +:10112000CC7804D02CF001060E70172106E05FEA9F +:101130008C7805D52CF002060E701921217000263E +:101140000078D0BBCAB3C3BB1C20207035E012E0CE +:1011500002E03878062841D11A2019E420780128C5 +:101160003CD00C283AD02046FFF7F0F809208DF843 +:101170002000686A0D9031E03878052805D00620F7 +:10118000387003261820287046E005218DF82010BD +:10119000686A0D90B8680A900220ADF8240001201A +:1011A0008DF830000A980170297D4170394608A8F1 +:1011B000FFF78AF8064618202870012E0ED02BE083 +:1011C00001208DF82000686A0D9003208DF824001E +:1011D000287D8DF8250085F814B012E0287D80B1B7 +:1011E0001D202070172028708DF82090686A0D90BF +:1011F00002208DF82400394608A8FFF765F8064656 +:101200000AE00CB1FE2020709DF8200020B10021E2 +:1012100008A8FFF759F810E413B03046BDE8F08F86 +:101220002DE9F04387B00C464E6900218DF804107B +:1012300001202578034602274FF007094FF0050CDF +:1012400085B1012D53D0022D39D1FE2030708DF89B +:101250000030606A059003208DF80400207E8DF830 +:10126000050063E02179012925D002292DD0032929 +:1012700028D0042923D1B17D022920D131780D1F36 +:10128000042D04D30A3D032D01D31D2917D1218933 +:10129000022914D38DF80470237020899DF804105E +:1012A00088421BD2082001E058EE01008DF80000B2 +:1012B000606A059057E070780128EBD0052007B0F0 +:1012C000BDE8F0831D203070E4E771780229F5D184 +:1012D00031780C29F3D18DF80490DDE7083402F859 +:1012E00004CB94E80B0082E80B000320E7E71578B5 +:1012F000052DE4D18DF800C0656A059595680295C5 +:101300008DF8101094F80480B8F1010F13D0B8F1E3 +:10131000020F2DD0B8F1030F1CD0B8F1040FCED1BD +:10132000ADF804700E202870207E68700021684699 +:10133000FEF7CAFF0CE0ADF804700B202870207E89 +:10134000002100F01F0068706846FEF7BDFF37708F +:101350000020B4E7ADF804708DF8103085F800C0B7 +:10136000207E6870277011466846FEF7ADFFA6E73D +:10137000ADF804902B70207F6870607F00F0010052 +:10138000A870A07F00F01F00E870E27F2A71C007FC +:101390001CD094F8200000F00700687194F8210038 +:1013A00000F00700A87100216846FEF78DFF28684D +:1013B000F062A8883086A87986F83200A069407863 +:1013C00070752879B0700D203070C1E7A97169710E +:1013D000E9E700B587B005280CD101208DF80000A1 +:1013E0008DF80400002005918DF80500014668463F +:1013F000FEF76AFF07B000BD70B50C46054602F067 +:101400004FF821462846BDE870407823002201F0BD +:101410009DBF08B1007870470C20704770B50C0074 +:1014200005784FF000010CD021702146F2F793F9B6 +:1014300069482178405D884201D1032070BD0220B7 +:1014400070BDF2F788F9002070BD0279012A05D03D +:1014500000220A704B78012B02D003E00420704771 +:101460000A758A6102799300521C0271C1500320EF +:101470007047F0B587B00F4605460124287905EB83 +:10148000800050F8046C7078411E02290AD252493B +:101490003A46083901EB8000314650F8043C2846B2 +:1014A000984704460CB1012C11D12879401E10F048 +:1014B000FF00287101D00324E0E70A208DF8000026 +:1014C000706A0590002101966846FFF7A7FF032C7C +:1014D000D4D007B02046F0BD70B515460A46044684 +:1014E00029461046FFF7C5FF064674B12078FE284E +:1014F0000BD1207C30B100202870294604F10C006B +:10150000FFF7B7FF2046FEF721FF304670BD70475A +:1015100070B50E4604467C210DF078FA0225012EA6 +:1015200003D0022E04D0052070BD0120607000E0C1 +:1015300065702046FEF70AFFA575002070BD28B132 +:10154000027C1AB10A4600F10C01C5E70120704780 +:1015500010B5044686B0052001F0A2FF2078FE28D1 +:1015600006D000208DF8000069462046FFF7E7FF0F +:1015700006B010BD7CB50E4600218DF804104178F0 +:10158000012903D0022903D0002405E0046900E00A +:1015900044690CB1217C89B16D4601462846FFF7AC +:1015A00054FF032809D1324629462046FFF794FF0D +:1015B0009DF80410002900D004207CBD04F10C0526 +:1015C000EBE730B40C460146034A204630BC034BDF +:1015D0000C3AFEF756BE00009CEE010058EE0100EA +:1015E00070B50D46040011D085B1210128460DF0DB +:1015F000EBF910224E4928460DF067F94C480121BD +:101600000838018044804560002070BD012070BD15 +:1016100070B5474E00240546083E10E07068AA7B6E +:1016200000EB0410817B914208D1C17BEA7B91429F +:1016300004D10C2229460DF01CF930B1641C30880D +:101640008442EBDB4FF0FF3070BD204670BD70B5BB +:101650000D46060006D02DB1FFF7DAFF002803DBA8 +:10166000401C14E0102070BD314C083C208862887A +:10167000411C914201D9042070BD6168102201EB28 +:10168000001031460DF021F92088401C2080287080 +:10169000002070BD70B514460D0018D0BCB10021FB +:1016A000A170022802D0102811D105E0288870B15D +:1016B0000121A170108008E02846FFF7A9FF00284B +:1016C00005DB401CA070A8892080002070BD01208F +:1016D00070BD70B5054614460E000BD0002030706A +:1016E000A878012808D005D91149A1F108010A8874 +:1016F00090420AD9012070BD24B128782070288832 +:10170000000A5070022008700FE064B1496810228E +:1017100001EB0011204610390DF0D7F8287820731E +:101720002888000A607310203070002070BD00000F +:101730007C0000202DE9F04190460C46074600252C +:10174000FE48072F00EB881607D2DFE807F00707EF +:10175000070704040400012500E0FFDF06F8147009 +:10176000002D13D0F548803000EB880191F8270058 +:10177000202803D006EB4000447001E081F82640A9 +:1017800006EB44022020507081F82740BDE8F0812C +:10179000F0B51F4614460E460546202A00D1FFDF4D +:1017A000E649E648803100EB871C0CEB440001EB76 +:1017B0008702202E07D00CEB460140784B7848700A +:1017C000184620210AE092F82530407882F825005A +:1017D000F6E701460CEB410005704078A142F8D1D4 +:1017E00092F82740202C03D00CEB4404637001E0F6 +:1017F00082F826300CEB41042023637082F8271016 +:10180000F0BD30B50D46CE4B44190022181A72EBCC +:10181000020100D2FFDFCB48854200DDFFDFC9486F +:101820004042854200DAFFDFC548401C844207DAA7 +:10183000002C01DB204630BDC148401C201830BDC3 +:10184000BF48C043FAE710B504460168407ABE4A73 +:1018500052F82020114450B10220084420F07F406B +:10186000F9F78FFC94F90810BDE81040C9E704208F +:10187000F3E72DE9F047B14E803696F82D50DFF8AA +:10188000BC9206EB850090F8264034E009EB851702 +:101890004FF0070817F81400012806D004282ED0AE +:1018A00005282ED0062800D0FFDF01F0E3F801461E +:1018B00007EB4400427806EB850080F8262090F87C +:1018C0002720A24202D1202280F82720084601F0DA +:1018D000DCF82A4621460120FFF72CFF9B484146B1 +:1018E00000EB041002682046904796F82D5006EB56 +:1018F000850090F82640202CC8D1BDE8F087022052 +:1019000000E003208046D0E710B58C4C20218034C5 +:1019100084F8251084F8261084F82710002084F815 +:10192000280084F82D0084F82E10411EA16044F890 +:10193000100B2074607420736073A0738449E07787 +:1019400020750870487000217C4A103C02F8110094 +:10195000491CC9B22029F9D30120F9F700FB002066 +:10196000F9F7FDFA012084F82200F9F79DFF794884 +:10197000F9F7A9FF764CA41E20707748F9F7A3FF6A +:101980006070BDE81040F9F777BA10B5F9F799FA29 +:101990006F4CA41E2078F9F7AFFF6078F9F7ACFF21 +:1019A000BDE8104001F09EB8202070472DE9F34FAC +:1019B000624E0025803606EB810A89B09AF8250030 +:1019C000202822D0691E02916049009501EB001089 +:1019D0008146D0E90112C0680391CDE90420B08BA3 +:1019E000ADF81C00B07F8DF81E009DF81500C8B141 +:1019F0000227554951F820400399E219114421F07A +:101A00007F41019184B102210FE00120F9F7A7FA8B +:101A10000020F9F7A4FAF9F772FA01F063F886F8F2 +:101A20002F50A0E00427E4E700218DF818100228C9 +:101A300001D0012820D10398391901440998081AC6 +:101A40009DF81C1020F07F4001B10221333181420A +:101A50000BD203208DF815000398C4F13201401A0F +:101A600020F07F40322403900CE096F8240018B94F +:101A700001F0A0F900284CD0322C03D214B101F0AF +:101A800025F801E001F02EF8314A107818B393469A +:101A90005278039B121B00219DF81840984601289C +:101AA0001AD0032818D000208DF81E00002A04DD6B +:101AB000981A039001208DF818009DF81C0000B1C1 +:101AC00002210398254A20F07F40039003AB099838 +:101AD00001F014F810B110E00120E5E79DF81D00B9 +:101AE00018B99BF80000032812D08DF81C50CDF8CF +:101AF0000C808DF818408DF81E509DF8180058B1D4 +:101B000003980123C11900221846F9F77BFA06E071 +:101B100000200BB0BDE8F08F0120F9F720FA99F909 +:101B20000C20012300200199F9F76CFA012086F8B6 +:101B30002F008AF828502022694611E06C08002006 +:101B4000FF7F841E0020A107ACEE01006C06002080 +:101B50008E000020FB31010073180100FFFF3F00E1 +:101B6000F9480CF0F7FE0120D3E72DE9F05FDFF82C +:101B7000D883064608EB860090F82550202D1FD00C +:101B8000A8F180002C4600EB8617A0F50079DFF85D +:101B9000BCB305E0A24607EB4A004478202C0AD0EB +:101BA000F9F77CFA09EB04135A4601211B1D00F0DA +:101BB000A5FF0028EED0AC4202D0334652461EE0CC +:101BC000E34808B1AFF30080F9F768FA98F82F20DE +:101BD0006AB1D8F80C20411C891A0902CA1701EB16 +:101BE00012610912002902DD0020BDE8F09F314694 +:101BF000FFF7DCFE08B10120F7E733462A46202133 +:101C00000420FFF7C5FDEFE72DE9F041CE4C256933 +:101C1000F9F744FA401B0002C11700EB11600012F3 +:101C200000D4FFDF94F8220000B1FFDF012784F821 +:101C3000227094F82E00202800D1FFDF94F82E6047 +:101C4000202084F82E00002584F82F5084F820509E +:101C500084F82150BF4825600078022833D003283B +:101C600031D000202077A068401C05D04FF0FF3015 +:101C7000A0600120F9F773F90020F9F770F9F9F77E +:101C80006EFAF9F766FAF9F73AF90CF02BF9B2485F +:101C9000056005604FF0E0214FF40040B846C1F800 +:101CA0008002F1F776F994F82D703846FFF75DFF62 +:101CB0000028FAD0A448803800EB871010F81600EE +:101CC000022802D006E00120CCE73A463146062041 +:101CD000FFF730FD84F8238004EB870090F826009E +:101CE000202804D09B48801E4078F9F70BFE207F07 +:101CF000002803D0F9F723FA2577657746E50146F2 +:101D0000914810B590F82D200024803800EB821007 +:101D100010F814302BB1641CE4B2202CF8D320202E +:101D200010BD8E4800EB0410016021460120FFF732 +:101D300001FD204610BD10B5012801D0032800D1B7 +:101D400071B3814A92F82D307F4C0022803C04EB25 +:101D5000831300BF13F812400CB1082010BD521CB1 +:101D6000D2B2202AF6D37B4A48B1022807D00729ED +:101D700016D2DFE801F01506080A0C0E100000214B +:101D80000AE01B2108E03A2106E0582104E077210F +:101D900002E0962100E0B52151701070002010BDC6 +:101DA000072010BD6B4810B54078F9F7EAF980B20A +:101DB00010BD10B5202811D2634991F82D30A1F142 +:101DC000800202EB831414F810303BB191F82D30EF +:101DD00002EB831212F81020012A01D0002010BD5E +:101DE00091F82D2001460020FFF7A4FC012010BD32 +:101DF00010B5F9F753F9BDE81040F9F7C2B92DE96C +:101E0000F0410E46504F01782025803F0C4607EBED +:101E1000831303E0254603EB45046478944202D023 +:101E2000202CF7D108E0202C06D0A14206D103EBEC +:101E300041014978017007E00020A7E403EB44006A +:101E400003EB450140784870454F7EB127B1002132 +:101E500040F2DA30AFF300803078A04206D127B1EB +:101E6000002140F2DD30AFF30080357027B1002152 +:101E700040F2E230AFF30080012087E410B5426801 +:101E80000B689A1A1202D41702EB1462121216D4BB +:101E9000497A91B1427A82B9324A006852F82110E7 +:101EA000126819441044001D891C081A0002C11749 +:101EB00000EB11600012322801DB012010BD002070 +:101EC00010BD2DE9F04781461F48244E00EB8100EC +:101ED000984690F825402020107006F500701546B1 +:101EE00000EB81170BE000BF06EB04104946001D14 +:101EF000FFF7C4FF28B107EB44002C704478202C76 +:101F0000F2D1297888F8001013E000BF06EB041521 +:101F1000291D4846FFF7B2FF68B988F80040A97B41 +:101F200099F80A00814201D80020E6E407EB44005A +:101F30004478202CEAD10120DFE42DE9FC410E4653 +:101F400007460024054D18E0EC080020FFFF3F0085 +:101F5000000000008E00002000F500406C0600200C +:101F600000000000ACEE01009DF8000005EB001041 +:101F70008168384600F0D6FD01246B4601AA31463F +:101F80003846FFF79EFF0028EED02046BDE8FC81D2 +:101F900070B50446FF480125A54300EB841100EB12 +:101FA000851040220CF091FCFB4E26B1002140F23E +:101FB0005C40AFF30080F748803000EB850100EB18 +:101FC0008400D0F82500C1F8250026B100214FF487 +:101FD0008C60AFF30080284670BD2DE9FC4184463B +:101FE000EC481546089C00EB85170E4617F81400C0 +:101FF000012803D0022801D00020C7E70B46E74A9A +:102000000121604600F07AFDA8B101AB6A4629467D +:102010003046FFF756FF70B1DE489DF804209DF86A +:102020000010803000EB85068A4208D02B46052040 +:10203000FFF7AEFB0BE02A462146042014E02029DE +:1020400003D007EB4100407801E096F8250007EB4C +:10205000440148709DF80000202809D007EB40009B +:1020600044702A4621460320FFF764FB01208DE7D8 +:1020700006F8254F0120F070F3E7C94901EB001085 +:10208000001DFFF7E0BB7CB51D46134604460E4617 +:1020900000F1080221461846F9F780F894F9080083 +:1020A0000F2804DD1F3820722068401C206096B184 +:1020B0000220BC4951F82610461820686946801B4A +:1020C00020F07F40206094F908002844C01C1F289D +:1020D00003DA012009E00420EBE701AAF9F75EF832 +:1020E0009DF8040010B10098401C009000992068F1 +:1020F00031440844C01C20F07F4060607CBD2DE965 +:10210000FE430C460646097860799072207998461D +:102110001546507241B19F48803090F82E1020290A +:102120000AD00069401D0BE0D4E90223217903B0F5 +:102130002846BDE8F043A6E79B484178701D084457 +:1021400020F07F47217900222846A368FFF79BFFF4 +:102150003946284600F0E6FCD4E902322179684687 +:10216000FFF791FF41462846019CFFF7E6FE2B460C +:1021700022460021304600F0C1FC002803D1314640 +:10218000284600F0CFFCBDE8FE832DE9FE4F8146D6 +:1021900000F084FC30B1002799F8000020B1002045 +:1021A000BDE8FE8F0127F7E77A4D7B4C4FF0000A20 +:1021B000803524B1002140F2D340AFF3008095F880 +:1021C0002D8085F823A0002624B100214FF49B60C8 +:1021D000AFF300801FB94046FFF7DAFE804624B116 +:1021E00000214FF49C60AFF30080F8F757FF43469F +:1021F0006A464946FFF783FF24B1002140F2E640DA +:10220000AFF3008095F82E0020280CD029690098A3 +:10221000401A0002C21700EB1260001203D5684694 +:1022200000F080FC012624B100214FF49E60AFF342 +:10223000008095F823000028BBD124B1002140F292 +:10224000F640AFF30080F8F729FF6B46534A0021B0 +:1022500000F054FC0028A3D027B941466846FFF798 +:102260006CFE064326B16846FFF7EDFAC9F8080090 +:1022700024B1002140F20950AFF3008001208FE724 +:102280002DE9FF5F8A46814600F008FC414C80340E +:1022900010B39AF80000002710B1012800D0FFDF2A +:1022A0003D4D25B1002140F27F50AFF30080012069 +:1022B000A84600905FEA080604D0002140F287504B +:1022C000AFF30080009800F0E0FB94F82D50002060 +:1022D00084F8230067B119E094F82E000127202824 +:1022E00000D1FFDF9AF800000028D9D0FFDFD7E740 +:1022F0002846FFF74DFE054626B1002140F29150D9 +:10230000AFF3008094F823000028D3D126B1002138 +:1023100040F29B50AFF30080F8F7C0FE83462B4697 +:1023200001AA5146FFF7EBFE5FEA060804D0002140 +:1023300040F2A250AFF300803B462A4601A958461E +:10234000CDF80090FFF749FE064604EB850090F8B3 +:1023500028B0B8F1000F04D0002140F2A950AFF32B +:10236000008000F087FB0090B8F1000F04D000213E +:1023700040F2AF50AFF3008094F82300002899D1C9 +:10238000B8F1000F04D0002140F2B750AFF3008045 +:1023900003490BE06C08002000000000FFFF3F0035 +:1023A0006C060020ACEE01008E00002001EB09104D +:1023B0000DF1040C00F104009CE80E0080E80E0012 +:1023C0004EB35FEA080604D0002140F2C450AFF3D8 +:1023D00000803BEA070012D094F82E0020280ED18E +:1023E00026B1002140F2C950AFF300802846FFF724 +:1023F000BCFB20B99AF80000D8B3012849D0B8F145 +:10240000000F04D0002140F2E650AFF300802846D0 +:1024100000F029FB01265FEA080504D0002140F204 +:10242000EF50AFF30080009800F02FFB25B10021A2 +:1024300040F2F350AFF300808EB194F82D0004EB1E +:10244000800090F82600202809D025B1002140F214 +:10245000FA50AFF30080F9484078F9F753FA25B104 +:10246000002140F2FF50AFF3008004B03046BDE8D9 +:10247000F09FFFE7B8F1000F04D0002140F2D150E7 +:10248000AFF3008094F82D2049460420FFF752F95D +:10249000C0E7002E3FF40EAF002140F2DC50AFF356 +:1024A000008007E72DE9F84FE54D814695F82D00AE +:1024B0004FF00008E34C4FF0010B474624B10021D8 +:1024C00040F20D60AFF30080584600F0DEFA85F868 +:1024D000237024B1002140F21260AFF3008095F820 +:1024E0002D00FFF755FD064695F8230028B1002C76 +:1024F000E4D000214FF4C3604BE024B1002140F24E +:102500001C60AFF30080CE48803800EB861111F8D4 +:102510001900032856D1334605EB830A4A469AF838 +:102520002500904201D1012000E0002000900AF136 +:1025300025000021FFF763FC01460098014203D00B +:1025400001228AF82820AF77E1B324B1002140F2BC +:102550002160AFF30080324649460120FFF7EAF8D8 +:102560009AF828A024B1002140F22C60AFF300803B +:1025700000F080FA834624B1002140F23160AFF3CD +:10258000008095F8230038B1002C97D0002140F24C +:102590003560AFF3008091E7BAF1000F07D095F8EE +:1025A0002E00202803D13046FFF7DFFAE0B124B136 +:1025B000002140F24960AFF30080304600F053FA4A +:1025C0004FF0010824B1002140F25260AFF30080C7 +:1025D000584600F05AFA24B1002140F25660AFF399 +:1025E00000804046BDE8F88F002CF1D0002140F279 +:1025F0004460AFF30080E6E70020F8F789BC0120D3 +:10260000F8F786BC8D48007870472DE9F0418C4C76 +:1026100094F82E0020281FD194F82D6004EB860733 +:1026200097F82550202D00D1FFDF8549803901EB37 +:10263000861000EB4500407807F8250F0120F87060 +:1026400084F82300294684F82E5032460220223492 +:10265000FFF770F8002020700FE42DE9F0417A4E6A +:10266000774C012538B1012821D0022879D00328E0 +:102670007DD0FFDFF0E700F029FAFFF7C6FF207EEC +:1026800000B1FFDF84F821500020F8F768FCA16852 +:10269000481C04D0012300221846F8F7B3FC14F8B4 +:1026A0002E0F217806EB01110A68012154E0FFF793 +:1026B000ACFF0120F8F753FC94F8210050B1A0685A +:1026C000401C07D014F82E0F217806EB01110A6880 +:1026D000062141E0207EDFF86481002708F102082E +:1026E000012803D002281ED0FFDFB5E7A777F8F74F +:1026F00026FD98F80000032801D165772577607DD5 +:10270000524951F8200094F8201051B948B161683D +:102710000123091A00221846F8F774FC02202076DB +:102720009AE7277698E784F8205000F0CFF9A07F49 +:1027300050B198F8010061680123091A0022184677 +:10274000F8F760FC257600E0277614F82E0F217844 +:1027500006EB01110A680021BDE8F041104700E0D6 +:1027600005E036480078BDE8F041F9F7CBB8FFF74F +:102770004CFF14F82E0F217806EB01110A68052191 +:10278000EAE710B52E4C94F82E00202800D1FFDF88 +:1027900014F82E0F21782C4A02EB01110A68BDE8CB +:1027A0001040042110477CB5254C054694F82E00B6 +:1027B000202800D1FFDFA068401C00D0FFDF94F884 +:1027C0002E00214901AA01EB0010694690F90C0086 +:1027D0002844F8F7E3FC9DF904000F2801DD0120EF +:1027E00000E00020009908446168084420F07F411F +:1027F000A16094F82100002807D002B00123BDE8B1 +:10280000704000221846F8F7FDBB7CBD30B5104A79 +:102810000B1A541CB3EB940F1ED3451AB5EB940F4F +:102820001AD3934203D9101A43185B1C14E0954243 +:1028300010D9511A0844401C43420DE08C0000207E +:10284000EC080020000000006C060020ACEE010047 +:10285000FF7F841EFFDF0023184630BD01230022C6 +:1028600001460220F8F7CEBB0220F8F778BBF8F754 +:1028700015BC2DE9FC47B14C054694F82E002028E4 +:1028800000D1FFDF642D58D3AD4A0021521B71EBFC +:10289000010052D394F82E20A0462046DFF8A492DF +:1028A00090F82D7009EB0214D8F8000001AA284412 +:1028B0006946F8F773FC9DF90400002802DD0098D2 +:1028C000401C0090A068009962684618B21A22F075 +:1028D0007F42B2F5800F30D208EB8702444692F86F +:1028E0002520202A0AD009EB02125268101A000291 +:1028F000C21700EB1260001288421EDBA068401C69 +:1029000010D0F8F7CBFBA168081A0002C11700EB42 +:1029100011600012022810DD0120F8F720FB4FF0B3 +:10292000FF30A06020682844206026F07F402061AE +:10293000012084F82300BDE8FC870020FBE72DE997 +:10294000F0477E4C074694F82D00A4F1800606EB74 +:10295000801010F8170000B9FFDF94F82D50A04642 +:10296000794C24B1002140F66500AFF3008040F6B9 +:10297000710940F67A0A06EB851600BF16F81700B3 +:10298000012818D0042810D005280ED006280CD015 +:102990001CB100214846AFF3008020BF002CEDD0D1 +:1029A00000215046AFF30080E8E72A46394601206F +:1029B000FEF7C0FEF2E74FF0010A4FF0000945466E +:1029C00024B1002140F68100AFF30080504600F0B2 +:1029D0005CF885F8239024B1002140F68600AFF31F +:1029E000008095F82D00FFF7D3FA064695F82300EE +:1029F00028B1002CE4D0002140F68C001FE024B167 +:102A000000214FF40960AFF3008005EB860000F170 +:102A1000270133463A462630FFF7F1F924B1002169 +:102A200040F69400AFF3008000F024F8824695F859 +:102A3000230038B1002CC3D0002140F69A00AFF338 +:102A40000080BDE785F82D60012085F82300504601 +:102A500000F01BF8002C04D0002140F6A700AFF3D3 +:102A60000080BDE8F087354981F82D00012081F80C +:102A70002300704710B5354808B1AFF30080EFF37D +:102A8000108000F0010072B610BD10B5002804D10E +:102A90002F4808B1AFF3008062B610BD2D48006822 +:102AA000C005C00D10D0103840B2002806DA00F082 +:102AB0000F0000F1E02090F8140D03E000F1E02099 +:102AC00090F80004400970470820704710B51B4C6F +:102AD00094F82400002804D1F8F7CEFB012084F8F4 +:102AE000240010BD10B5154C94F82400002804D023 +:102AF000F8F7EBFB002084F8240010BD10B51C682B +:102B00005B68241A181A24F07F4420F07F40A14209 +:102B100006D8B4F5800F03D2904201D8012010BD31 +:102B2000002010BDD0E90032D21A21F07F431144B9 +:102B300021F07F41C0E9003170470000EC0800201F +:102B4000FF1FA1076C06002000000000000000002D +:102B50000000000004ED00E02DE9F041044680078C +:102B60004FF000054FF0010604D55C480560066093 +:102B700024F00204E0044FF0FF3705D558484660C2 +:102B8000C0F8087324F48054600003D555480560EC +:102B900024F08044E0050FD55348C0F80052C0F837 +:102BA000087352490D60091D0D60504A04210C3212 +:102BB0001160066124F48074A00409D54C48466075 +:102BC000C0F80052C0F808734A48056024F4005465 +:102BD000C4F38030C4F3C031884200D0FFDF14F466 +:102BE000404F14D044484660C0F80873434886609C +:102BF000C0F80052C0F8087341490D600A1D166004 +:102C00008660C0F808730D60166024F44044200507 +:102C10000AD53C4846608660C0F80873C0F848731F +:102C20003948056024F400640BF036F93748044253 +:102C300000D0FFDFBDE8F08170B5202500221346EB +:102C400020FA02F1C90719D051B201F01F06012480 +:102C5000B4404E09B60006F1E026C6F88041C6F839 +:102C60008042002906DA01F00F0101F1E02181F82C +:102C7000143D03E001F1E02181F80034521CAA4226 +:102C8000DED370BD70B5224C0D462060FFF764FFA7 +:102C90002068FFF7D1FF2846F8F7E3FB0AF01EFD96 +:102CA00000F0D5F80BF0F8F80BF043F8F8F7FCFD5E +:102CB000BDE870400AF0C0BD10B5154C2068FFF7A4 +:102CC0004BFF2068FFF7B8FF0BF0E6F8F8F75DFC64 +:102CD0000020206010BD0A2070470000FC1F00404B +:102CE00000C0004004E50140008000400485004031 +:102CF00000D0004004D5004000E0004000F000405B +:102D000000F5004000B0004008B50040FEFF0FFD98 +:102D10009000002070B522490A680AB300221546C7 +:102D200001244B685B1C4B60092B00D34D600E796E +:102D300004FA06F30E681E420FD0EFF3108212F071 +:102D4000010272B600D001220C689C430C6002B9EB +:102D500062B649680160002070BD521C092AE0D3A8 +:102D6000052070BD4FF0E0214FF48000C1F8000253 +:102D70007047EFF3108111F0010F72B64FF00102AE +:102D800002FA00F20648036842EA0302026000D138 +:102D900062B6E7E702480021016041607047000029 +:102DA00094000020012081070860704701208107FE +:102DB0004860704712480068C00700D00120704783 +:102DC0000F48001F0068C00700D0012070470C4862 +:102DD00008300068C00700D0012070470848103054 +:102DE0000068704706490C310A68D20306D50968A5 +:102DF00001F00301814201D101207047002070479A +:102E00000C0400402DE9F04115460E46044600270B +:102E100000F0E7F8A84215D3002341200FE000BFDF +:102E200094F84220A25CF25494F84210491CB1FB81 +:102E3000F0F200FB12115B1C84F84210DBB2AB42D3 +:102E4000EED3012700F0D9F83846BDE8F08170498B +:102E500010B5802081F800046E49002081F84200FE +:102E600081F84100433181F8420081F8410043314B +:102E700081F8420081F8410067480AF0A3FE6648E5 +:102E8000401C0AF09FFEF8F7DBFBBDE8104000F0A5 +:102E9000B4B8402070475F4800F0A3B80A46014626 +:102EA0005C48AFE7402070475A48433000F099B87B +:102EB0000A46014657484330A4E7402101700020EC +:102EC000704710B504465348863000F08AF82070E9 +:102ED000002010BD0A4601464E4810B58630FFF767 +:102EE00091FF08B1002010BD42F2070010BD70B57F +:102EF0000C460546412900D9FFDF484800681038D4 +:102F000040B200F050F8C6B20D2000F04CF8C0B24C +:102F1000864203D2FFDF01E0F8F7E2FB22462946B2 +:102F20003C48FFF76FFF0028F6D070BD2DE9F04157 +:102F3000394F002506463F1D57F82540204600F032 +:102F400041F810B36D1CEDB2032DF5D33148433079 +:102F500000F038F8002825D02E4800F033F800287B +:102F600020D02C48863000F02DF800281AD0F8F731 +:102F70008DFB29480AF02EFEB0F5005F00D0FFDF80 +:102F8000BDE8F04124480AF03BBE94F841004121DD +:102F9000265414F8410F401CB0FBF1F201FB120063 +:102FA0002070D3E751E7002806DA00F00F0000F1A7 +:102FB000E02090F8140D03E000F1E02090F8000408 +:102FC0004009704710F8411F4122491CB1FBF2F340 +:102FD00002FB13114078814201D10120704700208B +:102FE000704710F8411F4078814201D3081A02E06F +:102FF000C0F141000844C0B2704710B506480AF05D +:10300000E9FD002803D1BDE81040F8F72ABB10BD48 +:103010000DE000E01C0900209C00002004ED00E011 +:1030200070B5154D2878401CC4B26878844202D02F +:10303000F8F7E7FB2C7070BD2DE9F0410E4C4FF016 +:10304000E02600BFF8F7D2FB20BF40BF20BF677863 +:1030500020786070D6F80052EEF760F9854305D10C +:10306000D6F8040210B92078B842EBD0F8F7B9FBD3 +:103070000020BDE8F0810000AC0000202DE9F04107 +:10308000012528034FF0E0210026C1F880011E4CE5 +:10309000C4F800610C2000F02CF81C48016802689C +:1030A000C94341F3001142F010020260C4F8045316 +:1030B0002560491C00E020BFD4F80021002AFAD086 +:1030C00019B9016821F010010160114807686560B5 +:1030D000C4F80853C4F800610C2000F00AF8384620 +:1030E000BDE8F08110B50446FFF7C8FF206000205E +:1030F00010BD00F01F02012191404009800000F145 +:10310000E020C0F88012704700C0004010ED00E0E1 +:1031100008C500402DE9F047FF4C0646FF21A06896 +:1031200000EB061211702178FF2910D04FF008092A +:1031300009EB011109EB06174158C05900F0F4F9E9 +:10314000002807DDA168207801EB061108702670C1 +:10315000BDE8F08794F8008045460DE0A06809EBD3 +:1031600005114158C05900F0DFF9002806DCA068BD +:10317000A84600EB08100578FF2DEFD1A06800EB02 +:10318000061100EB08100D700670E1E7F0B5E24B98 +:103190000446002001259A680C269B780CE000BFAD +:1031A00005EB0017D75DA74204D106EB0017D759EE +:1031B0008F4204D0401CC0B28342F1D8FF20F0BD42 +:1031C00070B5FFF754FBD44C08252278A16805EBB5 +:1031D0000212895800F0A8F9012808DD2178A068BA +:1031E00005EB01114058BDE87040FFF737BBFFF712 +:1031F00009FABDE87040F8F785BB2DE9F041C64CEF +:103200002578FFF734FBFF2D6ED04FF00808A26839 +:1032100008EB0516915900F087F90228A06801DD36 +:1032200080595DE000EB051109782170022101EB66 +:103230000511425C5AB1521E4254815901F5800178 +:1032400021F07F4181512846FFF764FF34E00423D9 +:10325000012203EB051302EB051250F803C0875C53 +:10326000BCF1000F10D0BCF5007F10D9CCF30802E0 +:1032700050F806C00CEB423C2CF07F4C40F806C0E6 +:10328000C3589A1A520A09E0FF2181540AE0825970 +:1032900002EB4C3222F07F428251002242542846F7 +:1032A000FFF738FF0C21A06801EB05114158E068D9 +:1032B00050F82720384690472078FF2814D0FFF791 +:1032C000D6FA2278A16808EB02124546895800F028 +:1032D0002BF9012893DD2178A06805EB01114058F6 +:1032E000BDE8F041FFF7BABABDE8F081F0B51D4680 +:1032F00014460E460746FF2B00D3FFDFA00700D081 +:10330000FFDF8548FF210022C0E90247C570067132 +:103310000170427082701046012204E002EB00133B +:10332000401CE154C0B2A842F8D3F0BD70B57A4C4D +:10333000064665782079854200D3FFDFE06840F8D3 +:1033400025606078401C6070284670BD2DE9FF5FE5 +:103350001D468B460746FF24FFF789FADFF8B89130 +:10336000064699F80100B84200D8FFDF00214FF06F +:1033700001084FF00C0A99F80220D9F808000EE075 +:1033800008EB0113C35CFF2B0ED0BB4205D10AEB47 +:10339000011350F803C0DC450CD0491CC9B28A4265 +:1033A000EED8FF2C02D00DE00C46F6E799F803109A +:1033B0008A4203D1FF2004B0BDE8F09F1446521C9E +:1033C00089F8022008EB04110AEB0412475440F874 +:1033D00002B00421029B0022012B01EB04110CD04E +:1033E00040F801204FF4007808234FF0020C4545C7 +:1033F00013D9E905C90D02D002E04550F2E7414674 +:1034000006EB413203EB041322F07F42C250691AEB +:103410000CEB0412490A81540BE005B9012506EBB7 +:10342000453103EB041321F07F41C1500CEB041133 +:10343000425499F800502046FFF76CFE99F80000BE +:10344000A84201D0FFF7BCFE3846B4E770B50C4681 +:103450000546FFF70CFA064621462846FFF796FE7A +:103460000446FF281AD02C4D082101EB0411A8684E +:103470004158304600F058F800F58050C11700EB75 +:10348000D14040130221AA6801EB0411515C09B13B +:1034900000EB4120002800DC012070BD002070BD41 +:1034A0002DE9F04788468146FFF770FE0746FF2862 +:1034B0001BD0194D2E78A8683146344605E0BC4231 +:1034C00006D0264600EB06121478FF2CF7D10CE04C +:1034D000FF2C0AD0A6420CD100EB01100078287016 +:1034E000FF2804D0FFF76CFE03E0002030E6FFF772 +:1034F000BBF941464846FFF7A9FF0123A9680246E8 +:1035000003EB0413FF20C854A878401EB84200D132 +:10351000A87001EB041001E0E809002001EB06119E +:1035200000780870104613E6081A0002C11700EB75 +:10353000116000127047000070B50446A0F500004D +:103540002D4EB0F1786F02D23444A4F500042B481C +:10355000844201D2012500E0002500F043F848B183 +:1035600025B9B44204D32648006808E0012070BDA4 +:10357000002070BD002DF9D1B442F9D32148844216 +:10358000F6D2F3E710B50446A0F50000B0F1786F6D +:1035900003D219480444A4F5000400F023F84FF0C6 +:1035A000804130B11648006804E08C4204D201200A +:1035B00003E014488442F8D2002080F0010010BDDE +:1035C00010B520B1FFF7DEFF08B1012010BD0020CB +:1035D00010BD10B520B1FFF7AFFF08B1012010BD3D +:1035E000002010BD084809490068884201D1012027 +:1035F00070470020704700000000002000300200EB +:103600002000002008000020B0000020BEBAFECA42 +:103610000548064A0168914201D100210160044930 +:103620000120086070470000B0000020BEBAFECA4A +:1036300040E5014043480021017041701021817034 +:10364000704770B5054616460C460220F4F743FD58 +:103650003C490120F61E08703B4806603A4808388D +:103660000560001F046070BD10B50220F4F733FD43 +:1036700034490120087035480021C0F80011C0F815 +:103680000411C0F8081132494FF40000086010BD61 +:1036900010B52C4C207888B12D494FF40000091D3D +:1036A000086000F041F8002120B101206070294835 +:1036B000006801E061701020A0702170BDE810402A +:1036C0000020F4F708BD1F4810B5017859B11F4814 +:1036D000D0F8000128B100F027F8002800D0012020 +:1036E00010BD022010BD407810BD10B5C824641E66 +:1036F000E4B2FFF7E8FF022803D0012800D0002041 +:1037000010BD002CF3D1FFDFF9E70E4810B50178AA +:1037100041B100F009F818B10E480068C0B210BD00 +:10372000102010BD807810BD0848D0F8001129B1D4 +:10373000D0F8041111B1D0F8080108B10020704789 +:1037400001207047B400002010F5004000F0004058 +:1037500004F5014000F4004045480021017041702B +:10376000704770B5064614460D460120F4F7B3FCC9 +:1037700040480660001D0460001D056070BD70B506 +:103780003B4A012540EA014115703A4A41F08071F7 +:10379000121F1160384C0026C4F80461374A4FF0FC +:1037A0004071116058B1012800D0FFDFC4F80062F9 +:1037B000256032494FF00070091F086070BDC4F8E1 +:1037C0000052256070BD2A48017871B12B4A4FF034 +:1037D000407111602849D1F8042100211AB1284A0A +:1037E0001268427000E0417001700020F4F773BC71 +:1037F0001F48017841B12048D0F80401002802D0C8 +:103800001F480068C0B270474078704770B5002804 +:1038100028D01748007800B9FFDF1748D0F8041106 +:1038200000291FD10223C0F8043316490A680C6826 +:10383000D24342F3001244F010040C609C034FF09A +:10384000E025521C03E000BFC5F8804220BFD0F83D +:103850000461002EF8D01AB90A6822F010020A603A +:10386000C0F8083370BD044901208860704700002B +:10387000B700002008F5004000F0004008F50140C6 +:1038800000F4004010ED00E0F84808B50021C0F851 +:103890000011C0F80C11C0F81011C0F80411C0F8E4 +:1038A0001411C0F81811C0F82811F14800680090F0 +:1038B00008BD70B5EF4D00246C702C7000F02EFE2A +:1038C00085F82140AC626C63AC77092105F11400E6 +:1038D0000BF09CF8E849601E0860091D0860091D8E +:1038E0000C60091D0860091D0C60091D0860091D98 +:1038F0000860091D0860091D0860091D0860091D90 +:103900000860091D0860091D0860091D086070BD78 +:1039100070B5D8490268D94C4A6142688A61007A18 +:1039200008770C3C0A7DD54B251F012042B10E7E45 +:1039300000FA06F21A608E7D0EB1226000E02A6065 +:103940004A7D002A05D04A7E90401860C97D09B1A1 +:10395000206070BD286070BDCA49C9480860091D53 +:10396000C9480860704710B50446012902D00229F1 +:1039700002D0FFDF002101E04FF08071C348014316 +:10398000C0480160C049E0B225390843BD49091D5E +:103990000860B648D0F80001002800D0FFDF10BD55 +:1039A00070B5012000F0A4FDB94900250D6001208B +:1039B0000860B8490A68B84B22F077021A430A60D7 +:1039C000091D0A6822F47F4242F4B0520A60A94CF1 +:1039D000AC4A02214C3261771160B14AAF491160A3 +:1039E000A3491031121F1160A64A40F25B612432D4 +:1039F0001160121F40F203111160111F0860A149EC +:103A00000320091F08609F4996203031086094F90F +:103A10001E000AF087FB607F10B14FF4C02000E069 +:103A2000A0489F49943908609C489D49001F08316F +:103A300008608F480838091F0860012000F063FD06 +:103A40008A491020C1F8040384F82D5070BD9148B4 +:103A50003830016821F0010141F080710160704748 +:103A6000844A0368C2F802308088D080117270479F +:103A7000804890F8210070477E4A5170107070475E +:103A8000F0B50546840079488B882044C0F820367C +:103A90000B78D1F8011043EA0121C0F8001605F1B6 +:103AA000080001277B4C07FA00F6FC3C52B1012AC2 +:103AB00000D0FFDF2068304320602068AF403843EB +:103AC0002060F0BD2068B043F6E710B504460AF068 +:103AD00029FB6848847710BD664890F82E0070472F +:103AE000644890F830007047664AC178103211601F +:103AF000006864490002083108607047252807D033 +:103B0000262807D0272807D00A2807D8042206E04D +:103B1000022107E01A2105E0502103E0062202EB12 +:103B20004001C9B2574A0C3A116056494031086009 +:103B300070475048817A012916D0022913D1417D5E +:103B4000002910D0827E0121C37E01FA02F2994041 +:103B50000A43534994390A60007F534A002102EB1B +:103B60008000C0F810157047017DE9E7F0B5414BC2 +:103B70009C7A012C12D0022C67D15D7D002D64D07F +:103B80004A4F4FF47A76012C0AD05D7EDC7D04B179 +:103B9000012401291FD0022A1FD020E01D7DEDE75E +:103BA0001D7E9C7D04B101244FF4C86C012902D014 +:103BB000022A07D008E0022A00D1B44649F6FC6187 +:103BC000614405E03A4FB44607EB0C0101F5FA7188 +:103BD000B1FBF6F107E0292105E0354F643F07F21C +:103BE000E147B7FBF6F1491F0844324908602B4909 +:103BF00000204439C1F84C01280284F0010140EA58 +:103C0000015040F00312197F274800EB8104C4F8EB +:103C100010259C7E284A00EB810102EBC400C0F80D +:103C20001415264DC0F81055DB7E02EBC300C0F81A +:103C300014150F490839C0F81015012000FA04F1D5 +:103C400098400143164898380160F0BD2DE9F047CF +:103C5000064D0746032090468946C5F80002054EEA +:103C6000707F10B14FF4C0202BE029E0001000401D +:103C700018110040F8090020000E004018050050FF +:103C8000060102001415004025000302080110007F +:103C9000FC1F00403C17004088000080448000402A +:103CA0009CF501400000040400600040A2240200D2 +:103CB000683602004C85004000F001404C81004015 +:103CC000F948FA49086048460AF076FA40460AF090 +:103CD00053FA012417B1012F06D008E0404600F046 +:103CE00024FCB4722C6002E00220B0726C60F048D8 +:103CF000C464F048006842464946BDE8F04735E7ED +:103D00002DE9F0418846EC49074603201646C1F8E4 +:103D10000002EA4C607F10B14FF4C02000E0E2489E +:103D2000E24D286040460AF047FA30460AF024FA8D +:103D300017B1012F0CD014E0304600F0F6FB012043 +:103D4000A072606B40F4801060634FF4801007E055 +:103D50000220A072606B40F4001060634FF400100A +:103D6000286032464146BDE8F0410020FEE608B535 +:103D7000FF208DF80000D0480021C0F8101101216B +:103D8000016104E09DF80010491E8DF800109DF8B7 +:103D9000001019B1D0F810110029F3D09DF80000DF +:103DA000002800D1FFDF08BD2DE9FF5FC24D0746A7 +:103DB000002603209B46C5F80002C04C607F10B16E +:103DC0004FF4C02100E0B849DFF8E082C8F80010E5 +:103DD00002980AF0F1F958460AF0CEF9DFF8CC92D1 +:103DE0004FF0010A09F1A80917B1012F21D02BE0EA +:103DF000584600F09AFBC9F8005094F82D000128AD +:103E000005D002280BD0FFDF84F80AA01CE094F84C +:103E10002C20DDE901015B460AF022FA06E094F865 +:103E20002C30DDE901015A460AF0D1F9A16A4618A1 +:103E3000EAE7A149091DC9F8001094F82D000128EE +:103E400038D0FFDF0220A0729A48001F0660974911 +:103E50009B48A4310860606B40F400206063D5F893 +:103E600000724FF01009C5F808930020C5F8000251 +:103E70008E484FF48024001D046005F50075FFF79F +:103E800076FFFFF701FD2F60C8F80040C5F80491E8 +:103E90006100C8F800108649C1F84CA08548006848 +:103EA000B04200D3FFDF029904B05A463046BDE865 +:103EB000F05F5BE694F82C20DDE901015B460AF037 +:103EC000ADF9A16A4618BDE72DE9F0417A4CD4F866 +:103ED000000220F00307D4F804034FF01008C0F3E9 +:103EE0000016C4F808830025C4F800527348407FC8 +:103EF00010B14FF4C02000E06B486C49091D086008 +:103F0000FFF717FEFFF733FFC4F81051C4F828512C +:103F100000F004FBC4F80072002E01D0C4F8048342 +:103F2000BDE8F0810068674920F07F400860704775 +:103F300010B5012000F0DCFABDE81040012000F0CF +:103F4000E2BA4FF0E0210220C1F8000170475E495B +:103F5000087070475B4938390860704770B5574C36 +:103F60000546A06AA84200D3FFDF01202073256127 +:103F7000607F40B1284420614F48D0F8001241F0E2 +:103F80004001C0F800124A490020C1F844014949E3 +:103F9000206908390860BDE8704000F0D8BA70B5F3 +:103FA000464C0546022020730AF0F4F8024694F8C5 +:103FB0002C1028460AF07CF92061617F41B1084449 +:103FC00020613D48D0F8001241F04001C0F80012D5 +:103FD00037490020C1F844012169A06A08443549E5 +:103FE0000839086070BD31494FF48000091D086030 +:103FF0003248416B21F48001416300210173704715 +:104000002B4801214160C1600021C0F844112948BA +:104010000838016029488162704728494020487764 +:104020002849243108602448D0F8001241F04001AA +:10403000C0F8001270472048D0F8001221F040016B +:10404000C0F800121F4902202431086070471A4846 +:10405000D0F8001221F01001C0F800120121816196 +:10406000704715480021C0F81C11D0F8001241F02B +:104070001001C0F8001270470F4908B5D1F81C2193 +:10408000012A01D0002008BD0E4A0C32126802F04D +:104090007F02524202700020C1F81C010B480068E8 +:1040A0000090012008BD00000000040404F5014058 +:1040B000008000404C85004000100040F8090020BE +:1040C000488100403C150040B90000201C11004010 +:1040D000F8B5F74CF74D207B18B1D5F8440101280D +:1040E0000AD00026F449D1F81001012806D0002298 +:1040F000A07A012804D007E00126F3E74022F7E781 +:10410000D1F80C31012B04D000231343012802D035 +:1041100005E02023F9E7D1F80421012A05D0002287 +:104120001A43E64F022802D008E01022F8E73B6865 +:10413000012B03D1D1F80C31012B04D00023134300 +:10414000022802D007E00823F9E73A681AB9D1F843 +:104150000C21012A04D000221A43022802D004E0D4 +:104160000422F9E70EB1022300E0002313430228E2 +:1041700009D1D1F80401012805D1D5F8440101285D +:1041800001D0012600E00026CD481E43026812F04F +:10419000FF0F03D0D1F81421012A00D0002284F8A7 +:1041A0002E20006810F0FF0F03D0D1F8180101286D +:1041B00000D0002084F82F00C0481030006884F838 +:1041C0003000BF48E0380068402803D1FFF77BFA91 +:1041D000012800D0002084F83100FFF755FB0020B3 +:1041E000C5F84401B748006800903046F8BD30B5C6 +:1041F0000C00054600D1FFDFE00702D0012C00D003 +:10420000FFDF55B10221AA4801294172C472AA48B0 +:1042100005D0022908D0FFDF30BD0121F3E7D0F837 +:10422000001241F0040103E0D0F8001241F008014F +:10423000C0F8001230BD70B59D4C0022E17A8B07AA +:1042400001D5430711D4CB0605D594F82F3013B10F +:1042500094F831304BB10B0702D594F8203023B9D4 +:10426000490703D594F8211001B90122637A9249D4 +:10427000012533B100F00200104312D0BDE87040B8 +:1042800022E6607F10B14FF4C02000E08E488F4AD4 +:104290001060D1F8000220F00300C1F80002E572BE +:1042A00070BD0026012B09D0022B17D0FFDFA06ABA +:1042B00001223044BDE87040002157E4D1F80002EB +:1042C00020F00400C1F8000200F028F90123A572D3 +:1042D0001A460021962009F07AFF0FE0D1F800027B +:1042E00020F00800C1F8000200F018F90220A072C6 +:1042F00001231A460021962009F090FF0646D6E7D2 +:104300002DE9F047DFF8ACA1DAF84C0108B1FFF76E +:1043100010FC674C6D49606B086000266663FFF710 +:10432000D7FEDFF8AC810546D8F800006062617FF7 +:1043300009B1401A60626648001F0068A06209F077 +:1043400029FF84F82C00A07ADFF8889184F82D00EA +:10435000022808D1607830B1D9F8001009780140FE +:10436000207888430DD084F820605B4FE8070CD09C +:1043700039785A4A4908606A52F821108847012161 +:104380000AE0012084F82000EFE7A80601D5022109 +:1043900002E0A80707D50021504A3B783832A06ACE +:1043A00052F8232090473878C00713D1D9F800106D +:1043B0000622A01C09310AF05CFA40B9217AD9F82A +:1043C00000000078B1EBD01F01D1012000E00020F7 +:1043D00084F821002846FFF72EFFA80705D53F489F +:1043E0003978083050F82100804715F00C0F07D0BD +:1043F0003A483978183050F82110C5F3C000884782 +:10440000A80605D535483978283050F8210080476E +:104410003878022805D105F06E00402805D106F055 +:1044200021F93878042800D3FFDFA07A022819D1B7 +:10443000207B002816D0CAF8446102280ED001283B +:1044400000D0FFDFA16A2069884200D8FFDF216920 +:10445000C8F80010BDE8F04700F079B82169A06AFB +:104460000144F5E7BDE8F08700B5012802D0022835 +:1044700002D0FFDF282000BD182000BD10B541F696 +:10448000A474012802D0022802D0FFDF204610BD0C +:1044900041F2883010BD10B541F2D474012802D029 +:1044A000022802D0FFDF204610BD41F2040010BDFB +:1044B000F809002000800040001000400014004077 +:1044C00040160040448100400000040408F501400B +:1044D0004485004004150040B9000020C4EE0100EE +:1044E00000B5012802D0022800D0FFDF002000BD67 +:1044F00000F01F02012191404009800000F1E020FE +:10450000C0F88011704700F01F020121914040095E +:10451000800000F1E020C0F88012704711480021AF +:10452000417281720121C17270470F4A11685306AE +:104530000228D3F8200307D0C0F3062021F4FE415F +:1045400041EA002010607047C0F30660F6E70548B6 +:10455000416B41F48001416304494FF480000860DD +:1045600070470000F80900208815004004F501405C +:1045700010B5434822210AF027FA41480024017867 +:1045800021F010010170012105F004FB3C494FF6B8 +:10459000FF70263981F8224088843A490880488093 +:1045A00010BDE5E7704700F05FB83549016070471E +:1045B000344908807047324926398A8CA2F57F43F6 +:1045C000FF3B02D00021016008E091F822202C4935 +:1045D0002639012A02D0016001207047002070476F +:1045E0002748263810F8221F012908D00121017020 +:1045F00024482349263900888884012070470020F8 +:1046000070472049488070471D491E4B26398A8CC7 +:104610005B889A4205D191F8222012B101600120F5 +:104620007047002070471648164A2638818C5288F9 +:10463000914209D14FF6FF71818410F8221F19B100 +:104640000021017001207047002070470C480D4A7E +:104650002638818C5288914204D190F8220008B10A +:104660000020704701207047054926398A8C824214 +:1046700005D1002081F822004FF6FF708884704732 +:10468000560A0020BA0000207047524A012338B170 +:10469000012804D113700868906088889081704761 +:1046A00053700868C2F802008888D0807047494A71 +:1046B00010B1012807D00EE0507860B1D2F80200A6 +:1046C0000860D08804E0107828B19068086090896C +:1046D000888001207047002070473E4910B10128B2 +:1046E00002D005E0487800E0087808B10120704762 +:1046F0000020704730B58DB00C4605460D2104A84A +:104700000AF084F9E0788DF81F0020798DF81E00FA +:1047100060798DF81D001022294668460AF0D5F808 +:10472000684609F075F820789DF82F1088420CD162 +:1047300060789DF82E10884207D1A0789DF82D1042 +:10474000884202D101200DB030BD0020FBE730B51A +:104750000C4605468DB04FF0030104F1030012B181 +:10476000FEF7A6FB01E0FEF7C2FB60790D2120F009 +:10477000C00040F04000607104A80AF047F9E078FA +:104780008DF81F0020798DF81E0060798DF81D00CE +:104790001022294668460AF098F8684609F038F869 +:1047A0009DF82F0020709DF82E0060709DF82D0060 +:1047B000A070C8E710B5002904464FF0060102D0EA +:1047C000FEF776FB01E0FEF792FB607920F0C00077 +:1047D000607110BDBE00002070B5FC4E044696F816 +:1047E0009210002506F18000012909D096F88C105E +:1047F000012912D096F86A00012818D0002070BD57 +:1048000065701921217050F8131FC4F80210406818 +:10481000C4F8060086F8925024E0657006212170E5 +:10482000D0F80E00C4F8020086F88C501AE06570CB +:104830001320E649207020226C31A01C0AF045F8B4 +:104840000120A07106F86A5FB188B184E049496827 +:104850004A7B86F8262086F822000888FBF7CAFAE9 +:10486000FAF771FF012070BDD84890F86A1011B1B5 +:10487000B0F86E0070474FF6FF70704770B5D448BF +:10488000017811B10C26304670BDD04C002635465B +:1048900084F8626084F8636084F8646084F865601A +:1048A00084F85E6084F8606084F8566084F836604E +:1048B00084F867607F21817094F8660028B1FFF763 +:1048C000BAFBFEF7E5FE84F8665084F86A5084F877 +:1048D0008C5084F89250BD489C3005F01FF8BB48BE +:1048E000C43005F01BF8CEE7B94910B500200870B8 +:1048F000FFF7C4FF002800D0FFDF10BDB34890F8D9 +:1049000062007047B14900B591F8580091F857100E +:10491000C0F38002C0F340031A4400F001001044C9 +:10492000052910D2DFE801F00A050A030700A949AA +:1049300006E0A94800BDA749083101E0A5490839AA +:1049400031F8100000BDFFDF002000BD9F4840F29D +:104950007121B0F85A00484370479C4890F86800AD +:10496000002800D00120704710B5984C207A00F044 +:10497000EDFC40B1207C04F1110104F0AFF90828EE +:1049800001D0012010BD207A30B1022804D00120CE +:10499000BDE81040FFF7A1BE0020F9E78B4908727F +:1049A00070478A4981F8600070477CB505468748A2 +:1049B00090F85D0004F0A7F9040013D0102104F072 +:1049C000E5FC00280ED12A4669462046FFF7BFFEC7 +:1049D0007E4869469C3004F0D3FF7C4801219C301E +:1049E00004F0E7FF7CBD70B578490A310D4601F14E +:1049F000920004F0B9FF754C04F19C00617A04F058 +:104A0000CBFF294604F1C40004F0AEFF617A04F143 +:104A1000C400BDE8704004F0BFBF2DE9F0416B4C0D +:104A2000074694F85D0004F064F9064694F85F00C8 +:104A300004F10A0528B126B11021304604F0A6FC85 +:104A4000A0B194F86000002824D094F85E000028FB +:104A500020D0607A294600F08AFCA8B104F04BFA15 +:104A60003A462946BDE8F041FFF771BE0120607269 +:104A70003A4629463046FFF76AFE94F85D1028460C +:104A8000BDE8F04104F002BA39462846BDE8F041DD +:104A9000FFF790BEBDE8F08170B54C4C207AB0B104 +:104AA000022814D00120494960720A310D46FFF7EF +:104AB000FEFD207A00F04AFC84F85F00082084F8AC +:104AC0005D00607A294600F049FC38B901E0002019 +:104AD000E9E7607A294600F04AFC00B1012084F839 +:104AE0005E0094F85F0028B994F85700012801D0BF +:104AF000042806D13549207C113104F0EFF884F800 +:104B00005D0000202060FDF773F960600020FFF772 +:104B100084FFFFF768FF94F85700012801D00428AC +:104B200003D1BDE8704000203FE770BD70B5274C51 +:104B3000417B84F85810017984F85710012925D059 +:104B4000B0F80020A4F85A20827B84F8682082798B +:104B5000F2B1022A1CD00122227450F8072FC4F8A7 +:104B600011208088A4F8150094F85600012508B19A +:104B700084F8635094F8360008B184F8645005292D +:104B800033D2DFE801F0070D2B2D0D000022D9E70D +:104B90000022E1E70D4800219C3004F0C2FE0FE046 +:104BA0000A4801219C3004F0BCFE0849113101F192 +:104BB0008B0004F0E5FE0548217C9C3004F0F9FEF2 +:104BC000024801219C3000F0DDFB0FE0780A002054 +:104BD000CC0000201CEF0100D0891300062100E06A +:104BE0000221FA4804F09DFE00E0FFDFF7480421AF +:104BF000283004F096FE84F86250002070BD70B535 +:104C00000546F24C00209C3C04F8640FEF482A460D +:104C1000853809F05AFE04F82E5C0120207070BD22 +:104C200010B5EA4C00229C3C84F8632004F8560F2F +:104C30000246E648653809F048FE0120607310BD61 +:104C4000E2499C3981F86700704770B500F0ADFB10 +:104C5000DE4C9C3C002694F8660028B1FFF7EBF987 +:104C6000FEF716FD84F86660D94D2E7094F8570053 +:104C7000012804D0BDE87040002001F08EB9022068 +:104C800001F08BF994F86A0000B1FFDF6878002822 +:104C900017D0207C84F87100D4F81100C4F8720099 +:104CA000B4F81500A4F876003C2084F86C0068681D +:104CB0000088A4F86E00012084F86A0000F06BFB05 +:104CC0006E7070BD10B50024C20701D0CA0708D0AD +:104CD00082070BD58A0709D42620FEF70FFF02248E +:104CE0000CE02520FEF70AFF012407E0400705D568 +:104CF000480703D42720FEF701FF0424FEF72CFE0B +:104D0000204610BD2DE9F041B148017859BBAF4CA8 +:104D10009C3C94F8621031B3002584F861504570D2 +:104D200028465834FFF713F9FEF73AFEFEF714FE53 +:104D3000A848FEF7D9FEA748C01EFFF7F3F8207871 +:104D40000021FFF7BFFF2071FFF7FBF800210122D0 +:104D50000846FEF7D5FF0F210520FEF78DFEA0794E +:104D6000583C58B901E00C2094E694F85F0028B94B +:104D700094F85700012801D0042828D1FDF738F80D +:104D8000064631466068FDF741FD934990FBF1F717 +:104D900001FB170041423046FCF733FD606020689C +:104DA0003844206003F096FF216888420FD8C4E998 +:104DB00000560120FFF731FEFFF715FE94F857006B +:104DC000012801D0042802D10120FFF7EEFD7F4821 +:104DD000617A9238FEF744FE94F8570001280DD00E +:104DE00004280BD094F8630040B1784994F8562019 +:104DF0006539764804F0F9FD84F8635094F864004E +:104E000048B1724994F83620853901F1AD0004F0BB +:104E100018FE84F8645003F0BDFF6C48503004F075 +:104E200024F884F86600002034E669494860704739 +:104E300070B5664C0500A4F19C040AD094F85C108F +:104E400014F8580FFFF73EFF14F8041F084304F846 +:104E50005C0994F8610038B194F85700012800D13A +:104E6000FFDFBDE87040F0E635B1002201234FF4CA +:104E700096711046FEF798FF5448FFF76BF894F8C8 +:104E80005700052809D2DFE800F0030303090300F7 +:104E900001210846FFF7ABF900E0FFDF94F8581056 +:104EA00094F85C0081434FF0010005D194F857104D +:104EB000012904D084F861004549087070BD0021C3 +:104EC00084F85C10F8E7424810B5007848B93F48CC +:104ED0009C3890F8620020B10020FFF7A9FF002065 +:104EE00010BD00F062FA0C2010BD39490120487055 +:104EF000704736499C3981F86500704770B50025C8 +:104F000000F024FF48B1324E3078012808D0022842 +:104F100001D0032833D0FFDF70BDBDE8704094E6B8 +:104F20002A4C9C3C94F85700032828D094F866003B +:104F300018B1FEF799FBFFF770F824485030FFF7DF +:104F400009F89620FFF72BF894F8570001280DD0A8 +:104F500004280BD094F86800012801D0032800D160 +:104F6000102545F00E010020FFF741F994F8670085 +:104F7000012801D1FFF775F80220307070BDBDE83F +:104F80007040012054E710B5104C9C3C94F8670029 +:104F9000012801D100F014FA94F8660018B1FFF767 +:104FA0004AF8FEF775FB00F0D1FEB8B1084C207846 +:104FB000022800D0FFDF0120FFF73AFF2078002809 +:104FC00003D02078012800D0FFDF10BD140B002093 +:104FD000CC0000200FEF010040420F00BDE8104060 +:104FE00033E610B503F07AFE044603F09CFF38B1B7 +:104FF000204603F088FE18B1102104F0C7F908B16B +:105000000020E2E70120E0E72DE9F84F0446002602 +:10501000FEF762FDDFF8C493074699F80000022806 +:1050200000D0FFDFDFF8B8A39AF86700012801D1AC +:1050300000F0C6F9EA48EC3004F092FCFF25804607 +:10504000002C78D0E648EC3004F072FD002872D0D5 +:10505000FEF70EFD00286ED0E14C9AF86600EC34A5 +:1050600060B103F07DFE0546FF2807D00146E01C35 +:1050700003F06AFE284603F07DFE0743DFF860B3C5 +:10508000B8F1060F0BF1800B55D2DFE808F09797C7 +:10509000970397559AF8571001294CD0D046042908 +:1050A00049D067B998F8680008B1022843D1207840 +:1050B000E11CC0F38010FFF794FF00287ED198F820 +:1050C0006700474601282ED197F8920058BB01206F +:1050D00087F89200FF2D0DD0C14A28469432511E08 +:1050E00003F01BFE00B9FFDF17F8930F40F002003A +:1050F00038700CE02078C0F3801088F89300DBF85B +:105100006F10CBF81410BBF87310ABF81810B44D37 +:1051100099F802009A354C467F2800D1FFDFA0782D +:1051200028707F20A070AE48C430FEF713FF032123 +:1051300089F8001043E041E020789AF81010A0466A +:10514000C0F380105446884207D1A5490622113188 +:1051500008F1030009F08DFB20B10020FF2D08D0DD +:1051600088B901E00120F9E794F85D00A8420AD06F +:105170000FE070B198F8000008F10301C0F380104F +:10518000FFF72FFF28B994F85700012813D00428FF +:1051900011D094F8570088B96FB994F8680008B135 +:1051A00001280BD198F8000008F10301C0F380102A +:1051B000FFF717FF10B994F86500C8B101269AF8F7 +:1051C000660018B1FEF737FFFEF762FA16B101204C +:1051D000FFF72EFE99F800104846002906D0017806 +:1051E000012903D00078032800D0FFDFBDE8F88F45 +:1051F0007B49D9F804008031C34651F87B2FC0F8B1 +:105200000E208A8842828979017598F816204275A5 +:10521000B8F81720C282B8F819204280B8F81B20CD +:105220008280B8F81D20C2806E4A4146D2F80B3009 +:105230008360D27B027311F8242F02F01F020276E2 +:1052400011F81F29520980F8642111F8051C427BCE +:10525000C1F340110A40427394F86A0000B1FFDFC5 +:10526000002784F86C70D9F80400C8460188A4F8B7 +:105270006E104188A4F884108188A4F88610C18833 +:10528000A4F8881090F8640184F88A00544894F8CF +:105290005F100A30009021B1607A009900F067F841 +:1052A00038B994F8600058B1607A009900F056F867 +:1052B00030B1D4F80A00A067E089A4F87C0002E0CD +:1052C000A767A4F87C709BF80000454AC0F38011E2 +:1052D000D8F804008032FF2D417652F86F1FC0F8D5 +:1052E0001A109288C28313D0C4F87E103C4AC08B37 +:1052F000A4F882007232511E284603F00EFD00B958 +:10530000FFDF94F8710040F0020084F871000DE0B6 +:10531000C4F87E70A4F88270417E84F87110D0F8D1 +:105320001A10C4F87210C08BA4F87600012084F81B +:105330006A0000F030F888F8007000F036F80120BC +:1053400000F02BFE3BE7012200F04FBE022803D005 +:10535000032801D00020704701207047012802D1A6 +:105360004879800901D0002070470120704701284A +:1053700006D148790121B1EB901F01D1012070477E +:10538000002070470278202322F0200203EA411116 +:105390000A4302707047114810B540680088FAF758 +:1053A00029FDBDE81040FAF7BFB910B5FEF728FE99 +:1053B000FEF719FEFEF788FDBDE81040FEF7B8BD08 +:1053C000064810B5801CFEF757FE10B903497F2030 +:1053D0008870BDE81040FEF73ABE0000CC00002007 +:1053E000780A0020780B0020FE484068704770B5AE +:1053F00006460D4614461046FFF740F8022C10D022 +:10540000F94908444FF47A7100F2E140B0FBF1F041 +:1054100000EB460005442046FFF726F8284460309C +:1054200070BDF249EDE72DE9F0410D460646014613 +:105430001746012004F0B1F8044696F85200FFF731 +:105440001DF896F85210022914D0E74940F2712253 +:1054500008444FF47A7100F2E140B0FBF1F170883A +:105460005043C1EB4000C01BA0F55970A54203D2C8 +:10547000214602E0DD49E9E72946814204D2A542FE +:1054800001D2204600E028467062BDE8F0812DE997 +:10549000FF4F89B0044690F85200DDF858909A46C4 +:1054A000039049EA0A00089094F864000025164623 +:1054B00019460D2803D00020069011B131E00120DB +:1054C000FAE794F8040103282BD1069848B3B4F8FE +:1054D0007C01B04225D1D4F80C01C4F8F8006088F2 +:1054E00040F2E2414843C4F8FC00B4F85201B4F879 +:1054F000DE100844C4F80001204602F093FBB4F823 +:105500008001E08294F87E016075B4F882016080C9 +:10551000B4F88401A080B4F88601E080022084F809 +:105520000401D4F85C010290B4F8DE00D4F858818C +:105530000090B4F85011D4F84C010590BAF1000F66 +:1055400004D094F8180100287ED108E004F5A67074 +:10555000049004F59C7704F1D80B001D07E004F5D6 +:105560009870049004F58E7704F5967B001D0790E3 +:10557000B4F85800301A00B20190701A00B2002836 +:1055800005DAD4F84801059001200890019894F8B4 +:105590000411E9B101297DD002297CD003297BD0F7 +:1055A000FFDF29460598FCF72CF904990860079855 +:1055B0000121068000203870397104980068B860B5 +:1055C0008B48D0E90520824267D9CBF8000082E100 +:1055D000B8F1000F00D1FFDFE08A40F271214843AB +:1055E000490001EB40000A9900F074FDC4F808017D +:1055F000608840F2E24148430A9900F06BFDC4F82C +:105600000C0182B22046A16AFFF70DFF14F8520F79 +:10561000FEF766FF4FF47A7100F2E140B0FBF1F162 +:1056200001EB080000902078FEF75AFF14F8521999 +:10563000024602293FD06C4815180846FEF71EFFA7 +:1056400029184FF47A7000E076E101F2DB51B1FBEA +:10565000F0F1E08A40F271225043C1EB4001D4F8EE +:10566000080140F2E2430A1A0099551894F85220B2 +:10567000617D11FB03F105F2C245FFF7B8FE5C49FD +:10568000801C4861886194F85200FEF729FF4FF4AE +:105690007A7103E087E010E0BEE019E100F2E1403A +:1056A000B0FBF1F101EB0800281AB0F53D7FBFF423 +:1056B00078AFFFDF75E74D48BEE7E08A40F2712220 +:1056C000D4F8FC10504301EB40000A9900F002FDB1 +:1056D000C4F80801608840F2E24148430A9900F0AA +:1056E000F9FCC4F80C0182B22046A16AFFF79BFEC8 +:1056F000009848BBB9F1000F26D094F85200FEF78D +:10570000BDFE94F85210024602291BD0364840F2E2 +:10571000712510444FF47A7200F2E140B0FBF2F0D0 +:10572000D4F80821D4F8FC300244E08A684303EB43 +:105730004000851A0846FEF797FE0299081A0544AC +:10574000203D0CE02948E2E7E08A40F27122D4F8DB +:10575000FC10504301EB4000D4F80811451AD4F86E +:105760000021D4F8F810D4F8080140F2E24301FB1C +:10577000020094F85220617D11FB03F1E834FFF739 +:1057800036FE01461A4840F27123416134F8E61CA6 +:10579000626A5943C2EB4101A1F2133181610120D8 +:1057A0002077E83CFDE6628840F27123D4F80C11C2 +:1057B0005A43C1EB42054543DDE900021044D4F8E9 +:1057C0000021D4F8F8C0801AD4F80831401E0CFB30 +:1057D000023200FB012094F85220617D40F2E24346 +:1057E00008E000008C0B0020A22402000436020016 +:1057F000D400002011FB03F1FFF7F9FD0146FE483C +:10580000B9F1000F4161A5F213318161CAD0B8F13D +:10581000000FC7D1FFDFC4E6618840F27123D4F8DE +:105820000C215943C2EB4105454394F863002428F9 +:1058300003D094F86400242809D1B4F87C01301A0C +:1058400000B2002803DB94F87F0100B103900898B0 +:1058500028B10098002802981AD000B1FFDFDDE9D6 +:1058600000010844D4F80C11039A48430021FFF7C3 +:10587000BEFD0146E04840F2712341616188D4F8E1 +:105880000C215943C2EB4101A1F21331816188E639 +:1058900010B1B8F1000F00D1FFDF0398FEF7EEFD65 +:1058A00001460398022811D0D44808444FF47A7175 +:1058B00000F2E140B0FBF1F02D1A94F85200FEF72F +:1058C000D3FD0299081A0544203DC8E7CC48ECE70F +:1058D0001046CBF80020626A104400F28310F86092 +:1058E0007971B4F8C800801B00B2002801DD0320E4 +:1058F0007871069820B3B9F1000F17D0B4F8F020F2 +:10590000C2B3B4F8F20000BFA4F8F20094F8F43087 +:10591000401C4343934209D27879401E002805DD9C +:105920007971B4F8F200401CA4F8F200BAF1000F4B +:1059300027D094F8180100B302200DB0BDE8F08F15 +:10594000B9F1000FDAD194F804010028EED0608894 +:1059500040F27122D4F80C115043C1EB400138469B +:1059600003F0DFFD0004000CE0D0179901B10880BE +:105970000120E2E7FFE70020C6E794F85401FCF7B6 +:1059800091FD94F85401394600F08AFB18B18AF071 +:10599000010084F819010020CFE7FEB50446FCF7AA +:1059A00027FA0146D4F84801FCF730FF214600F001 +:1059B0009BFB94F864100D290AD0B4F85820B4F871 +:1059C00016111318994206DB491CA4F8161106E0BB +:1059D000B4F816010CE0401C1044A4F8160194F829 +:1059E0001A0140B9B4F81601B4F8CC10884202D1BB +:1059F000401CA4F81601B4F852017F4D401CA4F8D5 +:105A00005201B4F87E00B4F87C10401AB4F8581073 +:105A1000401E084486B216E07A48297802AF002377 +:105A200030F81110CDE9003794F8643130F81300E4 +:105A30000023084481B22046FFF729FD002821D029 +:105A4000012817D0FFDFB4F81621B01A00B20028E1 +:105A5000E2DA082084F87300012084F872002046FE +:105A600001F09DFD204600F01DFB2879BDE8FE40B9 +:105A7000F5F748BFB4F81601BDF808100844A4F8BB +:105A80001601E0E7FEBD2DE9F0415F4C032701253B +:105A9000277500202074E07A04F1100650B14FF40D +:105AA0007A71A069FBF7ADFEA0610021304603F0DA +:105AB00038FD10E0002000F056FB0546FEF746FFDB +:105AC00005442946A069FBF79CFEA06129463046A3 +:105AD00003F027FD451C208C411C0A2901D22844D3 +:105AE0002084606830B1208C401C0A2802D3022038 +:105AF000607500E06775607A002806D1207B31462A +:105B000000F0CEFA002800D1FFDFBEE42DE9F0411D +:105B100006463D480F460178374D032909D1017BE0 +:105B2000B14206D1406828613846BDE8F04100F036 +:105B30002FBB304600F0AAFA0721FAF729F8040033 +:105B400000D1FFDF304600F0A1FA2188884200D062 +:105B5000FFDF214638462C61BDE8F04100F0D1BAA4 +:105B600010B5294C207848B101206072FFF7C1F9C7 +:105B70002078032804D0207A002800D00C2010BD03 +:105B8000207BFCF78FFC207BFCF7D9FE207BFCF709 +:105B900010F900B9FFDF0020207010BD10B5FFF72D +:105BA000DFFF00F022FB18490020C87210BD70B55D +:105BB0000446012000F05BFAC5B20B2000F057FA52 +:105BC000C0B2854200D0FFDF6FF0040000F04FFA52 +:105BD000C5B2192000F04BFAC0B2854200D0FFDFF9 +:105BE0000549002001220C7188700A704870C87045 +:105BF000054908700AE00000D4000020A224020039 +:105C0000043602002CEF01008C0B0020BDE8704030 +:105C1000C4E7FD49087070472DE9F041FB4C06468A +:105C2000207800284CD1FA48FCF769F82073202826 +:105C300046D04FF00308666084F800800025657246 +:105C40002572A6B1012106F1F400FDF750F90620F6 +:105C5000F9F746FF07460720F9F742FF16F8F41F49 +:105C60003844B1FBF0F200FB1210401C3070FCF71E +:105C700099F840F2F651884200D2084600F23D10F1 +:105C800086B2FEF73FFEE061FEF760FE0127C8B175 +:105C9000A772002000F067FA0644FCF7A9F8314625 +:105CA000FBF7AFFDC4F8180084F8148084F8158061 +:105CB000D6492574207B103100F0F2F960B90AE072 +:105CC0000C2022E7FCF794F83146FBF79AFDA0611F +:105CD000A572E772E8E7FFDF25840020FFF709F9E6 +:105CE000002012E77CB50025044680F80451A0F896 +:105CF0005051C54900950195C648097894F864212A +:105D00002B4630F8111030F812002A46084481B2B0 +:105D10002046FFF7BCFB00B1FFDFC4F800510120B3 +:105D2000C4F8F85084F80401A4F81651A4F81451EA +:105D300084F81A5134F8580F401E24F8900B0020B4 +:105D4000A4F86A507CBDB04948707047AF4810B5A0 +:105D5000417A012409B1002408E0C17A31B1406AD6 +:105D6000AD49884202D90024FFF7BFF8204610BD94 +:105D700070B5A54C0646E088401CE080D4E90201DD +:105D80006278D6F8585112B12A4603F0F4FBA060AD +:105D9000854205D896F80401012801D0E07808B1C1 +:105DA000002070BD012070BD70B504460D46084648 +:105DB000FEF764FB022D10D0984908444FF47A7125 +:105DC00000F2E140B0FBF1F040F2E2414C4300F55B +:105DD0004D70844203D9201A70BD9149EDE700202F +:105DE00070BDFEB50025044680F8185190F8D60025 +:105DF00000284AD194F80401032846D1FBF7F8FFA4 +:105E00000146D4F84801FCF701FD00283DDD21469C +:105E100000F06AF9411CB4F858000144A4F81411C8 +:105E2000B4F81411B4F8CC20511A09B200292CDDB1 +:105E3000012184F81A11B4F87E10B4F87C20891A74 +:105E4000491E084486B21AE06F49724802AA0978CE +:105E500030F81110CDE90052B4F8142194F86431EF +:105E600030F813000123084481B22046FFF70FFBEE +:105E700000280AD0012809D0022806D0FFDFB4F894 +:105E80001401301A00B20028DEDAFEBDB4F81401A5 +:105E9000BDF808100844A4F81401F0E77CB500250B +:105EA0000446012902D15848C17871B1042084F810 +:105EB000040100BFFBF7A8FEA4F85251B4F8580043 +:105EC000A4F8160184F81A517CBD5249007894F860 +:105ED000042131F810000123032A13D0012AE9D14B +:105EE000CDE9003594F86431B4F8CC2031F81310C2 +:105EF0000023084481B22046FFF7C9FA0028D9D010 +:105F0000FFDFD7E7C4F80051C4F8F850E8E770B5F0 +:105F10003E4C00263546E07A08B1E57219E0A07AD9 +:105F200018B1012000F01FF90646FEF70FFD811998 +:105F3000A069FBF766FCA061257403206075607A98 +:105F400030B93249207B103100F0AAF800B9FFDFE8 +:105F50002584FBF759FE2C480079BDE87040F5F721 +:105F6000D1BC10B5062916D2DFE801F00509030CF3 +:105F70000C0D002100E00121BDE810408EE7032157 +:105F800080F8041110BDB0F80C118AB2816ABDE826 +:105F90001040FFF748BAFFDF10BD10B548B1012827 +:105FA00003D0022805D0FFDF10BDBDE8104000F08F +:105FB00048B9BDE81040AAE770B5134CA178022992 +:105FC00012D1E18800290FD12569C5F85C0195F847 +:105FD0005200E035FEF748FAE96F081AA16801445B +:105FE000A160E1680844E06070BD70B505460648F0 +:105FF0008378022B16D0054C2434C1B1012915D069 +:10600000022916D0FFDF70BDD40000208C0B0020C9 +:106010000D5B01002CEF0100DB821300A2240200C3 +:1060200004360200046904F5AC74E6E76D1E2560D1 +:10603000E9E71046FEF72FFA4FF47A7100F2E140DB +:10604000B0FBF1F0281A2060DDE7D74810B50078E2 +:1060500008B1002010BD0720F9F734FD80F00100E1 +:1060600010BDD1480078002800D0012070470028DA +:1060700006DA00F00F0000F1E02090F8140D03E0C4 +:1060800000F1E02090F800044009704710B5044684 +:10609000202800D3FFDFC448283030F8140010BD9A +:1060A000FCF7EEB870B50446002084F8040194F8BB +:1060B00054514FF6FF76202D00D3FFDFBA48283029 +:1060C00020F8156094F85401FBF773FE202084F843 +:1060D000540198E702460020002904D0B3485143F8 +:1060E000B1FBF0F0401C7047002809D0D1F80C211A +:1060F000498840F271235943C2EB4101B0FBF1F0F2 +:10610000704770B50125AA4E0C46082829D2DFE851 +:1061100000F0040F17171228281B204600F0FAF889 +:10612000204600F0BAF884F818510220B0706AE7EF +:1061300001F076FD01E0FEF7E3F884F8185162E71C +:106140002046BDE8704028E494F80401042800D0FB +:10615000FFDF2046FFF7A6FF3079BDE87040F5F776 +:10616000D1BBFFDF4FE708B500284FF001016846BB +:1061700002D0FCF79DFE01E0FCF790FE9DF80000C8 +:1061800042F210710002B0FBF1F201FB120008BDF7 +:1061900070B5854C05462078032800D0FFDF002627 +:1061A000082D20D2DFE805F0040D1717131F1F1A62 +:1061B0006662FEF7A7FD00B1FFDF7D49032088700E +:1061C00021E7FEF780FE0028FAD0FFDF1BE7BDE8DD +:1061D0007040FEF795B8BDE8704054E4207BFBF7B3 +:1061E000E8FD26700FE7FFDF0DE7FEB5704C0120DC +:1061F000E0704FF6FF750CE00721F9F7C9FC0600C7 +:1062000000D1FFDF96F85401FCF799FB3046FFF709 +:1062100049FF69460720F9F744FC50B1FFDF08E069 +:10622000029830B190F8041119B10088A842E3D166 +:1062300004E06846F9F713FC0028F1D00020E07074 +:10624000FEBD70B5584C0020E072A6692070012098 +:1062500020720021606802F093FF6068C0F8486116 +:10626000257B80F85451616AC0F84C61C0F8581120 +:106270000688202D00D3FFDF4B48283020F815601A +:106280006068FFF72FFD00B1FFDFFBF7BDFC48485A +:106290000079BDE87040F5F735BB70B50546FBF7F2 +:1062A00081FD95F8526004463046FEF7E7F8022E6D +:1062B00026D0404940F2712208444FF47A7100F22E +:1062C000E140B0FBF1F0D5F80C110144688850436F +:1062D000C1EB4006303EB72C00D8B7242946012038 +:1062E00003F05BF92044341A29460120A4F2193442 +:1062F00003F053F9696A9C30814203D9081A02E01D +:106300002D49D7E700202A49A042CC6000D320467F +:10631000886078E610B5044625490020C4F8580185 +:10632000C880C4F85C0194F8190138B9FBF760FD26 +:10633000D4F82411FCF76AFA002813DCB4F816111B +:10634000B4F85800814201D1B4F8CC10081AA4F86E +:10635000CE00A4F85810D4F84001C4F82401C4F8C1 +:1063600048011CE0B4F81401B4F85810401AA4F81D +:10637000CE00B4F81401A4F85800D4F82401C4F8ED +:106380004001C4F84801D4F82C01C4F8D800D4F86E +:106390003001C4F84C01B4F83401A4F8500120468F +:1063A000BDE8104001F030BB8C0B002040420F00D4 +:1063B000D4000020A224020004360200012806D0E6 +:1063C000022807D0042808D0082808D105E00129B0 +:1063D00007D004E0022904D001E0042901D0002004 +:1063E00070470120704770B5FE4CE06890F864007B +:1063F0001B2800D0FFDFE068002580F88B5090F864 +:10640000A20100B1FFDFE06890F88C1041B180F884 +:106410008C500188A0F8A61180F8A4510D2108E045 +:106420000188A0F8A61180F8A451012180F8A811D4 +:106430000C2180F8A2110088F9F7DCFCF9F774F957 +:10644000E078F5F75FFAE06880F8645070BD70B5E9 +:10645000E44C2079800725D56078002822D1216975 +:1064600020460126CA78C568921E05F15800162AF2 +:1064700079D2DFE802F00BAF4A566718AF32AF406F +:106480006A5DAFAFAF5D6E797F8C9DA7012395F8F4 +:106490006620194602F0E9FF002803D1E1680820D0 +:1064A00081F8660070BD087995F863100A2909D152 +:1064B00095F8C210814205D1002085F8630085F867 +:1064C000860070BD95F86500010704D520F008002E +:1064D00085F8650068E0FFDF70BD95F86500C007CE +:1064E00000D1FFDF01F031FCE06810F8651F21F0FA +:1064F0000101017070BD95F86400102800D0FFDF25 +:10650000E068112180F88B6008E095F86400142899 +:1065100000D0FFDFE068152180F88B6080F8641000 +:1065200070BD95F86400152800D0FFDF172005E046 +:1065300095F86400152800D0FFDF1920E16881F884 +:10654000640070BDBDE870404DE7BDE8704001F0EB +:1065500008BC95F863200123002102F086FF00B9F2 +:10656000FFDF0E200FE035E015F8650F20F0040086 +:10657000287019E095F863200123002102F075FFCF +:1065800000B9FFDF1C20E16881F8630070BD95F859 +:106590006500C0F30110012800D0FFDFE06810F8AB +:1065A000651F21F010010170BDE8704001F0CDBB06 +:1065B00095F863200123002102F057FF00B9FFDFA7 +:1065C0001F20E0E795F86400212801D000B1FFDF2B +:1065D0002220B3E7FFDF70BD8248C16891F86520D3 +:1065E000130702D501214170704742F0080281F87B +:1065F00065204069C07881F8C10001F09DBB10B5ED +:10660000784CE1680A88A1F8E62181F8E40191F864 +:10661000510001F03EFBE16881F8E80191F8520079 +:1066200001F037FBE16881F8E901012081F8E2011E +:10663000002081F89201E078BDE81040F5F762B9DA +:1066400010B5684C0521E068FFF78BFCE06890F816 +:106650004E10012913D000F5CB7102880A85028EF5 +:106660004A85828E8A85428ECA85C08E0886012020 +:1066700081F82600E078BDE81040F5F743B9022123 +:1066800080F84E1010BD10B5564C01230921E0686A +:1066900090F86320583002F0E8FE38B1E16800203D +:1066A00001F87A0F087301F8170C10BD0120607013 +:1066B00010BD70B54B4D2946E868496990F86320D4 +:1066C00009790E2A01D1122903D000241C2A03D0F3 +:1066D00004E0BDE87040D6E7142902D0202A07D094 +:1066E00008E080F8634080F88640BDE87040A7E786 +:1066F000162914D0172918D190F86410222914D122 +:1067000080F8644001F021FBE86880F87B4090F855 +:106710009201002809D00020BDE870406FE780F8A2 +:10672000634080F886401A20F6E770BD2DE9F843F3 +:106730002C4CE06890F86310202909D05FF0000726 +:1067400090F86410222905D07FB300F1630503E0BF +:106750000127F5E700F1640510F8941F41F00401EA +:106760000170606903F038FB4FF00108002608B3A0 +:106770003946606901F09FFAE0B16A466169E068F4 +:1067800002F064FF80B3606903F024FBE168A1F8C4 +:106790007C01B1F8581001F070FA30B3E06828219C +:1067A00080F8731080F8728045E0FFE70220607087 +:1067B000BDE8F883E06890F8920110B11E20FFF761 +:1067C0001EFFC7B16069E168C07881F8C20008FAAD +:1067D00000F1C1F3006000B9FFDFE0680A2180F832 +:1067E000631003E0F00000200EE019E090F886004E +:1067F00030B9FFDF04E02E7001F0A7FAFFF7ECFEDE +:10680000E06880F87B60D3E7E06890F8920110B10F +:106810000020FFF7F4FE2E70E06880F87B600AE04D +:10682000E0689DF8001080F87E119DF8011080F856 +:106830007F1124202870E06800F164018D4203D1AB +:10684000BDE8F84301F081BA80F88660B0E770B522 +:10685000FC4C01230B21E06890F86420583002F0D2 +:1068600004FE202650BBE0680123002190F864203C +:10687000583002F0FAFD0125F0B1E06890F86300AD +:1068800024281BD0606903F085FAC8B1E06890F84D +:10689000941041F0040180F8941061694A7902F083 +:1068A000070280F85020097901F0070180F84F10A5 +:1068B00090F893311BBB06E0657070BD667070BDCB +:1068C000BDE8704088E690F89231C3B900F15103F9 +:1068D0005E788E4205D11978914202D180F87B50C2 +:1068E0000DE000F5EE710D7002884A8090F84F209F +:1068F0000A7190F850004871E078F5F703F8E16804 +:10690000212081F86400BDE8704001F015BA70B52F +:10691000CC48C06890F84E20448EC38E418FB0F8AA +:106920004050022A23D0A94200D329460186C18FB4 +:10693000B0F84220914200D311468186018FB0F811 +:106940004420914200D311464186818FB0F8462001 +:10695000914200D31146C186418EA14200D90C4616 +:106960004486C18E994200D90B46C38670BD028E03 +:10697000914200D31146C68F828E964200D2324693 +:10698000A94200D329460186B0F842108A4200D3BA +:106990000A468286002180F84E10CFE770B5A94CD8 +:1069A000E06890F8650010F0300F04D0607840F097 +:1069B0000100607070BD606903F0D0F948B3E5680C +:1069C000606903F0C7F92887E568606903F0BEF9DC +:1069D0006887E568606903F0BFF9A887E5686069C2 +:1069E00003F0B6F9E88720794FF00102800703D55C +:1069F0002069C07814280FD0E06890F863101C2933 +:106A00000AD090F84E1001290DD090F8891151B993 +:106A100006E0BDE87040DFE5E06880F84E2002E067 +:106A200090F8881131B1E06810F8651F41F010014D +:106A3000017016E090F8651041F0200180F86510B3 +:106A400000F5CB7103888B86038FCB86438F0B8732 +:106A5000838F4B87C08F888781F83220E078F4F7E6 +:106A600051FFBDE8704001F067B970B5754CE06842 +:106A700090F86510890707D590F863200123082155 +:106A8000583002F0F2FCE8B1E06890F88E00800720 +:106A900012D4606903F03EF9E16881F88F00606903 +:106AA00030F8052FA1F890204088A1F8920011F845 +:106AB0008E0F40F002000870E06890F88E10C90751 +:106AC00003D00FE00120607070BD90F86500800772 +:106AD00000D5FFDFE06810F8651F41F0020101708A +:106AE00001F02AF9E068002590F86310062906D124 +:106AF00080F8635080F88650E078F4F703FFE06890 +:106B000090F87A110429DFD180F87A51E078F4F70F +:106B1000F9FEE06890F863100029D5D180F886501E +:106B200070BD70B5474C01230021E06890F86420E7 +:106B3000583002F09AFC012578B9E06890F864209A +:106B4000122A0AD001230521583002F08EFC10B120 +:106B50000820607070BD657070BDE06890F88C00B2 +:106B600008B901F0E9F8E1686069E03103F0B4F8D0 +:106B7000E1686069B83103F0B9F8E06890F8AA01FB +:106B800000B1FFDFE1680888A1F8AC0101F5D77119 +:106B9000606903F090F8E168606901F5DB7103F06A +:106BA00092F8E06880F8AA51142180F86410E07827 +:106BB000BDE87040F4F7A6BE70B5224C0123002159 +:106BC000E06890F86420583002F04FFC0125A8B12D +:106BD000606903F03CF898B16069E168B0F80D00B5 +:106BE000A1F87C01B1F8581001F047F858B1E068FD +:106BF000282180F8731080F8725070BD657070BDE8 +:106C0000BDE87040E8E46069E168027981F87E21BE +:106C1000B0F80520A1F8802103F00CF8E168A1F894 +:106C20008201606903F009F8E168A1F884016069F4 +:106C300003F00AF8E168A1F886010D2081F86400EC +:106C400070BD0000F00000207CB5F84C2079C00732 +:106C500033D0606901230521C578E06890F864208D +:106C6000583002F002FC68B1022D0BD00A2D09D079 +:106C70000B2D07D0032D05D0062D03D0607840F0F2 +:106C8000080060706078002817D160690226C57816 +:106C90001DB1012D01D0162D18D1E06890F86300C8 +:106CA00002F0D6FB90B1E16891F863001F280DD087 +:106CB000202803D0162D1AD066707CBD252081F8BF +:106CC0006300162D70D02A20FFF799FC192D6CD285 +:106CD000DFE805F0262310359292388F4992292C4F +:106CE00046929292928C6F6C8083869289002020CB +:106CF00060707CBDE0680123194690F8662058302A +:106D000002F0B3FB20BB606902F0CEFFE16881F8BE +:106D10006801072081F8660070E001F0CBF86DE0B3 +:106D2000FFF74AFF6AE001F0A5F867E0E06890F835 +:106D3000641011290BD1122180F864105EE0FFF776 +:106D4000F0FE5BE0E06890F86400172801D0667000 +:106D500054E000F0FAFFE1681B2081F864004DE088 +:106D6000FFF783FE4AE0E06890F86500C00703D0B3 +:106D7000607840F0010022E06946606902F0D1FFCE +:106D80009DF8000000F02501E06800F8941F9DF8D0 +:106D9000011001F04101417000F0CEFFE06810F8F1 +:106DA000651F41F0010113E01AE025E0FFF76BFCDD +:106DB00024E0E06890F86500400702D5012060708B +:106DC0001CE000F0B9FFE06810F8651F41F0040115 +:106DD000017013E0FFF7E2FD10E001F017F80DE09D +:106DE000FFF735FD0AE0FFF7A1FC07E000F0E5FF43 +:106DF00004E0FFF75EFC01E0FFF7EEFBE168F1E97C +:106E00002802401C42F10002C1E900027CBD70B5BD +:106E1000864C207900073FD5607800283CD1E06897 +:106E200090F8C300FF2800D1FFDFE068FF2180F861 +:106E3000C31090F86410192907D1002580F88B50F1 +:106E400000F083FFE06880F86450E06890F8631019 +:106E50001F2918D190F8640002F0FAFA78B1E068BE +:106E60002521012380F8631090F864200B2158300D +:106E700002F0FBFA38B92A20FFF7C1FB03E0E16812 +:106E8000202081F86300E06890F86610082903D19B +:106E90000221217080F8C310D2E66449C96891F8D4 +:106EA0007E210AB991F8512081F8512091F87F2173 +:106EB0000AB991F8522081F85220002802D000200F +:106EC000FFF79DBB704770B5584C06460D46E0680D +:106ED00090F8C300FF2800D0FFDFE268002082F8AE +:106EE000C36015B1A2F88800AAE622F8820F01203B +:106EF0001071A5E610B54D4C01230021E06890F813 +:106F00006320583002F0B1FA00284AD0E06890F8C7 +:106F1000881111B190F8891129B390F892110029C4 +:106F20003FD090F8931100293BD190F864200123C1 +:106F30000B21583002F099FA002832D1E06890F81D +:106F4000941190F85100FFF739FA70B3E06890F8A7 +:106F5000951190F85200FFF731FA30B3BDE81040B8 +:106F60000020FFF74CBBB0F88A1120F8401FB0F8A2 +:106F70004C114180B0F84E118180B0F85011C180A1 +:106F8000002180F8481190F8250080060AD500F00D +:106F9000F5FFE06810F8651F21F0200141F01001B5 +:106FA000017010BD0021142016E0FFE7E068012306 +:106FB000032190F86420583002F057FA0028F0D1ED +:106FC000E0680123022190F86420583002F04DFA65 +:106FD0000028E6D100211620BDE8104073E710B567 +:106FE00058BB124CE06890F86510CA0702D0012126 +:106FF000092018E08A070AD501210C20FFF763FF5A +:10700000E06810F88E1F41F0010101702CE04A0782 +:1070100002D50121132006E00A0709D510F8C11F87 +:10702000C17001210720FFF74EFF1DE0F000002096 +:10703000C90602D590F8891109B1002010BD90F859 +:10704000881179B1B0F88A1120F8401FB0F84C11BE +:107050004180B0F84E118180B0F85011C1800021FC +:1070600080F8481100F08AFF012010BD70B5F74C80 +:10707000E06890F8C310FF296FD1617800296CD1C6 +:1070800090F8662001231946583002F0EEF90028E6 +:1070900063D1E06890F8661149B10021A0F8801032 +:1070A00090F8671180F8C4100021022041E090F8A8 +:1070B000642001230421583002F0D7F90546FFF778 +:1070C0008EFF002849D1284600F063FF002844D1F4 +:1070D000E0680123002190F86320583002F0C5F9E0 +:1070E00078B1E0680123042190F86420583002F060 +:1070F000BCF930B9E06890F87A0010B10021122094 +:1071000017E0E06890F863200A2A0DD0002D24D102 +:1071100001230021583002F0A8F988B1E06890F806 +:107120007A1104290CD107E010F8C21F81700021E8 +:107130000720BDE87040C6E690F88E00800702D0B8 +:10714000BDE87040D6E600210C20FFF7BCFEE068E9 +:1071500010F88E1F41F00101017071E53EB5054642 +:107160006846FDF728FA00B9FFDF2221009807F0F2 +:107170002BFC0321009802F022FD0098017821F0F9 +:1071800010010170294602F049FDB04CAD1E162DCC +:107190006FD2DFE805F00B9352949411935D9394B2 +:1071A000162C939393239494306F4988E068009948 +:1071B00090F8C400087182E0E168009891F8C4106A +:1071C00017E0A26800981178017191884171090A4D +:1071D00081715188C171090A017270E00321009820 +:1071E00002F012FE0621009802F012FE67E00098FD +:1071F0000621017163E0E068B0F84410009802F0E5 +:1072000095FDE068B0F84610009802F093FDE06844 +:10721000B0F84010009802F091FDE068B0F842101C +:10722000009802F08FFD4AE00098E16891F89421FF +:10723000027191F89511417141E0E1680098E831DF +:1072400002F058FDE1680098BC3102F05DFD36E0C7 +:107250007F49D1E90001CDE90101E06801A990F879 +:10726000940000F025008DF80400009802F088FDDD +:1072700025E023E0E068B0F84010009802F05EFDE1 +:10728000E068B0F84210009802F05CFDE068B0F8E9 +:107290004410009802F04AFDE068B0F846100098EB +:1072A00002F048FD0BE0E16891F892010028009897 +:1072B000BCD111F8512F02714978BCE7FFDFFDF70F +:1072C0008FF9002800D1FFDF3EBD604810B5C068CF +:1072D00090F8691041B990F86420012306215830D4 +:1072E00002F0C3F8002800D0012010BD70B5574D42 +:1072F000E86890F8671039B1012905D0022906D055 +:10730000032904D0FFDF9BE4B0F8CC1037E090F8FD +:107310006610082936D0B0F87C10B0F87E20002422 +:107320008B1C9A4206D3511A891E0C04240C01D0DE +:10733000641EA4B290F87A1039B190F8632001234A +:107340000921583002F091F840B3FFF7BEFF78B141 +:10735000E9680020B1F87620B1F874108B1C9A42CD +:1073600003D3501A801E00D0401EA04200D284B227 +:107370000CB1641EA4B2E868B0F8CC102144A0F8A7 +:10738000C8105DE4B0F87C100329BDD330F8581F55 +:10739000C28C1144491CA0F8701051E40024EAE7A3 +:1073A00070B50C4605464FF4F871204607F02EFBE9 +:1073B000258045E4F8F7F5BC2DE9F0410D46074678 +:1073C0000721F8F7E5FB04003ED094F8960100266B +:1073D000B8B16E70082028700DE0268484F896619C +:1073E000D4F89801C5F80200D4F89C01C5F806004D +:1073F000B4F8A001688194F896010028EDD1AE7030 +:10740000C7E094F8A201B0B394F8A2010C2813D0FD +:107410000D2801D0FFDFBCE02088F8F7EBFC074621 +:10742000F8F797F978B96E700D20287094F8A401D8 +:10743000A8702088A88018E02088F8F7DBFC0746B1 +:10744000F8F787F930B10020BDE8F081F0000020A6 +:1074500044EF01006E700C20287094F8A401A8700D +:107460002088A88094F8A801A87184F8A261384601 +:10747000F8F769F98DE0FFE794F8DA0130B16E7042 +:107480000F20287084F8DA616F8082E094F8AA01F6 +:1074900080B16E700920287020886880D4F8AE1101 +:1074A0006960D4F8B211A960B4F8B601A88184F873 +:1074B000AA616EE094F8B80140B16E701720287090 +:1074C000B4F8BA01688084F8B86162E094F8D40135 +:1074D00078B16E701820287006E000BF84F8D4617F +:1074E000D4F8D601C5F8020094F8D4010028F5D1EB +:1074F0004FE094F8BC01A8B16E70142028700CE025 +:1075000084F8BC61D4F8BE01C5F80200D4F8C20109 +:10751000C5F80600B4F8C601688194F8BC010028DB +:10752000EED136E094F8C80180B16E701A20287050 +:1075300084F8C861D4F8CA01C5F80200D4F8CE01B5 +:10754000C5F80600B4F8D201688122E094F8DC01A5 +:1075500040B11B20287084F8DC61D4F8DE01C5F846 +:10756000020016E094F8E20100283FF46DAF6E705F +:107570001520287009E000BF84F8E261D4F8E40126 +:10758000C5F80200B4F8E801E88094F8E2010028A8 +:10759000F2D1012058E7FE4A9060D1707047002177 +:1075A00080F8631080F8641080F8671090F8D610A7 +:1075B00009B1022100E00321FEF7D3BC2DE9F0411F +:1075C000F34C0546E06809B1002104E0B0F8DE1094 +:1075D000B0F8CE201144A0F8DE1090F8661139B949 +:1075E00090F8662001231946583001F03EFF30B173 +:1075F000E06830F8801FB0F84E2011440180E06848 +:1076000090F8863033B1B0F88210B0F8CE20114433 +:10761000A0F8821090F98A70002F06DDB0F888106B +:10762000B0F8CE201144A0F8881001213D2615B1F4 +:1076300080F8736013E02278022A0AD0012A11D060 +:1076400062782AB380F8721012F0140F0DD01E2148 +:1076500013E090F8C420062A3CD016223AE080F8C5 +:10766000721044E090F8682134E0110702D580F8E8 +:1076700073603CE0910603D5232180F8731036E057 +:10768000900700D1FFDFE1682A2081F873002AE02B +:107690002BB1B0F88220B0F884309A4210D2002F7B +:1076A00005DDB0F88820B0F884309A4208D2B0F8EE +:1076B0008030B0F87E20934204D390F866310BB14D +:1076C000222207E090F867303BB1B0F87C3093425B +:1076D00009D3082280F87320C1E7B0F87C20062A7D +:1076E00001D33E22F6E7E06890F8721019B1E06825 +:1076F000BDE8F04153E7BDE8F0410021FEF731BCA1 +:107700002DE9F047A24C81460D46E0680088F8F765 +:1077100083FB060000D1FFDF60782843607020798A +:107720004FF000058006E06804D5A0F87C5080F892 +:10773000DC5003E030F87C1F491C0180FFF7C5FDD9 +:10774000012740B3A088000506D5E06890F86910CD +:1077500011B1A0F874501EE0E068B0F87410491C34 +:1077600089B2A0F87410B0F876208A4201D3531A77 +:1077700000E00023B4F806C00CF1050C634501D805 +:1077800080F87A70914206D3A0F8745080F8DA71CC +:10779000E078F4F7B7F820794FF0020810F0600FA6 +:1077A0000ED0E06890F8671011B1032908D102E00B +:1077B00080F8677001E080F867800121FEF7D1FB57 +:1077C000E06890F86710012904D1A188C90501D5A6 +:1077D00080F86780B9F1000F78D1A188890502D5BA +:1077E000A0F8F05003E030F8F01F491C018000F0D1 +:1077F0008CFBFFF73BFC00F05FFE0028E06802D046 +:10780000A0F8D05003E030F8D01F491C018000F0F0 +:1078100056FE38B1E16891F8DC00022807D8401C18 +:1078200081F8DC00E06890F8DC00022804D9E06808 +:1078300020F8D05F45800573E0680123002190F8AF +:107840006420583001F011FE20B9E06890F864001F +:107850000C2859D1E0680123002190F863205830AA +:1078600001F003FE98B3E0680123002190F8662040 +:10787000583001F0FAFD50B3E06890F86710022923 +:1078800042D190F8DC0010BB3046F7F732FDF0B182 +:10789000E16891F8C300FF2836D1B1F8CA00012889 +:1078A00032D981F8D570B1F87E00B1F87C20831E02 +:1078B0009A4201DB012002E0801A401E80B2B1F83A +:1078C000D020E3889A4203D3012204E028E01BE0A1 +:1078D0009A1A521C92B2904200D91046012801D146 +:1078E00081F8D55091F8612192B1B1F8D220B1F868 +:1078F00062118A4201D3012102E0891A491C89B22E +:10790000884205D9084603E0E168012081F8D55096 +:10791000E168B1F858201044A1F8CC00FFF7E6FC6C +:10792000A088C0F340214846FFF748FEE06880F891 +:10793000D650BDE8F047FCF776BE154902464878B8 +:107940008B7818430DD10846C06842B10979090700 +:1079500003D590F86600082803D001207047FEF791 +:1079600007BA0020704770B5094C05460E46A0883E +:107970002843A080A80703D5E80700D0FFDF2661D1 +:10798000EA074FF000014FF001001DD0666101E0F1 +:10799000F0000020F278062A02D00B2A14D10AE067 +:1079A000E26892F86430172B0ED10023C2E9263327 +:1079B00082F8680008E0E26892F86430112B03D185 +:1079C00082F8681082F88C00AA0718D52269D2784C +:1079D000052A02D00B2A12D10AE0E16891F864204E +:1079E000152A0CD10022E1E9282201F8370C06E023 +:1079F000E06890F86420102A01D180F86910280608 +:107A000001D50820A0707EE42DE9F84FFB4C00253D +:107A10004FF00108A5806570A5704146257061F39F +:107A20000702E0609246814680F8D6800088F8F729 +:107A3000F3F9070000D1FFDFE0680088FCF7B8FD2C +:107A4000E0680088FCF7DDFDE068B0F8CA1071B1AD +:107A500090F8C310FF290FD190F8661191B190F8FA +:107A6000662001231946583001F0FFFC80B1E06820 +:107A700090F8C300FF2805D0E06890F8C30000BF6D +:107A8000FFF76CFBE06890F8D71089B1E58018E04B +:107A9000E068A0F8805090F8671180F8C4100021C9 +:107AA0000220FFF710FAE06880F8D5500220E7E7DF +:107AB00090F8961119B9018C8288914200D881887A +:107AC000E180B0F8CE10491E8EB2B0F8D01031442B +:107AD000A0F8D01090F8D41021B1A0F8D25080F8BE +:107AE000D45004E0B0F8D2103144A0F8D21030F8ED +:107AF0007C1F31440180FFF7E8FB20B1E06830F8DB +:107B0000741F31440180E068B0F8CA10012902D81E +:107B1000491CA0F8CA100EB180F8DC5090F8D510BE +:107B2000A1B1B0F8D000E18888420FD23846F7F70B +:107B3000E0FB58B1E06890F8611139B1B0F8D210AB +:107B4000B0F86201814201D300F0BCFCE06880F82B +:107B5000D55090F864100B2901D00C2916D1B0F83B +:107B60005820B0F87C31D21A12B2002A0EDBD0F8BD +:107B70007E11816090F882110173022101F000FBF7 +:107B8000E06880F8645080F8968024E0242910D1C1 +:107B9000B0F85810B0F87C21891A09B2002908DB26 +:107BA00090F89201FFF779F9E06800F8645FC57515 +:107BB00011E090F8631024290DD1B0F85810B0F8F6 +:107BC0007C01081A00B2002805DB0120FFF765F9E7 +:107BD000E06880F86350E0680146B0F8CE20583085 +:107BE00001F089FBE06890F8611109B1A0F8D2506A +:107BF00083480090834B844A4946504600F0A9FBD5 +:107C0000E0680123052190F86420583001F02DFC34 +:107C1000002803D0BDE8F84F00F03DBABDE8F88F6A +:107C200000F00CBC10B50446B0F882214388B0F8CF +:107C30008411B0F886019A4205D1A388994202D1F5 +:107C4000E38898420FD02388A4F89A31A4F89C21A5 +:107C5000A4F89E11A4F8A001012084F896016748B9 +:107C6000C078F3F74FFE0121204601F089FA002089 +:107C700004F8640F0320E07010BD401A00B247F60C +:107C8000FE71884201DC002801DC012070470020E1 +:107C9000704710B5012808D0022808D0042808D061 +:107CA000082806D0FFDF204610BD0124FBE7022490 +:107CB000F9E70324F7E72DE9F0478946044602F087 +:107CC0007FF88046204602F07FF84C4D0446E86875 +:107CD00090F8921121B190F8947190F8956101E0BB +:107CE00000273E46204601F0A3FCA0B1EA6892F8C6 +:107CF000511081420FD03C420AD0B9F1000F0AD195 +:107D0000012808D1022906D192F85000204202D160 +:107D10000020BDE8F087404601F08AFC50B14046A3 +:107D200001F086FCE96891F85210884202D018EA06 +:107D30000600EED00120ECE730480021C06820F8B2 +:107D4000881F8178491C817070472C4800B5C16834 +:107D500011F88A0F401E40B20870002800DAFFDFD9 +:107D600000BD10B5254CE06890F87A11042916D1B1 +:107D700090F8632001230021583001F076FB00B910 +:107D8000FFDFE06890F88E10890703D4062180F8A1 +:107D9000631004E0002180F8861080F87A11E06812 +:107DA00090F86500800707D5FFF7CFFFE06810F86F +:107DB000651F21F00201017010BD10B50F4CE06885 +:107DC00010F8941F41F004010170606902F01EF880 +:107DD000162806D1E06890F86300202802D02528F4 +:107DE00005D010BD606902F015F8FEF708FCE168E7 +:107DF000002081F8630081F8860010BDF0000020AB +:107E0000017701003B7901006779010070B5994C59 +:107E100001230A21E06890F86320583001F025FB27 +:107E200018B3606901F09AFFA8B1E568606901F0D4 +:107E300091FF2887E568606901F088FF6887E56839 +:107E4000606901F089FFA887E568606901F080FF3B +:107E5000E887FEF75CFDE168002081F8860081F884 +:107E60006300BDE87040FEF7EBBB607840F00100B6 +:107E70006070C8E510B57F4C01230021E06890F8E0 +:107E80006420583001F0F1FA30B1FFF755FFE16896 +:107E9000102081F86400B0E7E0680123052190F824 +:107EA0006420583001F0E1FA08B1082000E0012018 +:107EB0006070A2E770B56F4C01230021E06890F874 +:107EC0006420583001F0D1FA012588B1606901F0D1 +:107ED000E8FEE168A1F87C01B1F85810FFF7CDFE8B +:107EE00040B1E068282180F8731080F872508AE56C +:107EF000657088E5E168606901F5BF7101F0CCFE4D +:107F0000E1680B2081F864007DE510B5FEF77FFF86 +:107F1000FEF79AFE574C2079400708D5607830B9B3 +:107F2000E06890F86600072801D101202070FEF774 +:107F30008EFA2079C00609D5607838B9E06890F8E3 +:107F400064100B2902D10C2180F86410A07800077E +:107F50000ED5E0680123052190F86420583001F027 +:107F600084FA30B108206070E168002081F8A20135 +:107F700043E7BDE81040002000F0F4BA10B5FEF76A +:107F8000C6FCFEF75DFB0121BDE810401520FEF7A1 +:107F90009ABF10B5374CE16891F8642040B3102ABD +:107FA00006D0142A07D0152A19D01B2A2BD119E084 +:107FB00001210B2018E0FAF777FF0C2816D3E068B0 +:107FC0000821E830FAF774FF28B1E0680421BC30DA +:107FD000FAF76EFF00B9FFDF0121042004E000F092 +:107FE00017F803E001210620FEF76DFF012004E7EA +:107FF000212A08D191F87B0038B991F8920110B18B +:1080000091F8930108B10020F7E601211720EBE772 +:1080100070B5184C0025E06890F8691101290AD064 +:10802000022925D190F88C10A9B1062180F8C4103E +:108030000121022017E090F8A211002918D100F1C7 +:10804000A80300F1E001002200F5B57001F0BAF9D3 +:108050000121052007E090F89400400701D5112088 +:1080600000E00D200121FEF72EFFE06880F8695145 +:10807000C9E40000F0000020F8480078002800D093 +:108080000C20704710B50446FFF7F6FF00B1FFDF84 +:10809000F248447210BDF14901200872704770B572 +:1080A000054600F02CFC044600F025FC65B1E28E8C +:1080B000618E94F85230407C00F00EFC94F852101F +:1080C000BDE87040FBF74FBCFF2094F85110F7E774 +:1080D0002DE9F041074600F012FCE04E0546E0486D +:1080E000706200F008FC04460120FFF7D8FF607CB6 +:1080F00068B304F15001DB4891E80E1000F1080864 +:1081000088E80E10216EC0F82110616EC0F82510AD +:10811000FE38FBF71FFF06F13400007800F0C0FBCB +:1081200080F00101CF4808300176D4E91212C0E98D +:108130000412A0F58372716AFBF713FB95F85200E5 +:1081400000F0C0FB01460120FBF719FB04E0706A58 +:10815000FBF700FFFBF737FB4FB9012295F85230D0 +:1081600096211046FBF720FE9620FBF718FF95F8A6 +:108170002C00012801D1FBF774FF02203070BDE80C +:10818000F0812DE9FC47824600F0B5FB044600F083 +:10819000B6FB0546B14F6079B04E20374FF001096C +:1081A00058B3012863D0022865D0032872D0FFDFBE +:1081B000306AB0460826027822F008020270A379DD +:1081C00006EAC3031A4322F004020270E37904268C +:1081D00006EA83031A4322F0100202706779D8F886 +:1081E0002C00F7F796F80646FCF730FA022F58D025 +:1081F000012F56D0032F57D059E000F089FB0146DC +:10820000A88E00F052FB298E814200D20846ADF8BC +:108210000400A5F848003846FCF7F6F930B14FF4F1 +:108220008060316A00F06EFB03201EE06A4601A9FF +:10823000F06A00F033FB306210B194F8331029B1CA +:108240003846FCF7B2F984F80590B1E79DF80010C4 +:1082500029B9002101808170012101F0B0FCBDF835 +:108260000410306A01F0D8FD02206071A0E73846A2 +:10827000FCF79BF99CE7B5F84800ADF804006A46A6 +:1082800001A9F06A00F00AFB3062002890D1FFDFFC +:108290008EE7FFE73846FCF7B7F9002888D1FFDF03 +:1082A00086E7B04301D002E00EB1012100E00021D9 +:1082B000D8F820004646027842EA01110170217C7C +:1082C00071B3617901292BD004F1500165488EC941 +:1082D00000F1080888E88E00216EC0F82110616E58 +:1082E000C0F82510FE38FBF735FE5C4834300078C6 +:1082F00000F0D6FA01465B4808300176D4E9101246 +:10830000C0E90412A0F58371326AFBF72AFA95F8E6 +:10831000510000F0D7FA01460020FBF730FA03E0E5 +:10832000FBF718FEFBF74FFABAF1000F06D195F8EC +:108330005130012296210020FBF736FD86F805908A +:10834000316A0A88F2818978317486F80090BDE834 +:10835000FC872DE9F047414C8046089F20781D4658 +:108360001646894610B90EB105B107B9FFDFE761BE +:10837000C4E905650020C4E90D892072E07120710F +:10838000E0706071A071A070A08100F0B4FA0646A0 +:1083900000F0B5FA05460088F7F73EFDE062288850 +:1083A000F7F728FD2063FBF7FBFA05F11200FBF756 +:1083B000B9FD05F10E00FBF797FB284C343420780B +:1083C00000F06EFA08B1032000E00120FBF7BFFDCA +:1083D000707EFBF793FBFBF7B4FD207808B3EA8EC1 +:1083E000698E95F85230707C00F076FA95F852500C +:1083F0002946FBF7B8FA2078B8B1606890F86001B8 +:1084000008B1FBF724FB2A4600210120FBF778FC8A +:108410006068D0F8D800FBF7A1FDBDE8F047012067 +:1084200056E6FF2095F85150E2E700212A4608461B +:10843000FBF766FCBDE8F0470120A2E6074800B55F +:10844000343001783438007819B1022800D0FFDFC9 +:1084500000BD0128FCD0FFDF00BD000008010020A6 +:10846000F80B0020F80D002010B500F048FA044683 +:10847000FBF7C6FDFBF7B7FDFBF726FDFBF758FD45 +:10848000FBF7A1F994F82C00012801D1FBF7DFFDDF +:10849000FE4CA08900F076FAE269E179E078904735 +:1084A0000020207010BDF94810B50078022800D0D7 +:1084B000FFDFBDE81040D7E7F44840797047F34844 +:1084C00000797047F1490120887170472DE9F0412A +:1084D000EE4C054639B9012D05D12079401CC0B2BA +:1084E000207101282CD8A1692846884740B3A0797B +:1084F000E74E30B1012D04D1707810B93078C00644 +:108500001ED5E079E0B9E14F3437387800F0C8F98A +:1085100008B1012D04D0387800F0C2F9284311D1F8 +:10852000DA480E300078C10602D43178C90607D582 +:10853000A17829B9A16A29B9618919B1C00601D404 +:1085400001201CE600201AE610B5D04CA06A00B944 +:10855000FFDF6289D4E90910D21C06F0B6F9A06ADF +:10856000606210BD2DE9F047064600F0C4F9C74D22 +:108570000446686A47780EB1012E03D1296B05F0D5 +:10858000C3FE687068784FF000084FF0010940B1F1 +:10859000012818D0022831D0032846D0FFDFBDE8DB +:1085A000F087012E31D0FFF7CFFF39460122286B2B +:1085B000F6F720FF27E000BF84F8078030E000BF17 +:1085C00084F807902CE0012E08D0FFF7BDFF394654 +:1085D0000022286BF6F70EFF022EE0D0D4E912013C +:1085E000401C41F10001C4E91201E079012802D0E8 +:1085F00084F80790D3E784F80780D0E7012E04D0F1 +:10860000286BF7F77BF8022EC9D0D4E91201401C81 +:1086100041F10001C4E91201E0790128D0D1CBE792 +:10862000687ABDE8F047F3F76DB9012EB7D0286B33 +:10863000F7F764F8F4E72DE9F041074600F05BF93D +:108640000446924800260125416A0A7802F0030296 +:10865000012A1FD0022A1DD0032A03D0C17941F07C +:1086600004012EE00746084601F0C2FA68B1A57081 +:10867000B88940F40060B8810120796A00F042F9BD +:1086800021E0E6717BE5E57179E5F87940F01000CD +:10869000F87174E54978B1B1828942F4006282814F +:1086A000826A002AEED0FB2908D8007A20B1BDE802 +:1086B000F041802000F066B93D7060E5C17941F07D +:1086C0001001C1715BE5E0790128DCD1D9E770B513 +:1086D00000F011F96D4D04462878012800D0FFDF25 +:1086E000A078012650B10020A0700146042000F0BF +:1086F00009F966483430007800B12671286A00789C +:10870000C043800706D1E07820B9E6700220296ACC +:1087100000F0F8F801210020FFF7D8FE10B1BDE805 +:108720007040A1E6BDE870400020D1E42DE9F84397 +:10873000814600F0E0F8554C002605468DF80060B3 +:108740002078022800D0FFDFA08940F40070A081CB +:108750000020FFF7A4FC687CB9F1000F5DD0FBF7A7 +:1087600055F8FBF745F8012760B9687C50B1606A9D +:10877000417839B10078E979C0F3C000884201D16D +:10878000E7705DE0606A4178618121B1206BF6F7A6 +:10879000EBFDA06200E0A662A08940F02000A0816D +:1087A000267100F0A8F8804600F0A9F8064690F877 +:1087B0002C00012816D1FBF74AFC4146304600F058 +:1087C0001FFE78B1314834300178406811B300F5AC +:1087D000EA703188418098F8081001710770607A5A +:1087E000F3F790F8606AA9790078C0F380008842B6 +:1087F00005D000F0CCF8A08940F48070A081606AB8 +:10880000E9790078C0F3C00088420DD16846FFF7CF +:1088100012FF09E000F58670DBE708B1FBF723F8EB +:10882000A08940F04000A08149460120FFF74EFE9C +:1088300000289DF8000007D010B10020FFF792FE3D +:10884000FFF712FEBDE8F88310B10120FFF78AFEA2 +:108850000020FFF796FC9DF800000028F2D00220CF +:10886000FFF780FEEEE770B50C46054600F047F8CE +:10887000064990F8512034312846097800292146CC +:1088800003D0BDE87040FDF7B0BB03E00801002055 +:10889000F80B0020BDE8704002F0FBBFF6F774BC97 +:1088A00008B10020704701207047022905D06FF001 +:1088B0000D0101EBD00080B270476FF00E0101EBAB +:1088C0009000F8E700B5012802D0022802D0FFDFAF +:1088D0000020C1E50120BFE570B50C4605461946EC +:1088E0001046FFF7E2FF844200D22046002D01D05F +:1088F000001D80B270BD56484068583070475448DB +:1089000040687047524A0123343A937052691047C5 +:1089100010B5FFF7F4FF0446FFF7EDFF0146C27AFA +:108920004B48242A09D0097B242906D01F2A0DD0C0 +:10893000202A0BD0222911D021E00178406811B102 +:1089400090F87E1115E090F8E81012E0222905D089 +:108950000178A1B1406890F8940107E0017871B105 +:10896000416891F8940191F85010084000F04FF8D8 +:10897000014694F85100BDE8104000F052B894F858 +:10898000510010BD324A0021343A5269104770B587 +:10899000FFF7B1FF04464079002835D0022810D1F6 +:1089A0002B4D343DE86AF6F71BFC00B9FFDFD4E934 +:1089B0001001401C41F10001C4E91001687AF2F78E +:1089C000A1FF234800256571007830B1207920B1DE +:1089D000257100211020FFF795FFE07878B1E57050 +:1089E000FBF721FE00B9FFDF00210820FFF78AFF17 +:1089F000D4E91001401C41F10001C4E91001A07943 +:108A0000012802D00120A07170BDA57170BDC10701 +:108A100001D001207047800701D502207047002057 +:108A2000704700B500290CD008280BD0042809D0C5 +:108A3000082907D0042905D0012806D0012904D02F +:108A4000022009E5FFDF082006E5012004E500001B +:108A50003C0100202DE9F0410F4606460024FB4D65 +:108A60000FE000BF05EBC40090F84311B14206D1FE +:108A70000622394600F5A27005F0FBFE38B1641CF1 +:108A8000E4B22878A042EDD81020BDE8F08120465D +:108A9000FBE770B50546ED480478621C027000EBF8 +:108AA000C4060868C6F844018888A6F84801102C56 +:108AB00000D3FFDF86F84351204670BD70B50546F0 +:108AC00000F060FA10281CD1E04C2078401EC0B2A3 +:108AD0002070A84215D004EBC00204EBC50102F5DA +:108AE0008070D2F84321C1F84321D0F84700C1F883 +:108AF0004701207800F046FA102802D0204480F880 +:108B0000035170BD2DE9F047D04C0646A719A07857 +:108B1000401EC5B2A57097F80381AE422AD004EB7F +:108B2000051A04EB06190AF1030109F103001022EA +:108B300005F0CBFE0AF1830109F18300102205F054 +:108B4000C4FE601905EB450290F8031187F8031184 +:108B500006EB460104EB420204EB4101D2F80B3173 +:108B6000C1F80B31B2F80F21A1F80F2190F83B01A9 +:108B700087F83B0104EBC80090F84A01C00703D115 +:108B80004046BDE8F04799E7BDE8F08710B540F2F0 +:108B9000C311AE4805F018FFFF220821AC4805F0CC +:108BA0000BFFAB4800210A3841704FF461714180DE +:108BB00010BD70B50D460646FFF74CFFA34C1028BC +:108BC00007D004EBC00191F84A11C90701D0012078 +:108BD00070BD617808290ED2102803D1294630468D +:108BE000FFF757FF617804EBC000491C6170012159 +:108BF00080F84A11EBE7002070BD70B5934D2878DE +:108C0000401E44B20BE000BF05EBC40090F84A01DF +:108C1000C00702D0E0B200F0C6F9641E64B2002CB6 +:108C2000F2DA70BD2DE9F047984691460C460746AA +:108C3000FFF710FF0546102805D000F0A3F9102813 +:108C400001D01220A0E7814EB07808281ED2102D46 +:108C500004D121463846FFF71CFF0546B4781022A0 +:108C6000601CB07006EB0417F81C494600F09DFB31 +:108C700007F183001022414600F097FB30190021D4 +:108C800080F8035180F83B1108467DE707207BE719 +:108C90006E4810B58078401E44B204E0E0B2FFF7A1 +:108CA00031FF641E64B2002CF8DA10BD68490A393D +:108CB0004870704766480A384078704740B14AF2B9 +:108CC000B811884204D862490A39488001207047A7 +:108CD000002070475E480A384088704710B5FFF79B +:108CE000B9FE102803D000F04DF9102800D108205B +:108CF00010BD56498A78824203D901EB00108330B7 +:108D000070470020704751498A78824203D901EBAD +:108D10000010C01C7047002070474C4B10B59C7869 +:108D200084420FD9184490F8030103EBC00090F877 +:108D300043310B70D0F844111160B0F848019080B5 +:108D4000012010BD002010BD404A114491F80321BC +:108D50003F490A390A7002684A6080880881704772 +:108D600010B5FAF7C2FC18B1BDE81040FAF7CDBC57 +:108D7000FF2010BD35498A78824209D9084490F80D +:108D8000030101EBC00090F84A0100F001007047B8 +:108D9000002070472DE9F04700252F462B4E2AE092 +:108DA00006EBC70404F5A271884694F84301FFF767 +:108DB00095FF8146FFF7A7FF94F84A11C90718D01D +:108DC00060B1B9F1080F05D206EB090191F83B112A +:108DD000012903D0102100F0D9FA50B11C492846CE +:108DE00001F805906D1C94F843214146EDB2FAF765 +:108DF00047FE7F1CFFB23078B842D1D8C4E62DE9D7 +:108E0000F04100252C46114E1CE03319204693F802 +:108E10000371FFF778FF93F83B11012903D010216C +:108E200000F0B4FA60B10A4806EBC7014455284681 +:108E300091F843216D1CEDB201F5A271FAF720FE05 +:108E4000641CE4B2B078A042DFD81EE6280E0020F1 +:108E50004E01002010B5FAF73FFE20B1FAF740FEB0 +:108E60005649085C10BD082010BD0246534810B595 +:108E70000A38407840B15248817829B1C01CD21CD0 +:108E8000FAF7DFFB012010BD002010BD4C4A01EBBA +:108E9000410102EB41010268C1F80B218088A1F871 +:108EA0000F0170472DE9F04180460024444D19E040 +:108EB0002046FFF71EFF060012D0102100F066FAD0 +:108EC00070B904EB440005EB400707F20B1742466C +:108ED00039463046FBF73BFC38462146FFF7D6FFC4 +:108EE000641CE4B2A878A042E2D8CEE50146102284 +:108EF000344800F05ABA3348704770B5304D0446D4 +:108F0000A878A04206D905EB04101021833000F0A8 +:108F10003DFA08B1002070BD04EB440005EB4000B1 +:108F200000F20B1070BD26498A78824203D90844AA +:108F300090F83B0108B100207047012070472DE9EF +:108F4000F0410E46074615460621304600F01EFA4F +:108F50001B4C58B1002004E02118401C81F83B5103 +:108F6000C0B2A1788142F7D801208EE5314638465B +:108F7000FFF7B4FE082803D0204480F83B51F3E704 +:108F8000002082E50E4910B5034600208A7806E0ED +:108F90000C1894F803419C4204D0401CC0B2824299 +:108FA000F6D8102010BD06494A78521E4A7001EBCF +:108FB000C001002281F84A2180E500004E01002016 +:108FC000280E0020EB0F002000F00101400800F007 +:108FD00001021144400800F001021144400800F071 +:108FE00001021144400800F001021144400800F061 +:108FF00001021144400800F00102114401EB50004D +:10900000704710B50446702105F000FD0020A071E6 +:10901000E071E0722073A073E07360712076607677 +:10902000212084F83C00412084F83D00FF2084F892 +:109030006B0010BD002180F82C100184012280F803 +:1090400051201B2180F85220018741874FF4A471E1 +:10905000C18781871B2303864386C1868186A0F84A +:109060004030A0F84430A0F84610A0F84210A0F814 +:109070004A30A0F84C30A0F848304273704710B521 +:1090800000248484048DDB004C43B3FBF2F394FB97 +:10909000F2F45B1C04859BB203FB02F4C384B4F5B9 +:1090A000C84F01DD5B1EC3844FF4FA43B3FBF2F3F8 +:1090B0005B1C8385038C02EBC3035B1EB3FBF2F3E3 +:1090C000C383838B4B43B3FBF2F1818310BD70B537 +:1090D0000546087B0E4600F01F0008730020E87567 +:1090E00004463019007AFFF76FFF2919641C887451 +:1090F000E97DE4B20844E875052CF2D3C0B2252816 +:1091000000D9FFDF70BD00238383028401EBC2021C +:10911000521EB2FBF1F1C1837047F0B56FF01F0230 +:10912000010C02EA90261F25A1F5AA4054380AD066 +:10913000401E08D0A1F52850AA3804D0B0F5004050 +:1091400001D0012000E00020002213464FEA020473 +:1091500082EA0107FF431F437F1C0FD006F001077F +:10916000520842EAC73205F001075B0876086D082D +:10917000641C43EAC733162CEAD3F0BD0020F0BDCF +:1091800070B50025044600F15806032909D0D1B373 +:1091900001295DD0022935D101463046BDE8704035 +:1091A00095E73046FFF72DFF2046FFF743FF4FF4CA +:1091B00048606080A4F8C850A4F8CA50A4F8CC5005 +:1091C000A4F8CE50A4F8D050A4F8D25084F8D550CA +:1091D00084F8D750A4F8DE5084F8DC50A4F8F0509E +:1091E000A4F8F25084F8885184F8895184F8925197 +:1091F00084F8935184F8615184F8665184F8695178 +:1092000084F87A5170BDFFE7A4F8DE5084F8D65098 +:109210006188FE480A460844B0FBF1F0A4F87600E5 +:109220004BF68030A4F87800E3883046FFF727FF3C +:1092300021463046FFF74BFFD4F80E00FFF76DFFD5 +:1092400010B184F86051DDE7012084F86001D9E7AE +:10925000A4F8DE504188B4F88631B4F88221304653 +:10926000BDE870400BE770B5044600F158050329CE +:1092700009D029B3012935D00229C3D10146284696 +:10928000BDE8704023E72846FFF7BBFE2046FFF706 +:10929000D1FE0020A4F8D000202184F8D21084F858 +:1092A000C800C4F8CC0084F8FC0084F8FD0084F801 +:1092B000060184F8070184F8EC0084F8F800A1E7BF +:1092C0006188D2480A460844B0FBF1F0A4F8760061 +:1092D0004BF68030A4F87800E3882846FFF7CFFEED +:1092E0002146CCE7D4F8F0006188C389428928463A +:1092F000BDE87040C3E6C37D0BB1252B01D9122018 +:1093000070472AB14B7B2BB1012B05D01F20704732 +:109310000020704700F09FBA00F045BABC4A0168CF +:1093200012681140BA4A121D126811430160704759 +:1093300070B50025B749B64C01220B785B1CDBB237 +:109340000B70202B00D10D700E78236802FA06F600 +:109350003342F2D0097803688A405340036051E7F2 +:1093600070B50646007940090ED100252C46305DC7 +:10937000FFF72AFE641C2844E4B2C5B2052CF6D3DC +:10938000012D01D901203DE700203BE710B5002366 +:109390001A4603E0845C2343521CD2B28A42F9D3BA +:1093A0000BB1002010BD012010BD30B5134606E002 +:1093B000CC18D51A14F8014C5B1E4455DBB2002BB7 +:1093C000F6D130BD70B50E468CB0144601461D4630 +:1093D00010226846FFF7E9FF1022314604A8FFF784 +:1093E000E4FF684604F014FA08A94FF0100228467A +:1093F0001CB1FFF7DAFF0CB004E705F066FAFAE7F4 +:1094000038B505460C466846FAF736FE00281ED0E9 +:109410009DF90000207294F909100022411A00D52C +:10942000494295F82D308B4210DCFF2B0ED0A17AEB +:10943000491CC9B2A17295F82E30994202D8617ABE +:109440007F2903D160720020A0720122104638BD2E +:109450000C2806D00B2804D00D2802D01F3806286F +:1094600001D8012070470020704730B5A2F10F04E9 +:109470000C2952D2DFE801F006080D1215182C3421 +:10948000394B404782B348E0072A48D0082A46D0E3 +:1094900043E00C2A43D00B2A41D03EE00D2A3ED0B7 +:1094A0003BE00C2C3BD938E01BB1103A0B2A36D9E3 +:1094B00033E0122A33D0112A31D090F8340020B191 +:1094C000122A2AD31A2A2AD927E0162AFAD224E005 +:1094D000032C24D990F83400F8B11B2A1FD91CE0C2 +:1094E000DBB9042A1BD018E019E013B1062A16D004 +:1094F00013E0012A13D010E01C2A10D01D2A0ED030 +:109500001E2A0CD009E01F3A062A08D905E013B13B +:109510000E2A04D001E0052A01D0002030BD012030 +:1095200030BD2DE9F0410C46054640F233778668A0 +:1095300006E000BFF8F75CFC3946F8F762F9A8606E +:109540002846F8F722FE0028F4D094B13046A968E6 +:10955000F9F75CF900280CDD2044401EB0FBF4F75D +:1095600007FB04F13046F8F74CF9A8603846BDE82F +:10957000F0810020FBE770B5044690420AD2101B30 +:10958000642800D2642025188D4204D8F9F771F9B7 +:1095900008B1284636E6204634E670B505460C4646 +:1095A000088E91F8511000F0E0F8A18E814200D2AF +:1095B00008460646608E94F8521000F0D6F8E18E08 +:1095C000814200D20846024635B100233146BDE84B +:1095D0007040012000F07FB90123F7E770B5044621 +:1095E000008913460D460246A188012000F073F958 +:1095F000696A81421BD2401A401CA1884008091A9E +:109600008AB2A2802189081A208105E0FFDB0500CB +:109610004CEF01005601002015F8511F104600F0D4 +:10962000ADF860806978208900F0A8F8E080E9E56D +:10963000C10701D001207047810701D50220704782 +:10964000400701D508207047002070472DE9F04100 +:109650000546164688460124084600F0B1FB074639 +:10966000404600F0B1FB0346FFF7E2FF02463846F2 +:10967000FFF7DEFF52EA000100D10024990700D174 +:109680000022B90700D1002095F85110914200D175 +:109690000022327095F85210814200D10020707083 +:1096A00072B968B9404600F095FBB5F85810401AF9 +:1096B00000B247F6FE71884201DC002800DC00247D +:1096C000204654E7012802D0022800D0002070472D +:1096D000F8B5CFB20646C1F307242146384600F05C +:1096E0000AF9F5B2C6F3072620B93146284600F03C +:1096F00002F940B1274035403D40444665F3070438 +:1097000065F30F2406E02540444665F307043E4018 +:1097100066F30F24E0B200F03EF88DF80000C4F3C9 +:10972000072000F038F88DF80100BDF80000F8BD02 +:1097300030B52A242325162A05D10C2807D00D2858 +:1097400005D01F2805D071B1162A0CD104E01C7079 +:1097500000E01D70012030BD08780128F7D00028F6 +:10976000F5D01628F5D0002030BD022903D0C00066 +:10977000703080B2704780003C30FAE7022905D093 +:109780006FF00D0101EBD00080B270476FF00E0159 +:1097900001EB9000F8E7810701D502207047C00770 +:1097A000FCD001207047F0B50C7C8B7BCD7B5C40FE +:1097B0004B7C02886B4044EA0323C67D5A40002458 +:1097C000D5B2120A95FAA5F592FAA2F22D0E120E52 +:1097D00045EA022202EB0212641C1A44E4B292B27D +:1097E000032CEDD35A402523B2FBF3F403FB1423DF +:1097F00001EBD30503762F7A03F00704012505FA60 +:1098000004F4274201D043761BE05643320C521C2D +:10981000D2B20023C418A47C944214D30024CE18DE +:1098200096F8086005FA04F73E4201D0521ED2B203 +:1098300022B1641CE4B2082CF4D306E004EBC301AB +:1098400041760020F0BD121BD2B25B1CDBB2052BAF +:10985000E0D31F20F0BDF0B5037E0C7E012504FB94 +:1098600002322523B2FBF3F403FB142201EBD204F2 +:10987000027602F00703247A05FA03F31C4201D0B2 +:1098800042761EE0C37DB2FBF3F403FB1422521CAC +:10989000D2B20023C418A47C944214D30024CE185E +:1098A00096F8086005FA04F73E4201D0521ED2B283 +:1098B00022B1641CE4B2082CF4D306E004EBC3012B +:1098C00041760020F0BD121BD2B25B1CDBB2052B2F +:1098D000E0D31F20F0BD00280CD0114441434D229D +:1098E00010FB02F001EB80009C380BB1042100E07A +:1098F000002108447047012804D0022805D004281C +:1099000006D007E0012907D004E0022904D001E0D5 +:10991000042901D00020704701207047282105F05C +:1099200053B830B50546007801F00F0220F00F0063 +:109930001043287007290BD2DFE801F00406040663 +:1099400004080400062405E00C2403E0222401E0BE +:109950000024FFDF687820F03F002043687030BDAE +:10996000007800F00F0070470A6840F8032F8988DC +:109970008180704750F8032F0A6080888880704784 +:109980000A6840F8092F89888180704750F8092FAC +:109990000A608088888070470278402322F0400265 +:1099A00003EA81110A43027070470078C0F3801007 +:1099B0007047027822F0800242EAC11202707047BA +:1099C0000078C0097047D0F80320C1F80920B0F82A +:1099D0000720A1F80D200A7822F080020A70007892 +:1099E000800942EAC0100870704770B515460E46EF +:1099F00004461F2A00D9FFDF2A46314604F1090038 +:109A000004F063FF6078AD1D20F03F0005F03F01DA +:109A10000843607070BD70B5054640780E4600F092 +:109A20003F04062C00D2FFDFA41FE4B21F2C00D994 +:109A30001F24224605F10901304604F046FF204666 +:109A400070BD70B515460E4604461F2A00D9FFDFCB +:109A50002A46314604F1090004F037FF6078AD1D55 +:109A600020F03F0005F03F010843607070BD70B505 +:109A7000044640780E4600F03F05062D00D2FFDF79 +:109A8000AD1FEDB21F2D00D9FFDF2A4604F10901F9 +:109A9000304604F01AFF284670BD0968C0F80F1060 +:109AA00070470A88A0F8132089784175704710F82C +:109AB000242F01F01F0122F01F020A430270704799 +:109AC000072900D9072110F8242F22F0E00242EAEA +:109AD0004112027070470A6840F81F2F097901711E +:109AE00070474178007801F03F0110F00F0005D079 +:109AF000012807D0022801D0062805D1891F1F2977 +:109B000004D901E00C2901D00020704701207047E2 +:109B10004178007801F03F0100F00F00042805D1E2 +:109B2000062903D3252901D801207047002070475A +:109B300030B5017801F00F01032922D0052925D184 +:109B40004578B0F81910B0F81B40B0F81730827D96 +:109B500005F03F05222D19D1062917D34FF448658A +:109B6000A94213D8B4F5FA7F10D27AB1082A0DD8D9 +:109B70008A420BD28B4209D8B0F81D00A84207D9FF +:109B800004E0407800F03F000C2801D0002030BDF8 +:109B9000012030BD00B5027801F0030322F003027A +:109BA0001A43027000224270012904D0022902D017 +:109BB000032901D0FFDF00BD0121417000BD00B5C8 +:109BC000027801F0030322F003021A43027000221C +:109BD0004270012904D0022902D0032901D0FFDFFD +:109BE00000BD0121417000BD007800F00300704706 +:109BF000417889B1C0780E2805D00F2803D01028ED +:109C000001D0192802D3FB2904D905E0864A105C4B +:109C1000884201D1012070470020704730B50546C9 +:109C2000C170192902D28048445C01E00024FFDFA2 +:109C30006C7030BDB0F807007047B0F8090070478D +:109C4000C172090A01737047B0F80B00704770B514 +:109C5000B0F80720B0F80940B0F805300179951F39 +:109C600040F67A46B54210D8B4F5FA7F0DD261B10C +:109C700008290AD8914208D2934206D8B0F80B00BE +:109C8000B0F5486F01D8012070BD002070BD0A6892 +:109C9000426009790172704742680A60007A08716F +:109CA0007047B0F809007047007970470A68426051 +:109CB00049688160704742680A6080684860704700 +:109CC0000988818170478089088070470A6840F858 +:109CD0000E2F49684160704750F80E2F0A604068A7 +:109CE000486070470968C0F816107047D0F8160031 +:109CF000086070470A68426049688160704742683E +:109D00000A608068486070470968C1607047C06831 +:109D100008607047007970470A684260496881604E +:109D2000704742680A608068486070470171090A9C +:109D3000417170478171090AC17170470172090A46 +:109D4000417270478172090AC172704780887047FA +:109D5000C0887047008970474089704701891B2976 +:109D60000CD341894FF4A472914207D381881B29F7 +:109D700004D3C088904201D301207047002070476F +:109D80000A68426049688160704742680A6080687A +:109D9000486070470179490704D04079400701D0F5 +:109DA00001207047002070470179490704D04079AD +:109DB000400701D0012070470020704701717047B3 +:109DC0000079704741717047407970478171090A85 +:109DD000C1717047C08870470CB514A2D2E9001257 +:109DE000CDE900120179407901F0070269461DF8BA +:109DF0000220012A04D800F00700085C012801D9DC +:109E000000200CBD01200CBD017170470079704726 +:109E1000417170474079704730B50C460546FB29C3 +:109E200000D9FFDF6C7030BD54EF0100000101026A +:109E3000010202032DE9F041FF4E04460020717833 +:109E4000DFF8F8830127054611B1012905D009E0A3 +:109E500098F8531031B1777003E098F8281009B1E1 +:109E60007570012071782B2211FB02F1414491F8A9 +:109E70002820024311D02A22A01C293104F025FDFC +:109E8000657004202070A77070782B2110FB01F101 +:109E900001EB080080F8285040E098F87E0060B19F +:109EA000E64911227F31A01C04F00FFD65701220DD +:109EB0002070A77088F87E5030E098F822000128C2 +:109EC00006D098F8000001280CD00020BDE8F081F1 +:109ED000657006202070D8F82400C4F8020088F8C5 +:109EE00022501BE0657013202070202208F102012F +:109EF000A01C04F0EAFCA57188F80050B8F8040032 +:109F0000A8F82400D8F89C00417B88F8261088F82F +:109F100022700088F5F76EFFF5F715FC0120D5E7F4 +:109F2000C648017809B1808870474FF6FF707047C6 +:109F300070B50446C14890F8AE10002919D090F8C9 +:109F4000AC10002915D0BD4990F8910092310D4612 +:109F500000F05FFE38B1FEF7CEFF22462946BDE88D +:109F60007040FAF7F4BB21462846BDE87040FAF786 +:109F700021BC70BD70B50646B0482B2290F8AF00EA +:109F800011FB02F1AD4A8D1805F12C0418B1F9F757 +:109F90009AFB01280AD03046FFF707FD85F82B0011 +:109FA00021463046BDE87040FFF7E4BCF9F7ADFB51 +:109FB000224605F12B01FEF7B0FE00B9FFDF15F8D0 +:109FC0002B0F40F00200287070BD70B59B4C064608 +:109FD00094F82800002832D13046FFF7C1FC014632 +:109FE00000200125072916D2DFE801F00B0408152F +:109FF00015150A0084F82A5001210DE0032000E025 +:10A0000002208E4984F82A0033313046FFF703FDE1 +:10A0100084F8320004E0002184F8320000290ED0D8 +:10A0200000213046FFF7A6FF8448523000F011FEB1 +:10A0300084F82850BDE87040032001F0F0BB70BDEB +:10A0400010B5002001F019FB98B1F9F77AFF012251 +:10A0500000211046F9F7FAFD7848BC30F9F77AFF8D +:10A06000764CD4F8B400F9F779FF00F0DDFD40B983 +:10A0700003E0BDE8104000F04EBE94F8A0000228B6 +:10A0800003D101210020FAF7B2F8F9F7EAFF94F8BA +:10A09000AF0018B1F9F7E8FAF9F7BFFF032084F829 +:10A0A000B20010BD70B5654C054694F89110FFF7ED +:10A0B00073FC04F192012846FFF756FC94F8AD00BA +:10A0C000002818D000F0B0FD28B194F89B0010B122 +:10A0D00094F8A30001E094F8B000FEF70EFF04002E +:10A0E00009D001212846FFF757FC21462846BDE844 +:10A0F0007040FFF739BC70BD10B5012001F0BDFA0A +:10A10000B0B14E49E431A1F12800FFF75CFC4B48A7 +:10A11000E430FFF7C7FF4948E430F9F71BFF01219E +:10A120000846FAF764F84549052081F8B20010BDE9 +:10A13000BDE8104000F0EFBD10B5022001F09DFA1F +:10A1400098B3012001F06BFB3C49E431A1F12800F8 +:10A15000FFF739FC394C3948202354F89C1FE43070 +:10A160004A7B017803EA421221F020011143334A6D +:10A1700001702068BC321278417BC2F3401211405A +:10A1800041732E48E430FFF78DFF2C492068E431FD +:10A19000C08AC875000A087608462168497D81751D +:10A1A000F9F7D8FE0620A07510BDFFE7BDE8104006 +:10A1B00000F0B1BD70B50D460446FFF7AFFB032DAF +:10A1C00038D0052D41D105212046FFF7AAFB1B4DB4 +:10A1D000204655F89C1F0E31FFF75FFC296820468A +:10A1E0001231FFF75EFC2868407DA0752868C08AA0 +:10A1F000E075000A2076286840886076000AA0761C +:10A2000028688088E076000A20772868C088607710 +:10A21000000AA077296820460831FFF75CFC28680F +:10A22000017E2046FFF743FCE97D2046BDE87040F3 +:10A23000FFF746BC032103E058010020FC0F00207B +:10A240002046BDE87040FFF76CBB70BDF64910B505 +:10A25000B1F8BA2058B1FF2A12D24FF6FF7000EAC7 +:10A260004200A1F8BA00FF280AD9FF2006E0012A1F +:10A2700006D95008A1F8BA0002D10120A1F8BA000D +:10A28000EA484268012A00D00AB90D224260D2434E +:10A29000C2EBC20303EB021211F8B93FDB4303EB3D +:10A2A0008304C4EB83131A444260900CB1F801207C +:10A2B000B0FBF2F302FB1300087075E770B5DA4CDF +:10A2C00094F8B200022805D094F8B200012801D019 +:10A2D0000C2070BD002005462B2101FB004181F8B8 +:10A2E0002850401CC0B20228F6D3257084F82250B2 +:10A2F00094F8AF0028B1F9F79EFEF9F7C9F984F890 +:10A30000AF5084F8AE50012004F89B0FC648657129 +:10A31000A57540F2011120F8981F8170002070BDD2 +:10A32000C14810B5002100F8B21F01210170FFF7EC +:10A33000C5FF002800D0FFDF36E72DE9F041BA4C19 +:10A3400007460C2594F8B200012805D094F8B20015 +:10A35000022801D00C20B9E5F9F722FBF9F7FCFA45 +:10A3600094F8980028B994F8990010B994F89A00D4 +:10A37000F0B300F059FC08B1052104E094F8A00006 +:10A38000022804D10321A848E430FFF713FF94F812 +:10A39000AC0010B994F8AD0038B3F7F729FD0546C5 +:10A3A000D4F8A8002946A434F8F730FAA04990FB65 +:10A3B000F1F601FB160041422846F7F722FA6060E9 +:10A3C000206830442060FEF785FC54F8A4198842C8 +:10A3D0000BD80020C4E9290594F8AD0010B1012084 +:10A3E000FEF760FD0120FFF7A3FD94F8911000E057 +:10A3F00009E08D489230F9F733FB94F8B20000255C +:10A40000012805D006E094F8B200022814D001E03B +:10A4100000F06EFC94F89B0090B1FEF7F0FC8248CF +:10A42000BC30FEF722FD84F8AF008248C4F8B47057 +:10A43000F9F778FD284649E5012084F8B20089E75C +:10A44000FEF7A8FCEBE770B5774C94F8B200022851 +:10A4500001D00C2070BD012084F8B900A4F8BA0026 +:10A460000220F9F774FD7348801DF9F73DFB0020C9 +:10A47000032304F1980100BF94F8B120521CB2FBF1 +:10A48000F3F503FB152284F8B120525C012A07D0B2 +:10A49000401CC0B20328EFD3FFF7D2FD002070BDEF +:10A4A000644994F8B100C91C085CF9F727FBF9F777 +:10A4B00053FAF1E72DE9F0415B4C054616460F468D +:10A4C00094F8900000F094FB50B14DB9384600F07C +:10A4D00088FB3146FEF702FC082801D00120F5E494 +:10A4E00094F8900000F07DFBBDE8F041FAF7F5B874 +:10A4F0004D4810B590F8900000F073FBBDE8104097 +:10A50000FAF7EBB8484981F890007047464981F85E +:10A51000AE00704770B5444C14F8900F00F061FB2A +:10A520004149607092310D46FAF7C1F8207800F089 +:10A530005FFB607760782946903C00F061FB28B9AA +:10A5400094F89100294600F064FB00B1012084F8E2 +:10A55000AC0018B994F8AD0000280ED0002044F8E3 +:10A56000A40FF7F745FC6060607A10B10020FEF799 +:10A5700099FCBDE870400020DAE470BD38B10228D3 +:10A5800005D00022284901F89B2F887170470122CD +:10A59000F8E770B5244C15460E46002816D04FF04B +:10A5A000000100BF84F89B1084F8A2004FF008005F +:10A5B00084F8A30013D1304600F013FB2946FEF7C0 +:10A5C0008DFB84F8A300082803D008E04FF00101B8 +:10A5D000E8E7304600F00CFB08B1122070BD002007 +:10A5E00070BD114A032801D1C2F89C1082F8A00066 +:10A5F0000020704710B500F017FB0B4920B191F80F +:10A60000A20001280DD00BE091F8A000012801D094 +:10A61000022805D191F8A100012803D0032801D018 +:10A620000020C1E50120BFE5FC0F002058010020FB +:10A6300040420F006DEF010010B500F061FBFB4CD4 +:10A6400094F8AF0030B1F9F7F6FCF9F721F80020E3 +:10A6500084F8AF0000F04CFB0020A5E5F34981F839 +:10A66000B300704700F057BB2DE9F05FEF4CFF21BE +:10A67000002684F8B010002873D004F1BC00FFF766 +:10A6800030FA28B904F1BC00FFF742FA0028F3D0F1 +:10A6900094F8B200E54DE64FBC3505287ED2DFE8E0 +:10A6A00000F07D7D7D03FD00E048BC30FFF758F9E8 +:10A6B000B87094F89B0010B9F9F70EFA08B10126AA +:10A6C00000E0002694F8AF0070B1FEF749FB84F873 +:10A6D000B0000146FF280BD0E81CFEF735FB94F8CC +:10A6E000B000FEF747FB064394F8B000FF2811D1F5 +:10A6F000FEF7B0FB84F8B00094F89B1051B1082825 +:10A7000008D12878E91CC0F38010FEF7E7FA082882 +:10A7100000D00026B878072872D2DFE800F0237E48 +:10A7200004717171130000F00BFB46B194F8A000A6 +:10A73000012801D0022802D1F9F7C6FB0CE0F9F795 +:10A74000C3FB82E100F0FCFA002EF8D094F8A000E0 +:10A75000022838D00128F2D1B448BC30FFF735FCCC +:10A7600073E178E100F0ECFA002EE8D094F8A00054 +:10A77000022828D00128EFD000F056FA88B3D4F888 +:10A780009C10E8788A7E904224D12879CA7E904233 +:10A7900020D168790A7F90421CD100E059E1A87964 +:10A7A0004A7F904216D1E8798A7F904212D1287A66 +:10A7B000CA7F90420ED128784A7EC0F38010904222 +:10A7C00008D1012007E09948BC30FFF7FEFBBDE847 +:10A7D000F05F91E4002094F8A220012A02D080B119 +:10A7E000ADE017E0002814D190481A31BC30FFF7D3 +:10A7F000C1F88E48BC30FFF7D8F8D4F89C109DE023 +:10A8000033E194F8A300082899D094F8B01081425D +:10A8100095D194E0FFDFBDE8F09F00F091FA94F845 +:10A82000AD00A0B10020804680492878C5310027BE +:10A83000AA46C0098B4600F0ECF9054600F0F4F991 +:10A8400038B194F89B0020B194F8A30003E00120F4 +:10A85000E9E794F8B000FEF74CFA5FEA00090BD084 +:10A860001021FEF793FD08B14FF0010825B15946BC +:10A870004846F9F73FFF074600F0D6F988B3D4F809 +:10A880009C109AF8032050468B7E9A421ED1027982 +:10A89000CB7E9A421AD142790B7F00E068E09A425F +:10A8A00014D182794B7F9A4210D1C2798B7F9A4220 +:10A8B0000CD1027ACB7F9A4208D19AF80000497EE7 +:10A8C000C0F38010884201D1012500E0002594F8F2 +:10A8D000B000082806D094F8A310884202D10120C5 +:10A8E00001E030E0002081462FB9B8F1000F04D01C +:10A8F000F9F7BEF808B1012000E000204EB194F84D +:10A90000A210012903D021B955EA090101D0012182 +:10A9100000E0002108423FF412AF94F8A2000128A1 +:10A920000DD165B954F89C1F40481A31BC30FFF76F +:10A9300021F83E48BC30FFF738F821684876BDE87A +:10A94000F05FFFF7F9BBF9F7BFFA26B1F9F790F816 +:10A9500038437FF4F3AE94F8A100032801D0022815 +:10A9600073D1EDB3E7BB3148BC3000F07EF96CE049 +:10A970002E48BC30FEF7F4FFB8702C48E978E4307C +:10A98000427A91421CD12979827A914218D169790F +:10A99000C27A914214D1A979027B914210D1E9790E +:10A9A000427B91420CD1297A827B914208D129784D +:10A9B0000078C1F38011B1EBD01F01D1012500E077 +:10A9C0000025F9F781FAB878042834D195B300F05E +:10A9D00034F994F8B80010B10020FFF737FC00E01C +:10A9E00033E0012584F8B850104E94F85300BC367B +:10A9F00058BB042084F8550001213046FFF7BAFA0D +:10AA0000A6F15E013046FFF732F884F85D001F289A +:10AA100002D91F2084F85D0004487D3000F019F948 +:10AA200084F85350042000F0FAFE0EE0FC0F0020E2 +:10AA300058010020FFE700F000F994F8B80010B9C1 +:10AA40000120FFF703FC84F8B860BDE8F05FFFF772 +:10AA5000F7BAFFDFDFE694F8B2000528FAD2DFE8A4 +:10AA600000F0030303040700D5E600F069F966E689 +:10AA700000F0E3F894F8B80010B90120FFF7E6FB06 +:10AA800084F8B8605BE62DE9F041B34C94F8B2006D +:10AA900007287DD2DFE800F07F7F7F7F7F041100F1 +:10AAA000AD48BC30F9F756FAF9F7DBFA9620F9F71A +:10AAB00076FA042084F8B2004DE400F021F900F0A9 +:10AAC00017F9207800B1FFDF0025A570D4F89C00AD +:10AAD000A14F0188A180418861838188A183C088BA +:10AAE000E08384F8205094F8AD00E437A7F16406C1 +:10AAF00030B13878F91CC0F3801000F08AF848B9FA +:10AB000094F8AE0070B13878F91CC0F3801000F0F2 +:10AB100077F838B1D6F86700C4F80E00B6F86B00C5 +:10AB2000608202E0C4F80E50658294F8AF0018B15C +:10AB3000F8F7C9FD012819D0D4F89C00417EE171D5 +:10AB4000D0F81A10A160C08BA081834845610583AD +:10AB500001202070D4F89C000088F5F74BF9F4F739 +:10AB6000E3FDBDE8F041022000F059BEF8F7CDFD4D +:10AB7000794AE11D0832FEF7D0F800B9FFDFE0792D +:10AB800040F00200E07156F83F0F6061B08800E0CD +:10AB900001E02083DCE7FFDF4DE410B56E4C94F854 +:10ABA000B200052819D2DFE800F0181818140300C5 +:10ABB00000F043F894F8B80010B90120FFF746FB05 +:10ABC000002084F8B800F9F77FF9BDE81040FFF7DE +:10ABD00037BABDE8104000F09EB822E5012200F02F +:10ABE00058BE18B1022801D00120704700207047DC +:10ABF000022803D0032801D00020704701207047AD +:10AC0000012802D14879800901D000207047012035 +:10AC10007047012806D148790121B1EB901F01D17D +:10AC200001207047002070474B4890F8A00003288F +:10AC300001D0002070470120704710B54748F9F750 +:10AC40001BFA10B945497F200870BDE81040F9F79C +:10AC5000FEB930B5414C054620787F2800D1FFDF92 +:10AC6000207828707F20207030BD2DE9F0413A4CCB +:10AC7000074694F87E00002839D1012684F88060C8 +:10AC800094F8AF0004F1820518B1F8F71CFD012813 +:10AC90001DD03846FEF789FE84F8810029463846E3 +:10ACA000FEF768FE3846FEF78BFE84F888002A49D6 +:10ACB000384689317E34FEF769FE27488F30FFF72A +:10ACC000C8FF2670BDE8F041032000F0A8BDF8F7EA +:10ACD0001CFD21492A468131FEF71FF800B9FFDF2C +:10ACE00094F8810040F0020084F88100DAE7E3E69E +:10ACF0001948012180F8B810022180F8B21070477D +:10AD000010B5F9F77DF9F9F76EF9F9F7DDF8BDE857 +:10AD10001040F9F70DB910B5FFF7F2FF0E4C94F89B +:10AD2000AF0030B1F9F787F9F8F7B2FC002084F8EA +:10AD3000AF00FFF7DDFFBDE81040002000F06FBD61 +:10AD4000054810B590F8AF0018B1F9F774F9F8F7A5 +:10AD50009FFCBDE8104070E7FC0F00205801002068 +:10AD6000D0F8D81049B1D0E937231A448B691A4476 +:10AD70008A61D0E93512D16003E0FE4AD0F8D410E0 +:10AD80005161D0E9351009B1086170470028FCD045 +:10AD900000218161704770B505460C461046F9F7F1 +:10ADA0006DFB4FF47A71022C0CD0F34A4FF4C86358 +:10ADB0001A44104400F23F60B0FBF1F0284400F563 +:10ADC000C97070BDED4A0B46F2E72DE9FF4F06460C +:10ADD0000C46488883B040F2E24148430190E08A43 +:10ADE000002500FB01FA94F8630017460D2822D0D5 +:10ADF0000C2820D024281ED094F8640024281AD0CF +:10AE000000208346069818B10121204602F023FA5B +:10AE100094F8512094F85200009094F8C81091468C +:10AE20004FF47A7849B1012951D0022937D003294A +:10AE30004DD0FFDF96E00120E3E707B9FFDFCD4FFC +:10AE4000786800B9FFDF14F8510FF9F724FB454685 +:10AE500000F2E730B0FBF5F17868B8460F182078BB +:10AE6000F9F719FB024614F85109022814D0C24818 +:10AE70004FF4C8610844104400F2E730B0FBF5F12C +:10AE8000D8F81000411A01EB0A00C519012084F816 +:10AE9000C80005F2E64564E0B8482946EAE7DFF86D +:10AEA000D482791ED8F80400084300D1FFDFB448EB +:10AEB000016801EB0A0537B1D8F8040000F222302E +:10AEC000A84200D9FFDF032084F8C80049E094F8C5 +:10AED0006310019D242903D094F86410242933D1F0 +:10AEE000B4F85810B4F8EA30C91A491C09B200295C +:10AEF0002ADB94F8E81039B3894694F8E91001B1D7 +:10AF000008460090022A13D09B484FF4C8610844B9 +:10AF1000B9F1020F0FD098494FF4C862114488422A +:10AF20000CD9401A00F5FA70B0FBF8F005440BE0BC +:10AF300092484146EBE791494246EFE7081A00F58F +:10AF4000FA70B0FBF8F02D1A5FB18A4F786810B92B +:10AF5000788800B1FFDF786800F22230A84200D97B +:10AF6000FFDF05B9FFDF2946D4F8CC00F6F749FC2E +:10AF7000C4F8CC00B060002030704FF0010886F8B3 +:10AF80000480204602F0C3F9ABF10101084202D16E +:10AF900086F8058005E094F8C80001282FD003202A +:10AFA0007071606A4946009AFFF7F5FEF0600698F6 +:10AFB00030EA0B0020D029463046FEF7B2FA87B2BD +:10AFC000204602F0A4F9B8420FD8074686F805805B +:10AFD00005FB07F1D4F8CC00F6F713FCB060294666 +:10AFE0003046FEF79EFA384487B23946204602F0D2 +:10AFF00032F9B068C4F8CC0007B0BDE8F08F022089 +:10B00000CEE72DE9F04106460C46012000F05FFC3A +:10B01000C5B20B2000F05BFCC0B2854200D0FFDF60 +:10B020000025082C7DD2DFE804F004525A5A56BDA0 +:10B03000BD7F304600F05AFC0621F4F7A9FD04005C +:10B0400000D1FFDF304600F051FC2188884200D05B +:10B05000FFDF94F8C80000B9FFDF204601F098FF39 +:10B06000444E21460020756075803561FEF795FAE3 +:10B0700000F19807606AB84216D994F85200F9F7BF +:10B08000FDF994F8512001464FF47A70022A1BD042 +:10B09000394A4FF4C8631A44114401F23F61B1FBCD +:10B0A000F0F1606A0844C51B21460020B560FEF738 +:10B0B00074FA618840F2E24251439830081AA0F2D3 +:10B0C0002230F060BDE8F0812C4A0346E3E7BDE89A +:10B0D000F04101F0C5BFBDE8F041F9F711B96FF0DB +:10B0E000040000F0F4FBC4B2192000F0F0FBC0B281 +:10B0F000844200D0FFDF304600F0F8FB0621F4F771 +:10B1000047FD040000D1FFDF304600F0EFFB21884F +:10B11000884200D0FFDF2046BDE8F0410122002137 +:10B1200000E03FE000F0EBBB304600F0DFFB062123 +:10B13000F4F72EFD040000D1FFDF304600F0D6FB0F +:10B140002188884200D0FFDF94F8C800042800D08E +:10B15000FFDF84F8C85094F8D2504FF6FF76202DC8 +:10B1600000D3FFDF03483C3020F8156094F8D2008C +:10B1700008E0000008110020A22402006836020046 +:10B1800064010020F6F715FE00B9FFDF202084F8E7 +:10B19000D2002046FFF7E4FDFE480078BDE8F0410C +:10B1A000F0F7B0BBFFDF8DE72DE9F047FA4C06461C +:10B1B000E08B6568401CE08320784FF00008A8B160 +:10B1C000042815D005282DD0FFDF29462069F6F781 +:10B1D00018FBB06086F8008001203071A06800F58F +:10B1E000B370F0602078042824D028E0FFDFECE77B +:10B1F0000029EAD02F46D4F8109000F001FC050099 +:10B200000ED0287800B9FFDF696968684A460844AB +:10B21000394600F0E1FB0546B842D6D9FFDFD4E756 +:10B220004546D2E70029D0D0A06900F085FB40F662 +:10B23000B835CAE7E08B0A2801D2032000E00220DB +:10B240007071E08B012806D930466168FEF769F914 +:10B25000E18B0844E083B0682061BDE8F0872DE908 +:10B26000FF4107460E46012000F031FBC4B20B201F +:10B2700000F02DFBC0B2844200D0FFDF002501208A +:10B28000C54C082E52D2DFE806F004172D2D2951A7 +:10B29000514560732073607800280BD1BE48183880 +:10B2A000456005612573A068C138FFF746F800289E +:10B2B00000D0FFDFBDE8FF81617841B1207B08B994 +:10B2C000FFF7BAF96573BDE8FF41F6F79DBCA073BF +:10B2D000FFF7B9F80028EDD0FFDFEBE7BDE8FF414D +:10B2E000F9F70EB86FF0040000F0F1FAC4B21920BB +:10B2F00000F0EDFAC0B2844200D0FFDF00216846C2 +:10B30000FFF752FF69463846F6F7BAFF0028D1D159 +:10B31000FFDFCFE72078052800D0FFDF207F00B9CE +:10B32000FFDF2577BDE8FF4100F0FABAFFDFC1E794 +:10B330002DE9F041984C00262078042804D020788C +:10B34000052801D00C20BDE601206070607B00253F +:10B3500038B1EFF3108010F0010F72B605D001275D +:10B3600004E0207DF7F79EF80CE00027607B38B101 +:10B37000A07B28B1FFF760F96573A573F6F744FC6D +:10B3800007B962B6207DF7F7DAFA207F28B1257772 +:10B390002078052800D0FFDF0C26657000F0C0FA89 +:10B3A00030468FE67C4810B5007808B1FFF7C0FF43 +:10B3B00000F02FFB784900201839486110BD10B506 +:10B3C000744C58B1012807D0FFDFA06841F66A012C +:10B3D000884200D3FFDF10BD40F6C410A060F4E740 +:10B3E0006C4910B508706C490020087048700877E7 +:10B3F000087348738873202288610A751839487069 +:10B40000654A4FF6FF71243222F81010401CC0B27A +:10B410002028F9D30020FFF7D2FFBDE81040C1E794 +:10B4200070B50D465C4C40F27121484360600120CC +:10B43000F9F724F84FF47A7100F2E730B0FBF1F03D +:10B4400040F2712101FB0501A1606068A0F2F620C5 +:10B45000814200D9A06070BD2DE9FF414E4C0546E8 +:10B46000164620780F4610B10C2004B02AE695F855 +:10B47000522095F85110686A00F00DFBC5F8DC0009 +:10B48000A56195F8C80000B1FFDF31463846FFF7E7 +:10B49000C7FF4149002018390861052121706070FB +:10B4A0002077E0833D48F6F72AFC2075202800D15C +:10B4B000FFDFF6F79DFC206101216846FFF774FE6F +:10B4C000207D6946F6F7DCFE00B9FFDF0020CCE7FF +:10B4D000314810B5007808B1002010BD0620F4F7FF +:10B4E000F1FA80F0010010BD1FB52B4C227812B18B +:10B4F0000C2004B010BDFFF793FF00206070042102 +:10B500002170E0832548F6F7FAFB2075202800D14A +:10B51000FFDF00F075FA10B1F6F76AFC05E0F6F708 +:10B5200067FC40F6B831F6F76CF9206101216846F6 +:10B53000FFF73AFE207D6946F6F7A2FE00B9FFDF6D +:10B540000020D6E770B5144CA1690160FFF7F0FE4A +:10B55000050002D1A069FFF703FC0020A061284686 +:10B5600070BD7FB50C4C2078052802D00C2004B0AB +:10B5700070BDA06900B9FFDFA06990F8C80000B1F4 +:10B58000FFDFA06990F8D200202800D0FFDF044838 +:10B5900008E0000060010020201100205FB20100DF +:10B5A00003B00100F6F7ABFBA1690546202881F83E +:10B5B000D2000E8800D3FFDFFC4820F81560A06998 +:10B5C00090F8D200202800D1FFDF00230122684636 +:10B5D000A169FFF7FAFBA069694690F8D200F6F777 +:10B5E0004FFE00B9FFDF0020A061C0E7EF493C3902 +:10B5F0004870704710B540F2E24300FB03F40020AE +:10B6000000F049FA844201D9201A10BD002010BD73 +:10B6100070B50D46064601460020FDF7BEFF044604 +:10B6200096F85200F8F72AFF96F8512001464FF499 +:10B630007A70022A14D0DE4A4FF4C8631A441144C7 +:10B6400001F23F61B1FBF0F1708840F2712250438A +:10B65000C1EB4000A0F22230A54204D2214603E013 +:10B66000D44A0346EAE72946814204D2A54201D2E0 +:10B67000204600E02846706270BDCC4910B53C39C8 +:10B680004C68983458B101280CD002280DD0FFDF47 +:10B69000C64824388068A0420AD9012010BD04F5AC +:10B6A000BC74F5E704F53174F2E704F5B074EFE724 +:10B6B000002010BD10B5BD4C3C3C607828B1D4E9E9 +:10B6C00002016268FDF757FFA060D4E901018842DA +:10B6D00001D8207808B1002010BD012010BD10B5A0 +:10B6E0000446012903D1B1483C38007830B1042028 +:10B6F00084F8C800BDE81040F6F786BA00220121A0 +:10B70000204600F0FCF834F8580F401C2080F1E788 +:10B710002DE9F0410120F8F7B1FEA749A34C0844F8 +:10B720004FF47A71B0FBF1F0243CA4F118062169C2 +:10B73000726811440A1AA06940F2E24102F2DE6224 +:10B740004788C8304F437169814208D03946206A22 +:10B7500000F042F90546B84202D9FFDF00E00025BB +:10B7600096488068854207D2A16940F271224888D4 +:10B77000424305EB420504E040F2E240B5FBF0F045 +:10B78000A169C882A06905214175C08A6FF41C7146 +:10B79000484305EB400040F635413061B0EB410FC6 +:10B7A00000D3FFDF8EE410B5052936D2DFE801F0C3 +:10B7B0000509030D3100002100E00121BDE8104022 +:10B7C0008DE7032180F8C81010BD0446408840F280 +:10B7D000E24148437949091D0860D4F8F000008926 +:10B7E000E082D4F8F00080796075D4F8F0004089E8 +:10B7F0006080D4F8F0008089A080D4F8F000C0897F +:10B80000E0802046A16AFFF703FF022084F8C80009 +:10B8100010BD816ABDE81040FAE6FFDF10BD7FB5BC +:10B82000624C0025243C052830D2DFE800F00312EA +:10B830001528280000F035F96078D8B9002168464D +:10B84000FFF7B2FC207D6946F6F71AFD90B9FFDFDD +:10B8500010E0BDE87F405BE700F023F9012020778E +:10B86000A0692169C0F8CC1080F8C850FFF779FEB4 +:10B8700000B1FFDFF6F7C8F96573A5737FBD4F48C8 +:10B88000007804B0BDE87040F0F73CB8FFDF7FBD42 +:10B89000704770B5454D04463C3D91B1012910D02B +:10B8A000022901D0FFDF70BD6888401C6880104607 +:10B8B000F8F7F1FD4FF47A7100F2E730B0FBF1F0E8 +:10B8C000201A686070BD3948243800787047002815 +:10B8D00006DA00F00F0000F1E02090F8140D03E00C +:10B8E00000F1E02090F800044009704710B50446CC +:10B8F000202800D3FFDF2D4830F8140010BD1FB5FD +:10B9000013460A46044601466846FFF75EFA94F875 +:10B91000D2006946F6F7B4FC002800D1FFDF1FBD56 +:10B9200070B5224C0025243C2570207DF6F741FAA5 +:10B9300000B9FFDF257570BD2DE9F041050000D18C +:10B94000FFDF1A4A00243C3AD5F8DC602046631E2B +:10B95000516908E08869B04203D3984201D2034696 +:10B960000C460846C9680029F4D104B904460021F0 +:10B97000C5F8D840C8351CB3E068E560E86000B1A0 +:10B9800005612E698846A96156B1B06930B16F6909 +:10B99000B84200D2FFDFB069C01BA861C6F81880AA +:10B9A000024D243DACB1207870B90CE04411002068 +:10B9B000A224020068360200C92E020060010020A5 +:10B9C000E9605561DDE7FFDF61696068084428626E +:10B9D000B9E4C5F82080B6E410B50C46014610461F +:10B9E000F6F714FF002806DA211A491E91FBF4F13C +:10B9F00001FB040010BD90FBF4F101FB140010BD2D +:10BA00002C484169002001E00846C9680029FBD1A3 +:10BA100070472DE9FE43274D0120287000264FF680 +:10BA2000FF7420E00621F4F7B3F8070000D1FFDF30 +:10BA300097F8D200C837F6F782FF07F80A6BA146DD +:10BA400017F8D289B8F1200F00D3FFDF194A3C3232 +:10BA500022F8189097F8D200F6F7ABF900B9FFDF9B +:10BA6000202087F8D20069460620F4F71AF850B172 +:10BA7000FFDF08E0029830B190F8C81019B10088D3 +:10BA8000A042CFD104E06846F3F7E9FF0028F1D0E7 +:10BA90002E70BDE8FE8310B5FFF77DF900F5C87084 +:10BAA00010BD044900201831C88303480078EFF71F +:10BAB00029BF00000811002060010020012806D0E5 +:10BAC000022807D0042808D0082808D105E0012959 +:10BAD00007D004E0022904D001E0042901D00020AD +:10BAE000704701207047FE48806890F8861029B1A1 +:10BAF000B0F88210B0F88420914215D290F88A10E4 +:10BB000029B1B0F88810B0F8842091420CD2B0F876 +:10BB10008020B0F87E108A4206D290F86720B0F8F4 +:10BB20007C001AB1884203D3012070470628FBD25B +:10BB3000002070472DE9F041E94D0746A86800F163 +:10BB4000580490F8EC0030B9A27B00230121204674 +:10BB5000FDF78BFC10B1208D401C208501263D2176 +:10BB6000AFB92878022808D001280AD06878C8B16F +:10BB700010F0140F09D01E2039E0162037E0A67609 +:10BB80003EE0A86890F8EE0031E0020701D5E176CA +:10BB9000F5E7810701D02A2029E0800600D4FFDFE5 +:10BBA000232024E094F82E0028B1608D411C61858B +:10BBB000A18D884213D294F8320028B1208E411C06 +:10BBC0002186A18D88420AD2218DE08C814203D347 +:10BBD000AA6892F8EC2012B9A28D914201D32220DA +:10BBE00005E0E17B29B1A18C814207D30820E076F2 +:10BBF000C5E7A08C062801D33E20F8E7A07EB0B1AF +:10BC00000020E0722073E0730221A868FFF7CBFDEB +:10BC1000A86890F8C310012904D1D0F8F41008786E +:10BC2000401E0870E878BDE8F041EFF76BBEA868E9 +:10BC3000BDE8F0410021FFF7B6BDA9490C2889688D +:10BC400081F8C30014D0132812D0182810D0002275 +:10BC500011280ED007280BD015280AD0012807D0AC +:10BC6000002805D0022803D021F8822F0120087176 +:10BC70007047A1F88820704710B5994CA1680A88D0 +:10BC8000A1F8362181F8340191F8510001F077FBD9 +:10BC9000A16881F8380191F8520001F070FBA168A9 +:10BCA00081F83901012081F83201002081F8060174 +:10BCB000E078BDE81040EFF725BE10B5884C0421B0 +:10BCC000A068FFF770FDA06890F84E10012912D00F +:10BCD00000F5867102884A81028E8A81828ECA812D +:10BCE000428E0A82C08E488201200872E078BDE848 +:10BCF0001040EFF707BE022180F84E1010BD70B55E +:10BD00007748806890F84E20448EC38E418FB0F8FB +:10BD10004050022A23D0A94200D329460186C18F70 +:10BD2000B0F84220914200D311468186018FB0F8CD +:10BD30004420914200D311464186818FB0F84620BD +:10BD4000914200D31146C186418EA14200D90C46D2 +:10BD50004486C18E994200D90B46C38670BD028EBF +:10BD6000914200D31146C68F828E964200D232464F +:10BD7000A94200D329460186B0F842108A4200D376 +:10BD80000A468286002180F84E10CFE770B5544CE9 +:10BD900000231946A06890F863205830FDF765FB32 +:10BDA00000283DD0A06890F8F8100025C9B3A1691B +:10BDB0000978B1BB90F86400FDF74AFB88BBA16825 +:10BDC000B1F858000A282DD905220831E06902F09F +:10BDD00050FD10B3A068D0F8F410087858B10522CF +:10BDE000491CE06902F045FD002819D1A068D0F88F +:10BDF000F400007840B9A068E169D0F8F4000A685E +:10BE0000C0F8012009794171A068D0F8F4000178E8 +:10BE1000491C01700120FFF710FFA06880F8F8505E +:10BE200070BDFFE7A06890F8FC1011B190F8FD100C +:10BE300009B390F806110029F2D090F807110029F3 +:10BE4000EED190F86400FDF703FB0028E8D1A0686C +:10BE500090F8081190F85100FFF730FE48B3A06841 +:10BE600090F8091190F85200FFF728FE08B3BDE8DA +:10BE70007040002000E7B0F8FE10A0F84010B0F8C5 +:10BE80000011A0F84210B0F80211A0F84410B0F868 +:10BE90000411A0F8461080F8FC5090F864001D28AA +:10BEA00001D0142006E001F07CFAA06880F864500C +:10BEB000B6E71620BDE87040BFE610B5F6F7F4FF10 +:10BEC0000C2817D3064C0821A068D0F8F0001E30CB +:10BED000F6F7EEFF48B1A0680421B83002E0000098 +:10BEE0006C010020F6F7E4FF00B9FFDFBDE8104069 +:10BEF0000320A2E610BD10B5F94CA068D0F8F010F0 +:10BF00000A78002A1FD04988028891421BD190F8F4 +:10BF10006320002319465830FDF7A7FA002812D0F5 +:10BF2000A068D0F8F0100978022907D003290BD0B7 +:10BF3000042917D0052906D108200DE090F86400E7 +:10BF4000FDF786FA40B110BD90F8681039B190F84D +:10BF5000690000B9FFDF0A20BDE810406DE6BDE8CA +:10BF60001040AAE790F88E008007ECD10C20FFF774 +:10BF700064FEA068002120F8821F01210171017B6D +:10BF800041F00101017310BD38B5D54CA268B2F87B +:10BF90005120ADF80020FDF79BFB9DF80030C2B2A8 +:10BFA0000021934203D0A36883F8E82002E0A2684E +:10BFB00082F8E8109DF80120C0F30720824203D0E8 +:10BFC000A16881F8E90038BDA06880F8E91038BDA3 +:10BFD00038B5C34DA86890F8C310FF2953D16978CC +:10BFE000002950D190F86620002301215830FDF738 +:10BFF0003CFA002847D1A86890F8EC1009B102205B +:10C00000ACE090F86320002319465830FDF72DFA74 +:10C0100028B1A86890F87A0008B112209EE0A868BC +:10C02000002490F86320122A1DD004DC032A21D0BA +:10C03000112A04D119E0182A1AD0232A24D0002367 +:10C0400004215830FDF711FA00281CD1A86890F897 +:10C05000641019296FD01EDC01292FD002293AD093 +:10C0600003291CD125E00B2078E0BDE8384024E707 +:10C07000062073E010F8C21F81700720FFF7DDFD76 +:10C08000A86880F8634038BD1820FFF7D6FDA8687F +:10C09000A0F8824038BD1E2921D021293ED0FFF7CB +:10C0A0002AFFA86890F8C300FF28F3D1BDE8384004 +:10C0B0006CE610F8C11FC170072053E00C20FFF799 +:10C0C000BCFDA86820F8884F817941F00101817199 +:10C0D00000F8244C38BD1320FFF7AFFD1AE090F8AC +:10C0E000FD100029F6D190F8FC1089B1B0F8FE10CF +:10C0F000A0F84010B0F80011A0F84210B0F80211FA +:10C10000A0F84410B0F80411A0F8461080F8FC40E4 +:10C1100001F047F9A868A0F8884026E090F87B1065 +:10C1200051B100F8E84F44701820FFF786FDA86869 +:10C13000A0F8884038BD14E090F807110029F9D123 +:10C1400090F806110029F5D0B0F84F10ADF80010A6 +:10C150000099D0F80801FFF717FF1820BDE8384014 +:10C160006BE51120FFF769FDA86880F86440E1E7FE +:10C170005B4A0129926819D0002302290FD00329B4 +:10C180001ED010B301282BD0032807D192F86300EA +:10C19000132803D0162801D0182804D1704792F82C +:10C1A000C3000028FAD0D2F8F00017E092F8C300DC +:10C1B0000128F3D0D2F8F4100878401E08707047B8 +:10C1C00092F8C3000328EED17047D2F8F000B2F81D +:10C1D00058108288891A09B20029F5DB037070476C +:10C1E000B2F85800B2F8FA10401A00B20028F6DB94 +:10C1F000D2F8F4000178491E0170704770B504460A +:10C2000090F8630000250C2810D00D282ED1D4F80A +:10C21000F010B4F858008988401C884226D1D4F820 +:10C220003C012F4E017811B3FFDF42E0B4F8580013 +:10C23000B4F8FA10401C884218D1D4F8F400D0F8B1 +:10C240000110A1604079207302212046FDF70BF810 +:10C25000D4F8F400007800B9FFDF0121FF20FFF7D8 +:10C2600087FF84F86350012084F89600D8E5218880 +:10C27000C180D4F8F000D4F83C1140890881D4F88A +:10C28000F000D4F83C1180894881D4F8F000D4F84B +:10C290003C11C0898881D4F83C010571D4F83C1167 +:10C2A00008200870D4F83C1120884880F078EFF717 +:10C2B00029FB01212046FCF7D6FF03212046FFF78A +:10C2C00072FAB068D0F8F0000078022800D0FFDFE2 +:10C2D0000221FF20FFF74CFF84F86350A0E5000027 +:10C2E0006C0100202DE9F041FF4C00260327D4F813 +:10C2F00008C0012590B12069C0788CF8C20005FA09 +:10C3000000F0C0F3C05000B9FFDFA06880F8637090 +:10C31000A0F8826080F88650BDE8F08100239CF888 +:10C32000642019460CF15800FDF79FF868B1607859 +:10C330000028F1D12069C178A06880F8C11000F808 +:10C34000647F868480F82650E6E76570E4E7F0B500 +:10C35000E54C002385B0A068194690F86420583059 +:10C36000FDF783F8012580B1A06890F863002328C9 +:10C370000ED024280CD06846F8F746F968B100982A +:10C3800001A9C0788DF8040008E0657005B0F0BD23 +:10C39000607840F020006070F8E70021A06803ABEF +:10C3A000162290F86300FDF7C3F9002670B1A0686B +:10C3B0009DF80C20162100F8E42F4170192100F897 +:10C3C000801C00F85A5C20F85C6CDFE72069FDF700 +:10C3D000E1FC78B12169087900F00702A06880F8D3 +:10C3E0004F20497901F0070180F8501090F807318B +:10C3F0000BBB03E00020FFF775FFC7E790F806319D +:10C40000CBB900F151035F78974205D11A788A427F +:10C4100002D180F87B500EE000F59771028821F878 +:10C42000022990F84F200A7190F8500048710D7061 +:10C43000E078EFF767FAA068212100F8641F80F820 +:10C4400026508684A2E770B5A74C00231946A06841 +:10C4500090F864205830FDF708F828B32069FDF7FC +:10C460007DFC30B3A5682069FDF774FC2887A568BA +:10C470002069FDF76BFC6887A5682069FDF76CFCF7 +:10C48000A887A5682069FDF763FCE887A0680125F7 +:10C4900090F863101C2910D090F84E10012912D08A +:10C4A00090F8FD1079B90BE0607840F00100607001 +:10C4B000B6E4BDE87040002014E780F84E5002E07A +:10C4C00090F8FC1019B11E2180F8641012E01D21B3 +:10C4D00080F8641000F586710288CA82028F0A8390 +:10C4E000428F4A83828F8A83C08FC8830D75E0781C +:10C4F000EFF708FAA068002120F8881F85708FE404 +:10C5000010B5794C00230921A06890F863205830B9 +:10C51000FCF7ABFF48B16078002805D1A16801F8AD +:10C520007A0F087301F8170C10BD0120607010BD60 +:10C530007CB56D4C00230721A06890F8632058302B +:10C54000FCF793FF38B36078002826D1694620694C +:10C55000FDF71BFC9DF80000002500F02501A068F8 +:10C5600080F894109DF8011001F0410180F89510B9 +:10C5700080F88650D0F8F01000884988814200D0B9 +:10C58000FFDFA068D0F8F0100D70D0F83C110A78E9 +:10C5900022B1FFDF16E0012060707CBD30F8C02BB7 +:10C5A000CA80C16F0D71C16F009A8A60019ACA601A +:10C5B000C26F0721117030F8C01CC06F4180E07855 +:10C5C000EFF7A0F9A06880F863507CBD70B5464CC9 +:10C5D00000231946A06890F864205830FCF745FF06 +:10C5E000012540B9A0680023082190F86320583045 +:10C5F000FCF73BFF10B36078002820D1A06890F8CA +:10C600008E00800712D42069FDF784FBA16881F8B1 +:10C610008F00206930F8052FA1F890204088A1F8FC +:10C62000920011F88E0F40F002000870A0684FF0E1 +:10C63000000690F88E10C90702D010E0657037E44C +:10C6400090F86420002319465830FCF70EFF00B91B +:10C65000FFDFA06800F8645F80F826508684A06839 +:10C6600090F86310012906D180F8636080F8866035 +:10C67000E078EFF747F9A168D1F8F000098842881F +:10C680008A42DCD101780429D9D10670E078EFF72D +:10C6900039F9A06890F863100029D0D180F886603D +:10C6A00006E470B5104DA86890F863101A2902D0FE +:10C6B00002206870DAE569780029FBD1002480F84F +:10C6C0008B4080F88640D0F8F0100088498881427D +:10C6D00000D0FFDFA868D0F8F0100C70D0F83C1143 +:10C6E0000A781AB1FFDF27E06C01002090F88C2057 +:10C6F00072B180F88C400288CA80D0F83C110C716D +:10C70000D0F83C210D2111700188D0F83C010DE0DA +:10C7100030F8C02BCA80C16F0C71C26F0121117239 +:10C72000C26F0C21117030F8C01CC06F418000F046 +:10C73000AAFEE878EFF7E6F8A86880F8634095E588 +:10C7400070B5FC4CA16891F86320162A01D0132A19 +:10C7500002D191F88C2012B10220607086E56278D7 +:10C76000002AFBD181F8C000002581F88B5081F8A8 +:10C770008650D1F8F00009884088884200D0FFDF59 +:10C78000A068D0F8F0000078032800D0FFDF032174 +:10C79000FF20FFF7EDFCA068D0F83C110A780AB141 +:10C7A000FFDF13E030F8C02BCA80C26F017811712F +:10C7B000C16F0D72C26F0C21117030F8C01CC06FB8 +:10C7C000418000F060FEE078EFF79CF8A06880F808 +:10C7D00063504BE570B5D74C09210023A06890F851 +:10C7E00063205830FCF741FE002518B1206900791C +:10C7F00012281ED0A0680A21002390F86320583028 +:10C80000FCF733FE18B120690079142814D0206990 +:10C81000007916281BD1A06890F863101F2916D143 +:10C8200080F8635080F88650BDE870401A20FFF70A +:10C8300023BABDE8704063E6A06880F86350A0F8B2 +:10C84000825080F88650BDE87040FFF736BA0DE59B +:10C8500070B5B84C2079C00770D02069002305213D +:10C86000C578A06890F863205830FCF7FEFD88B1C9 +:10C87000022D0FD00B2D0DD0042D0BD0052D09D07E +:10C88000062D07D00D2D05D0112D03D0607840F076 +:10C89000080060706078002850D1206900250226C9 +:10C8A000C178891E162976D2DFE801F00B75323582 +:10C8B0004522754C7525494375757538524F686B1F +:10C8C0006F72A0680023012190F866205830FCF7B1 +:10C8D000CCFDF8B92069FDF7E7F9A16881F8EE0011 +:10C8E000072081F8660081F88A5081F8865055E06B +:10C8F000FFF770FF52E0A06890F863100F2901D095 +:10C9000066704BE080F86850122180F8631045E0B3 +:10C9100000F0E4FD42E000F0C0FD3FE0FDF776FAF4 +:10C9200003283BD12069FDF775FA00BFFFF708FF28 +:10C9300034E00079FAE7FFF7B4FE2FE036E0FFF7C6 +:10C9400045FE2BE0FFF7F4FD28E0FFF7D9FD25E0D9 +:10C95000A0680023194690F864205830FCF785FD44 +:10C96000012110B16078C8B901E0617016E0A068DB +:10C9700020F8885F817000F8246C0FE0FFF763FDFA +:10C980000CE000F04CFD09E005E0FFF7E0FC05E0FD +:10C9900000F011FD02E00020FFF7A4FCA068F0E920 +:10C9A0002812491C42F10002C0E900125EE42DE9A0 +:10C9B000F041604C2079800741D5607800283ED155 +:10C9C000E06801270026C17820461929856805F10D +:10C9D00058006FD2DFE801F04B3E0D6FC1C1801CE3 +:10C9E00034C1556287C1C1C1C1BE8B9598A2B0C187 +:10C9F000BA0095F8662000230121FCF736FD0028D7 +:10CA00001DD1A068082180F8661080F886608EE04D +:10CA1000002395F864201946FCF727FD10B1A068A3 +:10CA200080F88A60A0680023194690F86320583087 +:10CA3000FCF71BFD002802D0A06880F886606BE43C +:10CA4000002395F863201946FCF70FFD00B9FFDFBE +:10CA5000042008E0002395F863201946FCF705FD43 +:10CA600000B9FFDF0C20A16881F8630054E40023C3 +:10CA700095F863201946FCF7F8FC00B9FFDF0D209C +:10CA8000F1E7002395F863201946FCF7EEFC00B9A6 +:10CA9000FFDFA0680F2180F88B7008E095F8630035 +:10CAA000122800D0FFDFA068112180F88C7080F878 +:10CAB000631031E451E0002395F863201946FCF738 +:10CAC000D4FC20B9A06890F88C0000B9FFDFA06802 +:10CAD000132180F88B70EAE795F86300182800D0DE +:10CAE000FFDF1A20BFE7BDE8F04100F076BD00236C +:10CAF00095F863201946FCF7B8FC00B9FFDF052064 +:10CB0000B1E785F88A6007E4002395F863201946A9 +:10CB1000FCF7ABFC00B9FFDF1C20A4E7002395F86D +:10CB200064201946FCF7A1FC00B9FFDFA06880F87B +:10CB30008A6009E46C010020002395F863201946FF +:10CB4000FCF793FC00B9FFDF1F208CE7BDE8F04144 +:10CB500000F00BBD85F86460D3E7FFDF6FE710B529 +:10CB6000FB4C6078002837D1207940070FD5A068AA +:10CB700090F86300032800D1FFDFA06890F86610EA +:10CB8000072904D101212170002180F86610FFF7E8 +:10CB90000EFF00F0C8FCFFF75BFEA078000716D57B +:10CBA000A0680023052190F863205830FCF75DFC55 +:10CBB00050B108206070A068D0F83C1108780C28AB +:10CBC00000D10020087002E00020FBF7CBFCA06839 +:10CBD000BDE81040FFF712BB10BD2DE9F041DC4C61 +:10CBE00007464FF0000560780843607020798106A1 +:10CBF0002046806802D5A0F87C5004E0B0F87C1094 +:10CC0000491CA0F87C1000F02BFD0126F8B1A0888B +:10CC1000000506D5A06890F8691011B1A0F874500D +:10CC200015E0A068B0F87410491CA0F8741000F06A +:10CC300006FDA068B0F87410B0F87620914206D3D3 +:10CC4000A0F8745080F81261E078EEF75BFE20796E +:10CC500010F0600F08D0A06890F8671021B980F834 +:10CC600067600121FEF79FFD1FB9FFF778FFFFF70F +:10CC7000AFF93846FEF75EFFBDE8F041F7F7D3BCE9 +:10CC8000B3494A788B781A430DD1012809D0087925 +:10CC9000400704D5886890F86600072803D0012073 +:10CCA0007047FEF707BD00207047A949C278896820 +:10CCB000012A06D05AB1182A08D1B1F8EA10FDF7B6 +:10CCC00085B8B1F8FA104172090A81727047D1F83B +:10CCD000F01089884173090A8173704770B59C4CC4 +:10CCE00005460E46A0882843A080A80703D5E8077C +:10CCF00000D0FFDFE660E80700D02661A80719D55D +:10CD0000F078062802D00B2814D10BE0A06890F828 +:10CD1000631018290ED10021E0E92811012100F843 +:10CD2000371C07E0A06890F86310122902D1002197 +:10CD300080F86910280601D50820A070680521D563 +:10CD4000A068B0F8581082881144891DF27889B221 +:10CD5000012A03D02AB1182A07D00FE0A0F8FA1050 +:10CD60000CE0D0F8F000818008E090F8E8201AB9D3 +:10CD700090F8E92002B90021A0F8EA103046BDE899 +:10CD8000704092E75BE43EB505466846F7F713FC52 +:10CD900000B9FFDF2221009801F016FE0321009860 +:10CDA000FCF70DFF0098017821F010010170294671 +:10CDB000FCF734FF664C192D7ED2DFE805F0201811 +:10CDC0000D3ACDCDCE1262CDCECE55CDCDCDCDBC92 +:10CDD000CECE6C87A0CDA900A168009891F8ED1087 +:10CDE00003E0A168009891F8C4100171B5E0A06853 +:10CDF000D0F8F4100098491CFCF749FFADE0A16899 +:10CE0000009851F8F02F927902710A6812894271E4 +:10CE1000120A82710A685289C271120A02720A6881 +:10CE200092894272120A82720968C989FCF708FF66 +:10CE300093E0A068D0F8F0100098091DFCF736FFC9 +:10CE4000A068D0F8F01000980C31FCF739FFA0680A +:10CE5000D0F8F01000981E31FCF738FFA168009858 +:10CE6000B831FCF73FFF78E06269009811780171F2 +:10CE700091884171090A81715188C171090A017251 +:10CE80006BE03449D1E90001CDE9010101A9009825 +:10CE9000FCF742FF61E0A068B0F844100098FCF78E +:10CEA00045FFA068B0F846100098FCF743FFA06863 +:10CEB000B0F84010009800E04EE0FCF73FFFA0689B +:10CEC000B0F842100098FCF73DFF46E0A068B0F8CB +:10CED00040100098FCF732FFA068B0F842100098AC +:10CEE000FCF730FFA068B0F844100098FCF71EFF74 +:10CEF000A068B0F846100098FCF71CFF2DE0A16870 +:10CF0000009891F80821027191F80911417124E00B +:10CF1000A06890F8E800FCF7D5FB01460098FCF704 +:10CF20004DFFA06890F8E900FCF7CCFB01460098A3 +:10CF3000FCF748FF11E0A06890F8E5100098FCF7B6 +:10CF400063FFA06890F8E4100098FCF761FF04E02C +:10CF50006C01002078EF0100FFDFF7F741FB00B91B +:10CF6000FFDF0098FFF7A1FE3EBDFA48806890F809 +:10CF7000E81009B990F8511080F8511090F8E910B4 +:10CF800009B990F8521080F852100020FEF774BED4 +:10CF9000F8B5F04E00250446B060B5807570B570E8 +:10CFA00035700088F7F704FBB0680088F7F729FBB5 +:10CFB000B4F8D000B168401C82B201F15800FCF70F +:10CFC0009AF900B1FFDF94F86400242809D1B4F87D +:10CFD0005810B4F8EA00081A00B2002801DB707893 +:10CFE00020B194F86300242808D015E0FFF7BDFFB6 +:10CFF00084F86450B16881F87B500DE0B4F85810A3 +:10D00000B4F8EA00081A00B2002805DB707818B9F5 +:10D01000FFF7ABFF84F86350A4F8D050FEF763FD30 +:10D0200000281CD1B06890F8C300FF2801D0FFF79A +:10D03000AAFEC9480090C94BC94A21462846FBF7B9 +:10D0400088F9B0680023052190F863205830FCF778 +:10D050000CFA002803D0BDE8F840FBF71CB8F8BD77 +:10D0600010B5FEF740FD20B10020BDE8104001469C +:10D07000B3E5BDE81040FBF7E1B970B50C460646D4 +:10D0800015464FF4A071204601F0C0FC268005B97A +:10D09000FFDF286844F8F00F68686060A868E06403 +:10D0A00084E4F2F77EBE2DE9F0410D4607460621E5 +:10D0B000F2F76EFD040040D0D4F83C110026087849 +:10D0C00058B14A8821888A4207D108280FD00D28F4 +:10D0D0001BD00C2829D0072843D094F81201E0B3C4 +:10D0E0006E700F20287084F812616F80ADE06E7052 +:10D0F00008202870D4F83C014168C5F80210816806 +:10D10000C5F806108089688139E00846F2F772FE9A +:10D110000746F2F71EFB78B96E700D202870D4F820 +:10D120003C014068C5F8020012E00846F2F762FED2 +:10D130000746F2F70EFB08B1002080E46E700C2069 +:10D140002870D4F83C014168C5F802100089E880D5 +:10D15000D4F83C010670384600E014E0F2F7F3FA28 +:10D1600073E06E7007202870D4F83C014168C5F860 +:10D1700002108168C5F80610C068C5F80A00D4F826 +:10D180003C01067061E094F81401A8B16E7014209F +:10D1900028700CE084F81461D4F81601C5F8020078 +:10D1A000D4F81A01C5F80600B4F81E01688194F895 +:10D1B00014010028EED148E094F8200180B16E708F +:10D1C0001A20287084F82061D4F82201C5F80200E2 +:10D1D000D4F82601C5F80600B4F82A01688134E0C5 +:10D1E00094F82C0148B16E701B20287084F82C61D3 +:10D1F000D4F82E01C5F8020027E094F80C0170B1B4 +:10D200006E701820287005E084F80C61D4F80E01C7 +:10D21000C5F8020094F80C010028F5D115E094F847 +:10D220003201002889D06E701520287009E000BFF7 +:10D2300084F83261D4F83401C5F80200B4F838013A +:10D24000E88094F832010028F2D101200EE4414A2E +:10D250005061D170704770B50D4604464FE000BF75 +:10D26000B4F8D000401CA4F8D000B4F87C00401CF6 +:10D27000A4F87C00204600F0F3F9B8B1B4F87400CB +:10D28000401CA4F87400204600F0D9F9B4F87400EA +:10D29000B4F87610884209D30020A4F87400012065 +:10D2A00084F812012B48C078EEF72CFB94F8860026 +:10D2B00020B1B4F88200401CA4F8820094F88A00DF +:10D2C00020B1B4F88800401CA4F8880094F8EC0061 +:10D2D00040B994F866200023012104F15800FCF7BE +:10D2E000C4F820B1B4F88000401CA4F880002046A7 +:10D2F000FEF784FFB4F85800401CA4F858006D1ED7 +:10D30000ADB2ADD23EE5134AC2E90601704770B531 +:10D310000446B0F87C0094F86710D1B1B4F87E10E0 +:10D320000D1A2D1F94F87A0040B194F86320002361 +:10D33000092104F15800FCF798F8B8B1B4F874600A +:10D34000204600F08DF980B1B4F87600801B001FF4 +:10D350000CE007E06C010020DBCB010081CC010078 +:10D36000DDCC0100C0F10205DCE72846A84200DA66 +:10D370000546002D01DC002004E5A8B202E510B549 +:10D38000012808D0022808D0042808D0082806D090 +:10D39000FFDF204610BD0124FBE70224F9E7032448 +:10D3A000F7E710B5FEF7ABFCFEF787FCBDE81040D1 +:10D3B0001520FEF742BC70B5B14CA06890F8630030 +:10D3C0001F2804D0607840F001006070DAE4206922 +:10D3D000FCF7EAFCD8B1206901220179407901F01B +:10D3E000070161F30705294600F0070060F30F21EC +:10D3F000A06880F886200022A0F88220232280F8EE +:10D400006320D0F80801BDE87040FEF7BDBD0120E3 +:10D41000FEF768FFBDE870401E20FEF72DBC70B51A +:10D42000974C00230A21A06890F863205830FCF73D +:10D430001CF818B32069FCF791FCA8B1A568206915 +:10D44000FCF788FC2887A5682069FCF77FFC6887C3 +:10D45000A5682069FCF780FCA887A5682069FCF70F +:10D4600077FCE887FEF74BFCA168002081F8860076 +:10D4700081F86300BDE87040FEF71FBC607840F0A3 +:10D48000010060707EE47E4810B580680088F2F785 +:10D49000B1FCBDE81040F2F747B910B5784CA3686D +:10D4A00093F86300162802D00220607010BD6078E7 +:10D4B0000028FBD1D3F8F000002200F11E010E304D +:10D4C000A833FBF77FFFA0680021C0E926110121E6 +:10D4D00080F86810182180F8631010BD10B5684CF2 +:10D4E000A06890F86310132902D00220607010BD6C +:10D4F00061780029FBD1D0F8F0100088498881427A +:10D5000000D0FFDFA068D0F8F01020692631FCF7CA +:10D51000F6FBA1682069BC31FCF7F9FBA168162075 +:10D5200081F8630010BD10B5554C207900071BD55C +:10D530006078002818D1A068002190F8C300FEF799 +:10D5400017FEA06890F8C300FF2800D1FFDFA06895 +:10D55000FF2180F8C31090F86610082904D1022139 +:10D560002170002180F8661010BD70B5444D242153 +:10D570000024A86890F86420212A05D090F8632040 +:10D58000232A18D0FFDF8BE590F8E82012B990F835 +:10D59000E9202AB180F86410A86880F88A407FE505 +:10D5A00000F8644FC47590F8A2000028F4D0002061 +:10D5B000FEF762FBF0E790F8E82012B990F8E92056 +:10D5C0002AB180F86310A86880F8864068E580F882 +:10D5D00063400020FEF750FBF5E770B5284C0025AE +:10D5E000A068D0F8F01003884A889A4219D10978C7 +:10D5F000042916D190F86320002319465830FBF710 +:10D6000034FF00B9FFDFA06890F88E10890703D4BB +:10D61000012180F8631004E080F88650D0F8F00013 +:10D620000570A0680023194690F864205830FBF775 +:10D630001CFF002802D0A06880F88A5030E5B0F8BE +:10D640007620B0F874108A4201D3511A00E000210C +:10D650008288521D8A4202D3012180F87A107047D5 +:10D6600010B590F8691041B990F8632000230621A5 +:10D670005830FBF7FAFE002800D0012010BD000052 +:10D680006C0100202DE9F0410C4611490D68104A4B +:10D69000104908321160A0F120012A2901D301208C +:10D6A0000CE03E2810D040CC0B4F94E80E0007EB66 +:10D6B0008000241F50F8807C3046B8472060044822 +:10D6C000001D0560BDE8F0812046E3F789FDF5E720 +:10D6D000100502400100000180EF010010B5524822 +:10D6E00000F070FA00B1FFDF4F48401C00F06AFA0A +:10D6F000002800D0FFDF10BD2DE9F14F4B4ED6F8CA +:10D7000000B00127484800F065FADFF81C8128B90D +:10D710005FF0000708F1010000F072FA444C0025A8 +:10D720004FF0030901206060C4F80051C4F80451AF +:10D73000009931602060DFF8FCA018E0DAF8000002 +:10D74000C00614D50E2000F064F8EFF3108010F03E +:10D75000010072B600D00120C4F80493D4F800117F +:10D7600019B9D4F8041101B920BF00B962B6D4F8D0 +:10D77000000118B9D4F804010028DFD0D4F804015E +:10D780000028CFD137B1C6F800B008F1010000F091 +:10D7900021FA11E008F1010000F01CFA0028B9D1CB +:10D7A000C4F80893C4F80451C4F800510E2000F0E6 +:10D7B00030F81D4800F024FA0020BDE8F88F2DE96C +:10D7C000F0438DB00D46064600240DF110090DF111 +:10D7D000200817E004EB4407102255F8271068468C +:10D7E00001F073F805EB870710224846796801F0CD +:10D7F0006CF86846FFF780FF10224146B86801F0D8 +:10D8000064F8641CB442E5DB0DB00020BDE8F08391 +:10D8100072E700F01F02012191404009800000F1F1 +:10D82000E020C0F8801270478C01002004E5004021 +:10D8300000E0004010ED00E0D7490020087070477C +:10D8400070B5D64D01232B60D54B1C68002CFCD045 +:10D85000002407E00E6806601E68002EFCD0001D44 +:10D86000091D641C9442F5D3002028601868002824 +:10D87000FCD070BD70B5C84E0446CA4D3078022841 +:10D8800000D0FFDFAC4200D3FFDF7169C648012939 +:10D8900003D847F23052944201DD03224271491C01 +:10D8A0007161291BC160C0497078F4F7E9FC002858 +:10D8B00000D1FFDF70BD70B5B74C0D46617888426E +:10D8C00000D0FFDFB74E082D4BD2DFE805F04A0449 +:10D8D0001E2D4A4A4A382078022800D0FFDF032054 +:10D8E0002070A078012801D020B108E0A06800F0E5 +:10D8F00043FD04E004F1080007C8FFF7A1FF05207D +:10D900002070BDE87040F4F77FB9F4F771FA014672 +:10D910006068F4F77BFFB04202D2616902290BD341 +:10D920000320F5F726FA12E0F4F762FA0146606880 +:10D93000F4F76CFFB042F3D2BDE870409AE720786C +:10D9400002280AD0052806D0FFDF04202070BDE899 +:10D95000704000F017B9022000E00320F5F709FA43 +:10D96000F3E7FFDF70BD70B50546F4F741FA8A4C66 +:10D9700060602078012800D0FFDF8B49012008700B +:10D980000020087104208D6048718648C86002201C +:10D9900020706078F4F774FC002800D1FFDF70BDC0 +:10D9A00010B57D4C207808B1112010BD7F48F4F7E8 +:10D9B000A6F96070202804D001202070002060614A +:10D9C00010BD032010BD020B0121B0F5003F02D2B3 +:10D9D0009140774816E0B0F5802F04D2203A744881 +:10D9E0009140001D0EE0B0F5C02F04D2403A7048BF +:10D9F0009140103006E0B0F5002F08D2603A6C4834 +:10DA0000914014300068084000D001207047002089 +:10DA100070472DE9F041144600EB84070E46054699 +:10DA20003F1F00F0BCFC4FF080510A69504306EBE9 +:10DA30008402121FB24201D2012200E000221CB176 +:10DA40000969B4EB910F02D90920BDE8F081594969 +:10DA50008D4216D3AF4214D3854205D2874203D2FA +:10DA600045EA0600800701D01020EEE78E4208D379 +:10DA70003AB92846FFF7A7FF18B93846FFF7A3FFC2 +:10DA800008B10F20E1E74C484C490068884205D0B6 +:10DA9000224631462846FFF7D3FE10E0FFF780FF0D +:10DAA0000028D2D13C4800218560C0E90364817020 +:10DAB0004FF4A97104FB01F01830FFF754FF002068 +:10DAC000C3E770B54FF08055044628693949B1FB6A +:10DAD000F0F084420AD300F062FCA04201D810208A +:10DAE00070BD28696043FFF76EFF08B10F2070BD5D +:10DAF000314832490068884204D02869604300F008 +:10DB00003BFC0CE0FFF74CFF0028F0D129692248CC +:10DB100061438160012181702948FFF724FF0020C3 +:10DB200070BD2449090BB1EB401F07D9404201EBFE +:10DB30004011202903D34FF0FF307047002101200E +:10DB40008840401E704770B505460C460020FFF720 +:10DB5000E8FF28420ED10120FFF7E3FF204209D160 +:10DB60000220FFF7DEFF104204D10320FFF7D9FFA8 +:10DB7000184201D00F2070BD21462846BDE87040F4 +:10DB800000F050BE10B5044C6078F4F712F900B9FB +:10DB9000FFDF0020207010BD9001002004E501404F +:10DBA00000E40140105C0C0084110020B7D8010093 +:10DBB0000006004000300200B0000020BEBAFECADD +:10DBC0007C5E01000021017008467047014600207C +:10DBD00008707047EFF3108101F0010172B602780E +:10DBE000012A01D0012200E000220123037001B9C3 +:10DBF00062B60AB1002070474FF400507047E9E761 +:10DC0000EFF3108111F0010F72B64FF000020270B5 +:10DC100000D162B600207047F2E700004C49096865 +:10DC20000160002070474A490860002070470121C8 +:10DC30008A0720B1012804D042F20400704791679E +:10DC400000E0D1670020704742490120086042F29D +:10DC50000600704708B504233E4A1907103230B158 +:10DC6000C1F80433106840F0010010600BE0106848 +:10DC700020F001001060C1F808330020C1F808014D +:10DC8000354800680090002008BD011F0B2909D805 +:10DC9000304910310A6822F01E0242EA4000086052 +:10DCA0000020704742F205007047000100F18040FB +:10DCB000C0F8041900207047000100F18040C0F84E +:10DCC000081900207047000100F18040D0F80009D9 +:10DCD000086000207047012801D9072070471F4ABB +:10DCE00052F8200002680A430260002070470128B1 +:10DCF00001D907207047194A52F8200002688A4368 +:10DD0000026000207047012801D907207047134A9C +:10DD100052F8200000680860002070470200104997 +:10DD20004FF0000003D0012A01D0072070470A609D +:10DD300070474FF080410020C1F808014FF0E0200B +:10DD4000802180F800140121C0F800117047000004 +:10DD500000040040000500400801004028F00100D8 +:10DD6000780500406249634B0A6863499A42096832 +:10DD700001D1C1F310010160002070475C495D4B87 +:10DD80000A685D49091D9A4201D1C0F3100008607C +:10DD9000002070475649574B0A68574908319A4244 +:10DDA00001D1C0F3100008600020704730B5504B1F +:10DDB000504D1C6842F20803AC4202D0142802D233 +:10DDC00003E0112801D3184630BDC3004B48184466 +:10DDD000C0F81015C0F81425002030BD4449454B4B +:10DDE0000A6842F209019A4202D0062802D203E0F0 +:10DDF000042801D308467047404A012142F83010F8 +:10DE0000002070473A493B4B0A6842F209019A42A6 +:10DE100002D0062802D203E0042801D30846704746 +:10DE2000364A012102EBC00041600020704770B506 +:10DE30002F4A304E314C156842F2090304EB800240 +:10DE4000B54204D0062804D2C2F8001807E004281E +:10DE500001D3184670BDC1F31000C2F800080020BD +:10DE600070BD70B5224A234E244C156842F2090356 +:10DE700004EB8002B54204D0062804D2D2F8000890 +:10DE800007E0042801D3184670BDD2F80008C0F39B +:10DE900010000860002070BD174910B508311848FF +:10DEA00008601120154A002102EBC003C3F81015C9 +:10DEB000C3F81415401C1428F6D3002006E00428EB +:10DEC00004D302EB8003C3F8001807E002EB8003E1 +:10DED000D3F80048C4F31004C3F80048401C0628D7 +:10DEE000EDD310BD044906480831086070470000B2 +:10DEF000B0000020BEBAFECA00F5014000F00140AB +:10DF00000000FEFF7D4B1B6803B19847BFF34F8FA6 +:10DF10007B4801687B4A01F4E06111430160BFF373 +:10DF20004F8FFEE710B5EFF3108010F0010F72B6BF +:10DF300001D0012400E0002400F0D6F850B1E3F74E +:10DF4000E9F9F3F722FDF4F7B7FEEDF72CFC6E4983 +:10DF50000020086004B962B6002010BD70B50C4600 +:10DF60000646EFF3108010F0010F72B601D00125C4 +:10DF700000E0002500F0B8F818B105B962B6082035 +:10DF800070BDE3F743F9E3F7C9F9024600204309FE +:10DF90009B0003F1E02300F01F01D3F80031CB40D8 +:10DFA000D9071BD0202803D222FA00F1C90722D1B9 +:10DFB00041B2002906DA01F00F0101F1E02191F8E8 +:10DFC000141D03E001F1E02191F80014490908292A +:10DFD00011D281B101290ED004290CD0401C642833 +:10DFE000D5D3EDF7B7FB4849484808602046F5F718 +:10DFF000A3FA60B904E005B962B641F2010070BD50 +:10E000003E4804602EB13046F5F7E3FA18B110240B +:10E0100029E03F4E16E03078022802D94FF48054B0 +:10E0200021E007240028707801D0E0B908E0D0B1E1 +:10E03000202818D8B078212815D8012813D001E05D +:10E04000B07880B93349802081F8140DE3F766F980 +:10E050003146F4F717FEF3F757FC00F0D3F93046DA +:10E06000E3F72AF9044605B962B61CB1FFF75AFF77 +:10E07000204670BD002070BD10B5044600F034F895 +:10E0800000B101202070002010BD2349086000204D +:10E09000704770B50C4621490D682049204E083163 +:10E0A0000E60102807D011280CD012280FD013288A +:10E0B00011D0012013E0D4E90001FFF74FFF3546EE +:10E0C00020600DE0FFF72EFF0025206008E02068AB +:10E0D000FFF7D2FF03E010492068086000202060AD +:10E0E0000E48001D056070BD074808490068884259 +:10E0F00001D101207047002070470000A8010020D6 +:10E100000CED00E00400FA05B0000020BEBAFECA23 +:10E1100030F001000BE000E0040000201005024098 +:10E120000100000100B5744910F1080F19D00CDC92 +:10E1300010F1280F1DD010F1140F18D010F1100F8E +:10E1400013D010F10C0F08D10DE010F1040F06D020 +:10E1500080B103280ED004280CD0FFDF00BDFC20C6 +:10E1600008E0F82006E0F42004E0F02002E0EC20D3 +:10E1700000E0D820086000BD5F4900B5091D0128F6 +:10E1800003D0022803D0FFDF00BD032000E00420FD +:10E19000086000BD584800B5001D016801F00F017E +:10E1A000032905D0006800F00F00042802D0FFDF2B +:10E1B000012000BD022000BD504930B1012803D12B +:10E1C000086840F00100086070470868FBE72DE927 +:10E1D000F04105461F464FF4C8604FF47A76012996 +:10E1E00012D0022A17D046490C181846F6F746F9FD +:10E1F00004443846F6F774F9204400F27120B0FB6D +:10E20000F6F0281ABDE8F081022A00D1304649F61E +:10E2100008514418E9E73B493046E5E770B5154633 +:10E220000646012914D0022B15D0354CFA3410467D +:10E23000F6F731F94FF47A71012D0FD04A10A21A76 +:10E24000104400F28920B0FBF1F0301A801E70BD3E +:10E2500049F6CA64EBE72B4C643CE7E70A46EEE775 +:10E260002DE9F041054614464FF4C8604FF47A7624 +:10E27000012911D0022B16D021490F181046F6F7AC +:10E280000AF9012C12D04FF4FA71791A0844643853 +:10E29000B0FBF6F0281AB5E7022B00D1304649F65C +:10E2A00008514718EAE717493046E6E73146ECE7F8 +:10E2B0002DE9F04105460C4616461046F6F7DEF805 +:10E2C00005EB4501C1EBC51100EBC1004FF47A75B8 +:10E2D000012C0FD0691047182046F6F7DCF8381AE1 +:10E2E00000F60F60B0FBF5F43046F6F7BDF82044B9 +:10E2F000401D87E72946EEE70C1500405016004008 +:10E30000A2240200683602002DE9FE430C46804636 +:10E31000FBF76AFC074698F80160204601A96A46A7 +:10E32000F1F7F3F905000DD0012F02D00320BDE86D +:10E33000FE83204602AA0199F1F709F90298B0F884 +:10E3400003000AE0022F14D1042E12D3B8F8030000 +:10E35000BDF80020011D914204D8001D80B2A9190A +:10E36000814202D14FF00000E1E702D24FF00100FC +:10E37000DDE74FF00200DAE70B4A022111600B499A +:10E380000B68002BFCD0084B1B1D18600868002888 +:10E39000FCD00020106008680028FCD070474FF0C7 +:10E3A000805040697047000004E5014000E40140EE +:10E3B00002000B464FF00000014620D0012A04D095 +:10E3C000022A04D0032A0DD103E0012002E002203A +:10E3D00015E00320072B05D2DFE803F00406080A46 +:10E3E0000C0E100007207047012108E0022106E012 +:10E3F000032104E0042102E0052100E00621F3F7F7 +:10E400009ABC0000F648052181700021017041701E +:10E410007047F4490A78012A05D0CA681044C860D8 +:10E420004038F4F7C0B98A6810448860F8E70028DB +:10E4300019D00378EC49ED4A13B1012B0ED011E04D +:10E440000379012B00D06BB943790BB1012B09D1B2 +:10E450008368643B8B4205D2C0680EE00379012BD0 +:10E4600002D00BB10020704743790BB1012BF9D1D9 +:10E47000C368643B8B42F5D280689042F2D8012099 +:10E480007047D84910B501220A700279A2B1002262 +:10E490000A71427992B104224A718268D04C523298 +:10E4A0008A60C0681434C8606060F3F7A1FCCC498E +:10E4B00020600220887010BD0322E9E70322EBE709 +:10E4C00070B5044609B1012000E00320C54D0021CC +:10E4D0002970217901B100202871607968B1042088 +:10E4E000BF4E6871A168F068F3F78BF9A860E06827 +:10E4F0005230E8600320B07070BD0320F0E72DE9D2 +:10E50000F04105460226F4F77AF8006800B1FFDF13 +:10E51000B34C01273DB12878B0B1012805D00228BD +:10E5200010D0032813D027710CE06868C82807D3DF +:10E53000F4F79FF920B16868FFF76BFF012603E04D +:10E54000002601E000F056F93046BDE8F081207861 +:10E550000028F7D16868FFF76AFF0028E3D06868F1 +:10E56000017879B1A078042800D0FFDF0121686824 +:10E57000FFF7A6FF9B49E078F3F782FE0028E1D180 +:10E58000FFDFDFE7FFF77DFF6770DBE72DE9F0478F +:10E59000934C8846E178884200D0FFDFDFF8409254 +:10E5A000002501278F4E09F11409B8F1080F75D223 +:10E5B000DFE808F0040C28527A808D95A0780328B3 +:10E5C00002D0022800D0FFDFBDE8F087A078032842 +:10E5D00002D0022800D0FFDF0420A070257120782F +:10E5E000002878D1FFF715FF3078012806D0B068F1 +:10E5F000E06000F02BF92061002060E0E078F3F7A4 +:10E600003CFDF5E7A078032802D0022800D0FFDF08 +:10E61000207800286DD1A078032816D0F3F7E8FB06 +:10E6200001464F46D9F80000F4F7F0F800280EDB59 +:10E63000796881420BDB081AF0606A49E078F3F7E9 +:10E640001FFE0028C0D1FFDFBEE7042028E0042021 +:10E65000F4F78FFBA570B7E7A078032802D0022853 +:10E6600000D0FFDF207888BBA078032817D0F3F70D +:10E67000BFFB01464F46D9F80000F4F7C7F8002861 +:10E68000E5DB79688142E2DB081AF0605549E07801 +:10E69000F3F7F6FD002897D1FFDF95E740E005206E +:10E6A000F4F767FBA7708FE7A078042800D0FFDF9E +:10E6B000022004E0A078042800D0FFDF0120A16838 +:10E6C0008847FFF71CFF054630E004E011E0A07822 +:10E6D000042800D0FFDFBDE8F04700F08BB8A07839 +:10E6E000042804D0617809B1022800D0FFDF207827 +:10E6F00018B1BDE8F04700F086B8207920B10620B7 +:10E70000F4F737FB2571CDE7607838B13549E0780B +:10E71000F3F7B6FD00B9FFDF657055E70720BFE7E7 +:10E72000FFDF51E73DB1012D03D0FFDF022DF9D10D +:10E730004AE70420C3E70320C1E770B5050005D010 +:10E74000274CA078052803D0112070BD102070BD83 +:10E750002748F3F7D4FAE070202803D00020A56002 +:10E76000A07070BD032070BD1D4810B5017809B1BF +:10E77000112010BD8178052906D0012906D029B1C4 +:10E7800001210170002010BD0F2010BD00F03BF8EA +:10E79000F8E770B5124C0546A07808B1012809D1F8 +:10E7A00055B12846FFF743FE40B1287840B1A07824 +:10E7B000012809D00F2070BD102070BD072070BD4A +:10E7C0002846FFF75EFE03E000212846FFF778FEAB +:10E7D0000449E078F3F754FD00B9FFDF002070BD75 +:10E7E000AC010020941100203D860100FF1FA1070D +:10E7F0008DE501000A4810B5006900F01FF8BDE87A +:10E800001040F3F701BA064810B5C078F3F7D1FA13 +:10E8100000B9FFDF0820F4F7ACFABDE81040F1E5DD +:10E82000AC01002010B50E4C2060201D01600C488A +:10E8300010300260001D0360002010BD09490A6805 +:10E8400048F202139A4302430A607047054A11686E +:10E8500048F2021301EA0300994311607047000077 +:10E8600000060040C8060240704770477047704776 +:10E87000704740EA010310B59B070FD1042A0DD35E +:10E8800010C808C9121F9C42F8D020BA19BA884291 +:10E8900001D9012010BD4FF0FF3010BD1AB1D307D0 +:10E8A00003D0521C07E0002010BD10F8013B11F806 +:10E8B000014B1B1B07D110F8013B11F8014B1B1B2F +:10E8C00001D1921EF1D1184610BD032A40F23080CA +:10E8D00010F0030C00F0158011F8013BBCF1020FA1 +:10E8E000624498BF11F801CB00F8013B38BF11F822 +:10E8F000013BA2F1040298BF00F801CB38BF00F839 +:10E90000013B11F0030300F02580083AC0F00880B5 +:10E9100051F8043B083A51F804CBA0E80810F5E799 +:10E92000121D5CBF51F8043B40F8043BAFF300807C +:10E93000D20724BF11F8013B11F801CB48BF11F8F1 +:10E94000012B24BF00F8013B00F801CB48BF00F8C1 +:10E95000012B704710B5203AC0F00B80B1E8185079 +:10E96000203AA0E81850B1E81850A0E81850BFF4B9 +:10E97000F5AF5FEA027C24BFB1E81850A0E8185058 +:10E9800044BF18C918C0BDE810405FEA827C24BFAC +:10E9900051F8043B40F8043B08BF7047D20728BF3A +:10E9A00031F8023B48BF11F8012B28BF20F8023B89 +:10E9B00048BF00F8012B704702F0FF0343EA03222F +:10E9C00042EA024200F002B84FF000020429C0F00F +:10E9D000128010F0030C00F01B80CCF1040CBCF191 +:10E9E000020F18BF00F8012BA8BF20F8022BA1EBE3 +:10E9F0000C0100F00DB85FEAC17C24BF00F8012BC8 +:10EA000000F8012B48BF00F8012B70474FF00002BF +:10EA100000B5134694469646203922BFA0E80C5014 +:10EA2000A0E80C50B1F12001BFF4F7AF090728BFEF +:10EA3000A0E80C5048BF0CC05DF804EB890028BF6B +:10EA400040F8042B08BF704748BF20F8022B11F094 +:10EA5000804F18BF00F8012B704770477047704710 +:10EA600070470000FEDF04207146084219D1069964 +:10EA7000124A914215DC069902394878DF2810D1F4 +:10EA80000878FE2807D0FF280BD14FF001004FF087 +:10EA900000020B4B184741F201000099019A084B04 +:10EAA0001847084B002B02D01B68DB6818474FF053 +:10EAB000FF3071464FF00002014B18470030020052 +:10EAC00005DF010004000020184819497047FFF7CE +:10EAD000FBFFE2F773FB00BD4FF480501549096856 +:10EAE000884203D1144A13605B68184700BD0000D8 +:10EAF00020BFFDE74FF480500E490968884210D1CD +:10EB00000E4B18684FF0FF318842F1D080F308882F +:10EB10004FF02021884204DD0948026803210A439E +:10EB200002600848804708488047FFDFA81100209E +:10EB3000A811002000000020040000200030020086 +:10EB40001409004011360100D9EA01000420714681 +:10EB5000084202D0EFF3098101E0EFF308818869F0 +:10EB600002380078102813DB20280FDB2B280BDB62 +:10EB70000A4A12680A4B9A4203D1602804DB094A08 +:10EB80001047022008607047074A1047074A10479D +:10EB9000074A12682C32126810470000B0000020AB +:10EBA000BEBAFECA2113000085D6010093E0010021 +:10EBB000040000200D4B0E4908470E4B0C49084736 +:10EBC0000D4B0B4908470D4B094908470C4B0849A9 +:10EBD00008470C4B064908470B4B054908470B4BA8 +:10EBE000034908470A4B024908470000A1B4000046 +:10EBF000B12F0000792F000015B10000A3B0000074 +:10EC0000ABB600003D1300003981000039B90000A7 +:10EC1000C9110000518B0000138D0000718E00009F +:10EC2000958E0000CF8E0000038F0000358F00000E +:10EC30006D8F0000BF8F0000298C0000A71200001C +:10EC4000A7120000DB2200001F2300003F2300006A +:10EC5000C5230000E9240000A7250000D7250000F7 +:10EC600079260000A11F00009528000089290000D6 +:10EC7000A92900009F320000C3320000F3310000D8 +:10EC800047320000F532000089330000574500008C +:10EC900007470000D74A0000ED4B0000774C00000A +:10ECA000F54C0000594D00007D4E00004B4F000018 +:10ECB000B54F0000B7290000BD290000C72900009A +:10ECC000711F00007F2A0000451F0000AD2B0000CF +:10ECD000ED2B00004F2C0000A7120000A71200002F +:10ECE000A71200006D5D0000F35D00000F5E0000E4 +:10ECF0002B5E0000B95F0000555E00005F5E000003 +:10ED0000A15E0000C35E00009F5F0000E15F0000A5 +:10ED1000A712000053780000737800007578000097 +:10ED2000B9780000E7780000D5790000637A000028 +:10ED3000777A0000C57A0000B57B00005B7D00009B +:10ED4000857E0000616800009D7E0000A712000023 +:10ED5000A7120000F1A900005BAB0000AFAB000000 +:10ED60001BAC0000CBAC0000100110013A02000007 +:10ED70001A02000405060000938600008186000048 +:10ED8000FFFFFFFF0000FFFFE5A10000E11B000007 +:10ED90000D590000AB680000118400000000000065 +:10EDA000000002000000000000020000000000005F +:10EDB0000001000000000000FF750000DF7500008A +:10EDC0004D760000EF5C0000B15C0000D15C0000FB +:10EDD0004F9D00007B9D0000839F0000513E00007E +:10EDE0006D760000000000009D7600003D5D000093 +:10EDF000000000000000000000000000659E000010 +:10EE000000000000E53E0000D33B0000D33B0000C3 +:10EE1000B722000091A000002F6B00001F580000D7 +:10EE20007BD00100A1730100113C0000113C0000E7 +:10EE3000D9220000F3A00000B36B0000915800003D +:10EE4000A3D00100B57301007001700140003800CB +:10EE50005C0024004001F00100000300656C746256 +:10EE600000000000000000000000000000000000A2 +:10EE7000870000000000000000000000000000000B +:10EE8000BE83605ADB0B376038A5F5AA9183886C86 +:10EE900001000000590301002112010000000001DF +:10EEA0000206030405000000070000000000000047 +:10EEB000060000000A00000032000000730000009D +:10EEC000B4000000B95F010091B80100874F010054 +:10EED000A78401009BAB0100A78401000950010039 +:10EEE0002D87010069A601002D870100FD4E01005C +:10EEF000CF86010087AA0100CF8601004753010099 +:10EF000067880100DDAB010067880100555555D6C3 +:10EF1000BE898E000000A606340DC21300004A030D +:10EF2000EE059208000096041409920DF401FA000F +:10EF3000960064004B0032001E0014000A00050019 +:10EF4000020001000041000000000000AAAED7ABA3 +:10EF5000154120100C0802170D01010209090101D9 +:10EF6000060209181803010109090303055555553F +:10EF7000252627D6BE898E0025410000000000000E +:10EF800065DD01007DDD010095DD0100ADDD0100E5 +:10EF9000DDDD010005DE01002FDE010063DE010082 +:10EFA000C3DA010013DA010047DB0100C5DB010011 +:10EFB000D5DB010001DC0100BB2E0100C32E0100E6 +:10EFC000D52E01002FDC010049DC01001DDC010011 +:10EFD00027DC010055DC01008BDC0100ABDC01000B +:10EFE000B9DC0100C7DC0100D7DC0100EFDC010067 +:10EFF00007DD01001DDD0100000000009FB20000E0 +:10F00000F5B200000BB30000B1E30100F9D6010036 +:10F01000BFD701003BE7010069E7010093E701006A +:10F02000152D0100E53001001C05004020050040C1 +:10F030000010020054F0010008000020C001000090 +:10F040004411000084F00100C8010020E00F00001E +:10F05000A011000001181328120250201A010222E8 +:10F060007C2720FB349B5F801280021A10135F09FB +:10F070001B201C041AA20401980912BF237F01025D +:04F080006B290000F8 +:00000001FF diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/toolchain/armgcc/armgcc_s132v5_nrf52832_xxaa.ld nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/toolchain/armgcc/armgcc_s132v5_nrf52832_xxaa.ld new file mode 100644 index 0000000..7a40574 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/toolchain/armgcc/armgcc_s132v5_nrf52832_xxaa.ld @@ -0,0 +1,34 @@ +/* Linker script to configure memory regions. */ + +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x23000, LENGTH = 0x5d000 + RAM (rwx) : ORIGIN = 0x20001380, LENGTH = 0xec80 +} + +SECTIONS +{ +} + +SECTIONS +{ + . = ALIGN(4); + .mem_section_dummy_ram : + { + } + +} INSERT AFTER .data; + +SECTIONS +{ + .mem_section_dummy_rom : + { + } + +} INSERT AFTER .text + + +INCLUDE "nrf_common.ld" diff --git nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/toolchain/iar/iar_s132v5_nrf52832_xxaa.icf nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/toolchain/iar/iar_s132v5_nrf52832_xxaa.icf new file mode 100644 index 0000000..354a53b --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/components/softdevice/s132v5/toolchain/iar/iar_s132v5_nrf52832_xxaa.icf @@ -0,0 +1,37 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x23000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x23000; +define symbol __ICFEDIT_region_ROM_end__ = 0x7ffff; +define symbol __ICFEDIT_region_RAM_start__ = 0x20001380; +define symbol __ICFEDIT_region_RAM_end__ = 0x2000ffff; +export symbol __ICFEDIT_region_RAM_start__; +export symbol __ICFEDIT_region_RAM_end__; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = ; +define symbol __ICFEDIT_size_heap__ = ; +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; +define block RO_END with alignment = 8, size = 0 { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +keep { section .intvec }; +place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; +place in ROM_region { readonly, + block RO_END }; +place in RAM_region { readwrite, + block CSTACK, + block HEAP }; + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/main.c nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/main.c index e6d827b..d07667c 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/main.c +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/main.c @@ -57,23 +57,34 @@ #include "ser_conn_handlers.h" #include "boards.h" #include "nrf_drv_clock.h" - +#include "app_timer.h" #include "nrf_log.h" #include "nrf_log_ctrl.h" #include "nrf_log_default_backends.h" #include "app_timer.h" #include "ser_phy_debug_comm.h" +#include "ser_config.h" -#if defined(APP_USBD_ENABLED) && APP_USBD_ENABLED -#include "app_usbd_serial_num.h" -#ifdef BOARD_PCA10059 +#if defined(NRF_DFU_TRIGGER_USB_INTERFACE_NUM) && defined(QSPI_ENABLED) +#define BOARD_DETECTION 1 +#else +#define BOARD_DETECTION 0 +#endif + +#if BOARD_DETECTION #include "nrf_dfu_trigger_usb.h" +#include "nrf_drv_qspi.h" +#define PCA10056_PIN_RESET 24 +#define PCA10059_PIN_RESET 19 #endif + + +#if defined(APP_USBD_ENABLED) && APP_USBD_ENABLED +#include "app_usbd_serial_num.h" #include "app_usbd.h" static volatile bool m_usb_started; - static void usbd_user_evt_handler(app_usbd_event_type_t event) { switch (event) @@ -120,9 +131,6 @@ static void usbd_init(void) static void usbd_enable(void) { -#ifdef BOARD_PCA10059 - APP_ERROR_CHECK(nrf_dfu_trigger_usb_init()); -#endif APP_ERROR_CHECK(app_usbd_power_events_enable()); /* Process USB events until USB is started. This is related to the fact that @@ -138,6 +146,44 @@ static void usbd_enable(void) } #endif //APP_USBD_ENABLED + +typedef struct __attribute__((packed)) +{ + uint32_t magic_number; /* Magic number to verify the presence of this structure in memory */ + uint32_t struct_version : 8; /* Version of this struct format */ + uint32_t rfu0 : 24; /* Reserved for future use, shall be 0xFFFFFF */ + uint32_t revision_hash; /* Unique revision identifier */ + uint32_t version_major : 8; /* Major version number */ + uint32_t version_minor : 8; /* Minor version number */ + uint32_t version_patch : 8; /* Patch version number */ + uint32_t rfu1 : 8; /* Reserved for future use, shall be 0xFF */ + uint32_t sd_ble_api_version : 8; /* SoftDevice BLE API version number */ + uint32_t transport_type : 8; /* Connectivity transport type, 1 = UART HCI */ + uint32_t rfu2 : 16; /* Reserved for future use, shall be 0xFFFF */ + uint32_t baud_rate; /* UART transport baud rate */ +} version_info_t; +#if defined ( __CC_ARM ) +static const version_info_t version_info __attribute__((at(0x50000))) = +#elif defined ( __GNUC__ ) || defined ( __SES_ARM ) +volatile static const version_info_t version_info __attribute__ ((section(".connectivity_version_info"))) = +#elif defined ( __ICCARM__ ) +__root const version_info_t version_info @ 0x50000 = +#endif +{ + .magic_number = 0x46D8A517, + .struct_version = 2, + .rfu0 = 0xFFFFFF, + .revision_hash = 0, + .version_major = APP_VERSION_MAJOR, + .version_minor = APP_VERSION_MINOR, + .version_patch = APP_VERSION_PATCH, + .rfu1 = 0xFF, + .sd_ble_api_version = NRF_SD_BLE_API_VERSION, + .transport_type = 1, + .rfu2 = 0xFFFF, + .baud_rate = SER_PHY_UART_BAUDRATE_VAL, +}; + static void on_idle(void) { @@ -169,18 +215,64 @@ static void on_idle(void) #endif } +uint32_t timestamp(void) +{ + return DWT->CYCCNT; +} + +#if BOARD_DETECTION +void pin_to_default(uint8_t pin) +{ + if (pin != NRF_QSPI_PIN_NOT_CONNECTED) + { + nrf_gpio_cfg_default(pin); + } +} +#endif + /**@brief Main function of the connectivity application. */ int main(void) { + + + CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; + DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; + uint32_t err_code = NRF_SUCCESS; - APP_ERROR_CHECK(NRF_LOG_INIT(NULL)); + APP_ERROR_CHECK(NRF_LOG_INIT(timestamp, 64000000)); + NRF_LOG_DEFAULT_BACKENDS_INIT(); NRF_LOG_INFO("BLE connectivity started"); - bsp_board_init(BSP_INIT_LEDS); +#if BOARD_DETECTION + uint32_t pin_reset = PCA10059_PIN_RESET; + + nrf_drv_qspi_config_t config = NRF_DRV_QSPI_DEFAULT_CONFIG; + + //Using qspi memory to de + err_code = nrf_drv_qspi_init(&config, NULL, NULL); + if (err_code == NRF_SUCCESS) + { + //qspi memory is present on pca10056 + pin_reset = PCA10056_PIN_RESET; + nrf_drv_qspi_uninit(); + } + else if (err_code == NRF_ERROR_TIMEOUT) + { + //pca10059 assumed when no qspi memory + nrf_drv_qspi_uninit(); + pin_reset = PCA10059_PIN_RESET; + pin_to_default(config.pins.csn_pin); + pin_to_default(config.pins.io0_pin); + pin_to_default(config.pins.io1_pin); + pin_to_default(config.pins.io2_pin); + pin_to_default(config.pins.io3_pin); + pin_to_default(config.pins.sck_pin); + } +#endif //BOARD_DETECTION #if (defined(SER_PHY_HCI_DEBUG_ENABLE) || defined(SER_PHY_DEBUG_APP_ENABLE)) debug_init(NULL); @@ -206,6 +298,8 @@ int main(void) } nrf_drv_clock_hfclk_request(NULL); + nrf_drv_clock_lfclk_request(NULL); + while (!nrf_drv_clock_hfclk_is_running()) {} @@ -213,6 +307,10 @@ int main(void) usbd_init(); #endif +#if BOARD_DETECTION + APP_ERROR_CHECK(nrf_dfu_trigger_usb_init(pin_reset)); +#endif + /* Open serialization HAL Transport layer and subscribe for HAL Transport events. */ err_code = ser_hal_transport_open(ser_conn_hal_transport_event_handle); APP_ERROR_CHECK(err_code); @@ -234,6 +332,8 @@ int main(void) { /* Process SoftDevice events. */ app_sched_execute(); + + CRITICAL_REGION_ENTER(); if (nrf_sdh_is_suspended()) { // Resume pulling new events if queue utilization drops below 50%. @@ -242,6 +342,7 @@ int main(void) nrf_sdh_resume(); } } + CRITICAL_REGION_EXIT(); /* Process received packets. * We can NOT add received packets as events to the application scheduler queue because @@ -251,6 +352,7 @@ int main(void) APP_ERROR_CHECK(err_code); on_idle(); + } } /** @} */ diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/armgcc/ble_connectivity_gcc_nrf52.ld index 23cc72c..a13057f 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -6,11 +6,19 @@ GROUP(-lgcc -lc -lnosys) MEMORY { FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0x5a000 - RAM (rwx) : ORIGIN = 0x2000a8a8, LENGTH = 0x5758 + RAM (rwx) : ORIGIN = 0x2000ab20, LENGTH = 0x54e0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -69,12 +77,6 @@ SECTIONS KEEP(*(.nrf_balloc)) PROVIDE(__stop_nrf_balloc = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -87,6 +89,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/config/sdk_config.h index 4d23f3d..5d0b942 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -525,6 +592,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer //========================================================== #ifndef UART_ENABLED @@ -4211,132 +4408,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/ses/ble_connectivity_s132_hci_pca10040.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/ses/ble_connectivity_s132_hci_pca10040.emProject index 39e7ab4..bed5fb7 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/ses/ble_connectivity_s132_hci_pca10040.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/ses/ble_connectivity_s132_hci_pca10040.emProject @@ -28,8 +28,8 @@ linker_printf_fmt_level="long" linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" - linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x80000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x10000;FLASH_START=0x26000;FLASH_SIZE=0x5a000;RAM_START=0x2000a8a8;RAM_SIZE=0x5758" - linker_section_placements_segments="FLASH RX 0x0 0x80000;RAM RWX 0x20000000 0x10000" + linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x80000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x10000;FLASH_START=0x26000;FLASH_SIZE=0x5a000;RAM_START=0x2000ab20;RAM_SIZE=0x54e0" + linker_section_placements_segments="FLASH RX 0x0 0x80000;RAM RWX 0x20000000 0x10000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/ses/flash_placement.xml index b5fb146..c9cc513 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_hci/ses/flash_placement.xml @@ -11,9 +11,9 @@ - + @@ -43,4 +43,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/armgcc/ble_connectivity_gcc_nrf52.ld index f1005bf..9422cfd 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/armgcc/ble_connectivity_gcc_nrf52.ld @@ -6,11 +6,19 @@ GROUP(-lgcc -lc -lnosys) MEMORY { FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0x5a000 - RAM (rwx) : ORIGIN = 0x2000a8a8, LENGTH = 0x5758 + RAM (rwx) : ORIGIN = 0x2000ab20, LENGTH = 0x54e0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/config/sdk_config.h index 85e128c..08ccec3 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -754,6 +821,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // SPIS_ENABLED - nrf_drv_spis - SPIS peripheral driver - legacy layer //========================================================== #ifndef SPIS_ENABLED @@ -4512,132 +4709,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/ses/ble_connectivity_s132_spi_pca10040.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/ses/ble_connectivity_s132_spi_pca10040.emProject index f74b6b8..ce77077 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/ses/ble_connectivity_s132_spi_pca10040.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/ses/ble_connectivity_s132_spi_pca10040.emProject @@ -28,8 +28,8 @@ linker_printf_fmt_level="long" linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" - linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x80000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x10000;FLASH_START=0x26000;FLASH_SIZE=0x5a000;RAM_START=0x2000a8a8;RAM_SIZE=0x5758" - linker_section_placements_segments="FLASH RX 0x0 0x80000;RAM RWX 0x20000000 0x10000" + linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x80000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x10000;FLASH_START=0x26000;FLASH_SIZE=0x5a000;RAM_START=0x2000ab20;RAM_SIZE=0x54e0" + linker_section_placements_segments="FLASH RX 0x0 0x80000;RAM RWX 0x20000000 0x10000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld index f1005bf..9422cfd 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld @@ -6,11 +6,19 @@ GROUP(-lgcc -lc -lnosys) MEMORY { FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0x5a000 - RAM (rwx) : ORIGIN = 0x2000a8a8, LENGTH = 0x5758 + RAM (rwx) : ORIGIN = 0x2000ab20, LENGTH = 0x54e0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/config/sdk_config.h index 85e128c..08ccec3 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -754,6 +821,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // SPIS_ENABLED - nrf_drv_spis - SPIS peripheral driver - legacy layer //========================================================== #ifndef SPIS_ENABLED @@ -4512,132 +4709,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/ses/ble_connectivity_s132_spi_5W_pca10040.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/ses/ble_connectivity_s132_spi_5W_pca10040.emProject index d666cf1..a1a6bfd 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/ses/ble_connectivity_s132_spi_5W_pca10040.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/ses/ble_connectivity_s132_spi_5W_pca10040.emProject @@ -28,8 +28,8 @@ linker_printf_fmt_level="long" linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" - linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x80000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x10000;FLASH_START=0x26000;FLASH_SIZE=0x5a000;RAM_START=0x2000a8a8;RAM_SIZE=0x5758" - linker_section_placements_segments="FLASH RX 0x0 0x80000;RAM RWX 0x20000000 0x10000" + linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x80000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x10000;FLASH_START=0x26000;FLASH_SIZE=0x5a000;RAM_START=0x2000ab20;RAM_SIZE=0x54e0" + linker_section_placements_segments="FLASH RX 0x0 0x80000;RAM RWX 0x20000000 0x10000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_spi_5W/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/armgcc/ble_connectivity_gcc_nrf52.ld index f1005bf..9422cfd 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/armgcc/ble_connectivity_gcc_nrf52.ld @@ -6,11 +6,19 @@ GROUP(-lgcc -lc -lnosys) MEMORY { FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0x5a000 - RAM (rwx) : ORIGIN = 0x2000a8a8, LENGTH = 0x5758 + RAM (rwx) : ORIGIN = 0x2000ab20, LENGTH = 0x54e0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/config/sdk_config.h index 47ce06d..d3f8ca2 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -525,6 +592,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer //========================================================== #ifndef UART_ENABLED @@ -4190,132 +4387,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/ses/ble_connectivity_s132_uart_pca10040.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/ses/ble_connectivity_s132_uart_pca10040.emProject index 7e8f8b1..8fec0fa 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/ses/ble_connectivity_s132_uart_pca10040.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/ses/ble_connectivity_s132_uart_pca10040.emProject @@ -28,8 +28,8 @@ linker_printf_fmt_level="long" linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" - linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x80000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x10000;FLASH_START=0x26000;FLASH_SIZE=0x5a000;RAM_START=0x2000a8a8;RAM_SIZE=0x5758" - linker_section_placements_segments="FLASH RX 0x0 0x80000;RAM RWX 0x20000000 0x10000" + linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x80000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x10000;FLASH_START=0x26000;FLASH_SIZE=0x5a000;RAM_START=0x2000ab20;RAM_SIZE=0x54e0" + linker_section_placements_segments="FLASH RX 0x0 0x80000;RAM RWX 0x20000000 0x10000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132_uart/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/armgcc/Makefile new file mode 100644 index 0000000..3742d7f --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/armgcc/Makefile @@ -0,0 +1,272 @@ +PROJECT_NAME := ble_connectivity_132v3_hci_pca10040 +TARGETS := nrf52832_xxaa +OUTPUT_DIRECTORY := _build + +SDK_ROOT := ../../../../../.. +PROJ_DIR := ../../.. + +$(OUTPUT_DIRECTORY)/nrf52832_xxaa.out: \ + LINKER_SCRIPT := ble_connectivity_gcc_nrf52.ld + +# Source files common to all targets +SRC_FILES += \ + $(SDK_ROOT)/modules/nrfx/mdk/gcc_startup_nrf52.S \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_rtt.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_serial.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_uart.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_default_backends.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_frontend.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_str_formatter.c \ + $(SDK_ROOT)/components/libraries/util/app_error.c \ + $(SDK_ROOT)/components/libraries/util/app_error_handler_gcc.c \ + $(SDK_ROOT)/components/libraries/util/app_error_weak.c \ + $(SDK_ROOT)/components/libraries/scheduler/app_scheduler.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/app_timer2.c \ + $(SDK_ROOT)/components/libraries/util/app_util_platform.c \ + $(SDK_ROOT)/components/libraries/crc16/crc16.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/drv_rtc.c \ + $(SDK_ROOT)/components/libraries/util/nrf_assert.c \ + $(SDK_ROOT)/components/libraries/atomic_fifo/nrf_atfifo.c \ + $(SDK_ROOT)/components/libraries/atomic/nrf_atomic.c \ + $(SDK_ROOT)/components/libraries/balloc/nrf_balloc.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf_format.c \ + $(SDK_ROOT)/components/libraries/memobj/nrf_memobj.c \ + $(SDK_ROOT)/components/libraries/queue/nrf_queue.c \ + $(SDK_ROOT)/components/libraries/ringbuf/nrf_ringbuf.c \ + $(SDK_ROOT)/components/libraries/experimental_section_vars/nrf_section_iter.c \ + $(SDK_ROOT)/components/libraries/sortlist/nrf_sortlist.c \ + $(SDK_ROOT)/components/libraries/strerror/nrf_strerror.c \ + $(SDK_ROOT)/modules/nrfx/mdk/system_nrf52.c \ + $(SDK_ROOT)/components/boards/boards.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/ble_dtm_init.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_event_enc.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_evt_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gap_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gap_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gatt_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gattc_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gattc_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gattc_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gatts_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gatts_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gatts_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_l2cap_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_l2cap_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_l2cap_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/ble_serialization.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/cond_field_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_gap_sec_keys.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_l2cap_sdu_pool.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_user_mem.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/conn_mw.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gap.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gattc.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gatts.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_l2cap.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/conn_mw_nrf_soc.c \ + $(SDK_ROOT)/components/serialization/connectivity/hal/dtm_uart.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/nrf_soc_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/nrf_soc_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_dtm_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_error_handling.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_event_encoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_handlers.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_pkt_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_reset_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/common/ser_dbg_sd_str.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_hal_transport.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/ser_phy_hci.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/ser_phy_hci_slip.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_clock.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_uart.c \ + $(SDK_ROOT)/modules/nrfx/soc/nrfx_atomic.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ + $(PROJ_DIR)/main.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_printf.c \ + $(SDK_ROOT)/components/ble/common/ble_advdata.c \ + $(SDK_ROOT)/components/ble/ble_dtm/ble_dtm.c \ + $(SDK_ROOT)/components/ble/ble_dtm/ble_dtm_hw_nrf52.c \ + $(SDK_ROOT)/components/ble/common/ble_srv_common.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh_ble.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh_soc.c \ + +# Include folders common to all targets +INC_FOLDERS += \ + $(SDK_ROOT)/components \ + $(SDK_ROOT)/components/serialization/connectivity/hal \ + $(SDK_ROOT)/modules/nrfx/mdk \ + $(SDK_ROOT)/components/libraries/scheduler \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers \ + $(SDK_ROOT)/components/toolchain/cmsis/include \ + $(SDK_ROOT)/components/libraries/queue \ + $(SDK_ROOT)/components/libraries/timer \ + $(SDK_ROOT)/components/boards \ + $(SDK_ROOT)/components/serialization/connectivity \ + $(SDK_ROOT)/components/libraries/strerror \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware \ + $(SDK_ROOT)/components/libraries/crc16 \ + $(SDK_ROOT)/components/ble/ble_dtm \ + $(SDK_ROOT)/components/serialization/common \ + $(SDK_ROOT)/components/libraries/util \ + ../config \ + $(SDK_ROOT)/components/ble/common \ + $(SDK_ROOT)/integration/nrfx \ + $(SDK_ROOT)/components/libraries/balloc \ + $(SDK_ROOT)/components/libraries/ringbuf \ + $(SDK_ROOT)/modules/nrfx/hal \ + $(SDK_ROOT)/components/libraries/bsp \ + $(SDK_ROOT)/components/softdevice/s132v3/headers/nrf52 \ + $(SDK_ROOT)/components/libraries/log \ + $(SDK_ROOT)/modules/nrfx \ + $(SDK_ROOT)/components/libraries/experimental_section_vars \ + $(SDK_ROOT)/integration/nrfx/legacy \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common \ + $(SDK_ROOT)/components/libraries/delay \ + $(SDK_ROOT)/external/segger_rtt \ + $(SDK_ROOT)/components/libraries/atomic_fifo \ + $(SDK_ROOT)/components/libraries/atomic \ + $(SDK_ROOT)/components/libraries/sortlist \ + $(SDK_ROOT)/components/libraries/memobj \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble \ + $(SDK_ROOT)/components/softdevice/s132v3/headers \ + $(SDK_ROOT)/components/serialization/common/transport \ + $(SDK_ROOT)/components/libraries/timer/experimental \ + $(SDK_ROOT)/components/softdevice/common \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/config \ + $(SDK_ROOT)/modules/nrfx/drivers/include \ + $(SDK_ROOT)/external/fprintf \ + $(SDK_ROOT)/components/libraries/log/src \ + +# Libraries common to all targets +LIB_FILES += \ + +# Optimization flags +OPT = -Os -g3 +# Uncomment the line below to enable link time optimization +#OPT += -flto + +# C flags common to all targets +CFLAGS += $(OPT) +CFLAGS += -DAPP_TIMER_V2 +CFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +CFLAGS += -DBLE_STACK_SUPPORT_REQD +CFLAGS += -DBOARD_PCA10040 +CFLAGS += -DBSP_DEFINES_ONLY +CFLAGS += -DCONFIG_GPIO_AS_PINRESET +CFLAGS += -DFLOAT_ABI_HARD +CFLAGS += -DHCI_TIMER2 +CFLAGS += -DNRF52 +CFLAGS += -DNRF52832_XXAA +CFLAGS += -DNRF52_PAN_74 +CFLAGS += -DNRF_SD_BLE_API_VERSION=3 +CFLAGS += -DS132 +CFLAGS += -DSER_CONNECTIVITY +CFLAGS += -DSER_PHY_HCI +CFLAGS += -DSOFTDEVICE_PRESENT +CFLAGS += -mcpu=cortex-m4 +CFLAGS += -mthumb -mabi=aapcs +CFLAGS += -Wall -Werror +CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# keep every function in a separate section, this allows linker to discard unused ones +CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing +CFLAGS += -fno-builtin -fshort-enums + +# C++ flags common to all targets +CXXFLAGS += $(OPT) + +# Assembler flags common to all targets +ASMFLAGS += -g3 +ASMFLAGS += -mcpu=cortex-m4 +ASMFLAGS += -mthumb -mabi=aapcs +ASMFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +ASMFLAGS += -DAPP_TIMER_V2 +ASMFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +ASMFLAGS += -DBLE_STACK_SUPPORT_REQD +ASMFLAGS += -DBOARD_PCA10040 +ASMFLAGS += -DBSP_DEFINES_ONLY +ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET +ASMFLAGS += -DFLOAT_ABI_HARD +ASMFLAGS += -DHCI_TIMER2 +ASMFLAGS += -DNRF52 +ASMFLAGS += -DNRF52832_XXAA +ASMFLAGS += -DNRF52_PAN_74 +ASMFLAGS += -DNRF_SD_BLE_API_VERSION=3 +ASMFLAGS += -DS132 +ASMFLAGS += -DSER_CONNECTIVITY +ASMFLAGS += -DSER_PHY_HCI +ASMFLAGS += -DSOFTDEVICE_PRESENT + +# Linker flags +LDFLAGS += $(OPT) +LDFLAGS += -mthumb -mabi=aapcs -L$(SDK_ROOT)/modules/nrfx/mdk -T$(LINKER_SCRIPT) +LDFLAGS += -mcpu=cortex-m4 +LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# let linker dump unused sections +LDFLAGS += -Wl,--gc-sections +# use newlib in nano version +LDFLAGS += --specs=nano.specs + +nrf52832_xxaa: CFLAGS += -D__HEAP_SIZE=512 +nrf52832_xxaa: CFLAGS += -D__STACK_SIZE=2048 +nrf52832_xxaa: ASMFLAGS += -D__HEAP_SIZE=512 +nrf52832_xxaa: ASMFLAGS += -D__STACK_SIZE=2048 + +# Add standard libraries at the very end of the linker input, after all objects +# that may need symbols provided by these libraries. +LIB_FILES += -lc -lnosys -lm + + +.PHONY: default help + +# Default target - first one defined +default: nrf52832_xxaa + +# Print all targets that can be built +help: + @echo following targets are available: + @echo nrf52832_xxaa + @echo flash_softdevice + @echo sdk_config - starting external tool for editing sdk_config.h + @echo flash - flashing binary + +TEMPLATE_PATH := $(SDK_ROOT)/components/toolchain/gcc + + +include $(TEMPLATE_PATH)/Makefile.common + +$(foreach target, $(TARGETS), $(call define_target, $(target))) + +.PHONY: flash flash_softdevice erase + +# Flash the program +flash: default + @echo Flashing: $(OUTPUT_DIRECTORY)/nrf52832_xxaa.hex + nrfjprog -f nrf52 --program $(OUTPUT_DIRECTORY)/nrf52832_xxaa.hex --sectorerase + nrfjprog -f nrf52 --reset + +# Flash softdevice +flash_softdevice: + @echo Flashing: s132_nrf52_3.0.0_softdevice.hex + nrfjprog -f nrf52 --program $(SDK_ROOT)/components/softdevice/s132v3/hex/s132_nrf52_3.0.0_softdevice.hex --sectorerase + nrfjprog -f nrf52 --reset + +erase: + nrfjprog -f nrf52 --eraseall + +SDK_CONFIG_FILE := ../config/sdk_config.h +CMSIS_CONFIG_TOOL := $(SDK_ROOT)/external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar +sdk_config: + java -jar $(CMSIS_CONFIG_TOOL) $(SDK_CONFIG_FILE) diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/armgcc/ble_connectivity_gcc_nrf52.ld new file mode 100644 index 0000000..cb83152 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -0,0 +1,108 @@ +/* Linker script to configure memory regions. */ + +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x1f000, LENGTH = 0x61000 + RAM (rwx) : ORIGIN = 0x2000ac38, LENGTH = 0x53c8 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 +} + +SECTIONS +{ + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info +} + +SECTIONS +{ + . = ALIGN(4); + .mem_section_dummy_ram : + { + } + .log_dynamic_data : + { + PROVIDE(__start_log_dynamic_data = .); + KEEP(*(SORT(.log_dynamic_data*))) + PROVIDE(__stop_log_dynamic_data = .); + } > RAM + .log_filter_data : + { + PROVIDE(__start_log_filter_data = .); + KEEP(*(SORT(.log_filter_data*))) + PROVIDE(__stop_log_filter_data = .); + } > RAM + +} INSERT AFTER .data; + +SECTIONS +{ + .mem_section_dummy_rom : + { + } + .sdh_ble_observers : + { + PROVIDE(__start_sdh_ble_observers = .); + KEEP(*(SORT(.sdh_ble_observers*))) + PROVIDE(__stop_sdh_ble_observers = .); + } > FLASH + .sdh_soc_observers : + { + PROVIDE(__start_sdh_soc_observers = .); + KEEP(*(SORT(.sdh_soc_observers*))) + PROVIDE(__stop_sdh_soc_observers = .); + } > FLASH + .nrf_queue : + { + PROVIDE(__start_nrf_queue = .); + KEEP(*(.nrf_queue)) + PROVIDE(__stop_nrf_queue = .); + } > FLASH + .log_const_data : + { + PROVIDE(__start_log_const_data = .); + KEEP(*(SORT(.log_const_data*))) + PROVIDE(__stop_log_const_data = .); + } > FLASH + .nrf_balloc : + { + PROVIDE(__start_nrf_balloc = .); + KEEP(*(.nrf_balloc)) + PROVIDE(__stop_nrf_balloc = .); + } > FLASH + .sdh_state_observers : + { + PROVIDE(__start_sdh_state_observers = .); + KEEP(*(SORT(.sdh_state_observers*))) + PROVIDE(__stop_sdh_state_observers = .); + } > FLASH + .sdh_stack_observers : + { + PROVIDE(__start_sdh_stack_observers = .); + KEEP(*(SORT(.sdh_stack_observers*))) + PROVIDE(__stop_sdh_stack_observers = .); + } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH + .log_backends : + { + PROVIDE(__start_log_backends = .); + KEEP(*(SORT(.log_backends*))) + PROVIDE(__stop_log_backends = .); + } > FLASH + +} INSERT AFTER .text + + +INCLUDE "nrf_common.ld" diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/config/sdk_config.h new file mode 100644 index 0000000..5d0b942 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/config/sdk_config.h @@ -0,0 +1,4703 @@ +/** + * Copyright (c) 2017 - 2019, 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. + * + */ + + + +#ifndef SDK_CONFIG_H +#define SDK_CONFIG_H +// <<< Use Configuration Wizard in Context Menu >>>\n +#ifdef USE_APP_CONFIG +#include "app_config.h" +#endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + +// nRF_BLE + +//========================================================== +// BLE_DTM_ENABLED - ble_dtm - Module for testing RF/PHY using DTM commands + + +#ifndef BLE_DTM_ENABLED +#define BLE_DTM_ENABLED 1 +#endif + +// +//========================================================== + +// nRF_Drivers + +//========================================================== +// NRFX_CLOCK_ENABLED - nrfx_clock - CLOCK peripheral driver +//========================================================== +#ifndef NRFX_CLOCK_ENABLED +#define NRFX_CLOCK_ENABLED 1 +#endif +// NRFX_CLOCK_CONFIG_LF_SRC - LF Clock Source + +// <0=> RC +// <1=> XTAL +// <2=> Synth +// <131073=> External Low Swing +// <196609=> External Full Swing + +#ifndef NRFX_CLOCK_CONFIG_LF_SRC +#define NRFX_CLOCK_CONFIG_LF_SRC 1 +#endif + +// NRFX_CLOCK_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_CLOCK_CONFIG_IRQ_PRIORITY +#define NRFX_CLOCK_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_CLOCK_CONFIG_LOG_ENABLED +#define NRFX_CLOCK_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_CLOCK_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_CLOCK_CONFIG_LOG_LEVEL +#define NRFX_CLOCK_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_CLOCK_CONFIG_INFO_COLOR +#define NRFX_CLOCK_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_CLOCK_CONFIG_DEBUG_COLOR +#define NRFX_CLOCK_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_PRS_ENABLED - nrfx_prs - Peripheral Resource Sharing module +//========================================================== +#ifndef NRFX_PRS_ENABLED +#define NRFX_PRS_ENABLED 1 +#endif +// NRFX_PRS_BOX_0_ENABLED - Enables box 0 in the module. + + +#ifndef NRFX_PRS_BOX_0_ENABLED +#define NRFX_PRS_BOX_0_ENABLED 0 +#endif + +// NRFX_PRS_BOX_1_ENABLED - Enables box 1 in the module. + + +#ifndef NRFX_PRS_BOX_1_ENABLED +#define NRFX_PRS_BOX_1_ENABLED 0 +#endif + +// NRFX_PRS_BOX_2_ENABLED - Enables box 2 in the module. + + +#ifndef NRFX_PRS_BOX_2_ENABLED +#define NRFX_PRS_BOX_2_ENABLED 0 +#endif + +// NRFX_PRS_BOX_3_ENABLED - Enables box 3 in the module. + + +#ifndef NRFX_PRS_BOX_3_ENABLED +#define NRFX_PRS_BOX_3_ENABLED 0 +#endif + +// NRFX_PRS_BOX_4_ENABLED - Enables box 4 in the module. + + +#ifndef NRFX_PRS_BOX_4_ENABLED +#define NRFX_PRS_BOX_4_ENABLED 1 +#endif + +// NRFX_PRS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_PRS_CONFIG_LOG_ENABLED +#define NRFX_PRS_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_PRS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_PRS_CONFIG_LOG_LEVEL +#define NRFX_PRS_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_PRS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_PRS_CONFIG_INFO_COLOR +#define NRFX_PRS_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_PRS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_PRS_CONFIG_DEBUG_COLOR +#define NRFX_PRS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_UARTE_ENABLED - nrfx_uarte - UARTE peripheral driver +//========================================================== +#ifndef NRFX_UARTE_ENABLED +#define NRFX_UARTE_ENABLED 1 +#endif +// NRFX_UARTE0_ENABLED - Enable UARTE0 instance +#ifndef NRFX_UARTE0_ENABLED +#define NRFX_UARTE0_ENABLED 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_HWFC +#define NRFX_UARTE_DEFAULT_CONFIG_HWFC 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_PARITY +#define NRFX_UARTE_DEFAULT_CONFIG_PARITY 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <8388608=> 31250 baud +// <10289152=> 38400 baud +// <15007744=> 56000 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE +#define NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE 30801920 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY +#define NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_UARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_UARTE_CONFIG_LOG_ENABLED +#define NRFX_UARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_UARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_UARTE_CONFIG_LOG_LEVEL +#define NRFX_UARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_UARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UARTE_CONFIG_INFO_COLOR +#define NRFX_UARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_UARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UARTE_CONFIG_DEBUG_COLOR +#define NRFX_UARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_UART_ENABLED - nrfx_uart - UART peripheral driver +//========================================================== +#ifndef NRFX_UART_ENABLED +#define NRFX_UART_ENABLED 1 +#endif +// NRFX_UART0_ENABLED - Enable UART0 instance +#ifndef NRFX_UART0_ENABLED +#define NRFX_UART0_ENABLED 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef NRFX_UART_DEFAULT_CONFIG_HWFC +#define NRFX_UART_DEFAULT_CONFIG_HWFC 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef NRFX_UART_DEFAULT_CONFIG_PARITY +#define NRFX_UART_DEFAULT_CONFIG_PARITY 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3866624=> 14400 baud +// <5152768=> 19200 baud +// <7729152=> 28800 baud +// <8388608=> 31250 baud +// <10309632=> 38400 baud +// <15007744=> 56000 baud +// <15462400=> 57600 baud +// <20615168=> 76800 baud +// <30924800=> 115200 baud +// <61845504=> 230400 baud +// <67108864=> 250000 baud +// <123695104=> 460800 baud +// <247386112=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRFX_UART_DEFAULT_CONFIG_BAUDRATE +#define NRFX_UART_DEFAULT_CONFIG_BAUDRATE 30924800 +#endif + +// NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY +#define NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_UART_CONFIG_LOG_ENABLED +#define NRFX_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_UART_CONFIG_LOG_LEVEL +#define NRFX_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UART_CONFIG_INFO_COLOR +#define NRFX_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UART_CONFIG_DEBUG_COLOR +#define NRFX_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRF_CLOCK_ENABLED - nrf_drv_clock - CLOCK peripheral driver - legacy layer +//========================================================== +#ifndef NRF_CLOCK_ENABLED +#define NRF_CLOCK_ENABLED 1 +#endif +// CLOCK_CONFIG_LF_SRC - LF Clock Source + +// <0=> RC +// <1=> XTAL +// <2=> Synth +// <131073=> External Low Swing +// <196609=> External Full Swing + +#ifndef CLOCK_CONFIG_LF_SRC +#define CLOCK_CONFIG_LF_SRC 1 +#endif + +// CLOCK_CONFIG_LF_CAL_ENABLED - Calibration enable for LF Clock Source + + +#ifndef CLOCK_CONFIG_LF_CAL_ENABLED +#define CLOCK_CONFIG_LF_CAL_ENABLED 0 +#endif + +// CLOCK_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef CLOCK_CONFIG_IRQ_PRIORITY +#define CLOCK_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer +//========================================================== +#ifndef UART_ENABLED +#define UART_ENABLED 1 +#endif +// UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef UART_DEFAULT_CONFIG_HWFC +#define UART_DEFAULT_CONFIG_HWFC 0 +#endif + +// UART_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef UART_DEFAULT_CONFIG_PARITY +#define UART_DEFAULT_CONFIG_PARITY 0 +#endif + +// UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <10289152=> 38400 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef UART_DEFAULT_CONFIG_BAUDRATE +#define UART_DEFAULT_CONFIG_BAUDRATE 30801920 +#endif + +// UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef UART_DEFAULT_CONFIG_IRQ_PRIORITY +#define UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// UART_EASY_DMA_SUPPORT - Driver supporting EasyDMA + + +#ifndef UART_EASY_DMA_SUPPORT +#define UART_EASY_DMA_SUPPORT 1 +#endif + +// UART_LEGACY_SUPPORT - Driver supporting Legacy mode + + +#ifndef UART_LEGACY_SUPPORT +#define UART_LEGACY_SUPPORT 1 +#endif + +// UART0_ENABLED - Enable UART0 instance +//========================================================== +#ifndef UART0_ENABLED +#define UART0_ENABLED 1 +#endif +// UART0_CONFIG_USE_EASY_DMA - Default setting for using EasyDMA + + +#ifndef UART0_CONFIG_USE_EASY_DMA +#define UART0_CONFIG_USE_EASY_DMA 1 +#endif + +// + +// + +// +//========================================================== + +// nRF_Libraries + +//========================================================== +// APP_SCHEDULER_ENABLED - app_scheduler - Events scheduler +//========================================================== +#ifndef APP_SCHEDULER_ENABLED +#define APP_SCHEDULER_ENABLED 1 +#endif +// APP_SCHEDULER_WITH_PAUSE - Enabling pause feature + + +#ifndef APP_SCHEDULER_WITH_PAUSE +#define APP_SCHEDULER_WITH_PAUSE 1 +#endif + +// APP_SCHEDULER_WITH_PROFILER - Enabling scheduler profiling + + +#ifndef APP_SCHEDULER_WITH_PROFILER +#define APP_SCHEDULER_WITH_PROFILER 1 +#endif + +// + +// APP_TIMER_ENABLED - app_timer - Application timer functionality +//========================================================== +#ifndef APP_TIMER_ENABLED +#define APP_TIMER_ENABLED 1 +#endif +// APP_TIMER_CONFIG_RTC_FREQUENCY - Configure RTC prescaler. + +// <0=> 32768 Hz +// <1=> 16384 Hz +// <3=> 8192 Hz +// <7=> 4096 Hz +// <15=> 2048 Hz +// <31=> 1024 Hz + +#ifndef APP_TIMER_CONFIG_RTC_FREQUENCY +#define APP_TIMER_CONFIG_RTC_FREQUENCY 1 +#endif + +// APP_TIMER_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef APP_TIMER_CONFIG_IRQ_PRIORITY +#define APP_TIMER_CONFIG_IRQ_PRIORITY 6 +#endif + +// APP_TIMER_CONFIG_OP_QUEUE_SIZE - Capacity of timer requests queue. +// Size of the queue depends on how many timers are used +// in the system, how often timers are started and overall +// system latency. If queue size is too small app_timer calls +// will fail. + +#ifndef APP_TIMER_CONFIG_OP_QUEUE_SIZE +#define APP_TIMER_CONFIG_OP_QUEUE_SIZE 10 +#endif + +// APP_TIMER_CONFIG_USE_SCHEDULER - Enable scheduling app_timer events to app_scheduler + + +#ifndef APP_TIMER_CONFIG_USE_SCHEDULER +#define APP_TIMER_CONFIG_USE_SCHEDULER 0 +#endif + +// APP_TIMER_KEEPS_RTC_ACTIVE - Enable RTC always on + + +// If option is enabled RTC is kept running even if there is no active timers. +// This option can be used when app_timer is used for timestamping. + +#ifndef APP_TIMER_KEEPS_RTC_ACTIVE +#define APP_TIMER_KEEPS_RTC_ACTIVE 0 +#endif + +// APP_TIMER_SAFE_WINDOW_MS - Maximum possible latency (in milliseconds) of handling app_timer event. +// Maximum possible timeout that can be set is reduced by safe window. +// Example: RTC frequency 16384 Hz, maximum possible timeout 1024 seconds - APP_TIMER_SAFE_WINDOW_MS. +// Since RTC is not stopped when processor is halted in debugging session, this value +// must cover it if debugging is needed. It is possible to halt processor for APP_TIMER_SAFE_WINDOW_MS +// without corrupting app_timer behavior. + +#ifndef APP_TIMER_SAFE_WINDOW_MS +#define APP_TIMER_SAFE_WINDOW_MS 300000 +#endif + +// App Timer Legacy configuration - Legacy configuration. + +//========================================================== +// APP_TIMER_WITH_PROFILER - Enable app_timer profiling + + +#ifndef APP_TIMER_WITH_PROFILER +#define APP_TIMER_WITH_PROFILER 0 +#endif + +// APP_TIMER_CONFIG_SWI_NUMBER - Configure SWI instance used. + + +#ifndef APP_TIMER_CONFIG_SWI_NUMBER +#define APP_TIMER_CONFIG_SWI_NUMBER 0 +#endif + +// +//========================================================== + +// + +// CRC16_ENABLED - crc16 - CRC16 calculation routines + + +#ifndef CRC16_ENABLED +#define CRC16_ENABLED 1 +#endif + +// NRF_BALLOC_ENABLED - nrf_balloc - Block allocator module +//========================================================== +#ifndef NRF_BALLOC_ENABLED +#define NRF_BALLOC_ENABLED 1 +#endif +// NRF_BALLOC_CONFIG_DEBUG_ENABLED - Enables debug mode in the module. +//========================================================== +#ifndef NRF_BALLOC_CONFIG_DEBUG_ENABLED +#define NRF_BALLOC_CONFIG_DEBUG_ENABLED 0 +#endif +// NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS - Number of words used as head guard. <0-255> + + +#ifndef NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS +#define NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS 1 +#endif + +// NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS - Number of words used as tail guard. <0-255> + + +#ifndef NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS +#define NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS 1 +#endif + +// NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED - Enables basic checks in this module. + + +#ifndef NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED +#define NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED 0 +#endif + +// NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED - Enables double memory free check in this module. + + +#ifndef NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED +#define NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED 0 +#endif + +// NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED - Enables free memory corruption check in this module. + + +#ifndef NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED +#define NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED 0 +#endif + +// NRF_BALLOC_CLI_CMDS - Enable CLI commands specific to the module + + +#ifndef NRF_BALLOC_CLI_CMDS +#define NRF_BALLOC_CLI_CMDS 0 +#endif + +// + +// + +// NRF_MEMOBJ_ENABLED - nrf_memobj - Linked memory allocator module + + +#ifndef NRF_MEMOBJ_ENABLED +#define NRF_MEMOBJ_ENABLED 1 +#endif + +// NRF_QUEUE_ENABLED - nrf_queue - Queue module +//========================================================== +#ifndef NRF_QUEUE_ENABLED +#define NRF_QUEUE_ENABLED 1 +#endif +// NRF_QUEUE_CLI_CMDS - Enable CLI commands specific to the module + + +#ifndef NRF_QUEUE_CLI_CMDS +#define NRF_QUEUE_CLI_CMDS 0 +#endif + +// + +// NRF_SECTION_ITER_ENABLED - nrf_section_iter - Section iterator + + +#ifndef NRF_SECTION_ITER_ENABLED +#define NRF_SECTION_ITER_ENABLED 1 +#endif + +// NRF_SORTLIST_ENABLED - nrf_sortlist - Sorted list + + +#ifndef NRF_SORTLIST_ENABLED +#define NRF_SORTLIST_ENABLED 1 +#endif + +// NRF_STRERROR_ENABLED - nrf_strerror - Library for converting error code to string. + + +#ifndef NRF_STRERROR_ENABLED +#define NRF_STRERROR_ENABLED 1 +#endif + +// nrf_fprintf - fprintf function. + +//========================================================== +// NRF_FPRINTF_ENABLED - Enable/disable fprintf module. + + +#ifndef NRF_FPRINTF_ENABLED +#define NRF_FPRINTF_ENABLED 1 +#endif + +// NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED - For each printed LF, function will add CR. + + +#ifndef NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED +#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 1 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_Log + +//========================================================== +// NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend +//========================================================== +#ifndef NRF_LOG_BACKEND_RTT_ENABLED +#define NRF_LOG_BACKEND_RTT_ENABLED 0 +#endif +// NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. +// Size of the buffer is a trade-off between RAM usage and processing. +// if buffer is smaller then strings will often be fragmented. +// It is recommended to use size which will fit typical log and only the +// longer one will be fragmented. + +#ifndef NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE +#define NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE 64 +#endif + +// NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS - Period before retrying writing to RTT +#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS +#define NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS 1 +#endif + +// NRF_LOG_BACKEND_RTT_TX_RETRY_CNT - Writing to RTT retries. +// If RTT fails to accept any new data after retries +// module assumes that host is not active and on next +// request it will perform only one write attempt. +// On successful writing, module assumes that host is active +// and scheme with retry is applied again. + +#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_CNT +#define NRF_LOG_BACKEND_RTT_TX_RETRY_CNT 3 +#endif + +// + +// NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend +//========================================================== +#ifndef NRF_LOG_BACKEND_UART_ENABLED +#define NRF_LOG_BACKEND_UART_ENABLED 0 +#endif +// NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin +#ifndef NRF_LOG_BACKEND_UART_TX_PIN +#define NRF_LOG_BACKEND_UART_TX_PIN 6 +#endif + +// NRF_LOG_BACKEND_UART_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <10289152=> 38400 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRF_LOG_BACKEND_UART_BAUDRATE +#define NRF_LOG_BACKEND_UART_BAUDRATE 30801920 +#endif + +// NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. +// Size of the buffer is a trade-off between RAM usage and processing. +// if buffer is smaller then strings will often be fragmented. +// It is recommended to use size which will fit typical log and only the +// longer one will be fragmented. + +#ifndef NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE +#define NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE 64 +#endif + +// + +// NRF_LOG_ENABLED - nrf_log - Logger +//========================================================== +#ifndef NRF_LOG_ENABLED +#define NRF_LOG_ENABLED 0 +#endif +// Log message pool - Configuration of log message pool + +//========================================================== +// NRF_LOG_MSGPOOL_ELEMENT_SIZE - Size of a single element in the pool of memory objects. +// If a small value is set, then performance of logs processing +// is degraded because data is fragmented. Bigger value impacts +// RAM memory utilization. The size is set to fit a message with +// a timestamp and up to 2 arguments in a single memory object. + +#ifndef NRF_LOG_MSGPOOL_ELEMENT_SIZE +#define NRF_LOG_MSGPOOL_ELEMENT_SIZE 20 +#endif + +// NRF_LOG_MSGPOOL_ELEMENT_COUNT - Number of elements in the pool of memory objects +// If a small value is set, then it may lead to a deadlock +// in certain cases if backend has high latency and holds +// multiple messages for long time. Bigger value impacts +// RAM memory usage. + +#ifndef NRF_LOG_MSGPOOL_ELEMENT_COUNT +#define NRF_LOG_MSGPOOL_ELEMENT_COUNT 8 +#endif + +// +//========================================================== + +// NRF_LOG_ALLOW_OVERFLOW - Configures behavior when circular buffer is full. + + +// If set then oldest logs are overwritten. Otherwise a +// marker is injected informing about overflow. + +#ifndef NRF_LOG_ALLOW_OVERFLOW +#define NRF_LOG_ALLOW_OVERFLOW 1 +#endif + +// NRF_LOG_BUFSIZE - Size of the buffer for storing logs (in bytes). + + +// Must be power of 2 and multiple of 4. +// If NRF_LOG_DEFERRED = 0 then buffer size can be reduced to minimum. +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 +// <2048=> 2048 +// <4096=> 4096 +// <8192=> 8192 +// <16384=> 16384 + +#ifndef NRF_LOG_BUFSIZE +#define NRF_LOG_BUFSIZE 1024 +#endif + +// NRF_LOG_CLI_CMDS - Enable CLI commands for the module. + + +#ifndef NRF_LOG_CLI_CMDS +#define NRF_LOG_CLI_CMDS 0 +#endif + +// NRF_LOG_DEFAULT_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_LOG_DEFAULT_LEVEL +#define NRF_LOG_DEFAULT_LEVEL 3 +#endif + +// NRF_LOG_DEFERRED - Enable deffered logger. + + +// Log data is buffered and can be processed in idle. + +#ifndef NRF_LOG_DEFERRED +#define NRF_LOG_DEFERRED 1 +#endif + +// NRF_LOG_FILTERS_ENABLED - Enable dynamic filtering of logs. + + +#ifndef NRF_LOG_FILTERS_ENABLED +#define NRF_LOG_FILTERS_ENABLED 0 +#endif + +// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. + +// <16=> 16 +// <32=> 32 +// <64=> 64 +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 + +#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE +#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 +#endif + +// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. + +// <16=> 16 +// <32=> 32 +// <64=> 64 +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 + +#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE +#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 +#endif + +// NRF_LOG_USES_COLORS - If enabled then ANSI escape code for colors is prefixed to every string +//========================================================== +#ifndef NRF_LOG_USES_COLORS +#define NRF_LOG_USES_COLORS 0 +#endif +// NRF_LOG_COLOR_DEFAULT - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_COLOR_DEFAULT +#define NRF_LOG_COLOR_DEFAULT 0 +#endif + +// NRF_LOG_ERROR_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_ERROR_COLOR +#define NRF_LOG_ERROR_COLOR 2 +#endif + +// NRF_LOG_WARNING_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_WARNING_COLOR +#define NRF_LOG_WARNING_COLOR 4 +#endif + +// + +// NRF_LOG_USES_TIMESTAMP - Enable timestamping + +// Function for getting the timestamp is provided by the user +//========================================================== +#ifndef NRF_LOG_USES_TIMESTAMP +#define NRF_LOG_USES_TIMESTAMP 0 +#endif +// NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY - Default frequency of the timestamp (in Hz) or 0 to use app_timer frequency. +#ifndef NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY +#define NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY 0 +#endif + +// + +// nrf_log module configuration + +//========================================================== +// nrf_log in nRF_Core + +//========================================================== +// NRF_MPU_LIB_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_MPU_LIB_CONFIG_LOG_ENABLED +#define NRF_MPU_LIB_CONFIG_LOG_ENABLED 0 +#endif +// NRF_MPU_LIB_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_MPU_LIB_CONFIG_LOG_LEVEL +#define NRF_MPU_LIB_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_MPU_LIB_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MPU_LIB_CONFIG_INFO_COLOR +#define NRF_MPU_LIB_CONFIG_INFO_COLOR 0 +#endif + +// NRF_MPU_LIB_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MPU_LIB_CONFIG_DEBUG_COLOR +#define NRF_MPU_LIB_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_STACK_GUARD_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_STACK_GUARD_CONFIG_LOG_ENABLED +#define NRF_STACK_GUARD_CONFIG_LOG_ENABLED 0 +#endif +// NRF_STACK_GUARD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_STACK_GUARD_CONFIG_LOG_LEVEL +#define NRF_STACK_GUARD_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_STACK_GUARD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_STACK_GUARD_CONFIG_INFO_COLOR +#define NRF_STACK_GUARD_CONFIG_INFO_COLOR 0 +#endif + +// NRF_STACK_GUARD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_STACK_GUARD_CONFIG_DEBUG_COLOR +#define NRF_STACK_GUARD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TASK_MANAGER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TASK_MANAGER_CONFIG_LOG_ENABLED +#define TASK_MANAGER_CONFIG_LOG_ENABLED 0 +#endif +// TASK_MANAGER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TASK_MANAGER_CONFIG_LOG_LEVEL +#define TASK_MANAGER_CONFIG_LOG_LEVEL 3 +#endif + +// TASK_MANAGER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TASK_MANAGER_CONFIG_INFO_COLOR +#define TASK_MANAGER_CONFIG_INFO_COLOR 0 +#endif + +// TASK_MANAGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TASK_MANAGER_CONFIG_DEBUG_COLOR +#define TASK_MANAGER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Drivers + +//========================================================== +// CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef CLOCK_CONFIG_LOG_ENABLED +#define CLOCK_CONFIG_LOG_ENABLED 0 +#endif +// CLOCK_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef CLOCK_CONFIG_LOG_LEVEL +#define CLOCK_CONFIG_LOG_LEVEL 3 +#endif + +// CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef CLOCK_CONFIG_INFO_COLOR +#define CLOCK_CONFIG_INFO_COLOR 0 +#endif + +// CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef CLOCK_CONFIG_DEBUG_COLOR +#define CLOCK_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// COMP_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef COMP_CONFIG_LOG_ENABLED +#define COMP_CONFIG_LOG_ENABLED 0 +#endif +// COMP_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef COMP_CONFIG_LOG_LEVEL +#define COMP_CONFIG_LOG_LEVEL 3 +#endif + +// COMP_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef COMP_CONFIG_INFO_COLOR +#define COMP_CONFIG_INFO_COLOR 0 +#endif + +// COMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef COMP_CONFIG_DEBUG_COLOR +#define COMP_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// GPIOTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef GPIOTE_CONFIG_LOG_ENABLED +#define GPIOTE_CONFIG_LOG_ENABLED 0 +#endif +// GPIOTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef GPIOTE_CONFIG_LOG_LEVEL +#define GPIOTE_CONFIG_LOG_LEVEL 3 +#endif + +// GPIOTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef GPIOTE_CONFIG_INFO_COLOR +#define GPIOTE_CONFIG_INFO_COLOR 0 +#endif + +// GPIOTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef GPIOTE_CONFIG_DEBUG_COLOR +#define GPIOTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// LPCOMP_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef LPCOMP_CONFIG_LOG_ENABLED +#define LPCOMP_CONFIG_LOG_ENABLED 0 +#endif +// LPCOMP_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef LPCOMP_CONFIG_LOG_LEVEL +#define LPCOMP_CONFIG_LOG_LEVEL 3 +#endif + +// LPCOMP_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef LPCOMP_CONFIG_INFO_COLOR +#define LPCOMP_CONFIG_INFO_COLOR 0 +#endif + +// LPCOMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef LPCOMP_CONFIG_DEBUG_COLOR +#define LPCOMP_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// MAX3421E_HOST_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef MAX3421E_HOST_CONFIG_LOG_ENABLED +#define MAX3421E_HOST_CONFIG_LOG_ENABLED 0 +#endif +// MAX3421E_HOST_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef MAX3421E_HOST_CONFIG_LOG_LEVEL +#define MAX3421E_HOST_CONFIG_LOG_LEVEL 3 +#endif + +// MAX3421E_HOST_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef MAX3421E_HOST_CONFIG_INFO_COLOR +#define MAX3421E_HOST_CONFIG_INFO_COLOR 0 +#endif + +// MAX3421E_HOST_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef MAX3421E_HOST_CONFIG_DEBUG_COLOR +#define MAX3421E_HOST_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRFX_USBD_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef NRFX_USBD_CONFIG_LOG_ENABLED +#define NRFX_USBD_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_USBD_CONFIG_LOG_LEVEL +#define NRFX_USBD_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_USBD_CONFIG_INFO_COLOR +#define NRFX_USBD_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_USBD_CONFIG_DEBUG_COLOR +#define NRFX_USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PDM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PDM_CONFIG_LOG_ENABLED +#define PDM_CONFIG_LOG_ENABLED 0 +#endif +// PDM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PDM_CONFIG_LOG_LEVEL +#define PDM_CONFIG_LOG_LEVEL 3 +#endif + +// PDM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PDM_CONFIG_INFO_COLOR +#define PDM_CONFIG_INFO_COLOR 0 +#endif + +// PDM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PDM_CONFIG_DEBUG_COLOR +#define PDM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PPI_CONFIG_LOG_ENABLED +#define PPI_CONFIG_LOG_ENABLED 0 +#endif +// PPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PPI_CONFIG_LOG_LEVEL +#define PPI_CONFIG_LOG_LEVEL 3 +#endif + +// PPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PPI_CONFIG_INFO_COLOR +#define PPI_CONFIG_INFO_COLOR 0 +#endif + +// PPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PPI_CONFIG_DEBUG_COLOR +#define PPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PWM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PWM_CONFIG_LOG_ENABLED +#define PWM_CONFIG_LOG_ENABLED 0 +#endif +// PWM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PWM_CONFIG_LOG_LEVEL +#define PWM_CONFIG_LOG_LEVEL 3 +#endif + +// PWM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PWM_CONFIG_INFO_COLOR +#define PWM_CONFIG_INFO_COLOR 0 +#endif + +// PWM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PWM_CONFIG_DEBUG_COLOR +#define PWM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// QDEC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef QDEC_CONFIG_LOG_ENABLED +#define QDEC_CONFIG_LOG_ENABLED 0 +#endif +// QDEC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef QDEC_CONFIG_LOG_LEVEL +#define QDEC_CONFIG_LOG_LEVEL 3 +#endif + +// QDEC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef QDEC_CONFIG_INFO_COLOR +#define QDEC_CONFIG_INFO_COLOR 0 +#endif + +// QDEC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef QDEC_CONFIG_DEBUG_COLOR +#define QDEC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// RNG_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef RNG_CONFIG_LOG_ENABLED +#define RNG_CONFIG_LOG_ENABLED 0 +#endif +// RNG_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef RNG_CONFIG_LOG_LEVEL +#define RNG_CONFIG_LOG_LEVEL 3 +#endif + +// RNG_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RNG_CONFIG_INFO_COLOR +#define RNG_CONFIG_INFO_COLOR 0 +#endif + +// RNG_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RNG_CONFIG_DEBUG_COLOR +#define RNG_CONFIG_DEBUG_COLOR 0 +#endif + +// RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED - Enables logging of random numbers. + + +#ifndef RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED +#define RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED 0 +#endif + +// + +// RTC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef RTC_CONFIG_LOG_ENABLED +#define RTC_CONFIG_LOG_ENABLED 0 +#endif +// RTC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef RTC_CONFIG_LOG_LEVEL +#define RTC_CONFIG_LOG_LEVEL 3 +#endif + +// RTC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RTC_CONFIG_INFO_COLOR +#define RTC_CONFIG_INFO_COLOR 0 +#endif + +// RTC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RTC_CONFIG_DEBUG_COLOR +#define RTC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SAADC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SAADC_CONFIG_LOG_ENABLED +#define SAADC_CONFIG_LOG_ENABLED 0 +#endif +// SAADC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SAADC_CONFIG_LOG_LEVEL +#define SAADC_CONFIG_LOG_LEVEL 3 +#endif + +// SAADC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SAADC_CONFIG_INFO_COLOR +#define SAADC_CONFIG_INFO_COLOR 0 +#endif + +// SAADC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SAADC_CONFIG_DEBUG_COLOR +#define SAADC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SPIS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SPIS_CONFIG_LOG_ENABLED +#define SPIS_CONFIG_LOG_ENABLED 0 +#endif +// SPIS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SPIS_CONFIG_LOG_LEVEL +#define SPIS_CONFIG_LOG_LEVEL 3 +#endif + +// SPIS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPIS_CONFIG_INFO_COLOR +#define SPIS_CONFIG_INFO_COLOR 0 +#endif + +// SPIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPIS_CONFIG_DEBUG_COLOR +#define SPIS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SPI_CONFIG_LOG_ENABLED +#define SPI_CONFIG_LOG_ENABLED 0 +#endif +// SPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SPI_CONFIG_LOG_LEVEL +#define SPI_CONFIG_LOG_LEVEL 3 +#endif + +// SPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPI_CONFIG_INFO_COLOR +#define SPI_CONFIG_INFO_COLOR 0 +#endif + +// SPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPI_CONFIG_DEBUG_COLOR +#define SPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TIMER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TIMER_CONFIG_LOG_ENABLED +#define TIMER_CONFIG_LOG_ENABLED 0 +#endif +// TIMER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TIMER_CONFIG_LOG_LEVEL +#define TIMER_CONFIG_LOG_LEVEL 3 +#endif + +// TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TIMER_CONFIG_INFO_COLOR +#define TIMER_CONFIG_INFO_COLOR 0 +#endif + +// TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TIMER_CONFIG_DEBUG_COLOR +#define TIMER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TWIS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TWIS_CONFIG_LOG_ENABLED +#define TWIS_CONFIG_LOG_ENABLED 0 +#endif +// TWIS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TWIS_CONFIG_LOG_LEVEL +#define TWIS_CONFIG_LOG_LEVEL 3 +#endif + +// TWIS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWIS_CONFIG_INFO_COLOR +#define TWIS_CONFIG_INFO_COLOR 0 +#endif + +// TWIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWIS_CONFIG_DEBUG_COLOR +#define TWIS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TWI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TWI_CONFIG_LOG_ENABLED +#define TWI_CONFIG_LOG_ENABLED 0 +#endif +// TWI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TWI_CONFIG_LOG_LEVEL +#define TWI_CONFIG_LOG_LEVEL 3 +#endif + +// TWI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWI_CONFIG_INFO_COLOR +#define TWI_CONFIG_INFO_COLOR 0 +#endif + +// TWI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWI_CONFIG_DEBUG_COLOR +#define TWI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef UART_CONFIG_LOG_ENABLED +#define UART_CONFIG_LOG_ENABLED 0 +#endif +// UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef UART_CONFIG_LOG_LEVEL +#define UART_CONFIG_LOG_LEVEL 3 +#endif + +// UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef UART_CONFIG_INFO_COLOR +#define UART_CONFIG_INFO_COLOR 0 +#endif + +// UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef UART_CONFIG_DEBUG_COLOR +#define UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// USBD_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef USBD_CONFIG_LOG_ENABLED +#define USBD_CONFIG_LOG_ENABLED 0 +#endif +// USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef USBD_CONFIG_LOG_LEVEL +#define USBD_CONFIG_LOG_LEVEL 3 +#endif + +// USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef USBD_CONFIG_INFO_COLOR +#define USBD_CONFIG_INFO_COLOR 0 +#endif + +// USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef USBD_CONFIG_DEBUG_COLOR +#define USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// WDT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef WDT_CONFIG_LOG_ENABLED +#define WDT_CONFIG_LOG_ENABLED 0 +#endif +// WDT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef WDT_CONFIG_LOG_LEVEL +#define WDT_CONFIG_LOG_LEVEL 3 +#endif + +// WDT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef WDT_CONFIG_INFO_COLOR +#define WDT_CONFIG_INFO_COLOR 0 +#endif + +// WDT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef WDT_CONFIG_DEBUG_COLOR +#define WDT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Libraries + +//========================================================== +// APP_TIMER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_TIMER_CONFIG_LOG_ENABLED +#define APP_TIMER_CONFIG_LOG_ENABLED 0 +#endif +// APP_TIMER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_TIMER_CONFIG_LOG_LEVEL +#define APP_TIMER_CONFIG_LOG_LEVEL 3 +#endif + +// APP_TIMER_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled. + + +// If module generates a lot of logs, initial log level can +// be decreased to prevent flooding. Severity level can be +// increased on instance basis. +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_TIMER_CONFIG_INITIAL_LOG_LEVEL +#define APP_TIMER_CONFIG_INITIAL_LOG_LEVEL 3 +#endif + +// APP_TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_TIMER_CONFIG_INFO_COLOR +#define APP_TIMER_CONFIG_INFO_COLOR 0 +#endif + +// APP_TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_TIMER_CONFIG_DEBUG_COLOR +#define APP_TIMER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED +#define APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL +#define APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_CDC_ACM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CDC_ACM_CONFIG_INFO_COLOR +#define APP_USBD_CDC_ACM_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR +#define APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_CONFIG_LOG_ENABLED - Enable logging in the module. +//========================================================== +#ifndef APP_USBD_CONFIG_LOG_ENABLED +#define APP_USBD_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_CONFIG_LOG_LEVEL +#define APP_USBD_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CONFIG_INFO_COLOR +#define APP_USBD_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CONFIG_DEBUG_COLOR +#define APP_USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_DUMMY_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_DUMMY_CONFIG_LOG_ENABLED +#define APP_USBD_DUMMY_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_DUMMY_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_DUMMY_CONFIG_LOG_LEVEL +#define APP_USBD_DUMMY_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_DUMMY_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_DUMMY_CONFIG_INFO_COLOR +#define APP_USBD_DUMMY_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_DUMMY_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_DUMMY_CONFIG_DEBUG_COLOR +#define APP_USBD_DUMMY_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_MSC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_MSC_CONFIG_LOG_ENABLED +#define APP_USBD_MSC_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_MSC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_MSC_CONFIG_LOG_LEVEL +#define APP_USBD_MSC_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_MSC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_MSC_CONFIG_INFO_COLOR +#define APP_USBD_MSC_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_MSC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_MSC_CONFIG_DEBUG_COLOR +#define APP_USBD_MSC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_ATFIFO_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_ATFIFO_CONFIG_LOG_ENABLED +#define NRF_ATFIFO_CONFIG_LOG_ENABLED 0 +#endif +// NRF_ATFIFO_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_ATFIFO_CONFIG_LOG_LEVEL +#define NRF_ATFIFO_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_ATFIFO_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_ATFIFO_CONFIG_INFO_COLOR +#define NRF_ATFIFO_CONFIG_INFO_COLOR 0 +#endif + +// NRF_ATFIFO_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_ATFIFO_CONFIG_DEBUG_COLOR +#define NRF_ATFIFO_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BALLOC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BALLOC_CONFIG_LOG_ENABLED +#define NRF_BALLOC_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BALLOC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BALLOC_CONFIG_LOG_LEVEL +#define NRF_BALLOC_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled. + + +// If module generates a lot of logs, initial log level can +// be decreased to prevent flooding. Severity level can be +// increased on instance basis. +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL +#define NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL 3 +#endif + +// NRF_BALLOC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BALLOC_CONFIG_INFO_COLOR +#define NRF_BALLOC_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BALLOC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BALLOC_CONFIG_DEBUG_COLOR +#define NRF_BALLOC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED +#define NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL +#define NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_BLE_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_BLE_UART_CONFIG_INFO_COLOR +#define NRF_CLI_BLE_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR +#define NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED +#define NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL +#define NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR +#define NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR +#define NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_UART_CONFIG_LOG_ENABLED +#define NRF_CLI_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_UART_CONFIG_LOG_LEVEL +#define NRF_CLI_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_UART_CONFIG_INFO_COLOR +#define NRF_CLI_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_UART_CONFIG_DEBUG_COLOR +#define NRF_CLI_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_LIBUARTE_CONFIG_LOG_ENABLED +#define NRF_LIBUARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_LIBUARTE_CONFIG_LOG_LEVEL +#define NRF_LIBUARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LIBUARTE_CONFIG_INFO_COLOR +#define NRF_LIBUARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LIBUARTE_CONFIG_DEBUG_COLOR +#define NRF_LIBUARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_MEMOBJ_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_MEMOBJ_CONFIG_LOG_ENABLED +#define NRF_MEMOBJ_CONFIG_LOG_ENABLED 0 +#endif +// NRF_MEMOBJ_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_MEMOBJ_CONFIG_LOG_LEVEL +#define NRF_MEMOBJ_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_MEMOBJ_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MEMOBJ_CONFIG_INFO_COLOR +#define NRF_MEMOBJ_CONFIG_INFO_COLOR 0 +#endif + +// NRF_MEMOBJ_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MEMOBJ_CONFIG_DEBUG_COLOR +#define NRF_MEMOBJ_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_PWR_MGMT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_PWR_MGMT_CONFIG_LOG_ENABLED +#define NRF_PWR_MGMT_CONFIG_LOG_ENABLED 0 +#endif +// NRF_PWR_MGMT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_PWR_MGMT_CONFIG_LOG_LEVEL +#define NRF_PWR_MGMT_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_PWR_MGMT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_PWR_MGMT_CONFIG_INFO_COLOR +#define NRF_PWR_MGMT_CONFIG_INFO_COLOR 0 +#endif + +// NRF_PWR_MGMT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_PWR_MGMT_CONFIG_DEBUG_COLOR +#define NRF_PWR_MGMT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_QUEUE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_QUEUE_CONFIG_LOG_ENABLED +#define NRF_QUEUE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_QUEUE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_QUEUE_CONFIG_LOG_LEVEL +#define NRF_QUEUE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_QUEUE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_QUEUE_CONFIG_INFO_COLOR +#define NRF_QUEUE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_QUEUE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_QUEUE_CONFIG_DEBUG_COLOR +#define NRF_QUEUE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_ANT_LOG_ENABLED - Enable logging in SoftDevice handler (ANT) module. +//========================================================== +#ifndef NRF_SDH_ANT_LOG_ENABLED +#define NRF_SDH_ANT_LOG_ENABLED 0 +#endif +// NRF_SDH_ANT_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_ANT_LOG_LEVEL +#define NRF_SDH_ANT_LOG_LEVEL 3 +#endif + +// NRF_SDH_ANT_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_ANT_INFO_COLOR +#define NRF_SDH_ANT_INFO_COLOR 0 +#endif + +// NRF_SDH_ANT_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_ANT_DEBUG_COLOR +#define NRF_SDH_ANT_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_BLE_LOG_ENABLED - Enable logging in SoftDevice handler (BLE) module. +//========================================================== +#ifndef NRF_SDH_BLE_LOG_ENABLED +#define NRF_SDH_BLE_LOG_ENABLED 1 +#endif +// NRF_SDH_BLE_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_BLE_LOG_LEVEL +#define NRF_SDH_BLE_LOG_LEVEL 3 +#endif + +// NRF_SDH_BLE_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_BLE_INFO_COLOR +#define NRF_SDH_BLE_INFO_COLOR 0 +#endif + +// NRF_SDH_BLE_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_BLE_DEBUG_COLOR +#define NRF_SDH_BLE_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_LOG_ENABLED - Enable logging in SoftDevice handler module. +//========================================================== +#ifndef NRF_SDH_LOG_ENABLED +#define NRF_SDH_LOG_ENABLED 1 +#endif +// NRF_SDH_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_LOG_LEVEL +#define NRF_SDH_LOG_LEVEL 3 +#endif + +// NRF_SDH_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_INFO_COLOR +#define NRF_SDH_INFO_COLOR 0 +#endif + +// NRF_SDH_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_DEBUG_COLOR +#define NRF_SDH_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_SOC_LOG_ENABLED - Enable logging in SoftDevice handler (SoC) module. +//========================================================== +#ifndef NRF_SDH_SOC_LOG_ENABLED +#define NRF_SDH_SOC_LOG_ENABLED 1 +#endif +// NRF_SDH_SOC_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_SOC_LOG_LEVEL +#define NRF_SDH_SOC_LOG_LEVEL 3 +#endif + +// NRF_SDH_SOC_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_SOC_INFO_COLOR +#define NRF_SDH_SOC_INFO_COLOR 0 +#endif + +// NRF_SDH_SOC_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_SOC_DEBUG_COLOR +#define NRF_SDH_SOC_DEBUG_COLOR 0 +#endif + +// + +// NRF_SORTLIST_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_SORTLIST_CONFIG_LOG_ENABLED +#define NRF_SORTLIST_CONFIG_LOG_ENABLED 0 +#endif +// NRF_SORTLIST_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SORTLIST_CONFIG_LOG_LEVEL +#define NRF_SORTLIST_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_SORTLIST_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SORTLIST_CONFIG_INFO_COLOR +#define NRF_SORTLIST_CONFIG_INFO_COLOR 0 +#endif + +// NRF_SORTLIST_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SORTLIST_CONFIG_DEBUG_COLOR +#define NRF_SORTLIST_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_TWI_SENSOR_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_TWI_SENSOR_CONFIG_LOG_ENABLED +#define NRF_TWI_SENSOR_CONFIG_LOG_ENABLED 0 +#endif +// NRF_TWI_SENSOR_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_TWI_SENSOR_CONFIG_LOG_LEVEL +#define NRF_TWI_SENSOR_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_TWI_SENSOR_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_TWI_SENSOR_CONFIG_INFO_COLOR +#define NRF_TWI_SENSOR_CONFIG_INFO_COLOR 0 +#endif + +// NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR +#define NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PM_LOG_ENABLED - Enable logging in Peer Manager and its submodules. +//========================================================== +#ifndef PM_LOG_ENABLED +#define PM_LOG_ENABLED 1 +#endif +// PM_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PM_LOG_LEVEL +#define PM_LOG_LEVEL 3 +#endif + +// PM_LOG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PM_LOG_INFO_COLOR +#define PM_LOG_INFO_COLOR 0 +#endif + +// PM_LOG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PM_LOG_DEBUG_COLOR +#define PM_LOG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Serialization + +//========================================================== +// SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED +#define SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED 0 +#endif +// SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL +#define SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL 3 +#endif + +// SER_HAL_TRANSPORT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SER_HAL_TRANSPORT_CONFIG_INFO_COLOR +#define SER_HAL_TRANSPORT_CONFIG_INFO_COLOR 0 +#endif + +// SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR +#define SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// +//========================================================== + +// + +// NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED - nrf_log_str_formatter - Log string formatter + + +#ifndef NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED +#define NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED 1 +#endif + +// +//========================================================== + +// nRF_Segger_RTT + +//========================================================== +// segger_rtt - SEGGER RTT + +//========================================================== +// SEGGER_RTT_CONFIG_BUFFER_SIZE_UP - Size of upstream buffer. +// Note that either @ref NRF_LOG_BACKEND_RTT_OUTPUT_BUFFER_SIZE +// or this value is actually used. It depends on which one is bigger. + +#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_UP +#define SEGGER_RTT_CONFIG_BUFFER_SIZE_UP 512 +#endif + +// SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS - Maximum number of upstream buffers. +#ifndef SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS +#define SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS 2 +#endif + +// SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN - Size of downstream buffer. +#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN +#define SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN 16 +#endif + +// SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS - Maximum number of downstream buffers. +#ifndef SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS +#define SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS 2 +#endif + +// SEGGER_RTT_CONFIG_DEFAULT_MODE - RTT behavior if the buffer is full. + + +// The following modes are supported: +// - SKIP - Do not block, output nothing. +// - TRIM - Do not block, output as much as fits. +// - BLOCK - Wait until there is space in the buffer. +// <0=> SKIP +// <1=> TRIM +// <2=> BLOCK_IF_FIFO_FULL + +#ifndef SEGGER_RTT_CONFIG_DEFAULT_MODE +#define SEGGER_RTT_CONFIG_DEFAULT_MODE 0 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_SoftDevice + +//========================================================== +// NRF_SDH_BLE_ENABLED - nrf_sdh_ble - SoftDevice BLE event handler +//========================================================== +#ifndef NRF_SDH_BLE_ENABLED +#define NRF_SDH_BLE_ENABLED 1 +#endif +// BLE Stack configuration - Stack configuration parameters + +// The SoftDevice handler will configure the stack with these parameters when calling @ref nrf_sdh_ble_default_cfg_set. +// Other libraries might depend on these values; keep them up-to-date even if you are not explicitely calling @ref nrf_sdh_ble_default_cfg_set. +//========================================================== +// NRF_SDH_BLE_GAP_DATA_LENGTH <27-251> + + +// Requested BLE GAP data length to be negotiated. + +#ifndef NRF_SDH_BLE_GAP_DATA_LENGTH +#define NRF_SDH_BLE_GAP_DATA_LENGTH 27 +#endif + +// NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. +#ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 +#endif + +// NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. +#ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 +#endif + +// NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. +// Maximum number of total concurrent connections using the default configuration. + +#ifndef NRF_SDH_BLE_TOTAL_LINK_COUNT +#define NRF_SDH_BLE_TOTAL_LINK_COUNT 1 +#endif + +// NRF_SDH_BLE_GAP_EVENT_LENGTH - GAP event length. +// The time set aside for this connection on every connection interval in 1.25 ms units. + +#ifndef NRF_SDH_BLE_GAP_EVENT_LENGTH +#define NRF_SDH_BLE_GAP_EVENT_LENGTH 6 +#endif + +// NRF_SDH_BLE_GATT_MAX_MTU_SIZE - Static maximum MTU size. +#ifndef NRF_SDH_BLE_GATT_MAX_MTU_SIZE +#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 250 +#endif + +// NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE - Attribute Table size in bytes. The size must be a multiple of 4. +#ifndef NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE +#define NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE 1408 +#endif + +// NRF_SDH_BLE_VS_UUID_COUNT - The number of vendor-specific UUIDs. +#ifndef NRF_SDH_BLE_VS_UUID_COUNT +#define NRF_SDH_BLE_VS_UUID_COUNT 0 +#endif + +// NRF_SDH_BLE_SERVICE_CHANGED - Include the Service Changed characteristic in the Attribute Table. + + +#ifndef NRF_SDH_BLE_SERVICE_CHANGED +#define NRF_SDH_BLE_SERVICE_CHANGED 0 +#endif + +// +//========================================================== + +// BLE Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_BLE_OBSERVER_PRIO_LEVELS - Total number of priority levels for BLE observers. +// This setting configures the number of priority levels available for BLE event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_BLE_OBSERVER_PRIO_LEVELS +#define NRF_SDH_BLE_OBSERVER_PRIO_LEVELS 4 +#endif + +// BLE Observers priorities - Invididual priorities + +//========================================================== +// BLE_ADV_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Advertising module. + +#ifndef BLE_ADV_BLE_OBSERVER_PRIO +#define BLE_ADV_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_ANCS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Apple Notification Service Client. + +#ifndef BLE_ANCS_C_BLE_OBSERVER_PRIO +#define BLE_ANCS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_ANS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Alert Notification Service Client. + +#ifndef BLE_ANS_C_BLE_OBSERVER_PRIO +#define BLE_ANS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BAS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Battery Service. + +#ifndef BLE_BAS_BLE_OBSERVER_PRIO +#define BLE_BAS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BAS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Battery Service Client. + +#ifndef BLE_BAS_C_BLE_OBSERVER_PRIO +#define BLE_BAS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BPS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Blood Pressure Service. + +#ifndef BLE_BPS_BLE_OBSERVER_PRIO +#define BLE_BPS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_CONN_PARAMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Connection parameters module. + +#ifndef BLE_CONN_PARAMS_BLE_OBSERVER_PRIO +#define BLE_CONN_PARAMS_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_CONN_STATE_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Connection State module. + +#ifndef BLE_CONN_STATE_BLE_OBSERVER_PRIO +#define BLE_CONN_STATE_BLE_OBSERVER_PRIO 0 +#endif + +// BLE_CSCS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Cycling Speed and Cadence Service. + +#ifndef BLE_CSCS_BLE_OBSERVER_PRIO +#define BLE_CSCS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_CTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Current Time Service Client. + +#ifndef BLE_CTS_C_BLE_OBSERVER_PRIO +#define BLE_CTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_DB_DISC_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Database Discovery module. + +#ifndef BLE_DB_DISC_BLE_OBSERVER_PRIO +#define BLE_DB_DISC_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_DFU_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the DFU Service. + +#ifndef BLE_DFU_BLE_OBSERVER_PRIO +#define BLE_DFU_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_DIS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Device Information Client. + +#ifndef BLE_DIS_C_BLE_OBSERVER_PRIO +#define BLE_DIS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_GLS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Glucose Service. + +#ifndef BLE_GLS_BLE_OBSERVER_PRIO +#define BLE_GLS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HIDS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Human Interface Device Service. + +#ifndef BLE_HIDS_BLE_OBSERVER_PRIO +#define BLE_HIDS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HRS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Heart Rate Service. + +#ifndef BLE_HRS_BLE_OBSERVER_PRIO +#define BLE_HRS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HRS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Heart Rate Service Client. + +#ifndef BLE_HRS_C_BLE_OBSERVER_PRIO +#define BLE_HRS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HTS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Health Thermometer Service. + +#ifndef BLE_HTS_BLE_OBSERVER_PRIO +#define BLE_HTS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_IAS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Immediate Alert Service. + +#ifndef BLE_IAS_BLE_OBSERVER_PRIO +#define BLE_IAS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_IAS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Immediate Alert Service Client. + +#ifndef BLE_IAS_C_BLE_OBSERVER_PRIO +#define BLE_IAS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LBS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the LED Button Service. + +#ifndef BLE_LBS_BLE_OBSERVER_PRIO +#define BLE_LBS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LBS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the LED Button Service Client. + +#ifndef BLE_LBS_C_BLE_OBSERVER_PRIO +#define BLE_LBS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LLS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Link Loss Service. + +#ifndef BLE_LLS_BLE_OBSERVER_PRIO +#define BLE_LLS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LNS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Location Navigation Service. + +#ifndef BLE_LNS_BLE_OBSERVER_PRIO +#define BLE_LNS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_NUS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the UART Service. + +#ifndef BLE_NUS_BLE_OBSERVER_PRIO +#define BLE_NUS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_NUS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the UART Central Service. + +#ifndef BLE_NUS_C_BLE_OBSERVER_PRIO +#define BLE_NUS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_OTS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Object transfer service. + +#ifndef BLE_OTS_BLE_OBSERVER_PRIO +#define BLE_OTS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_OTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Object transfer service client. + +#ifndef BLE_OTS_C_BLE_OBSERVER_PRIO +#define BLE_OTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_RSCS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Running Speed and Cadence Service. + +#ifndef BLE_RSCS_BLE_OBSERVER_PRIO +#define BLE_RSCS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_RSCS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Running Speed and Cadence Client. + +#ifndef BLE_RSCS_C_BLE_OBSERVER_PRIO +#define BLE_RSCS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_TPS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the TX Power Service. + +#ifndef BLE_TPS_BLE_OBSERVER_PRIO +#define BLE_TPS_BLE_OBSERVER_PRIO 2 +#endif + +// BSP_BTN_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Button Control module. + +#ifndef BSP_BTN_BLE_OBSERVER_PRIO +#define BSP_BTN_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NRF_BLE_BMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Bond Management Service. + +#ifndef NRF_BLE_BMS_BLE_OBSERVER_PRIO +#define NRF_BLE_BMS_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_CGMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Contiuon Glucose Monitoring Service. + +#ifndef NRF_BLE_CGMS_BLE_OBSERVER_PRIO +#define NRF_BLE_CGMS_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_ES_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Eddystone module. + +#ifndef NRF_BLE_ES_BLE_OBSERVER_PRIO +#define NRF_BLE_ES_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the GATT Service Client. + +#ifndef NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO +#define NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_GATT_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the GATT module. + +#ifndef NRF_BLE_GATT_BLE_OBSERVER_PRIO +#define NRF_BLE_GATT_BLE_OBSERVER_PRIO 1 +#endif + +// NRF_BLE_QWR_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Queued writes module. + +#ifndef NRF_BLE_QWR_BLE_OBSERVER_PRIO +#define NRF_BLE_QWR_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_SCAN_OBSERVER_PRIO +// Priority for dispatching the BLE events to the Scanning Module. + +#ifndef NRF_BLE_SCAN_OBSERVER_PRIO +#define NRF_BLE_SCAN_OBSERVER_PRIO 1 +#endif + +// PM_BLE_OBSERVER_PRIO - Priority with which BLE events are dispatched to the Peer Manager module. +#ifndef PM_BLE_OBSERVER_PRIO +#define PM_BLE_OBSERVER_PRIO 1 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// NRF_SDH_ENABLED - nrf_sdh - SoftDevice handler +//========================================================== +#ifndef NRF_SDH_ENABLED +#define NRF_SDH_ENABLED 1 +#endif +// Dispatch model + +// This setting configures how Stack events are dispatched to the application. +//========================================================== +// NRF_SDH_DISPATCH_MODEL + + +// NRF_SDH_DISPATCH_MODEL_INTERRUPT: SoftDevice events are passed to the application from the interrupt context. +// NRF_SDH_DISPATCH_MODEL_APPSH: SoftDevice events are scheduled using @ref app_scheduler. +// NRF_SDH_DISPATCH_MODEL_POLLING: SoftDevice events are to be fetched manually. +// <0=> NRF_SDH_DISPATCH_MODEL_INTERRUPT +// <1=> NRF_SDH_DISPATCH_MODEL_APPSH +// <2=> NRF_SDH_DISPATCH_MODEL_POLLING + +#ifndef NRF_SDH_DISPATCH_MODEL +#define NRF_SDH_DISPATCH_MODEL 0 +#endif + +// +//========================================================== + +// Clock - SoftDevice clock configuration + +//========================================================== +// NRF_SDH_CLOCK_LF_SRC - SoftDevice clock source. + +// <0=> NRF_CLOCK_LF_SRC_RC +// <1=> NRF_CLOCK_LF_SRC_XTAL +// <2=> NRF_CLOCK_LF_SRC_SYNTH + +#ifndef NRF_SDH_CLOCK_LF_SRC +#define NRF_SDH_CLOCK_LF_SRC 1 +#endif + +// NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval. +#ifndef NRF_SDH_CLOCK_LF_RC_CTIV +#define NRF_SDH_CLOCK_LF_RC_CTIV 0 +#endif + +// NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature. +// How often (in number of calibration intervals) the RC oscillator shall be calibrated +// if the temperature has not changed. + +#ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV +#define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 0 +#endif + +// NRF_SDH_CLOCK_LF_ACCURACY - External clock accuracy used in the LL to compute timing. + +// <0=> NRF_CLOCK_LF_ACCURACY_250_PPM +// <1=> NRF_CLOCK_LF_ACCURACY_500_PPM +// <2=> NRF_CLOCK_LF_ACCURACY_150_PPM +// <3=> NRF_CLOCK_LF_ACCURACY_100_PPM +// <4=> NRF_CLOCK_LF_ACCURACY_75_PPM +// <5=> NRF_CLOCK_LF_ACCURACY_50_PPM +// <6=> NRF_CLOCK_LF_ACCURACY_30_PPM +// <7=> NRF_CLOCK_LF_ACCURACY_20_PPM +// <8=> NRF_CLOCK_LF_ACCURACY_10_PPM +// <9=> NRF_CLOCK_LF_ACCURACY_5_PPM +// <10=> NRF_CLOCK_LF_ACCURACY_2_PPM +// <11=> NRF_CLOCK_LF_ACCURACY_1_PPM + +#ifndef NRF_SDH_CLOCK_LF_ACCURACY +#define NRF_SDH_CLOCK_LF_ACCURACY 7 +#endif + +// +//========================================================== + +// SDH Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_REQ_OBSERVER_PRIO_LEVELS - Total number of priority levels for request observers. +// This setting configures the number of priority levels available for the SoftDevice request event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_REQ_OBSERVER_PRIO_LEVELS +#define NRF_SDH_REQ_OBSERVER_PRIO_LEVELS 2 +#endif + +// NRF_SDH_STATE_OBSERVER_PRIO_LEVELS - Total number of priority levels for state observers. +// This setting configures the number of priority levels available for the SoftDevice state event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_STATE_OBSERVER_PRIO_LEVELS +#define NRF_SDH_STATE_OBSERVER_PRIO_LEVELS 2 +#endif + +// NRF_SDH_STACK_OBSERVER_PRIO_LEVELS - Total number of priority levels for stack event observers. +// This setting configures the number of priority levels available for the SoftDevice stack event handlers (ANT, BLE, SoC). +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_STACK_OBSERVER_PRIO_LEVELS +#define NRF_SDH_STACK_OBSERVER_PRIO_LEVELS 2 +#endif + + +// State Observers priorities - Invididual priorities + +//========================================================== +// CLOCK_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to the Clock driver. + +#ifndef CLOCK_CONFIG_STATE_OBSERVER_PRIO +#define CLOCK_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// POWER_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to the Power driver. + +#ifndef POWER_CONFIG_STATE_OBSERVER_PRIO +#define POWER_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// RNG_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to this module. + +#ifndef RNG_CONFIG_STATE_OBSERVER_PRIO +#define RNG_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// Stack Event Observers priorities - Invididual priorities + +//========================================================== +// NRF_SDH_ANT_STACK_OBSERVER_PRIO +// This setting configures the priority with which ANT events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have ANT events dispatched before or after other stack events, such as BLE or SoC. +// Zero is the highest priority. + +#ifndef NRF_SDH_ANT_STACK_OBSERVER_PRIO +#define NRF_SDH_ANT_STACK_OBSERVER_PRIO 0 +#endif + +// NRF_SDH_BLE_STACK_OBSERVER_PRIO +// This setting configures the priority with which BLE events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have BLE events dispatched before or after other stack events, such as ANT or SoC. +// Zero is the highest priority. + +#ifndef NRF_SDH_BLE_STACK_OBSERVER_PRIO +#define NRF_SDH_BLE_STACK_OBSERVER_PRIO 0 +#endif + +// NRF_SDH_SOC_STACK_OBSERVER_PRIO +// This setting configures the priority with which SoC events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have SoC events dispatched before or after other stack events, such as ANT or BLE. +// Zero is the highest priority. + +#ifndef NRF_SDH_SOC_STACK_OBSERVER_PRIO +#define NRF_SDH_SOC_STACK_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// NRF_SDH_SOC_ENABLED - nrf_sdh_soc - SoftDevice SoC event handler +//========================================================== +#ifndef NRF_SDH_SOC_ENABLED +#define NRF_SDH_SOC_ENABLED 1 +#endif +// SoC Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_SOC_OBSERVER_PRIO_LEVELS - Total number of priority levels for SoC observers. +// This setting configures the number of priority levels available for the SoC event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_SOC_OBSERVER_PRIO_LEVELS +#define NRF_SDH_SOC_OBSERVER_PRIO_LEVELS 2 +#endif + +// SoC Observers priorities - Invididual priorities + +//========================================================== +// BLE_ADV_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Advertising module. + +#ifndef BLE_ADV_SOC_OBSERVER_PRIO +#define BLE_ADV_SOC_OBSERVER_PRIO 1 +#endif + +// BLE_DFU_SOC_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the DFU Service. + +#ifndef BLE_DFU_SOC_OBSERVER_PRIO +#define BLE_DFU_SOC_OBSERVER_PRIO 1 +#endif + +// CLOCK_CONFIG_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Clock driver. + +#ifndef CLOCK_CONFIG_SOC_OBSERVER_PRIO +#define CLOCK_CONFIG_SOC_OBSERVER_PRIO 0 +#endif + +// POWER_CONFIG_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Power driver. + +#ifndef POWER_CONFIG_SOC_OBSERVER_PRIO +#define POWER_CONFIG_SOC_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// +//========================================================== + +// <<< end of configuration section >>> +#endif //SDK_CONFIG_H + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/ses/ble_connectivity_132v3_hci_pca10040.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/ses/ble_connectivity_132v3_hci_pca10040.emProject new file mode 100644 index 0000000..7e2068a --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/ses/ble_connectivity_132v3_hci_pca10040.emProject @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/ses/ble_connectivity_132v3_hci_pca10040.emSession nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/ses/ble_connectivity_132v3_hci_pca10040.emSession new file mode 100644 index 0000000..c05cfb5 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/ses/ble_connectivity_132v3_hci_pca10040.emSession @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/ses/flash_placement.xml new file mode 100644 index 0000000..c9cc513 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v3_hci/ses/flash_placement.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/armgcc/Makefile new file mode 100644 index 0000000..55abec1 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/armgcc/Makefile @@ -0,0 +1,273 @@ +PROJECT_NAME := ble_connectivity_132v5_hci_pca10040 +TARGETS := nrf52832_xxaa +OUTPUT_DIRECTORY := _build + +SDK_ROOT := ../../../../../.. +PROJ_DIR := ../../.. + +$(OUTPUT_DIRECTORY)/nrf52832_xxaa.out: \ + LINKER_SCRIPT := ble_connectivity_gcc_nrf52.ld + +# Source files common to all targets +SRC_FILES += \ + $(SDK_ROOT)/modules/nrfx/mdk/gcc_startup_nrf52.S \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_rtt.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_serial.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_uart.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_default_backends.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_frontend.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_str_formatter.c \ + $(SDK_ROOT)/components/libraries/util/app_error.c \ + $(SDK_ROOT)/components/libraries/util/app_error_handler_gcc.c \ + $(SDK_ROOT)/components/libraries/util/app_error_weak.c \ + $(SDK_ROOT)/components/libraries/scheduler/app_scheduler.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/app_timer2.c \ + $(SDK_ROOT)/components/libraries/util/app_util_platform.c \ + $(SDK_ROOT)/components/libraries/crc16/crc16.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/drv_rtc.c \ + $(SDK_ROOT)/components/libraries/util/nrf_assert.c \ + $(SDK_ROOT)/components/libraries/atomic_fifo/nrf_atfifo.c \ + $(SDK_ROOT)/components/libraries/atomic/nrf_atomic.c \ + $(SDK_ROOT)/components/libraries/balloc/nrf_balloc.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf_format.c \ + $(SDK_ROOT)/components/libraries/memobj/nrf_memobj.c \ + $(SDK_ROOT)/components/libraries/queue/nrf_queue.c \ + $(SDK_ROOT)/components/libraries/ringbuf/nrf_ringbuf.c \ + $(SDK_ROOT)/components/libraries/experimental_section_vars/nrf_section_iter.c \ + $(SDK_ROOT)/components/libraries/sortlist/nrf_sortlist.c \ + $(SDK_ROOT)/components/libraries/strerror/nrf_strerror.c \ + $(SDK_ROOT)/modules/nrfx/mdk/system_nrf52.c \ + $(SDK_ROOT)/components/boards/boards.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/ble_dtm_init.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_event_enc.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_evt_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gap_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gap_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gatt_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gattc_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gattc_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gattc_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gatts_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gatts_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gatts_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_l2cap_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_l2cap_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_l2cap_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/ble_serialization.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/cond_field_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_gap_sec_keys.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_l2cap_sdu_pool.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_user_mem.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/conn_mw.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gap.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gattc.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gatts.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_l2cap.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/conn_mw_nrf_soc.c \ + $(SDK_ROOT)/components/serialization/connectivity/hal/dtm_uart.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/nrf_soc_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/nrf_soc_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_dtm_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_error_handling.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_event_encoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_handlers.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_pkt_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_reset_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/common/ser_dbg_sd_str.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_hal_transport.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/ser_phy_hci.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/ser_phy_hci_slip.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_clock.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_uart.c \ + $(SDK_ROOT)/modules/nrfx/soc/nrfx_atomic.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ + $(PROJ_DIR)/main.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_printf.c \ + $(SDK_ROOT)/components/ble/common/ble_advdata.c \ + $(SDK_ROOT)/components/ble/common/ble_conn_params.c \ + $(SDK_ROOT)/components/ble/ble_dtm/ble_dtm.c \ + $(SDK_ROOT)/components/ble/ble_dtm/ble_dtm_hw_nrf52.c \ + $(SDK_ROOT)/components/ble/common/ble_srv_common.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh_ble.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh_soc.c \ + +# Include folders common to all targets +INC_FOLDERS += \ + $(SDK_ROOT)/components \ + $(SDK_ROOT)/components/serialization/connectivity/hal \ + $(SDK_ROOT)/modules/nrfx/mdk \ + $(SDK_ROOT)/components/libraries/scheduler \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers \ + $(SDK_ROOT)/components/toolchain/cmsis/include \ + $(SDK_ROOT)/components/libraries/queue \ + $(SDK_ROOT)/components/libraries/timer \ + $(SDK_ROOT)/components/boards \ + $(SDK_ROOT)/components/serialization/connectivity \ + $(SDK_ROOT)/components/libraries/strerror \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware \ + $(SDK_ROOT)/components/libraries/crc16 \ + $(SDK_ROOT)/components/ble/ble_dtm \ + $(SDK_ROOT)/components/serialization/common \ + $(SDK_ROOT)/components/libraries/util \ + ../config \ + $(SDK_ROOT)/components/ble/common \ + $(SDK_ROOT)/components/libraries/balloc \ + $(SDK_ROOT)/components/libraries/ringbuf \ + $(SDK_ROOT)/modules/nrfx/hal \ + $(SDK_ROOT)/components/libraries/bsp \ + $(SDK_ROOT)/components/libraries/log \ + $(SDK_ROOT)/modules/nrfx \ + $(SDK_ROOT)/components/libraries/experimental_section_vars \ + $(SDK_ROOT)/integration/nrfx/legacy \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy \ + $(SDK_ROOT)/components/softdevice/s132v5/headers \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common \ + $(SDK_ROOT)/components/libraries/delay \ + $(SDK_ROOT)/external/segger_rtt \ + $(SDK_ROOT)/components/libraries/atomic_fifo \ + $(SDK_ROOT)/components/libraries/atomic \ + $(SDK_ROOT)/components/libraries/sortlist \ + $(SDK_ROOT)/components/libraries/memobj \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble \ + $(SDK_ROOT)/integration/nrfx \ + $(SDK_ROOT)/components/serialization/common/transport \ + $(SDK_ROOT)/components/libraries/timer/experimental \ + $(SDK_ROOT)/components/softdevice/common \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/config \ + $(SDK_ROOT)/modules/nrfx/drivers/include \ + $(SDK_ROOT)/components/softdevice/s132v5/headers/nrf52 \ + $(SDK_ROOT)/external/fprintf \ + $(SDK_ROOT)/components/libraries/log/src \ + +# Libraries common to all targets +LIB_FILES += \ + +# Optimization flags +OPT = -Os -g3 +# Uncomment the line below to enable link time optimization +#OPT += -flto + +# C flags common to all targets +CFLAGS += $(OPT) +CFLAGS += -DAPP_TIMER_V2 +CFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +CFLAGS += -DBLE_STACK_SUPPORT_REQD +CFLAGS += -DBOARD_PCA10040 +CFLAGS += -DBSP_DEFINES_ONLY +CFLAGS += -DCONFIG_GPIO_AS_PINRESET +CFLAGS += -DFLOAT_ABI_HARD +CFLAGS += -DHCI_TIMER2 +CFLAGS += -DNRF52 +CFLAGS += -DNRF52832_XXAA +CFLAGS += -DNRF52_PAN_74 +CFLAGS += -DNRF_SD_BLE_API_VERSION=5 +CFLAGS += -DS132 +CFLAGS += -DSER_CONNECTIVITY +CFLAGS += -DSER_PHY_HCI +CFLAGS += -DSOFTDEVICE_PRESENT +CFLAGS += -mcpu=cortex-m4 +CFLAGS += -mthumb -mabi=aapcs +CFLAGS += -Wall -Werror +CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# keep every function in a separate section, this allows linker to discard unused ones +CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing +CFLAGS += -fno-builtin -fshort-enums + +# C++ flags common to all targets +CXXFLAGS += $(OPT) + +# Assembler flags common to all targets +ASMFLAGS += -g3 +ASMFLAGS += -mcpu=cortex-m4 +ASMFLAGS += -mthumb -mabi=aapcs +ASMFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +ASMFLAGS += -DAPP_TIMER_V2 +ASMFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +ASMFLAGS += -DBLE_STACK_SUPPORT_REQD +ASMFLAGS += -DBOARD_PCA10040 +ASMFLAGS += -DBSP_DEFINES_ONLY +ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET +ASMFLAGS += -DFLOAT_ABI_HARD +ASMFLAGS += -DHCI_TIMER2 +ASMFLAGS += -DNRF52 +ASMFLAGS += -DNRF52832_XXAA +ASMFLAGS += -DNRF52_PAN_74 +ASMFLAGS += -DNRF_SD_BLE_API_VERSION=5 +ASMFLAGS += -DS132 +ASMFLAGS += -DSER_CONNECTIVITY +ASMFLAGS += -DSER_PHY_HCI +ASMFLAGS += -DSOFTDEVICE_PRESENT + +# Linker flags +LDFLAGS += $(OPT) +LDFLAGS += -mthumb -mabi=aapcs -L$(SDK_ROOT)/modules/nrfx/mdk -T$(LINKER_SCRIPT) +LDFLAGS += -mcpu=cortex-m4 +LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# let linker dump unused sections +LDFLAGS += -Wl,--gc-sections +# use newlib in nano version +LDFLAGS += --specs=nano.specs + +nrf52832_xxaa: CFLAGS += -D__HEAP_SIZE=512 +nrf52832_xxaa: CFLAGS += -D__STACK_SIZE=2048 +nrf52832_xxaa: ASMFLAGS += -D__HEAP_SIZE=512 +nrf52832_xxaa: ASMFLAGS += -D__STACK_SIZE=2048 + +# Add standard libraries at the very end of the linker input, after all objects +# that may need symbols provided by these libraries. +LIB_FILES += -lc -lnosys -lm + + +.PHONY: default help + +# Default target - first one defined +default: nrf52832_xxaa + +# Print all targets that can be built +help: + @echo following targets are available: + @echo nrf52832_xxaa + @echo flash_softdevice + @echo sdk_config - starting external tool for editing sdk_config.h + @echo flash - flashing binary + +TEMPLATE_PATH := $(SDK_ROOT)/components/toolchain/gcc + + +include $(TEMPLATE_PATH)/Makefile.common + +$(foreach target, $(TARGETS), $(call define_target, $(target))) + +.PHONY: flash flash_softdevice erase + +# Flash the program +flash: default + @echo Flashing: $(OUTPUT_DIRECTORY)/nrf52832_xxaa.hex + nrfjprog -f nrf52 --program $(OUTPUT_DIRECTORY)/nrf52832_xxaa.hex --sectorerase + nrfjprog -f nrf52 --reset + +# Flash softdevice +flash_softdevice: + @echo Flashing: s132_nrf52_5.1.0_softdevice.hex + nrfjprog -f nrf52 --program $(SDK_ROOT)/components/softdevice/s132v5/hex/s132_nrf52_5.1.0_softdevice.hex --sectorerase + nrfjprog -f nrf52 --reset + +erase: + nrfjprog -f nrf52 --eraseall + +SDK_CONFIG_FILE := ../config/sdk_config.h +CMSIS_CONFIG_TOOL := $(SDK_ROOT)/external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar +sdk_config: + java -jar $(CMSIS_CONFIG_TOOL) $(SDK_CONFIG_FILE) diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/armgcc/ble_connectivity_gcc_nrf52.ld new file mode 100644 index 0000000..e673708 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -0,0 +1,108 @@ +/* Linker script to configure memory regions. */ + +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x23000, LENGTH = 0x5d000 + RAM (rwx) : ORIGIN = 0x2000a5f8, LENGTH = 0x5a08 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 +} + +SECTIONS +{ + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info +} + +SECTIONS +{ + . = ALIGN(4); + .mem_section_dummy_ram : + { + } + .log_dynamic_data : + { + PROVIDE(__start_log_dynamic_data = .); + KEEP(*(SORT(.log_dynamic_data*))) + PROVIDE(__stop_log_dynamic_data = .); + } > RAM + .log_filter_data : + { + PROVIDE(__start_log_filter_data = .); + KEEP(*(SORT(.log_filter_data*))) + PROVIDE(__stop_log_filter_data = .); + } > RAM + +} INSERT AFTER .data; + +SECTIONS +{ + .mem_section_dummy_rom : + { + } + .sdh_ble_observers : + { + PROVIDE(__start_sdh_ble_observers = .); + KEEP(*(SORT(.sdh_ble_observers*))) + PROVIDE(__stop_sdh_ble_observers = .); + } > FLASH + .sdh_soc_observers : + { + PROVIDE(__start_sdh_soc_observers = .); + KEEP(*(SORT(.sdh_soc_observers*))) + PROVIDE(__stop_sdh_soc_observers = .); + } > FLASH + .nrf_queue : + { + PROVIDE(__start_nrf_queue = .); + KEEP(*(.nrf_queue)) + PROVIDE(__stop_nrf_queue = .); + } > FLASH + .log_const_data : + { + PROVIDE(__start_log_const_data = .); + KEEP(*(SORT(.log_const_data*))) + PROVIDE(__stop_log_const_data = .); + } > FLASH + .nrf_balloc : + { + PROVIDE(__start_nrf_balloc = .); + KEEP(*(.nrf_balloc)) + PROVIDE(__stop_nrf_balloc = .); + } > FLASH + .sdh_state_observers : + { + PROVIDE(__start_sdh_state_observers = .); + KEEP(*(SORT(.sdh_state_observers*))) + PROVIDE(__stop_sdh_state_observers = .); + } > FLASH + .sdh_stack_observers : + { + PROVIDE(__start_sdh_stack_observers = .); + KEEP(*(SORT(.sdh_stack_observers*))) + PROVIDE(__stop_sdh_stack_observers = .); + } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH + .log_backends : + { + PROVIDE(__start_log_backends = .); + KEEP(*(SORT(.log_backends*))) + PROVIDE(__stop_log_backends = .); + } > FLASH + +} INSERT AFTER .text + + +INCLUDE "nrf_common.ld" diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/config/sdk_config.h new file mode 100644 index 0000000..6f253c2 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/config/sdk_config.h @@ -0,0 +1,4724 @@ +/** + * Copyright (c) 2017 - 2019, 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. + * + */ + + + +#ifndef SDK_CONFIG_H +#define SDK_CONFIG_H +// <<< Use Configuration Wizard in Context Menu >>>\n +#ifdef USE_APP_CONFIG +#include "app_config.h" +#endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + +// nRF_BLE + +//========================================================== +// BLE_DTM_ENABLED - ble_dtm - Module for testing RF/PHY using DTM commands + + +#ifndef BLE_DTM_ENABLED +#define BLE_DTM_ENABLED 1 +#endif + +// NRF_BLE_CONN_PARAMS_ENABLED - ble_conn_params - Initiating and executing a connection parameters negotiation procedure +//========================================================== +#ifndef NRF_BLE_CONN_PARAMS_ENABLED +#define NRF_BLE_CONN_PARAMS_ENABLED 1 +#endif +// NRF_BLE_CONN_PARAMS_MAX_SLAVE_LATENCY_DEVIATION - The largest acceptable deviation in slave latency. +// The largest deviation (+ or -) from the requested slave latency that will not be renegotiated. + +#ifndef NRF_BLE_CONN_PARAMS_MAX_SLAVE_LATENCY_DEVIATION +#define NRF_BLE_CONN_PARAMS_MAX_SLAVE_LATENCY_DEVIATION 499 +#endif + +// NRF_BLE_CONN_PARAMS_MAX_SUPERVISION_TIMEOUT_DEVIATION - The largest acceptable deviation (in 10 ms units) in supervision timeout. +// The largest deviation (+ or -, in 10 ms units) from the requested supervision timeout that will not be renegotiated. + +#ifndef NRF_BLE_CONN_PARAMS_MAX_SUPERVISION_TIMEOUT_DEVIATION +#define NRF_BLE_CONN_PARAMS_MAX_SUPERVISION_TIMEOUT_DEVIATION 65535 +#endif + +// + +// +//========================================================== + +// nRF_Drivers + +//========================================================== +// NRFX_CLOCK_ENABLED - nrfx_clock - CLOCK peripheral driver +//========================================================== +#ifndef NRFX_CLOCK_ENABLED +#define NRFX_CLOCK_ENABLED 1 +#endif +// NRFX_CLOCK_CONFIG_LF_SRC - LF Clock Source + +// <0=> RC +// <1=> XTAL +// <2=> Synth +// <131073=> External Low Swing +// <196609=> External Full Swing + +#ifndef NRFX_CLOCK_CONFIG_LF_SRC +#define NRFX_CLOCK_CONFIG_LF_SRC 1 +#endif + +// NRFX_CLOCK_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_CLOCK_CONFIG_IRQ_PRIORITY +#define NRFX_CLOCK_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_CLOCK_CONFIG_LOG_ENABLED +#define NRFX_CLOCK_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_CLOCK_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_CLOCK_CONFIG_LOG_LEVEL +#define NRFX_CLOCK_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_CLOCK_CONFIG_INFO_COLOR +#define NRFX_CLOCK_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_CLOCK_CONFIG_DEBUG_COLOR +#define NRFX_CLOCK_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_PRS_ENABLED - nrfx_prs - Peripheral Resource Sharing module +//========================================================== +#ifndef NRFX_PRS_ENABLED +#define NRFX_PRS_ENABLED 1 +#endif +// NRFX_PRS_BOX_0_ENABLED - Enables box 0 in the module. + + +#ifndef NRFX_PRS_BOX_0_ENABLED +#define NRFX_PRS_BOX_0_ENABLED 0 +#endif + +// NRFX_PRS_BOX_1_ENABLED - Enables box 1 in the module. + + +#ifndef NRFX_PRS_BOX_1_ENABLED +#define NRFX_PRS_BOX_1_ENABLED 0 +#endif + +// NRFX_PRS_BOX_2_ENABLED - Enables box 2 in the module. + + +#ifndef NRFX_PRS_BOX_2_ENABLED +#define NRFX_PRS_BOX_2_ENABLED 0 +#endif + +// NRFX_PRS_BOX_3_ENABLED - Enables box 3 in the module. + + +#ifndef NRFX_PRS_BOX_3_ENABLED +#define NRFX_PRS_BOX_3_ENABLED 0 +#endif + +// NRFX_PRS_BOX_4_ENABLED - Enables box 4 in the module. + + +#ifndef NRFX_PRS_BOX_4_ENABLED +#define NRFX_PRS_BOX_4_ENABLED 1 +#endif + +// NRFX_PRS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_PRS_CONFIG_LOG_ENABLED +#define NRFX_PRS_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_PRS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_PRS_CONFIG_LOG_LEVEL +#define NRFX_PRS_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_PRS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_PRS_CONFIG_INFO_COLOR +#define NRFX_PRS_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_PRS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_PRS_CONFIG_DEBUG_COLOR +#define NRFX_PRS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_UARTE_ENABLED - nrfx_uarte - UARTE peripheral driver +//========================================================== +#ifndef NRFX_UARTE_ENABLED +#define NRFX_UARTE_ENABLED 1 +#endif +// NRFX_UARTE0_ENABLED - Enable UARTE0 instance +#ifndef NRFX_UARTE0_ENABLED +#define NRFX_UARTE0_ENABLED 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_HWFC +#define NRFX_UARTE_DEFAULT_CONFIG_HWFC 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_PARITY +#define NRFX_UARTE_DEFAULT_CONFIG_PARITY 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <8388608=> 31250 baud +// <10289152=> 38400 baud +// <15007744=> 56000 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE +#define NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE 30801920 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY +#define NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_UARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_UARTE_CONFIG_LOG_ENABLED +#define NRFX_UARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_UARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_UARTE_CONFIG_LOG_LEVEL +#define NRFX_UARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_UARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UARTE_CONFIG_INFO_COLOR +#define NRFX_UARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_UARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UARTE_CONFIG_DEBUG_COLOR +#define NRFX_UARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_UART_ENABLED - nrfx_uart - UART peripheral driver +//========================================================== +#ifndef NRFX_UART_ENABLED +#define NRFX_UART_ENABLED 1 +#endif +// NRFX_UART0_ENABLED - Enable UART0 instance +#ifndef NRFX_UART0_ENABLED +#define NRFX_UART0_ENABLED 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef NRFX_UART_DEFAULT_CONFIG_HWFC +#define NRFX_UART_DEFAULT_CONFIG_HWFC 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef NRFX_UART_DEFAULT_CONFIG_PARITY +#define NRFX_UART_DEFAULT_CONFIG_PARITY 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3866624=> 14400 baud +// <5152768=> 19200 baud +// <7729152=> 28800 baud +// <8388608=> 31250 baud +// <10309632=> 38400 baud +// <15007744=> 56000 baud +// <15462400=> 57600 baud +// <20615168=> 76800 baud +// <30924800=> 115200 baud +// <61845504=> 230400 baud +// <67108864=> 250000 baud +// <123695104=> 460800 baud +// <247386112=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRFX_UART_DEFAULT_CONFIG_BAUDRATE +#define NRFX_UART_DEFAULT_CONFIG_BAUDRATE 30924800 +#endif + +// NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY +#define NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_UART_CONFIG_LOG_ENABLED +#define NRFX_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_UART_CONFIG_LOG_LEVEL +#define NRFX_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UART_CONFIG_INFO_COLOR +#define NRFX_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UART_CONFIG_DEBUG_COLOR +#define NRFX_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRF_CLOCK_ENABLED - nrf_drv_clock - CLOCK peripheral driver - legacy layer +//========================================================== +#ifndef NRF_CLOCK_ENABLED +#define NRF_CLOCK_ENABLED 1 +#endif +// CLOCK_CONFIG_LF_SRC - LF Clock Source + +// <0=> RC +// <1=> XTAL +// <2=> Synth +// <131073=> External Low Swing +// <196609=> External Full Swing + +#ifndef CLOCK_CONFIG_LF_SRC +#define CLOCK_CONFIG_LF_SRC 1 +#endif + +// CLOCK_CONFIG_LF_CAL_ENABLED - Calibration enable for LF Clock Source + + +#ifndef CLOCK_CONFIG_LF_CAL_ENABLED +#define CLOCK_CONFIG_LF_CAL_ENABLED 0 +#endif + +// CLOCK_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef CLOCK_CONFIG_IRQ_PRIORITY +#define CLOCK_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer +//========================================================== +#ifndef UART_ENABLED +#define UART_ENABLED 1 +#endif +// UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef UART_DEFAULT_CONFIG_HWFC +#define UART_DEFAULT_CONFIG_HWFC 0 +#endif + +// UART_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef UART_DEFAULT_CONFIG_PARITY +#define UART_DEFAULT_CONFIG_PARITY 0 +#endif + +// UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <10289152=> 38400 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef UART_DEFAULT_CONFIG_BAUDRATE +#define UART_DEFAULT_CONFIG_BAUDRATE 30801920 +#endif + +// UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef UART_DEFAULT_CONFIG_IRQ_PRIORITY +#define UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// UART_EASY_DMA_SUPPORT - Driver supporting EasyDMA + + +#ifndef UART_EASY_DMA_SUPPORT +#define UART_EASY_DMA_SUPPORT 1 +#endif + +// UART_LEGACY_SUPPORT - Driver supporting Legacy mode + + +#ifndef UART_LEGACY_SUPPORT +#define UART_LEGACY_SUPPORT 1 +#endif + +// UART0_ENABLED - Enable UART0 instance +//========================================================== +#ifndef UART0_ENABLED +#define UART0_ENABLED 1 +#endif +// UART0_CONFIG_USE_EASY_DMA - Default setting for using EasyDMA + + +#ifndef UART0_CONFIG_USE_EASY_DMA +#define UART0_CONFIG_USE_EASY_DMA 1 +#endif + +// + +// + +// +//========================================================== + +// nRF_Libraries + +//========================================================== +// APP_SCHEDULER_ENABLED - app_scheduler - Events scheduler +//========================================================== +#ifndef APP_SCHEDULER_ENABLED +#define APP_SCHEDULER_ENABLED 1 +#endif +// APP_SCHEDULER_WITH_PAUSE - Enabling pause feature + + +#ifndef APP_SCHEDULER_WITH_PAUSE +#define APP_SCHEDULER_WITH_PAUSE 1 +#endif + +// APP_SCHEDULER_WITH_PROFILER - Enabling scheduler profiling + + +#ifndef APP_SCHEDULER_WITH_PROFILER +#define APP_SCHEDULER_WITH_PROFILER 1 +#endif + +// + +// APP_TIMER_ENABLED - app_timer - Application timer functionality +//========================================================== +#ifndef APP_TIMER_ENABLED +#define APP_TIMER_ENABLED 1 +#endif +// APP_TIMER_CONFIG_RTC_FREQUENCY - Configure RTC prescaler. + +// <0=> 32768 Hz +// <1=> 16384 Hz +// <3=> 8192 Hz +// <7=> 4096 Hz +// <15=> 2048 Hz +// <31=> 1024 Hz + +#ifndef APP_TIMER_CONFIG_RTC_FREQUENCY +#define APP_TIMER_CONFIG_RTC_FREQUENCY 1 +#endif + +// APP_TIMER_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef APP_TIMER_CONFIG_IRQ_PRIORITY +#define APP_TIMER_CONFIG_IRQ_PRIORITY 6 +#endif + +// APP_TIMER_CONFIG_OP_QUEUE_SIZE - Capacity of timer requests queue. +// Size of the queue depends on how many timers are used +// in the system, how often timers are started and overall +// system latency. If queue size is too small app_timer calls +// will fail. + +#ifndef APP_TIMER_CONFIG_OP_QUEUE_SIZE +#define APP_TIMER_CONFIG_OP_QUEUE_SIZE 10 +#endif + +// APP_TIMER_CONFIG_USE_SCHEDULER - Enable scheduling app_timer events to app_scheduler + + +#ifndef APP_TIMER_CONFIG_USE_SCHEDULER +#define APP_TIMER_CONFIG_USE_SCHEDULER 0 +#endif + +// APP_TIMER_KEEPS_RTC_ACTIVE - Enable RTC always on + + +// If option is enabled RTC is kept running even if there is no active timers. +// This option can be used when app_timer is used for timestamping. + +#ifndef APP_TIMER_KEEPS_RTC_ACTIVE +#define APP_TIMER_KEEPS_RTC_ACTIVE 0 +#endif + +// APP_TIMER_SAFE_WINDOW_MS - Maximum possible latency (in milliseconds) of handling app_timer event. +// Maximum possible timeout that can be set is reduced by safe window. +// Example: RTC frequency 16384 Hz, maximum possible timeout 1024 seconds - APP_TIMER_SAFE_WINDOW_MS. +// Since RTC is not stopped when processor is halted in debugging session, this value +// must cover it if debugging is needed. It is possible to halt processor for APP_TIMER_SAFE_WINDOW_MS +// without corrupting app_timer behavior. + +#ifndef APP_TIMER_SAFE_WINDOW_MS +#define APP_TIMER_SAFE_WINDOW_MS 300000 +#endif + +// App Timer Legacy configuration - Legacy configuration. + +//========================================================== +// APP_TIMER_WITH_PROFILER - Enable app_timer profiling + + +#ifndef APP_TIMER_WITH_PROFILER +#define APP_TIMER_WITH_PROFILER 0 +#endif + +// APP_TIMER_CONFIG_SWI_NUMBER - Configure SWI instance used. + + +#ifndef APP_TIMER_CONFIG_SWI_NUMBER +#define APP_TIMER_CONFIG_SWI_NUMBER 0 +#endif + +// +//========================================================== + +// + +// CRC16_ENABLED - crc16 - CRC16 calculation routines + + +#ifndef CRC16_ENABLED +#define CRC16_ENABLED 1 +#endif + +// NRF_BALLOC_ENABLED - nrf_balloc - Block allocator module +//========================================================== +#ifndef NRF_BALLOC_ENABLED +#define NRF_BALLOC_ENABLED 1 +#endif +// NRF_BALLOC_CONFIG_DEBUG_ENABLED - Enables debug mode in the module. +//========================================================== +#ifndef NRF_BALLOC_CONFIG_DEBUG_ENABLED +#define NRF_BALLOC_CONFIG_DEBUG_ENABLED 0 +#endif +// NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS - Number of words used as head guard. <0-255> + + +#ifndef NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS +#define NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS 1 +#endif + +// NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS - Number of words used as tail guard. <0-255> + + +#ifndef NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS +#define NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS 1 +#endif + +// NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED - Enables basic checks in this module. + + +#ifndef NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED +#define NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED 0 +#endif + +// NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED - Enables double memory free check in this module. + + +#ifndef NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED +#define NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED 0 +#endif + +// NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED - Enables free memory corruption check in this module. + + +#ifndef NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED +#define NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED 0 +#endif + +// NRF_BALLOC_CLI_CMDS - Enable CLI commands specific to the module + + +#ifndef NRF_BALLOC_CLI_CMDS +#define NRF_BALLOC_CLI_CMDS 0 +#endif + +// + +// + +// NRF_MEMOBJ_ENABLED - nrf_memobj - Linked memory allocator module + + +#ifndef NRF_MEMOBJ_ENABLED +#define NRF_MEMOBJ_ENABLED 1 +#endif + +// NRF_QUEUE_ENABLED - nrf_queue - Queue module +//========================================================== +#ifndef NRF_QUEUE_ENABLED +#define NRF_QUEUE_ENABLED 1 +#endif +// NRF_QUEUE_CLI_CMDS - Enable CLI commands specific to the module + + +#ifndef NRF_QUEUE_CLI_CMDS +#define NRF_QUEUE_CLI_CMDS 0 +#endif + +// + +// NRF_SECTION_ITER_ENABLED - nrf_section_iter - Section iterator + + +#ifndef NRF_SECTION_ITER_ENABLED +#define NRF_SECTION_ITER_ENABLED 1 +#endif + +// NRF_SORTLIST_ENABLED - nrf_sortlist - Sorted list + + +#ifndef NRF_SORTLIST_ENABLED +#define NRF_SORTLIST_ENABLED 1 +#endif + +// NRF_STRERROR_ENABLED - nrf_strerror - Library for converting error code to string. + + +#ifndef NRF_STRERROR_ENABLED +#define NRF_STRERROR_ENABLED 1 +#endif + +// nrf_fprintf - fprintf function. + +//========================================================== +// NRF_FPRINTF_ENABLED - Enable/disable fprintf module. + + +#ifndef NRF_FPRINTF_ENABLED +#define NRF_FPRINTF_ENABLED 1 +#endif + +// NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED - For each printed LF, function will add CR. + + +#ifndef NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED +#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 1 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_Log + +//========================================================== +// NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend +//========================================================== +#ifndef NRF_LOG_BACKEND_RTT_ENABLED +#define NRF_LOG_BACKEND_RTT_ENABLED 0 +#endif +// NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. +// Size of the buffer is a trade-off between RAM usage and processing. +// if buffer is smaller then strings will often be fragmented. +// It is recommended to use size which will fit typical log and only the +// longer one will be fragmented. + +#ifndef NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE +#define NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE 64 +#endif + +// NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS - Period before retrying writing to RTT +#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS +#define NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS 1 +#endif + +// NRF_LOG_BACKEND_RTT_TX_RETRY_CNT - Writing to RTT retries. +// If RTT fails to accept any new data after retries +// module assumes that host is not active and on next +// request it will perform only one write attempt. +// On successful writing, module assumes that host is active +// and scheme with retry is applied again. + +#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_CNT +#define NRF_LOG_BACKEND_RTT_TX_RETRY_CNT 3 +#endif + +// + +// NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend +//========================================================== +#ifndef NRF_LOG_BACKEND_UART_ENABLED +#define NRF_LOG_BACKEND_UART_ENABLED 0 +#endif +// NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin +#ifndef NRF_LOG_BACKEND_UART_TX_PIN +#define NRF_LOG_BACKEND_UART_TX_PIN 6 +#endif + +// NRF_LOG_BACKEND_UART_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <10289152=> 38400 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRF_LOG_BACKEND_UART_BAUDRATE +#define NRF_LOG_BACKEND_UART_BAUDRATE 30801920 +#endif + +// NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. +// Size of the buffer is a trade-off between RAM usage and processing. +// if buffer is smaller then strings will often be fragmented. +// It is recommended to use size which will fit typical log and only the +// longer one will be fragmented. + +#ifndef NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE +#define NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE 64 +#endif + +// + +// NRF_LOG_ENABLED - nrf_log - Logger +//========================================================== +#ifndef NRF_LOG_ENABLED +#define NRF_LOG_ENABLED 0 +#endif +// Log message pool - Configuration of log message pool + +//========================================================== +// NRF_LOG_MSGPOOL_ELEMENT_SIZE - Size of a single element in the pool of memory objects. +// If a small value is set, then performance of logs processing +// is degraded because data is fragmented. Bigger value impacts +// RAM memory utilization. The size is set to fit a message with +// a timestamp and up to 2 arguments in a single memory object. + +#ifndef NRF_LOG_MSGPOOL_ELEMENT_SIZE +#define NRF_LOG_MSGPOOL_ELEMENT_SIZE 20 +#endif + +// NRF_LOG_MSGPOOL_ELEMENT_COUNT - Number of elements in the pool of memory objects +// If a small value is set, then it may lead to a deadlock +// in certain cases if backend has high latency and holds +// multiple messages for long time. Bigger value impacts +// RAM memory usage. + +#ifndef NRF_LOG_MSGPOOL_ELEMENT_COUNT +#define NRF_LOG_MSGPOOL_ELEMENT_COUNT 8 +#endif + +// +//========================================================== + +// NRF_LOG_ALLOW_OVERFLOW - Configures behavior when circular buffer is full. + + +// If set then oldest logs are overwritten. Otherwise a +// marker is injected informing about overflow. + +#ifndef NRF_LOG_ALLOW_OVERFLOW +#define NRF_LOG_ALLOW_OVERFLOW 1 +#endif + +// NRF_LOG_BUFSIZE - Size of the buffer for storing logs (in bytes). + + +// Must be power of 2 and multiple of 4. +// If NRF_LOG_DEFERRED = 0 then buffer size can be reduced to minimum. +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 +// <2048=> 2048 +// <4096=> 4096 +// <8192=> 8192 +// <16384=> 16384 + +#ifndef NRF_LOG_BUFSIZE +#define NRF_LOG_BUFSIZE 1024 +#endif + +// NRF_LOG_CLI_CMDS - Enable CLI commands for the module. + + +#ifndef NRF_LOG_CLI_CMDS +#define NRF_LOG_CLI_CMDS 0 +#endif + +// NRF_LOG_DEFAULT_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_LOG_DEFAULT_LEVEL +#define NRF_LOG_DEFAULT_LEVEL 3 +#endif + +// NRF_LOG_DEFERRED - Enable deffered logger. + + +// Log data is buffered and can be processed in idle. + +#ifndef NRF_LOG_DEFERRED +#define NRF_LOG_DEFERRED 1 +#endif + +// NRF_LOG_FILTERS_ENABLED - Enable dynamic filtering of logs. + + +#ifndef NRF_LOG_FILTERS_ENABLED +#define NRF_LOG_FILTERS_ENABLED 0 +#endif + +// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. + +// <16=> 16 +// <32=> 32 +// <64=> 64 +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 + +#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE +#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 +#endif + +// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. + +// <16=> 16 +// <32=> 32 +// <64=> 64 +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 + +#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE +#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 +#endif + +// NRF_LOG_USES_COLORS - If enabled then ANSI escape code for colors is prefixed to every string +//========================================================== +#ifndef NRF_LOG_USES_COLORS +#define NRF_LOG_USES_COLORS 0 +#endif +// NRF_LOG_COLOR_DEFAULT - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_COLOR_DEFAULT +#define NRF_LOG_COLOR_DEFAULT 0 +#endif + +// NRF_LOG_ERROR_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_ERROR_COLOR +#define NRF_LOG_ERROR_COLOR 2 +#endif + +// NRF_LOG_WARNING_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_WARNING_COLOR +#define NRF_LOG_WARNING_COLOR 4 +#endif + +// + +// NRF_LOG_USES_TIMESTAMP - Enable timestamping + +// Function for getting the timestamp is provided by the user +//========================================================== +#ifndef NRF_LOG_USES_TIMESTAMP +#define NRF_LOG_USES_TIMESTAMP 0 +#endif +// NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY - Default frequency of the timestamp (in Hz) or 0 to use app_timer frequency. +#ifndef NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY +#define NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY 0 +#endif + +// + +// nrf_log module configuration + +//========================================================== +// nrf_log in nRF_Core + +//========================================================== +// NRF_MPU_LIB_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_MPU_LIB_CONFIG_LOG_ENABLED +#define NRF_MPU_LIB_CONFIG_LOG_ENABLED 0 +#endif +// NRF_MPU_LIB_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_MPU_LIB_CONFIG_LOG_LEVEL +#define NRF_MPU_LIB_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_MPU_LIB_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MPU_LIB_CONFIG_INFO_COLOR +#define NRF_MPU_LIB_CONFIG_INFO_COLOR 0 +#endif + +// NRF_MPU_LIB_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MPU_LIB_CONFIG_DEBUG_COLOR +#define NRF_MPU_LIB_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_STACK_GUARD_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_STACK_GUARD_CONFIG_LOG_ENABLED +#define NRF_STACK_GUARD_CONFIG_LOG_ENABLED 0 +#endif +// NRF_STACK_GUARD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_STACK_GUARD_CONFIG_LOG_LEVEL +#define NRF_STACK_GUARD_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_STACK_GUARD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_STACK_GUARD_CONFIG_INFO_COLOR +#define NRF_STACK_GUARD_CONFIG_INFO_COLOR 0 +#endif + +// NRF_STACK_GUARD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_STACK_GUARD_CONFIG_DEBUG_COLOR +#define NRF_STACK_GUARD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TASK_MANAGER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TASK_MANAGER_CONFIG_LOG_ENABLED +#define TASK_MANAGER_CONFIG_LOG_ENABLED 0 +#endif +// TASK_MANAGER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TASK_MANAGER_CONFIG_LOG_LEVEL +#define TASK_MANAGER_CONFIG_LOG_LEVEL 3 +#endif + +// TASK_MANAGER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TASK_MANAGER_CONFIG_INFO_COLOR +#define TASK_MANAGER_CONFIG_INFO_COLOR 0 +#endif + +// TASK_MANAGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TASK_MANAGER_CONFIG_DEBUG_COLOR +#define TASK_MANAGER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Drivers + +//========================================================== +// CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef CLOCK_CONFIG_LOG_ENABLED +#define CLOCK_CONFIG_LOG_ENABLED 0 +#endif +// CLOCK_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef CLOCK_CONFIG_LOG_LEVEL +#define CLOCK_CONFIG_LOG_LEVEL 3 +#endif + +// CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef CLOCK_CONFIG_INFO_COLOR +#define CLOCK_CONFIG_INFO_COLOR 0 +#endif + +// CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef CLOCK_CONFIG_DEBUG_COLOR +#define CLOCK_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// COMP_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef COMP_CONFIG_LOG_ENABLED +#define COMP_CONFIG_LOG_ENABLED 0 +#endif +// COMP_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef COMP_CONFIG_LOG_LEVEL +#define COMP_CONFIG_LOG_LEVEL 3 +#endif + +// COMP_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef COMP_CONFIG_INFO_COLOR +#define COMP_CONFIG_INFO_COLOR 0 +#endif + +// COMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef COMP_CONFIG_DEBUG_COLOR +#define COMP_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// GPIOTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef GPIOTE_CONFIG_LOG_ENABLED +#define GPIOTE_CONFIG_LOG_ENABLED 0 +#endif +// GPIOTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef GPIOTE_CONFIG_LOG_LEVEL +#define GPIOTE_CONFIG_LOG_LEVEL 3 +#endif + +// GPIOTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef GPIOTE_CONFIG_INFO_COLOR +#define GPIOTE_CONFIG_INFO_COLOR 0 +#endif + +// GPIOTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef GPIOTE_CONFIG_DEBUG_COLOR +#define GPIOTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// LPCOMP_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef LPCOMP_CONFIG_LOG_ENABLED +#define LPCOMP_CONFIG_LOG_ENABLED 0 +#endif +// LPCOMP_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef LPCOMP_CONFIG_LOG_LEVEL +#define LPCOMP_CONFIG_LOG_LEVEL 3 +#endif + +// LPCOMP_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef LPCOMP_CONFIG_INFO_COLOR +#define LPCOMP_CONFIG_INFO_COLOR 0 +#endif + +// LPCOMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef LPCOMP_CONFIG_DEBUG_COLOR +#define LPCOMP_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// MAX3421E_HOST_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef MAX3421E_HOST_CONFIG_LOG_ENABLED +#define MAX3421E_HOST_CONFIG_LOG_ENABLED 0 +#endif +// MAX3421E_HOST_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef MAX3421E_HOST_CONFIG_LOG_LEVEL +#define MAX3421E_HOST_CONFIG_LOG_LEVEL 3 +#endif + +// MAX3421E_HOST_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef MAX3421E_HOST_CONFIG_INFO_COLOR +#define MAX3421E_HOST_CONFIG_INFO_COLOR 0 +#endif + +// MAX3421E_HOST_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef MAX3421E_HOST_CONFIG_DEBUG_COLOR +#define MAX3421E_HOST_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRFX_USBD_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef NRFX_USBD_CONFIG_LOG_ENABLED +#define NRFX_USBD_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_USBD_CONFIG_LOG_LEVEL +#define NRFX_USBD_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_USBD_CONFIG_INFO_COLOR +#define NRFX_USBD_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_USBD_CONFIG_DEBUG_COLOR +#define NRFX_USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PDM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PDM_CONFIG_LOG_ENABLED +#define PDM_CONFIG_LOG_ENABLED 0 +#endif +// PDM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PDM_CONFIG_LOG_LEVEL +#define PDM_CONFIG_LOG_LEVEL 3 +#endif + +// PDM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PDM_CONFIG_INFO_COLOR +#define PDM_CONFIG_INFO_COLOR 0 +#endif + +// PDM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PDM_CONFIG_DEBUG_COLOR +#define PDM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PPI_CONFIG_LOG_ENABLED +#define PPI_CONFIG_LOG_ENABLED 0 +#endif +// PPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PPI_CONFIG_LOG_LEVEL +#define PPI_CONFIG_LOG_LEVEL 3 +#endif + +// PPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PPI_CONFIG_INFO_COLOR +#define PPI_CONFIG_INFO_COLOR 0 +#endif + +// PPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PPI_CONFIG_DEBUG_COLOR +#define PPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PWM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PWM_CONFIG_LOG_ENABLED +#define PWM_CONFIG_LOG_ENABLED 0 +#endif +// PWM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PWM_CONFIG_LOG_LEVEL +#define PWM_CONFIG_LOG_LEVEL 3 +#endif + +// PWM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PWM_CONFIG_INFO_COLOR +#define PWM_CONFIG_INFO_COLOR 0 +#endif + +// PWM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PWM_CONFIG_DEBUG_COLOR +#define PWM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// QDEC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef QDEC_CONFIG_LOG_ENABLED +#define QDEC_CONFIG_LOG_ENABLED 0 +#endif +// QDEC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef QDEC_CONFIG_LOG_LEVEL +#define QDEC_CONFIG_LOG_LEVEL 3 +#endif + +// QDEC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef QDEC_CONFIG_INFO_COLOR +#define QDEC_CONFIG_INFO_COLOR 0 +#endif + +// QDEC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef QDEC_CONFIG_DEBUG_COLOR +#define QDEC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// RNG_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef RNG_CONFIG_LOG_ENABLED +#define RNG_CONFIG_LOG_ENABLED 0 +#endif +// RNG_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef RNG_CONFIG_LOG_LEVEL +#define RNG_CONFIG_LOG_LEVEL 3 +#endif + +// RNG_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RNG_CONFIG_INFO_COLOR +#define RNG_CONFIG_INFO_COLOR 0 +#endif + +// RNG_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RNG_CONFIG_DEBUG_COLOR +#define RNG_CONFIG_DEBUG_COLOR 0 +#endif + +// RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED - Enables logging of random numbers. + + +#ifndef RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED +#define RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED 0 +#endif + +// + +// RTC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef RTC_CONFIG_LOG_ENABLED +#define RTC_CONFIG_LOG_ENABLED 0 +#endif +// RTC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef RTC_CONFIG_LOG_LEVEL +#define RTC_CONFIG_LOG_LEVEL 3 +#endif + +// RTC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RTC_CONFIG_INFO_COLOR +#define RTC_CONFIG_INFO_COLOR 0 +#endif + +// RTC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RTC_CONFIG_DEBUG_COLOR +#define RTC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SAADC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SAADC_CONFIG_LOG_ENABLED +#define SAADC_CONFIG_LOG_ENABLED 0 +#endif +// SAADC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SAADC_CONFIG_LOG_LEVEL +#define SAADC_CONFIG_LOG_LEVEL 3 +#endif + +// SAADC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SAADC_CONFIG_INFO_COLOR +#define SAADC_CONFIG_INFO_COLOR 0 +#endif + +// SAADC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SAADC_CONFIG_DEBUG_COLOR +#define SAADC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SPIS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SPIS_CONFIG_LOG_ENABLED +#define SPIS_CONFIG_LOG_ENABLED 0 +#endif +// SPIS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SPIS_CONFIG_LOG_LEVEL +#define SPIS_CONFIG_LOG_LEVEL 3 +#endif + +// SPIS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPIS_CONFIG_INFO_COLOR +#define SPIS_CONFIG_INFO_COLOR 0 +#endif + +// SPIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPIS_CONFIG_DEBUG_COLOR +#define SPIS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SPI_CONFIG_LOG_ENABLED +#define SPI_CONFIG_LOG_ENABLED 0 +#endif +// SPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SPI_CONFIG_LOG_LEVEL +#define SPI_CONFIG_LOG_LEVEL 3 +#endif + +// SPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPI_CONFIG_INFO_COLOR +#define SPI_CONFIG_INFO_COLOR 0 +#endif + +// SPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPI_CONFIG_DEBUG_COLOR +#define SPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TIMER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TIMER_CONFIG_LOG_ENABLED +#define TIMER_CONFIG_LOG_ENABLED 0 +#endif +// TIMER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TIMER_CONFIG_LOG_LEVEL +#define TIMER_CONFIG_LOG_LEVEL 3 +#endif + +// TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TIMER_CONFIG_INFO_COLOR +#define TIMER_CONFIG_INFO_COLOR 0 +#endif + +// TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TIMER_CONFIG_DEBUG_COLOR +#define TIMER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TWIS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TWIS_CONFIG_LOG_ENABLED +#define TWIS_CONFIG_LOG_ENABLED 0 +#endif +// TWIS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TWIS_CONFIG_LOG_LEVEL +#define TWIS_CONFIG_LOG_LEVEL 3 +#endif + +// TWIS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWIS_CONFIG_INFO_COLOR +#define TWIS_CONFIG_INFO_COLOR 0 +#endif + +// TWIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWIS_CONFIG_DEBUG_COLOR +#define TWIS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TWI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TWI_CONFIG_LOG_ENABLED +#define TWI_CONFIG_LOG_ENABLED 0 +#endif +// TWI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TWI_CONFIG_LOG_LEVEL +#define TWI_CONFIG_LOG_LEVEL 3 +#endif + +// TWI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWI_CONFIG_INFO_COLOR +#define TWI_CONFIG_INFO_COLOR 0 +#endif + +// TWI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWI_CONFIG_DEBUG_COLOR +#define TWI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef UART_CONFIG_LOG_ENABLED +#define UART_CONFIG_LOG_ENABLED 0 +#endif +// UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef UART_CONFIG_LOG_LEVEL +#define UART_CONFIG_LOG_LEVEL 3 +#endif + +// UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef UART_CONFIG_INFO_COLOR +#define UART_CONFIG_INFO_COLOR 0 +#endif + +// UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef UART_CONFIG_DEBUG_COLOR +#define UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// USBD_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef USBD_CONFIG_LOG_ENABLED +#define USBD_CONFIG_LOG_ENABLED 0 +#endif +// USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef USBD_CONFIG_LOG_LEVEL +#define USBD_CONFIG_LOG_LEVEL 3 +#endif + +// USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef USBD_CONFIG_INFO_COLOR +#define USBD_CONFIG_INFO_COLOR 0 +#endif + +// USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef USBD_CONFIG_DEBUG_COLOR +#define USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// WDT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef WDT_CONFIG_LOG_ENABLED +#define WDT_CONFIG_LOG_ENABLED 0 +#endif +// WDT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef WDT_CONFIG_LOG_LEVEL +#define WDT_CONFIG_LOG_LEVEL 3 +#endif + +// WDT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef WDT_CONFIG_INFO_COLOR +#define WDT_CONFIG_INFO_COLOR 0 +#endif + +// WDT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef WDT_CONFIG_DEBUG_COLOR +#define WDT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Libraries + +//========================================================== +// APP_TIMER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_TIMER_CONFIG_LOG_ENABLED +#define APP_TIMER_CONFIG_LOG_ENABLED 0 +#endif +// APP_TIMER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_TIMER_CONFIG_LOG_LEVEL +#define APP_TIMER_CONFIG_LOG_LEVEL 3 +#endif + +// APP_TIMER_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled. + + +// If module generates a lot of logs, initial log level can +// be decreased to prevent flooding. Severity level can be +// increased on instance basis. +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_TIMER_CONFIG_INITIAL_LOG_LEVEL +#define APP_TIMER_CONFIG_INITIAL_LOG_LEVEL 3 +#endif + +// APP_TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_TIMER_CONFIG_INFO_COLOR +#define APP_TIMER_CONFIG_INFO_COLOR 0 +#endif + +// APP_TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_TIMER_CONFIG_DEBUG_COLOR +#define APP_TIMER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED +#define APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL +#define APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_CDC_ACM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CDC_ACM_CONFIG_INFO_COLOR +#define APP_USBD_CDC_ACM_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR +#define APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_CONFIG_LOG_ENABLED - Enable logging in the module. +//========================================================== +#ifndef APP_USBD_CONFIG_LOG_ENABLED +#define APP_USBD_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_CONFIG_LOG_LEVEL +#define APP_USBD_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CONFIG_INFO_COLOR +#define APP_USBD_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CONFIG_DEBUG_COLOR +#define APP_USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_DUMMY_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_DUMMY_CONFIG_LOG_ENABLED +#define APP_USBD_DUMMY_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_DUMMY_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_DUMMY_CONFIG_LOG_LEVEL +#define APP_USBD_DUMMY_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_DUMMY_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_DUMMY_CONFIG_INFO_COLOR +#define APP_USBD_DUMMY_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_DUMMY_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_DUMMY_CONFIG_DEBUG_COLOR +#define APP_USBD_DUMMY_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_MSC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_MSC_CONFIG_LOG_ENABLED +#define APP_USBD_MSC_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_MSC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_MSC_CONFIG_LOG_LEVEL +#define APP_USBD_MSC_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_MSC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_MSC_CONFIG_INFO_COLOR +#define APP_USBD_MSC_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_MSC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_MSC_CONFIG_DEBUG_COLOR +#define APP_USBD_MSC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_ATFIFO_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_ATFIFO_CONFIG_LOG_ENABLED +#define NRF_ATFIFO_CONFIG_LOG_ENABLED 0 +#endif +// NRF_ATFIFO_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_ATFIFO_CONFIG_LOG_LEVEL +#define NRF_ATFIFO_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_ATFIFO_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_ATFIFO_CONFIG_INFO_COLOR +#define NRF_ATFIFO_CONFIG_INFO_COLOR 0 +#endif + +// NRF_ATFIFO_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_ATFIFO_CONFIG_DEBUG_COLOR +#define NRF_ATFIFO_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BALLOC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BALLOC_CONFIG_LOG_ENABLED +#define NRF_BALLOC_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BALLOC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BALLOC_CONFIG_LOG_LEVEL +#define NRF_BALLOC_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled. + + +// If module generates a lot of logs, initial log level can +// be decreased to prevent flooding. Severity level can be +// increased on instance basis. +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL +#define NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL 3 +#endif + +// NRF_BALLOC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BALLOC_CONFIG_INFO_COLOR +#define NRF_BALLOC_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BALLOC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BALLOC_CONFIG_DEBUG_COLOR +#define NRF_BALLOC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED +#define NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL +#define NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_BLE_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_BLE_UART_CONFIG_INFO_COLOR +#define NRF_CLI_BLE_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR +#define NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED +#define NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL +#define NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR +#define NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR +#define NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_UART_CONFIG_LOG_ENABLED +#define NRF_CLI_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_UART_CONFIG_LOG_LEVEL +#define NRF_CLI_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_UART_CONFIG_INFO_COLOR +#define NRF_CLI_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_UART_CONFIG_DEBUG_COLOR +#define NRF_CLI_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_LIBUARTE_CONFIG_LOG_ENABLED +#define NRF_LIBUARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_LIBUARTE_CONFIG_LOG_LEVEL +#define NRF_LIBUARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LIBUARTE_CONFIG_INFO_COLOR +#define NRF_LIBUARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LIBUARTE_CONFIG_DEBUG_COLOR +#define NRF_LIBUARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_MEMOBJ_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_MEMOBJ_CONFIG_LOG_ENABLED +#define NRF_MEMOBJ_CONFIG_LOG_ENABLED 0 +#endif +// NRF_MEMOBJ_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_MEMOBJ_CONFIG_LOG_LEVEL +#define NRF_MEMOBJ_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_MEMOBJ_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MEMOBJ_CONFIG_INFO_COLOR +#define NRF_MEMOBJ_CONFIG_INFO_COLOR 0 +#endif + +// NRF_MEMOBJ_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MEMOBJ_CONFIG_DEBUG_COLOR +#define NRF_MEMOBJ_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_PWR_MGMT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_PWR_MGMT_CONFIG_LOG_ENABLED +#define NRF_PWR_MGMT_CONFIG_LOG_ENABLED 0 +#endif +// NRF_PWR_MGMT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_PWR_MGMT_CONFIG_LOG_LEVEL +#define NRF_PWR_MGMT_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_PWR_MGMT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_PWR_MGMT_CONFIG_INFO_COLOR +#define NRF_PWR_MGMT_CONFIG_INFO_COLOR 0 +#endif + +// NRF_PWR_MGMT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_PWR_MGMT_CONFIG_DEBUG_COLOR +#define NRF_PWR_MGMT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_QUEUE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_QUEUE_CONFIG_LOG_ENABLED +#define NRF_QUEUE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_QUEUE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_QUEUE_CONFIG_LOG_LEVEL +#define NRF_QUEUE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_QUEUE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_QUEUE_CONFIG_INFO_COLOR +#define NRF_QUEUE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_QUEUE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_QUEUE_CONFIG_DEBUG_COLOR +#define NRF_QUEUE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_ANT_LOG_ENABLED - Enable logging in SoftDevice handler (ANT) module. +//========================================================== +#ifndef NRF_SDH_ANT_LOG_ENABLED +#define NRF_SDH_ANT_LOG_ENABLED 0 +#endif +// NRF_SDH_ANT_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_ANT_LOG_LEVEL +#define NRF_SDH_ANT_LOG_LEVEL 3 +#endif + +// NRF_SDH_ANT_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_ANT_INFO_COLOR +#define NRF_SDH_ANT_INFO_COLOR 0 +#endif + +// NRF_SDH_ANT_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_ANT_DEBUG_COLOR +#define NRF_SDH_ANT_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_BLE_LOG_ENABLED - Enable logging in SoftDevice handler (BLE) module. +//========================================================== +#ifndef NRF_SDH_BLE_LOG_ENABLED +#define NRF_SDH_BLE_LOG_ENABLED 1 +#endif +// NRF_SDH_BLE_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_BLE_LOG_LEVEL +#define NRF_SDH_BLE_LOG_LEVEL 3 +#endif + +// NRF_SDH_BLE_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_BLE_INFO_COLOR +#define NRF_SDH_BLE_INFO_COLOR 0 +#endif + +// NRF_SDH_BLE_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_BLE_DEBUG_COLOR +#define NRF_SDH_BLE_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_LOG_ENABLED - Enable logging in SoftDevice handler module. +//========================================================== +#ifndef NRF_SDH_LOG_ENABLED +#define NRF_SDH_LOG_ENABLED 1 +#endif +// NRF_SDH_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_LOG_LEVEL +#define NRF_SDH_LOG_LEVEL 3 +#endif + +// NRF_SDH_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_INFO_COLOR +#define NRF_SDH_INFO_COLOR 0 +#endif + +// NRF_SDH_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_DEBUG_COLOR +#define NRF_SDH_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_SOC_LOG_ENABLED - Enable logging in SoftDevice handler (SoC) module. +//========================================================== +#ifndef NRF_SDH_SOC_LOG_ENABLED +#define NRF_SDH_SOC_LOG_ENABLED 1 +#endif +// NRF_SDH_SOC_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_SOC_LOG_LEVEL +#define NRF_SDH_SOC_LOG_LEVEL 3 +#endif + +// NRF_SDH_SOC_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_SOC_INFO_COLOR +#define NRF_SDH_SOC_INFO_COLOR 0 +#endif + +// NRF_SDH_SOC_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_SOC_DEBUG_COLOR +#define NRF_SDH_SOC_DEBUG_COLOR 0 +#endif + +// + +// NRF_SORTLIST_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_SORTLIST_CONFIG_LOG_ENABLED +#define NRF_SORTLIST_CONFIG_LOG_ENABLED 0 +#endif +// NRF_SORTLIST_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SORTLIST_CONFIG_LOG_LEVEL +#define NRF_SORTLIST_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_SORTLIST_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SORTLIST_CONFIG_INFO_COLOR +#define NRF_SORTLIST_CONFIG_INFO_COLOR 0 +#endif + +// NRF_SORTLIST_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SORTLIST_CONFIG_DEBUG_COLOR +#define NRF_SORTLIST_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_TWI_SENSOR_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_TWI_SENSOR_CONFIG_LOG_ENABLED +#define NRF_TWI_SENSOR_CONFIG_LOG_ENABLED 0 +#endif +// NRF_TWI_SENSOR_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_TWI_SENSOR_CONFIG_LOG_LEVEL +#define NRF_TWI_SENSOR_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_TWI_SENSOR_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_TWI_SENSOR_CONFIG_INFO_COLOR +#define NRF_TWI_SENSOR_CONFIG_INFO_COLOR 0 +#endif + +// NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR +#define NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PM_LOG_ENABLED - Enable logging in Peer Manager and its submodules. +//========================================================== +#ifndef PM_LOG_ENABLED +#define PM_LOG_ENABLED 1 +#endif +// PM_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PM_LOG_LEVEL +#define PM_LOG_LEVEL 3 +#endif + +// PM_LOG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PM_LOG_INFO_COLOR +#define PM_LOG_INFO_COLOR 0 +#endif + +// PM_LOG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PM_LOG_DEBUG_COLOR +#define PM_LOG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Serialization + +//========================================================== +// SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED +#define SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED 0 +#endif +// SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL +#define SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL 3 +#endif + +// SER_HAL_TRANSPORT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SER_HAL_TRANSPORT_CONFIG_INFO_COLOR +#define SER_HAL_TRANSPORT_CONFIG_INFO_COLOR 0 +#endif + +// SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR +#define SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// +//========================================================== + +// + +// NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED - nrf_log_str_formatter - Log string formatter + + +#ifndef NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED +#define NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED 1 +#endif + +// +//========================================================== + +// nRF_Segger_RTT + +//========================================================== +// segger_rtt - SEGGER RTT + +//========================================================== +// SEGGER_RTT_CONFIG_BUFFER_SIZE_UP - Size of upstream buffer. +// Note that either @ref NRF_LOG_BACKEND_RTT_OUTPUT_BUFFER_SIZE +// or this value is actually used. It depends on which one is bigger. + +#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_UP +#define SEGGER_RTT_CONFIG_BUFFER_SIZE_UP 512 +#endif + +// SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS - Maximum number of upstream buffers. +#ifndef SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS +#define SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS 2 +#endif + +// SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN - Size of downstream buffer. +#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN +#define SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN 16 +#endif + +// SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS - Maximum number of downstream buffers. +#ifndef SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS +#define SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS 2 +#endif + +// SEGGER_RTT_CONFIG_DEFAULT_MODE - RTT behavior if the buffer is full. + + +// The following modes are supported: +// - SKIP - Do not block, output nothing. +// - TRIM - Do not block, output as much as fits. +// - BLOCK - Wait until there is space in the buffer. +// <0=> SKIP +// <1=> TRIM +// <2=> BLOCK_IF_FIFO_FULL + +#ifndef SEGGER_RTT_CONFIG_DEFAULT_MODE +#define SEGGER_RTT_CONFIG_DEFAULT_MODE 0 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_SoftDevice + +//========================================================== +// NRF_SDH_BLE_ENABLED - nrf_sdh_ble - SoftDevice BLE event handler +//========================================================== +#ifndef NRF_SDH_BLE_ENABLED +#define NRF_SDH_BLE_ENABLED 1 +#endif +// BLE Stack configuration - Stack configuration parameters + +// The SoftDevice handler will configure the stack with these parameters when calling @ref nrf_sdh_ble_default_cfg_set. +// Other libraries might depend on these values; keep them up-to-date even if you are not explicitely calling @ref nrf_sdh_ble_default_cfg_set. +//========================================================== +// NRF_SDH_BLE_GAP_DATA_LENGTH <27-251> + + +// Requested BLE GAP data length to be negotiated. + +#ifndef NRF_SDH_BLE_GAP_DATA_LENGTH +#define NRF_SDH_BLE_GAP_DATA_LENGTH 27 +#endif + +// NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. +#ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 +#endif + +// NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. +#ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 +#endif + +// NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. +// Maximum number of total concurrent connections using the default configuration. + +#ifndef NRF_SDH_BLE_TOTAL_LINK_COUNT +#define NRF_SDH_BLE_TOTAL_LINK_COUNT 1 +#endif + +// NRF_SDH_BLE_GAP_EVENT_LENGTH - GAP event length. +// The time set aside for this connection on every connection interval in 1.25 ms units. + +#ifndef NRF_SDH_BLE_GAP_EVENT_LENGTH +#define NRF_SDH_BLE_GAP_EVENT_LENGTH 6 +#endif + +// NRF_SDH_BLE_GATT_MAX_MTU_SIZE - Static maximum MTU size. +#ifndef NRF_SDH_BLE_GATT_MAX_MTU_SIZE +#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 250 +#endif + +// NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE - Attribute Table size in bytes. The size must be a multiple of 4. +#ifndef NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE +#define NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE 1408 +#endif + +// NRF_SDH_BLE_VS_UUID_COUNT - The number of vendor-specific UUIDs. +#ifndef NRF_SDH_BLE_VS_UUID_COUNT +#define NRF_SDH_BLE_VS_UUID_COUNT 0 +#endif + +// NRF_SDH_BLE_SERVICE_CHANGED - Include the Service Changed characteristic in the Attribute Table. + + +#ifndef NRF_SDH_BLE_SERVICE_CHANGED +#define NRF_SDH_BLE_SERVICE_CHANGED 0 +#endif + +// +//========================================================== + +// BLE Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_BLE_OBSERVER_PRIO_LEVELS - Total number of priority levels for BLE observers. +// This setting configures the number of priority levels available for BLE event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_BLE_OBSERVER_PRIO_LEVELS +#define NRF_SDH_BLE_OBSERVER_PRIO_LEVELS 4 +#endif + +// BLE Observers priorities - Invididual priorities + +//========================================================== +// BLE_ADV_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Advertising module. + +#ifndef BLE_ADV_BLE_OBSERVER_PRIO +#define BLE_ADV_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_ANCS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Apple Notification Service Client. + +#ifndef BLE_ANCS_C_BLE_OBSERVER_PRIO +#define BLE_ANCS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_ANS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Alert Notification Service Client. + +#ifndef BLE_ANS_C_BLE_OBSERVER_PRIO +#define BLE_ANS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BAS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Battery Service. + +#ifndef BLE_BAS_BLE_OBSERVER_PRIO +#define BLE_BAS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BAS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Battery Service Client. + +#ifndef BLE_BAS_C_BLE_OBSERVER_PRIO +#define BLE_BAS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BPS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Blood Pressure Service. + +#ifndef BLE_BPS_BLE_OBSERVER_PRIO +#define BLE_BPS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_CONN_PARAMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Connection parameters module. + +#ifndef BLE_CONN_PARAMS_BLE_OBSERVER_PRIO +#define BLE_CONN_PARAMS_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_CONN_STATE_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Connection State module. + +#ifndef BLE_CONN_STATE_BLE_OBSERVER_PRIO +#define BLE_CONN_STATE_BLE_OBSERVER_PRIO 0 +#endif + +// BLE_CSCS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Cycling Speed and Cadence Service. + +#ifndef BLE_CSCS_BLE_OBSERVER_PRIO +#define BLE_CSCS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_CTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Current Time Service Client. + +#ifndef BLE_CTS_C_BLE_OBSERVER_PRIO +#define BLE_CTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_DB_DISC_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Database Discovery module. + +#ifndef BLE_DB_DISC_BLE_OBSERVER_PRIO +#define BLE_DB_DISC_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_DFU_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the DFU Service. + +#ifndef BLE_DFU_BLE_OBSERVER_PRIO +#define BLE_DFU_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_DIS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Device Information Client. + +#ifndef BLE_DIS_C_BLE_OBSERVER_PRIO +#define BLE_DIS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_GLS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Glucose Service. + +#ifndef BLE_GLS_BLE_OBSERVER_PRIO +#define BLE_GLS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HIDS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Human Interface Device Service. + +#ifndef BLE_HIDS_BLE_OBSERVER_PRIO +#define BLE_HIDS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HRS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Heart Rate Service. + +#ifndef BLE_HRS_BLE_OBSERVER_PRIO +#define BLE_HRS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HRS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Heart Rate Service Client. + +#ifndef BLE_HRS_C_BLE_OBSERVER_PRIO +#define BLE_HRS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HTS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Health Thermometer Service. + +#ifndef BLE_HTS_BLE_OBSERVER_PRIO +#define BLE_HTS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_IAS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Immediate Alert Service. + +#ifndef BLE_IAS_BLE_OBSERVER_PRIO +#define BLE_IAS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_IAS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Immediate Alert Service Client. + +#ifndef BLE_IAS_C_BLE_OBSERVER_PRIO +#define BLE_IAS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LBS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the LED Button Service. + +#ifndef BLE_LBS_BLE_OBSERVER_PRIO +#define BLE_LBS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LBS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the LED Button Service Client. + +#ifndef BLE_LBS_C_BLE_OBSERVER_PRIO +#define BLE_LBS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LLS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Link Loss Service. + +#ifndef BLE_LLS_BLE_OBSERVER_PRIO +#define BLE_LLS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LNS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Location Navigation Service. + +#ifndef BLE_LNS_BLE_OBSERVER_PRIO +#define BLE_LNS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_NUS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the UART Service. + +#ifndef BLE_NUS_BLE_OBSERVER_PRIO +#define BLE_NUS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_NUS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the UART Central Service. + +#ifndef BLE_NUS_C_BLE_OBSERVER_PRIO +#define BLE_NUS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_OTS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Object transfer service. + +#ifndef BLE_OTS_BLE_OBSERVER_PRIO +#define BLE_OTS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_OTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Object transfer service client. + +#ifndef BLE_OTS_C_BLE_OBSERVER_PRIO +#define BLE_OTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_RSCS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Running Speed and Cadence Service. + +#ifndef BLE_RSCS_BLE_OBSERVER_PRIO +#define BLE_RSCS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_RSCS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Running Speed and Cadence Client. + +#ifndef BLE_RSCS_C_BLE_OBSERVER_PRIO +#define BLE_RSCS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_TPS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the TX Power Service. + +#ifndef BLE_TPS_BLE_OBSERVER_PRIO +#define BLE_TPS_BLE_OBSERVER_PRIO 2 +#endif + +// BSP_BTN_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Button Control module. + +#ifndef BSP_BTN_BLE_OBSERVER_PRIO +#define BSP_BTN_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NRF_BLE_BMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Bond Management Service. + +#ifndef NRF_BLE_BMS_BLE_OBSERVER_PRIO +#define NRF_BLE_BMS_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_CGMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Contiuon Glucose Monitoring Service. + +#ifndef NRF_BLE_CGMS_BLE_OBSERVER_PRIO +#define NRF_BLE_CGMS_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_ES_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Eddystone module. + +#ifndef NRF_BLE_ES_BLE_OBSERVER_PRIO +#define NRF_BLE_ES_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the GATT Service Client. + +#ifndef NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO +#define NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_GATT_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the GATT module. + +#ifndef NRF_BLE_GATT_BLE_OBSERVER_PRIO +#define NRF_BLE_GATT_BLE_OBSERVER_PRIO 1 +#endif + +// NRF_BLE_QWR_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Queued writes module. + +#ifndef NRF_BLE_QWR_BLE_OBSERVER_PRIO +#define NRF_BLE_QWR_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_SCAN_OBSERVER_PRIO +// Priority for dispatching the BLE events to the Scanning Module. + +#ifndef NRF_BLE_SCAN_OBSERVER_PRIO +#define NRF_BLE_SCAN_OBSERVER_PRIO 1 +#endif + +// PM_BLE_OBSERVER_PRIO - Priority with which BLE events are dispatched to the Peer Manager module. +#ifndef PM_BLE_OBSERVER_PRIO +#define PM_BLE_OBSERVER_PRIO 1 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// NRF_SDH_ENABLED - nrf_sdh - SoftDevice handler +//========================================================== +#ifndef NRF_SDH_ENABLED +#define NRF_SDH_ENABLED 1 +#endif +// Dispatch model + +// This setting configures how Stack events are dispatched to the application. +//========================================================== +// NRF_SDH_DISPATCH_MODEL + + +// NRF_SDH_DISPATCH_MODEL_INTERRUPT: SoftDevice events are passed to the application from the interrupt context. +// NRF_SDH_DISPATCH_MODEL_APPSH: SoftDevice events are scheduled using @ref app_scheduler. +// NRF_SDH_DISPATCH_MODEL_POLLING: SoftDevice events are to be fetched manually. +// <0=> NRF_SDH_DISPATCH_MODEL_INTERRUPT +// <1=> NRF_SDH_DISPATCH_MODEL_APPSH +// <2=> NRF_SDH_DISPATCH_MODEL_POLLING + +#ifndef NRF_SDH_DISPATCH_MODEL +#define NRF_SDH_DISPATCH_MODEL 0 +#endif + +// +//========================================================== + +// Clock - SoftDevice clock configuration + +//========================================================== +// NRF_SDH_CLOCK_LF_SRC - SoftDevice clock source. + +// <0=> NRF_CLOCK_LF_SRC_RC +// <1=> NRF_CLOCK_LF_SRC_XTAL +// <2=> NRF_CLOCK_LF_SRC_SYNTH + +#ifndef NRF_SDH_CLOCK_LF_SRC +#define NRF_SDH_CLOCK_LF_SRC 1 +#endif + +// NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval. +#ifndef NRF_SDH_CLOCK_LF_RC_CTIV +#define NRF_SDH_CLOCK_LF_RC_CTIV 0 +#endif + +// NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature. +// How often (in number of calibration intervals) the RC oscillator shall be calibrated +// if the temperature has not changed. + +#ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV +#define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 0 +#endif + +// NRF_SDH_CLOCK_LF_ACCURACY - External clock accuracy used in the LL to compute timing. + +// <0=> NRF_CLOCK_LF_ACCURACY_250_PPM +// <1=> NRF_CLOCK_LF_ACCURACY_500_PPM +// <2=> NRF_CLOCK_LF_ACCURACY_150_PPM +// <3=> NRF_CLOCK_LF_ACCURACY_100_PPM +// <4=> NRF_CLOCK_LF_ACCURACY_75_PPM +// <5=> NRF_CLOCK_LF_ACCURACY_50_PPM +// <6=> NRF_CLOCK_LF_ACCURACY_30_PPM +// <7=> NRF_CLOCK_LF_ACCURACY_20_PPM +// <8=> NRF_CLOCK_LF_ACCURACY_10_PPM +// <9=> NRF_CLOCK_LF_ACCURACY_5_PPM +// <10=> NRF_CLOCK_LF_ACCURACY_2_PPM +// <11=> NRF_CLOCK_LF_ACCURACY_1_PPM + +#ifndef NRF_SDH_CLOCK_LF_ACCURACY +#define NRF_SDH_CLOCK_LF_ACCURACY 7 +#endif + +// +//========================================================== + +// SDH Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_REQ_OBSERVER_PRIO_LEVELS - Total number of priority levels for request observers. +// This setting configures the number of priority levels available for the SoftDevice request event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_REQ_OBSERVER_PRIO_LEVELS +#define NRF_SDH_REQ_OBSERVER_PRIO_LEVELS 2 +#endif + +// NRF_SDH_STATE_OBSERVER_PRIO_LEVELS - Total number of priority levels for state observers. +// This setting configures the number of priority levels available for the SoftDevice state event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_STATE_OBSERVER_PRIO_LEVELS +#define NRF_SDH_STATE_OBSERVER_PRIO_LEVELS 2 +#endif + +// NRF_SDH_STACK_OBSERVER_PRIO_LEVELS - Total number of priority levels for stack event observers. +// This setting configures the number of priority levels available for the SoftDevice stack event handlers (ANT, BLE, SoC). +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_STACK_OBSERVER_PRIO_LEVELS +#define NRF_SDH_STACK_OBSERVER_PRIO_LEVELS 2 +#endif + + +// State Observers priorities - Invididual priorities + +//========================================================== +// CLOCK_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to the Clock driver. + +#ifndef CLOCK_CONFIG_STATE_OBSERVER_PRIO +#define CLOCK_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// POWER_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to the Power driver. + +#ifndef POWER_CONFIG_STATE_OBSERVER_PRIO +#define POWER_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// RNG_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to this module. + +#ifndef RNG_CONFIG_STATE_OBSERVER_PRIO +#define RNG_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// Stack Event Observers priorities - Invididual priorities + +//========================================================== +// NRF_SDH_ANT_STACK_OBSERVER_PRIO +// This setting configures the priority with which ANT events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have ANT events dispatched before or after other stack events, such as BLE or SoC. +// Zero is the highest priority. + +#ifndef NRF_SDH_ANT_STACK_OBSERVER_PRIO +#define NRF_SDH_ANT_STACK_OBSERVER_PRIO 0 +#endif + +// NRF_SDH_BLE_STACK_OBSERVER_PRIO +// This setting configures the priority with which BLE events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have BLE events dispatched before or after other stack events, such as ANT or SoC. +// Zero is the highest priority. + +#ifndef NRF_SDH_BLE_STACK_OBSERVER_PRIO +#define NRF_SDH_BLE_STACK_OBSERVER_PRIO 0 +#endif + +// NRF_SDH_SOC_STACK_OBSERVER_PRIO +// This setting configures the priority with which SoC events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have SoC events dispatched before or after other stack events, such as ANT or BLE. +// Zero is the highest priority. + +#ifndef NRF_SDH_SOC_STACK_OBSERVER_PRIO +#define NRF_SDH_SOC_STACK_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// NRF_SDH_SOC_ENABLED - nrf_sdh_soc - SoftDevice SoC event handler +//========================================================== +#ifndef NRF_SDH_SOC_ENABLED +#define NRF_SDH_SOC_ENABLED 1 +#endif +// SoC Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_SOC_OBSERVER_PRIO_LEVELS - Total number of priority levels for SoC observers. +// This setting configures the number of priority levels available for the SoC event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_SOC_OBSERVER_PRIO_LEVELS +#define NRF_SDH_SOC_OBSERVER_PRIO_LEVELS 2 +#endif + +// SoC Observers priorities - Invididual priorities + +//========================================================== +// BLE_ADV_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Advertising module. + +#ifndef BLE_ADV_SOC_OBSERVER_PRIO +#define BLE_ADV_SOC_OBSERVER_PRIO 1 +#endif + +// BLE_DFU_SOC_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the DFU Service. + +#ifndef BLE_DFU_SOC_OBSERVER_PRIO +#define BLE_DFU_SOC_OBSERVER_PRIO 1 +#endif + +// CLOCK_CONFIG_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Clock driver. + +#ifndef CLOCK_CONFIG_SOC_OBSERVER_PRIO +#define CLOCK_CONFIG_SOC_OBSERVER_PRIO 0 +#endif + +// POWER_CONFIG_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Power driver. + +#ifndef POWER_CONFIG_SOC_OBSERVER_PRIO +#define POWER_CONFIG_SOC_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// +//========================================================== + +// <<< end of configuration section >>> +#endif //SDK_CONFIG_H + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/ses/ble_connectivity_132v5_hci_pca10040.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/ses/ble_connectivity_132v5_hci_pca10040.emProject new file mode 100644 index 0000000..892a50c --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/ses/ble_connectivity_132v5_hci_pca10040.emProject @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/ses/ble_connectivity_132v5_hci_pca10040.emSession nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/ses/ble_connectivity_132v5_hci_pca10040.emSession new file mode 100644 index 0000000..811c3c5 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/ses/ble_connectivity_132v5_hci_pca10040.emSession @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/ses/flash_placement.xml new file mode 100644 index 0000000..c9cc513 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040/ser_s132v5_hci/ses/flash_placement.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/armgcc/ble_connectivity_gcc_nrf52.ld index ceeb4f8..ba62eee 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x19000, LENGTH = 0x17000 RAM (rwx) : ORIGIN = 0x20002750, LENGTH = 0x38b0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -69,12 +77,6 @@ SECTIONS KEEP(*(.nrf_balloc)) PROVIDE(__stop_nrf_balloc = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -87,6 +89,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/config/sdk_config.h index d1570c8..e3e9edb 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -525,6 +592,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer //========================================================== #ifndef UART_ENABLED @@ -4211,132 +4408,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/ses/ble_connectivity_s112_hci_pca10040e.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/ses/ble_connectivity_s112_hci_pca10040e.emProject index 1826a02..638b229 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/ses/ble_connectivity_s112_hci_pca10040e.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/ses/ble_connectivity_s112_hci_pca10040e.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x30000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x6000;FLASH_START=0x19000;FLASH_SIZE=0x17000;RAM_START=0x20002750;RAM_SIZE=0x38b0" - linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000" + linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/ses/flash_placement.xml index b5fb146..c9cc513 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_hci/ses/flash_placement.xml @@ -11,9 +11,9 @@ - + @@ -43,4 +43,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/armgcc/ble_connectivity_gcc_nrf52.ld index 88db698..807e809 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x19000, LENGTH = 0x17000 RAM (rwx) : ORIGIN = 0x20002750, LENGTH = 0x38b0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/config/sdk_config.h index 4216816..38cc9f3 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -726,6 +793,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // SPIS_ENABLED - nrf_drv_spis - SPIS peripheral driver - legacy layer //========================================================== #ifndef SPIS_ENABLED @@ -4456,132 +4653,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/ses/ble_connectivity_s112_spi_pca10040e.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/ses/ble_connectivity_s112_spi_pca10040e.emProject index 647ff91..7f9e8ab 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/ses/ble_connectivity_s112_spi_pca10040e.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/ses/ble_connectivity_s112_spi_pca10040e.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x30000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x6000;FLASH_START=0x19000;FLASH_SIZE=0x17000;RAM_START=0x20002750;RAM_SIZE=0x38b0" - linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000" + linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld index 88db698..807e809 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x19000, LENGTH = 0x17000 RAM (rwx) : ORIGIN = 0x20002750, LENGTH = 0x38b0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/config/sdk_config.h index 4216816..38cc9f3 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -726,6 +793,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // SPIS_ENABLED - nrf_drv_spis - SPIS peripheral driver - legacy layer //========================================================== #ifndef SPIS_ENABLED @@ -4456,132 +4653,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/ses/ble_connectivity_s112_spi_5W_pca10040e.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/ses/ble_connectivity_s112_spi_5W_pca10040e.emProject index f0e55aa..268e67a 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/ses/ble_connectivity_s112_spi_5W_pca10040e.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/ses/ble_connectivity_s112_spi_5W_pca10040e.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x30000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x6000;FLASH_START=0x19000;FLASH_SIZE=0x17000;RAM_START=0x20002750;RAM_SIZE=0x38b0" - linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000" + linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_spi_5W/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/armgcc/ble_connectivity_gcc_nrf52.ld index 88db698..807e809 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x19000, LENGTH = 0x17000 RAM (rwx) : ORIGIN = 0x20002750, LENGTH = 0x38b0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/config/sdk_config.h index 8e17ee5..3e502d5 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -525,6 +592,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer //========================================================== #ifndef UART_ENABLED @@ -4190,132 +4387,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/ses/ble_connectivity_s112_uart_pca10040e.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/ses/ble_connectivity_s112_uart_pca10040e.emProject index 62acbee..256200e 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/ses/ble_connectivity_s112_uart_pca10040e.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/ses/ble_connectivity_s112_uart_pca10040e.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x30000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x6000;FLASH_START=0x19000;FLASH_SIZE=0x17000;RAM_START=0x20002750;RAM_SIZE=0x38b0" - linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000" + linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10040e/ser_s112_uart/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/armgcc/Makefile new file mode 100644 index 0000000..12729cd --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/armgcc/Makefile @@ -0,0 +1,290 @@ +PROJECT_NAME := ble_connectivity_132v3_usb_hci_pca10056 +TARGETS := nrf52840_xxaa +OUTPUT_DIRECTORY := _build + +SDK_ROOT := ../../../../../.. +PROJ_DIR := ../../.. + +$(OUTPUT_DIRECTORY)/nrf52840_xxaa.out: \ + LINKER_SCRIPT := ble_connectivity_gcc_nrf52.ld + +# Source files common to all targets +SRC_FILES += \ + $(SDK_ROOT)/modules/nrfx/mdk/gcc_startup_nrf52840.S \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_rtt.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_serial.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_uart.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_default_backends.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_frontend.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_str_formatter.c \ + $(SDK_ROOT)/components/libraries/util/app_error.c \ + $(SDK_ROOT)/components/libraries/util/app_error_handler_gcc.c \ + $(SDK_ROOT)/components/libraries/util/app_error_weak.c \ + $(SDK_ROOT)/components/libraries/scheduler/app_scheduler.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/app_timer2.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd.c \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc/acm/app_usbd_cdc_acm.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_core.c \ + $(SDK_ROOT)/components/libraries/usbd/class/nrf_dfu_trigger/app_usbd_nrf_dfu_trigger.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_serial_num.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_string_desc.c \ + $(SDK_ROOT)/components/libraries/util/app_util_platform.c \ + $(SDK_ROOT)/components/libraries/crc16/crc16.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/drv_rtc.c \ + $(SDK_ROOT)/components/libraries/util/nrf_assert.c \ + $(SDK_ROOT)/components/libraries/atomic_fifo/nrf_atfifo.c \ + $(SDK_ROOT)/components/libraries/atomic/nrf_atomic.c \ + $(SDK_ROOT)/components/libraries/balloc/nrf_balloc.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf_format.c \ + $(SDK_ROOT)/components/libraries/memobj/nrf_memobj.c \ + $(SDK_ROOT)/components/libraries/queue/nrf_queue.c \ + $(SDK_ROOT)/components/libraries/ringbuf/nrf_ringbuf.c \ + $(SDK_ROOT)/components/libraries/experimental_section_vars/nrf_section_iter.c \ + $(SDK_ROOT)/components/libraries/sortlist/nrf_sortlist.c \ + $(SDK_ROOT)/components/libraries/strerror/nrf_strerror.c \ + $(SDK_ROOT)/modules/nrfx/mdk/system_nrf52840.c \ + $(SDK_ROOT)/components/boards/boards.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/ble_dtm_init.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_event_enc.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_evt_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gap_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gap_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gatt_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gattc_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gattc_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gattc_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gatts_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gatts_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gatts_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_l2cap_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_l2cap_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_l2cap_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/ble_serialization.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/cond_field_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_gap_sec_keys.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_l2cap_sdu_pool.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_user_mem.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/conn_mw.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gap.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gattc.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gatts.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_l2cap.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/conn_mw_nrf_soc.c \ + $(SDK_ROOT)/components/serialization/connectivity/hal/dtm_uart.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/nrf_soc_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/nrf_soc_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_dtm_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_error_handling.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_event_encoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_handlers.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_pkt_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_reset_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/common/ser_dbg_sd_str.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_hal_transport.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/ser_phy_hci.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/ser_phy_hci_slip_cdc.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_clock.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_power.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_uart.c \ + $(SDK_ROOT)/modules/nrfx/soc/nrfx_atomic.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_power.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_qspi.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_systick.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_usbd.c \ + $(PROJ_DIR)/main.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_printf.c \ + $(SDK_ROOT)/components/ble/common/ble_advdata.c \ + $(SDK_ROOT)/components/ble/ble_dtm/ble_dtm.c \ + $(SDK_ROOT)/components/ble/ble_dtm/ble_dtm_hw_nrf52.c \ + $(SDK_ROOT)/components/ble/common/ble_srv_common.c \ + $(SDK_ROOT)/external/utf_converter/utf.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh_ble.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh_soc.c \ + +# Include folders common to all targets +INC_FOLDERS += \ + $(SDK_ROOT)/components \ + $(SDK_ROOT)/components/serialization/connectivity/hal \ + $(SDK_ROOT)/modules/nrfx/mdk \ + $(SDK_ROOT)/components/libraries/scheduler \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers \ + $(SDK_ROOT)/components/toolchain/cmsis/include \ + $(SDK_ROOT)/components/libraries/queue \ + $(SDK_ROOT)/components/libraries/timer \ + $(SDK_ROOT)/components/boards \ + $(SDK_ROOT)/components/serialization/connectivity \ + $(SDK_ROOT)/components/libraries/strerror \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware \ + $(SDK_ROOT)/components/libraries/crc16 \ + $(SDK_ROOT)/components/libraries/bootloader/dfu \ + $(SDK_ROOT)/components/serialization/common \ + $(SDK_ROOT)/components/libraries/util \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc/acm \ + ../config \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc \ + $(SDK_ROOT)/components/ble/common \ + $(SDK_ROOT)/integration/nrfx \ + $(SDK_ROOT)/components/libraries/balloc \ + $(SDK_ROOT)/components/ble/ble_dtm \ + $(SDK_ROOT)/components/libraries/ringbuf \ + $(SDK_ROOT)/modules/nrfx/hal \ + $(SDK_ROOT)/components/libraries/bsp \ + $(SDK_ROOT)/components/softdevice/s132v3/headers/nrf52 \ + $(SDK_ROOT)/components/libraries/log \ + $(SDK_ROOT)/external/utf_converter \ + $(SDK_ROOT)/modules/nrfx \ + $(SDK_ROOT)/components/libraries/experimental_section_vars \ + $(SDK_ROOT)/integration/nrfx/legacy \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy \ + $(SDK_ROOT)/components/libraries/usbd \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common \ + $(SDK_ROOT)/components/libraries/delay \ + $(SDK_ROOT)/external/segger_rtt \ + $(SDK_ROOT)/components/libraries/atomic_fifo \ + $(SDK_ROOT)/components/libraries/atomic \ + $(SDK_ROOT)/components/libraries/sortlist \ + $(SDK_ROOT)/components/libraries/memobj \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble \ + $(SDK_ROOT)/components/softdevice/s132v3/headers \ + $(SDK_ROOT)/components/libraries/usbd/class/nrf_dfu_trigger \ + $(SDK_ROOT)/components/serialization/common/transport \ + $(SDK_ROOT)/components/libraries/timer/experimental \ + $(SDK_ROOT)/components/softdevice/common \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/config \ + $(SDK_ROOT)/modules/nrfx/drivers/include \ + $(SDK_ROOT)/components/libraries/block_dev \ + $(SDK_ROOT)/external/fprintf \ + $(SDK_ROOT)/components/libraries/log/src \ + +# Libraries common to all targets +LIB_FILES += \ + +# Optimization flags +OPT = -Os -g3 +# Uncomment the line below to enable link time optimization +#OPT += -flto + +# C flags common to all targets +CFLAGS += $(OPT) +CFLAGS += -DAPP_TIMER_V2 +CFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +CFLAGS += -DBLE_STACK_SUPPORT_REQD +CFLAGS += -DBOARD_PCA10056 +CFLAGS += -DBSP_DEFINES_ONLY +CFLAGS += -DCONFIG_GPIO_AS_PINRESET +CFLAGS += -DFLOAT_ABI_HARD +CFLAGS += -DHCI_TIMER2 +CFLAGS += -DNRF52840_XXAA +CFLAGS += -DNRF_SD_BLE_API_VERSION=3 +CFLAGS += -DS132 +CFLAGS += -DSER_CONNECTIVITY +CFLAGS += -DSER_PHY_HCI +CFLAGS += -DSER_PHY_HCI_USB_CDC +CFLAGS += -DSOFTDEVICE_PRESENT +CFLAGS += -mcpu=cortex-m4 +CFLAGS += -mthumb -mabi=aapcs +CFLAGS += -Wall -Werror +CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# keep every function in a separate section, this allows linker to discard unused ones +CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing +CFLAGS += -fno-builtin -fshort-enums + +# C++ flags common to all targets +CXXFLAGS += $(OPT) + +# Assembler flags common to all targets +ASMFLAGS += -g3 +ASMFLAGS += -mcpu=cortex-m4 +ASMFLAGS += -mthumb -mabi=aapcs +ASMFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +ASMFLAGS += -DAPP_TIMER_V2 +ASMFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +ASMFLAGS += -DBLE_STACK_SUPPORT_REQD +ASMFLAGS += -DBOARD_PCA10056 +ASMFLAGS += -DBSP_DEFINES_ONLY +ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET +ASMFLAGS += -DFLOAT_ABI_HARD +ASMFLAGS += -DHCI_TIMER2 +ASMFLAGS += -DNRF52840_XXAA +ASMFLAGS += -DNRF_SD_BLE_API_VERSION=3 +ASMFLAGS += -DS132 +ASMFLAGS += -DSER_CONNECTIVITY +ASMFLAGS += -DSER_PHY_HCI +ASMFLAGS += -DSER_PHY_HCI_USB_CDC +ASMFLAGS += -DSOFTDEVICE_PRESENT + +# Linker flags +LDFLAGS += $(OPT) +LDFLAGS += -mthumb -mabi=aapcs -L$(SDK_ROOT)/modules/nrfx/mdk -T$(LINKER_SCRIPT) +LDFLAGS += -mcpu=cortex-m4 +LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# let linker dump unused sections +LDFLAGS += -Wl,--gc-sections +# use newlib in nano version +LDFLAGS += --specs=nano.specs + +nrf52840_xxaa: CFLAGS += -D__HEAP_SIZE=512 +nrf52840_xxaa: CFLAGS += -D__STACK_SIZE=2048 +nrf52840_xxaa: ASMFLAGS += -D__HEAP_SIZE=512 +nrf52840_xxaa: ASMFLAGS += -D__STACK_SIZE=2048 + +# Add standard libraries at the very end of the linker input, after all objects +# that may need symbols provided by these libraries. +LIB_FILES += -lc -lnosys -lm + + +.PHONY: default help + +# Default target - first one defined +default: nrf52840_xxaa + +# Print all targets that can be built +help: + @echo following targets are available: + @echo nrf52840_xxaa + @echo flash_softdevice + @echo sdk_config - starting external tool for editing sdk_config.h + @echo flash - flashing binary + +TEMPLATE_PATH := $(SDK_ROOT)/components/toolchain/gcc + + +include $(TEMPLATE_PATH)/Makefile.common + +$(foreach target, $(TARGETS), $(call define_target, $(target))) + +.PHONY: flash flash_softdevice erase + +# Flash the program +flash: default + @echo Flashing: $(OUTPUT_DIRECTORY)/nrf52840_xxaa.hex + nrfjprog -f nrf52 --program $(OUTPUT_DIRECTORY)/nrf52840_xxaa.hex --sectorerase + nrfjprog -f nrf52 --reset + +# Flash softdevice +flash_softdevice: + @echo Flashing: s132_nrf52_3.0.0_softdevice.hex + nrfjprog -f nrf52 --program $(SDK_ROOT)/components/softdevice/s132v3/hex/s132_nrf52_3.0.0_softdevice.hex --sectorerase + nrfjprog -f nrf52 --reset + +erase: + nrfjprog -f nrf52 --eraseall + +SDK_CONFIG_FILE := ../config/sdk_config.h +CMSIS_CONFIG_TOOL := $(SDK_ROOT)/external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar +sdk_config: + java -jar $(CMSIS_CONFIG_TOOL) $(SDK_CONFIG_FILE) diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld new file mode 100644 index 0000000..97547b2 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -0,0 +1,108 @@ +/* Linker script to configure memory regions. */ + +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x1f000, LENGTH = 0xe1000 + RAM (rwx) : ORIGIN = 0x200199c0, LENGTH = 0x26640 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 +} + +SECTIONS +{ + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info +} + +SECTIONS +{ + . = ALIGN(4); + .mem_section_dummy_ram : + { + } + .log_dynamic_data : + { + PROVIDE(__start_log_dynamic_data = .); + KEEP(*(SORT(.log_dynamic_data*))) + PROVIDE(__stop_log_dynamic_data = .); + } > RAM + .log_filter_data : + { + PROVIDE(__start_log_filter_data = .); + KEEP(*(SORT(.log_filter_data*))) + PROVIDE(__stop_log_filter_data = .); + } > RAM + +} INSERT AFTER .data; + +SECTIONS +{ + .mem_section_dummy_rom : + { + } + .sdh_ble_observers : + { + PROVIDE(__start_sdh_ble_observers = .); + KEEP(*(SORT(.sdh_ble_observers*))) + PROVIDE(__stop_sdh_ble_observers = .); + } > FLASH + .sdh_soc_observers : + { + PROVIDE(__start_sdh_soc_observers = .); + KEEP(*(SORT(.sdh_soc_observers*))) + PROVIDE(__stop_sdh_soc_observers = .); + } > FLASH + .nrf_queue : + { + PROVIDE(__start_nrf_queue = .); + KEEP(*(.nrf_queue)) + PROVIDE(__stop_nrf_queue = .); + } > FLASH + .log_const_data : + { + PROVIDE(__start_log_const_data = .); + KEEP(*(SORT(.log_const_data*))) + PROVIDE(__stop_log_const_data = .); + } > FLASH + .nrf_balloc : + { + PROVIDE(__start_nrf_balloc = .); + KEEP(*(.nrf_balloc)) + PROVIDE(__stop_nrf_balloc = .); + } > FLASH + .sdh_state_observers : + { + PROVIDE(__start_sdh_state_observers = .); + KEEP(*(SORT(.sdh_state_observers*))) + PROVIDE(__stop_sdh_state_observers = .); + } > FLASH + .sdh_stack_observers : + { + PROVIDE(__start_sdh_stack_observers = .); + KEEP(*(SORT(.sdh_stack_observers*))) + PROVIDE(__stop_sdh_stack_observers = .); + } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH + .log_backends : + { + PROVIDE(__start_log_backends = .); + KEEP(*(SORT(.log_backends*))) + PROVIDE(__stop_log_backends = .); + } > FLASH + +} INSERT AFTER .text + + +INCLUDE "nrf_common.ld" diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/config/sdk_config.h new file mode 100644 index 0000000..c4ce132 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/config/sdk_config.h @@ -0,0 +1,5369 @@ +/** + * Copyright (c) 2017 - 2019, 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. + * + */ + + + +#ifndef SDK_CONFIG_H +#define SDK_CONFIG_H +// <<< Use Configuration Wizard in Context Menu >>>\n +#ifdef USE_APP_CONFIG +#include "app_config.h" +#endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "+" __DATE__ " " __TIME__ +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + +// Board Definition + +//========================================================== +// nrf_dfu_trigger_usb - USB DFU Trigger library + +//========================================================== +// NRF_DFU_TRIGGER_USB_USB_SHARED - Flag indicating whether USB is used for other purposes in the application. + + +#ifndef NRF_DFU_TRIGGER_USB_USB_SHARED +#define NRF_DFU_TRIGGER_USB_USB_SHARED 1 +#endif + +// NRF_DFU_TRIGGER_USB_INTERFACE_NUM - The USB interface to use for the DFU Trigger library. <0-255> + + +// According to the USB Specification, interface numbers cannot have +// gaps. Tailor this value to adhere to this limitation. + +#ifndef NRF_DFU_TRIGGER_USB_INTERFACE_NUM +#define NRF_DFU_TRIGGER_USB_INTERFACE_NUM 0 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_BLE + +//========================================================== +// BLE_DTM_ENABLED - ble_dtm - Module for testing RF/PHY using DTM commands + + +#ifndef BLE_DTM_ENABLED +#define BLE_DTM_ENABLED 1 +#endif + +// +//========================================================== + +// nRF_Drivers + +//========================================================== +// NRFX_CLOCK_ENABLED - nrfx_clock - CLOCK peripheral driver +//========================================================== +#ifndef NRFX_CLOCK_ENABLED +#define NRFX_CLOCK_ENABLED 1 +#endif +// NRFX_CLOCK_CONFIG_LF_SRC - LF Clock Source + +// <0=> RC +// <1=> XTAL +// <2=> Synth +// <131073=> External Low Swing +// <196609=> External Full Swing + +#ifndef NRFX_CLOCK_CONFIG_LF_SRC +#define NRFX_CLOCK_CONFIG_LF_SRC 1 +#endif + +// NRFX_CLOCK_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_CLOCK_CONFIG_IRQ_PRIORITY +#define NRFX_CLOCK_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_CLOCK_CONFIG_LOG_ENABLED +#define NRFX_CLOCK_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_CLOCK_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_CLOCK_CONFIG_LOG_LEVEL +#define NRFX_CLOCK_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_CLOCK_CONFIG_INFO_COLOR +#define NRFX_CLOCK_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_CLOCK_CONFIG_DEBUG_COLOR +#define NRFX_CLOCK_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_POWER_ENABLED - nrfx_power - POWER peripheral driver +//========================================================== +#ifndef NRFX_POWER_ENABLED +#define NRFX_POWER_ENABLED 1 +#endif +// NRFX_POWER_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_POWER_CONFIG_IRQ_PRIORITY +#define NRFX_POWER_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_POWER_CONFIG_DEFAULT_DCDCEN - The default configuration of main DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef NRFX_POWER_CONFIG_DEFAULT_DCDCEN +#define NRFX_POWER_CONFIG_DEFAULT_DCDCEN 0 +#endif + +// NRFX_POWER_CONFIG_DEFAULT_DCDCENHV - The default configuration of High Voltage DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef NRFX_POWER_CONFIG_DEFAULT_DCDCENHV +#define NRFX_POWER_CONFIG_DEFAULT_DCDCENHV 0 +#endif + +// + +// NRFX_PRS_ENABLED - nrfx_prs - Peripheral Resource Sharing module +//========================================================== +#ifndef NRFX_PRS_ENABLED +#define NRFX_PRS_ENABLED 1 +#endif +// NRFX_PRS_BOX_0_ENABLED - Enables box 0 in the module. + + +#ifndef NRFX_PRS_BOX_0_ENABLED +#define NRFX_PRS_BOX_0_ENABLED 0 +#endif + +// NRFX_PRS_BOX_1_ENABLED - Enables box 1 in the module. + + +#ifndef NRFX_PRS_BOX_1_ENABLED +#define NRFX_PRS_BOX_1_ENABLED 0 +#endif + +// NRFX_PRS_BOX_2_ENABLED - Enables box 2 in the module. + + +#ifndef NRFX_PRS_BOX_2_ENABLED +#define NRFX_PRS_BOX_2_ENABLED 0 +#endif + +// NRFX_PRS_BOX_3_ENABLED - Enables box 3 in the module. + + +#ifndef NRFX_PRS_BOX_3_ENABLED +#define NRFX_PRS_BOX_3_ENABLED 0 +#endif + +// NRFX_PRS_BOX_4_ENABLED - Enables box 4 in the module. + + +#ifndef NRFX_PRS_BOX_4_ENABLED +#define NRFX_PRS_BOX_4_ENABLED 1 +#endif + +// NRFX_PRS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_PRS_CONFIG_LOG_ENABLED +#define NRFX_PRS_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_PRS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_PRS_CONFIG_LOG_LEVEL +#define NRFX_PRS_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_PRS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_PRS_CONFIG_INFO_COLOR +#define NRFX_PRS_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_PRS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_PRS_CONFIG_DEBUG_COLOR +#define NRFX_PRS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_QSPI_ENABLED - nrfx_qspi - QSPI peripheral driver +//========================================================== +#ifndef NRFX_QSPI_ENABLED +#define NRFX_QSPI_ENABLED 1 +#endif +// NRFX_QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef NRFX_QSPI_CONFIG_SCK_DELAY +#define NRFX_QSPI_CONFIG_SCK_DELAY 1 +#endif + +// NRFX_QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef NRFX_QSPI_CONFIG_XIP_OFFSET +#define NRFX_QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// NRFX_QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef NRFX_QSPI_CONFIG_READOC +#define NRFX_QSPI_CONFIG_READOC 0 +#endif + +// NRFX_QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef NRFX_QSPI_CONFIG_WRITEOC +#define NRFX_QSPI_CONFIG_WRITEOC 0 +#endif + +// NRFX_QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef NRFX_QSPI_CONFIG_ADDRMODE +#define NRFX_QSPI_CONFIG_ADDRMODE 0 +#endif + +// NRFX_QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef NRFX_QSPI_CONFIG_MODE +#define NRFX_QSPI_CONFIG_MODE 0 +#endif + +// NRFX_QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef NRFX_QSPI_CONFIG_FREQUENCY +#define NRFX_QSPI_CONFIG_FREQUENCY 15 +#endif + +// NRFX_QSPI_PIN_SCK - SCK pin value. +#ifndef NRFX_QSPI_PIN_SCK +#define NRFX_QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_CSN - CSN pin value. +#ifndef NRFX_QSPI_PIN_CSN +#define NRFX_QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO0 - IO0 pin value. +#ifndef NRFX_QSPI_PIN_IO0 +#define NRFX_QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO1 - IO1 pin value. +#ifndef NRFX_QSPI_PIN_IO1 +#define NRFX_QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO2 - IO2 pin value. +#ifndef NRFX_QSPI_PIN_IO2 +#define NRFX_QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO3 - IO3 pin value. +#ifndef NRFX_QSPI_PIN_IO3 +#define NRFX_QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_QSPI_CONFIG_IRQ_PRIORITY +#define NRFX_QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// NRFX_SYSTICK_ENABLED - nrfx_systick - ARM(R) SysTick driver + + +#ifndef NRFX_SYSTICK_ENABLED +#define NRFX_SYSTICK_ENABLED 1 +#endif + +// NRFX_UARTE_ENABLED - nrfx_uarte - UARTE peripheral driver +//========================================================== +#ifndef NRFX_UARTE_ENABLED +#define NRFX_UARTE_ENABLED 1 +#endif +// NRFX_UARTE0_ENABLED - Enable UARTE0 instance +#ifndef NRFX_UARTE0_ENABLED +#define NRFX_UARTE0_ENABLED 0 +#endif + +// NRFX_UARTE1_ENABLED - Enable UARTE1 instance +#ifndef NRFX_UARTE1_ENABLED +#define NRFX_UARTE1_ENABLED 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_HWFC +#define NRFX_UARTE_DEFAULT_CONFIG_HWFC 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_PARITY +#define NRFX_UARTE_DEFAULT_CONFIG_PARITY 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <8388608=> 31250 baud +// <10289152=> 38400 baud +// <15007744=> 56000 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE +#define NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE 30801920 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY +#define NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_UARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_UARTE_CONFIG_LOG_ENABLED +#define NRFX_UARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_UARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_UARTE_CONFIG_LOG_LEVEL +#define NRFX_UARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_UARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UARTE_CONFIG_INFO_COLOR +#define NRFX_UARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_UARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UARTE_CONFIG_DEBUG_COLOR +#define NRFX_UARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_UART_ENABLED - nrfx_uart - UART peripheral driver +//========================================================== +#ifndef NRFX_UART_ENABLED +#define NRFX_UART_ENABLED 1 +#endif +// NRFX_UART0_ENABLED - Enable UART0 instance +#ifndef NRFX_UART0_ENABLED +#define NRFX_UART0_ENABLED 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef NRFX_UART_DEFAULT_CONFIG_HWFC +#define NRFX_UART_DEFAULT_CONFIG_HWFC 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef NRFX_UART_DEFAULT_CONFIG_PARITY +#define NRFX_UART_DEFAULT_CONFIG_PARITY 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3866624=> 14400 baud +// <5152768=> 19200 baud +// <7729152=> 28800 baud +// <8388608=> 31250 baud +// <10309632=> 38400 baud +// <15007744=> 56000 baud +// <15462400=> 57600 baud +// <20615168=> 76800 baud +// <30924800=> 115200 baud +// <61845504=> 230400 baud +// <67108864=> 250000 baud +// <123695104=> 460800 baud +// <247386112=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRFX_UART_DEFAULT_CONFIG_BAUDRATE +#define NRFX_UART_DEFAULT_CONFIG_BAUDRATE 30924800 +#endif + +// NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY +#define NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_UART_CONFIG_LOG_ENABLED +#define NRFX_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_UART_CONFIG_LOG_LEVEL +#define NRFX_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UART_CONFIG_INFO_COLOR +#define NRFX_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UART_CONFIG_DEBUG_COLOR +#define NRFX_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_USBD_ENABLED - nrfx_usbd - USBD peripheral driver +//========================================================== +#ifndef NRFX_USBD_ENABLED +#define NRFX_USBD_ENABLED 1 +#endif +// NRFX_USBD_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_USBD_CONFIG_IRQ_PRIORITY +#define NRFX_USBD_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_USBD_CONFIG_DMASCHEDULER_MODE - USBD DMA scheduler working scheme + +// <0=> Prioritized access +// <1=> Round Robin + +#ifndef NRFX_USBD_CONFIG_DMASCHEDULER_MODE +#define NRFX_USBD_CONFIG_DMASCHEDULER_MODE 0 +#endif + +// NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST - Give priority to isochronous transfers + + +// This option gives priority to isochronous transfers. +// Enabling it assures that isochronous transfers are always processed, +// even if multiple other transfers are pending. +// Isochronous endpoints are prioritized before the usbd_dma_scheduler_algorithm +// function is called, so the option is independent of the algorithm chosen. + +#ifndef NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST +#define NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST 1 +#endif + +// NRFX_USBD_CONFIG_ISO_IN_ZLP - Respond to an IN token on ISO IN endpoint with ZLP when no data is ready + + +// If set, ISO IN endpoint will respond to an IN token with ZLP when no data is ready to be sent. +// Else, there will be no response. + +#ifndef NRFX_USBD_CONFIG_ISO_IN_ZLP +#define NRFX_USBD_CONFIG_ISO_IN_ZLP 0 +#endif + +// + +// NRF_CLOCK_ENABLED - nrf_drv_clock - CLOCK peripheral driver - legacy layer +//========================================================== +#ifndef NRF_CLOCK_ENABLED +#define NRF_CLOCK_ENABLED 1 +#endif +// CLOCK_CONFIG_LF_SRC - LF Clock Source + +// <0=> RC +// <1=> XTAL +// <2=> Synth +// <131073=> External Low Swing +// <196609=> External Full Swing + +#ifndef CLOCK_CONFIG_LF_SRC +#define CLOCK_CONFIG_LF_SRC 1 +#endif + +// CLOCK_CONFIG_LF_CAL_ENABLED - Calibration enable for LF Clock Source + + +#ifndef CLOCK_CONFIG_LF_CAL_ENABLED +#define CLOCK_CONFIG_LF_CAL_ENABLED 0 +#endif + +// CLOCK_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef CLOCK_CONFIG_IRQ_PRIORITY +#define CLOCK_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// POWER_ENABLED - nrf_drv_power - POWER peripheral driver - legacy layer +//========================================================== +#ifndef POWER_ENABLED +#define POWER_ENABLED 1 +#endif +// POWER_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef POWER_CONFIG_IRQ_PRIORITY +#define POWER_CONFIG_IRQ_PRIORITY 6 +#endif + +// POWER_CONFIG_DEFAULT_DCDCEN - The default configuration of main DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef POWER_CONFIG_DEFAULT_DCDCEN +#define POWER_CONFIG_DEFAULT_DCDCEN 0 +#endif + +// POWER_CONFIG_DEFAULT_DCDCENHV - The default configuration of High Voltage DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef POWER_CONFIG_DEFAULT_DCDCENHV +#define POWER_CONFIG_DEFAULT_DCDCENHV 0 +#endif + +// + +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 1 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// SYSTICK_ENABLED - nrf_drv_systick - ARM(R) SysTick driver - legacy layer + + +#ifndef SYSTICK_ENABLED +#define SYSTICK_ENABLED 1 +#endif + +// UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer +//========================================================== +#ifndef UART_ENABLED +#define UART_ENABLED 1 +#endif +// UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef UART_DEFAULT_CONFIG_HWFC +#define UART_DEFAULT_CONFIG_HWFC 0 +#endif + +// UART_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef UART_DEFAULT_CONFIG_PARITY +#define UART_DEFAULT_CONFIG_PARITY 0 +#endif + +// UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <10289152=> 38400 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef UART_DEFAULT_CONFIG_BAUDRATE +#define UART_DEFAULT_CONFIG_BAUDRATE 30801920 +#endif + +// UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef UART_DEFAULT_CONFIG_IRQ_PRIORITY +#define UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// UART_EASY_DMA_SUPPORT - Driver supporting EasyDMA + + +#ifndef UART_EASY_DMA_SUPPORT +#define UART_EASY_DMA_SUPPORT 1 +#endif + +// UART_LEGACY_SUPPORT - Driver supporting Legacy mode + + +#ifndef UART_LEGACY_SUPPORT +#define UART_LEGACY_SUPPORT 1 +#endif + +// UART0_ENABLED - Enable UART0 instance +//========================================================== +#ifndef UART0_ENABLED +#define UART0_ENABLED 1 +#endif +// UART0_CONFIG_USE_EASY_DMA - Default setting for using EasyDMA + + +#ifndef UART0_CONFIG_USE_EASY_DMA +#define UART0_CONFIG_USE_EASY_DMA 1 +#endif + +// + +// UART1_ENABLED - Enable UART1 instance +//========================================================== +#ifndef UART1_ENABLED +#define UART1_ENABLED 0 +#endif +// + +// + +// USBD_ENABLED - nrf_drv_usbd - Software Component +//========================================================== +#ifndef USBD_ENABLED +#define USBD_ENABLED 1 +#endif +// USBD_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef USBD_CONFIG_IRQ_PRIORITY +#define USBD_CONFIG_IRQ_PRIORITY 6 +#endif + +// USBD_CONFIG_DMASCHEDULER_MODE - USBD SMA scheduler working scheme + +// <0=> Prioritized access +// <1=> Round Robin + +#ifndef USBD_CONFIG_DMASCHEDULER_MODE +#define USBD_CONFIG_DMASCHEDULER_MODE 0 +#endif + +// USBD_CONFIG_DMASCHEDULER_ISO_BOOST - Give priority to isochronous transfers + + +// This option gives priority to isochronous transfers. +// Enabling it assures that isochronous transfers are always processed, +// even if multiple other transfers are pending. +// Isochronous endpoints are prioritized before the usbd_dma_scheduler_algorithm +// function is called, so the option is independent of the algorithm chosen. + +#ifndef USBD_CONFIG_DMASCHEDULER_ISO_BOOST +#define USBD_CONFIG_DMASCHEDULER_ISO_BOOST 1 +#endif + +// USBD_CONFIG_ISO_IN_ZLP - Respond to an IN token on ISO IN endpoint with ZLP when no data is ready + + +// If set, ISO IN endpoint will respond to an IN token with ZLP when no data is ready to be sent. +// Else, there will be no response. + +#ifndef USBD_CONFIG_ISO_IN_ZLP +#define USBD_CONFIG_ISO_IN_ZLP 0 +#endif + +// + +// +//========================================================== + +// nRF_Libraries + +//========================================================== +// APP_SCHEDULER_ENABLED - app_scheduler - Events scheduler +//========================================================== +#ifndef APP_SCHEDULER_ENABLED +#define APP_SCHEDULER_ENABLED 1 +#endif +// APP_SCHEDULER_WITH_PAUSE - Enabling pause feature + + +#ifndef APP_SCHEDULER_WITH_PAUSE +#define APP_SCHEDULER_WITH_PAUSE 1 +#endif + +// APP_SCHEDULER_WITH_PROFILER - Enabling scheduler profiling + + +#ifndef APP_SCHEDULER_WITH_PROFILER +#define APP_SCHEDULER_WITH_PROFILER 1 +#endif + +// + +// APP_TIMER_ENABLED - app_timer - Application timer functionality +//========================================================== +#ifndef APP_TIMER_ENABLED +#define APP_TIMER_ENABLED 1 +#endif +// APP_TIMER_CONFIG_RTC_FREQUENCY - Configure RTC prescaler. + +// <0=> 32768 Hz +// <1=> 16384 Hz +// <3=> 8192 Hz +// <7=> 4096 Hz +// <15=> 2048 Hz +// <31=> 1024 Hz + +#ifndef APP_TIMER_CONFIG_RTC_FREQUENCY +#define APP_TIMER_CONFIG_RTC_FREQUENCY 1 +#endif + +// APP_TIMER_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef APP_TIMER_CONFIG_IRQ_PRIORITY +#define APP_TIMER_CONFIG_IRQ_PRIORITY 6 +#endif + +// APP_TIMER_CONFIG_OP_QUEUE_SIZE - Capacity of timer requests queue. +// Size of the queue depends on how many timers are used +// in the system, how often timers are started and overall +// system latency. If queue size is too small app_timer calls +// will fail. + +#ifndef APP_TIMER_CONFIG_OP_QUEUE_SIZE +#define APP_TIMER_CONFIG_OP_QUEUE_SIZE 10 +#endif + +// APP_TIMER_CONFIG_USE_SCHEDULER - Enable scheduling app_timer events to app_scheduler + + +#ifndef APP_TIMER_CONFIG_USE_SCHEDULER +#define APP_TIMER_CONFIG_USE_SCHEDULER 0 +#endif + +// APP_TIMER_KEEPS_RTC_ACTIVE - Enable RTC always on + + +// If option is enabled RTC is kept running even if there is no active timers. +// This option can be used when app_timer is used for timestamping. + +#ifndef APP_TIMER_KEEPS_RTC_ACTIVE +#define APP_TIMER_KEEPS_RTC_ACTIVE 0 +#endif + +// APP_TIMER_SAFE_WINDOW_MS - Maximum possible latency (in milliseconds) of handling app_timer event. +// Maximum possible timeout that can be set is reduced by safe window. +// Example: RTC frequency 16384 Hz, maximum possible timeout 1024 seconds - APP_TIMER_SAFE_WINDOW_MS. +// Since RTC is not stopped when processor is halted in debugging session, this value +// must cover it if debugging is needed. It is possible to halt processor for APP_TIMER_SAFE_WINDOW_MS +// without corrupting app_timer behavior. + +#ifndef APP_TIMER_SAFE_WINDOW_MS +#define APP_TIMER_SAFE_WINDOW_MS 300000 +#endif + +// App Timer Legacy configuration - Legacy configuration. + +//========================================================== +// APP_TIMER_WITH_PROFILER - Enable app_timer profiling + + +#ifndef APP_TIMER_WITH_PROFILER +#define APP_TIMER_WITH_PROFILER 0 +#endif + +// APP_TIMER_CONFIG_SWI_NUMBER - Configure SWI instance used. + + +#ifndef APP_TIMER_CONFIG_SWI_NUMBER +#define APP_TIMER_CONFIG_SWI_NUMBER 0 +#endif + +// +//========================================================== + +// + +// APP_USBD_ENABLED - app_usbd - USB Device library +//========================================================== +#ifndef APP_USBD_ENABLED +#define APP_USBD_ENABLED 1 +#endif +// APP_USBD_VID - Vendor ID. + +// Note: This value is not editable in Configuration Wizard. +// Vendor ID ordered from USB IF: http://www.usb.org/developers/vendor/ +#ifndef APP_USBD_VID +#define APP_USBD_VID 0x1915 +#endif + +// APP_USBD_PID - Product ID. + +// Note: This value is not editable in Configuration Wizard. +// Selected Product ID +#ifndef APP_USBD_PID +#define APP_USBD_PID 0xC00A +#endif + +// APP_USBD_DEVICE_VER_MAJOR - Device version, major part. <0-99> + + +// Device version, will be converted automatically to BCD notation. Use just decimal values. + +#ifndef APP_USBD_DEVICE_VER_MAJOR +#define APP_USBD_DEVICE_VER_MAJOR 1 +#endif + +// APP_USBD_DEVICE_VER_MINOR - Device version, minor part. <0-99> + + +// Device version, will be converted automatically to BCD notation. Use just decimal values. + +#ifndef APP_USBD_DEVICE_VER_MINOR +#define APP_USBD_DEVICE_VER_MINOR 0 +#endif + +// APP_USBD_CONFIG_SELF_POWERED - Self-powered device, as opposed to bus-powered. + + +#ifndef APP_USBD_CONFIG_SELF_POWERED +#define APP_USBD_CONFIG_SELF_POWERED 1 +#endif + +// APP_USBD_CONFIG_MAX_POWER - MaxPower field in configuration descriptor in milliamps. <0-500> + + +#ifndef APP_USBD_CONFIG_MAX_POWER +#define APP_USBD_CONFIG_MAX_POWER 100 +#endif + +// APP_USBD_CONFIG_POWER_EVENTS_PROCESS - Process power events. + + +// Enable processing power events in USB event handler. + +#ifndef APP_USBD_CONFIG_POWER_EVENTS_PROCESS +#define APP_USBD_CONFIG_POWER_EVENTS_PROCESS 1 +#endif + +// APP_USBD_CONFIG_EVENT_QUEUE_ENABLE - Enable event queue. + +// This is the default configuration when all the events are placed into internal queue. +// Disable it when an external queue is used like app_scheduler or if you wish to process all events inside interrupts. +// Processing all events from the interrupt level adds requirement not to call any functions that modifies the USBD library state from the context higher than USB interrupt context. +// Functions that modify USBD state are functions for sleep, wakeup, start, stop, enable, and disable. +//========================================================== +#ifndef APP_USBD_CONFIG_EVENT_QUEUE_ENABLE +#define APP_USBD_CONFIG_EVENT_QUEUE_ENABLE 1 +#endif +// APP_USBD_CONFIG_EVENT_QUEUE_SIZE - The size of the event queue. <16-64> + + +// The size of the queue for the events that would be processed in the main loop. + +#ifndef APP_USBD_CONFIG_EVENT_QUEUE_SIZE +#define APP_USBD_CONFIG_EVENT_QUEUE_SIZE 32 +#endif + +// APP_USBD_CONFIG_SOF_HANDLING_MODE - Change SOF events handling mode. + + +// Normal queue - SOF events are pushed normally into the event queue. +// Compress queue - SOF events are counted and binded with other events or executed when the queue is empty. +// This prevents the queue from filling up with SOF events. +// Interrupt - SOF events are processed in interrupt. +// <0=> Normal queue +// <1=> Compress queue +// <2=> Interrupt + +#ifndef APP_USBD_CONFIG_SOF_HANDLING_MODE +#define APP_USBD_CONFIG_SOF_HANDLING_MODE 1 +#endif + +// + +// APP_USBD_CONFIG_SOF_TIMESTAMP_PROVIDE - Provide a function that generates timestamps for logs based on the current SOF. + + +// The function app_usbd_sof_timestamp_get is implemented if the logger is enabled. +// Use it when initializing the logger. +// SOF processing is always enabled when this configuration parameter is active. +// Note: This option is configured outside of APP_USBD_CONFIG_LOG_ENABLED. +// This means that it works even if the logging in this very module is disabled. + +#ifndef APP_USBD_CONFIG_SOF_TIMESTAMP_PROVIDE +#define APP_USBD_CONFIG_SOF_TIMESTAMP_PROVIDE 0 +#endif + +// APP_USBD_CONFIG_DESC_STRING_SIZE - Maximum size of the NULL-terminated string of the string descriptor. <31-254> + + +// 31 characters can be stored in the internal USB buffer used for transfers. +// Any value higher than 31 creates an additional buffer just for descriptor strings. + +#ifndef APP_USBD_CONFIG_DESC_STRING_SIZE +#define APP_USBD_CONFIG_DESC_STRING_SIZE 31 +#endif + +// APP_USBD_CONFIG_DESC_STRING_UTF_ENABLED - Enable UTF8 conversion. + + +// Enable UTF8-encoded characters. In normal processing, only ASCII characters are available. + +#ifndef APP_USBD_CONFIG_DESC_STRING_UTF_ENABLED +#define APP_USBD_CONFIG_DESC_STRING_UTF_ENABLED 0 +#endif + +// APP_USBD_STRINGS_LANGIDS - Supported languages identifiers. + +// Note: This value is not editable in Configuration Wizard. +// Comma-separated list of supported languages. +#ifndef APP_USBD_STRINGS_LANGIDS +#define APP_USBD_STRINGS_LANGIDS APP_USBD_LANG_AND_SUBLANG(APP_USBD_LANG_ENGLISH, APP_USBD_SUBLANG_ENGLISH_US) +#endif + +// APP_USBD_STRING_ID_MANUFACTURER - Define manufacturer string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_MANUFACTURER +#define APP_USBD_STRING_ID_MANUFACTURER 1 +#endif +// APP_USBD_STRINGS_MANUFACTURER_EXTERN - Define whether @ref APP_USBD_STRINGS_MANUFACTURER is created by macro or declared as a global variable. + + +#ifndef APP_USBD_STRINGS_MANUFACTURER_EXTERN +#define APP_USBD_STRINGS_MANUFACTURER_EXTERN 0 +#endif + +// APP_USBD_STRINGS_MANUFACTURER - String descriptor for the manufacturer name. + +// Note: This value is not editable in Configuration Wizard. +// Comma-separated list of manufacturer names for each defined language. +// Use @ref APP_USBD_STRING_DESC macro to create string descriptor from a NULL-terminated string. +// Use @ref APP_USBD_STRING_RAW8_DESC macro to create string descriptor from comma-separated uint8_t values. +// Use @ref APP_USBD_STRING_RAW16_DESC macro to create string descriptor from comma-separated uint16_t values. +// Alternatively, configure the macro to point to any internal variable pointer that already contains the descriptor. +// Setting string to NULL disables that string. +// The order of manufacturer names must be the same like in @ref APP_USBD_STRINGS_LANGIDS. +#ifndef APP_USBD_STRINGS_MANUFACTURER +#define APP_USBD_STRINGS_MANUFACTURER APP_USBD_STRING_DESC("Nordic Semiconductor") +#endif + +// + +// APP_USBD_STRING_ID_PRODUCT - Define product string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_PRODUCT +#define APP_USBD_STRING_ID_PRODUCT 2 +#endif +// APP_USBD_STRINGS_PRODUCT_EXTERN - Define whether @ref APP_USBD_STRINGS_PRODUCT is created by macro or declared as a global variable. + + +#ifndef APP_USBD_STRINGS_PRODUCT_EXTERN +#define APP_USBD_STRINGS_PRODUCT_EXTERN 0 +#endif + +// APP_USBD_STRINGS_PRODUCT - String descriptor for the product name. + +// Note: This value is not editable in Configuration Wizard. +// List of product names that is defined the same way like in @ref APP_USBD_STRINGS_MANUFACTURER. +#ifndef APP_USBD_STRINGS_PRODUCT +#define APP_USBD_STRINGS_PRODUCT APP_USBD_STRING_DESC("nRF52 Connectivity") +#endif + +// + +// APP_USBD_STRING_ID_SERIAL - Define serial number string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_SERIAL +#define APP_USBD_STRING_ID_SERIAL 3 +#endif +// APP_USBD_STRING_SERIAL_EXTERN - Define whether @ref APP_USBD_STRING_SERIAL is created by macro or declared as a global variable. + + +#ifndef APP_USBD_STRING_SERIAL_EXTERN +#define APP_USBD_STRING_SERIAL_EXTERN 1 +#endif + +// APP_USBD_STRING_SERIAL - String descriptor for the serial number. + +// Note: This value is not editable in Configuration Wizard. +// Serial number that is defined the same way like in @ref APP_USBD_STRINGS_MANUFACTURER. +#ifndef APP_USBD_STRING_SERIAL +#define APP_USBD_STRING_SERIAL g_extern_serial_number +#endif + +// + +// APP_USBD_STRING_ID_CONFIGURATION - Define configuration string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_CONFIGURATION +#define APP_USBD_STRING_ID_CONFIGURATION 4 +#endif +// APP_USBD_STRING_CONFIGURATION_EXTERN - Define whether @ref APP_USBD_STRINGS_CONFIGURATION is created by macro or declared as global variable. + + +#ifndef APP_USBD_STRING_CONFIGURATION_EXTERN +#define APP_USBD_STRING_CONFIGURATION_EXTERN 0 +#endif + +// APP_USBD_STRINGS_CONFIGURATION - String descriptor for the device configuration. + +// Note: This value is not editable in Configuration Wizard. +// Configuration string that is defined the same way like in @ref APP_USBD_STRINGS_MANUFACTURER. +#ifndef APP_USBD_STRINGS_CONFIGURATION +#define APP_USBD_STRINGS_CONFIGURATION APP_USBD_STRING_DESC("Default configuration") +#endif + +// + +// APP_USBD_STRINGS_USER - Default values for user strings. + +// Note: This value is not editable in Configuration Wizard. +// This value stores all application specific user strings with the default initialization. +// The setup is done by X-macros. +// Expected macro parameters: +// @code +// X(mnemonic, [=str_idx], ...) +// @endcode +// - @c mnemonic: Mnemonic of the string descriptor that would be added to +// @ref app_usbd_string_desc_idx_t enumerator. +// - @c str_idx : String index value, can be set or left empty. +// For example, WinUSB driver requires descriptor to be present on 0xEE index. +// Then use X(USBD_STRING_WINUSB, =0xEE, (APP_USBD_STRING_DESC(...))) +// - @c ... : List of string descriptors for each defined language. +#ifndef APP_USBD_STRINGS_USER +#define APP_USBD_STRINGS_USER X(APP_USER_1, , APP_USBD_STRING_DESC("User 1")) +#endif + +// + +// APP_USBD_NRF_DFU_TRIGGER_ENABLED - app_usbd_nrf_dfu_trigger - USBD Nordic DFU Trigger class + + +#ifndef APP_USBD_NRF_DFU_TRIGGER_ENABLED +#define APP_USBD_NRF_DFU_TRIGGER_ENABLED 1 +#endif + +// CRC16_ENABLED - crc16 - CRC16 calculation routines + + +#ifndef CRC16_ENABLED +#define CRC16_ENABLED 1 +#endif + +// NRF_BALLOC_ENABLED - nrf_balloc - Block allocator module +//========================================================== +#ifndef NRF_BALLOC_ENABLED +#define NRF_BALLOC_ENABLED 1 +#endif +// NRF_BALLOC_CONFIG_DEBUG_ENABLED - Enables debug mode in the module. +//========================================================== +#ifndef NRF_BALLOC_CONFIG_DEBUG_ENABLED +#define NRF_BALLOC_CONFIG_DEBUG_ENABLED 0 +#endif +// NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS - Number of words used as head guard. <0-255> + + +#ifndef NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS +#define NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS 1 +#endif + +// NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS - Number of words used as tail guard. <0-255> + + +#ifndef NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS +#define NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS 1 +#endif + +// NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED - Enables basic checks in this module. + + +#ifndef NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED +#define NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED 0 +#endif + +// NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED - Enables double memory free check in this module. + + +#ifndef NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED +#define NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED 0 +#endif + +// NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED - Enables free memory corruption check in this module. + + +#ifndef NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED +#define NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED 0 +#endif + +// NRF_BALLOC_CLI_CMDS - Enable CLI commands specific to the module + + +#ifndef NRF_BALLOC_CLI_CMDS +#define NRF_BALLOC_CLI_CMDS 0 +#endif + +// + +// + +// NRF_MEMOBJ_ENABLED - nrf_memobj - Linked memory allocator module + + +#ifndef NRF_MEMOBJ_ENABLED +#define NRF_MEMOBJ_ENABLED 1 +#endif + +// NRF_QUEUE_ENABLED - nrf_queue - Queue module +//========================================================== +#ifndef NRF_QUEUE_ENABLED +#define NRF_QUEUE_ENABLED 1 +#endif +// NRF_QUEUE_CLI_CMDS - Enable CLI commands specific to the module + + +#ifndef NRF_QUEUE_CLI_CMDS +#define NRF_QUEUE_CLI_CMDS 0 +#endif + +// + +// NRF_SECTION_ITER_ENABLED - nrf_section_iter - Section iterator + + +#ifndef NRF_SECTION_ITER_ENABLED +#define NRF_SECTION_ITER_ENABLED 1 +#endif + +// NRF_SORTLIST_ENABLED - nrf_sortlist - Sorted list + + +#ifndef NRF_SORTLIST_ENABLED +#define NRF_SORTLIST_ENABLED 1 +#endif + +// NRF_STRERROR_ENABLED - nrf_strerror - Library for converting error code to string. + + +#ifndef NRF_STRERROR_ENABLED +#define NRF_STRERROR_ENABLED 1 +#endif + +// app_usbd_cdc_acm - USB CDC ACM class + +//========================================================== +// APP_USBD_CDC_ACM_ENABLED - Enabling USBD CDC ACM Class library + + +#ifndef APP_USBD_CDC_ACM_ENABLED +#define APP_USBD_CDC_ACM_ENABLED 1 +#endif + +// APP_USBD_CDC_ACM_ZLP_ON_EPSIZE_WRITE - Send ZLP on write with same size as endpoint + + +// If enabled, CDC ACM class will automatically send a zero length packet after transfer which has the same size as endpoint. +// This may limit throughput if a lot of binary data is sent, but in terminal mode operation it makes sure that the data is always displayed right after it is sent. + +#ifndef APP_USBD_CDC_ACM_ZLP_ON_EPSIZE_WRITE +#define APP_USBD_CDC_ACM_ZLP_ON_EPSIZE_WRITE 1 +#endif + +// +//========================================================== + +// nrf_fprintf - fprintf function. + +//========================================================== +// NRF_FPRINTF_ENABLED - Enable/disable fprintf module. + + +#ifndef NRF_FPRINTF_ENABLED +#define NRF_FPRINTF_ENABLED 1 +#endif + +// NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED - For each printed LF, function will add CR. + + +#ifndef NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED +#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 1 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_Log + +//========================================================== +// NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend +//========================================================== +#ifndef NRF_LOG_BACKEND_RTT_ENABLED +#define NRF_LOG_BACKEND_RTT_ENABLED 0 +#endif +// NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. +// Size of the buffer is a trade-off between RAM usage and processing. +// if buffer is smaller then strings will often be fragmented. +// It is recommended to use size which will fit typical log and only the +// longer one will be fragmented. + +#ifndef NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE +#define NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE 64 +#endif + +// NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS - Period before retrying writing to RTT +#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS +#define NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS 1 +#endif + +// NRF_LOG_BACKEND_RTT_TX_RETRY_CNT - Writing to RTT retries. +// If RTT fails to accept any new data after retries +// module assumes that host is not active and on next +// request it will perform only one write attempt. +// On successful writing, module assumes that host is active +// and scheme with retry is applied again. + +#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_CNT +#define NRF_LOG_BACKEND_RTT_TX_RETRY_CNT 3 +#endif + +// + +// NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend +//========================================================== +#ifndef NRF_LOG_BACKEND_UART_ENABLED +#define NRF_LOG_BACKEND_UART_ENABLED 0 +#endif +// NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin +#ifndef NRF_LOG_BACKEND_UART_TX_PIN +#define NRF_LOG_BACKEND_UART_TX_PIN 6 +#endif + +// NRF_LOG_BACKEND_UART_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <10289152=> 38400 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRF_LOG_BACKEND_UART_BAUDRATE +#define NRF_LOG_BACKEND_UART_BAUDRATE 30801920 +#endif + +// NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. +// Size of the buffer is a trade-off between RAM usage and processing. +// if buffer is smaller then strings will often be fragmented. +// It is recommended to use size which will fit typical log and only the +// longer one will be fragmented. + +#ifndef NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE +#define NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE 64 +#endif + +// + +// NRF_LOG_ENABLED - nrf_log - Logger +//========================================================== +#ifndef NRF_LOG_ENABLED +#define NRF_LOG_ENABLED 0 +#endif +// Log message pool - Configuration of log message pool + +//========================================================== +// NRF_LOG_MSGPOOL_ELEMENT_SIZE - Size of a single element in the pool of memory objects. +// If a small value is set, then performance of logs processing +// is degraded because data is fragmented. Bigger value impacts +// RAM memory utilization. The size is set to fit a message with +// a timestamp and up to 2 arguments in a single memory object. + +#ifndef NRF_LOG_MSGPOOL_ELEMENT_SIZE +#define NRF_LOG_MSGPOOL_ELEMENT_SIZE 20 +#endif + +// NRF_LOG_MSGPOOL_ELEMENT_COUNT - Number of elements in the pool of memory objects +// If a small value is set, then it may lead to a deadlock +// in certain cases if backend has high latency and holds +// multiple messages for long time. Bigger value impacts +// RAM memory usage. + +#ifndef NRF_LOG_MSGPOOL_ELEMENT_COUNT +#define NRF_LOG_MSGPOOL_ELEMENT_COUNT 8 +#endif + +// +//========================================================== + +// NRF_LOG_ALLOW_OVERFLOW - Configures behavior when circular buffer is full. + + +// If set then oldest logs are overwritten. Otherwise a +// marker is injected informing about overflow. + +#ifndef NRF_LOG_ALLOW_OVERFLOW +#define NRF_LOG_ALLOW_OVERFLOW 1 +#endif + +// NRF_LOG_BUFSIZE - Size of the buffer for storing logs (in bytes). + + +// Must be power of 2 and multiple of 4. +// If NRF_LOG_DEFERRED = 0 then buffer size can be reduced to minimum. +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 +// <2048=> 2048 +// <4096=> 4096 +// <8192=> 8192 +// <16384=> 16384 + +#ifndef NRF_LOG_BUFSIZE +#define NRF_LOG_BUFSIZE 1024 +#endif + +// NRF_LOG_CLI_CMDS - Enable CLI commands for the module. + + +#ifndef NRF_LOG_CLI_CMDS +#define NRF_LOG_CLI_CMDS 0 +#endif + +// NRF_LOG_DEFAULT_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_LOG_DEFAULT_LEVEL +#define NRF_LOG_DEFAULT_LEVEL 3 +#endif + +// NRF_LOG_DEFERRED - Enable deffered logger. + + +// Log data is buffered and can be processed in idle. + +#ifndef NRF_LOG_DEFERRED +#define NRF_LOG_DEFERRED 1 +#endif + +// NRF_LOG_FILTERS_ENABLED - Enable dynamic filtering of logs. + + +#ifndef NRF_LOG_FILTERS_ENABLED +#define NRF_LOG_FILTERS_ENABLED 0 +#endif + +// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. + +// <16=> 16 +// <32=> 32 +// <64=> 64 +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 + +#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE +#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 +#endif + +// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. + +// <16=> 16 +// <32=> 32 +// <64=> 64 +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 + +#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE +#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 +#endif + +// NRF_LOG_USES_COLORS - If enabled then ANSI escape code for colors is prefixed to every string +//========================================================== +#ifndef NRF_LOG_USES_COLORS +#define NRF_LOG_USES_COLORS 0 +#endif +// NRF_LOG_COLOR_DEFAULT - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_COLOR_DEFAULT +#define NRF_LOG_COLOR_DEFAULT 0 +#endif + +// NRF_LOG_ERROR_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_ERROR_COLOR +#define NRF_LOG_ERROR_COLOR 2 +#endif + +// NRF_LOG_WARNING_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_WARNING_COLOR +#define NRF_LOG_WARNING_COLOR 4 +#endif + +// + +// NRF_LOG_USES_TIMESTAMP - Enable timestamping + +// Function for getting the timestamp is provided by the user +//========================================================== +#ifndef NRF_LOG_USES_TIMESTAMP +#define NRF_LOG_USES_TIMESTAMP 0 +#endif +// NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY - Default frequency of the timestamp (in Hz) or 0 to use app_timer frequency. +#ifndef NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY +#define NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY 0 +#endif + +// + +// nrf_log module configuration + +//========================================================== +// nrf_log in nRF_Core + +//========================================================== +// NRF_MPU_LIB_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_MPU_LIB_CONFIG_LOG_ENABLED +#define NRF_MPU_LIB_CONFIG_LOG_ENABLED 0 +#endif +// NRF_MPU_LIB_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_MPU_LIB_CONFIG_LOG_LEVEL +#define NRF_MPU_LIB_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_MPU_LIB_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MPU_LIB_CONFIG_INFO_COLOR +#define NRF_MPU_LIB_CONFIG_INFO_COLOR 0 +#endif + +// NRF_MPU_LIB_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MPU_LIB_CONFIG_DEBUG_COLOR +#define NRF_MPU_LIB_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_STACK_GUARD_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_STACK_GUARD_CONFIG_LOG_ENABLED +#define NRF_STACK_GUARD_CONFIG_LOG_ENABLED 0 +#endif +// NRF_STACK_GUARD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_STACK_GUARD_CONFIG_LOG_LEVEL +#define NRF_STACK_GUARD_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_STACK_GUARD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_STACK_GUARD_CONFIG_INFO_COLOR +#define NRF_STACK_GUARD_CONFIG_INFO_COLOR 0 +#endif + +// NRF_STACK_GUARD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_STACK_GUARD_CONFIG_DEBUG_COLOR +#define NRF_STACK_GUARD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TASK_MANAGER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TASK_MANAGER_CONFIG_LOG_ENABLED +#define TASK_MANAGER_CONFIG_LOG_ENABLED 0 +#endif +// TASK_MANAGER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TASK_MANAGER_CONFIG_LOG_LEVEL +#define TASK_MANAGER_CONFIG_LOG_LEVEL 3 +#endif + +// TASK_MANAGER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TASK_MANAGER_CONFIG_INFO_COLOR +#define TASK_MANAGER_CONFIG_INFO_COLOR 0 +#endif + +// TASK_MANAGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TASK_MANAGER_CONFIG_DEBUG_COLOR +#define TASK_MANAGER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Drivers + +//========================================================== +// CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef CLOCK_CONFIG_LOG_ENABLED +#define CLOCK_CONFIG_LOG_ENABLED 0 +#endif +// CLOCK_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef CLOCK_CONFIG_LOG_LEVEL +#define CLOCK_CONFIG_LOG_LEVEL 3 +#endif + +// CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef CLOCK_CONFIG_INFO_COLOR +#define CLOCK_CONFIG_INFO_COLOR 0 +#endif + +// CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef CLOCK_CONFIG_DEBUG_COLOR +#define CLOCK_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// COMP_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef COMP_CONFIG_LOG_ENABLED +#define COMP_CONFIG_LOG_ENABLED 0 +#endif +// COMP_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef COMP_CONFIG_LOG_LEVEL +#define COMP_CONFIG_LOG_LEVEL 3 +#endif + +// COMP_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef COMP_CONFIG_INFO_COLOR +#define COMP_CONFIG_INFO_COLOR 0 +#endif + +// COMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef COMP_CONFIG_DEBUG_COLOR +#define COMP_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// GPIOTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef GPIOTE_CONFIG_LOG_ENABLED +#define GPIOTE_CONFIG_LOG_ENABLED 0 +#endif +// GPIOTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef GPIOTE_CONFIG_LOG_LEVEL +#define GPIOTE_CONFIG_LOG_LEVEL 3 +#endif + +// GPIOTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef GPIOTE_CONFIG_INFO_COLOR +#define GPIOTE_CONFIG_INFO_COLOR 0 +#endif + +// GPIOTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef GPIOTE_CONFIG_DEBUG_COLOR +#define GPIOTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// LPCOMP_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef LPCOMP_CONFIG_LOG_ENABLED +#define LPCOMP_CONFIG_LOG_ENABLED 0 +#endif +// LPCOMP_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef LPCOMP_CONFIG_LOG_LEVEL +#define LPCOMP_CONFIG_LOG_LEVEL 3 +#endif + +// LPCOMP_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef LPCOMP_CONFIG_INFO_COLOR +#define LPCOMP_CONFIG_INFO_COLOR 0 +#endif + +// LPCOMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef LPCOMP_CONFIG_DEBUG_COLOR +#define LPCOMP_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// MAX3421E_HOST_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef MAX3421E_HOST_CONFIG_LOG_ENABLED +#define MAX3421E_HOST_CONFIG_LOG_ENABLED 0 +#endif +// MAX3421E_HOST_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef MAX3421E_HOST_CONFIG_LOG_LEVEL +#define MAX3421E_HOST_CONFIG_LOG_LEVEL 3 +#endif + +// MAX3421E_HOST_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef MAX3421E_HOST_CONFIG_INFO_COLOR +#define MAX3421E_HOST_CONFIG_INFO_COLOR 0 +#endif + +// MAX3421E_HOST_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef MAX3421E_HOST_CONFIG_DEBUG_COLOR +#define MAX3421E_HOST_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRFX_USBD_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef NRFX_USBD_CONFIG_LOG_ENABLED +#define NRFX_USBD_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_USBD_CONFIG_LOG_LEVEL +#define NRFX_USBD_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_USBD_CONFIG_INFO_COLOR +#define NRFX_USBD_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_USBD_CONFIG_DEBUG_COLOR +#define NRFX_USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PDM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PDM_CONFIG_LOG_ENABLED +#define PDM_CONFIG_LOG_ENABLED 0 +#endif +// PDM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PDM_CONFIG_LOG_LEVEL +#define PDM_CONFIG_LOG_LEVEL 3 +#endif + +// PDM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PDM_CONFIG_INFO_COLOR +#define PDM_CONFIG_INFO_COLOR 0 +#endif + +// PDM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PDM_CONFIG_DEBUG_COLOR +#define PDM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PPI_CONFIG_LOG_ENABLED +#define PPI_CONFIG_LOG_ENABLED 0 +#endif +// PPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PPI_CONFIG_LOG_LEVEL +#define PPI_CONFIG_LOG_LEVEL 3 +#endif + +// PPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PPI_CONFIG_INFO_COLOR +#define PPI_CONFIG_INFO_COLOR 0 +#endif + +// PPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PPI_CONFIG_DEBUG_COLOR +#define PPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PWM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PWM_CONFIG_LOG_ENABLED +#define PWM_CONFIG_LOG_ENABLED 0 +#endif +// PWM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PWM_CONFIG_LOG_LEVEL +#define PWM_CONFIG_LOG_LEVEL 3 +#endif + +// PWM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PWM_CONFIG_INFO_COLOR +#define PWM_CONFIG_INFO_COLOR 0 +#endif + +// PWM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PWM_CONFIG_DEBUG_COLOR +#define PWM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// QDEC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef QDEC_CONFIG_LOG_ENABLED +#define QDEC_CONFIG_LOG_ENABLED 0 +#endif +// QDEC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef QDEC_CONFIG_LOG_LEVEL +#define QDEC_CONFIG_LOG_LEVEL 3 +#endif + +// QDEC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef QDEC_CONFIG_INFO_COLOR +#define QDEC_CONFIG_INFO_COLOR 0 +#endif + +// QDEC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef QDEC_CONFIG_DEBUG_COLOR +#define QDEC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// RNG_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef RNG_CONFIG_LOG_ENABLED +#define RNG_CONFIG_LOG_ENABLED 0 +#endif +// RNG_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef RNG_CONFIG_LOG_LEVEL +#define RNG_CONFIG_LOG_LEVEL 3 +#endif + +// RNG_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RNG_CONFIG_INFO_COLOR +#define RNG_CONFIG_INFO_COLOR 0 +#endif + +// RNG_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RNG_CONFIG_DEBUG_COLOR +#define RNG_CONFIG_DEBUG_COLOR 0 +#endif + +// RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED - Enables logging of random numbers. + + +#ifndef RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED +#define RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED 0 +#endif + +// + +// RTC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef RTC_CONFIG_LOG_ENABLED +#define RTC_CONFIG_LOG_ENABLED 0 +#endif +// RTC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef RTC_CONFIG_LOG_LEVEL +#define RTC_CONFIG_LOG_LEVEL 3 +#endif + +// RTC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RTC_CONFIG_INFO_COLOR +#define RTC_CONFIG_INFO_COLOR 0 +#endif + +// RTC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RTC_CONFIG_DEBUG_COLOR +#define RTC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SAADC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SAADC_CONFIG_LOG_ENABLED +#define SAADC_CONFIG_LOG_ENABLED 0 +#endif +// SAADC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SAADC_CONFIG_LOG_LEVEL +#define SAADC_CONFIG_LOG_LEVEL 3 +#endif + +// SAADC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SAADC_CONFIG_INFO_COLOR +#define SAADC_CONFIG_INFO_COLOR 0 +#endif + +// SAADC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SAADC_CONFIG_DEBUG_COLOR +#define SAADC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SPIS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SPIS_CONFIG_LOG_ENABLED +#define SPIS_CONFIG_LOG_ENABLED 0 +#endif +// SPIS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SPIS_CONFIG_LOG_LEVEL +#define SPIS_CONFIG_LOG_LEVEL 3 +#endif + +// SPIS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPIS_CONFIG_INFO_COLOR +#define SPIS_CONFIG_INFO_COLOR 0 +#endif + +// SPIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPIS_CONFIG_DEBUG_COLOR +#define SPIS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SPI_CONFIG_LOG_ENABLED +#define SPI_CONFIG_LOG_ENABLED 0 +#endif +// SPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SPI_CONFIG_LOG_LEVEL +#define SPI_CONFIG_LOG_LEVEL 3 +#endif + +// SPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPI_CONFIG_INFO_COLOR +#define SPI_CONFIG_INFO_COLOR 0 +#endif + +// SPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPI_CONFIG_DEBUG_COLOR +#define SPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TIMER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TIMER_CONFIG_LOG_ENABLED +#define TIMER_CONFIG_LOG_ENABLED 0 +#endif +// TIMER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TIMER_CONFIG_LOG_LEVEL +#define TIMER_CONFIG_LOG_LEVEL 3 +#endif + +// TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TIMER_CONFIG_INFO_COLOR +#define TIMER_CONFIG_INFO_COLOR 0 +#endif + +// TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TIMER_CONFIG_DEBUG_COLOR +#define TIMER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TWIS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TWIS_CONFIG_LOG_ENABLED +#define TWIS_CONFIG_LOG_ENABLED 0 +#endif +// TWIS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TWIS_CONFIG_LOG_LEVEL +#define TWIS_CONFIG_LOG_LEVEL 3 +#endif + +// TWIS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWIS_CONFIG_INFO_COLOR +#define TWIS_CONFIG_INFO_COLOR 0 +#endif + +// TWIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWIS_CONFIG_DEBUG_COLOR +#define TWIS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TWI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TWI_CONFIG_LOG_ENABLED +#define TWI_CONFIG_LOG_ENABLED 0 +#endif +// TWI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TWI_CONFIG_LOG_LEVEL +#define TWI_CONFIG_LOG_LEVEL 3 +#endif + +// TWI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWI_CONFIG_INFO_COLOR +#define TWI_CONFIG_INFO_COLOR 0 +#endif + +// TWI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWI_CONFIG_DEBUG_COLOR +#define TWI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef UART_CONFIG_LOG_ENABLED +#define UART_CONFIG_LOG_ENABLED 0 +#endif +// UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef UART_CONFIG_LOG_LEVEL +#define UART_CONFIG_LOG_LEVEL 3 +#endif + +// UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef UART_CONFIG_INFO_COLOR +#define UART_CONFIG_INFO_COLOR 0 +#endif + +// UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef UART_CONFIG_DEBUG_COLOR +#define UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// USBD_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef USBD_CONFIG_LOG_ENABLED +#define USBD_CONFIG_LOG_ENABLED 0 +#endif +// USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef USBD_CONFIG_LOG_LEVEL +#define USBD_CONFIG_LOG_LEVEL 3 +#endif + +// USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef USBD_CONFIG_INFO_COLOR +#define USBD_CONFIG_INFO_COLOR 0 +#endif + +// USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef USBD_CONFIG_DEBUG_COLOR +#define USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// WDT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef WDT_CONFIG_LOG_ENABLED +#define WDT_CONFIG_LOG_ENABLED 0 +#endif +// WDT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef WDT_CONFIG_LOG_LEVEL +#define WDT_CONFIG_LOG_LEVEL 3 +#endif + +// WDT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef WDT_CONFIG_INFO_COLOR +#define WDT_CONFIG_INFO_COLOR 0 +#endif + +// WDT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef WDT_CONFIG_DEBUG_COLOR +#define WDT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Libraries + +//========================================================== +// APP_TIMER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_TIMER_CONFIG_LOG_ENABLED +#define APP_TIMER_CONFIG_LOG_ENABLED 0 +#endif +// APP_TIMER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_TIMER_CONFIG_LOG_LEVEL +#define APP_TIMER_CONFIG_LOG_LEVEL 3 +#endif + +// APP_TIMER_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled. + + +// If module generates a lot of logs, initial log level can +// be decreased to prevent flooding. Severity level can be +// increased on instance basis. +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_TIMER_CONFIG_INITIAL_LOG_LEVEL +#define APP_TIMER_CONFIG_INITIAL_LOG_LEVEL 3 +#endif + +// APP_TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_TIMER_CONFIG_INFO_COLOR +#define APP_TIMER_CONFIG_INFO_COLOR 0 +#endif + +// APP_TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_TIMER_CONFIG_DEBUG_COLOR +#define APP_TIMER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED +#define APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL +#define APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_CDC_ACM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CDC_ACM_CONFIG_INFO_COLOR +#define APP_USBD_CDC_ACM_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR +#define APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_CONFIG_LOG_ENABLED - Enable logging in the module. +//========================================================== +#ifndef APP_USBD_CONFIG_LOG_ENABLED +#define APP_USBD_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_CONFIG_LOG_LEVEL +#define APP_USBD_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CONFIG_INFO_COLOR +#define APP_USBD_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CONFIG_DEBUG_COLOR +#define APP_USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_DUMMY_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_DUMMY_CONFIG_LOG_ENABLED +#define APP_USBD_DUMMY_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_DUMMY_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_DUMMY_CONFIG_LOG_LEVEL +#define APP_USBD_DUMMY_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_DUMMY_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_DUMMY_CONFIG_INFO_COLOR +#define APP_USBD_DUMMY_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_DUMMY_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_DUMMY_CONFIG_DEBUG_COLOR +#define APP_USBD_DUMMY_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_MSC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_MSC_CONFIG_LOG_ENABLED +#define APP_USBD_MSC_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_MSC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_MSC_CONFIG_LOG_LEVEL +#define APP_USBD_MSC_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_MSC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_MSC_CONFIG_INFO_COLOR +#define APP_USBD_MSC_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_MSC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_MSC_CONFIG_DEBUG_COLOR +#define APP_USBD_MSC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_ATFIFO_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_ATFIFO_CONFIG_LOG_ENABLED +#define NRF_ATFIFO_CONFIG_LOG_ENABLED 0 +#endif +// NRF_ATFIFO_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_ATFIFO_CONFIG_LOG_LEVEL +#define NRF_ATFIFO_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_ATFIFO_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_ATFIFO_CONFIG_INFO_COLOR +#define NRF_ATFIFO_CONFIG_INFO_COLOR 0 +#endif + +// NRF_ATFIFO_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_ATFIFO_CONFIG_DEBUG_COLOR +#define NRF_ATFIFO_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BALLOC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BALLOC_CONFIG_LOG_ENABLED +#define NRF_BALLOC_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BALLOC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BALLOC_CONFIG_LOG_LEVEL +#define NRF_BALLOC_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled. + + +// If module generates a lot of logs, initial log level can +// be decreased to prevent flooding. Severity level can be +// increased on instance basis. +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL +#define NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL 3 +#endif + +// NRF_BALLOC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BALLOC_CONFIG_INFO_COLOR +#define NRF_BALLOC_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BALLOC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BALLOC_CONFIG_DEBUG_COLOR +#define NRF_BALLOC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED +#define NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL +#define NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_BLE_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_BLE_UART_CONFIG_INFO_COLOR +#define NRF_CLI_BLE_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR +#define NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED +#define NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL +#define NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR +#define NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR +#define NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_UART_CONFIG_LOG_ENABLED +#define NRF_CLI_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_UART_CONFIG_LOG_LEVEL +#define NRF_CLI_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_UART_CONFIG_INFO_COLOR +#define NRF_CLI_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_UART_CONFIG_DEBUG_COLOR +#define NRF_CLI_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_LIBUARTE_CONFIG_LOG_ENABLED +#define NRF_LIBUARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_LIBUARTE_CONFIG_LOG_LEVEL +#define NRF_LIBUARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LIBUARTE_CONFIG_INFO_COLOR +#define NRF_LIBUARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LIBUARTE_CONFIG_DEBUG_COLOR +#define NRF_LIBUARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_MEMOBJ_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_MEMOBJ_CONFIG_LOG_ENABLED +#define NRF_MEMOBJ_CONFIG_LOG_ENABLED 0 +#endif +// NRF_MEMOBJ_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_MEMOBJ_CONFIG_LOG_LEVEL +#define NRF_MEMOBJ_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_MEMOBJ_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MEMOBJ_CONFIG_INFO_COLOR +#define NRF_MEMOBJ_CONFIG_INFO_COLOR 0 +#endif + +// NRF_MEMOBJ_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MEMOBJ_CONFIG_DEBUG_COLOR +#define NRF_MEMOBJ_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_PWR_MGMT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_PWR_MGMT_CONFIG_LOG_ENABLED +#define NRF_PWR_MGMT_CONFIG_LOG_ENABLED 0 +#endif +// NRF_PWR_MGMT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_PWR_MGMT_CONFIG_LOG_LEVEL +#define NRF_PWR_MGMT_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_PWR_MGMT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_PWR_MGMT_CONFIG_INFO_COLOR +#define NRF_PWR_MGMT_CONFIG_INFO_COLOR 0 +#endif + +// NRF_PWR_MGMT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_PWR_MGMT_CONFIG_DEBUG_COLOR +#define NRF_PWR_MGMT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_QUEUE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_QUEUE_CONFIG_LOG_ENABLED +#define NRF_QUEUE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_QUEUE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_QUEUE_CONFIG_LOG_LEVEL +#define NRF_QUEUE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_QUEUE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_QUEUE_CONFIG_INFO_COLOR +#define NRF_QUEUE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_QUEUE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_QUEUE_CONFIG_DEBUG_COLOR +#define NRF_QUEUE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_ANT_LOG_ENABLED - Enable logging in SoftDevice handler (ANT) module. +//========================================================== +#ifndef NRF_SDH_ANT_LOG_ENABLED +#define NRF_SDH_ANT_LOG_ENABLED 0 +#endif +// NRF_SDH_ANT_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_ANT_LOG_LEVEL +#define NRF_SDH_ANT_LOG_LEVEL 3 +#endif + +// NRF_SDH_ANT_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_ANT_INFO_COLOR +#define NRF_SDH_ANT_INFO_COLOR 0 +#endif + +// NRF_SDH_ANT_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_ANT_DEBUG_COLOR +#define NRF_SDH_ANT_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_BLE_LOG_ENABLED - Enable logging in SoftDevice handler (BLE) module. +//========================================================== +#ifndef NRF_SDH_BLE_LOG_ENABLED +#define NRF_SDH_BLE_LOG_ENABLED 1 +#endif +// NRF_SDH_BLE_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_BLE_LOG_LEVEL +#define NRF_SDH_BLE_LOG_LEVEL 3 +#endif + +// NRF_SDH_BLE_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_BLE_INFO_COLOR +#define NRF_SDH_BLE_INFO_COLOR 0 +#endif + +// NRF_SDH_BLE_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_BLE_DEBUG_COLOR +#define NRF_SDH_BLE_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_LOG_ENABLED - Enable logging in SoftDevice handler module. +//========================================================== +#ifndef NRF_SDH_LOG_ENABLED +#define NRF_SDH_LOG_ENABLED 1 +#endif +// NRF_SDH_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_LOG_LEVEL +#define NRF_SDH_LOG_LEVEL 3 +#endif + +// NRF_SDH_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_INFO_COLOR +#define NRF_SDH_INFO_COLOR 0 +#endif + +// NRF_SDH_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_DEBUG_COLOR +#define NRF_SDH_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_SOC_LOG_ENABLED - Enable logging in SoftDevice handler (SoC) module. +//========================================================== +#ifndef NRF_SDH_SOC_LOG_ENABLED +#define NRF_SDH_SOC_LOG_ENABLED 1 +#endif +// NRF_SDH_SOC_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_SOC_LOG_LEVEL +#define NRF_SDH_SOC_LOG_LEVEL 3 +#endif + +// NRF_SDH_SOC_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_SOC_INFO_COLOR +#define NRF_SDH_SOC_INFO_COLOR 0 +#endif + +// NRF_SDH_SOC_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_SOC_DEBUG_COLOR +#define NRF_SDH_SOC_DEBUG_COLOR 0 +#endif + +// + +// NRF_SORTLIST_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_SORTLIST_CONFIG_LOG_ENABLED +#define NRF_SORTLIST_CONFIG_LOG_ENABLED 0 +#endif +// NRF_SORTLIST_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SORTLIST_CONFIG_LOG_LEVEL +#define NRF_SORTLIST_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_SORTLIST_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SORTLIST_CONFIG_INFO_COLOR +#define NRF_SORTLIST_CONFIG_INFO_COLOR 0 +#endif + +// NRF_SORTLIST_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SORTLIST_CONFIG_DEBUG_COLOR +#define NRF_SORTLIST_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_TWI_SENSOR_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_TWI_SENSOR_CONFIG_LOG_ENABLED +#define NRF_TWI_SENSOR_CONFIG_LOG_ENABLED 0 +#endif +// NRF_TWI_SENSOR_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_TWI_SENSOR_CONFIG_LOG_LEVEL +#define NRF_TWI_SENSOR_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_TWI_SENSOR_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_TWI_SENSOR_CONFIG_INFO_COLOR +#define NRF_TWI_SENSOR_CONFIG_INFO_COLOR 0 +#endif + +// NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR +#define NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PM_LOG_ENABLED - Enable logging in Peer Manager and its submodules. +//========================================================== +#ifndef PM_LOG_ENABLED +#define PM_LOG_ENABLED 1 +#endif +// PM_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PM_LOG_LEVEL +#define PM_LOG_LEVEL 3 +#endif + +// PM_LOG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PM_LOG_INFO_COLOR +#define PM_LOG_INFO_COLOR 0 +#endif + +// PM_LOG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PM_LOG_DEBUG_COLOR +#define PM_LOG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Serialization + +//========================================================== +// SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED +#define SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED 0 +#endif +// SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL +#define SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL 3 +#endif + +// SER_HAL_TRANSPORT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SER_HAL_TRANSPORT_CONFIG_INFO_COLOR +#define SER_HAL_TRANSPORT_CONFIG_INFO_COLOR 0 +#endif + +// SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR +#define SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// +//========================================================== + +// + +// NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED - nrf_log_str_formatter - Log string formatter + + +#ifndef NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED +#define NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED 1 +#endif + +// +//========================================================== + +// nRF_Segger_RTT + +//========================================================== +// segger_rtt - SEGGER RTT + +//========================================================== +// SEGGER_RTT_CONFIG_BUFFER_SIZE_UP - Size of upstream buffer. +// Note that either @ref NRF_LOG_BACKEND_RTT_OUTPUT_BUFFER_SIZE +// or this value is actually used. It depends on which one is bigger. + +#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_UP +#define SEGGER_RTT_CONFIG_BUFFER_SIZE_UP 512 +#endif + +// SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS - Maximum number of upstream buffers. +#ifndef SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS +#define SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS 2 +#endif + +// SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN - Size of downstream buffer. +#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN +#define SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN 16 +#endif + +// SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS - Maximum number of downstream buffers. +#ifndef SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS +#define SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS 2 +#endif + +// SEGGER_RTT_CONFIG_DEFAULT_MODE - RTT behavior if the buffer is full. + + +// The following modes are supported: +// - SKIP - Do not block, output nothing. +// - TRIM - Do not block, output as much as fits. +// - BLOCK - Wait until there is space in the buffer. +// <0=> SKIP +// <1=> TRIM +// <2=> BLOCK_IF_FIFO_FULL + +#ifndef SEGGER_RTT_CONFIG_DEFAULT_MODE +#define SEGGER_RTT_CONFIG_DEFAULT_MODE 0 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_SoftDevice + +//========================================================== +// NRF_SDH_BLE_ENABLED - nrf_sdh_ble - SoftDevice BLE event handler +//========================================================== +#ifndef NRF_SDH_BLE_ENABLED +#define NRF_SDH_BLE_ENABLED 1 +#endif +// BLE Stack configuration - Stack configuration parameters + +// The SoftDevice handler will configure the stack with these parameters when calling @ref nrf_sdh_ble_default_cfg_set. +// Other libraries might depend on these values; keep them up-to-date even if you are not explicitely calling @ref nrf_sdh_ble_default_cfg_set. +//========================================================== +// NRF_SDH_BLE_GAP_DATA_LENGTH <27-251> + + +// Requested BLE GAP data length to be negotiated. + +#ifndef NRF_SDH_BLE_GAP_DATA_LENGTH +#define NRF_SDH_BLE_GAP_DATA_LENGTH 27 +#endif + +// NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. +#ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 +#endif + +// NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. +#ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 +#endif + +// NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. +// Maximum number of total concurrent connections using the default configuration. + +#ifndef NRF_SDH_BLE_TOTAL_LINK_COUNT +#define NRF_SDH_BLE_TOTAL_LINK_COUNT 1 +#endif + +// NRF_SDH_BLE_GAP_EVENT_LENGTH - GAP event length. +// The time set aside for this connection on every connection interval in 1.25 ms units. + +#ifndef NRF_SDH_BLE_GAP_EVENT_LENGTH +#define NRF_SDH_BLE_GAP_EVENT_LENGTH 6 +#endif + +// NRF_SDH_BLE_GATT_MAX_MTU_SIZE - Static maximum MTU size. +#ifndef NRF_SDH_BLE_GATT_MAX_MTU_SIZE +#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 250 +#endif + +// NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE - Attribute Table size in bytes. The size must be a multiple of 4. +#ifndef NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE +#define NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE 1408 +#endif + +// NRF_SDH_BLE_VS_UUID_COUNT - The number of vendor-specific UUIDs. +#ifndef NRF_SDH_BLE_VS_UUID_COUNT +#define NRF_SDH_BLE_VS_UUID_COUNT 0 +#endif + +// NRF_SDH_BLE_SERVICE_CHANGED - Include the Service Changed characteristic in the Attribute Table. + + +#ifndef NRF_SDH_BLE_SERVICE_CHANGED +#define NRF_SDH_BLE_SERVICE_CHANGED 0 +#endif + +// +//========================================================== + +// BLE Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_BLE_OBSERVER_PRIO_LEVELS - Total number of priority levels for BLE observers. +// This setting configures the number of priority levels available for BLE event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_BLE_OBSERVER_PRIO_LEVELS +#define NRF_SDH_BLE_OBSERVER_PRIO_LEVELS 4 +#endif + +// BLE Observers priorities - Invididual priorities + +//========================================================== +// BLE_ADV_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Advertising module. + +#ifndef BLE_ADV_BLE_OBSERVER_PRIO +#define BLE_ADV_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_ANCS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Apple Notification Service Client. + +#ifndef BLE_ANCS_C_BLE_OBSERVER_PRIO +#define BLE_ANCS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_ANS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Alert Notification Service Client. + +#ifndef BLE_ANS_C_BLE_OBSERVER_PRIO +#define BLE_ANS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BAS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Battery Service. + +#ifndef BLE_BAS_BLE_OBSERVER_PRIO +#define BLE_BAS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BAS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Battery Service Client. + +#ifndef BLE_BAS_C_BLE_OBSERVER_PRIO +#define BLE_BAS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BPS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Blood Pressure Service. + +#ifndef BLE_BPS_BLE_OBSERVER_PRIO +#define BLE_BPS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_CONN_PARAMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Connection parameters module. + +#ifndef BLE_CONN_PARAMS_BLE_OBSERVER_PRIO +#define BLE_CONN_PARAMS_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_CONN_STATE_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Connection State module. + +#ifndef BLE_CONN_STATE_BLE_OBSERVER_PRIO +#define BLE_CONN_STATE_BLE_OBSERVER_PRIO 0 +#endif + +// BLE_CSCS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Cycling Speed and Cadence Service. + +#ifndef BLE_CSCS_BLE_OBSERVER_PRIO +#define BLE_CSCS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_CTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Current Time Service Client. + +#ifndef BLE_CTS_C_BLE_OBSERVER_PRIO +#define BLE_CTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_DB_DISC_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Database Discovery module. + +#ifndef BLE_DB_DISC_BLE_OBSERVER_PRIO +#define BLE_DB_DISC_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_DFU_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the DFU Service. + +#ifndef BLE_DFU_BLE_OBSERVER_PRIO +#define BLE_DFU_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_DIS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Device Information Client. + +#ifndef BLE_DIS_C_BLE_OBSERVER_PRIO +#define BLE_DIS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_GLS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Glucose Service. + +#ifndef BLE_GLS_BLE_OBSERVER_PRIO +#define BLE_GLS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HIDS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Human Interface Device Service. + +#ifndef BLE_HIDS_BLE_OBSERVER_PRIO +#define BLE_HIDS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HRS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Heart Rate Service. + +#ifndef BLE_HRS_BLE_OBSERVER_PRIO +#define BLE_HRS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HRS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Heart Rate Service Client. + +#ifndef BLE_HRS_C_BLE_OBSERVER_PRIO +#define BLE_HRS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HTS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Health Thermometer Service. + +#ifndef BLE_HTS_BLE_OBSERVER_PRIO +#define BLE_HTS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_IAS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Immediate Alert Service. + +#ifndef BLE_IAS_BLE_OBSERVER_PRIO +#define BLE_IAS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_IAS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Immediate Alert Service Client. + +#ifndef BLE_IAS_C_BLE_OBSERVER_PRIO +#define BLE_IAS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LBS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the LED Button Service. + +#ifndef BLE_LBS_BLE_OBSERVER_PRIO +#define BLE_LBS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LBS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the LED Button Service Client. + +#ifndef BLE_LBS_C_BLE_OBSERVER_PRIO +#define BLE_LBS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LLS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Link Loss Service. + +#ifndef BLE_LLS_BLE_OBSERVER_PRIO +#define BLE_LLS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LNS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Location Navigation Service. + +#ifndef BLE_LNS_BLE_OBSERVER_PRIO +#define BLE_LNS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_NUS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the UART Service. + +#ifndef BLE_NUS_BLE_OBSERVER_PRIO +#define BLE_NUS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_NUS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the UART Central Service. + +#ifndef BLE_NUS_C_BLE_OBSERVER_PRIO +#define BLE_NUS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_OTS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Object transfer service. + +#ifndef BLE_OTS_BLE_OBSERVER_PRIO +#define BLE_OTS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_OTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Object transfer service client. + +#ifndef BLE_OTS_C_BLE_OBSERVER_PRIO +#define BLE_OTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_RSCS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Running Speed and Cadence Service. + +#ifndef BLE_RSCS_BLE_OBSERVER_PRIO +#define BLE_RSCS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_RSCS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Running Speed and Cadence Client. + +#ifndef BLE_RSCS_C_BLE_OBSERVER_PRIO +#define BLE_RSCS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_TPS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the TX Power Service. + +#ifndef BLE_TPS_BLE_OBSERVER_PRIO +#define BLE_TPS_BLE_OBSERVER_PRIO 2 +#endif + +// BSP_BTN_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Button Control module. + +#ifndef BSP_BTN_BLE_OBSERVER_PRIO +#define BSP_BTN_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NRF_BLE_BMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Bond Management Service. + +#ifndef NRF_BLE_BMS_BLE_OBSERVER_PRIO +#define NRF_BLE_BMS_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_CGMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Contiuon Glucose Monitoring Service. + +#ifndef NRF_BLE_CGMS_BLE_OBSERVER_PRIO +#define NRF_BLE_CGMS_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_ES_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Eddystone module. + +#ifndef NRF_BLE_ES_BLE_OBSERVER_PRIO +#define NRF_BLE_ES_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the GATT Service Client. + +#ifndef NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO +#define NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_GATT_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the GATT module. + +#ifndef NRF_BLE_GATT_BLE_OBSERVER_PRIO +#define NRF_BLE_GATT_BLE_OBSERVER_PRIO 1 +#endif + +// NRF_BLE_QWR_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Queued writes module. + +#ifndef NRF_BLE_QWR_BLE_OBSERVER_PRIO +#define NRF_BLE_QWR_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_SCAN_OBSERVER_PRIO +// Priority for dispatching the BLE events to the Scanning Module. + +#ifndef NRF_BLE_SCAN_OBSERVER_PRIO +#define NRF_BLE_SCAN_OBSERVER_PRIO 1 +#endif + +// PM_BLE_OBSERVER_PRIO - Priority with which BLE events are dispatched to the Peer Manager module. +#ifndef PM_BLE_OBSERVER_PRIO +#define PM_BLE_OBSERVER_PRIO 1 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// NRF_SDH_ENABLED - nrf_sdh - SoftDevice handler +//========================================================== +#ifndef NRF_SDH_ENABLED +#define NRF_SDH_ENABLED 1 +#endif +// Dispatch model + +// This setting configures how Stack events are dispatched to the application. +//========================================================== +// NRF_SDH_DISPATCH_MODEL + + +// NRF_SDH_DISPATCH_MODEL_INTERRUPT: SoftDevice events are passed to the application from the interrupt context. +// NRF_SDH_DISPATCH_MODEL_APPSH: SoftDevice events are scheduled using @ref app_scheduler. +// NRF_SDH_DISPATCH_MODEL_POLLING: SoftDevice events are to be fetched manually. +// <0=> NRF_SDH_DISPATCH_MODEL_INTERRUPT +// <1=> NRF_SDH_DISPATCH_MODEL_APPSH +// <2=> NRF_SDH_DISPATCH_MODEL_POLLING + +#ifndef NRF_SDH_DISPATCH_MODEL +#define NRF_SDH_DISPATCH_MODEL 0 +#endif + +// +//========================================================== + +// Clock - SoftDevice clock configuration + +//========================================================== +// NRF_SDH_CLOCK_LF_SRC - SoftDevice clock source. + +// <0=> NRF_CLOCK_LF_SRC_RC +// <1=> NRF_CLOCK_LF_SRC_XTAL +// <2=> NRF_CLOCK_LF_SRC_SYNTH + +#ifndef NRF_SDH_CLOCK_LF_SRC +#define NRF_SDH_CLOCK_LF_SRC 1 +#endif + +// NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval. +#ifndef NRF_SDH_CLOCK_LF_RC_CTIV +#define NRF_SDH_CLOCK_LF_RC_CTIV 0 +#endif + +// NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature. +// How often (in number of calibration intervals) the RC oscillator shall be calibrated +// if the temperature has not changed. + +#ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV +#define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 0 +#endif + +// NRF_SDH_CLOCK_LF_ACCURACY - External clock accuracy used in the LL to compute timing. + +// <0=> NRF_CLOCK_LF_ACCURACY_250_PPM +// <1=> NRF_CLOCK_LF_ACCURACY_500_PPM +// <2=> NRF_CLOCK_LF_ACCURACY_150_PPM +// <3=> NRF_CLOCK_LF_ACCURACY_100_PPM +// <4=> NRF_CLOCK_LF_ACCURACY_75_PPM +// <5=> NRF_CLOCK_LF_ACCURACY_50_PPM +// <6=> NRF_CLOCK_LF_ACCURACY_30_PPM +// <7=> NRF_CLOCK_LF_ACCURACY_20_PPM +// <8=> NRF_CLOCK_LF_ACCURACY_10_PPM +// <9=> NRF_CLOCK_LF_ACCURACY_5_PPM +// <10=> NRF_CLOCK_LF_ACCURACY_2_PPM +// <11=> NRF_CLOCK_LF_ACCURACY_1_PPM + +#ifndef NRF_SDH_CLOCK_LF_ACCURACY +#define NRF_SDH_CLOCK_LF_ACCURACY 7 +#endif + +// +//========================================================== + +// SDH Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_REQ_OBSERVER_PRIO_LEVELS - Total number of priority levels for request observers. +// This setting configures the number of priority levels available for the SoftDevice request event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_REQ_OBSERVER_PRIO_LEVELS +#define NRF_SDH_REQ_OBSERVER_PRIO_LEVELS 2 +#endif + +// NRF_SDH_STATE_OBSERVER_PRIO_LEVELS - Total number of priority levels for state observers. +// This setting configures the number of priority levels available for the SoftDevice state event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_STATE_OBSERVER_PRIO_LEVELS +#define NRF_SDH_STATE_OBSERVER_PRIO_LEVELS 2 +#endif + +// NRF_SDH_STACK_OBSERVER_PRIO_LEVELS - Total number of priority levels for stack event observers. +// This setting configures the number of priority levels available for the SoftDevice stack event handlers (ANT, BLE, SoC). +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_STACK_OBSERVER_PRIO_LEVELS +#define NRF_SDH_STACK_OBSERVER_PRIO_LEVELS 2 +#endif + + +// State Observers priorities - Invididual priorities + +//========================================================== +// CLOCK_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to the Clock driver. + +#ifndef CLOCK_CONFIG_STATE_OBSERVER_PRIO +#define CLOCK_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// POWER_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to the Power driver. + +#ifndef POWER_CONFIG_STATE_OBSERVER_PRIO +#define POWER_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// RNG_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to this module. + +#ifndef RNG_CONFIG_STATE_OBSERVER_PRIO +#define RNG_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// Stack Event Observers priorities - Invididual priorities + +//========================================================== +// NRF_SDH_ANT_STACK_OBSERVER_PRIO +// This setting configures the priority with which ANT events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have ANT events dispatched before or after other stack events, such as BLE or SoC. +// Zero is the highest priority. + +#ifndef NRF_SDH_ANT_STACK_OBSERVER_PRIO +#define NRF_SDH_ANT_STACK_OBSERVER_PRIO 0 +#endif + +// NRF_SDH_BLE_STACK_OBSERVER_PRIO +// This setting configures the priority with which BLE events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have BLE events dispatched before or after other stack events, such as ANT or SoC. +// Zero is the highest priority. + +#ifndef NRF_SDH_BLE_STACK_OBSERVER_PRIO +#define NRF_SDH_BLE_STACK_OBSERVER_PRIO 0 +#endif + +// NRF_SDH_SOC_STACK_OBSERVER_PRIO +// This setting configures the priority with which SoC events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have SoC events dispatched before or after other stack events, such as ANT or BLE. +// Zero is the highest priority. + +#ifndef NRF_SDH_SOC_STACK_OBSERVER_PRIO +#define NRF_SDH_SOC_STACK_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// NRF_SDH_SOC_ENABLED - nrf_sdh_soc - SoftDevice SoC event handler +//========================================================== +#ifndef NRF_SDH_SOC_ENABLED +#define NRF_SDH_SOC_ENABLED 1 +#endif +// SoC Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_SOC_OBSERVER_PRIO_LEVELS - Total number of priority levels for SoC observers. +// This setting configures the number of priority levels available for the SoC event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_SOC_OBSERVER_PRIO_LEVELS +#define NRF_SDH_SOC_OBSERVER_PRIO_LEVELS 2 +#endif + +// SoC Observers priorities - Invididual priorities + +//========================================================== +// BLE_ADV_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Advertising module. + +#ifndef BLE_ADV_SOC_OBSERVER_PRIO +#define BLE_ADV_SOC_OBSERVER_PRIO 1 +#endif + +// BLE_DFU_SOC_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the DFU Service. + +#ifndef BLE_DFU_SOC_OBSERVER_PRIO +#define BLE_DFU_SOC_OBSERVER_PRIO 1 +#endif + +// CLOCK_CONFIG_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Clock driver. + +#ifndef CLOCK_CONFIG_SOC_OBSERVER_PRIO +#define CLOCK_CONFIG_SOC_OBSERVER_PRIO 0 +#endif + +// POWER_CONFIG_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Power driver. + +#ifndef POWER_CONFIG_SOC_OBSERVER_PRIO +#define POWER_CONFIG_SOC_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// +//========================================================== + +// <<< end of configuration section >>> +#endif //SDK_CONFIG_H + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10056.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10056.emProject new file mode 100644 index 0000000..53ad491 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10056.emProject @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10056.emSession nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10056.emSession new file mode 100644 index 0000000..ce75e3c --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10056.emSession @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/ses/flash_placement.xml new file mode 100644 index 0000000..c9cc513 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v3_usb_hci/ses/flash_placement.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/armgcc/Makefile new file mode 100644 index 0000000..e581252 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/armgcc/Makefile @@ -0,0 +1,291 @@ +PROJECT_NAME := ble_connectivity_132v5_usb_hci_pca10056 +TARGETS := nrf52840_xxaa +OUTPUT_DIRECTORY := _build + +SDK_ROOT := ../../../../../.. +PROJ_DIR := ../../.. + +$(OUTPUT_DIRECTORY)/nrf52840_xxaa.out: \ + LINKER_SCRIPT := ble_connectivity_gcc_nrf52.ld + +# Source files common to all targets +SRC_FILES += \ + $(SDK_ROOT)/modules/nrfx/mdk/gcc_startup_nrf52840.S \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_rtt.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_serial.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_uart.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_default_backends.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_frontend.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_str_formatter.c \ + $(SDK_ROOT)/components/libraries/util/app_error.c \ + $(SDK_ROOT)/components/libraries/util/app_error_handler_gcc.c \ + $(SDK_ROOT)/components/libraries/util/app_error_weak.c \ + $(SDK_ROOT)/components/libraries/scheduler/app_scheduler.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/app_timer2.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd.c \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc/acm/app_usbd_cdc_acm.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_core.c \ + $(SDK_ROOT)/components/libraries/usbd/class/nrf_dfu_trigger/app_usbd_nrf_dfu_trigger.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_serial_num.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_string_desc.c \ + $(SDK_ROOT)/components/libraries/util/app_util_platform.c \ + $(SDK_ROOT)/components/libraries/crc16/crc16.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/drv_rtc.c \ + $(SDK_ROOT)/components/libraries/util/nrf_assert.c \ + $(SDK_ROOT)/components/libraries/atomic_fifo/nrf_atfifo.c \ + $(SDK_ROOT)/components/libraries/atomic/nrf_atomic.c \ + $(SDK_ROOT)/components/libraries/balloc/nrf_balloc.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf_format.c \ + $(SDK_ROOT)/components/libraries/memobj/nrf_memobj.c \ + $(SDK_ROOT)/components/libraries/queue/nrf_queue.c \ + $(SDK_ROOT)/components/libraries/ringbuf/nrf_ringbuf.c \ + $(SDK_ROOT)/components/libraries/experimental_section_vars/nrf_section_iter.c \ + $(SDK_ROOT)/components/libraries/sortlist/nrf_sortlist.c \ + $(SDK_ROOT)/components/libraries/strerror/nrf_strerror.c \ + $(SDK_ROOT)/modules/nrfx/mdk/system_nrf52840.c \ + $(SDK_ROOT)/components/boards/boards.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/ble_dtm_init.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_event_enc.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_evt_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gap_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gap_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gatt_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gattc_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gattc_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gattc_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gatts_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gatts_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gatts_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_l2cap_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_l2cap_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_l2cap_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/ble_serialization.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/cond_field_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_gap_sec_keys.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_l2cap_sdu_pool.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_user_mem.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/conn_mw.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gap.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gattc.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gatts.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_l2cap.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/conn_mw_nrf_soc.c \ + $(SDK_ROOT)/components/serialization/connectivity/hal/dtm_uart.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/nrf_soc_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/nrf_soc_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_dtm_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_error_handling.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_event_encoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_handlers.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_pkt_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_reset_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/common/ser_dbg_sd_str.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_hal_transport.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/ser_phy_hci.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/ser_phy_hci_slip_cdc.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_clock.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_power.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_uart.c \ + $(SDK_ROOT)/modules/nrfx/soc/nrfx_atomic.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_power.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_qspi.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_systick.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_usbd.c \ + $(PROJ_DIR)/main.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_printf.c \ + $(SDK_ROOT)/components/ble/common/ble_advdata.c \ + $(SDK_ROOT)/components/ble/common/ble_conn_params.c \ + $(SDK_ROOT)/components/ble/ble_dtm/ble_dtm.c \ + $(SDK_ROOT)/components/ble/ble_dtm/ble_dtm_hw_nrf52.c \ + $(SDK_ROOT)/components/ble/common/ble_srv_common.c \ + $(SDK_ROOT)/external/utf_converter/utf.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh_ble.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh_soc.c \ + +# Include folders common to all targets +INC_FOLDERS += \ + $(SDK_ROOT)/components \ + $(SDK_ROOT)/components/serialization/connectivity/hal \ + $(SDK_ROOT)/modules/nrfx/mdk \ + $(SDK_ROOT)/components/libraries/scheduler \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers \ + $(SDK_ROOT)/components/toolchain/cmsis/include \ + $(SDK_ROOT)/components/libraries/queue \ + $(SDK_ROOT)/components/libraries/timer \ + $(SDK_ROOT)/components/boards \ + $(SDK_ROOT)/components/serialization/connectivity \ + $(SDK_ROOT)/components/libraries/strerror \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware \ + $(SDK_ROOT)/components/libraries/crc16 \ + $(SDK_ROOT)/components/libraries/bootloader/dfu \ + $(SDK_ROOT)/components/serialization/common \ + $(SDK_ROOT)/components/libraries/util \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc/acm \ + ../config \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc \ + $(SDK_ROOT)/components/ble/common \ + $(SDK_ROOT)/components/libraries/balloc \ + $(SDK_ROOT)/components/ble/ble_dtm \ + $(SDK_ROOT)/components/libraries/ringbuf \ + $(SDK_ROOT)/modules/nrfx/hal \ + $(SDK_ROOT)/components/libraries/bsp \ + $(SDK_ROOT)/components/libraries/log \ + $(SDK_ROOT)/external/utf_converter \ + $(SDK_ROOT)/modules/nrfx \ + $(SDK_ROOT)/components/libraries/experimental_section_vars \ + $(SDK_ROOT)/integration/nrfx/legacy \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy \ + $(SDK_ROOT)/components/libraries/usbd \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common \ + $(SDK_ROOT)/components/libraries/delay \ + $(SDK_ROOT)/external/segger_rtt \ + $(SDK_ROOT)/components/libraries/atomic_fifo \ + $(SDK_ROOT)/components/softdevice/s132v5/headers \ + $(SDK_ROOT)/components/libraries/atomic \ + $(SDK_ROOT)/components/libraries/sortlist \ + $(SDK_ROOT)/components/libraries/memobj \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble \ + $(SDK_ROOT)/integration/nrfx \ + $(SDK_ROOT)/components/libraries/usbd/class/nrf_dfu_trigger \ + $(SDK_ROOT)/components/serialization/common/transport \ + $(SDK_ROOT)/components/libraries/timer/experimental \ + $(SDK_ROOT)/components/softdevice/common \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/config \ + $(SDK_ROOT)/modules/nrfx/drivers/include \ + $(SDK_ROOT)/components/softdevice/s132v5/headers/nrf52 \ + $(SDK_ROOT)/components/libraries/block_dev \ + $(SDK_ROOT)/external/fprintf \ + $(SDK_ROOT)/components/libraries/log/src \ + +# Libraries common to all targets +LIB_FILES += \ + +# Optimization flags +OPT = -Os -g3 +# Uncomment the line below to enable link time optimization +#OPT += -flto + +# C flags common to all targets +CFLAGS += $(OPT) +CFLAGS += -DAPP_TIMER_V2 +CFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +CFLAGS += -DBLE_STACK_SUPPORT_REQD +CFLAGS += -DBOARD_PCA10056 +CFLAGS += -DBSP_DEFINES_ONLY +CFLAGS += -DCONFIG_GPIO_AS_PINRESET +CFLAGS += -DFLOAT_ABI_HARD +CFLAGS += -DHCI_TIMER2 +CFLAGS += -DNRF52840_XXAA +CFLAGS += -DNRF_SD_BLE_API_VERSION=5 +CFLAGS += -DS132 +CFLAGS += -DSER_CONNECTIVITY +CFLAGS += -DSER_PHY_HCI +CFLAGS += -DSER_PHY_HCI_USB_CDC +CFLAGS += -DSOFTDEVICE_PRESENT +CFLAGS += -mcpu=cortex-m4 +CFLAGS += -mthumb -mabi=aapcs +CFLAGS += -Wall -Werror +CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# keep every function in a separate section, this allows linker to discard unused ones +CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing +CFLAGS += -fno-builtin -fshort-enums + +# C++ flags common to all targets +CXXFLAGS += $(OPT) + +# Assembler flags common to all targets +ASMFLAGS += -g3 +ASMFLAGS += -mcpu=cortex-m4 +ASMFLAGS += -mthumb -mabi=aapcs +ASMFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +ASMFLAGS += -DAPP_TIMER_V2 +ASMFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +ASMFLAGS += -DBLE_STACK_SUPPORT_REQD +ASMFLAGS += -DBOARD_PCA10056 +ASMFLAGS += -DBSP_DEFINES_ONLY +ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET +ASMFLAGS += -DFLOAT_ABI_HARD +ASMFLAGS += -DHCI_TIMER2 +ASMFLAGS += -DNRF52840_XXAA +ASMFLAGS += -DNRF_SD_BLE_API_VERSION=5 +ASMFLAGS += -DS132 +ASMFLAGS += -DSER_CONNECTIVITY +ASMFLAGS += -DSER_PHY_HCI +ASMFLAGS += -DSER_PHY_HCI_USB_CDC +ASMFLAGS += -DSOFTDEVICE_PRESENT + +# Linker flags +LDFLAGS += $(OPT) +LDFLAGS += -mthumb -mabi=aapcs -L$(SDK_ROOT)/modules/nrfx/mdk -T$(LINKER_SCRIPT) +LDFLAGS += -mcpu=cortex-m4 +LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# let linker dump unused sections +LDFLAGS += -Wl,--gc-sections +# use newlib in nano version +LDFLAGS += --specs=nano.specs + +nrf52840_xxaa: CFLAGS += -D__HEAP_SIZE=512 +nrf52840_xxaa: CFLAGS += -D__STACK_SIZE=2048 +nrf52840_xxaa: ASMFLAGS += -D__HEAP_SIZE=512 +nrf52840_xxaa: ASMFLAGS += -D__STACK_SIZE=2048 + +# Add standard libraries at the very end of the linker input, after all objects +# that may need symbols provided by these libraries. +LIB_FILES += -lc -lnosys -lm + + +.PHONY: default help + +# Default target - first one defined +default: nrf52840_xxaa + +# Print all targets that can be built +help: + @echo following targets are available: + @echo nrf52840_xxaa + @echo flash_softdevice + @echo sdk_config - starting external tool for editing sdk_config.h + @echo flash - flashing binary + +TEMPLATE_PATH := $(SDK_ROOT)/components/toolchain/gcc + + +include $(TEMPLATE_PATH)/Makefile.common + +$(foreach target, $(TARGETS), $(call define_target, $(target))) + +.PHONY: flash flash_softdevice erase + +# Flash the program +flash: default + @echo Flashing: $(OUTPUT_DIRECTORY)/nrf52840_xxaa.hex + nrfjprog -f nrf52 --program $(OUTPUT_DIRECTORY)/nrf52840_xxaa.hex --sectorerase + nrfjprog -f nrf52 --reset + +# Flash softdevice +flash_softdevice: + @echo Flashing: s132_nrf52_5.1.0_softdevice.hex + nrfjprog -f nrf52 --program $(SDK_ROOT)/components/softdevice/s132v5/hex/s132_nrf52_5.1.0_softdevice.hex --sectorerase + nrfjprog -f nrf52 --reset + +erase: + nrfjprog -f nrf52 --eraseall + +SDK_CONFIG_FILE := ../config/sdk_config.h +CMSIS_CONFIG_TOOL := $(SDK_ROOT)/external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar +sdk_config: + java -jar $(CMSIS_CONFIG_TOOL) $(SDK_CONFIG_FILE) diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld new file mode 100644 index 0000000..5a127fb --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -0,0 +1,108 @@ +/* Linker script to configure memory regions. */ + +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x23000, LENGTH = 0xdd000 + RAM (rwx) : ORIGIN = 0x20019380, LENGTH = 0x26c80 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 +} + +SECTIONS +{ + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info +} + +SECTIONS +{ + . = ALIGN(4); + .mem_section_dummy_ram : + { + } + .log_dynamic_data : + { + PROVIDE(__start_log_dynamic_data = .); + KEEP(*(SORT(.log_dynamic_data*))) + PROVIDE(__stop_log_dynamic_data = .); + } > RAM + .log_filter_data : + { + PROVIDE(__start_log_filter_data = .); + KEEP(*(SORT(.log_filter_data*))) + PROVIDE(__stop_log_filter_data = .); + } > RAM + +} INSERT AFTER .data; + +SECTIONS +{ + .mem_section_dummy_rom : + { + } + .sdh_ble_observers : + { + PROVIDE(__start_sdh_ble_observers = .); + KEEP(*(SORT(.sdh_ble_observers*))) + PROVIDE(__stop_sdh_ble_observers = .); + } > FLASH + .sdh_soc_observers : + { + PROVIDE(__start_sdh_soc_observers = .); + KEEP(*(SORT(.sdh_soc_observers*))) + PROVIDE(__stop_sdh_soc_observers = .); + } > FLASH + .nrf_queue : + { + PROVIDE(__start_nrf_queue = .); + KEEP(*(.nrf_queue)) + PROVIDE(__stop_nrf_queue = .); + } > FLASH + .log_const_data : + { + PROVIDE(__start_log_const_data = .); + KEEP(*(SORT(.log_const_data*))) + PROVIDE(__stop_log_const_data = .); + } > FLASH + .nrf_balloc : + { + PROVIDE(__start_nrf_balloc = .); + KEEP(*(.nrf_balloc)) + PROVIDE(__stop_nrf_balloc = .); + } > FLASH + .sdh_state_observers : + { + PROVIDE(__start_sdh_state_observers = .); + KEEP(*(SORT(.sdh_state_observers*))) + PROVIDE(__stop_sdh_state_observers = .); + } > FLASH + .sdh_stack_observers : + { + PROVIDE(__start_sdh_stack_observers = .); + KEEP(*(SORT(.sdh_stack_observers*))) + PROVIDE(__stop_sdh_stack_observers = .); + } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH + .log_backends : + { + PROVIDE(__start_log_backends = .); + KEEP(*(SORT(.log_backends*))) + PROVIDE(__stop_log_backends = .); + } > FLASH + +} INSERT AFTER .text + + +INCLUDE "nrf_common.ld" diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/config/sdk_config.h new file mode 100644 index 0000000..519a185 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/config/sdk_config.h @@ -0,0 +1,5390 @@ +/** + * Copyright (c) 2017 - 2019, 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. + * + */ + + + +#ifndef SDK_CONFIG_H +#define SDK_CONFIG_H +// <<< Use Configuration Wizard in Context Menu >>>\n +#ifdef USE_APP_CONFIG +#include "app_config.h" +#endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "+" __DATE__ " " __TIME__ +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + +// Board Definition + +//========================================================== +// nrf_dfu_trigger_usb - USB DFU Trigger library + +//========================================================== +// NRF_DFU_TRIGGER_USB_USB_SHARED - Flag indicating whether USB is used for other purposes in the application. + + +#ifndef NRF_DFU_TRIGGER_USB_USB_SHARED +#define NRF_DFU_TRIGGER_USB_USB_SHARED 1 +#endif + +// NRF_DFU_TRIGGER_USB_INTERFACE_NUM - The USB interface to use for the DFU Trigger library. <0-255> + + +// According to the USB Specification, interface numbers cannot have +// gaps. Tailor this value to adhere to this limitation. + +#ifndef NRF_DFU_TRIGGER_USB_INTERFACE_NUM +#define NRF_DFU_TRIGGER_USB_INTERFACE_NUM 0 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_BLE + +//========================================================== +// BLE_DTM_ENABLED - ble_dtm - Module for testing RF/PHY using DTM commands + + +#ifndef BLE_DTM_ENABLED +#define BLE_DTM_ENABLED 1 +#endif + +// NRF_BLE_CONN_PARAMS_ENABLED - ble_conn_params - Initiating and executing a connection parameters negotiation procedure +//========================================================== +#ifndef NRF_BLE_CONN_PARAMS_ENABLED +#define NRF_BLE_CONN_PARAMS_ENABLED 1 +#endif +// NRF_BLE_CONN_PARAMS_MAX_SLAVE_LATENCY_DEVIATION - The largest acceptable deviation in slave latency. +// The largest deviation (+ or -) from the requested slave latency that will not be renegotiated. + +#ifndef NRF_BLE_CONN_PARAMS_MAX_SLAVE_LATENCY_DEVIATION +#define NRF_BLE_CONN_PARAMS_MAX_SLAVE_LATENCY_DEVIATION 499 +#endif + +// NRF_BLE_CONN_PARAMS_MAX_SUPERVISION_TIMEOUT_DEVIATION - The largest acceptable deviation (in 10 ms units) in supervision timeout. +// The largest deviation (+ or -, in 10 ms units) from the requested supervision timeout that will not be renegotiated. + +#ifndef NRF_BLE_CONN_PARAMS_MAX_SUPERVISION_TIMEOUT_DEVIATION +#define NRF_BLE_CONN_PARAMS_MAX_SUPERVISION_TIMEOUT_DEVIATION 65535 +#endif + +// + +// +//========================================================== + +// nRF_Drivers + +//========================================================== +// NRFX_CLOCK_ENABLED - nrfx_clock - CLOCK peripheral driver +//========================================================== +#ifndef NRFX_CLOCK_ENABLED +#define NRFX_CLOCK_ENABLED 1 +#endif +// NRFX_CLOCK_CONFIG_LF_SRC - LF Clock Source + +// <0=> RC +// <1=> XTAL +// <2=> Synth +// <131073=> External Low Swing +// <196609=> External Full Swing + +#ifndef NRFX_CLOCK_CONFIG_LF_SRC +#define NRFX_CLOCK_CONFIG_LF_SRC 1 +#endif + +// NRFX_CLOCK_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_CLOCK_CONFIG_IRQ_PRIORITY +#define NRFX_CLOCK_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_CLOCK_CONFIG_LOG_ENABLED +#define NRFX_CLOCK_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_CLOCK_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_CLOCK_CONFIG_LOG_LEVEL +#define NRFX_CLOCK_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_CLOCK_CONFIG_INFO_COLOR +#define NRFX_CLOCK_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_CLOCK_CONFIG_DEBUG_COLOR +#define NRFX_CLOCK_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_POWER_ENABLED - nrfx_power - POWER peripheral driver +//========================================================== +#ifndef NRFX_POWER_ENABLED +#define NRFX_POWER_ENABLED 1 +#endif +// NRFX_POWER_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_POWER_CONFIG_IRQ_PRIORITY +#define NRFX_POWER_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_POWER_CONFIG_DEFAULT_DCDCEN - The default configuration of main DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef NRFX_POWER_CONFIG_DEFAULT_DCDCEN +#define NRFX_POWER_CONFIG_DEFAULT_DCDCEN 0 +#endif + +// NRFX_POWER_CONFIG_DEFAULT_DCDCENHV - The default configuration of High Voltage DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef NRFX_POWER_CONFIG_DEFAULT_DCDCENHV +#define NRFX_POWER_CONFIG_DEFAULT_DCDCENHV 0 +#endif + +// + +// NRFX_PRS_ENABLED - nrfx_prs - Peripheral Resource Sharing module +//========================================================== +#ifndef NRFX_PRS_ENABLED +#define NRFX_PRS_ENABLED 1 +#endif +// NRFX_PRS_BOX_0_ENABLED - Enables box 0 in the module. + + +#ifndef NRFX_PRS_BOX_0_ENABLED +#define NRFX_PRS_BOX_0_ENABLED 0 +#endif + +// NRFX_PRS_BOX_1_ENABLED - Enables box 1 in the module. + + +#ifndef NRFX_PRS_BOX_1_ENABLED +#define NRFX_PRS_BOX_1_ENABLED 0 +#endif + +// NRFX_PRS_BOX_2_ENABLED - Enables box 2 in the module. + + +#ifndef NRFX_PRS_BOX_2_ENABLED +#define NRFX_PRS_BOX_2_ENABLED 0 +#endif + +// NRFX_PRS_BOX_3_ENABLED - Enables box 3 in the module. + + +#ifndef NRFX_PRS_BOX_3_ENABLED +#define NRFX_PRS_BOX_3_ENABLED 0 +#endif + +// NRFX_PRS_BOX_4_ENABLED - Enables box 4 in the module. + + +#ifndef NRFX_PRS_BOX_4_ENABLED +#define NRFX_PRS_BOX_4_ENABLED 1 +#endif + +// NRFX_PRS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_PRS_CONFIG_LOG_ENABLED +#define NRFX_PRS_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_PRS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_PRS_CONFIG_LOG_LEVEL +#define NRFX_PRS_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_PRS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_PRS_CONFIG_INFO_COLOR +#define NRFX_PRS_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_PRS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_PRS_CONFIG_DEBUG_COLOR +#define NRFX_PRS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_QSPI_ENABLED - nrfx_qspi - QSPI peripheral driver +//========================================================== +#ifndef NRFX_QSPI_ENABLED +#define NRFX_QSPI_ENABLED 1 +#endif +// NRFX_QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef NRFX_QSPI_CONFIG_SCK_DELAY +#define NRFX_QSPI_CONFIG_SCK_DELAY 1 +#endif + +// NRFX_QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef NRFX_QSPI_CONFIG_XIP_OFFSET +#define NRFX_QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// NRFX_QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef NRFX_QSPI_CONFIG_READOC +#define NRFX_QSPI_CONFIG_READOC 0 +#endif + +// NRFX_QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef NRFX_QSPI_CONFIG_WRITEOC +#define NRFX_QSPI_CONFIG_WRITEOC 0 +#endif + +// NRFX_QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef NRFX_QSPI_CONFIG_ADDRMODE +#define NRFX_QSPI_CONFIG_ADDRMODE 0 +#endif + +// NRFX_QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef NRFX_QSPI_CONFIG_MODE +#define NRFX_QSPI_CONFIG_MODE 0 +#endif + +// NRFX_QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef NRFX_QSPI_CONFIG_FREQUENCY +#define NRFX_QSPI_CONFIG_FREQUENCY 15 +#endif + +// NRFX_QSPI_PIN_SCK - SCK pin value. +#ifndef NRFX_QSPI_PIN_SCK +#define NRFX_QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_CSN - CSN pin value. +#ifndef NRFX_QSPI_PIN_CSN +#define NRFX_QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO0 - IO0 pin value. +#ifndef NRFX_QSPI_PIN_IO0 +#define NRFX_QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO1 - IO1 pin value. +#ifndef NRFX_QSPI_PIN_IO1 +#define NRFX_QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO2 - IO2 pin value. +#ifndef NRFX_QSPI_PIN_IO2 +#define NRFX_QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO3 - IO3 pin value. +#ifndef NRFX_QSPI_PIN_IO3 +#define NRFX_QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_QSPI_CONFIG_IRQ_PRIORITY +#define NRFX_QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// NRFX_SYSTICK_ENABLED - nrfx_systick - ARM(R) SysTick driver + + +#ifndef NRFX_SYSTICK_ENABLED +#define NRFX_SYSTICK_ENABLED 1 +#endif + +// NRFX_UARTE_ENABLED - nrfx_uarte - UARTE peripheral driver +//========================================================== +#ifndef NRFX_UARTE_ENABLED +#define NRFX_UARTE_ENABLED 1 +#endif +// NRFX_UARTE0_ENABLED - Enable UARTE0 instance +#ifndef NRFX_UARTE0_ENABLED +#define NRFX_UARTE0_ENABLED 0 +#endif + +// NRFX_UARTE1_ENABLED - Enable UARTE1 instance +#ifndef NRFX_UARTE1_ENABLED +#define NRFX_UARTE1_ENABLED 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_HWFC +#define NRFX_UARTE_DEFAULT_CONFIG_HWFC 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_PARITY +#define NRFX_UARTE_DEFAULT_CONFIG_PARITY 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <8388608=> 31250 baud +// <10289152=> 38400 baud +// <15007744=> 56000 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE +#define NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE 30801920 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY +#define NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_UARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_UARTE_CONFIG_LOG_ENABLED +#define NRFX_UARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_UARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_UARTE_CONFIG_LOG_LEVEL +#define NRFX_UARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_UARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UARTE_CONFIG_INFO_COLOR +#define NRFX_UARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_UARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UARTE_CONFIG_DEBUG_COLOR +#define NRFX_UARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_UART_ENABLED - nrfx_uart - UART peripheral driver +//========================================================== +#ifndef NRFX_UART_ENABLED +#define NRFX_UART_ENABLED 1 +#endif +// NRFX_UART0_ENABLED - Enable UART0 instance +#ifndef NRFX_UART0_ENABLED +#define NRFX_UART0_ENABLED 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef NRFX_UART_DEFAULT_CONFIG_HWFC +#define NRFX_UART_DEFAULT_CONFIG_HWFC 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef NRFX_UART_DEFAULT_CONFIG_PARITY +#define NRFX_UART_DEFAULT_CONFIG_PARITY 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3866624=> 14400 baud +// <5152768=> 19200 baud +// <7729152=> 28800 baud +// <8388608=> 31250 baud +// <10309632=> 38400 baud +// <15007744=> 56000 baud +// <15462400=> 57600 baud +// <20615168=> 76800 baud +// <30924800=> 115200 baud +// <61845504=> 230400 baud +// <67108864=> 250000 baud +// <123695104=> 460800 baud +// <247386112=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRFX_UART_DEFAULT_CONFIG_BAUDRATE +#define NRFX_UART_DEFAULT_CONFIG_BAUDRATE 30924800 +#endif + +// NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY +#define NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_UART_CONFIG_LOG_ENABLED +#define NRFX_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_UART_CONFIG_LOG_LEVEL +#define NRFX_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UART_CONFIG_INFO_COLOR +#define NRFX_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UART_CONFIG_DEBUG_COLOR +#define NRFX_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_USBD_ENABLED - nrfx_usbd - USBD peripheral driver +//========================================================== +#ifndef NRFX_USBD_ENABLED +#define NRFX_USBD_ENABLED 1 +#endif +// NRFX_USBD_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_USBD_CONFIG_IRQ_PRIORITY +#define NRFX_USBD_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_USBD_CONFIG_DMASCHEDULER_MODE - USBD DMA scheduler working scheme + +// <0=> Prioritized access +// <1=> Round Robin + +#ifndef NRFX_USBD_CONFIG_DMASCHEDULER_MODE +#define NRFX_USBD_CONFIG_DMASCHEDULER_MODE 0 +#endif + +// NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST - Give priority to isochronous transfers + + +// This option gives priority to isochronous transfers. +// Enabling it assures that isochronous transfers are always processed, +// even if multiple other transfers are pending. +// Isochronous endpoints are prioritized before the usbd_dma_scheduler_algorithm +// function is called, so the option is independent of the algorithm chosen. + +#ifndef NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST +#define NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST 1 +#endif + +// NRFX_USBD_CONFIG_ISO_IN_ZLP - Respond to an IN token on ISO IN endpoint with ZLP when no data is ready + + +// If set, ISO IN endpoint will respond to an IN token with ZLP when no data is ready to be sent. +// Else, there will be no response. + +#ifndef NRFX_USBD_CONFIG_ISO_IN_ZLP +#define NRFX_USBD_CONFIG_ISO_IN_ZLP 0 +#endif + +// + +// NRF_CLOCK_ENABLED - nrf_drv_clock - CLOCK peripheral driver - legacy layer +//========================================================== +#ifndef NRF_CLOCK_ENABLED +#define NRF_CLOCK_ENABLED 1 +#endif +// CLOCK_CONFIG_LF_SRC - LF Clock Source + +// <0=> RC +// <1=> XTAL +// <2=> Synth +// <131073=> External Low Swing +// <196609=> External Full Swing + +#ifndef CLOCK_CONFIG_LF_SRC +#define CLOCK_CONFIG_LF_SRC 1 +#endif + +// CLOCK_CONFIG_LF_CAL_ENABLED - Calibration enable for LF Clock Source + + +#ifndef CLOCK_CONFIG_LF_CAL_ENABLED +#define CLOCK_CONFIG_LF_CAL_ENABLED 0 +#endif + +// CLOCK_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef CLOCK_CONFIG_IRQ_PRIORITY +#define CLOCK_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// POWER_ENABLED - nrf_drv_power - POWER peripheral driver - legacy layer +//========================================================== +#ifndef POWER_ENABLED +#define POWER_ENABLED 1 +#endif +// POWER_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef POWER_CONFIG_IRQ_PRIORITY +#define POWER_CONFIG_IRQ_PRIORITY 6 +#endif + +// POWER_CONFIG_DEFAULT_DCDCEN - The default configuration of main DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef POWER_CONFIG_DEFAULT_DCDCEN +#define POWER_CONFIG_DEFAULT_DCDCEN 0 +#endif + +// POWER_CONFIG_DEFAULT_DCDCENHV - The default configuration of High Voltage DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef POWER_CONFIG_DEFAULT_DCDCENHV +#define POWER_CONFIG_DEFAULT_DCDCENHV 0 +#endif + +// + +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 1 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// SYSTICK_ENABLED - nrf_drv_systick - ARM(R) SysTick driver - legacy layer + + +#ifndef SYSTICK_ENABLED +#define SYSTICK_ENABLED 1 +#endif + +// UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer +//========================================================== +#ifndef UART_ENABLED +#define UART_ENABLED 1 +#endif +// UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef UART_DEFAULT_CONFIG_HWFC +#define UART_DEFAULT_CONFIG_HWFC 0 +#endif + +// UART_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef UART_DEFAULT_CONFIG_PARITY +#define UART_DEFAULT_CONFIG_PARITY 0 +#endif + +// UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <10289152=> 38400 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef UART_DEFAULT_CONFIG_BAUDRATE +#define UART_DEFAULT_CONFIG_BAUDRATE 30801920 +#endif + +// UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef UART_DEFAULT_CONFIG_IRQ_PRIORITY +#define UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// UART_EASY_DMA_SUPPORT - Driver supporting EasyDMA + + +#ifndef UART_EASY_DMA_SUPPORT +#define UART_EASY_DMA_SUPPORT 1 +#endif + +// UART_LEGACY_SUPPORT - Driver supporting Legacy mode + + +#ifndef UART_LEGACY_SUPPORT +#define UART_LEGACY_SUPPORT 1 +#endif + +// UART0_ENABLED - Enable UART0 instance +//========================================================== +#ifndef UART0_ENABLED +#define UART0_ENABLED 1 +#endif +// UART0_CONFIG_USE_EASY_DMA - Default setting for using EasyDMA + + +#ifndef UART0_CONFIG_USE_EASY_DMA +#define UART0_CONFIG_USE_EASY_DMA 1 +#endif + +// + +// UART1_ENABLED - Enable UART1 instance +//========================================================== +#ifndef UART1_ENABLED +#define UART1_ENABLED 0 +#endif +// + +// + +// USBD_ENABLED - nrf_drv_usbd - Software Component +//========================================================== +#ifndef USBD_ENABLED +#define USBD_ENABLED 1 +#endif +// USBD_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef USBD_CONFIG_IRQ_PRIORITY +#define USBD_CONFIG_IRQ_PRIORITY 6 +#endif + +// USBD_CONFIG_DMASCHEDULER_MODE - USBD SMA scheduler working scheme + +// <0=> Prioritized access +// <1=> Round Robin + +#ifndef USBD_CONFIG_DMASCHEDULER_MODE +#define USBD_CONFIG_DMASCHEDULER_MODE 0 +#endif + +// USBD_CONFIG_DMASCHEDULER_ISO_BOOST - Give priority to isochronous transfers + + +// This option gives priority to isochronous transfers. +// Enabling it assures that isochronous transfers are always processed, +// even if multiple other transfers are pending. +// Isochronous endpoints are prioritized before the usbd_dma_scheduler_algorithm +// function is called, so the option is independent of the algorithm chosen. + +#ifndef USBD_CONFIG_DMASCHEDULER_ISO_BOOST +#define USBD_CONFIG_DMASCHEDULER_ISO_BOOST 1 +#endif + +// USBD_CONFIG_ISO_IN_ZLP - Respond to an IN token on ISO IN endpoint with ZLP when no data is ready + + +// If set, ISO IN endpoint will respond to an IN token with ZLP when no data is ready to be sent. +// Else, there will be no response. + +#ifndef USBD_CONFIG_ISO_IN_ZLP +#define USBD_CONFIG_ISO_IN_ZLP 0 +#endif + +// + +// +//========================================================== + +// nRF_Libraries + +//========================================================== +// APP_SCHEDULER_ENABLED - app_scheduler - Events scheduler +//========================================================== +#ifndef APP_SCHEDULER_ENABLED +#define APP_SCHEDULER_ENABLED 1 +#endif +// APP_SCHEDULER_WITH_PAUSE - Enabling pause feature + + +#ifndef APP_SCHEDULER_WITH_PAUSE +#define APP_SCHEDULER_WITH_PAUSE 1 +#endif + +// APP_SCHEDULER_WITH_PROFILER - Enabling scheduler profiling + + +#ifndef APP_SCHEDULER_WITH_PROFILER +#define APP_SCHEDULER_WITH_PROFILER 1 +#endif + +// + +// APP_TIMER_ENABLED - app_timer - Application timer functionality +//========================================================== +#ifndef APP_TIMER_ENABLED +#define APP_TIMER_ENABLED 1 +#endif +// APP_TIMER_CONFIG_RTC_FREQUENCY - Configure RTC prescaler. + +// <0=> 32768 Hz +// <1=> 16384 Hz +// <3=> 8192 Hz +// <7=> 4096 Hz +// <15=> 2048 Hz +// <31=> 1024 Hz + +#ifndef APP_TIMER_CONFIG_RTC_FREQUENCY +#define APP_TIMER_CONFIG_RTC_FREQUENCY 1 +#endif + +// APP_TIMER_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef APP_TIMER_CONFIG_IRQ_PRIORITY +#define APP_TIMER_CONFIG_IRQ_PRIORITY 6 +#endif + +// APP_TIMER_CONFIG_OP_QUEUE_SIZE - Capacity of timer requests queue. +// Size of the queue depends on how many timers are used +// in the system, how often timers are started and overall +// system latency. If queue size is too small app_timer calls +// will fail. + +#ifndef APP_TIMER_CONFIG_OP_QUEUE_SIZE +#define APP_TIMER_CONFIG_OP_QUEUE_SIZE 10 +#endif + +// APP_TIMER_CONFIG_USE_SCHEDULER - Enable scheduling app_timer events to app_scheduler + + +#ifndef APP_TIMER_CONFIG_USE_SCHEDULER +#define APP_TIMER_CONFIG_USE_SCHEDULER 0 +#endif + +// APP_TIMER_KEEPS_RTC_ACTIVE - Enable RTC always on + + +// If option is enabled RTC is kept running even if there is no active timers. +// This option can be used when app_timer is used for timestamping. + +#ifndef APP_TIMER_KEEPS_RTC_ACTIVE +#define APP_TIMER_KEEPS_RTC_ACTIVE 0 +#endif + +// APP_TIMER_SAFE_WINDOW_MS - Maximum possible latency (in milliseconds) of handling app_timer event. +// Maximum possible timeout that can be set is reduced by safe window. +// Example: RTC frequency 16384 Hz, maximum possible timeout 1024 seconds - APP_TIMER_SAFE_WINDOW_MS. +// Since RTC is not stopped when processor is halted in debugging session, this value +// must cover it if debugging is needed. It is possible to halt processor for APP_TIMER_SAFE_WINDOW_MS +// without corrupting app_timer behavior. + +#ifndef APP_TIMER_SAFE_WINDOW_MS +#define APP_TIMER_SAFE_WINDOW_MS 300000 +#endif + +// App Timer Legacy configuration - Legacy configuration. + +//========================================================== +// APP_TIMER_WITH_PROFILER - Enable app_timer profiling + + +#ifndef APP_TIMER_WITH_PROFILER +#define APP_TIMER_WITH_PROFILER 0 +#endif + +// APP_TIMER_CONFIG_SWI_NUMBER - Configure SWI instance used. + + +#ifndef APP_TIMER_CONFIG_SWI_NUMBER +#define APP_TIMER_CONFIG_SWI_NUMBER 0 +#endif + +// +//========================================================== + +// + +// APP_USBD_ENABLED - app_usbd - USB Device library +//========================================================== +#ifndef APP_USBD_ENABLED +#define APP_USBD_ENABLED 1 +#endif +// APP_USBD_VID - Vendor ID. + +// Note: This value is not editable in Configuration Wizard. +// Vendor ID ordered from USB IF: http://www.usb.org/developers/vendor/ +#ifndef APP_USBD_VID +#define APP_USBD_VID 0x1915 +#endif + +// APP_USBD_PID - Product ID. + +// Note: This value is not editable in Configuration Wizard. +// Selected Product ID +#ifndef APP_USBD_PID +#define APP_USBD_PID 0xC00A +#endif + +// APP_USBD_DEVICE_VER_MAJOR - Device version, major part. <0-99> + + +// Device version, will be converted automatically to BCD notation. Use just decimal values. + +#ifndef APP_USBD_DEVICE_VER_MAJOR +#define APP_USBD_DEVICE_VER_MAJOR 1 +#endif + +// APP_USBD_DEVICE_VER_MINOR - Device version, minor part. <0-99> + + +// Device version, will be converted automatically to BCD notation. Use just decimal values. + +#ifndef APP_USBD_DEVICE_VER_MINOR +#define APP_USBD_DEVICE_VER_MINOR 0 +#endif + +// APP_USBD_CONFIG_SELF_POWERED - Self-powered device, as opposed to bus-powered. + + +#ifndef APP_USBD_CONFIG_SELF_POWERED +#define APP_USBD_CONFIG_SELF_POWERED 1 +#endif + +// APP_USBD_CONFIG_MAX_POWER - MaxPower field in configuration descriptor in milliamps. <0-500> + + +#ifndef APP_USBD_CONFIG_MAX_POWER +#define APP_USBD_CONFIG_MAX_POWER 100 +#endif + +// APP_USBD_CONFIG_POWER_EVENTS_PROCESS - Process power events. + + +// Enable processing power events in USB event handler. + +#ifndef APP_USBD_CONFIG_POWER_EVENTS_PROCESS +#define APP_USBD_CONFIG_POWER_EVENTS_PROCESS 1 +#endif + +// APP_USBD_CONFIG_EVENT_QUEUE_ENABLE - Enable event queue. + +// This is the default configuration when all the events are placed into internal queue. +// Disable it when an external queue is used like app_scheduler or if you wish to process all events inside interrupts. +// Processing all events from the interrupt level adds requirement not to call any functions that modifies the USBD library state from the context higher than USB interrupt context. +// Functions that modify USBD state are functions for sleep, wakeup, start, stop, enable, and disable. +//========================================================== +#ifndef APP_USBD_CONFIG_EVENT_QUEUE_ENABLE +#define APP_USBD_CONFIG_EVENT_QUEUE_ENABLE 1 +#endif +// APP_USBD_CONFIG_EVENT_QUEUE_SIZE - The size of the event queue. <16-64> + + +// The size of the queue for the events that would be processed in the main loop. + +#ifndef APP_USBD_CONFIG_EVENT_QUEUE_SIZE +#define APP_USBD_CONFIG_EVENT_QUEUE_SIZE 32 +#endif + +// APP_USBD_CONFIG_SOF_HANDLING_MODE - Change SOF events handling mode. + + +// Normal queue - SOF events are pushed normally into the event queue. +// Compress queue - SOF events are counted and binded with other events or executed when the queue is empty. +// This prevents the queue from filling up with SOF events. +// Interrupt - SOF events are processed in interrupt. +// <0=> Normal queue +// <1=> Compress queue +// <2=> Interrupt + +#ifndef APP_USBD_CONFIG_SOF_HANDLING_MODE +#define APP_USBD_CONFIG_SOF_HANDLING_MODE 1 +#endif + +// + +// APP_USBD_CONFIG_SOF_TIMESTAMP_PROVIDE - Provide a function that generates timestamps for logs based on the current SOF. + + +// The function app_usbd_sof_timestamp_get is implemented if the logger is enabled. +// Use it when initializing the logger. +// SOF processing is always enabled when this configuration parameter is active. +// Note: This option is configured outside of APP_USBD_CONFIG_LOG_ENABLED. +// This means that it works even if the logging in this very module is disabled. + +#ifndef APP_USBD_CONFIG_SOF_TIMESTAMP_PROVIDE +#define APP_USBD_CONFIG_SOF_TIMESTAMP_PROVIDE 0 +#endif + +// APP_USBD_CONFIG_DESC_STRING_SIZE - Maximum size of the NULL-terminated string of the string descriptor. <31-254> + + +// 31 characters can be stored in the internal USB buffer used for transfers. +// Any value higher than 31 creates an additional buffer just for descriptor strings. + +#ifndef APP_USBD_CONFIG_DESC_STRING_SIZE +#define APP_USBD_CONFIG_DESC_STRING_SIZE 31 +#endif + +// APP_USBD_CONFIG_DESC_STRING_UTF_ENABLED - Enable UTF8 conversion. + + +// Enable UTF8-encoded characters. In normal processing, only ASCII characters are available. + +#ifndef APP_USBD_CONFIG_DESC_STRING_UTF_ENABLED +#define APP_USBD_CONFIG_DESC_STRING_UTF_ENABLED 0 +#endif + +// APP_USBD_STRINGS_LANGIDS - Supported languages identifiers. + +// Note: This value is not editable in Configuration Wizard. +// Comma-separated list of supported languages. +#ifndef APP_USBD_STRINGS_LANGIDS +#define APP_USBD_STRINGS_LANGIDS APP_USBD_LANG_AND_SUBLANG(APP_USBD_LANG_ENGLISH, APP_USBD_SUBLANG_ENGLISH_US) +#endif + +// APP_USBD_STRING_ID_MANUFACTURER - Define manufacturer string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_MANUFACTURER +#define APP_USBD_STRING_ID_MANUFACTURER 1 +#endif +// APP_USBD_STRINGS_MANUFACTURER_EXTERN - Define whether @ref APP_USBD_STRINGS_MANUFACTURER is created by macro or declared as a global variable. + + +#ifndef APP_USBD_STRINGS_MANUFACTURER_EXTERN +#define APP_USBD_STRINGS_MANUFACTURER_EXTERN 0 +#endif + +// APP_USBD_STRINGS_MANUFACTURER - String descriptor for the manufacturer name. + +// Note: This value is not editable in Configuration Wizard. +// Comma-separated list of manufacturer names for each defined language. +// Use @ref APP_USBD_STRING_DESC macro to create string descriptor from a NULL-terminated string. +// Use @ref APP_USBD_STRING_RAW8_DESC macro to create string descriptor from comma-separated uint8_t values. +// Use @ref APP_USBD_STRING_RAW16_DESC macro to create string descriptor from comma-separated uint16_t values. +// Alternatively, configure the macro to point to any internal variable pointer that already contains the descriptor. +// Setting string to NULL disables that string. +// The order of manufacturer names must be the same like in @ref APP_USBD_STRINGS_LANGIDS. +#ifndef APP_USBD_STRINGS_MANUFACTURER +#define APP_USBD_STRINGS_MANUFACTURER APP_USBD_STRING_DESC("Nordic Semiconductor") +#endif + +// + +// APP_USBD_STRING_ID_PRODUCT - Define product string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_PRODUCT +#define APP_USBD_STRING_ID_PRODUCT 2 +#endif +// APP_USBD_STRINGS_PRODUCT_EXTERN - Define whether @ref APP_USBD_STRINGS_PRODUCT is created by macro or declared as a global variable. + + +#ifndef APP_USBD_STRINGS_PRODUCT_EXTERN +#define APP_USBD_STRINGS_PRODUCT_EXTERN 0 +#endif + +// APP_USBD_STRINGS_PRODUCT - String descriptor for the product name. + +// Note: This value is not editable in Configuration Wizard. +// List of product names that is defined the same way like in @ref APP_USBD_STRINGS_MANUFACTURER. +#ifndef APP_USBD_STRINGS_PRODUCT +#define APP_USBD_STRINGS_PRODUCT APP_USBD_STRING_DESC("nRF52 Connectivity") +#endif + +// + +// APP_USBD_STRING_ID_SERIAL - Define serial number string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_SERIAL +#define APP_USBD_STRING_ID_SERIAL 3 +#endif +// APP_USBD_STRING_SERIAL_EXTERN - Define whether @ref APP_USBD_STRING_SERIAL is created by macro or declared as a global variable. + + +#ifndef APP_USBD_STRING_SERIAL_EXTERN +#define APP_USBD_STRING_SERIAL_EXTERN 1 +#endif + +// APP_USBD_STRING_SERIAL - String descriptor for the serial number. + +// Note: This value is not editable in Configuration Wizard. +// Serial number that is defined the same way like in @ref APP_USBD_STRINGS_MANUFACTURER. +#ifndef APP_USBD_STRING_SERIAL +#define APP_USBD_STRING_SERIAL g_extern_serial_number +#endif + +// + +// APP_USBD_STRING_ID_CONFIGURATION - Define configuration string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_CONFIGURATION +#define APP_USBD_STRING_ID_CONFIGURATION 4 +#endif +// APP_USBD_STRING_CONFIGURATION_EXTERN - Define whether @ref APP_USBD_STRINGS_CONFIGURATION is created by macro or declared as global variable. + + +#ifndef APP_USBD_STRING_CONFIGURATION_EXTERN +#define APP_USBD_STRING_CONFIGURATION_EXTERN 0 +#endif + +// APP_USBD_STRINGS_CONFIGURATION - String descriptor for the device configuration. + +// Note: This value is not editable in Configuration Wizard. +// Configuration string that is defined the same way like in @ref APP_USBD_STRINGS_MANUFACTURER. +#ifndef APP_USBD_STRINGS_CONFIGURATION +#define APP_USBD_STRINGS_CONFIGURATION APP_USBD_STRING_DESC("Default configuration") +#endif + +// + +// APP_USBD_STRINGS_USER - Default values for user strings. + +// Note: This value is not editable in Configuration Wizard. +// This value stores all application specific user strings with the default initialization. +// The setup is done by X-macros. +// Expected macro parameters: +// @code +// X(mnemonic, [=str_idx], ...) +// @endcode +// - @c mnemonic: Mnemonic of the string descriptor that would be added to +// @ref app_usbd_string_desc_idx_t enumerator. +// - @c str_idx : String index value, can be set or left empty. +// For example, WinUSB driver requires descriptor to be present on 0xEE index. +// Then use X(USBD_STRING_WINUSB, =0xEE, (APP_USBD_STRING_DESC(...))) +// - @c ... : List of string descriptors for each defined language. +#ifndef APP_USBD_STRINGS_USER +#define APP_USBD_STRINGS_USER X(APP_USER_1, , APP_USBD_STRING_DESC("User 1")) +#endif + +// + +// APP_USBD_NRF_DFU_TRIGGER_ENABLED - app_usbd_nrf_dfu_trigger - USBD Nordic DFU Trigger class + + +#ifndef APP_USBD_NRF_DFU_TRIGGER_ENABLED +#define APP_USBD_NRF_DFU_TRIGGER_ENABLED 1 +#endif + +// CRC16_ENABLED - crc16 - CRC16 calculation routines + + +#ifndef CRC16_ENABLED +#define CRC16_ENABLED 1 +#endif + +// NRF_BALLOC_ENABLED - nrf_balloc - Block allocator module +//========================================================== +#ifndef NRF_BALLOC_ENABLED +#define NRF_BALLOC_ENABLED 1 +#endif +// NRF_BALLOC_CONFIG_DEBUG_ENABLED - Enables debug mode in the module. +//========================================================== +#ifndef NRF_BALLOC_CONFIG_DEBUG_ENABLED +#define NRF_BALLOC_CONFIG_DEBUG_ENABLED 0 +#endif +// NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS - Number of words used as head guard. <0-255> + + +#ifndef NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS +#define NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS 1 +#endif + +// NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS - Number of words used as tail guard. <0-255> + + +#ifndef NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS +#define NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS 1 +#endif + +// NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED - Enables basic checks in this module. + + +#ifndef NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED +#define NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED 0 +#endif + +// NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED - Enables double memory free check in this module. + + +#ifndef NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED +#define NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED 0 +#endif + +// NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED - Enables free memory corruption check in this module. + + +#ifndef NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED +#define NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED 0 +#endif + +// NRF_BALLOC_CLI_CMDS - Enable CLI commands specific to the module + + +#ifndef NRF_BALLOC_CLI_CMDS +#define NRF_BALLOC_CLI_CMDS 0 +#endif + +// + +// + +// NRF_MEMOBJ_ENABLED - nrf_memobj - Linked memory allocator module + + +#ifndef NRF_MEMOBJ_ENABLED +#define NRF_MEMOBJ_ENABLED 1 +#endif + +// NRF_QUEUE_ENABLED - nrf_queue - Queue module +//========================================================== +#ifndef NRF_QUEUE_ENABLED +#define NRF_QUEUE_ENABLED 1 +#endif +// NRF_QUEUE_CLI_CMDS - Enable CLI commands specific to the module + + +#ifndef NRF_QUEUE_CLI_CMDS +#define NRF_QUEUE_CLI_CMDS 0 +#endif + +// + +// NRF_SECTION_ITER_ENABLED - nrf_section_iter - Section iterator + + +#ifndef NRF_SECTION_ITER_ENABLED +#define NRF_SECTION_ITER_ENABLED 1 +#endif + +// NRF_SORTLIST_ENABLED - nrf_sortlist - Sorted list + + +#ifndef NRF_SORTLIST_ENABLED +#define NRF_SORTLIST_ENABLED 1 +#endif + +// NRF_STRERROR_ENABLED - nrf_strerror - Library for converting error code to string. + + +#ifndef NRF_STRERROR_ENABLED +#define NRF_STRERROR_ENABLED 1 +#endif + +// app_usbd_cdc_acm - USB CDC ACM class + +//========================================================== +// APP_USBD_CDC_ACM_ENABLED - Enabling USBD CDC ACM Class library + + +#ifndef APP_USBD_CDC_ACM_ENABLED +#define APP_USBD_CDC_ACM_ENABLED 1 +#endif + +// APP_USBD_CDC_ACM_ZLP_ON_EPSIZE_WRITE - Send ZLP on write with same size as endpoint + + +// If enabled, CDC ACM class will automatically send a zero length packet after transfer which has the same size as endpoint. +// This may limit throughput if a lot of binary data is sent, but in terminal mode operation it makes sure that the data is always displayed right after it is sent. + +#ifndef APP_USBD_CDC_ACM_ZLP_ON_EPSIZE_WRITE +#define APP_USBD_CDC_ACM_ZLP_ON_EPSIZE_WRITE 1 +#endif + +// +//========================================================== + +// nrf_fprintf - fprintf function. + +//========================================================== +// NRF_FPRINTF_ENABLED - Enable/disable fprintf module. + + +#ifndef NRF_FPRINTF_ENABLED +#define NRF_FPRINTF_ENABLED 1 +#endif + +// NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED - For each printed LF, function will add CR. + + +#ifndef NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED +#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 1 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_Log + +//========================================================== +// NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend +//========================================================== +#ifndef NRF_LOG_BACKEND_RTT_ENABLED +#define NRF_LOG_BACKEND_RTT_ENABLED 0 +#endif +// NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. +// Size of the buffer is a trade-off between RAM usage and processing. +// if buffer is smaller then strings will often be fragmented. +// It is recommended to use size which will fit typical log and only the +// longer one will be fragmented. + +#ifndef NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE +#define NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE 64 +#endif + +// NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS - Period before retrying writing to RTT +#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS +#define NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS 1 +#endif + +// NRF_LOG_BACKEND_RTT_TX_RETRY_CNT - Writing to RTT retries. +// If RTT fails to accept any new data after retries +// module assumes that host is not active and on next +// request it will perform only one write attempt. +// On successful writing, module assumes that host is active +// and scheme with retry is applied again. + +#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_CNT +#define NRF_LOG_BACKEND_RTT_TX_RETRY_CNT 3 +#endif + +// + +// NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend +//========================================================== +#ifndef NRF_LOG_BACKEND_UART_ENABLED +#define NRF_LOG_BACKEND_UART_ENABLED 0 +#endif +// NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin +#ifndef NRF_LOG_BACKEND_UART_TX_PIN +#define NRF_LOG_BACKEND_UART_TX_PIN 6 +#endif + +// NRF_LOG_BACKEND_UART_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <10289152=> 38400 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRF_LOG_BACKEND_UART_BAUDRATE +#define NRF_LOG_BACKEND_UART_BAUDRATE 30801920 +#endif + +// NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. +// Size of the buffer is a trade-off between RAM usage and processing. +// if buffer is smaller then strings will often be fragmented. +// It is recommended to use size which will fit typical log and only the +// longer one will be fragmented. + +#ifndef NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE +#define NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE 64 +#endif + +// + +// NRF_LOG_ENABLED - nrf_log - Logger +//========================================================== +#ifndef NRF_LOG_ENABLED +#define NRF_LOG_ENABLED 0 +#endif +// Log message pool - Configuration of log message pool + +//========================================================== +// NRF_LOG_MSGPOOL_ELEMENT_SIZE - Size of a single element in the pool of memory objects. +// If a small value is set, then performance of logs processing +// is degraded because data is fragmented. Bigger value impacts +// RAM memory utilization. The size is set to fit a message with +// a timestamp and up to 2 arguments in a single memory object. + +#ifndef NRF_LOG_MSGPOOL_ELEMENT_SIZE +#define NRF_LOG_MSGPOOL_ELEMENT_SIZE 20 +#endif + +// NRF_LOG_MSGPOOL_ELEMENT_COUNT - Number of elements in the pool of memory objects +// If a small value is set, then it may lead to a deadlock +// in certain cases if backend has high latency and holds +// multiple messages for long time. Bigger value impacts +// RAM memory usage. + +#ifndef NRF_LOG_MSGPOOL_ELEMENT_COUNT +#define NRF_LOG_MSGPOOL_ELEMENT_COUNT 8 +#endif + +// +//========================================================== + +// NRF_LOG_ALLOW_OVERFLOW - Configures behavior when circular buffer is full. + + +// If set then oldest logs are overwritten. Otherwise a +// marker is injected informing about overflow. + +#ifndef NRF_LOG_ALLOW_OVERFLOW +#define NRF_LOG_ALLOW_OVERFLOW 1 +#endif + +// NRF_LOG_BUFSIZE - Size of the buffer for storing logs (in bytes). + + +// Must be power of 2 and multiple of 4. +// If NRF_LOG_DEFERRED = 0 then buffer size can be reduced to minimum. +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 +// <2048=> 2048 +// <4096=> 4096 +// <8192=> 8192 +// <16384=> 16384 + +#ifndef NRF_LOG_BUFSIZE +#define NRF_LOG_BUFSIZE 1024 +#endif + +// NRF_LOG_CLI_CMDS - Enable CLI commands for the module. + + +#ifndef NRF_LOG_CLI_CMDS +#define NRF_LOG_CLI_CMDS 0 +#endif + +// NRF_LOG_DEFAULT_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_LOG_DEFAULT_LEVEL +#define NRF_LOG_DEFAULT_LEVEL 3 +#endif + +// NRF_LOG_DEFERRED - Enable deffered logger. + + +// Log data is buffered and can be processed in idle. + +#ifndef NRF_LOG_DEFERRED +#define NRF_LOG_DEFERRED 1 +#endif + +// NRF_LOG_FILTERS_ENABLED - Enable dynamic filtering of logs. + + +#ifndef NRF_LOG_FILTERS_ENABLED +#define NRF_LOG_FILTERS_ENABLED 0 +#endif + +// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. + +// <16=> 16 +// <32=> 32 +// <64=> 64 +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 + +#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE +#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 +#endif + +// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. + +// <16=> 16 +// <32=> 32 +// <64=> 64 +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 + +#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE +#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 +#endif + +// NRF_LOG_USES_COLORS - If enabled then ANSI escape code for colors is prefixed to every string +//========================================================== +#ifndef NRF_LOG_USES_COLORS +#define NRF_LOG_USES_COLORS 0 +#endif +// NRF_LOG_COLOR_DEFAULT - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_COLOR_DEFAULT +#define NRF_LOG_COLOR_DEFAULT 0 +#endif + +// NRF_LOG_ERROR_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_ERROR_COLOR +#define NRF_LOG_ERROR_COLOR 2 +#endif + +// NRF_LOG_WARNING_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_WARNING_COLOR +#define NRF_LOG_WARNING_COLOR 4 +#endif + +// + +// NRF_LOG_USES_TIMESTAMP - Enable timestamping + +// Function for getting the timestamp is provided by the user +//========================================================== +#ifndef NRF_LOG_USES_TIMESTAMP +#define NRF_LOG_USES_TIMESTAMP 0 +#endif +// NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY - Default frequency of the timestamp (in Hz) or 0 to use app_timer frequency. +#ifndef NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY +#define NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY 0 +#endif + +// + +// nrf_log module configuration + +//========================================================== +// nrf_log in nRF_Core + +//========================================================== +// NRF_MPU_LIB_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_MPU_LIB_CONFIG_LOG_ENABLED +#define NRF_MPU_LIB_CONFIG_LOG_ENABLED 0 +#endif +// NRF_MPU_LIB_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_MPU_LIB_CONFIG_LOG_LEVEL +#define NRF_MPU_LIB_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_MPU_LIB_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MPU_LIB_CONFIG_INFO_COLOR +#define NRF_MPU_LIB_CONFIG_INFO_COLOR 0 +#endif + +// NRF_MPU_LIB_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MPU_LIB_CONFIG_DEBUG_COLOR +#define NRF_MPU_LIB_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_STACK_GUARD_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_STACK_GUARD_CONFIG_LOG_ENABLED +#define NRF_STACK_GUARD_CONFIG_LOG_ENABLED 0 +#endif +// NRF_STACK_GUARD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_STACK_GUARD_CONFIG_LOG_LEVEL +#define NRF_STACK_GUARD_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_STACK_GUARD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_STACK_GUARD_CONFIG_INFO_COLOR +#define NRF_STACK_GUARD_CONFIG_INFO_COLOR 0 +#endif + +// NRF_STACK_GUARD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_STACK_GUARD_CONFIG_DEBUG_COLOR +#define NRF_STACK_GUARD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TASK_MANAGER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TASK_MANAGER_CONFIG_LOG_ENABLED +#define TASK_MANAGER_CONFIG_LOG_ENABLED 0 +#endif +// TASK_MANAGER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TASK_MANAGER_CONFIG_LOG_LEVEL +#define TASK_MANAGER_CONFIG_LOG_LEVEL 3 +#endif + +// TASK_MANAGER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TASK_MANAGER_CONFIG_INFO_COLOR +#define TASK_MANAGER_CONFIG_INFO_COLOR 0 +#endif + +// TASK_MANAGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TASK_MANAGER_CONFIG_DEBUG_COLOR +#define TASK_MANAGER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Drivers + +//========================================================== +// CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef CLOCK_CONFIG_LOG_ENABLED +#define CLOCK_CONFIG_LOG_ENABLED 0 +#endif +// CLOCK_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef CLOCK_CONFIG_LOG_LEVEL +#define CLOCK_CONFIG_LOG_LEVEL 3 +#endif + +// CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef CLOCK_CONFIG_INFO_COLOR +#define CLOCK_CONFIG_INFO_COLOR 0 +#endif + +// CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef CLOCK_CONFIG_DEBUG_COLOR +#define CLOCK_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// COMP_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef COMP_CONFIG_LOG_ENABLED +#define COMP_CONFIG_LOG_ENABLED 0 +#endif +// COMP_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef COMP_CONFIG_LOG_LEVEL +#define COMP_CONFIG_LOG_LEVEL 3 +#endif + +// COMP_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef COMP_CONFIG_INFO_COLOR +#define COMP_CONFIG_INFO_COLOR 0 +#endif + +// COMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef COMP_CONFIG_DEBUG_COLOR +#define COMP_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// GPIOTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef GPIOTE_CONFIG_LOG_ENABLED +#define GPIOTE_CONFIG_LOG_ENABLED 0 +#endif +// GPIOTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef GPIOTE_CONFIG_LOG_LEVEL +#define GPIOTE_CONFIG_LOG_LEVEL 3 +#endif + +// GPIOTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef GPIOTE_CONFIG_INFO_COLOR +#define GPIOTE_CONFIG_INFO_COLOR 0 +#endif + +// GPIOTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef GPIOTE_CONFIG_DEBUG_COLOR +#define GPIOTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// LPCOMP_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef LPCOMP_CONFIG_LOG_ENABLED +#define LPCOMP_CONFIG_LOG_ENABLED 0 +#endif +// LPCOMP_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef LPCOMP_CONFIG_LOG_LEVEL +#define LPCOMP_CONFIG_LOG_LEVEL 3 +#endif + +// LPCOMP_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef LPCOMP_CONFIG_INFO_COLOR +#define LPCOMP_CONFIG_INFO_COLOR 0 +#endif + +// LPCOMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef LPCOMP_CONFIG_DEBUG_COLOR +#define LPCOMP_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// MAX3421E_HOST_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef MAX3421E_HOST_CONFIG_LOG_ENABLED +#define MAX3421E_HOST_CONFIG_LOG_ENABLED 0 +#endif +// MAX3421E_HOST_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef MAX3421E_HOST_CONFIG_LOG_LEVEL +#define MAX3421E_HOST_CONFIG_LOG_LEVEL 3 +#endif + +// MAX3421E_HOST_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef MAX3421E_HOST_CONFIG_INFO_COLOR +#define MAX3421E_HOST_CONFIG_INFO_COLOR 0 +#endif + +// MAX3421E_HOST_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef MAX3421E_HOST_CONFIG_DEBUG_COLOR +#define MAX3421E_HOST_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRFX_USBD_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef NRFX_USBD_CONFIG_LOG_ENABLED +#define NRFX_USBD_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_USBD_CONFIG_LOG_LEVEL +#define NRFX_USBD_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_USBD_CONFIG_INFO_COLOR +#define NRFX_USBD_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_USBD_CONFIG_DEBUG_COLOR +#define NRFX_USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PDM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PDM_CONFIG_LOG_ENABLED +#define PDM_CONFIG_LOG_ENABLED 0 +#endif +// PDM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PDM_CONFIG_LOG_LEVEL +#define PDM_CONFIG_LOG_LEVEL 3 +#endif + +// PDM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PDM_CONFIG_INFO_COLOR +#define PDM_CONFIG_INFO_COLOR 0 +#endif + +// PDM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PDM_CONFIG_DEBUG_COLOR +#define PDM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PPI_CONFIG_LOG_ENABLED +#define PPI_CONFIG_LOG_ENABLED 0 +#endif +// PPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PPI_CONFIG_LOG_LEVEL +#define PPI_CONFIG_LOG_LEVEL 3 +#endif + +// PPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PPI_CONFIG_INFO_COLOR +#define PPI_CONFIG_INFO_COLOR 0 +#endif + +// PPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PPI_CONFIG_DEBUG_COLOR +#define PPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PWM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PWM_CONFIG_LOG_ENABLED +#define PWM_CONFIG_LOG_ENABLED 0 +#endif +// PWM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PWM_CONFIG_LOG_LEVEL +#define PWM_CONFIG_LOG_LEVEL 3 +#endif + +// PWM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PWM_CONFIG_INFO_COLOR +#define PWM_CONFIG_INFO_COLOR 0 +#endif + +// PWM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PWM_CONFIG_DEBUG_COLOR +#define PWM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// QDEC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef QDEC_CONFIG_LOG_ENABLED +#define QDEC_CONFIG_LOG_ENABLED 0 +#endif +// QDEC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef QDEC_CONFIG_LOG_LEVEL +#define QDEC_CONFIG_LOG_LEVEL 3 +#endif + +// QDEC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef QDEC_CONFIG_INFO_COLOR +#define QDEC_CONFIG_INFO_COLOR 0 +#endif + +// QDEC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef QDEC_CONFIG_DEBUG_COLOR +#define QDEC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// RNG_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef RNG_CONFIG_LOG_ENABLED +#define RNG_CONFIG_LOG_ENABLED 0 +#endif +// RNG_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef RNG_CONFIG_LOG_LEVEL +#define RNG_CONFIG_LOG_LEVEL 3 +#endif + +// RNG_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RNG_CONFIG_INFO_COLOR +#define RNG_CONFIG_INFO_COLOR 0 +#endif + +// RNG_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RNG_CONFIG_DEBUG_COLOR +#define RNG_CONFIG_DEBUG_COLOR 0 +#endif + +// RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED - Enables logging of random numbers. + + +#ifndef RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED +#define RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED 0 +#endif + +// + +// RTC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef RTC_CONFIG_LOG_ENABLED +#define RTC_CONFIG_LOG_ENABLED 0 +#endif +// RTC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef RTC_CONFIG_LOG_LEVEL +#define RTC_CONFIG_LOG_LEVEL 3 +#endif + +// RTC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RTC_CONFIG_INFO_COLOR +#define RTC_CONFIG_INFO_COLOR 0 +#endif + +// RTC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RTC_CONFIG_DEBUG_COLOR +#define RTC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SAADC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SAADC_CONFIG_LOG_ENABLED +#define SAADC_CONFIG_LOG_ENABLED 0 +#endif +// SAADC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SAADC_CONFIG_LOG_LEVEL +#define SAADC_CONFIG_LOG_LEVEL 3 +#endif + +// SAADC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SAADC_CONFIG_INFO_COLOR +#define SAADC_CONFIG_INFO_COLOR 0 +#endif + +// SAADC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SAADC_CONFIG_DEBUG_COLOR +#define SAADC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SPIS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SPIS_CONFIG_LOG_ENABLED +#define SPIS_CONFIG_LOG_ENABLED 0 +#endif +// SPIS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SPIS_CONFIG_LOG_LEVEL +#define SPIS_CONFIG_LOG_LEVEL 3 +#endif + +// SPIS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPIS_CONFIG_INFO_COLOR +#define SPIS_CONFIG_INFO_COLOR 0 +#endif + +// SPIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPIS_CONFIG_DEBUG_COLOR +#define SPIS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SPI_CONFIG_LOG_ENABLED +#define SPI_CONFIG_LOG_ENABLED 0 +#endif +// SPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SPI_CONFIG_LOG_LEVEL +#define SPI_CONFIG_LOG_LEVEL 3 +#endif + +// SPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPI_CONFIG_INFO_COLOR +#define SPI_CONFIG_INFO_COLOR 0 +#endif + +// SPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPI_CONFIG_DEBUG_COLOR +#define SPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TIMER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TIMER_CONFIG_LOG_ENABLED +#define TIMER_CONFIG_LOG_ENABLED 0 +#endif +// TIMER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TIMER_CONFIG_LOG_LEVEL +#define TIMER_CONFIG_LOG_LEVEL 3 +#endif + +// TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TIMER_CONFIG_INFO_COLOR +#define TIMER_CONFIG_INFO_COLOR 0 +#endif + +// TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TIMER_CONFIG_DEBUG_COLOR +#define TIMER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TWIS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TWIS_CONFIG_LOG_ENABLED +#define TWIS_CONFIG_LOG_ENABLED 0 +#endif +// TWIS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TWIS_CONFIG_LOG_LEVEL +#define TWIS_CONFIG_LOG_LEVEL 3 +#endif + +// TWIS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWIS_CONFIG_INFO_COLOR +#define TWIS_CONFIG_INFO_COLOR 0 +#endif + +// TWIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWIS_CONFIG_DEBUG_COLOR +#define TWIS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TWI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TWI_CONFIG_LOG_ENABLED +#define TWI_CONFIG_LOG_ENABLED 0 +#endif +// TWI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TWI_CONFIG_LOG_LEVEL +#define TWI_CONFIG_LOG_LEVEL 3 +#endif + +// TWI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWI_CONFIG_INFO_COLOR +#define TWI_CONFIG_INFO_COLOR 0 +#endif + +// TWI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWI_CONFIG_DEBUG_COLOR +#define TWI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef UART_CONFIG_LOG_ENABLED +#define UART_CONFIG_LOG_ENABLED 0 +#endif +// UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef UART_CONFIG_LOG_LEVEL +#define UART_CONFIG_LOG_LEVEL 3 +#endif + +// UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef UART_CONFIG_INFO_COLOR +#define UART_CONFIG_INFO_COLOR 0 +#endif + +// UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef UART_CONFIG_DEBUG_COLOR +#define UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// USBD_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef USBD_CONFIG_LOG_ENABLED +#define USBD_CONFIG_LOG_ENABLED 0 +#endif +// USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef USBD_CONFIG_LOG_LEVEL +#define USBD_CONFIG_LOG_LEVEL 3 +#endif + +// USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef USBD_CONFIG_INFO_COLOR +#define USBD_CONFIG_INFO_COLOR 0 +#endif + +// USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef USBD_CONFIG_DEBUG_COLOR +#define USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// WDT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef WDT_CONFIG_LOG_ENABLED +#define WDT_CONFIG_LOG_ENABLED 0 +#endif +// WDT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef WDT_CONFIG_LOG_LEVEL +#define WDT_CONFIG_LOG_LEVEL 3 +#endif + +// WDT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef WDT_CONFIG_INFO_COLOR +#define WDT_CONFIG_INFO_COLOR 0 +#endif + +// WDT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef WDT_CONFIG_DEBUG_COLOR +#define WDT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Libraries + +//========================================================== +// APP_TIMER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_TIMER_CONFIG_LOG_ENABLED +#define APP_TIMER_CONFIG_LOG_ENABLED 0 +#endif +// APP_TIMER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_TIMER_CONFIG_LOG_LEVEL +#define APP_TIMER_CONFIG_LOG_LEVEL 3 +#endif + +// APP_TIMER_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled. + + +// If module generates a lot of logs, initial log level can +// be decreased to prevent flooding. Severity level can be +// increased on instance basis. +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_TIMER_CONFIG_INITIAL_LOG_LEVEL +#define APP_TIMER_CONFIG_INITIAL_LOG_LEVEL 3 +#endif + +// APP_TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_TIMER_CONFIG_INFO_COLOR +#define APP_TIMER_CONFIG_INFO_COLOR 0 +#endif + +// APP_TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_TIMER_CONFIG_DEBUG_COLOR +#define APP_TIMER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED +#define APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL +#define APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_CDC_ACM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CDC_ACM_CONFIG_INFO_COLOR +#define APP_USBD_CDC_ACM_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR +#define APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_CONFIG_LOG_ENABLED - Enable logging in the module. +//========================================================== +#ifndef APP_USBD_CONFIG_LOG_ENABLED +#define APP_USBD_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_CONFIG_LOG_LEVEL +#define APP_USBD_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CONFIG_INFO_COLOR +#define APP_USBD_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CONFIG_DEBUG_COLOR +#define APP_USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_DUMMY_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_DUMMY_CONFIG_LOG_ENABLED +#define APP_USBD_DUMMY_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_DUMMY_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_DUMMY_CONFIG_LOG_LEVEL +#define APP_USBD_DUMMY_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_DUMMY_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_DUMMY_CONFIG_INFO_COLOR +#define APP_USBD_DUMMY_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_DUMMY_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_DUMMY_CONFIG_DEBUG_COLOR +#define APP_USBD_DUMMY_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_MSC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_MSC_CONFIG_LOG_ENABLED +#define APP_USBD_MSC_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_MSC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_MSC_CONFIG_LOG_LEVEL +#define APP_USBD_MSC_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_MSC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_MSC_CONFIG_INFO_COLOR +#define APP_USBD_MSC_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_MSC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_MSC_CONFIG_DEBUG_COLOR +#define APP_USBD_MSC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_ATFIFO_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_ATFIFO_CONFIG_LOG_ENABLED +#define NRF_ATFIFO_CONFIG_LOG_ENABLED 0 +#endif +// NRF_ATFIFO_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_ATFIFO_CONFIG_LOG_LEVEL +#define NRF_ATFIFO_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_ATFIFO_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_ATFIFO_CONFIG_INFO_COLOR +#define NRF_ATFIFO_CONFIG_INFO_COLOR 0 +#endif + +// NRF_ATFIFO_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_ATFIFO_CONFIG_DEBUG_COLOR +#define NRF_ATFIFO_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BALLOC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BALLOC_CONFIG_LOG_ENABLED +#define NRF_BALLOC_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BALLOC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BALLOC_CONFIG_LOG_LEVEL +#define NRF_BALLOC_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled. + + +// If module generates a lot of logs, initial log level can +// be decreased to prevent flooding. Severity level can be +// increased on instance basis. +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL +#define NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL 3 +#endif + +// NRF_BALLOC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BALLOC_CONFIG_INFO_COLOR +#define NRF_BALLOC_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BALLOC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BALLOC_CONFIG_DEBUG_COLOR +#define NRF_BALLOC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED +#define NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL +#define NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_BLE_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_BLE_UART_CONFIG_INFO_COLOR +#define NRF_CLI_BLE_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR +#define NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED +#define NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL +#define NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR +#define NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR +#define NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_UART_CONFIG_LOG_ENABLED +#define NRF_CLI_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_UART_CONFIG_LOG_LEVEL +#define NRF_CLI_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_UART_CONFIG_INFO_COLOR +#define NRF_CLI_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_UART_CONFIG_DEBUG_COLOR +#define NRF_CLI_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_LIBUARTE_CONFIG_LOG_ENABLED +#define NRF_LIBUARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_LIBUARTE_CONFIG_LOG_LEVEL +#define NRF_LIBUARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LIBUARTE_CONFIG_INFO_COLOR +#define NRF_LIBUARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LIBUARTE_CONFIG_DEBUG_COLOR +#define NRF_LIBUARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_MEMOBJ_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_MEMOBJ_CONFIG_LOG_ENABLED +#define NRF_MEMOBJ_CONFIG_LOG_ENABLED 0 +#endif +// NRF_MEMOBJ_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_MEMOBJ_CONFIG_LOG_LEVEL +#define NRF_MEMOBJ_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_MEMOBJ_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MEMOBJ_CONFIG_INFO_COLOR +#define NRF_MEMOBJ_CONFIG_INFO_COLOR 0 +#endif + +// NRF_MEMOBJ_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MEMOBJ_CONFIG_DEBUG_COLOR +#define NRF_MEMOBJ_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_PWR_MGMT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_PWR_MGMT_CONFIG_LOG_ENABLED +#define NRF_PWR_MGMT_CONFIG_LOG_ENABLED 0 +#endif +// NRF_PWR_MGMT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_PWR_MGMT_CONFIG_LOG_LEVEL +#define NRF_PWR_MGMT_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_PWR_MGMT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_PWR_MGMT_CONFIG_INFO_COLOR +#define NRF_PWR_MGMT_CONFIG_INFO_COLOR 0 +#endif + +// NRF_PWR_MGMT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_PWR_MGMT_CONFIG_DEBUG_COLOR +#define NRF_PWR_MGMT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_QUEUE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_QUEUE_CONFIG_LOG_ENABLED +#define NRF_QUEUE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_QUEUE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_QUEUE_CONFIG_LOG_LEVEL +#define NRF_QUEUE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_QUEUE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_QUEUE_CONFIG_INFO_COLOR +#define NRF_QUEUE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_QUEUE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_QUEUE_CONFIG_DEBUG_COLOR +#define NRF_QUEUE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_ANT_LOG_ENABLED - Enable logging in SoftDevice handler (ANT) module. +//========================================================== +#ifndef NRF_SDH_ANT_LOG_ENABLED +#define NRF_SDH_ANT_LOG_ENABLED 0 +#endif +// NRF_SDH_ANT_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_ANT_LOG_LEVEL +#define NRF_SDH_ANT_LOG_LEVEL 3 +#endif + +// NRF_SDH_ANT_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_ANT_INFO_COLOR +#define NRF_SDH_ANT_INFO_COLOR 0 +#endif + +// NRF_SDH_ANT_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_ANT_DEBUG_COLOR +#define NRF_SDH_ANT_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_BLE_LOG_ENABLED - Enable logging in SoftDevice handler (BLE) module. +//========================================================== +#ifndef NRF_SDH_BLE_LOG_ENABLED +#define NRF_SDH_BLE_LOG_ENABLED 1 +#endif +// NRF_SDH_BLE_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_BLE_LOG_LEVEL +#define NRF_SDH_BLE_LOG_LEVEL 3 +#endif + +// NRF_SDH_BLE_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_BLE_INFO_COLOR +#define NRF_SDH_BLE_INFO_COLOR 0 +#endif + +// NRF_SDH_BLE_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_BLE_DEBUG_COLOR +#define NRF_SDH_BLE_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_LOG_ENABLED - Enable logging in SoftDevice handler module. +//========================================================== +#ifndef NRF_SDH_LOG_ENABLED +#define NRF_SDH_LOG_ENABLED 1 +#endif +// NRF_SDH_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_LOG_LEVEL +#define NRF_SDH_LOG_LEVEL 3 +#endif + +// NRF_SDH_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_INFO_COLOR +#define NRF_SDH_INFO_COLOR 0 +#endif + +// NRF_SDH_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_DEBUG_COLOR +#define NRF_SDH_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_SOC_LOG_ENABLED - Enable logging in SoftDevice handler (SoC) module. +//========================================================== +#ifndef NRF_SDH_SOC_LOG_ENABLED +#define NRF_SDH_SOC_LOG_ENABLED 1 +#endif +// NRF_SDH_SOC_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_SOC_LOG_LEVEL +#define NRF_SDH_SOC_LOG_LEVEL 3 +#endif + +// NRF_SDH_SOC_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_SOC_INFO_COLOR +#define NRF_SDH_SOC_INFO_COLOR 0 +#endif + +// NRF_SDH_SOC_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_SOC_DEBUG_COLOR +#define NRF_SDH_SOC_DEBUG_COLOR 0 +#endif + +// + +// NRF_SORTLIST_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_SORTLIST_CONFIG_LOG_ENABLED +#define NRF_SORTLIST_CONFIG_LOG_ENABLED 0 +#endif +// NRF_SORTLIST_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SORTLIST_CONFIG_LOG_LEVEL +#define NRF_SORTLIST_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_SORTLIST_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SORTLIST_CONFIG_INFO_COLOR +#define NRF_SORTLIST_CONFIG_INFO_COLOR 0 +#endif + +// NRF_SORTLIST_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SORTLIST_CONFIG_DEBUG_COLOR +#define NRF_SORTLIST_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_TWI_SENSOR_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_TWI_SENSOR_CONFIG_LOG_ENABLED +#define NRF_TWI_SENSOR_CONFIG_LOG_ENABLED 0 +#endif +// NRF_TWI_SENSOR_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_TWI_SENSOR_CONFIG_LOG_LEVEL +#define NRF_TWI_SENSOR_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_TWI_SENSOR_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_TWI_SENSOR_CONFIG_INFO_COLOR +#define NRF_TWI_SENSOR_CONFIG_INFO_COLOR 0 +#endif + +// NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR +#define NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PM_LOG_ENABLED - Enable logging in Peer Manager and its submodules. +//========================================================== +#ifndef PM_LOG_ENABLED +#define PM_LOG_ENABLED 1 +#endif +// PM_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PM_LOG_LEVEL +#define PM_LOG_LEVEL 3 +#endif + +// PM_LOG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PM_LOG_INFO_COLOR +#define PM_LOG_INFO_COLOR 0 +#endif + +// PM_LOG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PM_LOG_DEBUG_COLOR +#define PM_LOG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Serialization + +//========================================================== +// SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED +#define SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED 0 +#endif +// SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL +#define SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL 3 +#endif + +// SER_HAL_TRANSPORT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SER_HAL_TRANSPORT_CONFIG_INFO_COLOR +#define SER_HAL_TRANSPORT_CONFIG_INFO_COLOR 0 +#endif + +// SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR +#define SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// +//========================================================== + +// + +// NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED - nrf_log_str_formatter - Log string formatter + + +#ifndef NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED +#define NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED 1 +#endif + +// +//========================================================== + +// nRF_Segger_RTT + +//========================================================== +// segger_rtt - SEGGER RTT + +//========================================================== +// SEGGER_RTT_CONFIG_BUFFER_SIZE_UP - Size of upstream buffer. +// Note that either @ref NRF_LOG_BACKEND_RTT_OUTPUT_BUFFER_SIZE +// or this value is actually used. It depends on which one is bigger. + +#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_UP +#define SEGGER_RTT_CONFIG_BUFFER_SIZE_UP 512 +#endif + +// SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS - Maximum number of upstream buffers. +#ifndef SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS +#define SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS 2 +#endif + +// SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN - Size of downstream buffer. +#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN +#define SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN 16 +#endif + +// SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS - Maximum number of downstream buffers. +#ifndef SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS +#define SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS 2 +#endif + +// SEGGER_RTT_CONFIG_DEFAULT_MODE - RTT behavior if the buffer is full. + + +// The following modes are supported: +// - SKIP - Do not block, output nothing. +// - TRIM - Do not block, output as much as fits. +// - BLOCK - Wait until there is space in the buffer. +// <0=> SKIP +// <1=> TRIM +// <2=> BLOCK_IF_FIFO_FULL + +#ifndef SEGGER_RTT_CONFIG_DEFAULT_MODE +#define SEGGER_RTT_CONFIG_DEFAULT_MODE 0 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_SoftDevice + +//========================================================== +// NRF_SDH_BLE_ENABLED - nrf_sdh_ble - SoftDevice BLE event handler +//========================================================== +#ifndef NRF_SDH_BLE_ENABLED +#define NRF_SDH_BLE_ENABLED 1 +#endif +// BLE Stack configuration - Stack configuration parameters + +// The SoftDevice handler will configure the stack with these parameters when calling @ref nrf_sdh_ble_default_cfg_set. +// Other libraries might depend on these values; keep them up-to-date even if you are not explicitely calling @ref nrf_sdh_ble_default_cfg_set. +//========================================================== +// NRF_SDH_BLE_GAP_DATA_LENGTH <27-251> + + +// Requested BLE GAP data length to be negotiated. + +#ifndef NRF_SDH_BLE_GAP_DATA_LENGTH +#define NRF_SDH_BLE_GAP_DATA_LENGTH 27 +#endif + +// NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. +#ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 +#endif + +// NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. +#ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 +#endif + +// NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. +// Maximum number of total concurrent connections using the default configuration. + +#ifndef NRF_SDH_BLE_TOTAL_LINK_COUNT +#define NRF_SDH_BLE_TOTAL_LINK_COUNT 1 +#endif + +// NRF_SDH_BLE_GAP_EVENT_LENGTH - GAP event length. +// The time set aside for this connection on every connection interval in 1.25 ms units. + +#ifndef NRF_SDH_BLE_GAP_EVENT_LENGTH +#define NRF_SDH_BLE_GAP_EVENT_LENGTH 6 +#endif + +// NRF_SDH_BLE_GATT_MAX_MTU_SIZE - Static maximum MTU size. +#ifndef NRF_SDH_BLE_GATT_MAX_MTU_SIZE +#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 250 +#endif + +// NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE - Attribute Table size in bytes. The size must be a multiple of 4. +#ifndef NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE +#define NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE 1408 +#endif + +// NRF_SDH_BLE_VS_UUID_COUNT - The number of vendor-specific UUIDs. +#ifndef NRF_SDH_BLE_VS_UUID_COUNT +#define NRF_SDH_BLE_VS_UUID_COUNT 0 +#endif + +// NRF_SDH_BLE_SERVICE_CHANGED - Include the Service Changed characteristic in the Attribute Table. + + +#ifndef NRF_SDH_BLE_SERVICE_CHANGED +#define NRF_SDH_BLE_SERVICE_CHANGED 0 +#endif + +// +//========================================================== + +// BLE Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_BLE_OBSERVER_PRIO_LEVELS - Total number of priority levels for BLE observers. +// This setting configures the number of priority levels available for BLE event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_BLE_OBSERVER_PRIO_LEVELS +#define NRF_SDH_BLE_OBSERVER_PRIO_LEVELS 4 +#endif + +// BLE Observers priorities - Invididual priorities + +//========================================================== +// BLE_ADV_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Advertising module. + +#ifndef BLE_ADV_BLE_OBSERVER_PRIO +#define BLE_ADV_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_ANCS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Apple Notification Service Client. + +#ifndef BLE_ANCS_C_BLE_OBSERVER_PRIO +#define BLE_ANCS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_ANS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Alert Notification Service Client. + +#ifndef BLE_ANS_C_BLE_OBSERVER_PRIO +#define BLE_ANS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BAS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Battery Service. + +#ifndef BLE_BAS_BLE_OBSERVER_PRIO +#define BLE_BAS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BAS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Battery Service Client. + +#ifndef BLE_BAS_C_BLE_OBSERVER_PRIO +#define BLE_BAS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BPS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Blood Pressure Service. + +#ifndef BLE_BPS_BLE_OBSERVER_PRIO +#define BLE_BPS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_CONN_PARAMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Connection parameters module. + +#ifndef BLE_CONN_PARAMS_BLE_OBSERVER_PRIO +#define BLE_CONN_PARAMS_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_CONN_STATE_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Connection State module. + +#ifndef BLE_CONN_STATE_BLE_OBSERVER_PRIO +#define BLE_CONN_STATE_BLE_OBSERVER_PRIO 0 +#endif + +// BLE_CSCS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Cycling Speed and Cadence Service. + +#ifndef BLE_CSCS_BLE_OBSERVER_PRIO +#define BLE_CSCS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_CTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Current Time Service Client. + +#ifndef BLE_CTS_C_BLE_OBSERVER_PRIO +#define BLE_CTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_DB_DISC_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Database Discovery module. + +#ifndef BLE_DB_DISC_BLE_OBSERVER_PRIO +#define BLE_DB_DISC_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_DFU_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the DFU Service. + +#ifndef BLE_DFU_BLE_OBSERVER_PRIO +#define BLE_DFU_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_DIS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Device Information Client. + +#ifndef BLE_DIS_C_BLE_OBSERVER_PRIO +#define BLE_DIS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_GLS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Glucose Service. + +#ifndef BLE_GLS_BLE_OBSERVER_PRIO +#define BLE_GLS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HIDS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Human Interface Device Service. + +#ifndef BLE_HIDS_BLE_OBSERVER_PRIO +#define BLE_HIDS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HRS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Heart Rate Service. + +#ifndef BLE_HRS_BLE_OBSERVER_PRIO +#define BLE_HRS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HRS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Heart Rate Service Client. + +#ifndef BLE_HRS_C_BLE_OBSERVER_PRIO +#define BLE_HRS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HTS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Health Thermometer Service. + +#ifndef BLE_HTS_BLE_OBSERVER_PRIO +#define BLE_HTS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_IAS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Immediate Alert Service. + +#ifndef BLE_IAS_BLE_OBSERVER_PRIO +#define BLE_IAS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_IAS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Immediate Alert Service Client. + +#ifndef BLE_IAS_C_BLE_OBSERVER_PRIO +#define BLE_IAS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LBS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the LED Button Service. + +#ifndef BLE_LBS_BLE_OBSERVER_PRIO +#define BLE_LBS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LBS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the LED Button Service Client. + +#ifndef BLE_LBS_C_BLE_OBSERVER_PRIO +#define BLE_LBS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LLS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Link Loss Service. + +#ifndef BLE_LLS_BLE_OBSERVER_PRIO +#define BLE_LLS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LNS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Location Navigation Service. + +#ifndef BLE_LNS_BLE_OBSERVER_PRIO +#define BLE_LNS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_NUS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the UART Service. + +#ifndef BLE_NUS_BLE_OBSERVER_PRIO +#define BLE_NUS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_NUS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the UART Central Service. + +#ifndef BLE_NUS_C_BLE_OBSERVER_PRIO +#define BLE_NUS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_OTS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Object transfer service. + +#ifndef BLE_OTS_BLE_OBSERVER_PRIO +#define BLE_OTS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_OTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Object transfer service client. + +#ifndef BLE_OTS_C_BLE_OBSERVER_PRIO +#define BLE_OTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_RSCS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Running Speed and Cadence Service. + +#ifndef BLE_RSCS_BLE_OBSERVER_PRIO +#define BLE_RSCS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_RSCS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Running Speed and Cadence Client. + +#ifndef BLE_RSCS_C_BLE_OBSERVER_PRIO +#define BLE_RSCS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_TPS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the TX Power Service. + +#ifndef BLE_TPS_BLE_OBSERVER_PRIO +#define BLE_TPS_BLE_OBSERVER_PRIO 2 +#endif + +// BSP_BTN_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Button Control module. + +#ifndef BSP_BTN_BLE_OBSERVER_PRIO +#define BSP_BTN_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NRF_BLE_BMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Bond Management Service. + +#ifndef NRF_BLE_BMS_BLE_OBSERVER_PRIO +#define NRF_BLE_BMS_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_CGMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Contiuon Glucose Monitoring Service. + +#ifndef NRF_BLE_CGMS_BLE_OBSERVER_PRIO +#define NRF_BLE_CGMS_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_ES_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Eddystone module. + +#ifndef NRF_BLE_ES_BLE_OBSERVER_PRIO +#define NRF_BLE_ES_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the GATT Service Client. + +#ifndef NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO +#define NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_GATT_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the GATT module. + +#ifndef NRF_BLE_GATT_BLE_OBSERVER_PRIO +#define NRF_BLE_GATT_BLE_OBSERVER_PRIO 1 +#endif + +// NRF_BLE_QWR_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Queued writes module. + +#ifndef NRF_BLE_QWR_BLE_OBSERVER_PRIO +#define NRF_BLE_QWR_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_SCAN_OBSERVER_PRIO +// Priority for dispatching the BLE events to the Scanning Module. + +#ifndef NRF_BLE_SCAN_OBSERVER_PRIO +#define NRF_BLE_SCAN_OBSERVER_PRIO 1 +#endif + +// PM_BLE_OBSERVER_PRIO - Priority with which BLE events are dispatched to the Peer Manager module. +#ifndef PM_BLE_OBSERVER_PRIO +#define PM_BLE_OBSERVER_PRIO 1 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// NRF_SDH_ENABLED - nrf_sdh - SoftDevice handler +//========================================================== +#ifndef NRF_SDH_ENABLED +#define NRF_SDH_ENABLED 1 +#endif +// Dispatch model + +// This setting configures how Stack events are dispatched to the application. +//========================================================== +// NRF_SDH_DISPATCH_MODEL + + +// NRF_SDH_DISPATCH_MODEL_INTERRUPT: SoftDevice events are passed to the application from the interrupt context. +// NRF_SDH_DISPATCH_MODEL_APPSH: SoftDevice events are scheduled using @ref app_scheduler. +// NRF_SDH_DISPATCH_MODEL_POLLING: SoftDevice events are to be fetched manually. +// <0=> NRF_SDH_DISPATCH_MODEL_INTERRUPT +// <1=> NRF_SDH_DISPATCH_MODEL_APPSH +// <2=> NRF_SDH_DISPATCH_MODEL_POLLING + +#ifndef NRF_SDH_DISPATCH_MODEL +#define NRF_SDH_DISPATCH_MODEL 0 +#endif + +// +//========================================================== + +// Clock - SoftDevice clock configuration + +//========================================================== +// NRF_SDH_CLOCK_LF_SRC - SoftDevice clock source. + +// <0=> NRF_CLOCK_LF_SRC_RC +// <1=> NRF_CLOCK_LF_SRC_XTAL +// <2=> NRF_CLOCK_LF_SRC_SYNTH + +#ifndef NRF_SDH_CLOCK_LF_SRC +#define NRF_SDH_CLOCK_LF_SRC 1 +#endif + +// NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval. +#ifndef NRF_SDH_CLOCK_LF_RC_CTIV +#define NRF_SDH_CLOCK_LF_RC_CTIV 0 +#endif + +// NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature. +// How often (in number of calibration intervals) the RC oscillator shall be calibrated +// if the temperature has not changed. + +#ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV +#define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 0 +#endif + +// NRF_SDH_CLOCK_LF_ACCURACY - External clock accuracy used in the LL to compute timing. + +// <0=> NRF_CLOCK_LF_ACCURACY_250_PPM +// <1=> NRF_CLOCK_LF_ACCURACY_500_PPM +// <2=> NRF_CLOCK_LF_ACCURACY_150_PPM +// <3=> NRF_CLOCK_LF_ACCURACY_100_PPM +// <4=> NRF_CLOCK_LF_ACCURACY_75_PPM +// <5=> NRF_CLOCK_LF_ACCURACY_50_PPM +// <6=> NRF_CLOCK_LF_ACCURACY_30_PPM +// <7=> NRF_CLOCK_LF_ACCURACY_20_PPM +// <8=> NRF_CLOCK_LF_ACCURACY_10_PPM +// <9=> NRF_CLOCK_LF_ACCURACY_5_PPM +// <10=> NRF_CLOCK_LF_ACCURACY_2_PPM +// <11=> NRF_CLOCK_LF_ACCURACY_1_PPM + +#ifndef NRF_SDH_CLOCK_LF_ACCURACY +#define NRF_SDH_CLOCK_LF_ACCURACY 7 +#endif + +// +//========================================================== + +// SDH Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_REQ_OBSERVER_PRIO_LEVELS - Total number of priority levels for request observers. +// This setting configures the number of priority levels available for the SoftDevice request event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_REQ_OBSERVER_PRIO_LEVELS +#define NRF_SDH_REQ_OBSERVER_PRIO_LEVELS 2 +#endif + +// NRF_SDH_STATE_OBSERVER_PRIO_LEVELS - Total number of priority levels for state observers. +// This setting configures the number of priority levels available for the SoftDevice state event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_STATE_OBSERVER_PRIO_LEVELS +#define NRF_SDH_STATE_OBSERVER_PRIO_LEVELS 2 +#endif + +// NRF_SDH_STACK_OBSERVER_PRIO_LEVELS - Total number of priority levels for stack event observers. +// This setting configures the number of priority levels available for the SoftDevice stack event handlers (ANT, BLE, SoC). +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_STACK_OBSERVER_PRIO_LEVELS +#define NRF_SDH_STACK_OBSERVER_PRIO_LEVELS 2 +#endif + + +// State Observers priorities - Invididual priorities + +//========================================================== +// CLOCK_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to the Clock driver. + +#ifndef CLOCK_CONFIG_STATE_OBSERVER_PRIO +#define CLOCK_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// POWER_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to the Power driver. + +#ifndef POWER_CONFIG_STATE_OBSERVER_PRIO +#define POWER_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// RNG_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to this module. + +#ifndef RNG_CONFIG_STATE_OBSERVER_PRIO +#define RNG_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// Stack Event Observers priorities - Invididual priorities + +//========================================================== +// NRF_SDH_ANT_STACK_OBSERVER_PRIO +// This setting configures the priority with which ANT events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have ANT events dispatched before or after other stack events, such as BLE or SoC. +// Zero is the highest priority. + +#ifndef NRF_SDH_ANT_STACK_OBSERVER_PRIO +#define NRF_SDH_ANT_STACK_OBSERVER_PRIO 0 +#endif + +// NRF_SDH_BLE_STACK_OBSERVER_PRIO +// This setting configures the priority with which BLE events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have BLE events dispatched before or after other stack events, such as ANT or SoC. +// Zero is the highest priority. + +#ifndef NRF_SDH_BLE_STACK_OBSERVER_PRIO +#define NRF_SDH_BLE_STACK_OBSERVER_PRIO 0 +#endif + +// NRF_SDH_SOC_STACK_OBSERVER_PRIO +// This setting configures the priority with which SoC events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have SoC events dispatched before or after other stack events, such as ANT or BLE. +// Zero is the highest priority. + +#ifndef NRF_SDH_SOC_STACK_OBSERVER_PRIO +#define NRF_SDH_SOC_STACK_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// NRF_SDH_SOC_ENABLED - nrf_sdh_soc - SoftDevice SoC event handler +//========================================================== +#ifndef NRF_SDH_SOC_ENABLED +#define NRF_SDH_SOC_ENABLED 1 +#endif +// SoC Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_SOC_OBSERVER_PRIO_LEVELS - Total number of priority levels for SoC observers. +// This setting configures the number of priority levels available for the SoC event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_SOC_OBSERVER_PRIO_LEVELS +#define NRF_SDH_SOC_OBSERVER_PRIO_LEVELS 2 +#endif + +// SoC Observers priorities - Invididual priorities + +//========================================================== +// BLE_ADV_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Advertising module. + +#ifndef BLE_ADV_SOC_OBSERVER_PRIO +#define BLE_ADV_SOC_OBSERVER_PRIO 1 +#endif + +// BLE_DFU_SOC_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the DFU Service. + +#ifndef BLE_DFU_SOC_OBSERVER_PRIO +#define BLE_DFU_SOC_OBSERVER_PRIO 1 +#endif + +// CLOCK_CONFIG_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Clock driver. + +#ifndef CLOCK_CONFIG_SOC_OBSERVER_PRIO +#define CLOCK_CONFIG_SOC_OBSERVER_PRIO 0 +#endif + +// POWER_CONFIG_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Power driver. + +#ifndef POWER_CONFIG_SOC_OBSERVER_PRIO +#define POWER_CONFIG_SOC_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// +//========================================================== + +// <<< end of configuration section >>> +#endif //SDK_CONFIG_H + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/ses/ble_connectivity_132v5_usb_hci_pca10056.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/ses/ble_connectivity_132v5_usb_hci_pca10056.emProject new file mode 100644 index 0000000..8ce1c3c --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/ses/ble_connectivity_132v5_usb_hci_pca10056.emProject @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/ses/ble_connectivity_132v5_usb_hci_pca10056.emSession nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/ses/ble_connectivity_132v5_usb_hci_pca10056.emSession new file mode 100644 index 0000000..6c26dd1 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/ses/ble_connectivity_132v5_usb_hci_pca10056.emSession @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/ses/flash_placement.xml new file mode 100644 index 0000000..c9cc513 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s132v5_usb_hci/ses/flash_placement.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/armgcc/Makefile index 6808a35..9d35ad6 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/armgcc/Makefile +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/armgcc/Makefile @@ -88,6 +88,7 @@ SRC_FILES += \ $(SDK_ROOT)/modules/nrfx/soc/nrfx_atomic.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_qspi.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ $(PROJ_DIR)/main.c \ diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/armgcc/ble_connectivity_gcc_nrf52.ld index 769bb82..1fd56e3 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0xda000 RAM (rwx) : ORIGIN = 0x2001ad58, LENGTH = 0x252a8 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -69,12 +77,6 @@ SECTIONS KEEP(*(.nrf_balloc)) PROVIDE(__stop_nrf_balloc = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -87,6 +89,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/config/sdk_config.h index f7f7fdb..d6faa0c 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -240,6 +307,134 @@ // +// NRFX_QSPI_ENABLED - nrfx_qspi - QSPI peripheral driver +//========================================================== +#ifndef NRFX_QSPI_ENABLED +#define NRFX_QSPI_ENABLED 1 +#endif +// NRFX_QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef NRFX_QSPI_CONFIG_SCK_DELAY +#define NRFX_QSPI_CONFIG_SCK_DELAY 1 +#endif + +// NRFX_QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef NRFX_QSPI_CONFIG_XIP_OFFSET +#define NRFX_QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// NRFX_QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef NRFX_QSPI_CONFIG_READOC +#define NRFX_QSPI_CONFIG_READOC 0 +#endif + +// NRFX_QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef NRFX_QSPI_CONFIG_WRITEOC +#define NRFX_QSPI_CONFIG_WRITEOC 0 +#endif + +// NRFX_QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef NRFX_QSPI_CONFIG_ADDRMODE +#define NRFX_QSPI_CONFIG_ADDRMODE 0 +#endif + +// NRFX_QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef NRFX_QSPI_CONFIG_MODE +#define NRFX_QSPI_CONFIG_MODE 0 +#endif + +// NRFX_QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef NRFX_QSPI_CONFIG_FREQUENCY +#define NRFX_QSPI_CONFIG_FREQUENCY 15 +#endif + +// NRFX_QSPI_PIN_SCK - SCK pin value. +#ifndef NRFX_QSPI_PIN_SCK +#define NRFX_QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_CSN - CSN pin value. +#ifndef NRFX_QSPI_PIN_CSN +#define NRFX_QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO0 - IO0 pin value. +#ifndef NRFX_QSPI_PIN_IO0 +#define NRFX_QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO1 - IO1 pin value. +#ifndef NRFX_QSPI_PIN_IO1 +#define NRFX_QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO2 - IO2 pin value. +#ifndef NRFX_QSPI_PIN_IO2 +#define NRFX_QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO3 - IO3 pin value. +#ifndef NRFX_QSPI_PIN_IO3 +#define NRFX_QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_QSPI_CONFIG_IRQ_PRIORITY +#define NRFX_QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // NRFX_UARTE_ENABLED - nrfx_uarte - UARTE peripheral driver //========================================================== #ifndef NRFX_UARTE_ENABLED @@ -530,6 +725,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 1 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer //========================================================== #ifndef UART_ENABLED @@ -3917,12 +4242,12 @@ // NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. #ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT -#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 0 +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. #ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT -#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0 +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. @@ -4223,132 +4548,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/ses/ble_connectivity_s140_hci_pca10056.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/ses/ble_connectivity_s140_hci_pca10056.emProject index 57abb8a..f5ff7f0 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/ses/ble_connectivity_s140_hci_pca10056.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/ses/ble_connectivity_s140_hci_pca10056.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x100000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x40000;FLASH_START=0x26000;FLASH_SIZE=0xda000;RAM_START=0x2001ad58;RAM_SIZE=0x252a8" - linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000" + linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> @@ -125,6 +125,7 @@ + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/ses/flash_placement.xml index b5fb146..c9cc513 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_hci/ses/flash_placement.xml @@ -11,9 +11,9 @@ - + @@ -43,4 +43,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/armgcc/Makefile index ca109a5..6628fe0 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/armgcc/Makefile +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/armgcc/Makefile @@ -87,6 +87,7 @@ SRC_FILES += \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_gpiote.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_qspi.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_spis.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/armgcc/ble_connectivity_gcc_nrf52.ld index aff6bd6..ec90ebb 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0xda000 RAM (rwx) : ORIGIN = 0x2001ad58, LENGTH = 0x252a8 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/config/sdk_config.h index c3d36f1..cdc0786 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -347,6 +414,134 @@ // +// NRFX_QSPI_ENABLED - nrfx_qspi - QSPI peripheral driver +//========================================================== +#ifndef NRFX_QSPI_ENABLED +#define NRFX_QSPI_ENABLED 1 +#endif +// NRFX_QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef NRFX_QSPI_CONFIG_SCK_DELAY +#define NRFX_QSPI_CONFIG_SCK_DELAY 1 +#endif + +// NRFX_QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef NRFX_QSPI_CONFIG_XIP_OFFSET +#define NRFX_QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// NRFX_QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef NRFX_QSPI_CONFIG_READOC +#define NRFX_QSPI_CONFIG_READOC 0 +#endif + +// NRFX_QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef NRFX_QSPI_CONFIG_WRITEOC +#define NRFX_QSPI_CONFIG_WRITEOC 0 +#endif + +// NRFX_QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef NRFX_QSPI_CONFIG_ADDRMODE +#define NRFX_QSPI_CONFIG_ADDRMODE 0 +#endif + +// NRFX_QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef NRFX_QSPI_CONFIG_MODE +#define NRFX_QSPI_CONFIG_MODE 0 +#endif + +// NRFX_QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef NRFX_QSPI_CONFIG_FREQUENCY +#define NRFX_QSPI_CONFIG_FREQUENCY 15 +#endif + +// NRFX_QSPI_PIN_SCK - SCK pin value. +#ifndef NRFX_QSPI_PIN_SCK +#define NRFX_QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_CSN - CSN pin value. +#ifndef NRFX_QSPI_PIN_CSN +#define NRFX_QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO0 - IO0 pin value. +#ifndef NRFX_QSPI_PIN_IO0 +#define NRFX_QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO1 - IO1 pin value. +#ifndef NRFX_QSPI_PIN_IO1 +#define NRFX_QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO2 - IO2 pin value. +#ifndef NRFX_QSPI_PIN_IO2 +#define NRFX_QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO3 - IO3 pin value. +#ifndef NRFX_QSPI_PIN_IO3 +#define NRFX_QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_QSPI_CONFIG_IRQ_PRIORITY +#define NRFX_QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // NRFX_SPIS_ENABLED - nrfx_spis - SPIS peripheral driver //========================================================== #ifndef NRFX_SPIS_ENABLED @@ -745,6 +940,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 1 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // SPIS_ENABLED - nrf_drv_spis - SPIS peripheral driver - legacy layer //========================================================== #ifndef SPIS_ENABLED @@ -4190,12 +4515,12 @@ // NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. #ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT -#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 0 +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. #ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT -#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0 +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. @@ -4496,132 +4821,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/ses/ble_connectivity_s140_spi_pca10056.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/ses/ble_connectivity_s140_spi_pca10056.emProject index 31b27d0..080c681 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/ses/ble_connectivity_s140_spi_pca10056.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/ses/ble_connectivity_s140_spi_pca10056.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x100000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x40000;FLASH_START=0x26000;FLASH_SIZE=0xda000;RAM_START=0x2001ad58;RAM_SIZE=0x252a8" - linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000" + linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> @@ -124,6 +124,7 @@ + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/armgcc/Makefile index cf0ab6e..3d1b267 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/armgcc/Makefile +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/armgcc/Makefile @@ -87,6 +87,7 @@ SRC_FILES += \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_gpiote.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_qspi.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_spis.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld index aff6bd6..ec90ebb 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0xda000 RAM (rwx) : ORIGIN = 0x2001ad58, LENGTH = 0x252a8 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/config/sdk_config.h index c3d36f1..cdc0786 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -347,6 +414,134 @@ // +// NRFX_QSPI_ENABLED - nrfx_qspi - QSPI peripheral driver +//========================================================== +#ifndef NRFX_QSPI_ENABLED +#define NRFX_QSPI_ENABLED 1 +#endif +// NRFX_QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef NRFX_QSPI_CONFIG_SCK_DELAY +#define NRFX_QSPI_CONFIG_SCK_DELAY 1 +#endif + +// NRFX_QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef NRFX_QSPI_CONFIG_XIP_OFFSET +#define NRFX_QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// NRFX_QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef NRFX_QSPI_CONFIG_READOC +#define NRFX_QSPI_CONFIG_READOC 0 +#endif + +// NRFX_QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef NRFX_QSPI_CONFIG_WRITEOC +#define NRFX_QSPI_CONFIG_WRITEOC 0 +#endif + +// NRFX_QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef NRFX_QSPI_CONFIG_ADDRMODE +#define NRFX_QSPI_CONFIG_ADDRMODE 0 +#endif + +// NRFX_QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef NRFX_QSPI_CONFIG_MODE +#define NRFX_QSPI_CONFIG_MODE 0 +#endif + +// NRFX_QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef NRFX_QSPI_CONFIG_FREQUENCY +#define NRFX_QSPI_CONFIG_FREQUENCY 15 +#endif + +// NRFX_QSPI_PIN_SCK - SCK pin value. +#ifndef NRFX_QSPI_PIN_SCK +#define NRFX_QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_CSN - CSN pin value. +#ifndef NRFX_QSPI_PIN_CSN +#define NRFX_QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO0 - IO0 pin value. +#ifndef NRFX_QSPI_PIN_IO0 +#define NRFX_QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO1 - IO1 pin value. +#ifndef NRFX_QSPI_PIN_IO1 +#define NRFX_QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO2 - IO2 pin value. +#ifndef NRFX_QSPI_PIN_IO2 +#define NRFX_QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO3 - IO3 pin value. +#ifndef NRFX_QSPI_PIN_IO3 +#define NRFX_QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_QSPI_CONFIG_IRQ_PRIORITY +#define NRFX_QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // NRFX_SPIS_ENABLED - nrfx_spis - SPIS peripheral driver //========================================================== #ifndef NRFX_SPIS_ENABLED @@ -745,6 +940,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 1 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // SPIS_ENABLED - nrf_drv_spis - SPIS peripheral driver - legacy layer //========================================================== #ifndef SPIS_ENABLED @@ -4190,12 +4515,12 @@ // NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. #ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT -#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 0 +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. #ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT -#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0 +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. @@ -4496,132 +4821,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/ses/ble_connectivity_s140_spi_5W_pca10056.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/ses/ble_connectivity_s140_spi_5W_pca10056.emProject index bf73af0..32bd3f5 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/ses/ble_connectivity_s140_spi_5W_pca10056.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/ses/ble_connectivity_s140_spi_5W_pca10056.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x100000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x40000;FLASH_START=0x26000;FLASH_SIZE=0xda000;RAM_START=0x2001ad58;RAM_SIZE=0x252a8" - linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000" + linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> @@ -124,6 +124,7 @@ + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_spi_5W/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/armgcc/Makefile index 4245868..cc298a4 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/armgcc/Makefile +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/armgcc/Makefile @@ -85,6 +85,7 @@ SRC_FILES += \ $(SDK_ROOT)/modules/nrfx/soc/nrfx_atomic.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_qspi.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ $(PROJ_DIR)/main.c \ diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/armgcc/ble_connectivity_gcc_nrf52.ld index aff6bd6..ec90ebb 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0xda000 RAM (rwx) : ORIGIN = 0x2001ad58, LENGTH = 0x252a8 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/config/sdk_config.h index 2873d07..e7ff0bb 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -240,6 +307,134 @@ // +// NRFX_QSPI_ENABLED - nrfx_qspi - QSPI peripheral driver +//========================================================== +#ifndef NRFX_QSPI_ENABLED +#define NRFX_QSPI_ENABLED 1 +#endif +// NRFX_QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef NRFX_QSPI_CONFIG_SCK_DELAY +#define NRFX_QSPI_CONFIG_SCK_DELAY 1 +#endif + +// NRFX_QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef NRFX_QSPI_CONFIG_XIP_OFFSET +#define NRFX_QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// NRFX_QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef NRFX_QSPI_CONFIG_READOC +#define NRFX_QSPI_CONFIG_READOC 0 +#endif + +// NRFX_QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef NRFX_QSPI_CONFIG_WRITEOC +#define NRFX_QSPI_CONFIG_WRITEOC 0 +#endif + +// NRFX_QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef NRFX_QSPI_CONFIG_ADDRMODE +#define NRFX_QSPI_CONFIG_ADDRMODE 0 +#endif + +// NRFX_QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef NRFX_QSPI_CONFIG_MODE +#define NRFX_QSPI_CONFIG_MODE 0 +#endif + +// NRFX_QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef NRFX_QSPI_CONFIG_FREQUENCY +#define NRFX_QSPI_CONFIG_FREQUENCY 15 +#endif + +// NRFX_QSPI_PIN_SCK - SCK pin value. +#ifndef NRFX_QSPI_PIN_SCK +#define NRFX_QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_CSN - CSN pin value. +#ifndef NRFX_QSPI_PIN_CSN +#define NRFX_QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO0 - IO0 pin value. +#ifndef NRFX_QSPI_PIN_IO0 +#define NRFX_QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO1 - IO1 pin value. +#ifndef NRFX_QSPI_PIN_IO1 +#define NRFX_QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO2 - IO2 pin value. +#ifndef NRFX_QSPI_PIN_IO2 +#define NRFX_QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO3 - IO3 pin value. +#ifndef NRFX_QSPI_PIN_IO3 +#define NRFX_QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_QSPI_CONFIG_IRQ_PRIORITY +#define NRFX_QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // NRFX_UARTE_ENABLED - nrfx_uarte - UARTE peripheral driver //========================================================== #ifndef NRFX_UARTE_ENABLED @@ -530,6 +725,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 1 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer //========================================================== #ifndef UART_ENABLED @@ -3896,12 +4221,12 @@ // NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. #ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT -#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 0 +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. #ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT -#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0 +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. @@ -4202,132 +4527,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/ses/ble_connectivity_s140_uart_pca10056.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/ses/ble_connectivity_s140_uart_pca10056.emProject index f1fa3b1..e2c1bef 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/ses/ble_connectivity_s140_uart_pca10056.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/ses/ble_connectivity_s140_uart_pca10056.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x100000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x40000;FLASH_START=0x26000;FLASH_SIZE=0xda000;RAM_START=0x2001ad58;RAM_SIZE=0x252a8" - linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000" + linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> @@ -122,6 +122,7 @@ + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_uart/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/armgcc/Makefile index 84c28b2..2d297fc 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/armgcc/Makefile +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/armgcc/Makefile @@ -25,6 +25,7 @@ SRC_FILES += \ $(SDK_ROOT)/components/libraries/usbd/app_usbd.c \ $(SDK_ROOT)/components/libraries/usbd/class/cdc/acm/app_usbd_cdc_acm.c \ $(SDK_ROOT)/components/libraries/usbd/app_usbd_core.c \ + $(SDK_ROOT)/components/libraries/usbd/class/nrf_dfu_trigger/app_usbd_nrf_dfu_trigger.c \ $(SDK_ROOT)/components/libraries/usbd/app_usbd_serial_num.c \ $(SDK_ROOT)/components/libraries/usbd/app_usbd_string_desc.c \ $(SDK_ROOT)/components/libraries/util/app_util_platform.c \ @@ -44,6 +45,7 @@ SRC_FILES += \ $(SDK_ROOT)/components/libraries/strerror/nrf_strerror.c \ $(SDK_ROOT)/modules/nrfx/mdk/system_nrf52840.c \ $(SDK_ROOT)/components/boards/boards.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.c \ $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_conn.c \ $(SDK_ROOT)/components/serialization/connectivity/codecs/common/ble_dtm_init.c \ $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_event_enc.c \ @@ -95,6 +97,7 @@ SRC_FILES += \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_power.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_qspi.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_systick.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ @@ -126,7 +129,7 @@ INC_FOLDERS += \ $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware \ $(SDK_ROOT)/integration/nrfx/legacy \ $(SDK_ROOT)/components/libraries/crc16 \ - $(SDK_ROOT)/components/ble/ble_dtm \ + $(SDK_ROOT)/components/libraries/bootloader/dfu \ $(SDK_ROOT)/components/serialization/common \ $(SDK_ROOT)/components/libraries/util \ $(SDK_ROOT)/components/libraries/usbd/class/cdc/acm \ @@ -134,6 +137,7 @@ INC_FOLDERS += \ $(SDK_ROOT)/components/libraries/usbd/class/cdc \ $(SDK_ROOT)/components/serialization/common/transport/ser_phy/config \ $(SDK_ROOT)/components/libraries/balloc \ + $(SDK_ROOT)/components/ble/ble_dtm \ $(SDK_ROOT)/components/libraries/ringbuf \ $(SDK_ROOT)/modules/nrfx/hal \ $(SDK_ROOT)/components/libraries/bsp \ @@ -153,11 +157,13 @@ INC_FOLDERS += \ $(SDK_ROOT)/components/libraries/memobj \ $(SDK_ROOT)/components/serialization/common/struct_ser/ble \ $(SDK_ROOT)/integration/nrfx \ + $(SDK_ROOT)/components/libraries/usbd/class/nrf_dfu_trigger \ $(SDK_ROOT)/components/serialization/common/transport \ $(SDK_ROOT)/components/libraries/timer/experimental \ $(SDK_ROOT)/components/softdevice/common \ $(SDK_ROOT)/components/softdevice/s140/headers/nrf52 \ $(SDK_ROOT)/modules/nrfx/drivers/include \ + $(SDK_ROOT)/components/libraries/block_dev \ $(SDK_ROOT)/external/fprintf \ $(SDK_ROOT)/components/libraries/log/src \ diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld index 769bb82..1fd56e3 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0xda000 RAM (rwx) : ORIGIN = 0x2001ad58, LENGTH = 0x252a8 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -69,12 +77,6 @@ SECTIONS KEEP(*(.nrf_balloc)) PROVIDE(__stop_nrf_balloc = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -87,6 +89,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/config/sdk_config.h index f90c83f..c4ce132 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/config/sdk_config.h @@ -46,6 +46,102 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "+" __DATE__ " " __TIME__ +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + +// Board Definition + +//========================================================== +// nrf_dfu_trigger_usb - USB DFU Trigger library + +//========================================================== +// NRF_DFU_TRIGGER_USB_USB_SHARED - Flag indicating whether USB is used for other purposes in the application. + + +#ifndef NRF_DFU_TRIGGER_USB_USB_SHARED +#define NRF_DFU_TRIGGER_USB_USB_SHARED 1 +#endif + +// NRF_DFU_TRIGGER_USB_INTERFACE_NUM - The USB interface to use for the DFU Trigger library. <0-255> + + +// According to the USB Specification, interface numbers cannot have +// gaps. Tailor this value to adhere to this limitation. + +#ifndef NRF_DFU_TRIGGER_USB_INTERFACE_NUM +#define NRF_DFU_TRIGGER_USB_INTERFACE_NUM 0 +#endif + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -280,6 +376,134 @@ // +// NRFX_QSPI_ENABLED - nrfx_qspi - QSPI peripheral driver +//========================================================== +#ifndef NRFX_QSPI_ENABLED +#define NRFX_QSPI_ENABLED 1 +#endif +// NRFX_QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef NRFX_QSPI_CONFIG_SCK_DELAY +#define NRFX_QSPI_CONFIG_SCK_DELAY 1 +#endif + +// NRFX_QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef NRFX_QSPI_CONFIG_XIP_OFFSET +#define NRFX_QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// NRFX_QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef NRFX_QSPI_CONFIG_READOC +#define NRFX_QSPI_CONFIG_READOC 0 +#endif + +// NRFX_QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef NRFX_QSPI_CONFIG_WRITEOC +#define NRFX_QSPI_CONFIG_WRITEOC 0 +#endif + +// NRFX_QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef NRFX_QSPI_CONFIG_ADDRMODE +#define NRFX_QSPI_CONFIG_ADDRMODE 0 +#endif + +// NRFX_QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef NRFX_QSPI_CONFIG_MODE +#define NRFX_QSPI_CONFIG_MODE 0 +#endif + +// NRFX_QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef NRFX_QSPI_CONFIG_FREQUENCY +#define NRFX_QSPI_CONFIG_FREQUENCY 15 +#endif + +// NRFX_QSPI_PIN_SCK - SCK pin value. +#ifndef NRFX_QSPI_PIN_SCK +#define NRFX_QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_CSN - CSN pin value. +#ifndef NRFX_QSPI_PIN_CSN +#define NRFX_QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO0 - IO0 pin value. +#ifndef NRFX_QSPI_PIN_IO0 +#define NRFX_QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO1 - IO1 pin value. +#ifndef NRFX_QSPI_PIN_IO1 +#define NRFX_QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO2 - IO2 pin value. +#ifndef NRFX_QSPI_PIN_IO2 +#define NRFX_QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO3 - IO3 pin value. +#ifndef NRFX_QSPI_PIN_IO3 +#define NRFX_QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_QSPI_CONFIG_IRQ_PRIORITY +#define NRFX_QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // NRFX_SYSTICK_ENABLED - nrfx_systick - ARM(R) SysTick driver @@ -673,6 +897,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 1 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // SYSTICK_ENABLED - nrf_drv_systick - ARM(R) SysTick driver - legacy layer @@ -976,7 +1330,7 @@ // Note: This value is not editable in Configuration Wizard. // Selected Product ID #ifndef APP_USBD_PID -#define APP_USBD_PID 0x521B +#define APP_USBD_PID 0xC00A #endif // APP_USBD_DEVICE_VER_MAJOR - Device version, major part. <0-99> @@ -1219,6 +1573,13 @@ // +// APP_USBD_NRF_DFU_TRIGGER_ENABLED - app_usbd_nrf_dfu_trigger - USBD Nordic DFU Trigger class + + +#ifndef APP_USBD_NRF_DFU_TRIGGER_ENABLED +#define APP_USBD_NRF_DFU_TRIGGER_ENABLED 1 +#endif + // CRC16_ENABLED - crc16 - CRC16 calculation routines @@ -4407,12 +4768,12 @@ // NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. #ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT -#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 0 +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. #ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT -#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0 +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. @@ -4713,132 +5074,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/ses/ble_connectivity_s140_usb_hci_pca10056.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/ses/ble_connectivity_s140_usb_hci_pca10056.emProject index 5e8e383..8adb839 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/ses/ble_connectivity_s140_usb_hci_pca10056.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/ses/ble_connectivity_s140_usb_hci_pca10056.emProject @@ -15,7 +15,7 @@ arm_simulator_memory_simulation_parameter="RWX 00000000,00100000,FFFFFFFF;RWX 20000000,00010000,CDCDCDCD" arm_target_device_name="nRF52840_xxAA" arm_target_interface_type="SWD" - c_user_include_directories="../../../config;../../../../../../components;../../../../../../components/ble/ble_dtm;../../../../../../components/boards;../../../../../../components/libraries/atomic;../../../../../../components/libraries/atomic_fifo;../../../../../../components/libraries/balloc;../../../../../../components/libraries/bsp;../../../../../../components/libraries/crc16;../../../../../../components/libraries/delay;../../../../../../components/libraries/experimental_section_vars;../../../../../../components/libraries/log;../../../../../../components/libraries/log/src;../../../../../../components/libraries/memobj;../../../../../../components/libraries/queue;../../../../../../components/libraries/ringbuf;../../../../../../components/libraries/scheduler;../../../../../../components/libraries/sortlist;../../../../../../components/libraries/strerror;../../../../../../components/libraries/timer;../../../../../../components/libraries/timer/experimental;../../../../../../components/libraries/usbd;../../../../../../components/libraries/usbd/class/cdc;../../../../../../components/libraries/usbd/class/cdc/acm;../../../../../../components/libraries/util;../../../../../../components/serialization/common;../../../../../../components/serialization/common/struct_ser/ble;../../../../../../components/serialization/common/transport;../../../../../../components/serialization/common/transport/ser_phy;../../../../../../components/serialization/common/transport/ser_phy/config;../../../../../../components/serialization/connectivity;../../../../../../components/serialization/connectivity/codecs/ble/middleware;../../../../../../components/serialization/connectivity/codecs/ble/serializers;../../../../../../components/serialization/connectivity/codecs/common;../../../../../../components/serialization/connectivity/hal;../../../../../../components/softdevice/common;../../../../../../components/softdevice/s140/headers;../../../../../../components/softdevice/s140/headers/nrf52;../../../../../../components/toolchain/cmsis/include;../../../../../../external/fprintf;../../../../../../external/segger_rtt;../../../../../../external/utf_converter;../../../../../../integration/nrfx;../../../../../../integration/nrfx/legacy;../../../../../../modules/nrfx;../../../../../../modules/nrfx/drivers/include;../../../../../../modules/nrfx/hal;../../../../../../modules/nrfx/mdk;../config;" + c_user_include_directories="../../../config;../../../../../../components;../../../../../../components/ble/ble_dtm;../../../../../../components/boards;../../../../../../components/libraries/atomic;../../../../../../components/libraries/atomic_fifo;../../../../../../components/libraries/balloc;../../../../../../components/libraries/block_dev;../../../../../../components/libraries/bootloader/dfu;../../../../../../components/libraries/bsp;../../../../../../components/libraries/crc16;../../../../../../components/libraries/delay;../../../../../../components/libraries/experimental_section_vars;../../../../../../components/libraries/log;../../../../../../components/libraries/log/src;../../../../../../components/libraries/memobj;../../../../../../components/libraries/queue;../../../../../../components/libraries/ringbuf;../../../../../../components/libraries/scheduler;../../../../../../components/libraries/sortlist;../../../../../../components/libraries/strerror;../../../../../../components/libraries/timer;../../../../../../components/libraries/timer/experimental;../../../../../../components/libraries/usbd;../../../../../../components/libraries/usbd/class/cdc;../../../../../../components/libraries/usbd/class/cdc/acm;../../../../../../components/libraries/usbd/class/nrf_dfu_trigger;../../../../../../components/libraries/util;../../../../../../components/serialization/common;../../../../../../components/serialization/common/struct_ser/ble;../../../../../../components/serialization/common/transport;../../../../../../components/serialization/common/transport/ser_phy;../../../../../../components/serialization/common/transport/ser_phy/config;../../../../../../components/serialization/connectivity;../../../../../../components/serialization/connectivity/codecs/ble/middleware;../../../../../../components/serialization/connectivity/codecs/ble/serializers;../../../../../../components/serialization/connectivity/codecs/common;../../../../../../components/serialization/connectivity/hal;../../../../../../components/softdevice/common;../../../../../../components/softdevice/s140/headers;../../../../../../components/softdevice/s140/headers/nrf52;../../../../../../components/toolchain/cmsis/include;../../../../../../external/fprintf;../../../../../../external/segger_rtt;../../../../../../external/utf_converter;../../../../../../integration/nrfx;../../../../../../integration/nrfx/legacy;../../../../../../modules/nrfx;../../../../../../modules/nrfx/drivers/include;../../../../../../modules/nrfx/hal;../../../../../../modules/nrfx/mdk;../config;" c_preprocessor_definitions="APP_TIMER_V2;APP_TIMER_V2_RTC1_ENABLED;BLE_STACK_SUPPORT_REQD;BOARD_PCA10056;BSP_DEFINES_ONLY;CONFIG_GPIO_AS_PINRESET;FLOAT_ABI_HARD;HCI_TIMER2;INITIALIZE_USER_SECTIONS;NO_VTOR_CONFIG;NRF52840_XXAA;NRF_SD_BLE_API_VERSION=6;S140;SER_CONNECTIVITY;SER_PHY_HCI;SER_PHY_HCI_USB_CDC;SOFTDEVICE_PRESENT;" debug_target_connection="J-Link" gcc_entry_point="Reset_Handler" @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x100000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x40000;FLASH_START=0x26000;FLASH_SIZE=0xda000;RAM_START=0x2001ad58;RAM_SIZE=0x252a8" - linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000" + linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> @@ -52,6 +52,7 @@ + @@ -77,6 +78,7 @@ + @@ -132,6 +134,7 @@ + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/ses/flash_placement.xml index b5fb146..c9cc513 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056/ser_s140_usb_hci/ses/flash_placement.xml @@ -11,9 +11,9 @@ - + @@ -43,4 +43,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/armgcc/ble_connectivity_gcc_nrf52.ld index f8a4e09..8687294 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x19000, LENGTH = 0x17000 RAM (rwx) : ORIGIN = 0x20001210, LENGTH = 0x4df0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -69,12 +77,6 @@ SECTIONS KEEP(*(.nrf_balloc)) PROVIDE(__stop_nrf_balloc = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -87,6 +89,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/config/sdk_config.h index e4b8834..57a336a 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -525,6 +592,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer //========================================================== #ifndef UART_ENABLED @@ -4211,132 +4408,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/ses/ble_connectivity_s112_hci_pca10056e.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/ses/ble_connectivity_s112_hci_pca10056e.emProject index ceda55d..bc77599 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/ses/ble_connectivity_s112_hci_pca10056e.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/ses/ble_connectivity_s112_hci_pca10056e.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x30000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x6000;FLASH_START=0x19000;FLASH_SIZE=0x17000;RAM_START=0x20001210;RAM_SIZE=0x4df0" - linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000" + linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/ses/flash_placement.xml index b5fb146..c9cc513 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_hci/ses/flash_placement.xml @@ -11,9 +11,9 @@ - + @@ -43,4 +43,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/armgcc/ble_connectivity_gcc_nrf52.ld index 21de23e..6436bd8 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x19000, LENGTH = 0x17000 RAM (rwx) : ORIGIN = 0x20001210, LENGTH = 0x4df0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/config/sdk_config.h index a3983b7..d8986c7 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -733,6 +800,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // SPIS_ENABLED - nrf_drv_spis - SPIS peripheral driver - legacy layer //========================================================== #ifndef SPIS_ENABLED @@ -4470,132 +4667,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/ses/ble_connectivity_s112_spi_pca10056e.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/ses/ble_connectivity_s112_spi_pca10056e.emProject index 37a378e..2c86c8f 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/ses/ble_connectivity_s112_spi_pca10056e.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/ses/ble_connectivity_s112_spi_pca10056e.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x30000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x6000;FLASH_START=0x19000;FLASH_SIZE=0x17000;RAM_START=0x20001210;RAM_SIZE=0x4df0" - linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000" + linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld index 21de23e..6436bd8 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x19000, LENGTH = 0x17000 RAM (rwx) : ORIGIN = 0x20001210, LENGTH = 0x4df0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/config/sdk_config.h index a3983b7..d8986c7 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -733,6 +800,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // SPIS_ENABLED - nrf_drv_spis - SPIS peripheral driver - legacy layer //========================================================== #ifndef SPIS_ENABLED @@ -4470,132 +4667,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/ses/ble_connectivity_s112_spi_5W_pca10056e.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/ses/ble_connectivity_s112_spi_5W_pca10056e.emProject index ed05faf..18a5a8b 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/ses/ble_connectivity_s112_spi_5W_pca10056e.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/ses/ble_connectivity_s112_spi_5W_pca10056e.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x30000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x6000;FLASH_START=0x19000;FLASH_SIZE=0x17000;RAM_START=0x20001210;RAM_SIZE=0x4df0" - linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000" + linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_spi_5W/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/armgcc/ble_connectivity_gcc_nrf52.ld index 21de23e..6436bd8 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x19000, LENGTH = 0x17000 RAM (rwx) : ORIGIN = 0x20001210, LENGTH = 0x4df0 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -63,12 +71,6 @@ SECTIONS KEEP(*(SORT(.log_const_data*))) PROVIDE(__stop_log_const_data = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -81,6 +83,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/config/sdk_config.h index deaf1aa..03540f1 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/config/sdk_config.h @@ -46,6 +46,73 @@ #ifdef USE_APP_CONFIG #include "app_config.h" #endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "" +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + // nRF_BLE //========================================================== @@ -525,6 +592,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 0 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer //========================================================== #ifndef UART_ENABLED @@ -4190,132 +4387,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/ses/ble_connectivity_s112_uart_pca10056e.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/ses/ble_connectivity_s112_uart_pca10056e.emProject index b569b40..02fd341 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/ses/ble_connectivity_s112_uart_pca10056e.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/ses/ble_connectivity_s112_uart_pca10056e.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x30000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x6000;FLASH_START=0x19000;FLASH_SIZE=0x17000;RAM_START=0x20001210;RAM_SIZE=0x4df0" - linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000" + linker_section_placements_segments="FLASH RX 0x0 0x30000;RAM RWX 0x20000000 0x6000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/ses/flash_placement.xml index 44721a5..0708731 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10056e/ser_s112_uart/ses/flash_placement.xml @@ -10,9 +10,9 @@ - + @@ -42,4 +42,7 @@ + + + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/armgcc/Makefile new file mode 100644 index 0000000..fb0be9b --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/armgcc/Makefile @@ -0,0 +1,290 @@ +PROJECT_NAME := ble_connectivity_132v3_usb_hci_pca10059 +TARGETS := nrf52840_xxaa +OUTPUT_DIRECTORY := _build + +SDK_ROOT := ../../../../../.. +PROJ_DIR := ../../.. + +$(OUTPUT_DIRECTORY)/nrf52840_xxaa.out: \ + LINKER_SCRIPT := ble_connectivity_gcc_nrf52.ld + +# Source files common to all targets +SRC_FILES += \ + $(SDK_ROOT)/modules/nrfx/mdk/gcc_startup_nrf52840.S \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_rtt.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_serial.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_backend_uart.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_default_backends.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_frontend.c \ + $(SDK_ROOT)/components/libraries/log/src/nrf_log_str_formatter.c \ + $(SDK_ROOT)/components/libraries/util/app_error.c \ + $(SDK_ROOT)/components/libraries/util/app_error_handler_gcc.c \ + $(SDK_ROOT)/components/libraries/util/app_error_weak.c \ + $(SDK_ROOT)/components/libraries/scheduler/app_scheduler.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/app_timer2.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd.c \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc/acm/app_usbd_cdc_acm.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_core.c \ + $(SDK_ROOT)/components/libraries/usbd/class/nrf_dfu_trigger/app_usbd_nrf_dfu_trigger.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_serial_num.c \ + $(SDK_ROOT)/components/libraries/usbd/app_usbd_string_desc.c \ + $(SDK_ROOT)/components/libraries/util/app_util_platform.c \ + $(SDK_ROOT)/components/libraries/crc16/crc16.c \ + $(SDK_ROOT)/components/libraries/timer/experimental/drv_rtc.c \ + $(SDK_ROOT)/components/libraries/util/nrf_assert.c \ + $(SDK_ROOT)/components/libraries/atomic_fifo/nrf_atfifo.c \ + $(SDK_ROOT)/components/libraries/atomic/nrf_atomic.c \ + $(SDK_ROOT)/components/libraries/balloc/nrf_balloc.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf.c \ + $(SDK_ROOT)/external/fprintf/nrf_fprintf_format.c \ + $(SDK_ROOT)/components/libraries/memobj/nrf_memobj.c \ + $(SDK_ROOT)/components/libraries/queue/nrf_queue.c \ + $(SDK_ROOT)/components/libraries/ringbuf/nrf_ringbuf.c \ + $(SDK_ROOT)/components/libraries/experimental_section_vars/nrf_section_iter.c \ + $(SDK_ROOT)/components/libraries/sortlist/nrf_sortlist.c \ + $(SDK_ROOT)/components/libraries/strerror/nrf_strerror.c \ + $(SDK_ROOT)/modules/nrfx/mdk/system_nrf52840.c \ + $(SDK_ROOT)/components/boards/boards.c \ + $(SDK_ROOT)/components/libraries/bootloader/dfu/nrf_dfu_trigger_usb.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/ble_dtm_init.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_event_enc.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_evt_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gap_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gap_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gap_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gatt_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gattc_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gattc_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gattc_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gatts_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_gatts_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_gatts_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_l2cap_conn.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/ble_l2cap_evt_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_l2cap_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/ble_serialization.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/ble_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/common/cond_field_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_gap_sec_keys.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_l2cap_sdu_pool.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/conn_ble_user_mem.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/conn_mw.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gap.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gattc.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_gatts.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware/conn_mw_ble_l2cap.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common/conn_mw_nrf_soc.c \ + $(SDK_ROOT)/components/serialization/connectivity/hal/dtm_uart.c \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers/nrf_soc_conn.c \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble/nrf_soc_struct_serialization.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_dtm_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_error_handling.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_event_encoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_handlers.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_pkt_decoder.c \ + $(SDK_ROOT)/components/serialization/connectivity/ser_conn_reset_cmd_decoder.c \ + $(SDK_ROOT)/components/serialization/common/ser_dbg_sd_str.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_hal_transport.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/ser_phy_hci.c \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/ser_phy_hci_slip_cdc.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_clock.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_power.c \ + $(SDK_ROOT)/integration/nrfx/legacy/nrf_drv_uart.c \ + $(SDK_ROOT)/modules/nrfx/soc/nrfx_atomic.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_power.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_qspi.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_systick.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_usbd.c \ + $(PROJ_DIR)/main.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_Syscalls_GCC.c \ + $(SDK_ROOT)/external/segger_rtt/SEGGER_RTT_printf.c \ + $(SDK_ROOT)/components/ble/common/ble_advdata.c \ + $(SDK_ROOT)/components/ble/ble_dtm/ble_dtm.c \ + $(SDK_ROOT)/components/ble/ble_dtm/ble_dtm_hw_nrf52.c \ + $(SDK_ROOT)/components/ble/common/ble_srv_common.c \ + $(SDK_ROOT)/external/utf_converter/utf.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh_ble.c \ + $(SDK_ROOT)/components/softdevice/common/nrf_sdh_soc.c \ + +# Include folders common to all targets +INC_FOLDERS += \ + $(SDK_ROOT)/components \ + $(SDK_ROOT)/components/serialization/connectivity/hal \ + $(SDK_ROOT)/modules/nrfx/mdk \ + $(SDK_ROOT)/components/libraries/scheduler \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/serializers \ + $(SDK_ROOT)/components/toolchain/cmsis/include \ + $(SDK_ROOT)/components/libraries/queue \ + $(SDK_ROOT)/components/libraries/timer \ + $(SDK_ROOT)/components/boards \ + $(SDK_ROOT)/components/serialization/connectivity \ + $(SDK_ROOT)/components/libraries/strerror \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/ble/middleware \ + $(SDK_ROOT)/components/libraries/crc16 \ + $(SDK_ROOT)/components/libraries/bootloader/dfu \ + $(SDK_ROOT)/components/serialization/common \ + $(SDK_ROOT)/components/libraries/util \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc/acm \ + ../config \ + $(SDK_ROOT)/components/libraries/usbd/class/cdc \ + $(SDK_ROOT)/components/ble/common \ + $(SDK_ROOT)/integration/nrfx \ + $(SDK_ROOT)/components/libraries/balloc \ + $(SDK_ROOT)/components/ble/ble_dtm \ + $(SDK_ROOT)/components/libraries/ringbuf \ + $(SDK_ROOT)/modules/nrfx/hal \ + $(SDK_ROOT)/components/libraries/bsp \ + $(SDK_ROOT)/components/softdevice/s132v3/headers/nrf52 \ + $(SDK_ROOT)/components/libraries/log \ + $(SDK_ROOT)/external/utf_converter \ + $(SDK_ROOT)/modules/nrfx \ + $(SDK_ROOT)/components/libraries/experimental_section_vars \ + $(SDK_ROOT)/integration/nrfx/legacy \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy \ + $(SDK_ROOT)/components/libraries/usbd \ + $(SDK_ROOT)/components/serialization/connectivity/codecs/common \ + $(SDK_ROOT)/components/libraries/delay \ + $(SDK_ROOT)/external/segger_rtt \ + $(SDK_ROOT)/components/libraries/atomic_fifo \ + $(SDK_ROOT)/components/libraries/atomic \ + $(SDK_ROOT)/components/libraries/sortlist \ + $(SDK_ROOT)/components/libraries/memobj \ + $(SDK_ROOT)/components/serialization/common/struct_ser/ble \ + $(SDK_ROOT)/components/softdevice/s132v3/headers \ + $(SDK_ROOT)/components/libraries/usbd/class/nrf_dfu_trigger \ + $(SDK_ROOT)/components/serialization/common/transport \ + $(SDK_ROOT)/components/libraries/timer/experimental \ + $(SDK_ROOT)/components/softdevice/common \ + $(SDK_ROOT)/components/serialization/common/transport/ser_phy/config \ + $(SDK_ROOT)/modules/nrfx/drivers/include \ + $(SDK_ROOT)/components/libraries/block_dev \ + $(SDK_ROOT)/external/fprintf \ + $(SDK_ROOT)/components/libraries/log/src \ + +# Libraries common to all targets +LIB_FILES += \ + +# Optimization flags +OPT = -Os -g3 +# Uncomment the line below to enable link time optimization +#OPT += -flto + +# C flags common to all targets +CFLAGS += $(OPT) +CFLAGS += -DAPP_TIMER_V2 +CFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +CFLAGS += -DBLE_STACK_SUPPORT_REQD +CFLAGS += -DBOARD_PCA10059 +CFLAGS += -DBSP_DEFINES_ONLY +CFLAGS += -DCONFIG_GPIO_AS_PINRESET +CFLAGS += -DFLOAT_ABI_HARD +CFLAGS += -DHCI_TIMER2 +CFLAGS += -DNRF52840_XXAA +CFLAGS += -DNRF_SD_BLE_API_VERSION=3 +CFLAGS += -DS132 +CFLAGS += -DSER_CONNECTIVITY +CFLAGS += -DSER_PHY_HCI +CFLAGS += -DSER_PHY_HCI_USB_CDC +CFLAGS += -DSOFTDEVICE_PRESENT +CFLAGS += -mcpu=cortex-m4 +CFLAGS += -mthumb -mabi=aapcs +CFLAGS += -Wall -Werror +CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# keep every function in a separate section, this allows linker to discard unused ones +CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing +CFLAGS += -fno-builtin -fshort-enums + +# C++ flags common to all targets +CXXFLAGS += $(OPT) + +# Assembler flags common to all targets +ASMFLAGS += -g3 +ASMFLAGS += -mcpu=cortex-m4 +ASMFLAGS += -mthumb -mabi=aapcs +ASMFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +ASMFLAGS += -DAPP_TIMER_V2 +ASMFLAGS += -DAPP_TIMER_V2_RTC1_ENABLED +ASMFLAGS += -DBLE_STACK_SUPPORT_REQD +ASMFLAGS += -DBOARD_PCA10059 +ASMFLAGS += -DBSP_DEFINES_ONLY +ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET +ASMFLAGS += -DFLOAT_ABI_HARD +ASMFLAGS += -DHCI_TIMER2 +ASMFLAGS += -DNRF52840_XXAA +ASMFLAGS += -DNRF_SD_BLE_API_VERSION=3 +ASMFLAGS += -DS132 +ASMFLAGS += -DSER_CONNECTIVITY +ASMFLAGS += -DSER_PHY_HCI +ASMFLAGS += -DSER_PHY_HCI_USB_CDC +ASMFLAGS += -DSOFTDEVICE_PRESENT + +# Linker flags +LDFLAGS += $(OPT) +LDFLAGS += -mthumb -mabi=aapcs -L$(SDK_ROOT)/modules/nrfx/mdk -T$(LINKER_SCRIPT) +LDFLAGS += -mcpu=cortex-m4 +LDFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 +# let linker dump unused sections +LDFLAGS += -Wl,--gc-sections +# use newlib in nano version +LDFLAGS += --specs=nano.specs + +nrf52840_xxaa: CFLAGS += -D__HEAP_SIZE=512 +nrf52840_xxaa: CFLAGS += -D__STACK_SIZE=2048 +nrf52840_xxaa: ASMFLAGS += -D__HEAP_SIZE=512 +nrf52840_xxaa: ASMFLAGS += -D__STACK_SIZE=2048 + +# Add standard libraries at the very end of the linker input, after all objects +# that may need symbols provided by these libraries. +LIB_FILES += -lc -lnosys -lm + + +.PHONY: default help + +# Default target - first one defined +default: nrf52840_xxaa + +# Print all targets that can be built +help: + @echo following targets are available: + @echo nrf52840_xxaa + @echo flash_softdevice + @echo sdk_config - starting external tool for editing sdk_config.h + @echo flash - flashing binary + +TEMPLATE_PATH := $(SDK_ROOT)/components/toolchain/gcc + + +include $(TEMPLATE_PATH)/Makefile.common + +$(foreach target, $(TARGETS), $(call define_target, $(target))) + +.PHONY: flash flash_softdevice erase + +# Flash the program +flash: default + @echo Flashing: $(OUTPUT_DIRECTORY)/nrf52840_xxaa.hex + nrfjprog -f nrf52 --program $(OUTPUT_DIRECTORY)/nrf52840_xxaa.hex --sectorerase + nrfjprog -f nrf52 --reset + +# Flash softdevice +flash_softdevice: + @echo Flashing: s132_nrf52_3.0.0_softdevice.hex + nrfjprog -f nrf52 --program $(SDK_ROOT)/components/softdevice/s132v3/hex/s132_nrf52_3.0.0_softdevice.hex --sectorerase + nrfjprog -f nrf52 --reset + +erase: + nrfjprog -f nrf52 --eraseall + +SDK_CONFIG_FILE := ../config/sdk_config.h +CMSIS_CONFIG_TOOL := $(SDK_ROOT)/external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar +sdk_config: + java -jar $(CMSIS_CONFIG_TOOL) $(SDK_CONFIG_FILE) diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld new file mode 100644 index 0000000..97547b2 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -0,0 +1,108 @@ +/* Linker script to configure memory regions. */ + +SEARCH_DIR(.) +GROUP(-lgcc -lc -lnosys) + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x1f000, LENGTH = 0xe1000 + RAM (rwx) : ORIGIN = 0x200199c0, LENGTH = 0x26640 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 +} + +SECTIONS +{ + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info +} + +SECTIONS +{ + . = ALIGN(4); + .mem_section_dummy_ram : + { + } + .log_dynamic_data : + { + PROVIDE(__start_log_dynamic_data = .); + KEEP(*(SORT(.log_dynamic_data*))) + PROVIDE(__stop_log_dynamic_data = .); + } > RAM + .log_filter_data : + { + PROVIDE(__start_log_filter_data = .); + KEEP(*(SORT(.log_filter_data*))) + PROVIDE(__stop_log_filter_data = .); + } > RAM + +} INSERT AFTER .data; + +SECTIONS +{ + .mem_section_dummy_rom : + { + } + .sdh_ble_observers : + { + PROVIDE(__start_sdh_ble_observers = .); + KEEP(*(SORT(.sdh_ble_observers*))) + PROVIDE(__stop_sdh_ble_observers = .); + } > FLASH + .sdh_soc_observers : + { + PROVIDE(__start_sdh_soc_observers = .); + KEEP(*(SORT(.sdh_soc_observers*))) + PROVIDE(__stop_sdh_soc_observers = .); + } > FLASH + .nrf_queue : + { + PROVIDE(__start_nrf_queue = .); + KEEP(*(.nrf_queue)) + PROVIDE(__stop_nrf_queue = .); + } > FLASH + .log_const_data : + { + PROVIDE(__start_log_const_data = .); + KEEP(*(SORT(.log_const_data*))) + PROVIDE(__stop_log_const_data = .); + } > FLASH + .nrf_balloc : + { + PROVIDE(__start_nrf_balloc = .); + KEEP(*(.nrf_balloc)) + PROVIDE(__stop_nrf_balloc = .); + } > FLASH + .sdh_state_observers : + { + PROVIDE(__start_sdh_state_observers = .); + KEEP(*(SORT(.sdh_state_observers*))) + PROVIDE(__stop_sdh_state_observers = .); + } > FLASH + .sdh_stack_observers : + { + PROVIDE(__start_sdh_stack_observers = .); + KEEP(*(SORT(.sdh_stack_observers*))) + PROVIDE(__stop_sdh_stack_observers = .); + } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH + .log_backends : + { + PROVIDE(__start_log_backends = .); + KEEP(*(SORT(.log_backends*))) + PROVIDE(__stop_log_backends = .); + } > FLASH + +} INSERT AFTER .text + + +INCLUDE "nrf_common.ld" diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/config/sdk_config.h new file mode 100644 index 0000000..8a50626 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/config/sdk_config.h @@ -0,0 +1,5369 @@ +/** + * Copyright (c) 2017 - 2019, 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. + * + */ + + + +#ifndef SDK_CONFIG_H +#define SDK_CONFIG_H +// <<< Use Configuration Wizard in Context Menu >>>\n +#ifdef USE_APP_CONFIG +#include "app_config.h" +#endif +// Application + +//========================================================== +// application_info - Software Component + +//========================================================== +// APP_NAME - Application name +#ifndef APP_NAME +#define APP_NAME "ble-connectivity" +#endif + +// APP_ID - Application ID +#ifndef APP_ID +#define APP_ID 0 +#endif + +// APP_VERSION - Application version (semantic versioning) + +//========================================================== +// APP_VERSION_MAJOR - Major version <0-1000> + + +#ifndef APP_VERSION_MAJOR +#define APP_VERSION_MAJOR 0 +#endif + +// APP_VERSION_MINOR - Minor version <0-1000> + + +#ifndef APP_VERSION_MINOR +#define APP_VERSION_MINOR 1 +#endif + +// APP_VERSION_PATCH - Patch version <0-1000> + + +#ifndef APP_VERSION_PATCH +#define APP_VERSION_PATCH 0 +#endif + +// APP_VERSION_PRERELEASE - Prerelease, eg. "-1.alpha" + +// If not empty, this string should include the leading hyphen (-). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_PRERELEASE +#define APP_VERSION_PRERELEASE "" +#endif + +// APP_VERSION_METADATA - Metadata, e.g. "+some-string.01-01-2018-23-59-59" + +// If not empty, this string should include the leading plus (+). +// This string might be normalized at run-time to not contain characters +// illegal in Semantic Versioning. +#ifndef APP_VERSION_METADATA +#define APP_VERSION_METADATA "+" __DATE__ " " __TIME__ +#endif + +// +//========================================================== + +// +//========================================================== + +// +//========================================================== + +// Board Definition + +//========================================================== +// nrf_dfu_trigger_usb - USB DFU Trigger library + +//========================================================== +// NRF_DFU_TRIGGER_USB_USB_SHARED - Flag indicating whether USB is used for other purposes in the application. + + +#ifndef NRF_DFU_TRIGGER_USB_USB_SHARED +#define NRF_DFU_TRIGGER_USB_USB_SHARED 1 +#endif + +// NRF_DFU_TRIGGER_USB_INTERFACE_NUM - The USB interface to use for the DFU Trigger library. <0-255> + + +// According to the USB Specification, interface numbers cannot have +// gaps. Tailor this value to adhere to this limitation. + +#ifndef NRF_DFU_TRIGGER_USB_INTERFACE_NUM +#define NRF_DFU_TRIGGER_USB_INTERFACE_NUM 0 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_BLE + +//========================================================== +// BLE_DTM_ENABLED - ble_dtm - Module for testing RF/PHY using DTM commands + + +#ifndef BLE_DTM_ENABLED +#define BLE_DTM_ENABLED 1 +#endif + +// +//========================================================== + +// nRF_Drivers + +//========================================================== +// NRFX_CLOCK_ENABLED - nrfx_clock - CLOCK peripheral driver +//========================================================== +#ifndef NRFX_CLOCK_ENABLED +#define NRFX_CLOCK_ENABLED 1 +#endif +// NRFX_CLOCK_CONFIG_LF_SRC - LF Clock Source + +// <0=> RC +// <1=> XTAL +// <2=> Synth +// <131073=> External Low Swing +// <196609=> External Full Swing + +#ifndef NRFX_CLOCK_CONFIG_LF_SRC +#define NRFX_CLOCK_CONFIG_LF_SRC 1 +#endif + +// NRFX_CLOCK_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_CLOCK_CONFIG_IRQ_PRIORITY +#define NRFX_CLOCK_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_CLOCK_CONFIG_LOG_ENABLED +#define NRFX_CLOCK_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_CLOCK_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_CLOCK_CONFIG_LOG_LEVEL +#define NRFX_CLOCK_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_CLOCK_CONFIG_INFO_COLOR +#define NRFX_CLOCK_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_CLOCK_CONFIG_DEBUG_COLOR +#define NRFX_CLOCK_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_POWER_ENABLED - nrfx_power - POWER peripheral driver +//========================================================== +#ifndef NRFX_POWER_ENABLED +#define NRFX_POWER_ENABLED 1 +#endif +// NRFX_POWER_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_POWER_CONFIG_IRQ_PRIORITY +#define NRFX_POWER_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_POWER_CONFIG_DEFAULT_DCDCEN - The default configuration of main DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef NRFX_POWER_CONFIG_DEFAULT_DCDCEN +#define NRFX_POWER_CONFIG_DEFAULT_DCDCEN 0 +#endif + +// NRFX_POWER_CONFIG_DEFAULT_DCDCENHV - The default configuration of High Voltage DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef NRFX_POWER_CONFIG_DEFAULT_DCDCENHV +#define NRFX_POWER_CONFIG_DEFAULT_DCDCENHV 0 +#endif + +// + +// NRFX_PRS_ENABLED - nrfx_prs - Peripheral Resource Sharing module +//========================================================== +#ifndef NRFX_PRS_ENABLED +#define NRFX_PRS_ENABLED 1 +#endif +// NRFX_PRS_BOX_0_ENABLED - Enables box 0 in the module. + + +#ifndef NRFX_PRS_BOX_0_ENABLED +#define NRFX_PRS_BOX_0_ENABLED 0 +#endif + +// NRFX_PRS_BOX_1_ENABLED - Enables box 1 in the module. + + +#ifndef NRFX_PRS_BOX_1_ENABLED +#define NRFX_PRS_BOX_1_ENABLED 0 +#endif + +// NRFX_PRS_BOX_2_ENABLED - Enables box 2 in the module. + + +#ifndef NRFX_PRS_BOX_2_ENABLED +#define NRFX_PRS_BOX_2_ENABLED 0 +#endif + +// NRFX_PRS_BOX_3_ENABLED - Enables box 3 in the module. + + +#ifndef NRFX_PRS_BOX_3_ENABLED +#define NRFX_PRS_BOX_3_ENABLED 0 +#endif + +// NRFX_PRS_BOX_4_ENABLED - Enables box 4 in the module. + + +#ifndef NRFX_PRS_BOX_4_ENABLED +#define NRFX_PRS_BOX_4_ENABLED 1 +#endif + +// NRFX_PRS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_PRS_CONFIG_LOG_ENABLED +#define NRFX_PRS_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_PRS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_PRS_CONFIG_LOG_LEVEL +#define NRFX_PRS_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_PRS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_PRS_CONFIG_INFO_COLOR +#define NRFX_PRS_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_PRS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_PRS_CONFIG_DEBUG_COLOR +#define NRFX_PRS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_QSPI_ENABLED - nrfx_qspi - QSPI peripheral driver +//========================================================== +#ifndef NRFX_QSPI_ENABLED +#define NRFX_QSPI_ENABLED 1 +#endif +// NRFX_QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef NRFX_QSPI_CONFIG_SCK_DELAY +#define NRFX_QSPI_CONFIG_SCK_DELAY 1 +#endif + +// NRFX_QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef NRFX_QSPI_CONFIG_XIP_OFFSET +#define NRFX_QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// NRFX_QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef NRFX_QSPI_CONFIG_READOC +#define NRFX_QSPI_CONFIG_READOC 0 +#endif + +// NRFX_QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef NRFX_QSPI_CONFIG_WRITEOC +#define NRFX_QSPI_CONFIG_WRITEOC 0 +#endif + +// NRFX_QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef NRFX_QSPI_CONFIG_ADDRMODE +#define NRFX_QSPI_CONFIG_ADDRMODE 0 +#endif + +// NRFX_QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef NRFX_QSPI_CONFIG_MODE +#define NRFX_QSPI_CONFIG_MODE 0 +#endif + +// NRFX_QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef NRFX_QSPI_CONFIG_FREQUENCY +#define NRFX_QSPI_CONFIG_FREQUENCY 15 +#endif + +// NRFX_QSPI_PIN_SCK - SCK pin value. +#ifndef NRFX_QSPI_PIN_SCK +#define NRFX_QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_CSN - CSN pin value. +#ifndef NRFX_QSPI_PIN_CSN +#define NRFX_QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO0 - IO0 pin value. +#ifndef NRFX_QSPI_PIN_IO0 +#define NRFX_QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO1 - IO1 pin value. +#ifndef NRFX_QSPI_PIN_IO1 +#define NRFX_QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO2 - IO2 pin value. +#ifndef NRFX_QSPI_PIN_IO2 +#define NRFX_QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO3 - IO3 pin value. +#ifndef NRFX_QSPI_PIN_IO3 +#define NRFX_QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_QSPI_CONFIG_IRQ_PRIORITY +#define NRFX_QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// NRFX_SYSTICK_ENABLED - nrfx_systick - ARM(R) SysTick driver + + +#ifndef NRFX_SYSTICK_ENABLED +#define NRFX_SYSTICK_ENABLED 1 +#endif + +// NRFX_UARTE_ENABLED - nrfx_uarte - UARTE peripheral driver +//========================================================== +#ifndef NRFX_UARTE_ENABLED +#define NRFX_UARTE_ENABLED 1 +#endif +// NRFX_UARTE0_ENABLED - Enable UARTE0 instance +#ifndef NRFX_UARTE0_ENABLED +#define NRFX_UARTE0_ENABLED 0 +#endif + +// NRFX_UARTE1_ENABLED - Enable UARTE1 instance +#ifndef NRFX_UARTE1_ENABLED +#define NRFX_UARTE1_ENABLED 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_HWFC +#define NRFX_UARTE_DEFAULT_CONFIG_HWFC 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_PARITY +#define NRFX_UARTE_DEFAULT_CONFIG_PARITY 0 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <8388608=> 31250 baud +// <10289152=> 38400 baud +// <15007744=> 56000 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE +#define NRFX_UARTE_DEFAULT_CONFIG_BAUDRATE 30801920 +#endif + +// NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY +#define NRFX_UARTE_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_UARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_UARTE_CONFIG_LOG_ENABLED +#define NRFX_UARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_UARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_UARTE_CONFIG_LOG_LEVEL +#define NRFX_UARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_UARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UARTE_CONFIG_INFO_COLOR +#define NRFX_UARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_UARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UARTE_CONFIG_DEBUG_COLOR +#define NRFX_UARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_UART_ENABLED - nrfx_uart - UART peripheral driver +//========================================================== +#ifndef NRFX_UART_ENABLED +#define NRFX_UART_ENABLED 1 +#endif +// NRFX_UART0_ENABLED - Enable UART0 instance +#ifndef NRFX_UART0_ENABLED +#define NRFX_UART0_ENABLED 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef NRFX_UART_DEFAULT_CONFIG_HWFC +#define NRFX_UART_DEFAULT_CONFIG_HWFC 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef NRFX_UART_DEFAULT_CONFIG_PARITY +#define NRFX_UART_DEFAULT_CONFIG_PARITY 0 +#endif + +// NRFX_UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3866624=> 14400 baud +// <5152768=> 19200 baud +// <7729152=> 28800 baud +// <8388608=> 31250 baud +// <10309632=> 38400 baud +// <15007744=> 56000 baud +// <15462400=> 57600 baud +// <20615168=> 76800 baud +// <30924800=> 115200 baud +// <61845504=> 230400 baud +// <67108864=> 250000 baud +// <123695104=> 460800 baud +// <247386112=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRFX_UART_DEFAULT_CONFIG_BAUDRATE +#define NRFX_UART_DEFAULT_CONFIG_BAUDRATE 30924800 +#endif + +// NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY +#define NRFX_UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRFX_UART_CONFIG_LOG_ENABLED +#define NRFX_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_UART_CONFIG_LOG_LEVEL +#define NRFX_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UART_CONFIG_INFO_COLOR +#define NRFX_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_UART_CONFIG_DEBUG_COLOR +#define NRFX_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// + +// NRFX_USBD_ENABLED - nrfx_usbd - USBD peripheral driver +//========================================================== +#ifndef NRFX_USBD_ENABLED +#define NRFX_USBD_ENABLED 1 +#endif +// NRFX_USBD_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_USBD_CONFIG_IRQ_PRIORITY +#define NRFX_USBD_CONFIG_IRQ_PRIORITY 6 +#endif + +// NRFX_USBD_CONFIG_DMASCHEDULER_MODE - USBD DMA scheduler working scheme + +// <0=> Prioritized access +// <1=> Round Robin + +#ifndef NRFX_USBD_CONFIG_DMASCHEDULER_MODE +#define NRFX_USBD_CONFIG_DMASCHEDULER_MODE 0 +#endif + +// NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST - Give priority to isochronous transfers + + +// This option gives priority to isochronous transfers. +// Enabling it assures that isochronous transfers are always processed, +// even if multiple other transfers are pending. +// Isochronous endpoints are prioritized before the usbd_dma_scheduler_algorithm +// function is called, so the option is independent of the algorithm chosen. + +#ifndef NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST +#define NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST 1 +#endif + +// NRFX_USBD_CONFIG_ISO_IN_ZLP - Respond to an IN token on ISO IN endpoint with ZLP when no data is ready + + +// If set, ISO IN endpoint will respond to an IN token with ZLP when no data is ready to be sent. +// Else, there will be no response. + +#ifndef NRFX_USBD_CONFIG_ISO_IN_ZLP +#define NRFX_USBD_CONFIG_ISO_IN_ZLP 0 +#endif + +// + +// NRF_CLOCK_ENABLED - nrf_drv_clock - CLOCK peripheral driver - legacy layer +//========================================================== +#ifndef NRF_CLOCK_ENABLED +#define NRF_CLOCK_ENABLED 1 +#endif +// CLOCK_CONFIG_LF_SRC - LF Clock Source + +// <0=> RC +// <1=> XTAL +// <2=> Synth +// <131073=> External Low Swing +// <196609=> External Full Swing + +#ifndef CLOCK_CONFIG_LF_SRC +#define CLOCK_CONFIG_LF_SRC 1 +#endif + +// CLOCK_CONFIG_LF_CAL_ENABLED - Calibration enable for LF Clock Source + + +#ifndef CLOCK_CONFIG_LF_CAL_ENABLED +#define CLOCK_CONFIG_LF_CAL_ENABLED 0 +#endif + +// CLOCK_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef CLOCK_CONFIG_IRQ_PRIORITY +#define CLOCK_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// POWER_ENABLED - nrf_drv_power - POWER peripheral driver - legacy layer +//========================================================== +#ifndef POWER_ENABLED +#define POWER_ENABLED 1 +#endif +// POWER_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef POWER_CONFIG_IRQ_PRIORITY +#define POWER_CONFIG_IRQ_PRIORITY 6 +#endif + +// POWER_CONFIG_DEFAULT_DCDCEN - The default configuration of main DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef POWER_CONFIG_DEFAULT_DCDCEN +#define POWER_CONFIG_DEFAULT_DCDCEN 0 +#endif + +// POWER_CONFIG_DEFAULT_DCDCENHV - The default configuration of High Voltage DCDC regulator + + +// This settings means only that components for DCDC regulator are installed and it can be enabled. + +#ifndef POWER_CONFIG_DEFAULT_DCDCENHV +#define POWER_CONFIG_DEFAULT_DCDCENHV 0 +#endif + +// + +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 1 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + +// SYSTICK_ENABLED - nrf_drv_systick - ARM(R) SysTick driver - legacy layer + + +#ifndef SYSTICK_ENABLED +#define SYSTICK_ENABLED 1 +#endif + +// UART_ENABLED - nrf_drv_uart - UART/UARTE peripheral driver - legacy layer +//========================================================== +#ifndef UART_ENABLED +#define UART_ENABLED 1 +#endif +// UART_DEFAULT_CONFIG_HWFC - Hardware Flow Control + +// <0=> Disabled +// <1=> Enabled + +#ifndef UART_DEFAULT_CONFIG_HWFC +#define UART_DEFAULT_CONFIG_HWFC 0 +#endif + +// UART_DEFAULT_CONFIG_PARITY - Parity + +// <0=> Excluded +// <14=> Included + +#ifndef UART_DEFAULT_CONFIG_PARITY +#define UART_DEFAULT_CONFIG_PARITY 0 +#endif + +// UART_DEFAULT_CONFIG_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <10289152=> 38400 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef UART_DEFAULT_CONFIG_BAUDRATE +#define UART_DEFAULT_CONFIG_BAUDRATE 30801920 +#endif + +// UART_DEFAULT_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef UART_DEFAULT_CONFIG_IRQ_PRIORITY +#define UART_DEFAULT_CONFIG_IRQ_PRIORITY 6 +#endif + +// UART_EASY_DMA_SUPPORT - Driver supporting EasyDMA + + +#ifndef UART_EASY_DMA_SUPPORT +#define UART_EASY_DMA_SUPPORT 1 +#endif + +// UART_LEGACY_SUPPORT - Driver supporting Legacy mode + + +#ifndef UART_LEGACY_SUPPORT +#define UART_LEGACY_SUPPORT 1 +#endif + +// UART0_ENABLED - Enable UART0 instance +//========================================================== +#ifndef UART0_ENABLED +#define UART0_ENABLED 1 +#endif +// UART0_CONFIG_USE_EASY_DMA - Default setting for using EasyDMA + + +#ifndef UART0_CONFIG_USE_EASY_DMA +#define UART0_CONFIG_USE_EASY_DMA 1 +#endif + +// + +// UART1_ENABLED - Enable UART1 instance +//========================================================== +#ifndef UART1_ENABLED +#define UART1_ENABLED 0 +#endif +// + +// + +// USBD_ENABLED - nrf_drv_usbd - Software Component +//========================================================== +#ifndef USBD_ENABLED +#define USBD_ENABLED 1 +#endif +// USBD_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef USBD_CONFIG_IRQ_PRIORITY +#define USBD_CONFIG_IRQ_PRIORITY 6 +#endif + +// USBD_CONFIG_DMASCHEDULER_MODE - USBD SMA scheduler working scheme + +// <0=> Prioritized access +// <1=> Round Robin + +#ifndef USBD_CONFIG_DMASCHEDULER_MODE +#define USBD_CONFIG_DMASCHEDULER_MODE 0 +#endif + +// USBD_CONFIG_DMASCHEDULER_ISO_BOOST - Give priority to isochronous transfers + + +// This option gives priority to isochronous transfers. +// Enabling it assures that isochronous transfers are always processed, +// even if multiple other transfers are pending. +// Isochronous endpoints are prioritized before the usbd_dma_scheduler_algorithm +// function is called, so the option is independent of the algorithm chosen. + +#ifndef USBD_CONFIG_DMASCHEDULER_ISO_BOOST +#define USBD_CONFIG_DMASCHEDULER_ISO_BOOST 1 +#endif + +// USBD_CONFIG_ISO_IN_ZLP - Respond to an IN token on ISO IN endpoint with ZLP when no data is ready + + +// If set, ISO IN endpoint will respond to an IN token with ZLP when no data is ready to be sent. +// Else, there will be no response. + +#ifndef USBD_CONFIG_ISO_IN_ZLP +#define USBD_CONFIG_ISO_IN_ZLP 0 +#endif + +// + +// +//========================================================== + +// nRF_Libraries + +//========================================================== +// APP_SCHEDULER_ENABLED - app_scheduler - Events scheduler +//========================================================== +#ifndef APP_SCHEDULER_ENABLED +#define APP_SCHEDULER_ENABLED 1 +#endif +// APP_SCHEDULER_WITH_PAUSE - Enabling pause feature + + +#ifndef APP_SCHEDULER_WITH_PAUSE +#define APP_SCHEDULER_WITH_PAUSE 1 +#endif + +// APP_SCHEDULER_WITH_PROFILER - Enabling scheduler profiling + + +#ifndef APP_SCHEDULER_WITH_PROFILER +#define APP_SCHEDULER_WITH_PROFILER 1 +#endif + +// + +// APP_TIMER_ENABLED - app_timer - Application timer functionality +//========================================================== +#ifndef APP_TIMER_ENABLED +#define APP_TIMER_ENABLED 1 +#endif +// APP_TIMER_CONFIG_RTC_FREQUENCY - Configure RTC prescaler. + +// <0=> 32768 Hz +// <1=> 16384 Hz +// <3=> 8192 Hz +// <7=> 4096 Hz +// <15=> 2048 Hz +// <31=> 1024 Hz + +#ifndef APP_TIMER_CONFIG_RTC_FREQUENCY +#define APP_TIMER_CONFIG_RTC_FREQUENCY 1 +#endif + +// APP_TIMER_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef APP_TIMER_CONFIG_IRQ_PRIORITY +#define APP_TIMER_CONFIG_IRQ_PRIORITY 6 +#endif + +// APP_TIMER_CONFIG_OP_QUEUE_SIZE - Capacity of timer requests queue. +// Size of the queue depends on how many timers are used +// in the system, how often timers are started and overall +// system latency. If queue size is too small app_timer calls +// will fail. + +#ifndef APP_TIMER_CONFIG_OP_QUEUE_SIZE +#define APP_TIMER_CONFIG_OP_QUEUE_SIZE 10 +#endif + +// APP_TIMER_CONFIG_USE_SCHEDULER - Enable scheduling app_timer events to app_scheduler + + +#ifndef APP_TIMER_CONFIG_USE_SCHEDULER +#define APP_TIMER_CONFIG_USE_SCHEDULER 0 +#endif + +// APP_TIMER_KEEPS_RTC_ACTIVE - Enable RTC always on + + +// If option is enabled RTC is kept running even if there is no active timers. +// This option can be used when app_timer is used for timestamping. + +#ifndef APP_TIMER_KEEPS_RTC_ACTIVE +#define APP_TIMER_KEEPS_RTC_ACTIVE 0 +#endif + +// APP_TIMER_SAFE_WINDOW_MS - Maximum possible latency (in milliseconds) of handling app_timer event. +// Maximum possible timeout that can be set is reduced by safe window. +// Example: RTC frequency 16384 Hz, maximum possible timeout 1024 seconds - APP_TIMER_SAFE_WINDOW_MS. +// Since RTC is not stopped when processor is halted in debugging session, this value +// must cover it if debugging is needed. It is possible to halt processor for APP_TIMER_SAFE_WINDOW_MS +// without corrupting app_timer behavior. + +#ifndef APP_TIMER_SAFE_WINDOW_MS +#define APP_TIMER_SAFE_WINDOW_MS 300000 +#endif + +// App Timer Legacy configuration - Legacy configuration. + +//========================================================== +// APP_TIMER_WITH_PROFILER - Enable app_timer profiling + + +#ifndef APP_TIMER_WITH_PROFILER +#define APP_TIMER_WITH_PROFILER 0 +#endif + +// APP_TIMER_CONFIG_SWI_NUMBER - Configure SWI instance used. + + +#ifndef APP_TIMER_CONFIG_SWI_NUMBER +#define APP_TIMER_CONFIG_SWI_NUMBER 0 +#endif + +// +//========================================================== + +// + +// APP_USBD_ENABLED - app_usbd - USB Device library +//========================================================== +#ifndef APP_USBD_ENABLED +#define APP_USBD_ENABLED 1 +#endif +// APP_USBD_VID - Vendor ID. + +// Note: This value is not editable in Configuration Wizard. +// Vendor ID ordered from USB IF: http://www.usb.org/developers/vendor/ +#ifndef APP_USBD_VID +#define APP_USBD_VID 0x1915 +#endif + +// APP_USBD_PID - Product ID. + +// Note: This value is not editable in Configuration Wizard. +// Selected Product ID +#ifndef APP_USBD_PID +#define APP_USBD_PID 0xC00A +#endif + +// APP_USBD_DEVICE_VER_MAJOR - Device version, major part. <0-99> + + +// Device version, will be converted automatically to BCD notation. Use just decimal values. + +#ifndef APP_USBD_DEVICE_VER_MAJOR +#define APP_USBD_DEVICE_VER_MAJOR 1 +#endif + +// APP_USBD_DEVICE_VER_MINOR - Device version, minor part. <0-99> + + +// Device version, will be converted automatically to BCD notation. Use just decimal values. + +#ifndef APP_USBD_DEVICE_VER_MINOR +#define APP_USBD_DEVICE_VER_MINOR 0 +#endif + +// APP_USBD_CONFIG_SELF_POWERED - Self-powered device, as opposed to bus-powered. + + +#ifndef APP_USBD_CONFIG_SELF_POWERED +#define APP_USBD_CONFIG_SELF_POWERED 1 +#endif + +// APP_USBD_CONFIG_MAX_POWER - MaxPower field in configuration descriptor in milliamps. <0-500> + + +#ifndef APP_USBD_CONFIG_MAX_POWER +#define APP_USBD_CONFIG_MAX_POWER 100 +#endif + +// APP_USBD_CONFIG_POWER_EVENTS_PROCESS - Process power events. + + +// Enable processing power events in USB event handler. + +#ifndef APP_USBD_CONFIG_POWER_EVENTS_PROCESS +#define APP_USBD_CONFIG_POWER_EVENTS_PROCESS 1 +#endif + +// APP_USBD_CONFIG_EVENT_QUEUE_ENABLE - Enable event queue. + +// This is the default configuration when all the events are placed into internal queue. +// Disable it when an external queue is used like app_scheduler or if you wish to process all events inside interrupts. +// Processing all events from the interrupt level adds requirement not to call any functions that modifies the USBD library state from the context higher than USB interrupt context. +// Functions that modify USBD state are functions for sleep, wakeup, start, stop, enable, and disable. +//========================================================== +#ifndef APP_USBD_CONFIG_EVENT_QUEUE_ENABLE +#define APP_USBD_CONFIG_EVENT_QUEUE_ENABLE 1 +#endif +// APP_USBD_CONFIG_EVENT_QUEUE_SIZE - The size of the event queue. <16-64> + + +// The size of the queue for the events that would be processed in the main loop. + +#ifndef APP_USBD_CONFIG_EVENT_QUEUE_SIZE +#define APP_USBD_CONFIG_EVENT_QUEUE_SIZE 32 +#endif + +// APP_USBD_CONFIG_SOF_HANDLING_MODE - Change SOF events handling mode. + + +// Normal queue - SOF events are pushed normally into the event queue. +// Compress queue - SOF events are counted and binded with other events or executed when the queue is empty. +// This prevents the queue from filling up with SOF events. +// Interrupt - SOF events are processed in interrupt. +// <0=> Normal queue +// <1=> Compress queue +// <2=> Interrupt + +#ifndef APP_USBD_CONFIG_SOF_HANDLING_MODE +#define APP_USBD_CONFIG_SOF_HANDLING_MODE 1 +#endif + +// + +// APP_USBD_CONFIG_SOF_TIMESTAMP_PROVIDE - Provide a function that generates timestamps for logs based on the current SOF. + + +// The function app_usbd_sof_timestamp_get is implemented if the logger is enabled. +// Use it when initializing the logger. +// SOF processing is always enabled when this configuration parameter is active. +// Note: This option is configured outside of APP_USBD_CONFIG_LOG_ENABLED. +// This means that it works even if the logging in this very module is disabled. + +#ifndef APP_USBD_CONFIG_SOF_TIMESTAMP_PROVIDE +#define APP_USBD_CONFIG_SOF_TIMESTAMP_PROVIDE 0 +#endif + +// APP_USBD_CONFIG_DESC_STRING_SIZE - Maximum size of the NULL-terminated string of the string descriptor. <31-254> + + +// 31 characters can be stored in the internal USB buffer used for transfers. +// Any value higher than 31 creates an additional buffer just for descriptor strings. + +#ifndef APP_USBD_CONFIG_DESC_STRING_SIZE +#define APP_USBD_CONFIG_DESC_STRING_SIZE 31 +#endif + +// APP_USBD_CONFIG_DESC_STRING_UTF_ENABLED - Enable UTF8 conversion. + + +// Enable UTF8-encoded characters. In normal processing, only ASCII characters are available. + +#ifndef APP_USBD_CONFIG_DESC_STRING_UTF_ENABLED +#define APP_USBD_CONFIG_DESC_STRING_UTF_ENABLED 0 +#endif + +// APP_USBD_STRINGS_LANGIDS - Supported languages identifiers. + +// Note: This value is not editable in Configuration Wizard. +// Comma-separated list of supported languages. +#ifndef APP_USBD_STRINGS_LANGIDS +#define APP_USBD_STRINGS_LANGIDS APP_USBD_LANG_AND_SUBLANG(APP_USBD_LANG_ENGLISH, APP_USBD_SUBLANG_ENGLISH_US) +#endif + +// APP_USBD_STRING_ID_MANUFACTURER - Define manufacturer string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_MANUFACTURER +#define APP_USBD_STRING_ID_MANUFACTURER 1 +#endif +// APP_USBD_STRINGS_MANUFACTURER_EXTERN - Define whether @ref APP_USBD_STRINGS_MANUFACTURER is created by macro or declared as a global variable. + + +#ifndef APP_USBD_STRINGS_MANUFACTURER_EXTERN +#define APP_USBD_STRINGS_MANUFACTURER_EXTERN 0 +#endif + +// APP_USBD_STRINGS_MANUFACTURER - String descriptor for the manufacturer name. + +// Note: This value is not editable in Configuration Wizard. +// Comma-separated list of manufacturer names for each defined language. +// Use @ref APP_USBD_STRING_DESC macro to create string descriptor from a NULL-terminated string. +// Use @ref APP_USBD_STRING_RAW8_DESC macro to create string descriptor from comma-separated uint8_t values. +// Use @ref APP_USBD_STRING_RAW16_DESC macro to create string descriptor from comma-separated uint16_t values. +// Alternatively, configure the macro to point to any internal variable pointer that already contains the descriptor. +// Setting string to NULL disables that string. +// The order of manufacturer names must be the same like in @ref APP_USBD_STRINGS_LANGIDS. +#ifndef APP_USBD_STRINGS_MANUFACTURER +#define APP_USBD_STRINGS_MANUFACTURER APP_USBD_STRING_DESC("Nordic Semiconductor") +#endif + +// + +// APP_USBD_STRING_ID_PRODUCT - Define product string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_PRODUCT +#define APP_USBD_STRING_ID_PRODUCT 2 +#endif +// APP_USBD_STRINGS_PRODUCT_EXTERN - Define whether @ref APP_USBD_STRINGS_PRODUCT is created by macro or declared as a global variable. + + +#ifndef APP_USBD_STRINGS_PRODUCT_EXTERN +#define APP_USBD_STRINGS_PRODUCT_EXTERN 0 +#endif + +// APP_USBD_STRINGS_PRODUCT - String descriptor for the product name. + +// Note: This value is not editable in Configuration Wizard. +// List of product names that is defined the same way like in @ref APP_USBD_STRINGS_MANUFACTURER. +#ifndef APP_USBD_STRINGS_PRODUCT +#define APP_USBD_STRINGS_PRODUCT APP_USBD_STRING_DESC("nRF52 Connectivity") +#endif + +// + +// APP_USBD_STRING_ID_SERIAL - Define serial number string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_SERIAL +#define APP_USBD_STRING_ID_SERIAL 3 +#endif +// APP_USBD_STRING_SERIAL_EXTERN - Define whether @ref APP_USBD_STRING_SERIAL is created by macro or declared as a global variable. + + +#ifndef APP_USBD_STRING_SERIAL_EXTERN +#define APP_USBD_STRING_SERIAL_EXTERN 1 +#endif + +// APP_USBD_STRING_SERIAL - String descriptor for the serial number. + +// Note: This value is not editable in Configuration Wizard. +// Serial number that is defined the same way like in @ref APP_USBD_STRINGS_MANUFACTURER. +#ifndef APP_USBD_STRING_SERIAL +#define APP_USBD_STRING_SERIAL g_extern_serial_number +#endif + +// + +// APP_USBD_STRING_ID_CONFIGURATION - Define configuration string ID. + +// Setting ID to 0 disables the string. +//========================================================== +#ifndef APP_USBD_STRING_ID_CONFIGURATION +#define APP_USBD_STRING_ID_CONFIGURATION 4 +#endif +// APP_USBD_STRING_CONFIGURATION_EXTERN - Define whether @ref APP_USBD_STRINGS_CONFIGURATION is created by macro or declared as global variable. + + +#ifndef APP_USBD_STRING_CONFIGURATION_EXTERN +#define APP_USBD_STRING_CONFIGURATION_EXTERN 0 +#endif + +// APP_USBD_STRINGS_CONFIGURATION - String descriptor for the device configuration. + +// Note: This value is not editable in Configuration Wizard. +// Configuration string that is defined the same way like in @ref APP_USBD_STRINGS_MANUFACTURER. +#ifndef APP_USBD_STRINGS_CONFIGURATION +#define APP_USBD_STRINGS_CONFIGURATION APP_USBD_STRING_DESC("Default configuration") +#endif + +// + +// APP_USBD_STRINGS_USER - Default values for user strings. + +// Note: This value is not editable in Configuration Wizard. +// This value stores all application specific user strings with the default initialization. +// The setup is done by X-macros. +// Expected macro parameters: +// @code +// X(mnemonic, [=str_idx], ...) +// @endcode +// - @c mnemonic: Mnemonic of the string descriptor that would be added to +// @ref app_usbd_string_desc_idx_t enumerator. +// - @c str_idx : String index value, can be set or left empty. +// For example, WinUSB driver requires descriptor to be present on 0xEE index. +// Then use X(USBD_STRING_WINUSB, =0xEE, (APP_USBD_STRING_DESC(...))) +// - @c ... : List of string descriptors for each defined language. +#ifndef APP_USBD_STRINGS_USER +#define APP_USBD_STRINGS_USER X(APP_USER_1, , APP_USBD_STRING_DESC("User 1")) +#endif + +// + +// APP_USBD_NRF_DFU_TRIGGER_ENABLED - app_usbd_nrf_dfu_trigger - USBD Nordic DFU Trigger class + + +#ifndef APP_USBD_NRF_DFU_TRIGGER_ENABLED +#define APP_USBD_NRF_DFU_TRIGGER_ENABLED 1 +#endif + +// CRC16_ENABLED - crc16 - CRC16 calculation routines + + +#ifndef CRC16_ENABLED +#define CRC16_ENABLED 1 +#endif + +// NRF_BALLOC_ENABLED - nrf_balloc - Block allocator module +//========================================================== +#ifndef NRF_BALLOC_ENABLED +#define NRF_BALLOC_ENABLED 1 +#endif +// NRF_BALLOC_CONFIG_DEBUG_ENABLED - Enables debug mode in the module. +//========================================================== +#ifndef NRF_BALLOC_CONFIG_DEBUG_ENABLED +#define NRF_BALLOC_CONFIG_DEBUG_ENABLED 0 +#endif +// NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS - Number of words used as head guard. <0-255> + + +#ifndef NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS +#define NRF_BALLOC_CONFIG_HEAD_GUARD_WORDS 1 +#endif + +// NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS - Number of words used as tail guard. <0-255> + + +#ifndef NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS +#define NRF_BALLOC_CONFIG_TAIL_GUARD_WORDS 1 +#endif + +// NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED - Enables basic checks in this module. + + +#ifndef NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED +#define NRF_BALLOC_CONFIG_BASIC_CHECKS_ENABLED 0 +#endif + +// NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED - Enables double memory free check in this module. + + +#ifndef NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED +#define NRF_BALLOC_CONFIG_DOUBLE_FREE_CHECK_ENABLED 0 +#endif + +// NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED - Enables free memory corruption check in this module. + + +#ifndef NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED +#define NRF_BALLOC_CONFIG_DATA_TRASHING_CHECK_ENABLED 0 +#endif + +// NRF_BALLOC_CLI_CMDS - Enable CLI commands specific to the module + + +#ifndef NRF_BALLOC_CLI_CMDS +#define NRF_BALLOC_CLI_CMDS 0 +#endif + +// + +// + +// NRF_MEMOBJ_ENABLED - nrf_memobj - Linked memory allocator module + + +#ifndef NRF_MEMOBJ_ENABLED +#define NRF_MEMOBJ_ENABLED 1 +#endif + +// NRF_QUEUE_ENABLED - nrf_queue - Queue module +//========================================================== +#ifndef NRF_QUEUE_ENABLED +#define NRF_QUEUE_ENABLED 1 +#endif +// NRF_QUEUE_CLI_CMDS - Enable CLI commands specific to the module + + +#ifndef NRF_QUEUE_CLI_CMDS +#define NRF_QUEUE_CLI_CMDS 0 +#endif + +// + +// NRF_SECTION_ITER_ENABLED - nrf_section_iter - Section iterator + + +#ifndef NRF_SECTION_ITER_ENABLED +#define NRF_SECTION_ITER_ENABLED 1 +#endif + +// NRF_SORTLIST_ENABLED - nrf_sortlist - Sorted list + + +#ifndef NRF_SORTLIST_ENABLED +#define NRF_SORTLIST_ENABLED 1 +#endif + +// NRF_STRERROR_ENABLED - nrf_strerror - Library for converting error code to string. + + +#ifndef NRF_STRERROR_ENABLED +#define NRF_STRERROR_ENABLED 1 +#endif + +// app_usbd_cdc_acm - USB CDC ACM class + +//========================================================== +// APP_USBD_CDC_ACM_ENABLED - Enabling USBD CDC ACM Class library + + +#ifndef APP_USBD_CDC_ACM_ENABLED +#define APP_USBD_CDC_ACM_ENABLED 1 +#endif + +// APP_USBD_CDC_ACM_ZLP_ON_EPSIZE_WRITE - Send ZLP on write with same size as endpoint + + +// If enabled, CDC ACM class will automatically send a zero length packet after transfer which has the same size as endpoint. +// This may limit throughput if a lot of binary data is sent, but in terminal mode operation it makes sure that the data is always displayed right after it is sent. + +#ifndef APP_USBD_CDC_ACM_ZLP_ON_EPSIZE_WRITE +#define APP_USBD_CDC_ACM_ZLP_ON_EPSIZE_WRITE 1 +#endif + +// +//========================================================== + +// nrf_fprintf - fprintf function. + +//========================================================== +// NRF_FPRINTF_ENABLED - Enable/disable fprintf module. + + +#ifndef NRF_FPRINTF_ENABLED +#define NRF_FPRINTF_ENABLED 1 +#endif + +// NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED - For each printed LF, function will add CR. + + +#ifndef NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED +#define NRF_FPRINTF_FLAG_AUTOMATIC_CR_ON_LF_ENABLED 1 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_Log + +//========================================================== +// NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend +//========================================================== +#ifndef NRF_LOG_BACKEND_RTT_ENABLED +#define NRF_LOG_BACKEND_RTT_ENABLED 0 +#endif +// NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. +// Size of the buffer is a trade-off between RAM usage and processing. +// if buffer is smaller then strings will often be fragmented. +// It is recommended to use size which will fit typical log and only the +// longer one will be fragmented. + +#ifndef NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE +#define NRF_LOG_BACKEND_RTT_TEMP_BUFFER_SIZE 64 +#endif + +// NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS - Period before retrying writing to RTT +#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS +#define NRF_LOG_BACKEND_RTT_TX_RETRY_DELAY_MS 1 +#endif + +// NRF_LOG_BACKEND_RTT_TX_RETRY_CNT - Writing to RTT retries. +// If RTT fails to accept any new data after retries +// module assumes that host is not active and on next +// request it will perform only one write attempt. +// On successful writing, module assumes that host is active +// and scheme with retry is applied again. + +#ifndef NRF_LOG_BACKEND_RTT_TX_RETRY_CNT +#define NRF_LOG_BACKEND_RTT_TX_RETRY_CNT 3 +#endif + +// + +// NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend +//========================================================== +#ifndef NRF_LOG_BACKEND_UART_ENABLED +#define NRF_LOG_BACKEND_UART_ENABLED 0 +#endif +// NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin +#ifndef NRF_LOG_BACKEND_UART_TX_PIN +#define NRF_LOG_BACKEND_UART_TX_PIN 31 +#endif + +// NRF_LOG_BACKEND_UART_BAUDRATE - Default Baudrate + +// <323584=> 1200 baud +// <643072=> 2400 baud +// <1290240=> 4800 baud +// <2576384=> 9600 baud +// <3862528=> 14400 baud +// <5152768=> 19200 baud +// <7716864=> 28800 baud +// <10289152=> 38400 baud +// <15400960=> 57600 baud +// <20615168=> 76800 baud +// <30801920=> 115200 baud +// <61865984=> 230400 baud +// <67108864=> 250000 baud +// <121634816=> 460800 baud +// <251658240=> 921600 baud +// <268435456=> 1000000 baud + +#ifndef NRF_LOG_BACKEND_UART_BAUDRATE +#define NRF_LOG_BACKEND_UART_BAUDRATE 30801920 +#endif + +// NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. +// Size of the buffer is a trade-off between RAM usage and processing. +// if buffer is smaller then strings will often be fragmented. +// It is recommended to use size which will fit typical log and only the +// longer one will be fragmented. + +#ifndef NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE +#define NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE 64 +#endif + +// + +// NRF_LOG_ENABLED - nrf_log - Logger +//========================================================== +#ifndef NRF_LOG_ENABLED +#define NRF_LOG_ENABLED 0 +#endif +// Log message pool - Configuration of log message pool + +//========================================================== +// NRF_LOG_MSGPOOL_ELEMENT_SIZE - Size of a single element in the pool of memory objects. +// If a small value is set, then performance of logs processing +// is degraded because data is fragmented. Bigger value impacts +// RAM memory utilization. The size is set to fit a message with +// a timestamp and up to 2 arguments in a single memory object. + +#ifndef NRF_LOG_MSGPOOL_ELEMENT_SIZE +#define NRF_LOG_MSGPOOL_ELEMENT_SIZE 20 +#endif + +// NRF_LOG_MSGPOOL_ELEMENT_COUNT - Number of elements in the pool of memory objects +// If a small value is set, then it may lead to a deadlock +// in certain cases if backend has high latency and holds +// multiple messages for long time. Bigger value impacts +// RAM memory usage. + +#ifndef NRF_LOG_MSGPOOL_ELEMENT_COUNT +#define NRF_LOG_MSGPOOL_ELEMENT_COUNT 8 +#endif + +// +//========================================================== + +// NRF_LOG_ALLOW_OVERFLOW - Configures behavior when circular buffer is full. + + +// If set then oldest logs are overwritten. Otherwise a +// marker is injected informing about overflow. + +#ifndef NRF_LOG_ALLOW_OVERFLOW +#define NRF_LOG_ALLOW_OVERFLOW 1 +#endif + +// NRF_LOG_BUFSIZE - Size of the buffer for storing logs (in bytes). + + +// Must be power of 2 and multiple of 4. +// If NRF_LOG_DEFERRED = 0 then buffer size can be reduced to minimum. +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 +// <2048=> 2048 +// <4096=> 4096 +// <8192=> 8192 +// <16384=> 16384 + +#ifndef NRF_LOG_BUFSIZE +#define NRF_LOG_BUFSIZE 1024 +#endif + +// NRF_LOG_CLI_CMDS - Enable CLI commands for the module. + + +#ifndef NRF_LOG_CLI_CMDS +#define NRF_LOG_CLI_CMDS 0 +#endif + +// NRF_LOG_DEFAULT_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_LOG_DEFAULT_LEVEL +#define NRF_LOG_DEFAULT_LEVEL 3 +#endif + +// NRF_LOG_DEFERRED - Enable deffered logger. + + +// Log data is buffered and can be processed in idle. + +#ifndef NRF_LOG_DEFERRED +#define NRF_LOG_DEFERRED 1 +#endif + +// NRF_LOG_FILTERS_ENABLED - Enable dynamic filtering of logs. + + +#ifndef NRF_LOG_FILTERS_ENABLED +#define NRF_LOG_FILTERS_ENABLED 0 +#endif + +// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. + +// <16=> 16 +// <32=> 32 +// <64=> 64 +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 + +#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE +#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 +#endif + +// NRF_LOG_STR_PUSH_BUFFER_SIZE - Size of the buffer dedicated for strings stored using @ref NRF_LOG_PUSH. + +// <16=> 16 +// <32=> 32 +// <64=> 64 +// <128=> 128 +// <256=> 256 +// <512=> 512 +// <1024=> 1024 + +#ifndef NRF_LOG_STR_PUSH_BUFFER_SIZE +#define NRF_LOG_STR_PUSH_BUFFER_SIZE 128 +#endif + +// NRF_LOG_USES_COLORS - If enabled then ANSI escape code for colors is prefixed to every string +//========================================================== +#ifndef NRF_LOG_USES_COLORS +#define NRF_LOG_USES_COLORS 0 +#endif +// NRF_LOG_COLOR_DEFAULT - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_COLOR_DEFAULT +#define NRF_LOG_COLOR_DEFAULT 0 +#endif + +// NRF_LOG_ERROR_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_ERROR_COLOR +#define NRF_LOG_ERROR_COLOR 2 +#endif + +// NRF_LOG_WARNING_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LOG_WARNING_COLOR +#define NRF_LOG_WARNING_COLOR 4 +#endif + +// + +// NRF_LOG_USES_TIMESTAMP - Enable timestamping + +// Function for getting the timestamp is provided by the user +//========================================================== +#ifndef NRF_LOG_USES_TIMESTAMP +#define NRF_LOG_USES_TIMESTAMP 0 +#endif +// NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY - Default frequency of the timestamp (in Hz) or 0 to use app_timer frequency. +#ifndef NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY +#define NRF_LOG_TIMESTAMP_DEFAULT_FREQUENCY 0 +#endif + +// + +// nrf_log module configuration + +//========================================================== +// nrf_log in nRF_Core + +//========================================================== +// NRF_MPU_LIB_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_MPU_LIB_CONFIG_LOG_ENABLED +#define NRF_MPU_LIB_CONFIG_LOG_ENABLED 0 +#endif +// NRF_MPU_LIB_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_MPU_LIB_CONFIG_LOG_LEVEL +#define NRF_MPU_LIB_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_MPU_LIB_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MPU_LIB_CONFIG_INFO_COLOR +#define NRF_MPU_LIB_CONFIG_INFO_COLOR 0 +#endif + +// NRF_MPU_LIB_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MPU_LIB_CONFIG_DEBUG_COLOR +#define NRF_MPU_LIB_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_STACK_GUARD_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_STACK_GUARD_CONFIG_LOG_ENABLED +#define NRF_STACK_GUARD_CONFIG_LOG_ENABLED 0 +#endif +// NRF_STACK_GUARD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_STACK_GUARD_CONFIG_LOG_LEVEL +#define NRF_STACK_GUARD_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_STACK_GUARD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_STACK_GUARD_CONFIG_INFO_COLOR +#define NRF_STACK_GUARD_CONFIG_INFO_COLOR 0 +#endif + +// NRF_STACK_GUARD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_STACK_GUARD_CONFIG_DEBUG_COLOR +#define NRF_STACK_GUARD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TASK_MANAGER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TASK_MANAGER_CONFIG_LOG_ENABLED +#define TASK_MANAGER_CONFIG_LOG_ENABLED 0 +#endif +// TASK_MANAGER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TASK_MANAGER_CONFIG_LOG_LEVEL +#define TASK_MANAGER_CONFIG_LOG_LEVEL 3 +#endif + +// TASK_MANAGER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TASK_MANAGER_CONFIG_INFO_COLOR +#define TASK_MANAGER_CONFIG_INFO_COLOR 0 +#endif + +// TASK_MANAGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TASK_MANAGER_CONFIG_DEBUG_COLOR +#define TASK_MANAGER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Drivers + +//========================================================== +// CLOCK_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef CLOCK_CONFIG_LOG_ENABLED +#define CLOCK_CONFIG_LOG_ENABLED 0 +#endif +// CLOCK_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef CLOCK_CONFIG_LOG_LEVEL +#define CLOCK_CONFIG_LOG_LEVEL 3 +#endif + +// CLOCK_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef CLOCK_CONFIG_INFO_COLOR +#define CLOCK_CONFIG_INFO_COLOR 0 +#endif + +// CLOCK_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef CLOCK_CONFIG_DEBUG_COLOR +#define CLOCK_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// COMP_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef COMP_CONFIG_LOG_ENABLED +#define COMP_CONFIG_LOG_ENABLED 0 +#endif +// COMP_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef COMP_CONFIG_LOG_LEVEL +#define COMP_CONFIG_LOG_LEVEL 3 +#endif + +// COMP_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef COMP_CONFIG_INFO_COLOR +#define COMP_CONFIG_INFO_COLOR 0 +#endif + +// COMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef COMP_CONFIG_DEBUG_COLOR +#define COMP_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// GPIOTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef GPIOTE_CONFIG_LOG_ENABLED +#define GPIOTE_CONFIG_LOG_ENABLED 0 +#endif +// GPIOTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef GPIOTE_CONFIG_LOG_LEVEL +#define GPIOTE_CONFIG_LOG_LEVEL 3 +#endif + +// GPIOTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef GPIOTE_CONFIG_INFO_COLOR +#define GPIOTE_CONFIG_INFO_COLOR 0 +#endif + +// GPIOTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef GPIOTE_CONFIG_DEBUG_COLOR +#define GPIOTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// LPCOMP_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef LPCOMP_CONFIG_LOG_ENABLED +#define LPCOMP_CONFIG_LOG_ENABLED 0 +#endif +// LPCOMP_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef LPCOMP_CONFIG_LOG_LEVEL +#define LPCOMP_CONFIG_LOG_LEVEL 3 +#endif + +// LPCOMP_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef LPCOMP_CONFIG_INFO_COLOR +#define LPCOMP_CONFIG_INFO_COLOR 0 +#endif + +// LPCOMP_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef LPCOMP_CONFIG_DEBUG_COLOR +#define LPCOMP_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// MAX3421E_HOST_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef MAX3421E_HOST_CONFIG_LOG_ENABLED +#define MAX3421E_HOST_CONFIG_LOG_ENABLED 0 +#endif +// MAX3421E_HOST_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef MAX3421E_HOST_CONFIG_LOG_LEVEL +#define MAX3421E_HOST_CONFIG_LOG_LEVEL 3 +#endif + +// MAX3421E_HOST_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef MAX3421E_HOST_CONFIG_INFO_COLOR +#define MAX3421E_HOST_CONFIG_INFO_COLOR 0 +#endif + +// MAX3421E_HOST_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef MAX3421E_HOST_CONFIG_DEBUG_COLOR +#define MAX3421E_HOST_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRFX_USBD_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef NRFX_USBD_CONFIG_LOG_ENABLED +#define NRFX_USBD_CONFIG_LOG_ENABLED 0 +#endif +// NRFX_USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRFX_USBD_CONFIG_LOG_LEVEL +#define NRFX_USBD_CONFIG_LOG_LEVEL 3 +#endif + +// NRFX_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_USBD_CONFIG_INFO_COLOR +#define NRFX_USBD_CONFIG_INFO_COLOR 0 +#endif + +// NRFX_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRFX_USBD_CONFIG_DEBUG_COLOR +#define NRFX_USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PDM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PDM_CONFIG_LOG_ENABLED +#define PDM_CONFIG_LOG_ENABLED 0 +#endif +// PDM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PDM_CONFIG_LOG_LEVEL +#define PDM_CONFIG_LOG_LEVEL 3 +#endif + +// PDM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PDM_CONFIG_INFO_COLOR +#define PDM_CONFIG_INFO_COLOR 0 +#endif + +// PDM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PDM_CONFIG_DEBUG_COLOR +#define PDM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PPI_CONFIG_LOG_ENABLED +#define PPI_CONFIG_LOG_ENABLED 0 +#endif +// PPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PPI_CONFIG_LOG_LEVEL +#define PPI_CONFIG_LOG_LEVEL 3 +#endif + +// PPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PPI_CONFIG_INFO_COLOR +#define PPI_CONFIG_INFO_COLOR 0 +#endif + +// PPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PPI_CONFIG_DEBUG_COLOR +#define PPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PWM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef PWM_CONFIG_LOG_ENABLED +#define PWM_CONFIG_LOG_ENABLED 0 +#endif +// PWM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PWM_CONFIG_LOG_LEVEL +#define PWM_CONFIG_LOG_LEVEL 3 +#endif + +// PWM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PWM_CONFIG_INFO_COLOR +#define PWM_CONFIG_INFO_COLOR 0 +#endif + +// PWM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PWM_CONFIG_DEBUG_COLOR +#define PWM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// QDEC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef QDEC_CONFIG_LOG_ENABLED +#define QDEC_CONFIG_LOG_ENABLED 0 +#endif +// QDEC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef QDEC_CONFIG_LOG_LEVEL +#define QDEC_CONFIG_LOG_LEVEL 3 +#endif + +// QDEC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef QDEC_CONFIG_INFO_COLOR +#define QDEC_CONFIG_INFO_COLOR 0 +#endif + +// QDEC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef QDEC_CONFIG_DEBUG_COLOR +#define QDEC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// RNG_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef RNG_CONFIG_LOG_ENABLED +#define RNG_CONFIG_LOG_ENABLED 0 +#endif +// RNG_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef RNG_CONFIG_LOG_LEVEL +#define RNG_CONFIG_LOG_LEVEL 3 +#endif + +// RNG_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RNG_CONFIG_INFO_COLOR +#define RNG_CONFIG_INFO_COLOR 0 +#endif + +// RNG_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RNG_CONFIG_DEBUG_COLOR +#define RNG_CONFIG_DEBUG_COLOR 0 +#endif + +// RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED - Enables logging of random numbers. + + +#ifndef RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED +#define RNG_CONFIG_RANDOM_NUMBER_LOG_ENABLED 0 +#endif + +// + +// RTC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef RTC_CONFIG_LOG_ENABLED +#define RTC_CONFIG_LOG_ENABLED 0 +#endif +// RTC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef RTC_CONFIG_LOG_LEVEL +#define RTC_CONFIG_LOG_LEVEL 3 +#endif + +// RTC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RTC_CONFIG_INFO_COLOR +#define RTC_CONFIG_INFO_COLOR 0 +#endif + +// RTC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef RTC_CONFIG_DEBUG_COLOR +#define RTC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SAADC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SAADC_CONFIG_LOG_ENABLED +#define SAADC_CONFIG_LOG_ENABLED 0 +#endif +// SAADC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SAADC_CONFIG_LOG_LEVEL +#define SAADC_CONFIG_LOG_LEVEL 3 +#endif + +// SAADC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SAADC_CONFIG_INFO_COLOR +#define SAADC_CONFIG_INFO_COLOR 0 +#endif + +// SAADC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SAADC_CONFIG_DEBUG_COLOR +#define SAADC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SPIS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SPIS_CONFIG_LOG_ENABLED +#define SPIS_CONFIG_LOG_ENABLED 0 +#endif +// SPIS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SPIS_CONFIG_LOG_LEVEL +#define SPIS_CONFIG_LOG_LEVEL 3 +#endif + +// SPIS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPIS_CONFIG_INFO_COLOR +#define SPIS_CONFIG_INFO_COLOR 0 +#endif + +// SPIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPIS_CONFIG_DEBUG_COLOR +#define SPIS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// SPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SPI_CONFIG_LOG_ENABLED +#define SPI_CONFIG_LOG_ENABLED 0 +#endif +// SPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SPI_CONFIG_LOG_LEVEL +#define SPI_CONFIG_LOG_LEVEL 3 +#endif + +// SPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPI_CONFIG_INFO_COLOR +#define SPI_CONFIG_INFO_COLOR 0 +#endif + +// SPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SPI_CONFIG_DEBUG_COLOR +#define SPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TIMER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TIMER_CONFIG_LOG_ENABLED +#define TIMER_CONFIG_LOG_ENABLED 0 +#endif +// TIMER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TIMER_CONFIG_LOG_LEVEL +#define TIMER_CONFIG_LOG_LEVEL 3 +#endif + +// TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TIMER_CONFIG_INFO_COLOR +#define TIMER_CONFIG_INFO_COLOR 0 +#endif + +// TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TIMER_CONFIG_DEBUG_COLOR +#define TIMER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TWIS_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TWIS_CONFIG_LOG_ENABLED +#define TWIS_CONFIG_LOG_ENABLED 0 +#endif +// TWIS_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TWIS_CONFIG_LOG_LEVEL +#define TWIS_CONFIG_LOG_LEVEL 3 +#endif + +// TWIS_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWIS_CONFIG_INFO_COLOR +#define TWIS_CONFIG_INFO_COLOR 0 +#endif + +// TWIS_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWIS_CONFIG_DEBUG_COLOR +#define TWIS_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// TWI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef TWI_CONFIG_LOG_ENABLED +#define TWI_CONFIG_LOG_ENABLED 0 +#endif +// TWI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef TWI_CONFIG_LOG_LEVEL +#define TWI_CONFIG_LOG_LEVEL 3 +#endif + +// TWI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWI_CONFIG_INFO_COLOR +#define TWI_CONFIG_INFO_COLOR 0 +#endif + +// TWI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef TWI_CONFIG_DEBUG_COLOR +#define TWI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef UART_CONFIG_LOG_ENABLED +#define UART_CONFIG_LOG_ENABLED 0 +#endif +// UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef UART_CONFIG_LOG_LEVEL +#define UART_CONFIG_LOG_LEVEL 3 +#endif + +// UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef UART_CONFIG_INFO_COLOR +#define UART_CONFIG_INFO_COLOR 0 +#endif + +// UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef UART_CONFIG_DEBUG_COLOR +#define UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// USBD_CONFIG_LOG_ENABLED - Enable logging in the module +//========================================================== +#ifndef USBD_CONFIG_LOG_ENABLED +#define USBD_CONFIG_LOG_ENABLED 0 +#endif +// USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef USBD_CONFIG_LOG_LEVEL +#define USBD_CONFIG_LOG_LEVEL 3 +#endif + +// USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef USBD_CONFIG_INFO_COLOR +#define USBD_CONFIG_INFO_COLOR 0 +#endif + +// USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef USBD_CONFIG_DEBUG_COLOR +#define USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// WDT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef WDT_CONFIG_LOG_ENABLED +#define WDT_CONFIG_LOG_ENABLED 0 +#endif +// WDT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef WDT_CONFIG_LOG_LEVEL +#define WDT_CONFIG_LOG_LEVEL 3 +#endif + +// WDT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef WDT_CONFIG_INFO_COLOR +#define WDT_CONFIG_INFO_COLOR 0 +#endif + +// WDT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef WDT_CONFIG_DEBUG_COLOR +#define WDT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Libraries + +//========================================================== +// APP_TIMER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_TIMER_CONFIG_LOG_ENABLED +#define APP_TIMER_CONFIG_LOG_ENABLED 0 +#endif +// APP_TIMER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_TIMER_CONFIG_LOG_LEVEL +#define APP_TIMER_CONFIG_LOG_LEVEL 3 +#endif + +// APP_TIMER_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled. + + +// If module generates a lot of logs, initial log level can +// be decreased to prevent flooding. Severity level can be +// increased on instance basis. +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_TIMER_CONFIG_INITIAL_LOG_LEVEL +#define APP_TIMER_CONFIG_INITIAL_LOG_LEVEL 3 +#endif + +// APP_TIMER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_TIMER_CONFIG_INFO_COLOR +#define APP_TIMER_CONFIG_INFO_COLOR 0 +#endif + +// APP_TIMER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_TIMER_CONFIG_DEBUG_COLOR +#define APP_TIMER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED +#define APP_USBD_CDC_ACM_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL +#define APP_USBD_CDC_ACM_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_CDC_ACM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CDC_ACM_CONFIG_INFO_COLOR +#define APP_USBD_CDC_ACM_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR +#define APP_USBD_CDC_ACM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_CONFIG_LOG_ENABLED - Enable logging in the module. +//========================================================== +#ifndef APP_USBD_CONFIG_LOG_ENABLED +#define APP_USBD_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_CONFIG_LOG_LEVEL +#define APP_USBD_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CONFIG_INFO_COLOR +#define APP_USBD_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_CONFIG_DEBUG_COLOR +#define APP_USBD_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_DUMMY_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_DUMMY_CONFIG_LOG_ENABLED +#define APP_USBD_DUMMY_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_DUMMY_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_DUMMY_CONFIG_LOG_LEVEL +#define APP_USBD_DUMMY_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_DUMMY_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_DUMMY_CONFIG_INFO_COLOR +#define APP_USBD_DUMMY_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_DUMMY_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_DUMMY_CONFIG_DEBUG_COLOR +#define APP_USBD_DUMMY_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_MSC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_MSC_CONFIG_LOG_ENABLED +#define APP_USBD_MSC_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_MSC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_MSC_CONFIG_LOG_LEVEL +#define APP_USBD_MSC_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_MSC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_MSC_CONFIG_INFO_COLOR +#define APP_USBD_MSC_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_MSC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_MSC_CONFIG_DEBUG_COLOR +#define APP_USBD_MSC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_ENABLED 0 +#endif +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_LOG_LEVEL 3 +#endif + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_INFO_COLOR 0 +#endif + +// APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR +#define APP_USBD_NRF_DFU_TRIGGER_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_ATFIFO_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_ATFIFO_CONFIG_LOG_ENABLED +#define NRF_ATFIFO_CONFIG_LOG_ENABLED 0 +#endif +// NRF_ATFIFO_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_ATFIFO_CONFIG_LOG_LEVEL +#define NRF_ATFIFO_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_ATFIFO_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_ATFIFO_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_ATFIFO_CONFIG_INFO_COLOR +#define NRF_ATFIFO_CONFIG_INFO_COLOR 0 +#endif + +// NRF_ATFIFO_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_ATFIFO_CONFIG_DEBUG_COLOR +#define NRF_ATFIFO_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BALLOC_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BALLOC_CONFIG_LOG_ENABLED +#define NRF_BALLOC_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BALLOC_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BALLOC_CONFIG_LOG_LEVEL +#define NRF_BALLOC_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL - Initial severity level if dynamic filtering is enabled. + + +// If module generates a lot of logs, initial log level can +// be decreased to prevent flooding. Severity level can be +// increased on instance basis. +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL +#define NRF_BALLOC_CONFIG_INITIAL_LOG_LEVEL 3 +#endif + +// NRF_BALLOC_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BALLOC_CONFIG_INFO_COLOR +#define NRF_BALLOC_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BALLOC_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BALLOC_CONFIG_DEBUG_COLOR +#define NRF_BALLOC_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_EMPTY_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_EMPTY_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_EMPTY_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_QSPI_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_QSPI_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_QSPI_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_ENABLED 0 +#endif +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_BLOCK_DEV_RAM_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR +#define NRF_BLOCK_DEV_RAM_CONFIG_INFO_COLOR 0 +#endif + +// NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR +#define NRF_BLOCK_DEV_RAM_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED +#define NRF_CLI_BLE_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL +#define NRF_CLI_BLE_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_BLE_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_BLE_UART_CONFIG_INFO_COLOR +#define NRF_CLI_BLE_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR +#define NRF_CLI_BLE_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED +#define NRF_CLI_LIBUARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL +#define NRF_CLI_LIBUARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR +#define NRF_CLI_LIBUARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR +#define NRF_CLI_LIBUARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_CLI_UART_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_CLI_UART_CONFIG_LOG_ENABLED +#define NRF_CLI_UART_CONFIG_LOG_ENABLED 0 +#endif +// NRF_CLI_UART_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_CLI_UART_CONFIG_LOG_LEVEL +#define NRF_CLI_UART_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_CLI_UART_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_UART_CONFIG_INFO_COLOR +#define NRF_CLI_UART_CONFIG_INFO_COLOR 0 +#endif + +// NRF_CLI_UART_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_CLI_UART_CONFIG_DEBUG_COLOR +#define NRF_CLI_UART_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_LIBUARTE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_LIBUARTE_CONFIG_LOG_ENABLED +#define NRF_LIBUARTE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_LIBUARTE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_LIBUARTE_CONFIG_LOG_LEVEL +#define NRF_LIBUARTE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_LIBUARTE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LIBUARTE_CONFIG_INFO_COLOR +#define NRF_LIBUARTE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_LIBUARTE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_LIBUARTE_CONFIG_DEBUG_COLOR +#define NRF_LIBUARTE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_MEMOBJ_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_MEMOBJ_CONFIG_LOG_ENABLED +#define NRF_MEMOBJ_CONFIG_LOG_ENABLED 0 +#endif +// NRF_MEMOBJ_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_MEMOBJ_CONFIG_LOG_LEVEL +#define NRF_MEMOBJ_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_MEMOBJ_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MEMOBJ_CONFIG_INFO_COLOR +#define NRF_MEMOBJ_CONFIG_INFO_COLOR 0 +#endif + +// NRF_MEMOBJ_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_MEMOBJ_CONFIG_DEBUG_COLOR +#define NRF_MEMOBJ_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_PWR_MGMT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_PWR_MGMT_CONFIG_LOG_ENABLED +#define NRF_PWR_MGMT_CONFIG_LOG_ENABLED 0 +#endif +// NRF_PWR_MGMT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_PWR_MGMT_CONFIG_LOG_LEVEL +#define NRF_PWR_MGMT_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_PWR_MGMT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_PWR_MGMT_CONFIG_INFO_COLOR +#define NRF_PWR_MGMT_CONFIG_INFO_COLOR 0 +#endif + +// NRF_PWR_MGMT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_PWR_MGMT_CONFIG_DEBUG_COLOR +#define NRF_PWR_MGMT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_QUEUE_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_QUEUE_CONFIG_LOG_ENABLED +#define NRF_QUEUE_CONFIG_LOG_ENABLED 0 +#endif +// NRF_QUEUE_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_QUEUE_CONFIG_LOG_LEVEL +#define NRF_QUEUE_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL - Initial severity level if dynamic filtering is enabled + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL +#define NRF_QUEUE_CONFIG_LOG_INIT_FILTER_LEVEL 3 +#endif + +// NRF_QUEUE_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_QUEUE_CONFIG_INFO_COLOR +#define NRF_QUEUE_CONFIG_INFO_COLOR 0 +#endif + +// NRF_QUEUE_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_QUEUE_CONFIG_DEBUG_COLOR +#define NRF_QUEUE_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_ANT_LOG_ENABLED - Enable logging in SoftDevice handler (ANT) module. +//========================================================== +#ifndef NRF_SDH_ANT_LOG_ENABLED +#define NRF_SDH_ANT_LOG_ENABLED 0 +#endif +// NRF_SDH_ANT_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_ANT_LOG_LEVEL +#define NRF_SDH_ANT_LOG_LEVEL 3 +#endif + +// NRF_SDH_ANT_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_ANT_INFO_COLOR +#define NRF_SDH_ANT_INFO_COLOR 0 +#endif + +// NRF_SDH_ANT_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_ANT_DEBUG_COLOR +#define NRF_SDH_ANT_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_BLE_LOG_ENABLED - Enable logging in SoftDevice handler (BLE) module. +//========================================================== +#ifndef NRF_SDH_BLE_LOG_ENABLED +#define NRF_SDH_BLE_LOG_ENABLED 1 +#endif +// NRF_SDH_BLE_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_BLE_LOG_LEVEL +#define NRF_SDH_BLE_LOG_LEVEL 3 +#endif + +// NRF_SDH_BLE_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_BLE_INFO_COLOR +#define NRF_SDH_BLE_INFO_COLOR 0 +#endif + +// NRF_SDH_BLE_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_BLE_DEBUG_COLOR +#define NRF_SDH_BLE_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_LOG_ENABLED - Enable logging in SoftDevice handler module. +//========================================================== +#ifndef NRF_SDH_LOG_ENABLED +#define NRF_SDH_LOG_ENABLED 1 +#endif +// NRF_SDH_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_LOG_LEVEL +#define NRF_SDH_LOG_LEVEL 3 +#endif + +// NRF_SDH_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_INFO_COLOR +#define NRF_SDH_INFO_COLOR 0 +#endif + +// NRF_SDH_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_DEBUG_COLOR +#define NRF_SDH_DEBUG_COLOR 0 +#endif + +// + +// NRF_SDH_SOC_LOG_ENABLED - Enable logging in SoftDevice handler (SoC) module. +//========================================================== +#ifndef NRF_SDH_SOC_LOG_ENABLED +#define NRF_SDH_SOC_LOG_ENABLED 1 +#endif +// NRF_SDH_SOC_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SDH_SOC_LOG_LEVEL +#define NRF_SDH_SOC_LOG_LEVEL 3 +#endif + +// NRF_SDH_SOC_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_SOC_INFO_COLOR +#define NRF_SDH_SOC_INFO_COLOR 0 +#endif + +// NRF_SDH_SOC_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SDH_SOC_DEBUG_COLOR +#define NRF_SDH_SOC_DEBUG_COLOR 0 +#endif + +// + +// NRF_SORTLIST_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_SORTLIST_CONFIG_LOG_ENABLED +#define NRF_SORTLIST_CONFIG_LOG_ENABLED 0 +#endif +// NRF_SORTLIST_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_SORTLIST_CONFIG_LOG_LEVEL +#define NRF_SORTLIST_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_SORTLIST_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SORTLIST_CONFIG_INFO_COLOR +#define NRF_SORTLIST_CONFIG_INFO_COLOR 0 +#endif + +// NRF_SORTLIST_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_SORTLIST_CONFIG_DEBUG_COLOR +#define NRF_SORTLIST_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// NRF_TWI_SENSOR_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef NRF_TWI_SENSOR_CONFIG_LOG_ENABLED +#define NRF_TWI_SENSOR_CONFIG_LOG_ENABLED 0 +#endif +// NRF_TWI_SENSOR_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef NRF_TWI_SENSOR_CONFIG_LOG_LEVEL +#define NRF_TWI_SENSOR_CONFIG_LOG_LEVEL 3 +#endif + +// NRF_TWI_SENSOR_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_TWI_SENSOR_CONFIG_INFO_COLOR +#define NRF_TWI_SENSOR_CONFIG_INFO_COLOR 0 +#endif + +// NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR +#define NRF_TWI_SENSOR_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// PM_LOG_ENABLED - Enable logging in Peer Manager and its submodules. +//========================================================== +#ifndef PM_LOG_ENABLED +#define PM_LOG_ENABLED 1 +#endif +// PM_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef PM_LOG_LEVEL +#define PM_LOG_LEVEL 3 +#endif + +// PM_LOG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PM_LOG_INFO_COLOR +#define PM_LOG_INFO_COLOR 0 +#endif + +// PM_LOG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef PM_LOG_DEBUG_COLOR +#define PM_LOG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// nrf_log in nRF_Serialization + +//========================================================== +// SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED - Enables logging in the module. +//========================================================== +#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED +#define SER_HAL_TRANSPORT_CONFIG_LOG_ENABLED 0 +#endif +// SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL - Default Severity level + +// <0=> Off +// <1=> Error +// <2=> Warning +// <3=> Info +// <4=> Debug + +#ifndef SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL +#define SER_HAL_TRANSPORT_CONFIG_LOG_LEVEL 3 +#endif + +// SER_HAL_TRANSPORT_CONFIG_INFO_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SER_HAL_TRANSPORT_CONFIG_INFO_COLOR +#define SER_HAL_TRANSPORT_CONFIG_INFO_COLOR 0 +#endif + +// SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR - ANSI escape code prefix. + +// <0=> Default +// <1=> Black +// <2=> Red +// <3=> Green +// <4=> Yellow +// <5=> Blue +// <6=> Magenta +// <7=> Cyan +// <8=> White + +#ifndef SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR +#define SER_HAL_TRANSPORT_CONFIG_DEBUG_COLOR 0 +#endif + +// + +// +//========================================================== + +// +//========================================================== + +// + +// NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED - nrf_log_str_formatter - Log string formatter + + +#ifndef NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED +#define NRF_LOG_STR_FORMATTER_TIMESTAMP_FORMAT_ENABLED 1 +#endif + +// +//========================================================== + +// nRF_Segger_RTT + +//========================================================== +// segger_rtt - SEGGER RTT + +//========================================================== +// SEGGER_RTT_CONFIG_BUFFER_SIZE_UP - Size of upstream buffer. +// Note that either @ref NRF_LOG_BACKEND_RTT_OUTPUT_BUFFER_SIZE +// or this value is actually used. It depends on which one is bigger. + +#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_UP +#define SEGGER_RTT_CONFIG_BUFFER_SIZE_UP 512 +#endif + +// SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS - Maximum number of upstream buffers. +#ifndef SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS +#define SEGGER_RTT_CONFIG_MAX_NUM_UP_BUFFERS 2 +#endif + +// SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN - Size of downstream buffer. +#ifndef SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN +#define SEGGER_RTT_CONFIG_BUFFER_SIZE_DOWN 16 +#endif + +// SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS - Maximum number of downstream buffers. +#ifndef SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS +#define SEGGER_RTT_CONFIG_MAX_NUM_DOWN_BUFFERS 2 +#endif + +// SEGGER_RTT_CONFIG_DEFAULT_MODE - RTT behavior if the buffer is full. + + +// The following modes are supported: +// - SKIP - Do not block, output nothing. +// - TRIM - Do not block, output as much as fits. +// - BLOCK - Wait until there is space in the buffer. +// <0=> SKIP +// <1=> TRIM +// <2=> BLOCK_IF_FIFO_FULL + +#ifndef SEGGER_RTT_CONFIG_DEFAULT_MODE +#define SEGGER_RTT_CONFIG_DEFAULT_MODE 0 +#endif + +// +//========================================================== + +// +//========================================================== + +// nRF_SoftDevice + +//========================================================== +// NRF_SDH_BLE_ENABLED - nrf_sdh_ble - SoftDevice BLE event handler +//========================================================== +#ifndef NRF_SDH_BLE_ENABLED +#define NRF_SDH_BLE_ENABLED 1 +#endif +// BLE Stack configuration - Stack configuration parameters + +// The SoftDevice handler will configure the stack with these parameters when calling @ref nrf_sdh_ble_default_cfg_set. +// Other libraries might depend on these values; keep them up-to-date even if you are not explicitely calling @ref nrf_sdh_ble_default_cfg_set. +//========================================================== +// NRF_SDH_BLE_GAP_DATA_LENGTH <27-251> + + +// Requested BLE GAP data length to be negotiated. + +#ifndef NRF_SDH_BLE_GAP_DATA_LENGTH +#define NRF_SDH_BLE_GAP_DATA_LENGTH 27 +#endif + +// NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. +#ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 +#endif + +// NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. +#ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 +#endif + +// NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. +// Maximum number of total concurrent connections using the default configuration. + +#ifndef NRF_SDH_BLE_TOTAL_LINK_COUNT +#define NRF_SDH_BLE_TOTAL_LINK_COUNT 1 +#endif + +// NRF_SDH_BLE_GAP_EVENT_LENGTH - GAP event length. +// The time set aside for this connection on every connection interval in 1.25 ms units. + +#ifndef NRF_SDH_BLE_GAP_EVENT_LENGTH +#define NRF_SDH_BLE_GAP_EVENT_LENGTH 6 +#endif + +// NRF_SDH_BLE_GATT_MAX_MTU_SIZE - Static maximum MTU size. +#ifndef NRF_SDH_BLE_GATT_MAX_MTU_SIZE +#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 250 +#endif + +// NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE - Attribute Table size in bytes. The size must be a multiple of 4. +#ifndef NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE +#define NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE 1408 +#endif + +// NRF_SDH_BLE_VS_UUID_COUNT - The number of vendor-specific UUIDs. +#ifndef NRF_SDH_BLE_VS_UUID_COUNT +#define NRF_SDH_BLE_VS_UUID_COUNT 0 +#endif + +// NRF_SDH_BLE_SERVICE_CHANGED - Include the Service Changed characteristic in the Attribute Table. + + +#ifndef NRF_SDH_BLE_SERVICE_CHANGED +#define NRF_SDH_BLE_SERVICE_CHANGED 0 +#endif + +// +//========================================================== + +// BLE Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_BLE_OBSERVER_PRIO_LEVELS - Total number of priority levels for BLE observers. +// This setting configures the number of priority levels available for BLE event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_BLE_OBSERVER_PRIO_LEVELS +#define NRF_SDH_BLE_OBSERVER_PRIO_LEVELS 4 +#endif + +// BLE Observers priorities - Invididual priorities + +//========================================================== +// BLE_ADV_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Advertising module. + +#ifndef BLE_ADV_BLE_OBSERVER_PRIO +#define BLE_ADV_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_ANCS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Apple Notification Service Client. + +#ifndef BLE_ANCS_C_BLE_OBSERVER_PRIO +#define BLE_ANCS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_ANS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Alert Notification Service Client. + +#ifndef BLE_ANS_C_BLE_OBSERVER_PRIO +#define BLE_ANS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BAS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Battery Service. + +#ifndef BLE_BAS_BLE_OBSERVER_PRIO +#define BLE_BAS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BAS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Battery Service Client. + +#ifndef BLE_BAS_C_BLE_OBSERVER_PRIO +#define BLE_BAS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_BPS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Blood Pressure Service. + +#ifndef BLE_BPS_BLE_OBSERVER_PRIO +#define BLE_BPS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_CONN_PARAMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Connection parameters module. + +#ifndef BLE_CONN_PARAMS_BLE_OBSERVER_PRIO +#define BLE_CONN_PARAMS_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_CONN_STATE_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Connection State module. + +#ifndef BLE_CONN_STATE_BLE_OBSERVER_PRIO +#define BLE_CONN_STATE_BLE_OBSERVER_PRIO 0 +#endif + +// BLE_CSCS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Cycling Speed and Cadence Service. + +#ifndef BLE_CSCS_BLE_OBSERVER_PRIO +#define BLE_CSCS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_CTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Current Time Service Client. + +#ifndef BLE_CTS_C_BLE_OBSERVER_PRIO +#define BLE_CTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_DB_DISC_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Database Discovery module. + +#ifndef BLE_DB_DISC_BLE_OBSERVER_PRIO +#define BLE_DB_DISC_BLE_OBSERVER_PRIO 1 +#endif + +// BLE_DFU_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the DFU Service. + +#ifndef BLE_DFU_BLE_OBSERVER_PRIO +#define BLE_DFU_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_DIS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Device Information Client. + +#ifndef BLE_DIS_C_BLE_OBSERVER_PRIO +#define BLE_DIS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_GLS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Glucose Service. + +#ifndef BLE_GLS_BLE_OBSERVER_PRIO +#define BLE_GLS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HIDS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Human Interface Device Service. + +#ifndef BLE_HIDS_BLE_OBSERVER_PRIO +#define BLE_HIDS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HRS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Heart Rate Service. + +#ifndef BLE_HRS_BLE_OBSERVER_PRIO +#define BLE_HRS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HRS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Heart Rate Service Client. + +#ifndef BLE_HRS_C_BLE_OBSERVER_PRIO +#define BLE_HRS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_HTS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Health Thermometer Service. + +#ifndef BLE_HTS_BLE_OBSERVER_PRIO +#define BLE_HTS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_IAS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Immediate Alert Service. + +#ifndef BLE_IAS_BLE_OBSERVER_PRIO +#define BLE_IAS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_IAS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Immediate Alert Service Client. + +#ifndef BLE_IAS_C_BLE_OBSERVER_PRIO +#define BLE_IAS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LBS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the LED Button Service. + +#ifndef BLE_LBS_BLE_OBSERVER_PRIO +#define BLE_LBS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LBS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the LED Button Service Client. + +#ifndef BLE_LBS_C_BLE_OBSERVER_PRIO +#define BLE_LBS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LLS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Link Loss Service. + +#ifndef BLE_LLS_BLE_OBSERVER_PRIO +#define BLE_LLS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_LNS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Location Navigation Service. + +#ifndef BLE_LNS_BLE_OBSERVER_PRIO +#define BLE_LNS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_NUS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the UART Service. + +#ifndef BLE_NUS_BLE_OBSERVER_PRIO +#define BLE_NUS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_NUS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the UART Central Service. + +#ifndef BLE_NUS_C_BLE_OBSERVER_PRIO +#define BLE_NUS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_OTS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Object transfer service. + +#ifndef BLE_OTS_BLE_OBSERVER_PRIO +#define BLE_OTS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_OTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Object transfer service client. + +#ifndef BLE_OTS_C_BLE_OBSERVER_PRIO +#define BLE_OTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_RSCS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Running Speed and Cadence Service. + +#ifndef BLE_RSCS_BLE_OBSERVER_PRIO +#define BLE_RSCS_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_RSCS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Running Speed and Cadence Client. + +#ifndef BLE_RSCS_C_BLE_OBSERVER_PRIO +#define BLE_RSCS_C_BLE_OBSERVER_PRIO 2 +#endif + +// BLE_TPS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the TX Power Service. + +#ifndef BLE_TPS_BLE_OBSERVER_PRIO +#define BLE_TPS_BLE_OBSERVER_PRIO 2 +#endif + +// BSP_BTN_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Button Control module. + +#ifndef BSP_BTN_BLE_OBSERVER_PRIO +#define BSP_BTN_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the NFC pairing library. + +#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO +#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 +#endif + +// NRF_BLE_BMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Bond Management Service. + +#ifndef NRF_BLE_BMS_BLE_OBSERVER_PRIO +#define NRF_BLE_BMS_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_CGMS_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Contiuon Glucose Monitoring Service. + +#ifndef NRF_BLE_CGMS_BLE_OBSERVER_PRIO +#define NRF_BLE_CGMS_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_ES_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Eddystone module. + +#ifndef NRF_BLE_ES_BLE_OBSERVER_PRIO +#define NRF_BLE_ES_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the GATT Service Client. + +#ifndef NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO +#define NRF_BLE_GATTS_C_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_GATT_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the GATT module. + +#ifndef NRF_BLE_GATT_BLE_OBSERVER_PRIO +#define NRF_BLE_GATT_BLE_OBSERVER_PRIO 1 +#endif + +// NRF_BLE_QWR_BLE_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the Queued writes module. + +#ifndef NRF_BLE_QWR_BLE_OBSERVER_PRIO +#define NRF_BLE_QWR_BLE_OBSERVER_PRIO 2 +#endif + +// NRF_BLE_SCAN_OBSERVER_PRIO +// Priority for dispatching the BLE events to the Scanning Module. + +#ifndef NRF_BLE_SCAN_OBSERVER_PRIO +#define NRF_BLE_SCAN_OBSERVER_PRIO 1 +#endif + +// PM_BLE_OBSERVER_PRIO - Priority with which BLE events are dispatched to the Peer Manager module. +#ifndef PM_BLE_OBSERVER_PRIO +#define PM_BLE_OBSERVER_PRIO 1 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// NRF_SDH_ENABLED - nrf_sdh - SoftDevice handler +//========================================================== +#ifndef NRF_SDH_ENABLED +#define NRF_SDH_ENABLED 1 +#endif +// Dispatch model + +// This setting configures how Stack events are dispatched to the application. +//========================================================== +// NRF_SDH_DISPATCH_MODEL + + +// NRF_SDH_DISPATCH_MODEL_INTERRUPT: SoftDevice events are passed to the application from the interrupt context. +// NRF_SDH_DISPATCH_MODEL_APPSH: SoftDevice events are scheduled using @ref app_scheduler. +// NRF_SDH_DISPATCH_MODEL_POLLING: SoftDevice events are to be fetched manually. +// <0=> NRF_SDH_DISPATCH_MODEL_INTERRUPT +// <1=> NRF_SDH_DISPATCH_MODEL_APPSH +// <2=> NRF_SDH_DISPATCH_MODEL_POLLING + +#ifndef NRF_SDH_DISPATCH_MODEL +#define NRF_SDH_DISPATCH_MODEL 0 +#endif + +// +//========================================================== + +// Clock - SoftDevice clock configuration + +//========================================================== +// NRF_SDH_CLOCK_LF_SRC - SoftDevice clock source. + +// <0=> NRF_CLOCK_LF_SRC_RC +// <1=> NRF_CLOCK_LF_SRC_XTAL +// <2=> NRF_CLOCK_LF_SRC_SYNTH + +#ifndef NRF_SDH_CLOCK_LF_SRC +#define NRF_SDH_CLOCK_LF_SRC 1 +#endif + +// NRF_SDH_CLOCK_LF_RC_CTIV - SoftDevice calibration timer interval. +#ifndef NRF_SDH_CLOCK_LF_RC_CTIV +#define NRF_SDH_CLOCK_LF_RC_CTIV 0 +#endif + +// NRF_SDH_CLOCK_LF_RC_TEMP_CTIV - SoftDevice calibration timer interval under constant temperature. +// How often (in number of calibration intervals) the RC oscillator shall be calibrated +// if the temperature has not changed. + +#ifndef NRF_SDH_CLOCK_LF_RC_TEMP_CTIV +#define NRF_SDH_CLOCK_LF_RC_TEMP_CTIV 0 +#endif + +// NRF_SDH_CLOCK_LF_ACCURACY - External clock accuracy used in the LL to compute timing. + +// <0=> NRF_CLOCK_LF_ACCURACY_250_PPM +// <1=> NRF_CLOCK_LF_ACCURACY_500_PPM +// <2=> NRF_CLOCK_LF_ACCURACY_150_PPM +// <3=> NRF_CLOCK_LF_ACCURACY_100_PPM +// <4=> NRF_CLOCK_LF_ACCURACY_75_PPM +// <5=> NRF_CLOCK_LF_ACCURACY_50_PPM +// <6=> NRF_CLOCK_LF_ACCURACY_30_PPM +// <7=> NRF_CLOCK_LF_ACCURACY_20_PPM +// <8=> NRF_CLOCK_LF_ACCURACY_10_PPM +// <9=> NRF_CLOCK_LF_ACCURACY_5_PPM +// <10=> NRF_CLOCK_LF_ACCURACY_2_PPM +// <11=> NRF_CLOCK_LF_ACCURACY_1_PPM + +#ifndef NRF_SDH_CLOCK_LF_ACCURACY +#define NRF_SDH_CLOCK_LF_ACCURACY 7 +#endif + +// +//========================================================== + +// SDH Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_REQ_OBSERVER_PRIO_LEVELS - Total number of priority levels for request observers. +// This setting configures the number of priority levels available for the SoftDevice request event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_REQ_OBSERVER_PRIO_LEVELS +#define NRF_SDH_REQ_OBSERVER_PRIO_LEVELS 2 +#endif + +// NRF_SDH_STATE_OBSERVER_PRIO_LEVELS - Total number of priority levels for state observers. +// This setting configures the number of priority levels available for the SoftDevice state event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_STATE_OBSERVER_PRIO_LEVELS +#define NRF_SDH_STATE_OBSERVER_PRIO_LEVELS 2 +#endif + +// NRF_SDH_STACK_OBSERVER_PRIO_LEVELS - Total number of priority levels for stack event observers. +// This setting configures the number of priority levels available for the SoftDevice stack event handlers (ANT, BLE, SoC). +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_STACK_OBSERVER_PRIO_LEVELS +#define NRF_SDH_STACK_OBSERVER_PRIO_LEVELS 2 +#endif + + +// State Observers priorities - Invididual priorities + +//========================================================== +// CLOCK_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to the Clock driver. + +#ifndef CLOCK_CONFIG_STATE_OBSERVER_PRIO +#define CLOCK_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// POWER_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to the Power driver. + +#ifndef POWER_CONFIG_STATE_OBSERVER_PRIO +#define POWER_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// RNG_CONFIG_STATE_OBSERVER_PRIO +// Priority with which state events are dispatched to this module. + +#ifndef RNG_CONFIG_STATE_OBSERVER_PRIO +#define RNG_CONFIG_STATE_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// Stack Event Observers priorities - Invididual priorities + +//========================================================== +// NRF_SDH_ANT_STACK_OBSERVER_PRIO +// This setting configures the priority with which ANT events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have ANT events dispatched before or after other stack events, such as BLE or SoC. +// Zero is the highest priority. + +#ifndef NRF_SDH_ANT_STACK_OBSERVER_PRIO +#define NRF_SDH_ANT_STACK_OBSERVER_PRIO 0 +#endif + +// NRF_SDH_BLE_STACK_OBSERVER_PRIO +// This setting configures the priority with which BLE events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have BLE events dispatched before or after other stack events, such as ANT or SoC. +// Zero is the highest priority. + +#ifndef NRF_SDH_BLE_STACK_OBSERVER_PRIO +#define NRF_SDH_BLE_STACK_OBSERVER_PRIO 0 +#endif + +// NRF_SDH_SOC_STACK_OBSERVER_PRIO +// This setting configures the priority with which SoC events are processed with respect to other events coming from the stack. +// Modify this setting if you need to have SoC events dispatched before or after other stack events, such as ANT or BLE. +// Zero is the highest priority. + +#ifndef NRF_SDH_SOC_STACK_OBSERVER_PRIO +#define NRF_SDH_SOC_STACK_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// NRF_SDH_SOC_ENABLED - nrf_sdh_soc - SoftDevice SoC event handler +//========================================================== +#ifndef NRF_SDH_SOC_ENABLED +#define NRF_SDH_SOC_ENABLED 1 +#endif +// SoC Observers - Observers and priority levels + +//========================================================== +// NRF_SDH_SOC_OBSERVER_PRIO_LEVELS - Total number of priority levels for SoC observers. +// This setting configures the number of priority levels available for the SoC event handlers. +// The priority level of a handler determines the order in which it receives events, with respect to other handlers. + +#ifndef NRF_SDH_SOC_OBSERVER_PRIO_LEVELS +#define NRF_SDH_SOC_OBSERVER_PRIO_LEVELS 2 +#endif + +// SoC Observers priorities - Invididual priorities + +//========================================================== +// BLE_ADV_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Advertising module. + +#ifndef BLE_ADV_SOC_OBSERVER_PRIO +#define BLE_ADV_SOC_OBSERVER_PRIO 1 +#endif + +// BLE_DFU_SOC_OBSERVER_PRIO +// Priority with which BLE events are dispatched to the DFU Service. + +#ifndef BLE_DFU_SOC_OBSERVER_PRIO +#define BLE_DFU_SOC_OBSERVER_PRIO 1 +#endif + +// CLOCK_CONFIG_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Clock driver. + +#ifndef CLOCK_CONFIG_SOC_OBSERVER_PRIO +#define CLOCK_CONFIG_SOC_OBSERVER_PRIO 0 +#endif + +// POWER_CONFIG_SOC_OBSERVER_PRIO +// Priority with which SoC events are dispatched to the Power driver. + +#ifndef POWER_CONFIG_SOC_OBSERVER_PRIO +#define POWER_CONFIG_SOC_OBSERVER_PRIO 0 +#endif + +// +//========================================================== + +// +//========================================================== + + +// + +// +//========================================================== + +// <<< end of configuration section >>> +#endif //SDK_CONFIG_H + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10059.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10059.emProject new file mode 100644 index 0000000..b0faa78 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10059.emProject @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10059.emSession nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10059.emSession new file mode 100644 index 0000000..22c73f1 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/ses/ble_connectivity_132v3_usb_hci_pca10059.emSession @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/ses/flash_placement.xml new file mode 100644 index 0000000..c9cc513 --- /dev/null +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s132v3_usb_hci/ses/flash_placement.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/armgcc/Makefile nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/armgcc/Makefile index eef767c..4925fc7 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/armgcc/Makefile +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/armgcc/Makefile @@ -97,6 +97,7 @@ SRC_FILES += \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_clock.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_power.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/prs/nrfx_prs.c \ + $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_qspi.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_systick.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uart.c \ $(SDK_ROOT)/modules/nrfx/drivers/src/nrfx_uarte.c \ diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld index 769bb82..1fd56e3 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/armgcc/ble_connectivity_gcc_nrf52.ld @@ -7,10 +7,18 @@ MEMORY { FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0xda000 RAM (rwx) : ORIGIN = 0x2001ad58, LENGTH = 0x252a8 + connectivity_version_info (r) : ORIGIN = 0x50000, LENGTH = 0x18 } SECTIONS { + . = ALIGN(4); + .connectivity_version_info : + { + PROVIDE(__start_connectivity_version_info = .); + KEEP(*(SORT(.connectivity_version_info*))) + PROVIDE(__stop_connectivity_version_info = .); + } > connectivity_version_info } SECTIONS @@ -69,12 +77,6 @@ SECTIONS KEEP(*(.nrf_balloc)) PROVIDE(__stop_nrf_balloc = .); } > FLASH - .sdh_req_observers : - { - PROVIDE(__start_sdh_req_observers = .); - KEEP(*(SORT(.sdh_req_observers*))) - PROVIDE(__stop_sdh_req_observers = .); - } > FLASH .sdh_state_observers : { PROVIDE(__start_sdh_state_observers = .); @@ -87,6 +89,12 @@ SECTIONS KEEP(*(SORT(.sdh_stack_observers*))) PROVIDE(__stop_sdh_stack_observers = .); } > FLASH + .sdh_req_observers : + { + PROVIDE(__start_sdh_req_observers = .); + KEEP(*(SORT(.sdh_req_observers*))) + PROVIDE(__stop_sdh_req_observers = .); + } > FLASH .log_backends : { PROVIDE(__start_log_backends = .); diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/config/sdk_config.h nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/config/sdk_config.h index ba74403..8a50626 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/config/sdk_config.h +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/config/sdk_config.h @@ -133,7 +133,7 @@ // gaps. Tailor this value to adhere to this limitation. #ifndef NRF_DFU_TRIGGER_USB_INTERFACE_NUM -#define NRF_DFU_TRIGGER_USB_INTERFACE_NUM 2 +#define NRF_DFU_TRIGGER_USB_INTERFACE_NUM 0 #endif // @@ -376,6 +376,134 @@ // +// NRFX_QSPI_ENABLED - nrfx_qspi - QSPI peripheral driver +//========================================================== +#ifndef NRFX_QSPI_ENABLED +#define NRFX_QSPI_ENABLED 1 +#endif +// NRFX_QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef NRFX_QSPI_CONFIG_SCK_DELAY +#define NRFX_QSPI_CONFIG_SCK_DELAY 1 +#endif + +// NRFX_QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef NRFX_QSPI_CONFIG_XIP_OFFSET +#define NRFX_QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// NRFX_QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef NRFX_QSPI_CONFIG_READOC +#define NRFX_QSPI_CONFIG_READOC 0 +#endif + +// NRFX_QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef NRFX_QSPI_CONFIG_WRITEOC +#define NRFX_QSPI_CONFIG_WRITEOC 0 +#endif + +// NRFX_QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef NRFX_QSPI_CONFIG_ADDRMODE +#define NRFX_QSPI_CONFIG_ADDRMODE 0 +#endif + +// NRFX_QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef NRFX_QSPI_CONFIG_MODE +#define NRFX_QSPI_CONFIG_MODE 0 +#endif + +// NRFX_QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef NRFX_QSPI_CONFIG_FREQUENCY +#define NRFX_QSPI_CONFIG_FREQUENCY 15 +#endif + +// NRFX_QSPI_PIN_SCK - SCK pin value. +#ifndef NRFX_QSPI_PIN_SCK +#define NRFX_QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_CSN - CSN pin value. +#ifndef NRFX_QSPI_PIN_CSN +#define NRFX_QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO0 - IO0 pin value. +#ifndef NRFX_QSPI_PIN_IO0 +#define NRFX_QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO1 - IO1 pin value. +#ifndef NRFX_QSPI_PIN_IO1 +#define NRFX_QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO2 - IO2 pin value. +#ifndef NRFX_QSPI_PIN_IO2 +#define NRFX_QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_PIN_IO3 - IO3 pin value. +#ifndef NRFX_QSPI_PIN_IO3 +#define NRFX_QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// NRFX_QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef NRFX_QSPI_CONFIG_IRQ_PRIORITY +#define NRFX_QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // NRFX_SYSTICK_ENABLED - nrfx_systick - ARM(R) SysTick driver @@ -769,6 +897,136 @@ // +// QSPI_ENABLED - nrf_drv_qspi - QSPI peripheral driver - legacy layer +//========================================================== +#ifndef QSPI_ENABLED +#define QSPI_ENABLED 1 +#endif +// QSPI_CONFIG_SCK_DELAY - tSHSL, tWHSL and tSHWL in number of 16 MHz periods (62.5 ns). <0-255> + + +#ifndef QSPI_CONFIG_SCK_DELAY +#define QSPI_CONFIG_SCK_DELAY 1 +#endif + +// QSPI_CONFIG_XIP_OFFSET - Address offset in the external memory for Execute in Place operation. +#ifndef QSPI_CONFIG_XIP_OFFSET +#define QSPI_CONFIG_XIP_OFFSET 0 +#endif + +// QSPI_CONFIG_READOC - Number of data lines and opcode used for reading. + +// <0=> FastRead +// <1=> Read2O +// <2=> Read2IO +// <3=> Read4O +// <4=> Read4IO + +#ifndef QSPI_CONFIG_READOC +#define QSPI_CONFIG_READOC 0 +#endif + +// QSPI_CONFIG_WRITEOC - Number of data lines and opcode used for writing. + +// <0=> PP +// <1=> PP2O +// <2=> PP4O +// <3=> PP4IO + +#ifndef QSPI_CONFIG_WRITEOC +#define QSPI_CONFIG_WRITEOC 0 +#endif + +// QSPI_CONFIG_ADDRMODE - Addressing mode. + +// <0=> 24bit +// <1=> 32bit + +#ifndef QSPI_CONFIG_ADDRMODE +#define QSPI_CONFIG_ADDRMODE 0 +#endif + +// QSPI_CONFIG_MODE - SPI mode. + +// <0=> Mode 0 +// <1=> Mode 1 + +#ifndef QSPI_CONFIG_MODE +#define QSPI_CONFIG_MODE 0 +#endif + +// QSPI_CONFIG_FREQUENCY - Frequency divider. + +// <0=> 32MHz/1 +// <1=> 32MHz/2 +// <2=> 32MHz/3 +// <3=> 32MHz/4 +// <4=> 32MHz/5 +// <5=> 32MHz/6 +// <6=> 32MHz/7 +// <7=> 32MHz/8 +// <8=> 32MHz/9 +// <9=> 32MHz/10 +// <10=> 32MHz/11 +// <11=> 32MHz/12 +// <12=> 32MHz/13 +// <13=> 32MHz/14 +// <14=> 32MHz/15 +// <15=> 32MHz/16 + +#ifndef QSPI_CONFIG_FREQUENCY +#define QSPI_CONFIG_FREQUENCY 15 +#endif + +// QSPI_PIN_SCK - SCK pin value. +#ifndef QSPI_PIN_SCK +#define QSPI_PIN_SCK NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_CSN - CSN pin value. +#ifndef QSPI_PIN_CSN +#define QSPI_PIN_CSN NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO0 - IO0 pin value. +#ifndef QSPI_PIN_IO0 +#define QSPI_PIN_IO0 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO1 - IO1 pin value. +#ifndef QSPI_PIN_IO1 +#define QSPI_PIN_IO1 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO2 - IO2 pin value. +#ifndef QSPI_PIN_IO2 +#define QSPI_PIN_IO2 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_PIN_IO3 - IO3 pin value. +#ifndef QSPI_PIN_IO3 +#define QSPI_PIN_IO3 NRF_QSPI_PIN_NOT_CONNECTED +#endif + +// QSPI_CONFIG_IRQ_PRIORITY - Interrupt priority + + +// Priorities 0,2 (nRF51) and 0,1,4,5 (nRF52) are reserved for SoftDevice +// <0=> 0 (highest) +// <1=> 1 +// <2=> 2 +// <3=> 3 +// <4=> 4 +// <5=> 5 +// <6=> 6 +// <7=> 7 + +#ifndef QSPI_CONFIG_IRQ_PRIORITY +#define QSPI_CONFIG_IRQ_PRIORITY 6 +#endif + +// + // SYSTICK_ENABLED - nrf_drv_systick - ARM(R) SysTick driver - legacy layer @@ -1072,7 +1330,7 @@ // Note: This value is not editable in Configuration Wizard. // Selected Product ID #ifndef APP_USBD_PID -#define APP_USBD_PID 0x521B +#define APP_USBD_PID 0xC00A #endif // APP_USBD_DEVICE_VER_MAJOR - Device version, major part. <0-99> @@ -4510,12 +4768,12 @@ // NRF_SDH_BLE_PERIPHERAL_LINK_COUNT - Maximum number of peripheral links. #ifndef NRF_SDH_BLE_PERIPHERAL_LINK_COUNT -#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 0 +#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_CENTRAL_LINK_COUNT - Maximum number of central links. #ifndef NRF_SDH_BLE_CENTRAL_LINK_COUNT -#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 0 +#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 8 #endif // NRF_SDH_BLE_TOTAL_LINK_COUNT - Total link count. @@ -4816,132 +5074,6 @@ #define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 #endif -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - -// NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -// Priority with which BLE events are dispatched to the NFC pairing library. - -#ifndef NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO -#define NFC_BLE_PAIR_LIB_BLE_OBSERVER_PRIO 1 -#endif - // NRF_BLE_BMS_BLE_OBSERVER_PRIO // Priority with which BLE events are dispatched to the Bond Management Service. diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/ses/ble_connectivity_s140_usb_hci_pca10059.emProject nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/ses/ble_connectivity_s140_usb_hci_pca10059.emProject index 18bb243..dda7ada 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/ses/ble_connectivity_s140_usb_hci_pca10059.emProject +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/ses/ble_connectivity_s140_usb_hci_pca10059.emProject @@ -29,7 +29,7 @@ linker_scanf_fmt_level="long" linker_section_placement_file="flash_placement.xml" linker_section_placement_macros="FLASH_PH_START=0x0;FLASH_PH_SIZE=0x100000;RAM_PH_START=0x20000000;RAM_PH_SIZE=0x40000;FLASH_START=0x26000;FLASH_SIZE=0xda000;RAM_START=0x2001ad58;RAM_SIZE=0x252a8" - linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000" + linker_section_placements_segments="FLASH RX 0x0 0x100000;RAM RWX 0x20000000 0x40000;connectivity_version_info RX 0x50000 0x18" project_directory="" project_type="Executable" /> @@ -134,6 +134,7 @@ + diff --git nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/ses/flash_placement.xml nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/ses/flash_placement.xml index b5fb146..c9cc513 100644 --- nRF5_SDK_15.3.0_59ac345/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/ses/flash_placement.xml +++ nRF5_SDK_15.3.0_66869dd/examples/connectivity/ble_connectivity/pca10059/ser_s140_usb_hci/ses/flash_placement.xml @@ -11,9 +11,9 @@ - + @@ -43,4 +43,7 @@ + + + diff --git nRF5_SDK_15.3.0_59ac345/examples/dfu/dfu_public_key.c nRF5_SDK_15.3.0_66869dd/examples/dfu/dfu_public_key.c index c9bea13..c7a49e2 100644 --- nRF5_SDK_15.3.0_59ac345/examples/dfu/dfu_public_key.c +++ nRF5_SDK_15.3.0_66869dd/examples/dfu/dfu_public_key.c @@ -1,30 +1,51 @@ +/** + * Copyright (c) 2010 - 2019, 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. + * + */ +/* This file was automatically generated by nrfutil on 2016-11-23 (YY-MM-DD) at 13:02:58 */ -/* This file was automatically generated by nrfutil on 2019-02-14 (YY-MM-DD) at 14:06:19 */ - -#include "sdk_config.h" #include "stdint.h" #include "compiler_abstraction.h" -#if NRF_CRYPTO_BACKEND_OBERON_ENABLED -/* Oberon backend is changing endianness thus public key must be kept in RAM. */ -#define _PK_CONST -#else -#define _PK_CONST const -#endif - - -/* This file was generated with a throwaway private key, that is only inteded for a debug version of the DFU project. - Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate a valid public key. */ - -#ifdef NRF_DFU_DEBUG_VERSION - /** @brief Public key used to verify DFU images */ -__ALIGN(4) _PK_CONST uint8_t pk[64] = +__ALIGN(4) const uint8_t pk[64] = { - 0x0e, 0xdf, 0x9f, 0xc8, 0xe6, 0x7b, 0x4e, 0x1a, 0xce, 0xe8, 0x6f, 0x86, 0xe2, 0x91, 0xc2, 0x98, 0x42, 0xc0, 0x23, 0x72, 0xfc, 0x76, 0xe6, 0xd2, 0xf7, 0x74, 0xfc, 0x09, 0x9f, 0xbf, 0x88, 0x5a, - 0x79, 0x78, 0xd4, 0x2f, 0xcb, 0x27, 0x84, 0xb1, 0xd1, 0x82, 0x70, 0xf9, 0xe0, 0x14, 0xf9, 0x49, 0xa4, 0x47, 0xe9, 0x33, 0xaf, 0x7d, 0x07, 0x1d, 0xd0, 0x93, 0x4b, 0xd2, 0x93, 0x8b, 0xe6, 0x20 + 0xd4, 0x10, 0xff, 0xaa, 0x50, 0xff, 0x31, 0xc4, 0xb2, 0x6f, 0xca, 0x1c, 0x44, 0x68, 0x72, 0xf9, 0xb1, 0x40, 0xea, 0x3c, 0x22, 0xd1, 0x75, 0xe6, 0x29, 0xa5, 0xd3, 0xe5, 0x34, 0x87, 0x59, 0xd0, + 0x44, 0x08, 0xa6, 0x27, 0xb9, 0x9d, 0x34, 0x44, 0x44, 0xff, 0xa3, 0x4b, 0x1c, 0xb5, 0xc7, 0xb3, 0x81, 0x2a, 0x80, 0xfe, 0x10, 0xd1, 0xbf, 0x6a, 0xa1, 0xdc, 0xb9, 0x4f, 0xbc, 0xc3, 0x22, 0x17 }; -#else -#error "Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it" -#endif diff --git nRF5_SDK_15.3.0_59ac345/examples/readme.txt nRF5_SDK_15.3.0_66869dd/examples/readme.txt index 9d027c9..ac71eca 100644 --- nRF5_SDK_15.3.0_59ac345/examples/readme.txt +++ nRF5_SDK_15.3.0_66869dd/examples/readme.txt @@ -1,942 +1,14 @@ Matrix shows which board is supported by given example -Example | pca10028 | pca10040 | pca10040e | pca10056 | ---------------------------------------------------------------------------------------------------------------------------------------------------- -802_15_4\wireless_uart\raw\first | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -802_15_4\wireless_uart\raw\second | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -802_15_4\wireless_uart\secure\first | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -802_15_4\wireless_uart\secure\second | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -C:\bamboo\xml-data\build-dir\HP-CRWH6-CR\sdk\nrf5\components\libraries\csense_drv\test | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -C:\bamboo\xml-data\build-dir\HP-CRWH6-CR\sdk\nrf5\components\libraries\usbd\test\usb_hosted\example | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -C:\bamboo\xml-data\build-dir\HP-CRWH6-CR\sdk\nrf5\config | | | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_advanced_burst | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_async_transmitter | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_background_scanning | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_broadcast\rx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_broadcast\tx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_continuous_scanning_controller | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_cw_mode | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_debug | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_fs\client | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_hd_search_and_bs | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_io_demo\ant_io_rx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_io_demo\ant_io_tx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_message_types\master | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_multi_channels\rx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_multi_channels\tx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_multi_channels_encrypted\rx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_multi_channels_encrypted\tx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_bpwr\bpwr_rx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_bpwr\bpwr_tx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_bsc\bsc_rx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_bsc\bsc_tx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_hrm\hrm_rx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_hrm\hrm_tx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_sdm\sdm_rx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_sdm\sdm_tx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_relay_demo | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_scan_and_forward | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_search_sharing | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_search_uplink | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_time_synchronization\rx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_time_synchronization\tx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\experimental\ant_frequency_agility\ant_frequency_agility_rx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\experimental\ant_frequency_agility\ant_frequency_agility_tx | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\experimental\ant_shared_channel\m2m | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ant\experimental\ant_shared_channel\slave | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_blinky_c | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_gatts | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_hrs_c | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_ias | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_ipsp_initiator | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_multilink_central | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_rscs_c | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_uart_c | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\experimental\ble_app_hrs_nfc_c | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\experimental\ble_app_ots_c | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\experimental\ble_nfc_pairing_reference_c | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central_and_peripheral\experimental\ble_app_att_mtu_throughput | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central_and_peripheral\experimental\ble_app_hrs_rscs_relay | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central_and_peripheral\experimental\ble_app_interactive | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central_and_peripheral\experimental\ble_app_multirole_lesc | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_alert_notification | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_ancs_c | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_beacon | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_blinky | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_bms | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_bps | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_buttonless_dfu | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_cscs | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_cts_c | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_eddystone | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_gatts_c | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_gls | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_hids_keyboard | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_hids_mouse | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_hrs | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_hrs_freertos | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_hts | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_ias_c | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_ipsp_acceptor | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_proximity | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_pwr_profiling | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_rscs | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_template | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_uart | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_cgms | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_cli | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_hids_keyboard_pairing_nfc | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_hrs_nfc_pairing | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_lls | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_lns | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_multiperipheral | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_ots | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_queued_writes | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_nfc_pairing_reference | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\bluetoothds_template | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -connectivity\ble_connectivity | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -connectivity\experimental_ant | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\ifx_optiga_custom_example | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\aes | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\chacha_poly | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\ecc | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\hash | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\hkdf | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\hmac | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\rnd | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\rsa | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310_bl | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\aes\aes_all_cli | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\aes\aes_cbc_mac | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\aes\aes_cbc_with_padding | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\aes\aes_ccm | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\aes\aes_ctr | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\chacha_poly | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\cli | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\ecdh | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\ecdsa | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\eddsa | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\hash | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\hkdf | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\hmac | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\rng | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\test_app | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -dfu\open_bootloader | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -dfu\secure_bootloader | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -dtm\direct_test_mode | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -dtm\dtm_serialization | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\bootloader | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\ipv6\client | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\ipv6\client_observe | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\ipv6\server | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\ipv6\server_block | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\ipv6\server_observe | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\lwip\client | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\lwip\client_observe | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\lwip\server | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\lwip\server_block | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\lwip\server_observe | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\dns\ipv6 | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\dtls\coap_client | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\dtls\coap_server | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\icmp | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\lwm2m\lwm2m_client | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\misc\iot_timer | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\mqtt\lwip\publisher | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\mqtt\lwip\subscriber | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\sntp | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\socket\tcp\client | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\tcp\client | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\tcp\server | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\tftp\background_dfu | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\tftp\client | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\udp\ipv6\client | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\udp\ipv6\server | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\udp\lwip\client | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -iot\udp\lwip\server | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -multiprotocol\ble_ant_app_hrm | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -multiprotocol\ble_app_gzll | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\adafruit_tag_reader | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\nfc_uart\poller | | * | | | ---------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\nfc_uart\tag | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\record_launch_app | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\record_text | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\record_url | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\wake_on_nfc | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\writable_ndef_msg | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\blinky | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\blinky_freertos | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\blinky_rtc_freertos | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\blinky_systick | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\bsp | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\cli | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\csense | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\csense_drv | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\experimental_cli_libuarte | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\experimental_libuarte | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\fatfs | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\flash_fds | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\flash_fstorage | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\flashwrite | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\fpu_fft | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\gfx | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\gpiote | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\i2s | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\led_softblink | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\low_power_pwm | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\lpcomp | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\nrfx_spim | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\pin_change_int | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\ppi | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\preflash | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\pwm_driver | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\pwm_library | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\pwr_mgmt | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\qdec | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\qspi | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\qspi_bootloader | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\radio\receiver | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\radio\transmitter | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\radio_test | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\ram_retention | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\rng | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\rtc | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\saadc | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\serial | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\serial_uartes | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\simple_timer | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\spi | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\spi_master_using_nrf_spi_mngr | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\spis | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\temperature | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\template_project | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\timer | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\twi_master_using_nrf_twi_mngr | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\twi_master_with_twis_slave | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\twi_scanner | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\twi_sensor | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\uart | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\uicr_config | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_audio | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_ble_uart | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_ble_uart_freertos | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_cdc_acm | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_hid_composite | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_hid_generic | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_msc | | | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\wdt | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\esb_low_power_prx | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\esb_low_power_ptx | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\esb_prx | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\esb_ptx | | * | * | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\gzll\gzll_ack_payload\device | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\gzll\gzll_ack_payload\host | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\gzll\gzp_desktop_emulator | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\gzll\gzp_dynamic_pairing\device | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\gzll\gzp_dynamic_pairing\host | | * | | * | ---------------------------------------------------------------------------------------------------------------------------------------------------- +Example | pca10028 | pca10040 | pca10040e | pca10056 | +----------------------------------------------------------------------------- +connectivity\ble_connectivity | | * | * | * | +----------------------------------------------------------------------------- Matrix shows which SoftDevice is supported by given example -Example | s112 | s130 | s132 | s140 | s212 | None | ------------------------------------------------------------------------------------------------------------------------------------------------- -802_15_4\wireless_uart\raw\first | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -802_15_4\wireless_uart\raw\second | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -802_15_4\wireless_uart\secure\first | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -802_15_4\wireless_uart\secure\second | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -C:\bamboo\xml-data\build-dir\HP-CRWH6-CR\sdk\nrf5\components\libraries\csense_drv\test | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -C:\bamboo\xml-data\build-dir\HP-CRWH6-CR\sdk\nrf5\components\libraries\usbd\test\usb_hosted\example | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -C:\bamboo\xml-data\build-dir\HP-CRWH6-CR\sdk\nrf5\config | * | | | * | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_advanced_burst | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_async_transmitter | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_background_scanning | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_broadcast\rx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_broadcast\tx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_continuous_scanning_controller | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_cw_mode | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_debug | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_fs\client | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_hd_search_and_bs | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_io_demo\ant_io_rx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_io_demo\ant_io_tx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_message_types\master | | | | | * | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_multi_channels\rx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_multi_channels\tx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_multi_channels_encrypted\rx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_multi_channels_encrypted\tx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_bpwr\bpwr_rx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_bpwr\bpwr_tx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_bsc\bsc_rx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_bsc\bsc_tx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_hrm\hrm_rx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_hrm\hrm_tx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_sdm\sdm_rx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_plus\ant_sdm\sdm_tx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_relay_demo | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_scan_and_forward | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_search_sharing | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_search_uplink | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_time_synchronization\rx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\ant_time_synchronization\tx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\experimental\ant_frequency_agility\ant_frequency_agility_rx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\experimental\ant_frequency_agility\ant_frequency_agility_tx | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\experimental\ant_shared_channel\m2m | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -ant\experimental\ant_shared_channel\slave | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_blinky_c | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_gatts | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_hrs_c | | | * | * | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_ias | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_ipsp_initiator | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_multilink_central | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_rscs_c | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\ble_app_uart_c | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\experimental\ble_app_hrs_nfc_c | | | * | | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\experimental\ble_app_ots_c | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central\experimental\ble_nfc_pairing_reference_c | | | * | | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central_and_peripheral\experimental\ble_app_att_mtu_throughput | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central_and_peripheral\experimental\ble_app_hrs_rscs_relay | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central_and_peripheral\experimental\ble_app_interactive | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_central_and_peripheral\experimental\ble_app_multirole_lesc | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_alert_notification | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_ancs_c | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_beacon | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_blinky | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_bms | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_bps | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_buttonless_dfu | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_cscs | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_cts_c | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_eddystone | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_gatts_c | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_gls | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_hids_keyboard | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_hids_mouse | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_hrs | * | | * | * | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_hrs_freertos | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_hts | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_ias_c | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_ipsp_acceptor | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_proximity | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_pwr_profiling | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_rscs | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_template | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\ble_app_uart | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_cgms | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_cli | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_hids_keyboard_pairing_nfc | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_hrs_nfc_pairing | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_lls | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_lns | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_multiperipheral | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_ots | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_app_queued_writes | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\ble_nfc_pairing_reference | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -ble_peripheral\experimental\bluetoothds_template | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -connectivity\ble_connectivity | * | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -connectivity\experimental_ant | | | | | * | | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\ifx_optiga_custom_example | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\aes | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\chacha_poly | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\ecc | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\hash | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\hkdf | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\hmac | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\rnd | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310\rsa | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_cc310_bl | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\aes\aes_all_cli | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\aes\aes_cbc_mac | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\aes\aes_cbc_with_padding | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\aes\aes_ccm | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\aes\aes_ctr | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\chacha_poly | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\cli | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\ecdh | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\ecdsa | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\eddsa | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\hash | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\hkdf | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\hmac | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\rng | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -crypto\nrf_crypto\test_app | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -dfu\open_bootloader | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -dfu\secure_bootloader | * | | * | * | * | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -dtm\direct_test_mode | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -dtm\dtm_serialization | | | * | | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\bootloader | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\ipv6\client | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\ipv6\client_observe | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\ipv6\server | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\ipv6\server_block | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\ipv6\server_observe | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\lwip\client | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\lwip\client_observe | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\lwip\server | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\lwip\server_block | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\coap\lwip\server_observe | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\dns\ipv6 | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\dtls\coap_client | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\dtls\coap_server | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\icmp | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\lwm2m\lwm2m_client | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\misc\iot_timer | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\mqtt\lwip\publisher | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\mqtt\lwip\subscriber | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\sntp | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\socket\tcp\client | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\tcp\client | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\tcp\server | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\tftp\background_dfu | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\tftp\client | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\udp\ipv6\client | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\udp\ipv6\server | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\udp\lwip\client | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -iot\udp\lwip\server | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -multiprotocol\ble_ant_app_hrm | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -multiprotocol\ble_app_gzll | | | * | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\adafruit_tag_reader | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\nfc_uart\poller | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\nfc_uart\tag | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\record_launch_app | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\record_text | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\record_url | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\wake_on_nfc | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -nfc\writable_ndef_msg | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\blinky | | | * | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\blinky_freertos | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\blinky_rtc_freertos | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\blinky_systick | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\bsp | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\cli | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\csense | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\csense_drv | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\experimental_cli_libuarte | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\experimental_libuarte | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\fatfs | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\flash_fds | | | * | * | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\flash_fstorage | | | * | * | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\flashwrite | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\fpu_fft | | | * | * | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\gfx | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\gpiote | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\i2s | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\led_softblink | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\low_power_pwm | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\lpcomp | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\nrfx_spim | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\pin_change_int | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\ppi | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\preflash | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\pwm_driver | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\pwm_library | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\pwr_mgmt | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\qdec | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\qspi | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\qspi_bootloader | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\radio\receiver | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\radio\transmitter | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\radio_test | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\ram_retention | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\rng | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\rtc | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\saadc | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\serial | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\serial_uartes | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\simple_timer | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\spi | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\spi_master_using_nrf_spi_mngr | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\spis | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\temperature | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\template_project | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\timer | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\twi_master_using_nrf_twi_mngr | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\twi_master_with_twis_slave | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\twi_scanner | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\twi_sensor | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\uart | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\uicr_config | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_audio | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_ble_uart | | | | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_ble_uart_freertos | | | | * | | | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_cdc_acm | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_hid_composite | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_hid_generic | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\usbd_msc | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -peripheral\wdt | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\esb_low_power_prx | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\esb_low_power_ptx | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\esb_prx | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\esb_ptx | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\gzll\gzll_ack_payload\device | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\gzll\gzll_ack_payload\host | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\gzll\gzp_desktop_emulator | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\gzll\gzp_dynamic_pairing\device | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- -proprietary_rf\gzll\gzp_dynamic_pairing\host | | | | | | * | ------------------------------------------------------------------------------------------------------------------------------------------------- +Example | s112 | s130 | s132 | s140 | s212 | None | +-------------------------------------------------------------------------- +connectivity\ble_connectivity | * | | * | * | | * | +-------------------------------------------------------------------------- diff --git nRF5_SDK_15.3.0_59ac345/integration/nrfx/legacy/nrf_drv_power.c nRF5_SDK_15.3.0_66869dd/integration/nrfx/legacy/nrf_drv_power.c index 97be382..a0a0710 100644 --- nRF5_SDK_15.3.0_59ac345/integration/nrfx/legacy/nrf_drv_power.c +++ nRF5_SDK_15.3.0_66869dd/integration/nrfx/legacy/nrf_drv_power.c @@ -47,6 +47,14 @@ #include "nrf_sdh_soc.h" #endif +#if defined(SOFTDEVICE_PRESENT) +#if defined(NRF_SD_BLE_API_VERSION) && NRF_SD_BLE_API_VERSION < 6 +#define POWER_USB_SD_API 0 +#else +#define POWER_USB_SD_API 1 +#endif +#endif + #include // The structure with default configuration data. @@ -220,7 +228,7 @@ void nrf_drv_power_sleepevt_uninit(void) #if NRF_POWER_HAS_USBREG -#ifdef SOFTDEVICE_PRESENT +#if POWER_USB_SD_API static ret_code_t nrf_drv_power_sd_usbevt_enable(bool enable) { ret_code_t err_code; @@ -248,7 +256,7 @@ ret_code_t nrf_drv_power_usbevt_init(nrf_drv_power_usbevt_config_t const * p_con { nrf_drv_power_usbevt_uninit(); nrfx_power_usbevt_init(p_config); -#ifdef SOFTDEVICE_PRESENT +#if POWER_USB_SD_API if (nrf_sdh_is_enabled()) { ret_code_t err_code = nrf_drv_power_sd_usbevt_enable(true); @@ -283,7 +291,7 @@ ret_code_t nrf_drv_power_usbevt_init(nrf_drv_power_usbevt_config_t const * p_con void nrf_drv_power_usbevt_uninit(void) { -#ifdef SOFTDEVICE_PRESENT +#if POWER_USB_SD_API CRITICAL_REGION_ENTER(); if (nrf_sdh_is_enabled()) { @@ -296,7 +304,7 @@ void nrf_drv_power_usbevt_uninit(void) { nrfx_power_usbevt_disable(); } -#ifdef SOFTDEVICE_PRESENT +#if POWER_USB_SD_API CRITICAL_REGION_EXIT(); #endif nrfx_power_usbevt_uninit(); @@ -326,7 +334,7 @@ static void nrf_drv_power_sdh_soc_evt_handler(uint32_t evt_id, void * p_context) pofwarn_handler(); } -#if NRF_POWER_HAS_USBREG +#if NRF_POWER_HAS_USBREG && POWER_USB_SD_API nrfx_power_usb_event_handler_t usbevt_handler = nrfx_power_usb_handler_get(); if (usbevt_handler != NULL) { @@ -364,7 +372,7 @@ static void nrf_drv_power_on_sd_enable(void) } CRITICAL_REGION_EXIT(); -#if NRF_POWER_HAS_USBREG +#if NRF_POWER_HAS_USBREG && POWER_USB_SD_API if (nrfx_power_usb_handler_get() != NULL) { ret_code_t err_code = nrf_drv_power_sd_usbevt_enable(true);