From ae2597a4055f1944790eadad18d85077b1ef4f73 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 16 Feb 2022 18:02:15 +0100 Subject: [PATCH] S3 changes + NimBLE updates --- .../ESP32-HomeKit/src/port/bignum.h | 2 +- .../ESP32-HomeKit/src/port/bignum_ESP32.c | 3 + .../ESP32-HomeKit/src/port/bignum_ESP32_C3.c | 2 +- .../ESP32-HomeKit/src/port/bignum_ESP32_C3.h | 2 +- .../ESP32-HomeKit/src/port/bignum_impl.h | 2 +- .../ESP32-HomeKit/src/port/esp_bignum.c | 2 +- .../esp_port/esp-hci/include/esp_compiler.h | 8 + .../esp_port/esp-hci/include/esp_nimble_hci.h | 19 +- .../esp_port/esp-hci/src/esp_nimble_hci.c | 24 +- .../esp_port/port/include/esp_nimble_cfg.h | 8 + .../esp_port/port/include/esp_nimble_mem.h | 19 +- .../nimble/esp_port/port/src/esp_nimble_mem.c | 20 +- .../src/nimble/nimble/controller/pkg.yml | 38 - .../src/nimble/nimble/controller/syscfg.yml | 434 ------- .../src/nimble/nimble/drivers/nrf51/pkg.yml | 31 - .../src/nimble/nimble/drivers/nrf52/pkg.yml | 31 - .../nimble/nimble/drivers/nrf52/syscfg.yml | 75 -- .../src/nimble/nimble/host/mesh/pkg.yml | 49 - .../src/nimble/nimble/host/mesh/syscfg.yml | 661 ----------- .../src/nimble/nimble/host/pkg.yml | 55 - .../src/nimble/nimble/host/pts/README.txt | 8 - .../src/nimble/nimble/host/pts/pts-gap.txt | 367 ------ .../src/nimble/nimble/host/pts/pts-gatt.txt | 508 -------- .../src/nimble/nimble/host/pts/pts-l2cap.txt | 304 ----- .../src/nimble/nimble/host/pts/pts-sm.txt | 310 ----- .../host/pts/tpg/94654-20170317-085122560.tpg | 1026 ---------------- .../host/pts/tpg/94654-20170317-085441153.pts | 289 ----- .../nimble/nimble/host/services/ans/pkg.yml | 34 - .../nimble/host/services/ans/syscfg.yml | 30 - .../nimble/nimble/host/services/bas/pkg.yml | 34 - .../nimble/host/services/bas/syscfg.yml | 34 - .../nimble/nimble/host/services/dis/pkg.yml | 34 - .../nimble/host/services/dis/syscfg.yml | 109 -- .../nimble/nimble/host/services/gap/pkg.yml | 34 - .../nimble/host/services/gap/syscfg.yml | 83 -- .../nimble/nimble/host/services/gatt/pkg.yml | 34 - .../nimble/host/services/gatt/syscfg.yml | 24 - .../nimble/nimble/host/services/ias/pkg.yml | 34 - .../nimble/host/services/ias/syscfg.yml | 23 - .../nimble/nimble/host/services/ipss/pkg.yml | 35 - .../nimble/host/services/ipss/syscfg.yml | 24 - .../nimble/nimble/host/services/lls/pkg.yml | 34 - .../nimble/host/services/lls/syscfg.yml | 22 - .../tps/include/services/tps/ble_svc_tps.h | 31 - .../nimble/nimble/host/services/tps/pkg.yml | 34 - .../host/services/tps/src/ble_svc_tps.c | 107 -- .../nimble/host/services/tps/syscfg.yml | 23 - .../src/nimble/nimble/host/src/ble_gap.c | 203 +++- .../src/nimble/nimble/host/src/ble_hs.c | 4 + .../src/nimble/nimble/host/src/ble_hs_flow.c | 8 + .../nimble/nimble/host/src/ble_hs_flow_priv.h | 2 +- .../src/nimble/nimble/host/src/ble_hs_priv.h | 1 + .../src/nimble/nimble/host/src/ble_hs_stop.c | 6 + .../src/nimble/nimble/host/src/ble_sm_sc.c | 6 +- .../nimble/nimble/host/store/config/pkg.yml | 38 - .../nimble/host/store/config/syscfg.yml | 27 - .../src/nimble/nimble/host/syscfg.yml | 471 -------- .../nimble/nimble/host/tools/log2smtest.rb | 1029 ----------------- .../src/nimble/nimble/host/util/pkg.yml | 29 - .../src/nimble/nimble/host/util/syscfg.yml | 19 - .../NimBLE-Arduino/src/nimble/nimble/pkg.yml | 30 - .../src/nimble/nimble/syscfg.yml | 83 -- .../src/nimble/nimble/transport/pkg.yml | 45 - .../src/nimble/nimble/transport/ram/pkg.yml | 36 - .../nimble/nimble/transport/ram/syscfg.yml | 48 - .../src/nimble/nimble/transport/syscfg.yml | 68 -- .../npl/freertos/src/npl_os_freertos.c | 40 +- 67 files changed, 287 insertions(+), 7020 deletions(-) delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/controller/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/controller/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/mesh/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/mesh/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/README.txt delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-gap.txt delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-gatt.txt delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-l2cap.txt delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-sm.txt delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/tpg/94654-20170317-085122560.tpg delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/tpg/94654-20170317-085441153.pts delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ans/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ans/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/bas/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/bas/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/dis/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/dis/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gap/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gap/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ias/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ias/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/lls/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/lls/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/include/services/tps/ble_svc_tps.h delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/src/ble_svc_tps.c delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/store/config/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/store/config/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/tools/log2smtest.rb delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/util/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/util/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/ram/pkg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/ram/syscfg.yml delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/syscfg.yml diff --git a/lib/libesp32_div/ESP32-HomeKit/src/port/bignum.h b/lib/libesp32_div/ESP32-HomeKit/src/port/bignum.h index b6d6f1c1f..158c22cb1 100644 --- a/lib/libesp32_div/ESP32-HomeKit/src/port/bignum.h +++ b/lib/libesp32_div/ESP32-HomeKit/src/port/bignum.h @@ -15,6 +15,6 @@ #if CONFIG_IDF_TARGET_ESP32 #include "bignum_ESP32.h" -#elif CONFIG_IDF_TARGET_ESP32C3 +#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S3 #include "bignum_ESP32_C3.h" #endif diff --git a/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32.c b/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32.c index 52d9554b5..d21b44a80 100644 --- a/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32.c +++ b/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32.c @@ -39,6 +39,9 @@ #if CONFIG_IDF_TARGET_ESP32C3 #include "esp32c3/dport_access.h" #endif +#if CONFIG_IDF_TARGET_ESP32S3 +#include "esp32s3/dport_access.h" +#endif static _lock_t mpi_lock; diff --git a/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32_C3.c b/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32_C3.c index a96d514b9..1c579005f 100644 --- a/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32_C3.c +++ b/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32_C3.c @@ -21,7 +21,7 @@ * */ -#if CONFIG_IDF_TARGET_ESP32C3 +#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S3 #if __has_include("esp_idf_version.h") #include "esp_idf_version.h" #endif diff --git a/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32_C3.h b/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32_C3.h index 333615c3f..e664dd779 100644 --- a/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32_C3.h +++ b/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_ESP32_C3.h @@ -11,7 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -#if CONFIG_IDF_TARGET_ESP32C3 +#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S3 #pragma once #include_next "mbedtls/bignum.h" diff --git a/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_impl.h b/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_impl.h index 28219e682..1b1fa8e56 100644 --- a/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_impl.h +++ b/lib/libesp32_div/ESP32-HomeKit/src/port/bignum_impl.h @@ -89,7 +89,7 @@ void esp_mpi_exp_mpi_mod_hw_op(const mbedtls_mpi *X, const mbedtls_mpi *Y, const #endif //CONFIG_IDF_TARGET_ESP32 #endif //ESP_MPI_USE_MONT_EXP -#if CONFIG_IDF_TARGET_ESP32C3 +#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S3 void esp_mpi_exp_mpi_mod_hw_op(const mbedtls_mpi *X, const mbedtls_mpi *Y, const mbedtls_mpi *M, const mbedtls_mpi *Rinv, mbedtls_mpi_uint Mprime, size_t num_words); extern int esp_mpi_exp_mod( mbedtls_mpi *Z, const mbedtls_mpi *X, const mbedtls_mpi *Y, const mbedtls_mpi *M, mbedtls_mpi *_Rinv ); extern size_t esp_mpi_hardware_words(size_t words); diff --git a/lib/libesp32_div/ESP32-HomeKit/src/port/esp_bignum.c b/lib/libesp32_div/ESP32-HomeKit/src/port/esp_bignum.c index 2c0fb07ce..5b8e124ce 100644 --- a/lib/libesp32_div/ESP32-HomeKit/src/port/esp_bignum.c +++ b/lib/libesp32_div/ESP32-HomeKit/src/port/esp_bignum.c @@ -79,7 +79,7 @@ static inline size_t bits_to_words(size_t bits) /* Return the number of words actually used to represent an mpi number. */ -#if defined(MBEDTLS_MPI_EXP_MOD_ALT) || defined(CONFIG_IDF_TARGET_ESP32C3) +#if defined(MBEDTLS_MPI_EXP_MOD_ALT) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32S3) static size_t mpi_words(const mbedtls_mpi *mpi) { for (size_t i = mpi->n; i > 0; i--) { diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_compiler.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_compiler.h index 7ab8cb9af..917c66025 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_compiler.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_compiler.h @@ -23,12 +23,20 @@ * code. */ #if (CONFIG_COMPILER_OPTIMIZATION_PERF) +#ifndef likely #define likely(x) __builtin_expect(!!(x), 1) +#endif +#ifndef unlikely #define unlikely(x) __builtin_expect(!!(x), 0) +#endif #else +#ifndef likely #define likely(x) (x) +#endif +#ifndef unlikely #define unlikely(x) (x) #endif +#endif /* * Utility macros used for designated initializers, which work differently diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_nimble_hci.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_nimble_hci.h index dda03216e..5d98edf57 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_nimble_hci.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/include/esp_nimble_hci.h @@ -1,22 +1,7 @@ /* - * Copyright 2019 Espressif Systems (Shanghai) PTE LTD + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * SPDX-License-Identifier: Apache-2.0 */ #ifdef ESP_PLATFORM diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c index 585082527..f4857ee2d 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/esp-hci/src/esp_nimble_hci.c @@ -1,22 +1,7 @@ /* - * Copyright 2019 Espressif Systems (Shanghai) PTE LTD + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * SPDX-License-Identifier: Apache-2.0 */ #ifdef ESP_PLATFORM @@ -312,6 +297,7 @@ static struct os_mbuf *ble_hci_trans_acl_buf_alloc(void) static void ble_hci_rx_acl(uint8_t *data, uint16_t len) { struct os_mbuf *m; + int rc; int sr; if (len < BLE_HCI_DATA_HDR_SZ || len > MYNEWT_VAL(BLE_ACL_BUF_SIZE)) { return; @@ -320,9 +306,11 @@ static void ble_hci_rx_acl(uint8_t *data, uint16_t len) m = ble_hci_trans_acl_buf_alloc(); if (!m) { + ESP_LOGE(TAG, "%s failed to allocate ACL buffers; increase ACL_BUF_COUNT", __func__); return; } - if (os_mbuf_append(m, data, len)) { + if ((rc = os_mbuf_append(m, data, len)) != 0) { + ESP_LOGE(TAG, "%s failed to os_mbuf_append; rc = %d", __func__, rc); os_mbuf_free_chain(m); return; } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_cfg.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_cfg.h index 2cebffc85..46fdcc551 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_cfg.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_cfg.h @@ -1374,4 +1374,12 @@ #define MYNEWT_VAL_NEWT_FEATURE_LOGCFG (1) #endif +#ifndef MYNEWT_VAL_BLE_USE_ESP_TIMER +#ifdef CONFIG_BT_NIMBLE_USE_ESP_TIMER +#define MYNEWT_VAL_BLE_USE_ESP_TIMER (1) +#else +#define MYNEWT_VAL_BLE_USE_ESP_TIMER (0) +#endif +#endif + #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_mem.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_mem.h index 90e52a20d..9a89c12b2 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_mem.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/include/esp_nimble_mem.h @@ -1,22 +1,7 @@ /* - * Copyright 2020 Espressif Systems (Shanghai) PTE LTD + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * SPDX-License-Identifier: Apache-2.0 */ #ifndef __ESP_NIMBLE_MEM_H__ diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/src/esp_nimble_mem.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/src/esp_nimble_mem.c index 21e22fd26..7e1899db6 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/src/esp_nimble_mem.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/esp_port/port/src/esp_nimble_mem.c @@ -1,23 +1,9 @@ /* - * Copyright 2020 Espressif Systems (Shanghai) PTE LTD + * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * SPDX-License-Identifier: Apache-2.0 */ + #ifdef ESP_PLATFORM #include "esp_attr.h" diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/controller/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/controller/pkg.yml deleted file mode 100644 index 96c636798..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/controller/pkg.yml +++ /dev/null @@ -1,38 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/controller -pkg.description: Controller side of the nimble Bluetooth Smart stack. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - -pkg.req_apis: - - ble_driver - - ble_transport - - stats - -pkg.deps: - - "@apache-mynewt-core/kernel/os" - - nimble - -pkg.init: - ble_ll_init: 'MYNEWT_VAL(BLE_LL_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/controller/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/controller/syscfg.yml deleted file mode 100644 index 85049cb09..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/controller/syscfg.yml +++ /dev/null @@ -1,434 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_CONTROLLER: - description: > - Indicates that NimBLE controller is present. The default value for - this setting shall not be overriden. - value: 1 - - BLE_HW_WHITELIST_ENABLE: - description: > - Used to enable hardware white list - value: 1 - - BLE_LL_SYSVIEW: - description: > - Enable SystemView tracing module for controller. - value: 0 - - BLE_LL_PRIO: - description: 'The priority of the LL task' - type: 'task_priority' - value: 0 - - # Sleep clock accuracy (sca). This is the amount of drift in the system - # during when the device is sleeping (in parts per million). - # - # NOTE: 'the' master sca is an enumerated value based on the sca. Rather - # than have a piece of code calculate this value, the developer must set - # this value based on the value of the SCA using the following table: - # - # SCA between 251 and 500 ppm (inclusive); master sca = 0 - # SCA between 151 and 250 ppm (inclusive); master sca = 1 - # SCA between 101 and 150 ppm (inclusive); master sca = 2 - # SCA between 76 and 100 ppm (inclusive); master sca = 3 - # SCA between 51 and 75 ppm (inclusive); master sca = 4 - # SCA between 31 and 50 ppm (inclusive); master sca = 5 - # SCA between 21 and 30 ppm (inclusive); master sca = 6 - # SCA between 0 and 20 ppm (inclusive); master sca = 7 - # - # For example: - # if your clock drift is 101 ppm, your master should be set to 2. - # if your clock drift is 20, your master sca should be set to 7. - # - # The values provided below are merely meant to be an example and should - # be replaced by values appropriate for your platform. - BLE_LL_OUR_SCA: - description: 'The system clock accuracy of the device.' - value: '60' # in ppm - - BLE_LL_MASTER_SCA: - description: 'Enumerated value based on our sca' - value: '4' - - BLE_LL_TX_PWR_DBM: - description: 'Transmit power level.' - value: '0' - - BLE_LL_NUM_COMP_PKT_ITVL_MS: - description: > - Determines the interval at which the controller will send the - number of completed packets event to the host. Rate is in milliseconds. - value: 2000 - - BLE_LL_MFRG_ID: - description: > - Manufacturer ID. Should be set to unique ID per manufacturer. - value: '0xFFFF' - - # Configuration items for the number of duplicate advertisers and the - # number of advertisers from which we have heard a scan response. - BLE_LL_NUM_SCAN_DUP_ADVS: - description: 'The number of duplicate advertisers stored.' - value: '8' - BLE_LL_NUM_SCAN_RSP_ADVS: - description: > - The number of advertisers from which we have heard a scan - response. Prevents sending duplicate events to host. - value: '8' - - BLE_LL_WHITELIST_SIZE: - description: 'Size of the LL whitelist.' - value: '8' - - BLE_LL_RESOLV_LIST_SIZE: - description: 'Size of the resolving list.' - value: '4' - - # Data length management definitions for connections. These define the - # maximum size of the PDU's that will be sent and/or received in a - # connection. - BLE_LL_MAX_PKT_SIZE: - description: 'The maximum PDU size that can be sent/received' - value: '251' - BLE_LL_SUPP_MAX_RX_BYTES: - description: 'The maximum supported received PDU size' - value: MYNEWT_VAL(BLE_LL_MAX_PKT_SIZE) - BLE_LL_SUPP_MAX_TX_BYTES: - description: 'The maximum supported transmit PDU size' - value: MYNEWT_VAL(BLE_LL_MAX_PKT_SIZE) - BLE_LL_CONN_INIT_MAX_TX_BYTES: - description: > - Used to set the initial maximum transmit PDU size in a - connection. If this is set to a value greater than 27, - the controller will automatically attempt to do the - data length update procedure. The host can always tell - the controller to update this value. - value: '27' - - # The number of slots that will be allocated to each connection - BLE_LL_CONN_INIT_SLOTS: - description: > - This is the number of "slots" allocated to a connection when scheduling - connections. Each slot is 1.25 msecs long. Note that a connection event may - last longer than the number of slots allocated here and may also end earlier - (depending on when the next scheduled event occurs and how much data needs - to be transferred in the connection). However, you will be guaranteed that - a connection event will be given this much time, if needed. Consecutively - scheduled items will be at least this far apart - value: '4' - - BLE_LL_CONN_INIT_MIN_WIN_OFFSET: - description: > - This is the minimum number of "slots" for WindowOffset value used for - CONNECT_IND when creating new connection as a master. Each slot is 1.25 - msecs long. Increasing this value will delay first connection event after - connection is created. However, older TI CC254x controllers cannot change - connection parameters later if WindowOffset was set to 0 in CONNECT_IND. To - ensure interoperability with such devices set this value to 2 (or more). - value: '0' - - # Strict scheduling - BLE_LL_STRICT_CONN_SCHEDULING: - description: > - Forces the scheduler on a central to schedule connections in fixed - time intervals called periods. If set to 0, the scheduler is not forced - to do this. If set to 1, the scheduler will only schedule connections at - period boundaries. See comments in ble_ll_sched.h for more details. - value: '0' - - BLE_LL_ADD_STRICT_SCHED_PERIODS: - description: > - The number of additional periods that will be allocated for strict - scheduling. The total # of periods allocated for strict scheduling - will be equal to the number of connections plus this number. - value: '0' - - BLE_LL_USECS_PER_PERIOD: - description: > - The number of usecs per period. - value: '3250' - - # The number of random bytes to store - BLE_LL_RNG_BUFSIZE: - description: > - The number of random bytes that the link layer will try to - always have available for the host to use. Decreasing this - value may cause host delays if the host needs lots of random - material often. - value: '32' - - BLE_LL_RFMGMT_ENABLE_TIME: - description: > - Time required for radio and/or related components to be fully - enabled before any request from LL is sent. This value is used - by rfmgmt to enable PHY in advance, before request from LL is - made. It depends on radio driver selected and may also depend - on hardware used: - - nrf51 - time required for XTAL to settle - - nrf52 - time required for XTAL to settle - Value is specified in microseconds. If set to 0, rfmgmt keeps - PHY enabled all the time. - value: MYNEWT_VAL(BLE_XTAL_SETTLE_TIME) - - # Configuration for LL supported features. - # - # There are a total 8 features that the LL can support. These can be found - # in v4.2, Vol 6 Part B Section 4.6. - # - # These feature definitions are used to inform a host or other controller - # about the LL features supported by the controller. - # - # NOTE: 'the' controller always supports extended reject indicate and thus - # is not listed here. - - - BLE_LL_CFG_FEAT_LE_ENCRYPTION: - description: > - This option enables/disables encryption support in the controller. - This option saves both both code and RAM. - value: '1' - - BLE_LL_CFG_FEAT_CONN_PARAM_REQ: - description: > - This option enables/disables the connection parameter request - procedure. This is implemented in the controller but is disabled - by default. - value: '1' - - BLE_LL_CFG_FEAT_SLAVE_INIT_FEAT_XCHG: - description: > - This option allows a slave to initiate the feature exchange - procedure. This feature is implemented but currently has no impact - on code or ram size - value: '1' - - BLE_LL_CFG_FEAT_LE_PING: - description: > - This option allows a controller to send/receive LE pings. - Currently, this feature is not implemented by the controller so - turning it on or off has no effect. - value: 'MYNEWT_VAL_BLE_LL_CFG_FEAT_LE_ENCRYPTION' - - BLE_LL_CFG_FEAT_DATA_LEN_EXT: - description: > - This option enables/disables the data length update procedure in - the controller. If enabled, the controller is allowed to change the - size of tx/rx pdu's used in a connection. This option has only - minor impact on code size and non on RAM. - value: '1' - - BLE_LL_CFG_FEAT_LL_PRIVACY: - description: > - This option is used to enable/disable LL privacy. - value: '1' - - BLE_LL_CFG_FEAT_LE_CSA2: - description: > - This option is used to enable/disable support for LE Channel - Selection Algorithm #2. - value: '0' - - BLE_LL_CFG_FEAT_LE_2M_PHY: - description: > - This option is used to enable/disable support for the 2Mbps PHY. - value: '0' - - BLE_LL_CFG_FEAT_LE_CODED_PHY: - description: > - This option is used to enable/disable support for the coded PHY. - value: '0' - - BLE_LL_CFG_FEAT_LL_EXT_ADV: - description: > - This option is used to enable/disable support for Extended - Advertising Feature. That means extended scanner, advertiser - and connect. - value: MYNEWT_VAL(BLE_EXT_ADV) - - BLE_LL_CFG_FEAT_LL_PERIODIC_ADV: - description: > - This option is used to enable/disable support for Periodic - Advertising Feature. - value: MYNEWT_VAL(BLE_PERIODIC_ADV) - - BLE_LL_CFG_FEAT_LL_PERIODIC_ADV_SYNC_CNT: - description: > - This option is used to configure number of supported periodic syncs. - value: MYNEWT_VAL(BLE_MAX_PERIODIC_SYNCS) - - BLE_LL_CFG_FEAT_LL_PERIODIC_ADV_SYNC_LIST_CNT: - description: > - Size of Periodic Advertiser sync list. - value: MYNEWT_VAL(BLE_MAX_PERIODIC_SYNCS) - - BLE_LL_CFG_FEAT_LL_PERIODIC_ADV_SYNC_TRANSFER: - description: > - This option is use to enable/disable support for Periodic - Advertising Sync Transfer Feature. - value: MYNEWT_VAL(BLE_PERIODIC_ADV_SYNC_TRANSFER) - - BLE_LL_EXT_ADV_AUX_PTR_CNT: - description: > - This option configure a max number of scheduled outstanding auxiliary - packets for receive on secondary advertising channel. - value: 0 - - BLE_PUBLIC_DEV_ADDR: - description: > - Allows the target or app to override the public device address - used by the controller. If all zero, the controller will - attempt to retrieve the public device address from its - chip specific location. If non-zero, this address will - be used. - value: "(uint8_t[6]){0x00, 0x00, 0x00, 0x00, 0x00, 0x00}" - - BLE_LL_DTM: - description: > - Enables HCI Test commands needed for Bluetooth SIG certification - value: MYNEWT_VAL(BLE_LL_DIRECT_TEST_MODE) - BLE_LL_DTM_EXTENSIONS: - description: > - Enables non-standard extensions to HCI test commands. Once enabled, - HCI_LE_Transmitter_Test accepts extra parameters in addition to - those defined in Core specification - interval (2 octets) interval between packets (usecs), overrides - standard interval - pkt_count (2 octets) number of packets to transmit, controller - will automatically stop sending packets - after given number of packets was sent - Setting either of these parameters to 0 will configure for default - behavior, as per Core specification. - If specified interval is shorter then allowed by specification it - will be ignored. - Extended parameters shall immediately follow standard parameters. - Controller can accept both standard and extended version of command - depending on specified HCI command length. - value: 0 - - BLE_LL_VND_EVENT_ON_ASSERT: - description: > - This options enables controller to send a vendor-specific event on - an assertion in controller code. The event contains file name and - line number where assertion occured. - value: 0 - - BLE_LL_SYSINIT_STAGE: - description: > - Sysinit stage for the NimBLE controller. - value: 250 - - BLE_LL_DEBUG_GPIO_HCI_CMD: - description: > - GPIO pin number to debug HCI commands flow. Pin is set to high state - when HCI command is being processed. - value: -1 - BLE_LL_DEBUG_GPIO_HCI_EV: - description: > - GPIO pin number to debug HCI events flow. Pin is set to high state - when HCI event is being sent. - value: -1 - BLE_LL_DEBUG_GPIO_SCHED_RUN: - description: > - GPIO pin number to debug scheduler running (on timer). Pin is set - to high state while scheduler is running. - value: -1 - BLE_LL_DEBUG_GPIO_SCHED_ITEM_CB: - description: > - GPIO pin number to debug scheduler item execution times. Pin is set - to high state while item is executed. - value: -1 - -# Below settings allow to change scheduler timings. These should be left at -# default values unless you know what you are doing! - BLE_LL_SCHED_AUX_MAFS_DELAY: - description: > - Additional delay [us] between last ADV_EXT_IND and AUX_ADV_IND PDUs - when scheduling extended advertising event. This extends T_MAFS. - value: 0 - BLE_LL_SCHED_AUX_CHAIN_MAFS_DELAY: - description: > - Additional delay [us] between consecutive AUX_CHAIN_IND PDUs - when scheduling extended or periodic advertising event. This extends - T_MAFS. - value: 0 - BLE_LL_SCHED_SCAN_AUX_PDU_LEN: - description: > - This is expected PDU len for AUX_ADV_IND and subsequent - AUX_CHAIN_IND. When scheduling scan scheduler will reserve time for - receiving this amount of time. Setting this to high value improves - reception of large PDUs but results in wasting scheduler space when - receiving small PDUs only. On the other hand too low value can - result in not being able to scan whole PDU due to being preempted - by next scheduled item. By default size matching legacy ADV_IND PDU - payload is used: ExtHeader (Flags, AdvA, ADI) + 31 bytes of data. - range: 1..257 - value: 41 - - BLE_LL_SCHED_SCAN_SYNC_PDU_LEN: - description: > - This is expected PDU len for AUX_SYNC_IND and subsequent - AUX_CHAIN_IND. When scheduling scan scheduler will reserve time for - receiving this amount of time. Setting this to high value improves - reception of large PDUs but results in wasting scheduler space when - receiving small PDUs only. On the other hand too low value can - result in not being able to scan whole PDU due to being preempted - by next scheduled item. By default size matching PDU with legacy - data size is used: ExtHeader + 31 bytes of data. - range: 1..257 - value: 32 - -# deprecated settings (to be defunct/removed eventually) - BLE_LL_DIRECT_TEST_MODE: - description: use BLE_LL_DTM instead - value: 0 - deprecated: 1 - BLE_XTAL_SETTLE_TIME: - description: use BLE_LL_RFMGMT_ENABLE_TIME instead - value: 0 - deprecated: 1 - -# defunct settings (to be removed eventually) - BLE_DEVICE: - description: Superseded by BLE_CONTROLLER - value: 1 - defunct: 1 - BLE_LP_CLOCK: - description: Superseded by BLE_CONTROLLER - value: 1 - defunct: 1 - BLE_NUM_COMP_PKT_RATE: - description: Superseded by BLE_LL_NUM_COMP_PKT_ITVL_MS - value: '(2 * OS_TICKS_PER_SEC)' - defunct: 1 - - -syscfg.vals.BLE_LL_CFG_FEAT_LL_EXT_ADV: - BLE_LL_CFG_FEAT_LE_CSA2: 1 - BLE_HW_WHITELIST_ENABLE: 0 - BLE_LL_EXT_ADV_AUX_PTR_CNT: 5 - -# Enable vendor event on assert in standalone build to make failed assertions in -# controller code visible when connected to external host -syscfg.vals.!BLE_HOST: - BLE_LL_VND_EVENT_ON_ASSERT: 1 - -syscfg.restrictions: - - OS_CPUTIME_FREQ == 32768 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/pkg.yml deleted file mode 100644 index 816a56355..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf51/pkg.yml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/drivers/nrf51 -pkg.description: BLE driver for nRF51 systems. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - -pkg.apis: ble_driver -pkg.deps: - - nimble - - nimble/controller diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/pkg.yml deleted file mode 100644 index a1ff457e6..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/pkg.yml +++ /dev/null @@ -1,31 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/drivers/nrf52 -pkg.description: BLE driver for nRF52 systems. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - -pkg.apis: ble_driver -pkg.deps: - - nimble - - nimble/controller diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/syscfg.yml deleted file mode 100644 index ce5123721..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/drivers/nrf52/syscfg.yml +++ /dev/null @@ -1,75 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_PHY_SYSVIEW: - description: > - Enable SystemView tracing module for radio driver. - value: 0 - - BLE_PHY_CODED_RX_IFS_EXTRA_MARGIN: - description: > - This defines additional margin for T_IFS tolerance while in - RX on coded phy to allow maintaining connections with some - controllers that exceed proper T_IFS (150 usecs) by more - than allowed 2 usecs. - This value shall be only used for debugging purposes. It is - strongly recommended to keep this settings at default value - to ensure compliance with specification. - value: 0 - BLE_PHY_DBG_TIME_TXRXEN_READY_PIN: - description: > - When set to proper GPIO pin number, this pin will be set - to high state when radio is enabled using PPI channels - 20 or 21 and back to low state on radio EVENTS_READY. - This can be used to measure radio ram-up time. - value: -1 - - BLE_PHY_DBG_TIME_ADDRESS_END_PIN: - description: > - When set to proper GPIO pin number, this pin will be set - to high state on radio EVENTS_ADDRESS and back to low state - on radio EVENTS_END. - This can be used to measure radio pipeline delays. - value: -1 - - BLE_PHY_DBG_TIME_WFR_PIN: - description: > - When set to proper GPIO pin number, this pin will be set - to high state on radio EVENTS_RXREADY and back to low - state when wfr timer expires. - This can be used to check if wfr is calculated properly. - value: -1 - - BLE_PHY_NRF52840_ERRATA_164: - description: > - Enable workaround for anomaly 164 found in nRF52840. - "[164] RADIO: Low selectivity in long range mode" - This shall be only enabled for: - - nRF52840 Engineering A - value: 0 - - BLE_PHY_NRF52840_ERRATA_191: - description: > - Enable workaround for anomaly 191 found in nRF52840. - "[191] RADIO: High packet error rate in BLE Long Range mode" - This shall be only enabled for: - - nRF52840 Engineering B - - nRF52840 Engineering C - - nRF52840 Rev 1 (final silicon) - value: 1 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/mesh/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/mesh/pkg.yml deleted file mode 100644 index 44cc0c732..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/mesh/pkg.yml +++ /dev/null @@ -1,49 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/mesh -pkg.description: Bluetooth Mesh -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - mesh - -pkg.deps: - - "@apache-mynewt-core/kernel/os" - - "@apache-mynewt-core/util/mem" - - "@apache-mynewt-core/crypto/tinycrypt" - - nimble - - nimble/host - -pkg.deps.BLE_MESH_SHELL: - - "@apache-mynewt-core/sys/shell" - -pkg.deps.BLE_MESH_SETTINGS: - - "@apache-mynewt-core/encoding/base64" - - "@apache-mynewt-core/sys/config" - -pkg.req_apis: - - log - - stats - -pkg.init: - bt_mesh_register_gatt: 'MYNEWT_VAL(BLE_MESH_SYSINIT_STAGE)' - ble_mesh_shell_init: 'MYNEWT_VAL(BLE_MESH_SYSINIT_STAGE_SHELL)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/mesh/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/mesh/syscfg.yml deleted file mode 100644 index 98632232b..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/mesh/syscfg.yml +++ /dev/null @@ -1,661 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_MESH_PROV: - description: > - Enable provisioning. It is automatically enabled whenever - BLE_MESH_PB_ADV or BLE_MESH_PB_GATT is set. - value: 1 - - BLE_MESH_PB_ADV: - description: > - Enable this option to allow the device to be provisioned over - the advertising bearer. - value: 1 - - BLE_MESH_PROVISIONER: - description: > - Enable this option to have support for provisioning remote devices. - value: 0 - restrictions: - - (BLE_MESH_PROV) - - BLE_MESH_NODE_COUNT: - description: > - This option specifies how many nodes each network can at most - save in the provisioning database. Range 1-4096 - value: 1 - - BLE_MESH_PROXY: - description: > - Enable proxy. This is automatically set whenever BLE_MESH_PB_GATT or - BLE_MESH_GATT_PROXY is set. - value: 0 - - BLE_MESH_PB_GATT: - description: > - Enable this option to allow the device to be provisioned over - the GATT bearer. - value: 1 - - BLE_MESH_GATT_PROXY: - description: > - This option enables support for the Mesh GATT Proxy Service, - i.e. the ability to act as a proxy between a Mesh GATT Client - and a Mesh network. - value: 1 - - BLE_MESH_NODE_ID_TIMEOUT: - description: > - This option determines for how long the local node advertises - using Node Identity. The given value is in seconds. The - specification limits this to 60 seconds, and implies that to - be the appropriate value as well, so just leaving this as the - default is the safest option. - value: 60 - - BLE_MESH_PROXY_FILTER_SIZE: - descryption: > - This option specifies how many Proxy Filter entries the local - node supports. - value: 1 - - BLE_MESH_SUBNET_COUNT: - description: > - This option specifies how many subnets a Mesh network can - participate in at the same time. - value: 1 - - BLE_MESH_APP_KEY_COUNT: - description: > - This option specifies how many application keys the device can - store per network. - value: 1 - - BLE_MESH_MODEL_KEY_COUNT: - description: > - This option specifies how many application keys each model can - at most be bound to. - value: 1 - - BLE_MESH_MODEL_GROUP_COUNT: - description: > - This option specifies how many group addresses each model can - at most be subscribed to. - value: 1 - - BLE_MESH_LABEL_COUNT: - description: > - This option specifies how many Label UUIDs can be stored. - value: 1 - - BLE_MESH_CRPL: - description: > - This options specifies the maximum capacity of the replay - protection list. This option is similar to the network message - cache size, but has a different purpose. - value: 10 - - BLE_MESH_ADV_TASK_PRIO: - description: > - Advertising task prio (FIXME) - type: task_priority - value: 9 - - BLE_MESH_MSG_CACHE_SIZE: - description: > - Number of messages that are cached for the network. This description - prevent unnecessary decryption operations and unnecessary - relays. This option is similar to the replay protection list, - but has a different purpose. - value: 10 - - BLE_MESH_ADV_BUF_COUNT: - description: > - Number of advertising buffers available. This should be chosen - based on what kind of features the local node shoule have. E.g. - a relay will perform better the more buffers it has. Another - thing to consider is outgoing segmented messages. There must - be at least three more advertising buffers than the maximum - supported outgoing segment count (BT_MESH_TX_SEG_MAX). - value: 6 - - BLE_MESH_IVU_DIVIDER: - description: > - When the IV Update state enters Normal operation or IV Update - in Progress, we need to keep track of how many hours has passed - in the state, since the specification requires us to remain in - the state at least for 96 hours (Update in Progress has an - additional upper limit of 144 hours). - - In order to fulfil the above requirement, even if the node might - be powered off once in a while, we need to store persistently - how many hours the node has been in the state. This doesn't - necessarily need to happen every hour (thanks to the flexible - duration range). The exact cadence will depend a lot on the - ways that the node will be used and what kind of power source it - has. - - Since there is no single optimal answer, this configuration - option allows specifying a divider, i.e. how many intervals - the 96 hour minimum gets split into. After each interval the - duration that the node has been in the current state gets - stored to flash. E.g. the default value of 4 means that the - state is saved every 24 hours (96 / 4). - value: 4 - - BLE_MESH_TX_SEG_MSG_COUNT: - description: > - Maximum number of simultaneous outgoing multi-segment and/or - reliable messages. - value: 4 - - BLE_MESH_RX_SEG_MSG_COUNT: - description: > - Maximum number of simultaneous incoming multi-segment and/or - reliable messages. - value: 2 - - BLE_MESH_RX_SDU_MAX: - description: > - Maximum incoming Upper Transport Access PDU length. This - determines also how many segments incoming segmented messages - can have. Each segment can contain 12 bytes, so this value should - be set to a multiple of 12 to avoid wasted memory. The minimum - requirement is 2 segments (24 bytes) whereas the maximum supported - by the Mesh specification is 32 segments (384 bytes). - value: 72 - - BLE_MESH_TX_SEG_MAX: - description: > - Maximum number of segments supported for outgoing messages. - This value should typically be fine-tuned based on what - models the local node supports, i.e. what's the largest - message payload that the node needs to be able to send. - This value affects memory and call stack consumption, which - is why the default is lower than the maximum that the - specification would allow (32 segments). - - The maximum outgoing SDU size is 12 times this number (out of - which 4 or 8 bytes is used for the Transport Layer MIC). For - example, 5 segments means the maximum SDU size is 60 bytes, - which leaves 56 bytes for application layer data using a - 4-byte MIC and 52 bytes using an 8-byte MIC. - - Be sure to specify a sufficient number of advertising buffers - when setting this option to a higher value. There must be at - least three more advertising buffers (BT_MESH_ADV_BUF_COUNT) - as there are outgoing segments. - value: 3 - - BLE_MESH_SEG_RETRANSMIT_ATTEMPTS: - description: > - Number of retransmit attempts (after the initial transmit) per segment - value: 4 - retrictions: 'BLE_MESH_SEG_RETRANSMIT_ATTEMPTS > 1' - - BLE_MESH_RELAY: - description: > - Support for acting as a Mesh Relay Node. - value: 0 - - BLE_MESH_LOW_POWER: - description: > - Enable this option to be able to act as a Low Power Node. - value: 0 - - BLE_MESH_LPN_ESTABLISHMENT: - description: > - Perform the Friendship establishment using low power, with - the help of a reduced scan duty cycle. The downside of this - is that the node may miss out on messages intended for it - until it has successfully set up Friendship with a Friend - node. - value: 1 - - BLE_MESH_LPN_AUTO: - description: > - Automatically enable LPN functionality once provisioned and start - looking for Friend nodes. If this option is disabled LPN mode - needs to be manually enabled by calling bt_mesh_lpn_set(true). - node. - value: 1 - - BLE_MESH_LPN_AUTO_TIMEOUT: - description: > - Time in seconds from the last received message, that the node - will wait before starting to look for Friend nodes. - value: 15 - - BLE_MESH_LPN_RETRY_TIMEOUT: - description: > - Time in seconds between Friend Requests, if a previous Friend - Request did not receive any acceptable Friend Offers. - value: 8 - - BLE_MESH_LPN_RSSI_FACTOR: - description: > - The contribution of the RSSI measured by the Friend node used - in Friend Offer Delay calculations. 0 = 1, 1 = 1.5, 2 = 2, 3 = 2.5. - value: 0 - - BLE_MESH_LPN_RECV_WIN_FACTOR: - description: > - The contribution of the supported Receive Window used in - Friend Offer Delay calculations. 0 = 1, 1 = 1.5, 2 = 2, 3 = 2.5. - value: 0 - - BLE_MESH_LPN_MIN_QUEUE_SIZE: - description: > - The MinQueueSizeLog field is defined as log_2(N), where N is - the minimum number of maximum size Lower Transport PDUs that - the Friend node can store in its Friend Queue. As an example, - MinQueueSizeLog value 1 gives N = 2, and value 7 gives N = 128. - value: 1 - - BLE_MESH_LPN_RECV_DELAY: - description: > - The ReceiveDelay is the time between the Low Power node - sending a request and listening for a response. This delay - allows the Friend node time to prepare the response. The value - is in units of milliseconds. - value: 100 - - BLE_MESH_LPN_POLL_TIMEOUT: - description: > - PollTimeout timer is used to measure time between two - consecutive requests sent by the Low Power node. If no - requests are received by the Friend node before the - PollTimeout timer expires, then the friendship is considered - terminated. The value is in units of 100 milliseconds, so e.g. - a value of 300 means 30 seconds. - value: 300 - - BLE_MESH_LPN_INIT_POLL_TIMEOUT: - description: > - The initial value of the PollTimeout timer when Friendship - gets established for the first time. After this the timeout - will gradually grow toward the actual PollTimeout, doubling - in value for each iteration. The value is in units of 100 - milliseconds, so e.g. a value of 300 means 3 seconds. - value: MYNEWT_VAL_BLE_MESH_LPN_POLL_TIMEOUT - - BLE_MESH_LPN_SCAN_LATENCY: - description: > - Latency in milliseconds that it takes to enable scanning. This - is in practice how much time in advance before the Receive Window - that scanning is requested to be enabled. - value: 10 - - BLE_MESH_LPN_GROUPS: - description: > - Maximum number of groups that the LPN can subscribe to. - value: 10 - - BLE_MESH_FRIEND: - description: > - Enable this option to be able to act as a Friend Node. - value: 0 - - BLE_MESH_FRIEND_RECV_WIN: - description: > - Receive Window in milliseconds supported by the Friend node. - value: 255 - - BLE_MESH_FRIEND_QUEUE_SIZE: - description: > - Minimum number of buffers available to be stored for each - local Friend Queue. - value: 16 - - BLE_MESH_FRIEND_SUB_LIST_SIZE: - description: > - Size of the Subscription List that can be supported by a - Friend node for a Low Power node. - value: 3 - - BLE_MESH_FRIEND_LPN_COUNT: - description: > - Number of Low Power Nodes the Friend can have a Friendship - with simultaneously. - value: 2 - - BLE_MESH_FRIEND_SEG_RX: - description: > - Number of incomplete segment lists that we track for each LPN - that we are Friends for. In other words, this determines how - many elements we can simultaneously be receiving segmented - messages from when the messages are going into the Friend queue. - value: 1 - - BLE_MESH_CFG_CLI: - description: > - Enable support for the configuration client model. - value: 0 - - BLE_MESH_HEALTH_CLI: - description: > - Enable support for the health client model. - value: 0 - - BLE_MESH_SHELL: - description: > - Activate shell module that provides Bluetooth Mesh commands to - the console. - value: 0 - - BLE_MESH_MODEL_EXTENSIONS: - description: > - Enable support for the model extension concept, allowing the Access - layer to know about Mesh model relationships. - value: 0 - - BLE_MESH_IV_UPDATE_TEST: - description: > - This option removes the 96 hour limit of the IV Update - Procedure and lets the state be changed at any time. - value: 0 - - BLE_MESH_TESTING: - description: > - This option enables testing API. - value: 0 - - BLE_MESH_DEV_UUID: - description: > - Device UUID - value: ((uint8_t[16]){0x11, 0x22, 0}) - - BLE_MESH_SHELL_MODELS: - description: > - Include implementation of some demo models. - value: 0 - - BLE_MESH_OOB_OUTPUT_ACTIONS: - description: > - Supported Output OOB Actions - BT_MESH_NO_OUTPUT = 0, - BT_MESH_BLINK = BIT(0) - BT_MESH_BEEP = BIT(1) - BT_MESH_VIBRATE = BIT(2) - BT_MESH_DISPLAY_NUMBER = BIT(3) - BT_MESH_DISPLAY_STRING = BIT(4) - value: ((BT_MESH_DISPLAY_NUMBER)) - - BLE_MESH_OOB_OUTPUT_SIZE: - description: > - Output OOB size - value: 4 - - BLE_MESH_OOB_INPUT_ACTIONS: - description: > - Supported Input OOB Actions - BT_MESH_NO_INPUT = 0, - BT_MESH_PUSH = BIT(0) - BT_MESH_TWIST = BIT(1) - BT_MESH_ENTER_NUMBER = BIT(2) - BT_MESH_ENTER_STRING = BIT(3) - value: ((BT_MESH_NO_INPUT)) - - BLE_MESH_OOB_INPUT_SIZE: - description: > - Input OOB size - value: 4 - - BLE_MESH_SETTINGS: - description: > - This option enables Mesh settings storage. - value: 1 - - BLE_MESH_STORE_TIMEOUT: - description: > - This value defines in seconds how soon any pending changes - are actually written into persistent storage (flash) after - a change occurs. - value: 2 - - BLE_MESH_SEQ_STORE_RATE: - description: > - This value defines how often the local sequence number gets - updated in persistent storage (i.e. flash). E.g. a value of 100 - means that the sequence number will be stored to flash on every - 100th increment. If the node sends messages very frequently a - higher value makes more sense, whereas if the node sends - infrequently a value as low as 0 (update storage for every - increment) can make sense. When the stack gets initialized it - will add this number to the last stored one, so that it starts - off with a value that's guaranteed to be larger than the last - one used before power off. - value: 128 - - BLE_MESH_RPL_STORE_TIMEOUT: - description: > - This value defines in seconds how soon the RPL gets written to - persistent storage after a change occurs. If the node receives - messages frequently it may make sense to have this set to a - large value, whereas if the RPL gets updated infrequently a - value as low as 0 (write immediately) may make sense. Note that - if the node operates a security sensitive use case, and there's - a risk of sudden power loss, it may be a security vulnerability - to set this value to anything else than 0 (a power loss before - writing to storage exposes the node to potential message - replay attacks). - value: 5 - - BLE_MESH_DEVICE_NAME: - description: > - This value defines BLE Mesh device/node name. - value: '"nimble-mesh-node"' - - BLE_MESH_SYSINIT_STAGE: - description: > - Primary sysinit stage for BLE mesh functionality. - value: 500 - - BLE_MESH_SYSINIT_STAGE_SHELL: - description: > - Secondary sysinit stage for BLE mesh functionality. - value: 1000 - - ### Log settings. - - BLE_MESH_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh log messages. - value: 9 - BLE_MESH_LOG_LVL: - description: > - Minimum level for the BLE Mesh log. - value: 1 - - BLE_MESH_ACCESS_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh Access-related log messages. - value: 10 - BLE_MESH_ACCESS_LOG_LVL: - description: > - Minimum level for the BLE Mesh Access-related log. - value: 1 - - BLE_MESH_ADV_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh advertising log messages. - value: 11 - BLE_MESH_ADV_LOG_LVL: - description: > - Minimum level for the BLE Mesh log. - value: 1 - - BLE_MESH_BEACON_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh Beacon-related log messages. - value: 12 - BLE_MESH_BEACON_LOG_LVL: - description: > - Minimum level for the BLE Mesh Beacon-related log. - value: 1 - - BLE_MESH_CRYPTO_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh cryptographic log messages. - value: 13 - BLE_MESH_CRYPTO_LOG_LVL: - description: > - Minimum level for the BLE Mesh cryptographic log. - value: 1 - - BLE_MESH_FRIEND_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh Friend log messages. - value: 14 - BLE_MESH_FRIEND_LOG_LVL: - description: > - Minimum level for the BLE Mesh Friend log. - value: 1 - - BLE_MESH_LOW_POWER_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh Low Power log messages. - value: 15 - BLE_MESH_LOW_POWER_LOG_LVL: - description: > - Minimum level for the BLE Mesh Low Power log. - value: 1 - - BLE_MESH_MODEL_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh Foundation Models log messages. - value: 16 - BLE_MESH_MODEL_LOG_LVL: - description: > - Minimum level for the BLE Mesh Foundation Models log. - value: 1 - - BLE_MESH_NET_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh Network layer log messages. - value: 17 - BLE_MESH_NET_LOG_LVL: - description: > - Minimum level for the BLE Mesh Network layer log. - value: 1 - - BLE_MESH_PROV_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh Provisioning log messages. - value: 18 - BLE_MESH_PROV_LOG_LVL: - description: > - Minimum level for the BLE Mesh Provisioning log. - value: 1 - - BLE_MESH_PROXY_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh Proxy protocol log messages. - value: 19 - BLE_MESH_PROXY_LOG_LVL: - description: > - Minimum level for the BLE Mesh Proxy protocol log. - value: 1 - - BLE_MESH_SETTINGS_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh persistent settings log messages. - value: 20 - BLE_MESH_SETTINGS_LOG_LVL: - description: > - Minimum level for the BLE Mesh persistent settings log. - value: 1 - - BLE_MESH_TRANS_LOG_MOD: - description: > - Numeric module ID to use for BLE Mesh Transport Layer log messages. - value: 21 - BLE_MESH_TRANS_LOG_LVL: - description: > - Minimum level for the BLE Mesh Transport Layer log. - value: 1 - -syscfg.logs: - BLE_MESH_LOG: - module: MYNEWT_VAL(BLE_MESH_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_LOG_LVL) - - BLE_MESH_ACCESS_LOG: - module: MYNEWT_VAL(BLE_MESH_ACCESS_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_ACCESS_LOG_LVL) - - BLE_MESH_ADV_LOG: - module: MYNEWT_VAL(BLE_MESH_ADV_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_ADV_LOG_LVL) - - BLE_MESH_BEACON_LOG: - module: MYNEWT_VAL(BLE_MESH_BEACON_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_BEACON_LOG_LVL) - - BLE_MESH_CRYPTO_LOG: - module: MYNEWT_VAL(BLE_MESH_CRYPTO_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_CRYPTO_LOG_LVL) - - BLE_MESH_FRIEND_LOG: - module: MYNEWT_VAL(BLE_MESH_FRIEND_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_FRIEND_LOG_LVL) - - BLE_MESH_LOW_POWER_LOG: - module: MYNEWT_VAL(BLE_MESH_LOW_POWER_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_LOW_POWER_LOG_LVL) - - BLE_MESH_MODEL_LOG: - module: MYNEWT_VAL(BLE_MESH_MODEL_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_MODEL_LOG_LVL) - - BLE_MESH_NET_LOG: - module: MYNEWT_VAL(BLE_MESH_NET_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_NET_LOG_LVL) - - BLE_MESH_PROV_LOG: - module: MYNEWT_VAL(BLE_MESH_PROV_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_PROV_LOG_LVL) - - BLE_MESH_PROXY_LOG: - module: MYNEWT_VAL(BLE_MESH_PROXY_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_PROXY_LOG_LVL) - - BLE_MESH_SETTINGS_LOG: - module: MYNEWT_VAL(BLE_MESH_SETTINGS_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_SETTINGS_LOG_LVL) - - BLE_MESH_TRANS_LOG: - module: MYNEWT_VAL(BLE_MESH_TRANS_LOG_MOD) - level: MYNEWT_VAL(BLE_MESH_TRANS_LOG_LVL) - -syscfg.vals.BLE_MESH_SHELL: - BLE_MESH_CFG_CLI: 1 - BLE_MESH_HEALTH_CLI: 1 - BLE_MESH_IV_UPDATE_TEST: 1 - -syscfg.vals.BLE_MESH_GATT_PROXY: - BLE_MESH_PROXY: 1 - -syscfg.vals.BLE_MESH_PB_GATT: - BLE_MESH_PROXY: 1 - BLE_MESH_PROV: 1 - -syscfg.vals.BLE_MESH_PB_ADV: - BLE_MESH_PROV: 1 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pkg.yml deleted file mode 100644 index a063a0b63..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pkg.yml +++ /dev/null @@ -1,55 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host -pkg.description: Host side of the nimble Bluetooth Smart stack. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - -pkg.deps: - - "@apache-mynewt-core/kernel/os" - - "@apache-mynewt-core/sys/log/modlog" - - "@apache-mynewt-core/util/mem" - - nimble - -pkg.deps.BLE_SM_LEGACY: - - "@apache-mynewt-core/crypto/tinycrypt" - -pkg.deps.BLE_SM_SC: - - "@apache-mynewt-core/crypto/tinycrypt" - -pkg.deps.BLE_MONITOR_RTT: - - "@apache-mynewt-core/hw/drivers/rtt" - -pkg.deps.BLE_MESH: - - nimble/host/mesh - -pkg.req_apis: - - ble_transport - - console - - stats - -pkg.init: - ble_hs_init: 'MYNEWT_VAL(BLE_HS_SYSINIT_STAGE)' - -pkg.down.BLE_HS_STOP_ON_SHUTDOWN: - ble_hs_shutdown: 200 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/README.txt b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/README.txt deleted file mode 100644 index bb03b18ca..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/README.txt +++ /dev/null @@ -1,8 +0,0 @@ -This folder contains qualification tests results against BT SIG Profile Test -Suite. - -pts-FOO.txt files contain result for specific profiles or protocols. This -includes PTS version, test date, enabled tests, results etc. - -In addition to tests results 'tpg' folder constains Test Plang Generator -configuration files that can be imported by PTS for tests configuration. diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-gap.txt b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-gap.txt deleted file mode 100644 index 29ed2446e..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-gap.txt +++ /dev/null @@ -1,367 +0,0 @@ -PTS test results for GAP - -PTS version: 7.5.0 -Tested: 27-Sept-2019 - -Results: -PASS test passed -FAIL test failed -INC test is inconclusive -N/A test is disabled due to PICS setup - -------------------------------------------------------------------------------- -Test Name Result Notes -------------------------------------------------------------------------------- - -GAP/BROB/BCST/BV-01-C PASS advertise-configure legacy=1 connectable=0 scannable=0 -GAP/BROB/BCST/BV-02-C PASS advertise-configure legacy=1 connectable=0 scannable=0 - -GAP/BROB/BCST/BV-03-C PASS set irk= e.g: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:11 - Note: in PTS IXIT please set: - TSPX_iut_device_IRK_for_resolvable_privacy_address_generation_procedure=11000000000000000000000000000000 - set advertise-set-adv-data name= flags=4 - advertise-configure connectable=0 scannable=0 own_addr_type=rpa_pub -GAP/BROB/BCST/BV-04-C PASS TSPX_advertising_data=07086E696D626C65 - advertise-set-adv-data name=nimble - set addr_type=random addr=01:3e:56:f7:46:21 - advertise-configure connectable=0 scannable=0 own_addr_type=random -GAP/BROB/BCST/BV-05-C N/A -GAP/BROB/OBSV/BV-01-C PASS scan passive -GAP/BROB/OBSV/BV-02-C PASS scan -GAP/BROB/OBSV/BV-03-C PASS scan -GAP/BROB/OBSV/BV-04-C PASS connect peer_addr= - security-set-data bonding=1 - security-pair conn= - - -GAP/BROB/OBSV/BV-05-C PASS scan own_addr_type=rpa_pub -GAP/BROB/OBSV/BV-06-C PASS scan own_addr_type=rpa_pub -------------------------------------------------------------------------------- - -GAP/DISC/NONM/BV-01-C PASS advertise-configure connectable=0 legacy=1 adverdise=non -GAP/DISC/NONM/BV-02-C PASS advertise-configure connectable=0 - -GAP/DISC/LIMM/BV-01-C N/A -GAP/DISC/LIMM/BV-02-C N/A -GAP/DISC/LIMM/BV-03-C PASS advertise-configure legacy=1 connectable=0 - advertise-set-adv-data flags=5 - advertise-start duration= e.g.3000 -GAP/DISC/LIMM/BV-04-C PASS advertise-configure legacy=1 connectable=0 - advertise-set-adv-data flags=5 - advertising-start duration= -GAP/DISC/GENM/BV-01-C N/A -GAP/DISC/GENM/BV-02-C N/A -GAP/DISC/GENM/BV-03-C PASS advertise-configure legacy=1 connectable=0 - advertise-set-adv-data flags=6 - advertise-start -GAP/DISC/GENM/BV-04-C PASS advertise-configure legacy=1 connectable=0 - advertise-set-adv-data flags=6 - advertising-start - -GAP/DISC/LIMP/BV-01-C PASS scan limited=1 nodups=1 -GAP/DISC/LIMP/BV-02-C PASS scan limited=1 nodups=1 -GAP/DISC/LIMP/BV-03-C PASS scan limited=1 nodups=1 -GAP/DISC/LIMP/BV-04-C PASS scan limited=1 nodups=1 -GAP/DISC/LIMP/BV-05-C PASS scan limited=1 nodups=1 - -GAP/DISC/GENP/BV-01-C PASS scan nodups=1 -GAP/DISC/GENP/BV-02-C PASS scan nodups=1 -GAP/DISC/GENP/BV-03-C PASS scan nodups=1 - -GAP/DISC/GENP/BV-04-C PASS scan nodups=1 - -GAP/DISC/GENP/BV-05-C PASS scan nodups=1 - -GAP/DISC/RPA/BV-01-C N/A scan nodups=1 -------------------------------------------------------------------------------- - -GAP/IDLE/GIN/BV-01-C N/A -GAP/IDLE/GIN/BV-02-C N/A -GAP/IDLE/NAMP/BV-01-C PASS advertise-configure connectable=1 legacy=1 - advertising-start - gatt-discover-full conn= - gatt-show - - gatt-read conn= uuid=0x2a00 start= end= - disconnect conn= -GAP/IDLE/NAMP/BV-02-C PASS - advertise-configure connectable=1 legacy=1 - advertising-start -GAP/IDLE/DED/BV-01-C N/A -GAP/IDLE/DED/BV-02-C N/A -------------------------------------------------------------------------------- - -GAP/CONN/NCON/BV-01-C PASS advertise-configure connectable=0 legacy=1 - advertising-start -GAP/CONN/NCON/BV-02-C PASS advertise-configure connectable=0 legacy=1 - advertise-set-adv-data flags=6 - advertise-start -GAP/CONN/NCON/BV-03-C PASS advertise-configure connectable=0 legacy=1 - advertise-set-adv-data flags=5 - advertise-start - -GAP/CONN/DCON/BV-01-C PASS advertise-configure connectable=0 directed=1 peer_addr= - advertise-start -GAP/CONN/DCON/BV-02-C N/A -GAP/CONN/DCON/BV-03-C N/A - -GAP/CONN/UCON/BV-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=4 - advertise-start -GAP/CONN/UCON/BV-02_C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=5 - advertise-start -GAP/CONN/UCON/BV-03_C PASS adbertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 -GAP/CONN/UCON/BV-04_C N/A -GAP/CONN/UCON/BV-05_C N/A -GAP/CONN/UCON/BV-06_C N/A - -GAP/CONN/ACEP/BV-01-C PASS white-list addr_type=public addr= - connect - disconnect conn= -GAP/CONN/ACEP/BV-02-C N/A - -GAP/CONN/GCEP/BV-01-C PASS connect peer_addr= - disconnect conn= -GAP/CONN/GCEP/BV-02-C PASS connect peer_addr= -GAP/CONN/GCEP/BV-03-C PASS set irk= - connect peer_addr= own_addr_type=rpa_pub - security-set-data bonding=1 our_key_dist=7 their_key_dist=7 - security-pair conn= - connect peer_addr= - disconnect conn=1 -GAP/CONN/GCEP/BV-04-C N/A -GAP/CONN/SCEP/BV-01-C PASS white-list addr_type=public addr= - connect - disconnect conn= -GAP/CONN/SCEP/BV-02-C INC -GAP/CONN/DCEP/BV-01-C PASS connect peer_addr= - disconnect conn= -GAP/CONN/DCEP/BV-02-C INC -GAP/CONN/DCEP/BV-03-C PASS connect peer_addr= - disconnect conn= -GAP/CONN/DCEP/BV-04-C PASS connect peer_addr= - disconnect conn= - -GAP/CONN/CPUP/BV-01-C PASS advertise-start - conn-update-params conn= -GAP/CONN/CPUP/BV-02-C PASS advertise-start - conn-update-params conn= -GAP/CONN/CPUP/BV-03-C PASS advertise-start - conn-update-params conn= -GAP/CONN/CPUP/BV-04-C PASS connect peer_addr= - disconnect conn= -GAP/CONN/CPUP/BV-05-C PASS connect peer_addr= - disconnect conn= -GAP/CONN/CPUP/BV-06-C PASS conect peer_addr= - conn-update-params conn= eg.latency=20 - disconnect conn= -GAP/CONN/CPUP/BV-08-C PASS advertise-configure legacy=1 connectable=1 - advertise-set-data name= - advertise-start - -GAP/CONN/TERM/BV-01-C PASS connect peer_addr= - disconnect conn= -GAP/CONN/PRDA/BV-01-C N/A -GAP/CONN/PRDA/BV-02-C N/A -------------------------------------------------------------------------------- -GAP/BOND/NBON/BV-01-C PASS security-set-data bonding=0 - connect peer_addr= - - connect peer_addr= - -GAP/BOND/NBON/BV-02-C PASS security-set-data bonding=0 - connect peer_addr= - security-pair conn= - - connect peer_addr= - security-pair conn= - -GAP/BOND/NBON/BV-03-C PASS security-set-data bonding=0 - advertise-configure legacy=1 connectable=1 - advertise-set-data name= - advertise-start - - -GAP/BOND/BON/BV-01-C PASS security-set-data bonding=1 sc=1 our_key_dist=7 their_key_dist=7 - advertise-configure legacy=1 connectable=1 - advertise-start - security-start conn= - - advertise-start - -GAP/BOND/BON/BV-02-C PASS security-set-data bonding=1 - connect peer_addr= - security-pair conn= - - connect peer_addr= - seccurity-pair conn= - -GAP/BOND/BON/BV-03-C PASS security-set-sm-data bonding=1 our_key_dist=7 their_key_dist=7 - advertise-configure legacy=1 connectable=1 - advertise-start - - advertise-start - -GAP/BOND/BON/BV-04-C PASS security-set-data bonding=1 - connect-peer_addr= - disconnect conn= - connect peer_addr= - security-pair conn= - disconnect conn= -------------------------------------------------------------------------------- - -GAP/SEC/AUT/BV-11-C PASS security-set-data io_capabilities=1 sc=1 - advertise-configure legacy=1 connectable=1 - advertising-start - Note: in PTS enter handle for characteristics - value which requires encryption for read (gatt-show-local) - auth-passkey conn= action=3 key=123456 - Note: enter '123456' passkey in PTS -GAP/SEC/AUT/BV-12-C PASS security-set-data io_capabilities=1 bonding=1 mitm_flag=1 sc=1 our_key_dist=7 their_key_dist=7 - connect peer_addr= - gatt-show-local - Note: in PTS enter handle for characteristics - value which requires encryption for read - auth-passkey conn= action=3 key=123456 - Note: enter '123456' passkey in PTS -GAP/SEC/AUT/BV-13-C PASS Note: in PTS confirm that IUT supports GATT Server - security-set-data io_capabilities=1 bonding=1 mitm_flag=1 sc=1 our_key_dist=7 their_key_dist=7 - connect peer_addr= - gatt-show-local - Note: in PTS enter handle for characteristics - value which requires authenticated pairing for read - auth-passkey conn= action=3 key=123456 - Note: enter '123456' passkey in PTS -GAP/SEC/AUT/BV-14-C PASS security-set-data io_capabilities=1 - advertise-configure legacy=1 connectable=1 - advertise-start - gatt-show-local - Note: in PTS enter handle for characteristics - value which requires authenticated pairing for read - auth-passkey conn= action=3 key=123456 - Note: enter '123456' passkey in PTS -GAP/SEC/AUT/BV-15-C N/A security-set-data bonding=1 io_capabilities=4 mitm_flag=1 sc=1 our_key_dist=7 their_key_dist=7 - advertise-configure legacy=1 connectable=1 - advertise-start - auth-passkey conn= action=2 key= - advertise-start - gatt-show-local - Note: in PTS enter handle for characteristics - value which requires authenticated pairing for read -GAP/SEC/AUT/BV-16-C N/A security-set-data io_capabilities=1 bonding=1 mitm_flag=1 sc=1 our_key_dist=7 their_key_dist=7 - connect peer_addr= - auth-passkey conn= action=3 key=123456 - Note: enter '123456' passkey in PTS - connect peer_addr= - gatt-show-local - Note: in PTS enter handle for characteristics - value which requires authenticated pairing for read -GAP/SEC/AUT/BV-17-C N/A -GAP/SEC/AUT/BV-18-C N/A -GAP/SEC/AUT/BV-19-C N/A -GAP/SEC/AUT/BV-20-C N/A -GAP/SEC/AUT/BV-21-C N/A -GAP/SEC/AUT/BV-22-C N/A -GAP/SEC/AUT/BV-23-C N/A -GAP/SEC/AUT/BV-24-C N/A - -GAP/SEC/CSIGN/BV-01-C N/A -GAP/SEC/CSIGN/BV-02-C N/A - -GAP/SEC/CSIGN/BI-01-C N/A -GAP/SEC/CSIGN/BI-02-C N/A -GAP/SEC/CSIGN/BI-03-C N/A -GAP/SEC/CSIGN/BI-04-C N/A -------------------------------------------------------------------------------- - -GAP/PRIV/CONN/BV-01-C N/A -GAP/PRIV/CONN/BV-02-C N/A -GAP/PRIV/CONN/BV-03-C N/A -GAP/PRIV/CONN/BV-04-C INC -GAP/PRIV/CONN/BV-05-C N/A -GAP/PRIV/CONN/BV-06-C N/A -GAP/PRIV/CONN/BV-07-C N/A -GAP/PRIV/CONN/BV-08-C N/A -GAP/PRIV/CONN/BV-09-C N/A -GAP/PRIV/CONN/BV-10-C N/A -GAP/PRIV/CONN/BV-11-C N/A -------------------------------------------------------------------------------- - -GAP/ADV/BV-01-C PASS advertise-set-adv_data uuid16=0x1802 - advertise-start - advertise-stop -GAP/ADV/BV-02-C PASS advertise-set-adv_data name= - advertise-start - advertise-stop -GAP/ADV/BV-03-C PASS advertise-set-adv_data flags=6 - advertise-start - advertise-stop -GAP/ADV/BV-04-C PASS advertise-set-adv_data mfg_data=ff:ff - advertise-start - advertise-stop -GAP/ADV/BV-05-C PASS advertise-set-adv_data tx_pwr_lvl=10 - advertise-start - advertise-stop -GAP/ADV/BV-08-C N/A -GAP/ADV/BV-09-C N/A -GAP/ADV/BV-10-C PASS advetrise-set-adv_data service_data_uuid16=18:02:ff:ff - advertise-start - advertise-stop -GAP/ADV/BV-11-C PASS advertise-set -dv_data appearance=12 - advertise-start - advertise-stop -GAP/ADV/BV-12-C N/A -GAP/ADV/BV-13-C N/A -GAP/ADV/BV-14-C N/A -GAP/ADV/BV-15-C N/A -GAP/ADV/BV-16-C N/A -GAP/ADV/BV-17-C PASS In PTS: TSPX_URI= - set-adv-data uri= - advertise-start - advertise-stop -------------------------------------------------------------------------------- - -GAP/GAT/BV-01-C PASS - advertising-start - - connect peer_addr= -GAP/GAT/BV-02-C N/A -GAP/GAT/BV-03-C N/A -GAP/GAT/BV-04-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GAP/GAT/BV-05-C N/A -GAP/GAT/BV-06-C N/A -GAP/GAT/BV-07-C N/A -GAP/GAT/BV-08-C N/A ----------------------------------------------------------------------------- - -GAP/DM/NCON/BV-01-C N/A -GAP/DM/CON/BV-01-C N/A -GAP/DM/NBON/BV-01-C N/A -GAP/DM/BON/BV-01-C N/A -GAP/DM/GIN/BV-01-C N/A -GAP/DM/LIN/BV-01-C N/A -GAP/DM/NAD/BV-01-C N/A -GAP/DM/NAD/BV-02-C N/A -GAP/DM/LEP/BV-01-C N/A -GAP/DM/LEP/BV-02-C N/A -GAP/DM/LEP/BV-04-C N/A -GAP/DM/LEP/BV-05-C N/A -GAP/DM/LEP/BV-06-C N/A -GAP/DM/LEP/BV-07-C N/A -GAP/DM/LEP/BV-08-C N/A -GAP/DM/LEP/BV-09-C N/A -GAP/DM/LEP/BV-10-C N/A -GAP/DM/LEP/BV-11-C N/A -------------------------------------------------------------------------------- - -GAP/MOD/NDIS/BV-01-C N/A -GAP/MOD/LDIS/BV-01-C N/A -GAP/MOD/LDIS/BV-02-C N/A -GAP/MOD/LDIS/BV-03-C N/A -GAP/MOD/GDIS/BV-01-C N/A -GAP/MOD/GDIS/BV-02-C N/A -GAP/MOD/NCON/BV-01-C N/A -GAP/MOD/CON/BV-01-C N/A \ No newline at end of file diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-gatt.txt b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-gatt.txt deleted file mode 100644 index 74c0a2e01..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-gatt.txt +++ /dev/null @@ -1,508 +0,0 @@ -PTS test results for GATT - -PTS version: 7.5.0 -Tested: 27-Sept-2019 - -Results: -PASS test passed -FAIL test failed -INC test is inconclusive -N/A test is disabled due to PICS setup - -------------------------------------------------------------------------------- -Test Name Result Notes -------------------------------------------------------------------------------- -GATT/CL/GAC/BV-01-C PASS connect peer_addr= - gatt-exchanche-mtu conn= - gatt-write conn= long=1 attr= value= - disconnect conn= -------------------------------------------------------------------------------- - -GATT/CL/GAD/BV-01-C PASS connect peer_addr= - gatt-discover-service conn= - gatt-show - - disconnect conn= - -GATT/CL/GAD/BV-02-C PASS connect peer_addr= - gatt-discover-service conn= uuid= - gatt-show - - disconnect conn= - -GATT/CL/GAD/BV-03-C PASS connect peer_addr= - gatt-find-included-services conn= start=1 end=0xffff - - disconnect conn= - -GATT/CL/GAD/BV-04-C PASS connect peer_addr= - gatt-discover-service conn= uuid= - gatt-discover-characteristic conn= start= end= - gatt-show - - disconnect conn= - -GATT/CL/GAD/BV-05-C PASS connect peer_addr= - gatt-discover-service conn= - gatt-discover-characteristic conn= uuid= start= end= - gatt-show - - disconnect conn= - -GATT/CL/GAD/BV-06-C PASS connect peer_addr= - gatt-discover-service conn= - gatt-discover-characteristic conn= start= end= - gatt-discover-descriptor conn= start= end= - - disconnect conn= - -GATT/CL/GAD/BV-07-C N/A -GATT/CL/GAD/BV-08-C N/A -------------------------------------------------------------------------------- - -GATT/CL/GAR/BV-01-C PASS connect peer_addr= - gatt-read conn= attr= - - disconnect conn= -GATT/CL/GAR/BI-01-C PASS connect peer_addr= - gatt-read conn= attr= - - disconnect conn= -GATT/CL/GAR/BI-02-C PASS connect peer_addr= - gatt-read conn= attr= - - disconnect conn= -GATT/CL/GAR/BI-03-C N/A - -GATT/CL/GAR/BI-04-C PASS connect peer_addr= - gatt-read conn= attr= - disconnect conn= - -GATT/CL/GAR/BI-05-C PASS connect peer_addr= - gatt-read conn= attr= - - disconnect conn= -GATT/CL/GAR/BV-03-C PASS connect peer_addr= - gatt-read conn= uuid= start=1 end=0xffff - - - disconnect conn= -GATT/CL/GAR/BI-06-C PASS connect peer_addr= - gatt-read conn= uuid= start= end= - disconnect conn= - -GATT/CL/GAR/BI-07-C PASS connect peer_addr= - gatt-read conn= uuid= start= end= - disconnect conn= - -GATT/CL/GAR/BI-09-C N/A -GATT/CL/GAR/BI-10-C PASS connect peer_addr= - gatt-read conn= uuid= start= end= - disconnect conn= - -GATT/CL/GAR/BI-11-C PASS connect perr_addr= - gatt-read conn= start= end= - disconnect conn= - -GATT/CL/GAR/BV-04-C PASS connect peer_addr= - gatt-read conn= long=1 attr= - - - disconnect conn= -GATT/CL/GAR/BI-12-C PASS connect peer_addr= - gatt-read conn= long=1 attr= - - disconnect conn= -GATT/CL/GAR/BI-13-C PASS connect peer_addr= - gatt-read conn= long=1 attr= offset= - - disconnect conn= -GATT/CL/GAR/BI-14-C PASS connect peer_addr= - gatt-read conn= long=1 attr= - disconnect conn= - -GATT/CL/GAR/BI-15-C N/A - -GATT/CL/GAR/BI-16-C PASS connect peer_addr= - gatt-read conn= long=1 attr= - disconnect conn= - -GATT/CL/GAR/BI-17-C PASS connect peer_addr= - gatt-read conn= long=1 attr= - - disconnect conn= -GATT/CL/GAR/BV-05-C PASS connect peer_addr= - gatt-read conn= attr= attr= - disconnect conn= -GATT/CL/GAR/BI-18-C PASS connect peer_addr= - gatt-read conn= attr= attr= - - disconnect conn= -GATT/CL/GAR/BI-19-C PASS connect peer_addr= - gatt-read conn= attr= attr= - disconnect conn= - -GATT/CL/GAR/BI-20-C N/A - -GATT/CL/GAR/BI-21-C PASS connect peer_addr= - gatt-read conn= attr= attr= - disconnect conn= - -GATT/CL/GAR/BI-22-C PASS connect peer_addr= - gatt-read conn= attr= attr= - - disconnect conn= -GATT/CL/GAR/BV-06-C PASS connect peer_addr= - gatt-read conn= attr= - - disconnect conn= -GATT/CL/GAR/BV-07-C PASS connect peer_addr= - gatt-read conn= long=1 attr= - - - disconnect conn= -GATT/CL/GAR/BI-34-C N/A -GATT/CL/GAR/BI-35-C PASS connect peer_addr= - gatt-read conn= long=1 attr= - - disconnect conn= -------------------------------------------------------------------------------- - -GATT/CL/GAW/BV-01-C PASS connect peer_addr= - gatt-write no_rsp=1 conn= attr= value= - disconnect conn= -GATT/CL/GAW/BV-02-C N/A - -GATT/CL/GAW/BV-03-C PASS connect peer_addr= - gatt-write conn= attr= value= - disconnect conn= -GATT/CL/GAW/BI-02-C PASS connect peer_addr= - gatt-write conn= attr= value= - disconnect conn= -GATT/CL/GAW/BI-03-C PASS connect peer_addr= - gatt-write conn= attr= value= - disconnect conn= -GATT/CL/GAW/BI-04-C N/A - -GATT/CL/GAW/BI-05-C PASS connect peer_addr= - gatt-write conn= attr= value= - disconnect conn= -GATT/CL/GAW/BI-06-C PASS connect peer_addr= - gatt-write conn= attr= value= - disconnect conn= -GATT/CL/GAW/BV-05-C PASS connect peer_addr= - gatt-write long=1 conn= attr= value= - disconnect conn= -GATT/CL/GAW/BI-07-C PASS connect peer_addr= - gatt-write long=1 conn= attr= value= - disocnnect conn= -GATT/CL/GAW/BI-08-C PASS connect peer_addr= - gatt-write long=1 conn= attr= value= - diconnect conn= -GATT/CL/GAW/BI-09-C PASS connect peer_addr= - gatt-write long=1 conn= attr= value= offset= - diconnect conn=1 -GATT/CL/GAW/BI-11-C N/A - -GATT/CL/GAW/BI-12-C PASS connect peer_addr= - gatt-write long=1 conn= attr= value= - disconnect conn= -GATT/CL/GAW/BI-13-C PASS connect peer_addr= - gatt-write long=1 conn= attr= value= - diconnect conn= -GATT/CL/GAW/BV-06-C PASS connect peer_addr= - gatt-write long=1 conn= attr= value= - -GAAT/CL/GAW/BV-08-C PASS connect peer_addr= - gat-write conn= attr= value= - -GATT/CL/GAW/BV-09-C PASS connect peer_addr= - gatt-write long=1 conn= attr= value= - -GATT/CL/GAW/BI-32-C PASS connect peer_addr= - gatt-write conn= attr= value= attr= value= - disconnect conn= -GATT/CL/GAW/BI-33-C PASS connect peer_addr= - gatt-write conn= attr= value= - disconnect conn= -GATT/CL/GAW/BI-34-C PASS connect peer_addr= - gatt-write long=1 conn= attr= value= - disconnect conn= - -------------------------------------------------------------------------------- - -GATT/CL/GAN/BV-01-C PASS connect peer_addr= - gatt-write conn= attr= value=01:00 - Note: verify that the notification was received - disconnect conn= -------------------------------------------------------------------------------- - -GATT/CL/GAI/BV-01-C PASS connect peer_addr= - gatt-write conn= attr= value=01:00 - Note: verify that the notification was received - disconnect conn= -------------------------------------------------------------------------------- - -GATT/CL/GAS/BV-01-C PASS connect peer_addr= - disconnect conn= -------------------------------------------------------------------------------- - -GATT/CL/GAT/BV-01-C PASS connect peer_addr= - gatt-read conn= attr= -GATT/CL/GAT/BV-02-C PASS connect peer_addr= - gatt-write conn= attr= value= -------------------------------------------------------------------------------- - -GATT/CL/GPA/BV-01-C N/A -GATT/CL/GPA/BV-02-C N/A -GATT/CL/GPA/BV-03-C N/A -GATT/CL/GPA/BV-04-C N/A -GATT/CL/GPA/BV-05-C N/A -GATT/CL/GPA/BV-06-C N/A -GATT/CL/GPA/BV-07-C N/A -GATT/CL/GPA/BV-08-C N/A -GATT/CL/GPA/BV-11-C N/A -GATT/CL/GPA/BV-12-C N/A -------------------------------------------------------------------------------- - -GATT/SR/GAC/BV-01-C PASS set mtu=25 - advertise-configure connectable=1 legacy=1 - advertise-start - advertise-start -------------------------------------------------------------------------------- - -GATT/SR/GAD/BV-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - gatt-show-local - -GATT/SR/GAD/BV-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - gatt-show-local - -GATT/SR/GAD/BV-03-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - gatt-show-local - -GATT/SR/GAD/BV-04-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAD/BV-05-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAD/BV-06-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAD/BV-07-C N/A -GATT/SR/GAD/BV-08-C N/A -------------------------------------------------------------------------------- - -GATT/SR/GAR/BV-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAR/BI-03-C N/A -GATT/SR/GAR/BI-04-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-05-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BV-03-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-06-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - gatt-show-local - - -GATT/SR/GAR/BI-07-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAR/BI-08-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-09-C N/A -GATT/SR/GAR/BI-10-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-11-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAR/BV-04-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-12-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAR/BI-13-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-14-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAR/BI-15-C N/A -GATT/SR/GAR/BI-16-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-17-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BV-05-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-18-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAR/BI-19-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAR/BI-20-C N/A -GATT/SR/GAR/BI-21-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-22-C PASS advertise-configure connectable=1 legacy=1 - advertise-startt -GATT/SR/GAR/BV-06-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-23-C N/A -GATT/SR/GAR/BI-24-C N/A -GATT/SR/GAR/BI-25-C N/A -GATT/SR/GAR/BI-26-C N/A -GATT/SR/GAR/BI-27-C N/A -GATT/SR/GAR/BV-07-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BV-08-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAR/BI-28-C N/A -GATT/SR/GAR/BI-29-C N/A -GATT/SR/GAR/BI-30-C N/A -GATT/SR/GAR/BI-31-C N/A -GATT/SR/GAR/BI-32-C N/A -GATT/SR/GAR/BI-33-C N/A -GATT/SR/GAR/BI-34-C N/A -GATT/SR/GAR/BI-35-C N/A -------------------------------------------------------------------------------- - -GATT/SR/GAW/BV-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BV-02-C N/A -GATT/SR/GAW/BI-01-C N/A -GATT/SR/GAW/BV-03-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAW/BI-03-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-04-C N/A -GATT/SR/GAW/BI-05-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-06-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BV-05-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-07-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAW/BI-08-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAW/BI-09-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-11-C N/A -GATT/SR/GAW/BI-12-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-13-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BV-06-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BV-10-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-14-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAW/BI-15-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAW/BI-17-C N/A -GATT/SR/GAW/BI-18-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-19-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BV-11-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BV-07-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BV-08-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-20-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAW/BI-21-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAW/BI-22-C N/A -GATT/SR/GAW/BI-23-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-24-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BV-09-C PASS advertise-configure connectable=1 legacy=1q - advertise-start -GATT/SR/GAW/BI-25-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAW/BI-26-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -GATT/SR/GAW/BI-27-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-29-C N/A -GATT/SR/GAW/BI-30-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-31-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-32-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-33-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-34-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/GAW/BI-35-C PASS advertise-configure connectable=1 legacy=1 - advertise-start ------------------------------------------------------------------------------- - -GATT/SR/GAN/BV-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - gatt-notify attr= ------------------------------------------------------------------------------- - -GATT/SR/GAI/BV-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - gatt-notify attr= -------------------------------------------------------------------------------- - -GATT/SR/GAS/BV-01-C PASS Note: set TSPX_security_enabled to TRUE - security-set-data bonding=1 our_key_dist=7 their_key_dist=7 - advertise-configure connectable=1 legacy=1 - advertise-start - - gatt-service-changed start=1 end=0xffff - advertise-start - security-start conn= -------------------------------------------------------------------------------- - -GATT/SR/GAT/BV-01-C PASS advertise-start - gatt-notify attr=0x0008 ------------------------------------------------------------------------------- - -GATT/SR/GPA/BV-01-C N/A -GATT/SR/GPA/BV-02-C N/A -GATT/SR/GPA/BV-03-C N/A -GATT/SR/GPA/BV-04-C N/A -GATT/SR/GPA/BV-05-C N/A -GATT/SR/GPA/BV-06-C N/A -GATT/SR/GPA/BV-07-C N/A -GATT/SR/GPA/BV-08-C N/A -GATT/SR/GPA/BV-11-C N/A -GATT/SR/GPA/BV-12-C N/A -------------------------------------------------------------------------------- - -GATT/SR/UNS/BI-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -GATT/SR/UNS/BI-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - --------------------------------------------------------------------------------- - -GATT/SR/GPM/BV-01-C N/A - diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-l2cap.txt b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-l2cap.txt deleted file mode 100644 index c09add916..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-l2cap.txt +++ /dev/null @@ -1,304 +0,0 @@ -PTS test results for L2CAP - -PTS version: 7.5.0 -Tested: 07-Oct-2019 - -syscfg.vals: - BLE_EXT_ADV: 1 - BLE_PUBLIC_DEV_ADDR: "((uint8_t[6]){0x01, 0xff, 0xff, 0xc0, 0xde, 0xc0})" - BLE_SM_LEGACY: 1 - BLE_SM_SC: 1 - BLE_L2CAP_COC_MAX_NUM: 5 - BLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL: 9 - BLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL: 30 - BLE_SVC_GAP_PPCP_SUPERVISION_TMO: 2000 - CONSOLE_HISTORY_SIZE: 10 - -Results: -PASS test passed -FAIL test failed -INC test is inconclusive -N/A test is disabled due to PICS setup - -------------------------------------------------------------------------------- -Test Name Result Notes -------------------------------------------------------------------------------- - -L2CAP/COS/CED/BV-01-C N/A -L2CAP/COS/CED/BV-03-C N/A -L2CAP/COS/CED/BV-04-C N/A -L2CAP/COS/CED/BV-05-C N/A -L2CAP/COS/CED/BV-07-C N/A -L2CAP/COS/CED/BV-08-C N/A -L2CAP/COS/CED/BV-09-C N/A -L2CAP/COS/CED/BV-10-C N/A -L2CAP/COS/CED/BV-11-C N/A -L2CAP/COS/CED/BI-01-C N/A -------------------------------------------------------------------------------- - -L2CAP/COS/CFD/BV-01-C N/A -L2CAP/COS/CFD/BV-02-C N/A -L2CAP/COS/CFD/BV-03-C N/A -L2CAP/COS/CFD/BV-08-C N/A -L2CAP/COS/CFD/BV-09-C N/A -L2CAP/COS/CFD/BV-10-C N/A -L2CAP/COS/CFD/BV-11-C N/A -L2CAP/COS/CFD/BV-12-C N/A -L2CAP/COS/CFD/BV-13-C N/A -------------------------------------------------------------------------------- - -L2CAP/COS/IEX/BV-01-C N/A -L2CAP/COS/IEX/BV-02-C N/A -------------------------------------------------------------------------------- - -L2CAP/COS/ECH/BV-01-C N/A -L2CAP/COS/ECH/BV-02-C N/A -------------------------------------------------------------------------------- - -L2CAP/COS/CFC/BV-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - l2cap-create-server psm= - advertise-start - l2cap-send conn= idx=0 bytes=15 - -L2CAP/COS/CFC/BV-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - l2cap-create-server psm= - advertise-start - l2cap-send conn= idx=0 bytes=15 - -L2CAP/COS/CFC/BV-03-C PASS NOTE: #define BTSHELL_COC_MTU = 512 - advertise-configure connectable=1 legacy=1 - l2cap-create-server psm= - advertise-start -L2CAP/COS/CFC/BV-04-C PASS advertise-configure connectable=1 legacy=1 - l2cap-create-server psm= - advertise-start -L2CAP/COS/CFC/BV-05-C PASS advertise-configure connectable=1 legacy=1 - l2cap-create-server psm= - advertise-start - l2cap-connect conn= psm= - l2cap-connect conn= psm=<2nd psm> -------------------------------------------------------------------------------- - -L2CAP/CLS/CLR/BV-01-C N/A -------------------------------------------------------------------------------- - -L2CAP/CLS/UCD/BV-01-C N/A -L2CAP/CLS/UCD/BV-02-C N/A -L2CAP/CLS/UCD/BV-03-C N/A -------------------------------------------------------------------------------- - -L2CAP/EXF/BV-01-C N/A -L2CAP/EXF/BV-02-C N/A -L2CAP/EXF/BV-03-C N/A -L2CAP/EXF/BV-04-C N/A -L2CAP/EXF/BV-05-C N/A -L2CAP/EXF/BV-06-C N/A -------------------------------------------------------------------------------- - -L2CAP/CMC/BV-01-C N/A -L2CAP/CMC/BV-02-C N/A -L2CAP/CMC/BV-03-C N/A -L2CAP/CMC/BV-04-C N/A -L2CAP/CMC/BV-05-C N/A -L2CAP/CMC/BV-06-C N/A -L2CAP/CMC/BV-07-C N/A -L2CAP/CMC/BV-08-C N/A -L2CAP/CMC/BV-09-C N/A -L2CAP/CMC/BV-10-C N/A -L2CAP/CMC/BV-11-C N/A -L2CAP/CMC/BV-12-C N/A -L2CAP/CMC/BV-13-C N/A -L2CAP/CMC/BV-14-C N/A -L2CAP/CMC/BV-15-C N/A -L2CAP/CMC/BI-01-C N/A -L2CAP/CMC/BI-02-C N/A -L2CAP/CMC/BI-03-C N/A -L2CAP/CMC/BI-04-C N/A -L2CAP/CMC/BI-05-C N/A -L2CAP/CMC/BI-06-C N/A -------------------------------------------------------------------------------- - -L2CAP/FOC/BV-01-C N/A -L2CAP/FOC/BV-02-C N/A -L2CAP/FOC/BV-03-C N/A -------------------------------------------------------------------------------- - -L2CAP/OFS/BV-01-C N/A -L2CAP/OFS/BV-02-C N/A -L2CAP/OFS/BV-03-C N/A -L2CAP/OFS/BV-04-C N/A -L2CAP/OFS/BV-05-C N/A -L2CAP/OFS/BV-06-C N/A -L2CAP/OFS/BV-07-C N/A -L2CAP/OFS/BV-08-C N/A -------------------------------------------------------------------------------- - -L2CAP/ERM/BV-01-C N/A -L2CAP/ERM/BV-02-C N/A -L2CAP/ERM/BV-03-C N/A -L2CAP/ERM/BV-05-C N/A -L2CAP/ERM/BV-06-C N/A -L2CAP/ERM/BV-07-C N/A -L2CAP/ERM/BV-08-C N/A -L2CAP/ERM/BV-09-C N/A -L2CAP/ERM/BV-10-C N/A -L2CAP/ERM/BV-11-C N/A -L2CAP/ERM/BV-12-C N/A -L2CAP/ERM/BV-13-C N/A -L2CAP/ERM/BV-14-C N/A -L2CAP/ERM/BV-15-C N/A -L2CAP/ERM/BV-16-C N/A -L2CAP/ERM/BV-17-C N/A -L2CAP/ERM/BV-18-C N/A -L2CAP/ERM/BV-19-C N/A -L2CAP/ERM/BV-20-C N/A -L2CAP/ERM/BV-21-C N/A -L2CAP/ERM/BV-22-C N/A -L2CAP/ERM/BV-23-C N/A -L2CAP/ERM/BI-01-C N/A -L2CAP/ERM/BI-02-C N/A -L2CAP/ERM/BI-03-C N/A -L2CAP/ERM/BI-04-C N/A -L2CAP/ERM/BI-05-C N/A -------------------------------------------------------------------------------- - -L2CAP/STM/BV-01-C N/A -L2CAP/STM/BV-02-C N/A -L2CAP/STM/BV-03-C N/A -L2CAP/STM/BV-11-C N/A -L2CAP/STM/BV-12-C N/A -L2CAP/STM/BV-13-C N/A -------------------------------------------------------------------------------- - -L2CAP/FIX/BV-01-C N/A -L2CAP/FIX/BV-02-C N/A -------------------------------------------------------------------------------- - -L2CAP/EWC/BV-01-C N/A -L2CAP/EWC/BV-02-C N/A -L2CAP/EWC/BV-03-C N/A -------------------------------------------------------------------------------- - -L2CAP/LSC/BV-01-C N/A -L2CAP/LSC/BV-02-C N/A -L2CAP/LSC/BV-03-C N/A -L2CAP/LSC/BI-04-C N/A -L2CAP/LSC/BI-05-C N/A -L2CAP/LSC/BV-06-C N/A -L2CAP/LSC/BV-07-C N/A -L2CAP/LSC/BV-08-C N/A -L2CAP/LSC/BV-09-C N/A -L2CAP/LSC/BI-10-C N/A -L2CAP/LSC/BI-11-C N/A -L2CAP/LSC/BV-12-C N/A -------------------------------------------------------------------------------- - -L2CAP/CCH/BV-01-C N/A -L2CAP/CCH/BV-02-C N/A -L2CAP/CCH/BV-03-C N/A -L2CAP/CCH/BV-04-C N/A -------------------------------------------------------------------------------- - -L2CAP/ECF/BV-01-C N/A -L2CAP/ECF/BV-02-C N/A -L2CAP/ECF/BV-03-C N/A -L2CAP/ECF/BV-04-C N/A -L2CAP/ECF/BV-05-C N/A -L2CAP/ECF/BV-06-C N/A -L2CAP/ECF/BV-07-C N/A -L2CAP/ECF/BV-08-C N/A -------------------------------------------------------------------------------- - -L2CAP/LE/CPU/BV-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start - l2cap-update conn= -L2CAP/LE/CPU/BV-02-C PASS connect peer_addr= - disconnect conn= -L2CAP/LE/CPU/BI-01-C PASS connect peer_addr= - disconnect conn= -L2CAP/LE/CPU/BI-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start -------------------------------------------------------------------------------- - -L2CAP/LE/REJ/BI-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start -L2CAP/LE/REJ/BI-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start - disconnect conn= -------------------------------------------------------------------------------- - -L2CAP/LE/CFC/BV-01-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start -L2CAP/LE/CFC/BV-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start - l2cap-connect conn= psm=90 -L2CAP/LE/CFC/BV-03-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - l2cap-create-server psm= - advertise-start - l2cap-send conn= idx=0 bytes=15 - -L2CAP/LE/CFC/BV-04-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start - l2cap-connect conn= psm= -L2CAP/LE/CFC/BV-05-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start -L2CAP/LE/CFC/BV-06-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - l2cap-create-server psm= - advertise-start - l2cap-send conn= idx=0 bytes=15 -L2CAP/LE/CFC/BV-07-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - l2cap-create-server psm= - advertise-start -L2CAP/LE/CFC/BI-01-C PASS advertise-configure connectable=1 legacy=1 - l2cap-create-server psm= - advertise-start -L2CAP/LE/CFC/BV-08-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - l2cap-create-server psm= - advertise-start - l2cap-disconnect conn= idx=0 -L2CAP/LE/CFC/BV-09-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - l2cap-create-server psm= - advertise-start -L2CAP/LE/CFC/BV-16-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start - l2cap-connect conn= psm=90 -L2CAP/LE/CFC/BV-17-C N/A -L2CAP/LE/CFC/BV-18-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start - l2cap-connect conn= psm=90 -L2CAP/LE/CFC/BV-19-C PASS NOTE: TSPC_L2CAP_3_16 (multiple channel support) must be checked - advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start - l2cap-connect conn= psm=90 -L2CAP/LE/CFC/BV-20-C PASS NOTE: TSPC_L2CAP_3_16 (multiple channel support) must be checked - advertise-configure connectable=1 legacy=1 - l2cap-create-server psm= - advertise-start -L2CAP/LE/CFC/BV-21-C PASS advertise-configure connectable=1 legacy=1 - advertise-set-adv-data flags=6 - advertise-start - l2cap-connect conn= psm=90 -------------------------------------------------------------------------------- - -L2CAP/LE/CID/BV-01-C N/A -L2CAP/LE/CID/BV-02-C N/A -------------------------------------------------------------------------------- - diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-sm.txt b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-sm.txt deleted file mode 100644 index ac26db712..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/pts-sm.txt +++ /dev/null @@ -1,310 +0,0 @@ -PTS test results for SM - -PTS version: 7.5.0 -Tested: 07-Oct-2019 - -syscfg.vals: - BLE_EXT_ADV: 1 - BLE_PUBLIC_DEV_ADDR: "((uint8_t[6]){0x01, 0xff, 0xff, 0xc0, 0xde, 0xc0})" - BLE_SM_LEGACY: 1 - BLE_SM_SC: 1 - BLE_L2CAP_COC_MAX_NUM: 5 - BLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL: 9 - BLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL: 30 - BLE_SVC_GAP_PPCP_SUPERVISION_TMO: 2000 - CONSOLE_HISTORY_SIZE: 10 - -Results: -PASS test passed -FAIL test failed -INC test is inconclusive -N/A test is disabled due to PICS setup -NONE test result is none - -------------------------------------------------------------------------------- -Test Name Result Notes -------------------------------------------------------------------------------- - -SM/MAS/PROT/BV-01-C PASS connect peer_addr= - security-set-data bonding=1 sc=1 our_key_dist=7 their_key_dist=7 - security-pair conn= -------------------------------------------------------------------------------- - -SM/MAS/JW/BV-01-C N/A -SM/MAS/JW/BV-05-C PASS connect peer_addr= - security-pair conn= - disconnect conn= - -SM/MAS/JW/BI-01-C PASS connect peer_addr= - security-pair conn= -SM/MAS/JW/BI-04-C PASS connect peer_addr= - security-set-data bonding=1 sc=1 - security-pair conn= -------------------------------------------------------------------------------- - -SM/MAS/PKE/BV-01-C PASS security-set-data io_capabilities=1 - connect peer_addr= - b sec pair conn= - b passkey conn= action=3 key=123456 - Note: enter '123456' passkey in PTS -SM/MAS/PKE/BV-04-C PASS security-set-data bonding=1 oob_flag=0 - connect peer_addr= - security-pair conn= - disconnect conn= -SM/MAS/PKE/BI-01-C PASS ecurity-set-data io_capabilities=1 oob_flag=0 - connect peer_addr= - security-pair conn= - auth-passkey conn= action=3 key=123456 - Note: enter invalid passkey -SM/MAS/PKE/BI-02-C PASS security-set-data io_capabilities=1 oob_flag=0 - connect peer_addr= - security-pair conn= - auth-passkey conn= action=3 key=123456 - Note: enter '123456' passkey in PTS -------------------------------------------------------------------------------- - -SM/MAS/OOB/BV-01-C N/A -SM/MAS/OOB/BV-03-C N/A -SM/MAS/OOB/BV-05-C PASS security-set-data io_capabilities=1 oob_flag=0 - connect-peer_addr= - security-pair conn= - auth-passkey conn= action=3 key=123456 - Note: enter '123456' passkey in PTS - disconnect conn=1 -SM/MAS/OOB/BV-07-C PASS ecurity-set-data io_capabilities=1 oob_flag=0 - connect-peer_addr= - security-pair conn= - disconnect conn=1 -SM/MAS/OOB/BV-09-C N/A -SM/MAS/OOB/BI-01-C N/A -------------------------------------------------------------------------------- - -SM/MAS/EKS/BV-01-C PASS connect peer_addr= - security-pair conn= - disconnect conn=1 -SM/MAS/EKS/BI-01-C PASS connect peer_addr= - security-pair conn= - disconnect conn=1 -------------------------------------------------------------------------------- - -SM/MAS/SIGN/BV-01-C N/A -SM/MAS/SIGN/BV-03-C N/A -SM/MAS/SIGN/BI-01-C N/A -------------------------------------------------------------------------------- - -SM/MAS/KDU/BV-04-C PASS security-set-data our_key_dist=4 - connect peer_addr= - security-pair conn= - disconnect conn=1 -SM/MAS/KDU/BV-05-C PASS security-set-data our_key_dist=2 - connect peer_addr= - security-pair conn= - disconnect conn=1 -SM/MAS/KDU/BV-06-C PASS security-set-data our_key_dist=1 - connect peer_addr= - security-pair conn= - disconnect conn=1 -SM/MAS/KDU/BV-10-C PASS security-set-data our_key_dist=2 sc=1 - connect peer_addr= - security-pair conn= - disconnect conn=1 -SM/MAS/KDU/BV-11-C PASS security-set-data our_key_dist=2 sc=1 - connect peer_addr= - security-pair conn= - disconnect conn=1 -SM/MAS/KDU/BI-01-C PASS connect peer_addr= - disconnect conn=1 - reset device - - -------------------------------------------------------------------------------- - -SM/MAS/SIP/BV-02-C PASS security-set-data io_capabilities=4 - connect peer_addr= - disconnect conn=1 -------------------------------------------------------------------------------- -SM/MAS/SCJW/BV-01-C PASS security-set-data sc=1 - connect peer_addr= - security-pair conn= - disconnect conn=1 -SM/MAS/SCJW/BV-04-C PASS security-set-data sc=1 io_capabilities=1 our_key_dist=1 - connect peer_addr= - security-pair conn= - disconnect conn=1 -SM/MAS/SCJW/BI-01-C PASS security-set-data sc=1 io_capabilities=4 - connect peer_addr= - security-pair conn= - disconnect conn=1 - - -------------------------------------------------------------------------------- - -SM/MAS/SCPK/BV-01-C PASS security-set-data sc=1 io_capabilities=2 - connect peer_addr= - security-pair conn= - auth_passkey conn=1 action=2 key=123456 - Note: enter '123456' passkey in PTS - disconnect conn=1 -SM/MAS/SCPK/BV-04-C PASS security-set-data io_capabilities=4 oob_flag=0 our_key_dist=1 their_key_dist=1 - connect peer_addr= - security-pair conn= - auth_passkey conn=1 action=2 key=123456 - Note: enter '123456' passkey in PTS - disconnect conn=1 -SM/MAS/SCPK/BI-01-C PASS security-set-data io_capabilities=4 oob_flag=0 sc=1 - connect peer_addr= - security-pair conn= - disconnect conn=1 - - auth_passkey conn=1 action=2 key=123456 - Note: enter '123456' passkey in PTS - disconnect conn=1 -SM/MAS/SCPK/BI-02-C PASS security-set-data io_capabilities=2 oob_flag=0 bonding=1 sc=1 - connect peer_addr= - security-pair conn= - auth_passkey conn=1 action=2 key=123456 - Note: enter '123456' passkey in PTS - disconnect conn=1 -------------------------------------------------------------------------------- - -SM/MAS/SCOB/BV-01-C N/A -SM/MAS/SCOB/BI-04-C N/A -SM/MAS/SCOB/BV-01-C N/A -SM/MAS/SCOB/BI-04-C N/A -------------------------------------------------------------------------------- - -SM/MAS/SCCT/BV-01-C N/A -SM/MAS/SCCT/BV-03-C N/A -SM/MAS/SCCT/BV-05-C N/A -SM/MAS/SCCT/BV-07-C N/A -SM/MAS/SCCT/BV-09-C N/A -------------------------------------------------------------------------------- - -SM/SLA/PROT/BV-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-start - -------------------------------------------------------------------------------- - -SM/MAS/JW/BV-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/JW/BI-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/JW/BI-03-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -------------------------------------------------------------------------------- - -SM/SLA/PKE/BV-02-C PASS security-set-data io_capabilities=4 - advertise-configure connectable=1 legacy=1 - advertise-start - auth-passkey conn= action=2 key= - -SM/SLA/PKE/BV-05-C PASS security-set-data io_capabilities=4 - advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/PKE/BI-03-C PASS security-set-data io_capabilities=4 - advertise-configure connectable=1 legacy=1 - advertise-start - auth-passkey conn= action=3 key=123456 - Note: enter invalid passkey -------------------------------------------------------------------------------- - -SM/SLA/OOB/BV-02-C N/A -SM/SLA/OOB/BV-04-C N/A -SM/SLA/OOB/BV-06-C PASS security-set-data io_capabilities=1 - advertise-configure connectable=1 legacy=1 - advertise-start - auth-passkey conn= action=3 key= -SM/SLA/OOB/BV-08-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/OOB/BV-10-C N/A -SM/SLA/OOB/BI-02-C N/A -------------------------------------------------------------------------------- - -SM/SLA/EKS/BV-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/EKS/BI-02-C PASS advertise-configure connectable=1 legacy=1 - advertise-start -------------------------------------------------------------------------------- - -SM/SLA/KDU/BV-01-C PASS security-set-data io_capabilities=1 - advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/KDU/BV-02-C PASS security-set-data io_capabilities=2 - advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/KDU/BV-03-C PASS security-set-data io_capabilities=4 - advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/KDU/BV-07-C PASS security-set-data our_key_dist=1 bonding=1 - advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/KDU/BV-08-C PASS security-set-data our_key_dist=2 sc=1 - advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/KDU/BV-09-C PASS security-set-data our_key_dist=4 bonding=0 - advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/KDU/BI-01-C PASS advertise-configure connectable=1 legacy=1 - security-set-data sc=1 - advertise-start - - -------------------------------------------------------------------------------- - -SM/SLA/SIP/BV-01-C PASS security-set-data io_capabilities=4 - advertise-configure connectable=1 legacy=1 - advertise-start - security-start conn= -------------------------------------------------------------------------------- - -SM/SLA/SIE/BV-01-C PASS security-set-data io_capabilities=3 bonding=1 our_key_dist=1 their_key_dist=1 - advertise-configure connectable=1 legacy=1 - advertise-start - advertise-start - security-start conn= -------------------------------------------------------------------------------- - -SM/SLA/SCJW/BV-02-C PASS security-set-data io_capabilities=4 oob_flag=0 bonding=0 mitm_flag=0 sc=1 our_key_dist=1 - advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/SCJW/BV-03-C PASS security-set-data io_capabilities=1 our_key_dist=1 oob_flag=0 - advertise-configure connectable=1 legacy=1 - advertise-start -SM/SLA/SCJW/BI-02-C PASS security-set-data io_capabilities=1 oob_flag=0 bonding=1 sc=1 - advertise-configure connectable=1 legacy=1 - advertise-start -------------------------------------------------------------------------------- - -SM/SLA/SCPK/BV-02-C PASS security-set-data io_capabilities=1 oob_flag=0 sc=1 - advertise-configure connectable=1 legacy=1 - advertise-start - auth-passkey conn=1 action=4 key=186900 yesno=yy -SM/SLA/SCPK/BV-03-C PASS security-set-data io_capabilities=2 oob_flag=0 our_key_dist=1 their_key_dist=1 sc=1 - advertise-configure connectable=1 legacy=1 - advertise-start - auth-passkey conn=1 action=2 key=123456 - Note: enter '123456' passkey in PTS -SM/SLA/SCPK/BI-03-C PASS security-set-data io_capabilities=2 oob_flag=0 sc=1 - advertise-configure connectable=1 legacy=1 - advertise-start - auth-passkey conn=1 action=2 key=123456 oob= - Note: enter '123456' passkey in PTS -SM/SLA/SCPK/BI-04-C PASS security-set-data io_capabilities=2 oob_flag=0 mitm_flag=1 sc=1 - advertise-configure connectable=1 legacy=1 - advertise-start - - auth-passkey conn=1 action=2 key=123456 - Note: enter '123456' passkey in PTS -------------------------------------------------------------------------------- - -SM/SLA/SCOB/BV-02-C N/A -SM/SLA/SCOB/BI-03-C N/A -SM/SLA/SCOB/BV-02-C N/A -SM/SLA/SCOB/BI-03-C N/A -------------------------------------------------------------------------------- - -SM/SLA/SCCT/BV-02-C N/A -SM/SLA/SCCT/BV-04-C N/A -SM/SLA/SCCT/BV-06-C N/A -SM/SLA/SCCT/BV-08-C N/A -SM/SLA/SCCT/BV-10-C N/A \ No newline at end of file diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/tpg/94654-20170317-085122560.tpg b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/tpg/94654-20170317-085122560.tpg deleted file mode 100644 index 3cc985fab..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/tpg/94654-20170317-085122560.tpg +++ /dev/null @@ -1,1026 +0,0 @@ - -M'&/JP\$+#X83?)"[ M2E=\N*7*U 5)JSKT(5#=>@^/#]IP*[GTZ0%0]$F(/$ -MEK[V7>349??;!JZJNFZ CK=QGD^FOYV^FU>"DK<@0U*##HV\H9&_%["5IK@1 -MA9F,FJO2P^3:4_]04%-0T%9=^XCMWKF"L$[)%)G>_I 0Q?@:H)&1HX)7VY&. -M3 *!JH;^YUJ1[_*7JN2'Z5^*0I&NP+[LAE:>S92BP^T:3+B>IKFJJ8A,4Y^L -MUX+P_C'Z#VN20)A!ANN2@J#!AYY4"KQ\5):1]+[B\TN+BI"AB8NJH ,NZ(() -MG>K?^A\-B,<@/IVC+$#XFXJ<65V*OE'"L]7*OEJ*C]CS^."A/) (K_@0 -ME"&)D)^IP]?+')Q(%NM&7:VL@*6#D!-TU,7.WG SERP(@*R+DH"MPH;@X:Y) -M]X6NG8^EC)N?AH+3[\3SG''R3(?WRGF0NZ#,_4%*E)&>&9R)5[F0OM$A0Y.; -MA8R7%EGBS&\IDPYNR%4ZV$FK^(F[P B/[TU86=H%S^ -MH[H^EYQB:MZ)A:2@IV)4O=//SXNP#%F]5N&<3KZL>(#6'H"D4\DST(O!(![@ -MUYZX#+:1G:V5BE&TGHK]+;@:^JF;;2-&@WD;Z8I9*SB5D+7 &/J8NI6GYGMDGK2(U+_)K!,I$6Q4R% -MAIE9AK#]!JAFCWWD:A8K.9O/I(;D(F2G*6A0YUCMIOQ5M*VD#1: -MG9^)MMZ GIK7,^R0^M"/\%^_B9Y7TLQ/^N?S1 DEF 6XUJU"V_3_U\44H9.; -M6C/PV(36QT(9B9^.C)*YUP?BN>#F%4ST/JM>\*Y;K)J:S+4[O%?G[S[L"^FPVC9/W+).O23U=;?;2EV+G5"5%KG(EED8SLB#Q["2.9YW6IB4DKT QL7P\,%# -MAY^ (+Y+V8GD:B'!S H%G*;=[-\ -M 0+QQ3;G\H21FY_P4-)38+ =K,/38[24B[6W\(N-L/(9[/_LY.X/OLZ%S;A> -MO0TN'._"@/.)DDZ*AGY.V1XW%G7:O+R67U"C@:L%+T\24!11KH^]@[UR\Y\T -M'G.5D/)=H)R"J6R470%+AO24DHF5L -2OV(60>3Z]/#0\HE4<(V%GXBM% 0- -M3X-@G;H%E[2$DL$P-?W&"JI0-EV0AUP(\>] XIW!BI6DO7I9T33VE._FJ(*_ -MKQ6$@E,QFO?! P_#OYFAJ_:"JEF6?]O2PM3:)3"+BYBAK :/H:SLBX.NPOA_3S>U9*&PG[SAU:$=KQR\M>?\!X3 -MZYZ?J;\8N0V1]JOBJ@3;9=L01YQ<:%>>U)-!GAL!T^"]VF8KB/^$EH.ENI:4 -M[(80V,)1T>^'[@;!KIZ5T4.RQW)2M,X;#;8LTO_GV8V[OD6F@JNK JO G$2Q -MH(=0E:GW!3:0E_/T4ZF!M!D-F1F7NI*^QP;A%%V8M*U:R59]QE^+$NONY](% -M28E"K!J#K5N5E8#B_OU9L819J(CL]20ZBF"L4*4D#JV,*& -MYJV<6(JKEZZ4+^NI?%8D<$.P^*4 Z#=7K>XM. -MU3'S/BX/AP [V4*K!EY0C-/CE//ME"./3?_H5OQM$R!7NN&@21#()=Q)MEIG -MU_Y)N7IZ .'V51 ]]L:;LEZ+DI"H^K R=CO:@D2&#^H,PQ!"EDZ>@'"*JK)I -MM9<-XF7"=^(HC+:D156UME\ U?+P=G >A(^3=EW1ZB[7^C_1CZ&R#Y!"F:FH -MHO_0SL+1D%1$55K!?)*MLC?(]!3G_A,(AXY&\M.G+@>5;>6Z]?^Z&KBV:9N< -MBRWP0KI!\#7P]MOC;Y)<5(NN%8*2GEL9'\7/SMD 1Q6PCZ]6;0T*&KK)-^4N -M-OV!3U6TE8(,B;9"K*0WH=?J*<_9J=-(NK)0LY:FO5R)P'*3V.;%;^Z6() 2 -MWEB>F*H-#0RERD0TG[]6I4)#T_26M/[GQ8V5MO]RIY&RN%W_S1G/L829DMR2 -M]('/K/92XJKUML7OR!,>P)J*"H>&-Q0-\]("+'L^-EO>=(036Y>P%.:V&"8V-7ZT139&:(YNN@Z VJQCV=M VOMJ:E/XOE(L[GZ4;QT"H -M$!AY7Y>2^:N K"-$'B0L[FEJN#[Q19:D[2;=9F*>)!$@X/4']#" -M!1&2G)8;"$M&=?M B=+DQ^YQ"-!FB)9'T\^32NDK[68N]-J[6Y^IR:Z(A[.. -M6RG95?0:6^K'2FAK[7\O>>+_9#G(I4O*2=3,_<+@R)UM-9DW*NL+I?DJA^ -M:X8+&-[1=O9MX:R#BIVVVL*?&,-#U928LBR6DI:OR/OQV_;Z"H13GEZ <)J[ -M^8(-)]\+U9V24@V?@HK_A'3=YS&MN]3U&:<&)%JJPHZ6H4 --!,T\L,(ICBY -M$XOXI)]-\^"U_CHZ!52.^"'OK$V=K;>;@,34R_HCW U3FB1#KKV/@Z#_S.'% -M9M 26;U3E76LAFN3DZG5@QO8R.G+!?N(V9N<2;,*E9E2@K&$0L$X+707X.^\ -MT*.^GE""6H$?\19Z=D.11X"6D]CR\RWCD_%?L8JF/FV$&X]!:4**[ -MIJ&85T .P5K[]>8?Q92+TN#S6X[[MHCH"/&KV'J%?' -MDXN2D@L"PEG3X\S?#I9!&(61@+:/6K0YEXK-.ODV/_?'<;&3^)J!2E##A^,3 -M^E;>K7N=]K<"P^$PWC05A%.T7+ 72YJ2?GKS[_#*?9/+D5I=DGF1MKNMU-:; -MTA'SN[>Q@KJ'7 >7QXCJY?#F JZBH%J*TH7WD[S#-.W&]"["KX^N/$.2E8- -M\'OI3>S9)=OP3U7$O"FNK.\J5(+0IC!.XWY;M$\. -M=$Z/KD^-C/1_0?_L_+W"8^N=B7="A8V64I)?G0DOR_KWS/WPQFUSE4C6DDBH -MPJ(PFL.YN.[W]D+^>+I&EEF\EPW'VQA<& I.AD"V5P+ .6_&1:%>-O&=E8%* -M4Z0_F\3GXHI]D-*1FG<:^(&&FQ$__=_Z\-!-I[N#]"^O-VP$ U1GN0\!K]*A/C9:4F99SFM+[ -M[/?CV\*/O(Z#ME:'OC&&?BVA3B31],CN[TF*EE6"FYY(_IXY];+QIY%OQ/?P -MO'*3\1.ABJKLSL+ 7[&CG)>!3%[%>BSWMCX#>%VV+I"SC'*XM%O%*Q$\F$3R -MFPZ16JEA@IM"\L/P^B,0TK:X6KG'%9"W[*C0N>76+Q%7H<_>PHYZHI3A)I%T -M'CJE1J;\5+\;VP%IFYWG(<')6(D;XR:/K)56#*O 5YC#VK;WD_H'2JC>IQI2 -M#Q)4X? :TPVM[5T "L<4HRZ>IZZGK_N#H)Z#!2#PQ>W&P5H#TE6?DII]0?_U -M&*Q64E:.A]I>Y.KMN_K%\W60 9M4G7>#89>?AQ=WP<6$M/BPF(@#DXY8H>HV -M_98"]E%UHB\\ASAPD.K1\^:UE\.K'Z!]6YL*DABNQ='FFM8U\J>$N;^)5E:; -M)HY7P\"EFN02YN[;E$Z.O[U&K 1"I3*7,,8PB6.?)NNE%"<+^?)R\BZB9Z6IC<;N)4W -MEY_GY\JLE%.13J-^"6Q2BLC7\M ,DGJQ)(E!VJ2>JL$T&>X]XL(MD$C9 KM8 -M%Y>>1_Z3H)?PNK"UEQY;MXY:G%GHQVX4[8_K5(P&CO(G'D&LVCKQRXG#YNWUT]23B'FSNANK -M@Z20C[BBQL4UU=+ND/(1D56Y OC->0^5A'RAD:0)&OZ$T.+\%E=K2E)F21L'SG5?CVIO&C8Z+K@7F\3[O\+J% -MK ,6OHYV"U3WZ=%^O_I*[+2LOFNZ'JB&3Z[%X$%9K\/(9II5A+\>CLV44)DG -MY"7V/;KFB)A=4].7@ZASJ'":Q?OL=UEIJBM)BH:'DOQRDJGTL!*[0>HY??Y= -MFH1(OYRWAUJ2T4S+"ZR@FZZRN4&HP\;T]IH2Q9F!DZV225N_C9);$_T!Y9J6 -MB?F&05X*DJ"#A3HS)L?'&@E>::Z$F&OD%;D[>K$/HNT2&C7!VF$ _$SYEG(;VM@7+&[?+^VI-.F;>X -M4$N*I)"B-MC^$ ;YV2@#T;JXA(JZ$ N3WQ-JL"%2M&J##F86WT/BL'P -MY.VZ(+&==J "\H:'QX.LP/#E[>8/BUZF'QI-5Y"0G*"V[S?D9O%'18Y.OQY. -MBN.WELSHV]K#\>(NUEP8;K>_4;:W^HE8]=?]M-" G)V?4[6AJYZ2EEO(SYH. -MTTO,P0*3G@V)GMG/YD6U,L<2Y XGUX) -M5_*33$# Y3?& [B;I:JP:89:E>KG^_6:7=8*G*!8[&^$;(Z@1KQ02XQR>D^[0?W8I/O-HL#UDI)0DZAU -MB0)0^(Z7S,)\T"?Z U#6N@25I]B*U0;.UH2"=%]>6:ZX\2'U/M(5U716I!UU -MAU>VX _/V?RJT)V2DA"&F9I3<(VJ\_9U\.#3L9.F9)JHII.?H+_E_M'N.AC' -MLJ26B+DMEGL&T.?A\O3"2VZZG P?TXM@[/:MS>W.P<\+W$D$U;_/>$NY>I>X -M@7(U+^;^3T^$B;-_E[M7GA&.60E*V?<3XZ;8V;L]]0J6EIF<%& -J5L2]SOF -M)..<4(JK6EB.FR?/*Y/*3^&/#W\G-)F'B? -M_I^'2E1MGHKG[)A4BPP,6SO'#EU2L@8-FX'XNKJJMD?P]A#56)N3GJ:]0(]# -MKQOCD)&4K4(9#][#/G_6O= #>+!255^7FJLR<%C8RX_1K[:$A7N@B;OC]X-8 -MD<#T'M<6O7NCD]Z'?G!;B/,JPSIMY8V7L!]:YYA>@(CT]#ETYC7;3**MC$LL -MGITZ!Y[MV@],Q_+DGQ6>J,^3K(EMA+=-(OW7L//1@8:QI5G:JH(>;!2"QRXJ -M+R[F!=L=DUCVD5J60+I_Q%R+1_*UQG;UV46@EY],D=";@:GC\)J8F)M;W8R; -M*.+3[O8_Q?!5A-&;R((_DEJ? LG"R$Q\%E20$:^YD96)27[S\]/WG8,";9:< -MB\;UOXW--C77[].KC!/_VJ;VMZ.4P+KM^M R]8]67@PGA[R'HA)=V0W=!13! -MY%:R5&I>GJT_;)R Q5/7[);$"[J:>U7SEY&\5B95RW<.4*_2T\;"V(-3OI]Y -M\@__\X:4/1J3QT3^-=.JL]O[I3=Q1GB=J]ISE]AB"MH2U.UFE?U7^,8K))8C=:WBEBA$ISUM_JO# !"7X>:K!ML#X,"_.J= -MG!R4+TY!FAEF5YO2PO$U[*- [4:L7U8]CA>_O)CFP<7;TQ"2IKGZN5>GGPAS -M.;5>5A ;3I:$O*=[#2@N0NZU'H$O7!BZB==5R7@K:4D->IP,'V\CHW@)Z40(>&U;>7 -M1P/+%KBF6Y]?D)!6\L'U->V;]1S=])[\45:#HI67Q LF:<'M@% 1!+V?BN4)3P"-F-18@GM^ -MB*CJ)3+6X,]04)Y;!?R;@V&PFM7.UT&$4!&III5*O9)WV=L2=^YN&LJ[%^V> -M^8,L'!J(D2(FN_1!#SIX%YN/5E^Q;BS"YO_$/\M-5H2=KYR&T+"@GN#,(?G! -M#\A+NYR\%)V%/7N.>R3Q[._&\]JK7Y"+2Y>*JA>IIZE)7I@*XWH6T32[6]6: -MDE";E_',D)?HU"T:YM[A4""1K*)S\ED S^+T6 O:>(>5&_W',OEWT#[C78"> -M&9/2N;T(C;VI#ML)O9.24?.8_!ULCY#%%\3&^]DT8IN UZJHKOWRJB$S^58O -MVTM:L8-\#__SHTK3:?&_L/#V[).5W*:>.9*3O%L"P*T-[H-"IR>MSFR?C*V, -M7@BBPF?DU' *@?*UWU>:HT);D=H.\9>.2TT$P_?4:TX,\+NFJZ@";%6XXS;N -M\O"]VI6&I%N&,+:S)2L3YC&CGJ]R")Y[PR@P[;/_R7I0,$)*=0Y7SNZ"6D_%]Q="M%!&:FJS7 -MEMDR]?W +_V8I>";BHB]UK.,S/(QE??CBZ9@20F__):6I('^/,;W]=B/6Y^, -M@IA>B[!3FPDMXWV\C 9CG6)O96G H-MEHO!3L#FE)82CY>(F8FACI^'F^\P\%K0YJ>( -ML\Z3DHZWO$DPP>+ TPT@28J,F+R&64#!QNR0/]!8CU::O8^>O6>AH$+!S/[- -MY]/4CY#_N8\NCTN@6[?1:OF6]?7%!U>?7UKPC5)"XY*;\,82 ^\%R\-)ZJR9 -M7UK0FZJFL%>MTR9W-<75I9A0@EOP6)^=4-4#Y@^CDZTT45I;R?XY9__P Y!2 -M7D2 ,)(7HJ8:T<,*_863^XETD)J;8I92Y_(E]B_3U(>2X)WV2]:"AIS''MS^ -M-/*(EZQ:@^W7PK6*(.)9Y/8PXI:"! Z?BZMI1I;91/[)R.7"MNN:D Q'^KU<\5$<:<8!WC4$,SLT-V_Z M$U=GJ"^3D?;FF.T@2?V -M/K0[HE"0G'@_UI2;]]COX1F<%%&5CISZ>\3'Y-_Z-/.JEI.MH-,7JJ9VE_%= -M,@YVK@V2V6]?*7-+JUMJ/6I"5IY^5"W.R$^'S^486[]%* -MKI$C6Z9.F*)@GKB'B %&2#&U3&8K:U9&J81DY*05ADDPG'6X$8+D/:8<+Z) -MN-DM1\'<6@O>?07UF%C),M,P]/X*^GR3AU99G .AEBG-[=NPF9+?A(Q=2]N$ -M3Y\"DKTZQN49B(YX&HF'3K:*FG,;O3KG\ZU6A/.I@RV&4(KP^C<\^\>E#*1% -MZ!F/CKJYCIO#QX&,RV;0CZ)=J :>#8N")MLI<]7V+._BGI)]FQ>WD5H(:))7 -M8*(+U0L(Y^-8N0X9$+RF0*I?K,Y7S=0YU/Y$\3CVHKREH,*!P0,*T;BFHXV. -M7;B-1='8T/OGR+F6O@Z65ZFWJ'^;052%R)&@$5_ 9[CIPQ1=7FHV9>NE*HH6="LC/ -M2-'6V$:D7!^]AX]O>HW]\3@9I^;U\Z:8G)M7LHJ*T'"@4L$-^E[3AL[ \8K= -MN;>LF@^KLZF0>MCPEI/0N\=:=C>(EEU*5N4,HN"4G(H=I8D2C -MMJ"?DX&;MP6R*N#-PW:/]WPO6PQ)%,%VJ:ZJ. -MJ*"2@0+#]^_N]@^JAX:?0J:-O'&1SE>@COOE".;#]^9)FKGW"?9##K:3L'JL -M].TPY]##+%);A/H'0EL'W(\0CY&TMU"G^KG"XG3:M";)+'G_E:!=@JNX7)F) -M3T4QOG0#F*7WDZED%C="PC/[_?%4KH^64UAKV%*U0=G'[/04B:N2N,F+GIA& -MB97"X^[TU_971:1]B:=6N)U&NMCPSXOY#\[9O:.=@$,.0:B25[L'/O;%TE+/ -M2:H9@YY7C2QT08^0S2VJQ\<*U4?B/]2=I5NEKPN2\+:+(O+'-^X^YWF@DYN/ -MHKR7)KXL-1;176O#6D!?FKJN&QW^?C\J;DNQV -MBZ'6$*'/'ACJTYYK!F]%LOM)X9&@F;F0,'![/]D:.- -M6@C^ N/$\2PMFL.8!!'UEA&8GN2FGL'#0<05D)X=FJ*[F(&6]PWST-7$\+2K -MCJ2=>EE?E=*\Z?IMU#)+2IK* IQMAX!:O\JJ=<3\]M"+1I'JJYZ]"*2:G5C< -MR*5C0/&/5I")E(RNJ_B5VLT^.6(ZED^'NX]3G_(MC'NZMIG,S_C5_2?9HM&> -MG'BS>O!FBY.LEYW6(OR_.$QA8H!T494B8K,]'35DI1& -MN@@1A)^2_@VAI9E2XLL05! 4W9(U69*P7E+1\/3[E]+@FX6AL]>-#8*!O**Z -M/:S$SS^ZQ!JKC87[B[@)X_R@QOP%N?>IO(*&A<\1LYLA#$S[(<=1CO8-K8,: -M;(J0]XCG'_F@8L2:HKQ]V7J<9T*4:%9;04[J"^.+T<, @5^[HIX7N[N4N_!V -MQ-[O$/_D<)R"D+VDR9Z7 -: AA"$B"R5G9A+!_#@_%;F3PJ<4XZ0E5>KL!(J -M],+:DH_"0]^D=((*H)I?V.@U;<9ET8%0HI>H@Y1T YCU_F?P\@-)L)!6UDM. -M#XLMI\ 3]]HP U[WA)Q/.$'/*%"!]]3!:I[U!@<2^@J$F V0ED19VOXSUN;V -MXKBMJWZLEAN:6*P6F<+"R ,/Q^'W2(C2"4N:$+N"@[B0F_+;Y28:,L"\H)I? -M]ET;B_7,YQVOL91TGE%:FU+K^>YOUE.?D_ %LY/^FTQ3FLW_J39\\EX4S**Z -MF:(&]MGKP/?5Q=C*G*B76&C=IEL:HL(NFB?AJ51RJQKO5C!)O '7T_?@[\*B -MCKR<0UQOBV"F \OL?)D/Y1:#Q/W.@]X.O9)7B4B0+MYR=1DYL)P\??[<[2 -MRU*47U>'#*6@O&5B$?I\V+^3H%=:4K9:GX0!5CCZ\_X/:S9<@:^&5I-PM_O9 -MBERO2_; 1PY?A(,/AJMKG?DG,?]^U"?3XY)5$*S/BOF!IC.XR,C0(J+DR\"< -MQ[(UDU>'AZGX(%:7YSYCYN;>SQ"0B]TV 8NHP0[ \_&6(ATF79>O 3#SKL9O -MSYJ;M/$>]UG^L%Y;&?KS')ZQMJ^FM)):AD87"JOC+/H+,D>4$9J?DUW&4HHG -MX#3:-\F-J0>LSC -ME\";IG1["//YML:23[M=KU5ZSN\6"&6VLR$,Z O'!\S9$"*V>YL C:J=K^=5G>?]\E6\S!0\Y2?DEV" PDYEM?E]CS]_#7391&JIG+ -M4E^5'<<4+3+N;O*.@ER>%(V^@I./NHG$Q,S5P/!'M]P=B_^!;SA63Q+K^3OE -MO\\^EIT?2I:/&DFF#[C!#,"G^\_^Q39JNERS6Y:;@Y^QAE>9__B;_=IK49CS -MK821OX*1 O;1F)&1O7*0F%# T^3"=L"C'8@)M8:S4M/&>YK:R0_!CIB;E7*@ -MJ;:ZD'L(U#EZ1L,1F2:@2UJ-6$WPC$CJ_3KURHN_AJNL1Y)&$HSRPM2ZUBS' -M#I2(3L=:;XUFXC -M.HNR(@->1T^:D(JBY_62- -#6C@!EIM/E:6*23IM?]>20:D&#>F,AI2[#$9^ -MZ,_@^,4#X ]V48P6EX\8H 9:Q_1#-/+N#P*-A8**1D">5BF&@0D"B<\##JW9 -M-=BN!+M65;CYDJ&.ET<^*$X.>LK.*'ZBB+2#*T(95U%2=#(&:@+*@>_,T.?;0(+!+%$&;K&J/CY#* -MHM+QTI(/1_ [O9Q(A)):NL#$^1)GYL6,GK&,5H>/:Q!>6SV/2725PU=[ U>MOEX]2N/^BCG(,M%:DSM'B^X);Q]:]F"RRDI>KL()C -MIE<#,KVWF^XB_[*7KH+QKE?E:X-ACY:1]+ZW6+/9(L7G[+_S"K*FG,>\G'*6 -M<#G'W<>05).VA)^%KE."EACQ/N;UQ"?;O5^P"5@;OY!35='"=O746TJ5E+%3 -MA_;F(" 6>WO#^1'T'((FMD6&\.WL_3B..1& -MQU:MGF&KFDM\3[*GR3+G\!K!8)9F*9F3?9J;O_&S[.6UQ -?5X> C-N>HJV. -M6/' I0"3T>96:O[58O*>HJEN5I)[!OD:2=N G'!!>=(*9KXW5Z0,0CM!SE4^9OI,*]\,Z -M=&?/AG&4G?69 %>QM_O7'JO;K?R^O:;97JFL'?L-T.$_^B+P2:>&.1/95X>B -MH%GT./;BZ9?;OV-D<)]E#M3YRU$YBY61 -M[$^.F)BAI(MQU/4WY_32HH^[VJ/; -MJ:-R_Z4 1;EVI#V&6.S_92M2&V;I'9*R-S!T,;VTYU>K,1)EI];N$>3))'5 -M$!3[\+TLFW*6I:B<0:.20N?B3@\K!F6OT^L/J8B#MX]+>,2/./%T.ZN -M6*1Q'I&^FL?<]M"?H)1WMH&:OUG^_)?F]<"=@#9>II%+^JRFOL46PY;^O<&- -M3I>;O6I:&_<3[=+FPQ"#A$KXEDN;E_&*&SIU^C7/$[:&>YPG)GH.EQEO,Y,$?POKPG-9QO(Z)UXNHPMKC -MK***N194FK<"Z#/ZW^;;K8N7K/>7XKM^^?F -MWB$269JXK1.14E;Q <#^9I+2:U*,AE^;FY)7@L?:PM,>^FS2O_"8A)^^/KF0 -M4AE#1<_(]=5T3(Y_KY2O60O(M%^9M-D2)U*!-/;RT)+C-?(;L9%2L-*;AS^4 -M=8?:P_E[YA6;=+3_$BC=C8#J31.19G#028S_OXY"N%RHI)0+0MZ7XMAS=_\^L;%;Q)( -M>IRG5Y>5O@3CDS[F/I""D%6*CMR52JSUEMD<1OT5V1Q&O[F4:7Z6BZ#RDM/B -M\3;RU\"2GBB3K%YOMYJLGI_-5@OO^0C$4D-7!@T8CUEI.#DT_>BKQ,\.S2 -MNCO6B;JMA>]R:X*J6DT(S\O3]L\1S[11J!:+X8-@1/W3\O/0+OK7 QZ>H9*$ -MSJFGH*>=#5?HP$:CY_]@JA,C992@Y>MV_#PY_ EVU06<+E?E8)3!WVE -M *W3H-"F2KI;9]'YOU -MQOH*UJM.1D.)C01P2.B-_M?FY<,^AFA0JZL&MJ<4<<34T#?6(QE2VFCOAFZ -ML(W]+?H,[UR@Y)>$C8J_FXNGP9I(TQ;WT[ L#Y&8G-JJI(B>T^!6^-'"49\K -MS(KE18J5D2$#CH,(LF!=PU'>U,+:]<-4$YN\D@$"EPS*T[65B8N4AAFJ&1?K -M[)?RP@MY]I:MCZ% DJ&,DJ?)SM*%G(.;F@*^5L)?U^5[T2?&SU1*G^V;@X>] -MU9;%P7)C>CHE2)9!NP&'6YO3*O$S_6XU^O+"A'Y 0JI;:4765Q',R0\' U6' -MEH6437W%1J"6K0=I[7OW]L-*CH2*WE(+F?&H5E*:[M *^(?1Q0B+5)Z@G!:[ -MNH)@7%^A4!6^)B+G** +E-")N9K+!M+DK_K+W7!0@H_G]C3P\K(%_Y&>L?+% -M4[T-NH+EZ440G)12*QH9FIJ5CK<5\O?W\\#)CY:A^U.-J%"EC,#Z-MSR6(>6 -MI:U6RUJ2 X_ UM$F-/?SAQZ,+>^S6@R#J&$;)APO!9DNOKW"?CJNJ6[JEW>CY^77P, "X49I;IZ"3BL#% -M)O11HDN$Q*5:K\+2K?#&QMM<5(.8LB&V2X9PJ2G_ZU&?H(&>GY._@J)/F8+ -M[3HW\N"ZC\&8\8]=OX.^(>'%GJ:A0!DC\^8WU\-71CC825X! -M*J8 D,3J>,7NSMQ)C\Z,'+X50)0WBN^+G*(DJ5VW@H/!V2.)CG 8"L0#T^P,:N+ -MAZ17B<"KM=8N*(G7H/NN37^"7Z#8\<,Z,'K*@XY=X(M22T>26K:CP-7?WI,8 -MBS>L'&FH;4\FLM-,WC?$/!?S!UAVDK86KU>#D*:QR,=J]+,)4PI(6"ZZ1\YFZ2(NHJ' -MF).=8Y>:R.+:P8^;D;ZPD5)W!8RXT/;Q)O;U0ZE>.%S]]!NI^Z&]DRQ -M=IJZBH&B#(W)@@7+QJY;ZT.[MZE;"*)=7Z+CUDNM(N?^P-3BA" 6NQITMBT* -MBO"+_B*0'8R'G'O@]O3N>OKS3$G2^0^(NE<#GGK#S\M02D/Q_W:4RGNBMXG! -M,C#V[%#EPY1F0UKKGJ;?3B7W]?0UD6-WIJN;AQ[%F*7A]#Z:\._5BY><3*O[ -MG3NMEDL- <;HR\?PEH!<5,3RGK^UH(M13\M"4&KJ8@I[[\6/!\^0GF%O[MH.2 -MB+WPLL#W]_4P-!L:D$Q=NX=6!KM!T=XY.G#OVIF:K(V#!ZD9N%K#PQWDR-[% -MY ^F#$SLM[MJN%ZHP4/TYA8P6LB_EK*"?E*:"^@PEV36 G4*_[GW-8 -MCY."H[G4^$BKB, -M5P#4V=/E[E.#>'M56@"Y5X*J@7(/PTF<6 -M[N6FC NQN/>0^9[$PJ75WJ6>65J=BA$A:[E3T/W%6EB G9>5JECAC%?!_0]) -M\* ZA9:AFD*!GYO8\O;V<]K0FI:4B*NY5I1'C%#V=3:V Y*[DML*N)>4DVH( -M].W&-,;PCU8)[9J%Z[BAUBW*S.L%3R+8EW:=C$M5A)"I^I[ NN$0XOK'S;^+ -MH:HFYJNQPEK#$L9)Q*OL!P\VAK);4*Z@K_;1H8X?<,/3.C_@(X1V?H>ZD+J3 -ME2IA^,:IRG\JP'GK;:Y!"#7FQ LY/=EEZ64O(]W^62SX^V>&W/ -M6XV I%^IX,:)R4]#FF,?J8Q##:4T1.FJW"+);'V]R*D$:K -MNJ:6\)<(D_GWQ'XBIIKBB1:=.O(0JJC$)-_V9D^GED3EC(9?3<"0O]G_J,D5 -M6]8I1@^-AYB.B[F0?77^"$HT<:+_=&' -M?@Y+G['&GXD*F<'W]<8*O)""B1X'DIO"_]J9S-02F[>BFA#C\O,_[N;)7[R2 -M'02(GHJFE[K(P_#=J$B;JZ8E>_M,%_T16_#"?O(FL1(FT<%+)S=;+(=B63WN.CXF:F;F0 -M5HL2N^3F)?S(DP>$IK>WDI8@99^;Q>QYT\'_C<\":7^9PRF6NX)0A* )\<#W -M1G'. -M03CN]L8W\X=>7#VO5:UOS .:S-P.S>O'X@J&1-1&CI2;,/#ZS/8M[AW^!Z], -M%5,;\JZV7B , QD(J,>*K#?><\)*;DI 4NO?B>>#WV]5-ED914*'Z -M"\SNP_91D]&-IEU:D\/6N-65_L\=O88?4]2:7;"0EW$'04F9D,I$IYTJ6_AV -M@PW &4?ORV2-6BR:DJJ*IM*IX=0LWI)/ Y*DDHI8BEN53?$Q_Q8N5\6LFE&Z -MAUH%4T9-S2' ZP#2AM"?SYV?BPMEGN%T3S%JO%I>IMHO: -MPX'$V'S)\]P;FK2%EZ9-ED.@6EOB]C]^W_Y!=8F*CO67OG/A(],5K]A*5))3 -M7X.)*B#N0!*+,!S;G*1QEY*CW#U)_X+<&-"6/(ZE_X%[EIW2T?ST=\/+A_PU -MU_N(OH^E;,&X93+0(PN4H9U!FWQVD4QEXY;5YO*!E[I0"9S^H2C!I9+2S(TI -MZ_'+KH2LOX:/O*J4$%/Q,><:WC7' SA0BKHW[KN"#):=T5[!XNH-S:[8D5Z% -M0YN60IBBK8^;I?;DQ=3OHZV6&'B:HJN=$_ZC&;&:4?R7^).1PI(L_>;$*5BQ -MF_"%\5J7::6^@7SQPIQ1HIZ.B/);\HZ9#/#@^A^GUKB'PI] CXN?ATX(PM5& -M-_.Y3A 76X?XU9>7T,'E+9HD"I]4#X'IEXWMQ89]PLP!Q5U%V[NPF!6-/D[- -MJ >8S9(Y,#J[Y6&(3-> GDN;FJP/N>+B"-[1W*7;=(AKLJOI9WJ/7_ -M[3?N%\^>E*>KFDB#D2W4RN"5D'Z,FM"9T,%^P<7$/E,?EEY>FA&(NN&V6Q3# -MP-NX64[FD0H/D^=?PS]!"AFJ/J-M2EE.X4.)LM!7#6Z:ZCZF0K%;7 -M:M+"+5/U]]57''F5BQ>=2[I^KRB**P_CQ]SNM%H-F1:EH(@WJT+P)NX6[/61 -M?:T1 "*"BX)IA*O P_H!Z^A= ]1(F@L@VD:K@@2!AIK'PD7[U]/CM=PCE=*7 -M I<9QO,54R@DBCB1Y'E^4]D'? WJ>9=IJF -MM9TKE^/N-_*;HI.@4H&/N)9)E$/S^,9V!]E08%&SBKW.G^_%T,5_\L/V@U1Z -M:FU&:VF@I+_3^-:OWO/9GU>6KHJ=CQJV_XE2\?F:U\8GXYK.OZARJH)0K Z> -MZ1@M]/Q_S.,3RYZ?MT*ZJ)J2IG")\Y \]O8T 4>\0I66D*B!P4TCT9GX4I". -M49H)V.+T_Y VP)2QDX^6<9Y0DHR=V>?/^:PCE%L0\:GY1!^# L#35A?BLDJ, -M-E/9NI)4'[R-ZM,7N]6? NC_6ZM.)J"_\.@1-_!NYHU/F=6;6%6[(Y>3R_[) -M+0L32@R&6KA#7 5*I%I!*/B3N]KMTXN.6P";CD&:0&RRN^S\V,;("A^CX:N- -MGH&*6H;^D('^7UDQ^4;%Q-NZ2%^6AE*?^L+_#[8&B9:[$'<*N -M_I &V5;(&=.9LI>3KZ4?\304]B>*ICWNOL:N@Y*GK5B,#H3! +0Y39Q.29H; -MBZ&7U^[U'"W>!M#+J#V74Z(;&%.@5OT! -M]"5N1B;BG*!QL3)S@8G#6L,:1Z&+C573EINHXFSWP-> K)*7D:9=2XM@!JC3 -M%P+ESI3T!O9\BIBF6@/-_NUN\"71BPY$]IZ-TA11J!":_)8UVU*^)I>2DP^/ -MH(^-*;SL[; #2869B$6'G;ESFHKPU FM!L/EA7>_P#F:P8^X%?DAXFSZQ>_U -MJ0Z(EKBZ@4NAH%>3".SIALF):P-"H[ROMUIR ZX?DG>"C>K6Q_ILP-_\N@Z% -MI8*ZS=G1UEP1LG:U\*F*S?G&YM(OVKI=MJM[MXG[>)>"T<\@M'Q6DY^46?#Q -M((*HP78W=C?/X$K=Z8/\CH7<%:C%(#/']L6Y>^Y\4&>KT]M26)\S6 -MCXP_+>^M+*:? ^K/$,%8\,*T18^+?HNK@IVZV6@5)\?@((QQ"0($FO -M5H-9D\W^->;U^]5<=O.=1HJ*F*@, _#,UU&_MI&;<'%7F+A>J]4R?; _HMP/ -MI&)"D[J&P%75PN+_[]+6D[7SDU:M59*:O\?$/T;Z)B:.FE2,EXALDRQ4N]C -MUH55#V OCE@4AIP/2*/;_V$0U/Y YL5*F];95Y"]G+.REILBABFBZ?G-PYV( -MK+V F):;7K>@7@O!8D:R[M)GO)*TG(^8BJU!!-O@4/9R_I90UD,G,_,_]^Y& -MD<@+E7+0@=V$A:_K+2\;D=Q4F170BA>[L%GPZGG;[@*6OP>,2*A*A+7>B 'Q -M^,?0 \]6H"J1BIH<0X[T^C:U[/7#1:1VR>/_G;O$G?_(B$]:Z\76B9Q*G$>& -MNY"[IH-U<'FTPD3.ZT>LH-&PQ[I3K(VWP>KZ"L>M_//3D7+57YY>F)HVIE6K -M0O#4]C3EX71TI%$&H[(MD-;;V+FXWE^PT5(ID/INVC)6H*V(?[M6FIF2N!XK -MQ8DI:-B:RI,\;%E_*''8!=5NN2 -M&O\!Q\ W/L>OSHO]D.V-3KZG,/ S"0[>H\OE$%Z?AYR'K$R#,[!XD>G5-#IF -MSQ":A0B,=>J6,[JCF0-*_/4H M_RP9%'C<.,I$:P0OA0BP*D]?XZ.Z:7\!*? -M4@F;JT+OPOR0D+"YMY&L>M?_[,>L=J*P")Z?=H&IDZ8U^^/%X4C\5J*HMG>H -M6*V,347V7)?_YU"=5G*9M@E_EY"\X4'Y.F[78H>0^HAM&J>#+S7!^",7D"\#!VQI)S@^EEUH4FX6'MP$4$SH>E\*[EI674G*XDY8L -M%YT(Q='2QBGJ#U&Z])]>L\:JG+ZLAIOS-CD^-# #F$&P'J" JYN'+0&P.G(* -MFUI94ZCQU/GPX"^#]YA?G/J")PM?G/:]^?9IHY*5^FNE5.&C[K! -MP'U2RR+8XQ:4Z)RR%-BDD%$H\O;%Y?8 JS*=TKF5Y[H>H$8 \0X$2OC+ .76 -MDJZONUKZ2]Q:;81XB>+%0/OR<:Z4AE$2U]J]\*W1BH9)B?T:6)>"Y_OU]?H^ -MUY>A@IU?DI)8ECV[S>L'29&PD)U:HP.;:/:= 7YS?C3OUKM/L%U2'0Y6(0K8 -MP!'D]^>;H&R:ELM?A(- 09^L\C 0VT,0C(KM7^2Y089+]/KNR.=:V$V41DJK -M3;ZYJI29\RO1]K*T0J^>'4#7GXV2DX"&F6<'[,7JK[);=EUV=V&D -MD^C' +)<"%^9#KU#N)*$2-$^9/8^)I!"C$!^F@ZY&-1?00JBWZ-7?GP.V0I%:0AJWP\HG ]#;Z]!): -MGK2'[:_8;-]L]X+8W.'JI\$)AI_>X%Z>K:JYL(,*]^W$V_7PS9*57ZI64)R^ -M,_6N]0+ITOZ'XL$QG8@>M7GTBU9&B*6S8*K&QM#GY7J+H)6F4I/SS,M2X?V( -M.H6UTT#S"1[4QCI]PP0R6_R>5UZXY9Q*]R+2U86BNE6,D8G#>*3]X\+Q_^X% -M$D+R(%/QQKA3GTP PC7V']*)5[.^FH*L3Z&< >+VT/;%B,>-G)Q/CHF-D(V_ -MP/S$S5S VZ_:F$B'TA[J[!?_$_?]PNXTSXJ,51]^!A-RE'(0<.W-Q!;.R\/" -MU$;:!:&7HHU>D\&:NP#S[S8R/>:X@Y^\E%BZGLD-HQ)0E).TP%R6"N?P-9WV -M\@%=D9J-=I*KEY;<7TC/ZH6%G!.,L)":FS > O?R)?;GVLIH]:.#FBV*\+%- -MK3+%DL8!0(>@&];FTX)2E@V6Q-;VE@.6FK:$H'(54W'&MB7D%0: -MZ9R!.L"F"QD2T]?0]"6O"(4UJ@^/0Z1%E9=Q&"A.TLI"6\!+7<6CFG^(D]ZY -MCM+!,>SNOA037(JD?50#O%DMPUNT#(*:$9_53KU%D&;BE:W/79F)K9V$@KBQ -MI)C([VO*=8F6E)H)7JB@A:M(^=DUK\/\3\3$F+N*GX!S'Z7VE1KSVYJ7I B" -M T2$,Z !WD&O]):BB7*$GIZZ#+K&FO?11>WJW=$9BJ7]BD,]ELJYCI*B\Z'Z -ME^7 IU(P0T>K!8ASI_SV8G0;I_+9)BP2!YCP -MD9":$0.(PRK#"9I4@!^.F8+3#70Y,#SZ2KIP6OBU]XB#:;>#!\U%/"^B I2B -M7+*]0):3V?+')G;%&HN%D+U:B(>:DT_9DO4[_ .&FGJ"FI/ZII68U\*L[B[O -MX8=%G[Y4OXNM1C>9)\P$S4OKG!>.E$0\OX22EK*0T.JPD3]?+V+G&X0_>=7IERJ,'?S^"5 -MB!X=A)D%)4M!-3K:.V6Q$)BN @_9SFB[1D/%P,F_:G8J;KYYWJYO1+L_6AZ&V!9."O$-SZ_7& -ML#)"A+&BKYW7?JB3GX]PW=#B7IQ2O( WUYE(LI+AZ\;^==D(JI;AUP(GEGI? -MJ-GT-3>2YTM0^)-[NUPR]I7LZF-F.D:G@Q8NK(*8J\^DO9+,U:L?)O+6NU^6 -MC(<854> #'K!WB[Z-"[BO9B>@SN$DUJFLD2J]_P*)T;2R?;)TH>8@(&0@WI* -M29* S93'5?_T6ZW<5(W?\JN7$8;NX8BV/JE679IXS3)4_<#VCK^D4GR/B8*= -MI9""Y,.EU%^ ]JV. JJJJEY102O?$,7IUCF.N+.^BIB2_[Z'_K;'YHJ=O_A6 -MN9*6=]"\R/'Y;AO$TS\4>DQ9C8U&L#JK@LK\R43S$\] %F@7NKR=0X:SQ\(P -MD#?%K[J<>(%:IXM>"Z&6JZH #J^#NT]2_B)8% -M==SZ@L9?NO>[U>;6Q=2 EZ&ZNH:'GE%, NHU\)X(Y]*2-PF*]EJ11>7R=3?5 -M\,-OE[V=EJYAB6"DN2S*CL%&U1Q?IX?!C*P-2Z&5_\%ZM-;EYD$9N/R1C%R3 -MJYF3IK;8POS1!@J+S_9C?+V;@9N2J'.20YT@YL;V?O8BF+96&9I=&G\55PMF -MA(B3D)>8J[,-]#UT']?.NJ**1[:*LOZT1X,!6<#6C)!>1*0=RD%@FO_:^^;G -M]<+VS="MLO*OCOH I:/R,1?N0XJRI$E+GIZ5FX##/GGVX-#'3X:$/(FLSH>Y -MDC_+ 8Z3SLNV382'BKM,2;MSCE^-<>'BF^?CU>"T#B; -MDL&DD,JS].[2YB&T4G);AAR#J4WCBT6828H%D$JH?W&6],?W]@N>B9.1-X"" -MD+0V4LD#KL#^$ JLH_T;F6RV0N*:]71FKO!GGJ K7$*3IA6DQ]Y6DM?50J:6 -M>]ZM6EZ:G&N4)T=^$ %JKA 10+7ER/YJR\AKFB5P'" -M]II0K *3WDVSK)2IC(.AAIW9Z'HA@X7^P)F3GJM;J ^;_%*DGJT!$'&6^C6% -ME'04J=ZS_ZC@S/"3VHO[KYN(^9[2U/74NM!'^*/2A-I7@EZ"IGOA^0[=WZ8Q -MK=ZQ0EVAI9_A(KG /J"?GIVMOIB S@-8XC,VFN8*KYH$B[F$ -M@MATJ:>HV-7KURX2_J+42\AY\MNPGKN*N).W3<;!;_/WPHFQFGW4L7Z7PJM; -M3Q+8[!;!S[S -M[?8%-HB/D%J#CY00N(6@X!$W]>]+592I5HB'GZ-8$_XU%CI_P,T>?YB7L@EH -MJ W6R0_NVO3U&<*6A[_75>V+HI>;\_[U\#9&X(B^G:""=M#>TJ $6(T-RXJJ -MR\%!F*O^F5&[OD&80LIV8E]3#Y].1D$&M5:?^LT?J -M)SK%L]JNAE^0LA=[NTV&DL<,RM:\T%.-4%RSJ7A'JJC!M?3'RQ.+5J!7";BK -MOI,\P7+U]/?+B\:@@)Q''J23C.6S]2_N]N4>M;S,3YR$@SBRB,'5Q(3U ,&) -MEE^!EYY+4,9^@(CT]V;U]@.M7HUSB)^*LE'!IIW0PO@G RP_(D72$I:N7F1FQH8Z):?[YU#K^ -M IQ3T[E&43.1PHL'T[CP6AZ 0O:0\,;%0KOV HB((927D7RMPMN2Q://M'HV -M%+BD01H]MI8.P?OMQCX#YDJ6K*JHN5^>=X^%*FRR[\5#5B1:NJC\OO4*67OQ -M1Y)RH)Z@1\"&FYZHS%*:]]W/R-_Q,)?R.M2_'8F-+)!8R)O$U_HFVUF.L??9 -M_NM#F9#W^(E&:N7&>M[G5D<$^WM^5A**"I2-F.$PQJ_^%=*L4Y_[5O2^0O+[ -M!V94PS(S8/K:C79DGJJ3J(^5K=KSRRB_\#V-.77W@5M1ICUEH2=*HJHC_J@R@A% -M2%&M\N)M7X6+6(_/?$*B]X+K:J:VML0:^I"PGI(0FH/ JL58?8B7G195+ZK- -M\>W@^CWCE;P1\5>PFJO@IEL#*V?;D9/47T:=EE= 5%W9TMU<$Z;V6- A@IJ" -MDA7RBG$R_336B,. 8)*#V1N&!:P!PO3ZU?(2O[Z<5\KX[5,ACIW*S=?Y7=J8 -MBQ>,[ZD5CHJH3ZK1,\3S\% #1])&9SXIUW3,ZA+W]CXP)52\VJN5 -MB/;SP%.+!=T#286<-E4]B;F)1O"/I_0M/C_#";J&)*FR"+6@(*?E>=-P5L.* -MI[F*_D"6EJ*4V//D\#;_\HR&5^#/Q$$)Z/?3.:JLA(*V,I"*@ZQ=U\,Z,2[M -MVJ:<$%).IO";LL?\RN"%HZ(=18"[@=J2Q)7P1>54MHJVAB":G_I:"PSM#]&* -MG%&[]J>2F:R.2UO^$78OTK@/AY/#>@*2%;J]Y?F5(."@BPX@>HH[+":BE=K@ -M.;0VYO5FGAI,9KB) ZP]JT7.%2CO@]1&MEV 'Q6,B,*Z_P+FE_OR) <-A?M* -MV@Q;DXI&%:O9!, E+@K* P*;>E"2C%O/JDHIFH$A_F3$Q;_&E+#+L:60K'D9 -M*\_D7HBB]7"A?(K7%[SRQ^Q+<;"3^3!;>@\AEI,;#\7P7[!+G7:;0G]LGJN1 -M^I>OP,5<2;9P HB*C]1!3=#RQ>P0 ,MUDD":0W[P@Z'!<>TF[F7+KZ)059]% -MG*DAFYL*W LA%L4^( -M)LH(#HG("H?=@:R>F4""N+>31-+LUA#MY5!85%&02(H#P<*O\9F+H=26F8(" -M\O+Y]BZET=>0E%VTUUA:H/*6VP,*V%2;WI&5V('_0*:JX1*=[Y9B^ K7D%B6 -MJ)H&5:GPT#"0.H"=0*9>D(MR&_.\\L)%-N[MSXT$""J&ADE+,II7 ,[[!*7: -M\LRWF@9/K;FG.;(O*1+EQG;@P6FJCIE*A8V\0::'FT$#JA?1CBLNVKL._55: -MGFJ GI/0>/';N47D8-'5M(J=!=&V?\W9PM.=AK*[U9""K\UB;/3 +\*$6!'\ -MFD&"KKFD5LT% -)_D)@&MA2OQ@*ZD$>7B89-TJR:&QD.?Q'+RO&'=':-B7V%7KI7 -MFR?3[\06/MNYFM"#.)^1B98PFO\E!^[A+@O$]WQ"KHF? B>+J8+#E)[,TOG -M=9/!6 &25I"Q7/T91,'!A;!;N9!;BG+8\_/V0C$^8 ;JV6YO8\G[2/?[!BIB= -M2)J<:ZF7[(Y[P\:IP\S-Z\,!ZHNQBI[&"8RAIE*^Y[CY;CYRCTI1@JR7@+XI -MP8VB]EJ+AJVR1/JW#;;'-]KURX>E^85:5YY8P!:74,M3580 DY\WE5>)<%:_ -M()Y=GNV"UEJ08X-;C9A:N(1(Z]$>)@'/6XB:W$B,L[&, >HYD!#DP5>5K*&I -MFX5JHYY[",0&VM[ FX6D#$&)5YR+$;N8@[&7+]8[PH=]MU$:=&>Z7C1:G2?+ -MZ:\*S^_OX$B5K94<6J]<-( 6 L>K[/00[,56 ";4J"^J\3,X0A4"G9=CG"_ -M@ZE8W78@+L??\%3TDI*:5S*T00+YT=:=HJ*579FKEJ 7M\ -MRM&KGG:EI9(!JR('J\>V.=Y4K<]+E_:?7%7"D[>HDOD+S]C7!LL0\P&(JYRQ -M^E92J+)CH C8\C%_QBX(G$A3\;*!7EK PJ'D+H9^6;"(^D'AWO:B,/K@M+:> -MCUH509.0?ZMBSZ?$6%R:?H^7NAZKMZT4].;>)-KE -MQ8JGJ8W9B(V0Q:H JD5$QA_/3([$%%2M@9*L) -3)@9N0 -MFECQ,?7OT/W"DU71$I.:NUP+L]:7TPV!ZL'+BPOQJX7=FI:T1ZJ4@-Y7:1OG -M\# 663R"DYU0=;J=QX]S/9 (,G7 <7F[<2HVYG9OZKKVH%[P2Y97H'!"YPRC -MV%P001;^O>$&YIIZ9P4#)!=70V8^#C$&NB*R'HY36QV'LU=WWT]*< -MK8>NGJG8^>&GBQC=G)'#K]^NV%N8&;::E::"GI&.>L'JXS?MP-"^$(N5CE%2 -MJ-'#H+&^<(I;@A%_C>?4UMOMU\>?LE1Q=I.NUZ1.*Q/.K_A=N%I_CI6)J4.< -MB/$J9:#G ZS3\T0N4:5^\5E_%7N -M29. DTR0>\35Z_K%!<@/GDQ%S*_%7J"@%^%ITQ8F[N-0LKV@EH^(V)"3E$"M -M"JP+XP''QT/O#G^?2OZ-FI[H!AW9$A'WOE0/+D:QG5?36D/%70/)O8A>K9Q1 -M6:[C*]#PYCY1F%":4;Y5>Y=@FXMQ:H];A\B"4+11G%U!EX'%-O4R/O#82)HP -MG5.]^(6%Q<+P[/(L&U-:D$M^:I:7HI0E.F5MD\;+9J.>6$.>[,?LFJO-SBS/ -M ^'' =\GD%^>7=6ZQ+MZBZ& 4L?V -M/,;2YF".O9^5^C58_H4*[MR0&?J/MX>?^P5 Y.)#\@?%DXN$II*OJ/BV4-C# -MP=)>@J)%&Y+ZJJQ:4?*K\^8UIO&K6CB_%Y&^I:-,0_1TT.WU4J9H0UZ3WY:3 -M;<3IV.S [\.ZH+B8Z:R]DZ6.N(NGSHDD\>9LWYJ 3RBOKTQ:6(KZUJ(P9 J3 -ME'];@?"C@[BH#GL!'<#!X>N@*_9C1I<75\?HC%.RM;O#/YW4T^R@G!N0B3*= -M6%=QXT_#_(*!G1ZTDKM8GA4^)? *_!&@DK+[3^CRE93F6UF:J)<9KOA3GT#3_I&:]Y3NGU". -M1==>0)BL!:[9S?O,U]+0AY>42(*%C8Q-JK -MX2S%YO71$:=2#OI="ZG>BIS0I:>30/(G$&_F*-85D)WUM9J#26_"XM>2/[R: -MD1^?P_.C=9*SPTRPBHTE_5F788Z)UP_*R# 448R5D).:LGY"Y/OU+F[NT>N/ -MJ!T#N890DIA+$N,_Y!NBE ?FU+"U6>D[O"XB(I1=;%3EZT,XPNWL9Z[4L.J]\S7UQ+$.X=] -MG!>^E:4;J,0G@=*NP-&=M;2-5;>V_Z:BCNTSU]3Z&MR.IGFNS!,J-J-$P>0Q -M^_Z3&Y>M@HA)JX23+\36X2;Z]_"NEEB(BQZA2H::/^G]S,KG(=1LC$2_E+B4 -MD*W;K=DW]-;']O-MA?N?JD1+G':3@%;8PM##XOE8[]9OB)BCC%^:GHI!D(K! -M.^?%[\)RV8:>D(V1<@-0R0+:_-0&U)I35@''(\3F$"_;JHAP6)^1"8-B=_F- -M6J,2!;:@NS>AG)UFE@,-^_G\E^_)F Y'UN,:_586&[F.(3TV? -MES_%EC4@-! /.O2IA9V;C8LD#K?HR*S/\?+ "[N,C$Z25)UR>IC!P-CV\'78 -MBI@EZ, 6,+U/O8R)TRD -MGX2/-YWHNZ:=4\PLWXKBT8F7O$ /KY43:+23@-[%;^Y:6H"6]K[3ODMR7D&F -M&\&H"NZA38[#R)E648B9EIVN%ZB/C\'^Q_)SY_$ND*![CX-<6RS/!4*>UIZ% -ME:">GIB3E-9_QHOY?J^!WVZ -MGC""J!C8EE]%A>/%_[;;B5YL6)N'FY92@*CQN7?Z\D;7%Y =HOX B,;/K^T -MU (!\P/.MA7L5?KLN*Q5NLCYYIY +87"EZNPV[:);NAN@SY<#PBT[[=:!4!6AO(81VBG'#O$V>I&QD8Y16H/PX.%%U[;7 -M][:^!9JCG(J@7XK'')/F5=#0"521JENHL%[''O4N5M#P.H[@$I:#]&J;JFE9OQ#M8#].$23WYX5&^> -MO^BLD@O,LNS3[]9W3_Z?2YN>6?ZZJ!8I6:9YQ0ZFJ0[<$TR,L9^2D7):;"13 -M25#VE_ON\)6)H(D0BJF3 M2CPH0+DZMR18*)]W#FEO7MT4J!@964(JJ=^8^X -MH)IZ?C^1,KJS)["6;&NW/XO;:T*^0GF"?K&&3LI1:PN2UE]8R -MTIV-K5Z7MZTKMC'46MGZ$-7)0JO6\IM:F3BIQKBJ=/OV3\'BE/X^U-N<"%ZW -M2OA45R==D(#T"Z(Q%CN6 -MN99V0]FR=J_M\UP FB9:FKJ'O8M H/Z=]<+%480V+WJ-FI"0[,%I]K/T=>., -MDM_HEWQ9B3JZ#4T%_(XA!3 7LIJ!C+CAJ+@&J8WJD1)21:<(N]4BD):*GD*$ -M>X,!SY#?P1;2P].#4JMRG(Z+C+^YG]E(\NT>D"W;3"&2A(8)D__RQ0/(BG61 -MFU^7&9C@\_CR\'"KW[:3A(13L[JEMGK,@]K$FEF4N;I14?JDGGU$\/D^>]?+ -MJH^VNPQM?X8?)N=^126O@-#62'^+GYA6LT_9=!$^-G[UO7()G(*.7NJL5IK! -M#HPMKL/1[HX%O!R2+8JL$%L#U//V;:Q+O08K5II6BOZB1I 7VLY-]P'GKN#0 -M*9)1,K:.4MNV+ Z6Q2OT\&80V_VCLEZUB)ROB-W2X89SN'M0$:NS&S/M]^?T -M+Y63@YU?@5B*JEVKV/]'7%&\4KU66JH#JA>#I^O6L/330$\5L=.,P[6D2I^D -M\.5F?L*8]K&XOD:'EO/L$NOVUM;LSHZ0?KV$F+R3,L) @MP &G4%0X^:1:B/ -MG\T+ME92P>/Q-L8V08N'](N,^EJJE*9SBR"L0O? #T\*X$-2MYM\=B^R0GCW -MO5#S\=1P,.6LH]0;6Z"KJ4T7HP!,G8FH4JFZ -M@D"6%Y.;DHCR/J)OP./'I:.8FHJ.F_<-\,+U'<8"K8_&FY:' -M4HZ#.HUR5VXR!/@%KJ7YY?TZR&0L7S[N8Z -MW?# '/C']ND_^G4(Q13K?F_DE>'2E:LIYD8P>W5K,0E=-!; -ML;N0GIK+QJ,VA'8"AK>:JE,BEO'F0_OG!_&FL82PG)NVGX+-!_48G';_B5N@ -MNGNJ?YO!>]'O]@,PB]N@ UIOBI;S3!L;\77ZP+L&()?(27)66IH!8?;&EM/* -MAX:L1*NN7IF[C;\2W8#B7L\9OX1QG$-2@*Z1TJO2\C3V$MI)BH91=9XF&QIT -M$%.7S*SX$]S6JX\4POI"7@6^<8*XQWG#'+V@ -M"G%:H5I]'C+J:.J^5BL_U%/?@W\5MAZ(3DY+_AG*J ^O%M]7B"QV3NIV^EZF.H9Z* -MU:G4UJ3K8;NZFJA"B)?-@Y[72/*]4E03T)E*?55:WHJV4GF?@P%"S-=-P]H@ -MF8BN!3*IMXF[D+AT4<<6QR[>4"E_]H*QD(*ZGT<74MA0-/*%3EW#OP'@-9W% -M[<*JE(*%I?2[G[C.5]?OQ1B&N &%7%%:$W %JQ,BR'/:AEY;)!O,3D9!PC*!4@E*%TB=OEKX77%W"O9*RNXNL -MWH':C,[*F$.2NW8"B=^039U2XC\4$/&02I )J_R"F$X*KL3B-\1U\UJ I),P -M/ZY;E4W#%[7_W9>!J[.:C$^5OU,2=/_-3(XNH<5$#(ZIE,V&F4UJAE+7(E3G -M]?_+O9_;BHX&8HFC@!(-]>C\T0'9"AL1IH>-F9:.1UZ)QEN;!2HG\!+^Q9&] -MGE_279I7H6M:X$6(D;"0B*Z7 )KXMG_6 IJ@%)5:H7HZLG(=)4;:G/K4$OO. -M 4)#>E"7&+34^M+8\+BGQ +3PI*.$HY;\O,N.B_:G+B;BF*OM?J'X?(YEY?N -M"X,4G,FYNF%(N#:>H:14 DJ(R(>F6@&"GD"+.'*H\-'M%I9WR)F'AWZ#D$T7 -MMF+0&^+8[/3>%NO#"9"5D?::L&N"FZQ: M'Q^>#R$,-YD:&M4L7ZE_%&VS10 -MH8N>W/21M]-VQ9>UM>/\4DH%#8JK@X1.60=+!THOG/ZTDJ/8OZ);@<<>,.^: -MX]*1L*0;@ZN'GDBDA?#Q[C/3CUIXG7F[5:*SED/[L7?E]--7!86J;Z@%4L.@ -MB<%(WE^BJM1O1%B(0IV^V, =@N$T-O[VUX_MEBZ9%Y:M&!I,5=T"S,!"G$G1 -M\/ 2K$6+3X/MJEN@=[W!\GSB,O 'E)"@#Y!9UZCQQR_RA%Q3V98@OZ\8\>3D -M\) +CY*+KO90J).FIZ_'_<>P3*._GY7#K(*LMYO3,_]5L!KUBT+&$XCCGE"% -M1 SC[/;EYPBF8D*RNMV^BQY"PI4E__YU1Q#:;$Z.2+N#I;[BU]1X!T*TCKR' -MX(NZO6NCEE?-Z]3\VO7S3861F,O4C?N_K,2[I]WX$JS4H,5@31R%EZK2Z,H7 -MDY./TIZ3%COFXPBRD'U0EY"_ Q4 PE 6"D7>E5.]Q\&_U>; Q^CMH[[HIR3 -MJ9J?T<[*])1"E%B6N)X3;9"K43+ETMQ%MN<0,+?<2QAZ7Z" _^SP\@^!IX)? -M*I]E,"U64$ ,CI7)MK"8ZK)E -M5<*OCX\NO5"KMAN*4*N/^*/=R@% OS)X^U3GX".^CB6>J.%^O#J[._>=NJ5 -MG;.=VY"6'O+^X]RLMO1'\J**@M?J1?_ZE8_>&$2MM?=3G89UMT=LJ]*)EA)? -MAA*;@JSWFO<3T7WWQ<92M*F:^XJ&7)+ X^I#M<9#D_!JKQ/'?::@G^&6[700 -M%.*O%X67OQ^KO3@GJ5G=W(YG"N OMX6 O)>!AJR?G?,6'T77_]M)+)"3B[*3 -M-HNPT)LG2-)![ @#P_ !7,2PJ99)4Z+F!H#-Y.TFQ\#;7XNCCUI8D[J- Z;# -MO;83CQN0BIC9XZ42QN?#4%B^&[6EMDNP\(+E5_,0';!+O/J7_'^(4+OEZO$N -M[\4V;49&PZI*C%Z3'ZOK[1HV\XD.NDBKDI^FD(C-_^[ZQ_1.@I67K\LHKKJL -M<$L(JBP+Y/$::XR/E+U?G8MFMA$)$+7P+9XIII)&PY:7NZF7H+: P8I: ^SB -MR^,".Y(I4UR"0_JB8!6NR>/%Q>WV#_RED:Z.L+N7K0[ X+I=@$4"LKG](OXP -M]#3%A5QV<9&F77NHJY[["R3O";@2BZN,L9J;)EI#663U]]+ P"L6H)B6GPCW -MLXS:VL7EK@.+7ZA_DH"NEG\%]^K9U_;RRHUZ5;_/F$N[8EN!B4RMAX2GT9\ -MGD2)6BVZD*:+030QY;(ZYQL,K*-8RGN]FCROVX\\FIG-*_9H2=NPW$ -M??;[M/-#7XZ3BO7/0\NX5)N-'=/'UZ_KQ?:&AIZ:G)7'5O^@VGCI_L5O@?V-^^P1P]>^IVL0]8/GX"A-Y75 -MT& FOJ.07$S(;8MXA9<)+-3.(>#:1590C%5:0+MX]GK!LCGPU_)&TY^%BUFC -MIU^2(9Y]"8[+X=K=Y\#FC_.1=Y["NY'2>:!7V.)!\N_VQ[^CFHW>0JJ= OS. -M\GZ)DYVUH5[RI7KL]\74"KF3MENF=SI^N9*]9?GSR(29T;N7U(NX@IRHX39S -MY="+6I.[D8#V1OA;FV0#%C7%]^.O3FJ[6X>'D)#MB<;3/\601\F:^*RCE)ZO -M:9VI&P_\0ES#R8^4^D#FG8U/H82=0_0TW_;6(T=2U5-:I9&II[I%@L<."Z3L -M^LS/&,==OI,2VA"\5K2[GIFA]>P2VH>,49*%\%V[]M*#]='0DCZ1UXD:>5G" -M%1_&$ ^0(%0;6IVL7Y#0?_#90+C]B?!1C#U8BI664R/R-Q 7DU*;6G"H^^J$ -MNE\-P]/E+,7##IN3ETFHKY.# />>_16N%?5E<+KL%JV)8J"7@NG\P.3#PYF, -MG9YDKJZ DJWWD^3J-9?<_]JHQKD2O(>/7A8LI[?JB/OTJ@W[\=:[MZZ@NB93 -MJ[B 7I>BT.Z6>_3S4+944)2*JA=GZ4=1M!)(GOVPJM<(T.4V+!_;7:#?GU07 -MFLBQAM^I#0,P<:6CR()=>K^0E'OMY#74+L7@S89A][J13G^C/?#PV?+UVY*= -MK%=7FP:,6Y7PTY:^>C?0K72/E+E[OH:XCY+RE9W.UL\23Y95C)J_H*J@FHO1 -MP/<2]]!#.WR6DZ^=V/E#R)RB&E%6H:Z;1<8S;L+'PT1&GER2UT.;+!>*R^L)TII" -M]@2PP9:6K/H+P12TQ00[#RIB\G5]8=HG"=$16EPS^M<60%O.Z<$@]5C";@R%? -MP<.YH!YQO%"KJ(G"7)66E@5Z4X>=#A"+K:.0?]'7<,F$UE"[&Z%V2?&,70TQ -M\3?<\/:.D^V"]I.VI@L,&>/%L.V*N*:X75.-!XZ3G C#]S_UPL,75E6$KU^- -MQK!WRUD$),@+T32#\EY*@X9!27GR4J#>^31NY,B+>@U0@Y"3").IFM+W_^X* -M^ASXE1"2^IV?^Z:KNG*@1%WQP?CT%O3%1;.+D=*1]MOG U4*-)2SW;:1FYL5 -M(G,6]O9CO(.PO9:7VX.FG_=!SR=AF+12O9;QOC_B6I[!Z?'T;]-8CZ80@Y)' -MLEJ2I=#V-)HZSXB7EKB"4W^.F8_8U!DUY!3S:8"\A[R:.)*6A@#!_.W.+]CT -MKXV%J*Z:E1.X&I?7(\3 U9)EAUR8@H!TBPA^D"!S -W('/C5 4,UA[Z-L+*V -M"7[^B+)=\O1YTGXPRPJBOXS\6)./0/D/4GA0GXZ2<9(; >)1)!;$$TR;T F2 -ME9.?J/*7F:GJQ%^AFO%UB5R;;'V_HSXNG:;%"DN]P)N6CYR7DHS"T^W"NO6+ -MDI&=JX]65I5J&M;'+]/ $XZ6F$R/GXV8H+6;P1S.[L[7T(G7JDR#F(V(S9J= -MPQ/%\O2Z][B.7;^L=8-X"&VVE_#*! K5S<[%2:,>_9%:UKE:GZ!TDL'JE>XV -MQ>L,G!F>Q)6ZY=J45@!1IA>+@7IR4\,K[P0% -MH))=CKU6FJ"06W%WQ? VPL#M<"Q#G,N+I$N>S?O9]/O/A].BF9P)AEJA0%D4 -M\W?F9>>\E?F 2[N4BK&5F0KY[.Z!'[UKNJZ64N-D_W-+WY!5GM9V9 -M6H_M&K:XE(NAWOA3S=4OR=6.LA6?TY"JJE+VCZKRO\4@<#8"K%B249H=KE;S -MU\?@68+:ET22R/;%(=4V%M8KKHH>7(;9?+Z05ZK#WL<]J)S+E-!]5[\AE?,, -MZBWV_L\4D)20&[:#1YX2UA'PET8]CZN5H+] DIY;DT3-_CCNL/I#%Z!<;:Z& -MZ4>1DJL2U(;7"?C2 -M"_C\J]C82-QTF_Y2XIX)S!J1!>A%P/8L6_QUHKE6L)H9 -M\=/6FI_&YS>=FX6PG9[#N86]=^G%$ZA1GEV5^KN_M!I*P<+C(]?.U%N-K)O# -M@UJ&]^3"]Z,0I@JO%^2;J)L>3:>OF?(W8_KWP1^VAFKD6NKMD9N >0QY/YV^9.E**VDPF2>?07K,%45@G[D+.>JQK^V^ %W!!17HO87\/")-+OP@%$E@'8 -MD+NL<^*7@TSO!=;PF9.0_J*\6H@:6)'!T_)WCN9ID*Q#6^UXEJ:%R>ID]D3" -MB5N!LH.;7H*RO%GF[,6U[>=-I[Y47I>]IWF@@ W1Q6 R$B+N>/)MFEK;1\>;$+_;S.)YY -M7RB2B+Z*I)N;14W%]MP$P<\6FZN;58O[Z(.+D9"Y*3YU(#?"[H664)&>\*J2 -MQ]3%, Q %IDE]Q.2R. L^O??D*_[PIOPD7J;H->_0(_#RY"$$ZV6D1RS)H7+ -MP?/FT)SO4&N5H'V#KQAVDVK'UAG5^L/ID#F-7+]%]I*J!_+L[_;6\Y:VO.R9 -MG;W+('*"P43=V-W W$F?JI86AY6XQEWZP33U+BRVT,KSFZ>3IHF"4L&R%_'* -M @^JW0P+&(>ZK55V]I*^<0U^Z&?F! MIZ%8.QC\A=Q%G".;IHJ( -M6/+^=*XGQ@:><%9\D%U>K6S0]PM[A3.UEEN.H)&7LTB>6\?RU:_U]5"CE&." -MJ(.?D)*?[<'5+OQSP7+DDQZ-CA8>H"T_MS>S]?&)5I0*OKR%JKB:/2<:_Z_F -MVV.O%IIMK7^MJSB6NL4;[/ PUL,=3=E7"E6]=I&@L('U5L##3,7MXM!;OYR* -MO$20F**-MGK1P?S%L/3%7["T5(V1 9C@QH[6G( 4NU^16%O%-!; /O+6E)Q -M'16Q&[VD3D, J>+@&+!*#YYQY):C%I#V7PL!?GHS\J00H>M2HB06QI219*:P7'X -M]9:6=ZZ9AY2:M:I[ ^DC":I8&]BP)U.+P6NTQ[;OU5RJ&3OC:2II>I)S^3C'.M>!8Q#6HD:AO>HQSOFOL(P6J]& -M!9-8NJ>;G[F6LJ#$T,,$RLP#'>JRA5%ZG(>)ENQ'@Z?!\;WZPAJJE"&OHXN\ -M0R7+0L.LF9.$E]N8F<5PQS+Z[<5=H_1-4A26^9&46,U6VV/Z.@J[A?% ?R"6 -MW1LR,_8VP]F3G[I[B8N?GJ=,0/;UT.#32/>SVY['7?>C $RV7O>+EE95DR* -MIXB^B^@7BM$ #LPBV=Q4L+I/UYB-NHB06PF2.?0F-N*JA(5SNXR-=\9QHDL0 -M@BG'S" 3H;2BUIU36\Q/&A*L$E_!*!W0]_X Q(B:K)8+?[L"CQ,<++">JZ>2 -M@YG+\C_B/.Q%F!:BC5Z(D[F67Y]-#U,3L9.0JWN8J?-@%XB-]M7P)A/R#9N& -MFQF9K%#?O-':;R(WYT]&<-*:DQY=WQ12ZO30%_?JEH^>7+_<3HNX59T#($ . -MW*?DOIKX'H^^U0;,6MOG$O%WY!K"N9;=5;>7BWN!J96RH,_XH^:H^\#\K[V] -M7ZG/BJFV; 73!7+%%\;LR,?4@(>GD7N#PJ/3"8>\BZ]&EY8"U?#M]G8O]X:@ -M]@6:4I.=N' =R:V768IQBY\2"+I(P)K_3=/Y\A8"PX\$;;>^1X2:@8S),\4T -MHV5%DV[C)":B87^SZ;;W8F2O(2^AZ4' -MAO +TNG%_A OVHV6/)#VD&"6H;.UB=FN"&'IS=L%]*V$E=B\IKBNP8&0>,,9 -MU/RZ8 5Z@*.%C@E"B,?[QP&:7+9B,AJ-%V?;LG^#/ PV2G7R-1[3( -M[-%IE77<$,^"FCQ)C9Y+:>R/MP5,ZJCA3_9/3;^,!+NM0I!5D/%K]?JV?]F# -MOY&8K)_+"8F,1EK-K_JOP$CDZO)ME[U>B:>-%D.YAXC'%$;&T#>9D9.*GJ77 -M@HK9%0/CW:(R>W)#EIG)$L;VYJ[1NER?NY;=5JK %9K!"U"24%147+8+F@.5 -MC[GQ=M7G^J4 '0_#W5N8N'*73-C^-Y;Z$P>7K!U!NYV0P4RJX/3R<];3[K2> -M#9N.'4=F<+K8[OJ,]M=<9/JJ5%3-U9J,DEL9\?;%\N^2NYA5BTH635.29%H! -MT(P8!Q[%PJM/$R[0PEYYEAV2!UF?YC2#P/YVFA +$FUZ -MN:J*6]>0EXK'(&SP\G.8G;B9<;J,ME6N&?KY,E R#J*5FFQ%C9N+XZ>K94AN -MS@[8]8>Z3^_CDI2+:9Z:X//6YI8_PP-/ELB,](:IUI/V^,C^:$>!K\7N\$== -MW)&NMH,7RB95TTCSV-:@Q=NV4Y:;GO=(5X'Y3Q&Z&))PEYB>N(X -M5%:>];?06I!$O\/KV-F$%E^%I'*(CHQ$6RO"P3ID\]!(D[A;F;V>ODL-U?'E -M]+_ONW:KDII&NK.9@%DR=Q3&&B*[7Y^\"4?/T;BZVLKZS_Q#"T&<^IJ*C):7 -M4H&V6*#JQI#N\@K-_*^52I)8W@@2?;K)U$FGS,76IG8^=NT7_;PG(V13D+8]&\VQG[K5!B0GO6PN(JJ6AL1 -M+O,!NG8@G1I;5ET@FH'G%C<]YL"P!U:2J?Q+DG>UK!/E$V<3V_ $)#E"$[MQ.?X0]:T2::X@1*L!H+;WBS_MWY//' BVK8,;NOO:59S)).RV\!KND$*"J.NNGM% :9_W-NWOXS]W -MFH /&XRHC:776LX [^JJT[Z&A+WC'I4'*'IRP/+^Y&&!2?E9*>D_G/^PE?\>**@)"_M8B"?WN5J*3$/27"+["[ -MEK:]@8=.L).<22(\Q_X#AUN6?IH0A;*3#,KJ%K?VIL=K5=KL7X8-1R.G@//H -MSZ(&XN/OCZ^NBZV4H( 6TYT%5QL#V)0^%0Z)7E\#.M7_P+N. -MFE0>KYZG2HVRC],"CP,06 /".[2GEAUH-@/LZ!$Z-G'&6I;YJ4 /=::?/-GR -M8S?@\TM&H!^[AU.4@X^A.\SN"M/3O5OP;9V& -MGHMZEK=)0<;Z-_#"C7N>^JKPYYFB8/:+R,( Y*K]RL"YNJB4@WF>1X*VL9"_ -M$V@Y9N7@<*^0EYN/^IFK <\E2'R8HY%6DJF"\=[99.[V UZ 7YU?D8#2LAN] -MPLO%XI;XI![UT/R#D$X3\NO],]0EM;B?DEDKZ)>?E0Q1GCSZU\N2E+F2D&:' -MA9E Y-9M?O;Z0VZ6D>@/G>E(QG:?Q\S Q@?"D9^0$:J&GYR#J9J# _OO[<#R -M&KF'JUM:>KM:GD"05^/"# ?ITL<'' ]WG)-:!ZV?WGF?G0/:Q=96%-M07!I5 -M1AVV*.*?U/;5@Q"?G&!7N8E^MY>4V-8]U_8FNUI&GP*/*Y21;DT2%2WWY<]# -M6ZJZA[_=#6@V@>3WI8 78^)T_*L%9K![I=4HY3 $R;=80!6UWZ9"YDIB0IC(,(ZVUF<_+ -MS P>W\.]A96\3XR.A:F $*[@EG;'K[I:[9B-O<^G 6+IBV(OV@V5*+=(V.; \'SQ@:UWD0)[>(R#V4 U/#_2PZ^@89^:457&"\XB -MTL7VQ]CI7X.96H#>)DKI\3;UE^X^T(FCA(A&FZ^-YDZ7Q50DX]_U$8L4+;V? -M5H'C)/93$I8V]^7Z4.<8B9DIE8U:GGJ.B]%]&?\_KD%\^:5(IQVA>#@:RE -M^.D7&L15B+>;4AB<'4.^6>/0%/*RHA_13<,;V ]6H=:8BS?S)E04HX23UER$"OP;.+?VY1<;U+Z#TH=:01I#=!Y[0-03[BZ0 -MV8:4[)*NJU^'BTI9$YW$,%M"HX2!.X?R?=.*H30NYD;ZP[JF4$P6_82+(K8? -MQWQ S_8.X<:5EE6/$FW8AH2[\3X\QC)[\)"^/I,7I&NIFK)ZF2W]Q/;8_ K! -MUI-3AP&V]$J^)B060PSC_6;DUD5&G$N'AH=)NM++H\/>D%Z,HY$8_\+;W18V -M1_?<$]F]1XB3VN& ER4<\M+>]EI$O[#WN,9/BUB2\\;_PQ2'D'236N\&I9*- -MQ2GU->7%2J2DGI^2J)H?/LSQ[/8T):B+4L6^;[A-NW.[^]'4_-@FPM!>M?R\ -M3XV,AX(.DL3S[;I%OEB#5ER N)>HCE>0=KTAR.F/J,)8 - Y>HRPK(8ZJJ*Q -MC$B%/C,T\!:E?).R57)2JAW YL+CCZ99KI80@[CQP<;NXM/%5?"P7PZA')*@ -M5'W;RQ""M=#!E]6EF]BLI%V8D_40_<]A[59B6W?/1J>2BA%Q]KOZB.LGIGVV -MFZQRGTG0Z^TZEG!Q;J2^1KZ_E(JXI%/JB/WXPY'2EX(%G8F3G5-LAI^2L_;^ -M5^_#IQ>9VTP&4JN3I9 !U\VH%,7"#X\QNUX50*F:HIQ9K!W7 3O\EA?UIIQP -M4:T 2:H]PPM%X;B4]@:F6X/_"7 9[/J0(1S4&JRGHIQZH-^=)^*F\!6&D9:? -MD99.P%8#2/3TTO?8X:UP1E.Q7DD"KK)6*V,[-SG;Q'"T"A8I.DKV"I/+8VSNU%^^2$U%XD0/\7DN7 -MDF*EVL+]RJ?H$\#GR*J*'Z62>@]^0F!: P50+,+7L!OWU/*QP'.[D\EJRS20 -M!!XKG;&[K8#R53+F.D+00+.;7*48N62_^L"*XN):I9:1-X>)F6V44Z/9[6[F -MVS&/4$R"L=L^1%2LFIL*V\0YB@DZVEDMOFM.WV=D*3J*\5@J22F8*1CGCC+>KDZ=U' -M:L@15;BSUHQOJ*&@DHK9XF;6]E/E#;1+J9;4FEW"_Z/2=! !K9Y4FHM:\_?0 -M+-;1O9/R+I>BFXCKCA<(SL#9A*3&"492V;^Y@)N$X[,^+?#8B/K[OQ^*C982 -ME-CC_[?R0[Q[HNC!=,/7X/?C;YI01$,2A9*IEJO-#'K8W"<4G)"M -MC:(_AH[WBQ\7FQ\(!BU0(*^ -ME/"?QW_/&'RF2YR.TX*]899:V5/$D.:ORYU/DXB/AQ>22Y7,]#<7[_&G$JP" -MJ*BNI*%M\\3&K[K^4ZV0$8RBF#BI=/.+V?W,U\?NU$.3JF2+KXD/K Z3TSHE -MNKH?SY"8GK&O_[J#BZJ. ('X^<,'^_\/W*EW^Y*)IDM2N*1>D]"0U/[F-I,% -MB8NTC9*KJP.O4]P:H;.'7_*"G:5KQ.W&^^4<7%*$E9.>NJ >J,+O]YRTB=ZM -M$(GY@S.:G2B08]OL4KSMFJV;*HM.-8642/*1O"X#$5!-FW^]#MVS:L7V]/?P -M9\6#2<4# -MG:!;FZ2)?Y?1$!5ME]/:AE&@10.7>H"H=%KS+LM06'7:488T]IZ-EZB1%#7F -M-B.P@U>@O;*"E91^AL>^Q930VY".E9:+DH>%V8@7L]5&]BXA'UN8:.^2H5M# -MDC[J[-@.)";(CYZ4E-:?E(NVG:V ^G7G[E(2NMA=GP./J7NCDG*=Q,H.]2HJ -MF_72:FWLI8#"7_XP#;&VMY:^I64<8.) 5\"L*^4GE^&71N3\RHE -M?(X#T0/'% J(M%O_B?Q];8Y)S3_Y5/9:XF?6:*BJAU;> -MBI1:P^7Z^DE>ZT\Q^!O#+$K]6 -M7,:?'"LFJ9?:P-03QO9ORPU6FU^:MY_V2,Q4B\3^Y,2MRP8#$[J?E7]<58\3 -MN[CSJ.34;91VM<+=H%&TEB5;@Z+"V[9\$%.'=;R[@Z#"+1:0]^]46%H4MAV< -M.I&@20FL\1*0H;*56Y.\TVQ:FQCB.,3 UQ"K=&2_]D.^SD=J!^CNK?I"HU[L -M2*J.CD#70-/JT)3_[_"[5X^\1IAKJZ&;@R??UD[""\)K5=>43YR!9J.FC0SR -MX1_PU,>'5IN(ED^^D-YPOY+2U<@75@K%]1RXKE[S7@6[BY@F<-MMGF_B6L3) -M?HF>7(:=J@/M"R\V1Y/^1KYPK%;2\.7WP-9SC:(2GZ 56XJMII['UV;!Q89R -MD:.*^OZ0A9/:L;;P].#:A[>DMU*9N ^+'@L^<._MPS]48)U867)7DKW!Z]7O -MM9?*KX^-C8F\JVJBI'LE*%>"WZ, 3(^$C9M7GVJP3Y_!'G-@$I#KGIY?HYZU -MJ=F3[ ^:\OS[[LI*[LOPK9X%"/B;CQCR+$2-4\/A;L VY9GYWD5V4IB-$0_" -MXYGVMMVEH9B?X6HF_N;V6U6P&9Z:%1JZX'7_36D!TGJ!VD:F65"3.X[=Q30W -M^_#%&%*V>8]7AP>WTH3-*,$F/\_(I&!:JKJ2,@.\$93Y;_KT#[G4NF0,\KT3 -M.;^:I\#4H@H/$)Z.3%6*GLTZP\Y*YW[A\,+>&UN+G[,HC+J6"L&=M_$'K@M& -M#02KRFJ;G=NN7KM;H8&7DP3^.:XV/\#1M!A%1[6*^<'6PK)=@Z:OEAW\ Q?: -M.38;[F=1H%[[LY$9VH"GEP,.SQ*L5+0ISYU>_K1: L$^&3_@%="-1H/[?HO> -ME9>ET;'T[O6BJ)W"=IF;FJ2)2-+T[L+$,\;NAM6-B9>4BKHUEQG:@ P=HM 4 -MIEKHZ5*+8[".32BS]/3P-"N CX7!7@:[N_Y$M%T3%.#JRB*@<1")%EN#FI^' -MFA>Z4']!ZFSV(/(#?)G6D;97DYM"W?6'UN3A)W* -MZN7^!>+ OX8#OSIK1=&ZIBMUMQ7JTQ)QE?ZP,#L_O;N -M)40<2D2Z49H"TL2EPYS0FIZ.@*J2P3[\T/I%]Y"@D8VV5YJ[>E:RTPU0T800 -M5IM:45I=;*)7YQ03__(3XIVWDIJKNWQSL3K9]&% >_.'5B69FKV8E+"_S2+Y -M;.(N R2VF:>>G$5*LY6:\P0,:M?#'(N5CYQNVXF[A)^JZ233U[WN(VK?C5M# -MCKBWB+&.4H$/R_=Z! %0M,L]O:*ZEIC27F)^6\'CYL9EU^>8S[L%45EZ=7@B>F*6^B\E_(LB&T9X<^E2"6JQ.LL7J -MK,8?]M*3H&P#BXU>&XJ\[<'5(##S4)83@MN3D@QWA*%!E/_%^L"CLMP9C)(, -MOVQZ6L+ _'XI.4FEZ5RH9=3N3WC>$Z)Q(E]:BC4["@F[9-FX)XCH,'!,A= -M7LOJ%>"KKHE*F9I+3J&CT)FJ_N5ZTCO"KI6+^UPW2'K1+<[;G))V>Z1 EY?! -MD]-T/_ KG)V4K[912GN@4$F3AZ#;G/92/*8=*'F@59WCE&WR.LK=D*)MDY:3 -MDEI[C #1L3?EVIND@JJYA]9,D>IE:.S2>L#3UI:5C"*8GX/@D(O-W^BH0 /= -MF8"\'FU8B:V1]YT#'O__K]H%2).9L=J06+Y#NKH/0?[!X=7\$\?3ZI^5RQHF -M[?:+DYI!P\/G/C[E\8QT6AT$>7Q:U0SWV)!1B?[RB?NK\SIF]9?\C[V<@9&D -MPH""RK[9VN+9R8>06YLD$9S>N(YQ03+36D+0\+ORIIJ"ZI*/EVP9ZC-EX-*" -M\K@8_&^4A%D, SOM[I1V KF?O$!6AH]-J%>7)\HJS>I/0NM?K8ZI -M)2/QM#6UAPM/AK;VI)&^/J:/B<#?[$<-V^G3RBNFFG=#]'+'O% -M?IN9%IX@E%KRULOCU"C/HM([CO]U>J!#4E;Q@)C%^>;$%,73^HF4\:)TJA;0 -MR_,"OMR41II(T'\!/C\TUA##E%"!WO97FIUYEOL0RQ?0E)B;E5^Q&IBG4*<9 ?2 -MK(# IHB:B!A7P,]3HY.&C9F-CY.XAI$%U!D^;A+(B).IE5Y2JI)0.)JY QN: -M8?Q\V\ZT2YZ? 9[UZTH2H)*7*)[1K_;V&XX0VZ\0D9.7\>_0D)!#H8>%DW)[ -MT?!Y/N9MPKR!BZ]&21*70:*:S5VKY;Q1DM%?G5S;:X29P/;#.C7U] M>N:EZ -MF)I?H^[)\?3B>IO-):N96XJX:F%J>G<&M1EY_@3OGQF(VX)K_G2%:=H4\4,@L!JU'I($40+'5%O?S -MG79FKTO+DG>5EAKT%_> 1&6GEA O8>[N.RFW:LFY)2OKFPPD7]U. 4]F9"4)Q3DXFE\9:8 -M\P_C1!264YR3MUA#S3/%+K RHQ!&@YG22)./;':I"WL+YG2#G_R6D=R?D?>2 -MP??L]9>GXFVFH9L>6P>V18SSY].7]\N[D.:95^J+@I%&#?[U/OOFVXF;G$&? -M$E6_H_+[(0HD_\K/ [LF^81&AZU&H$^7T,3UE>;ZY5*($9E\H(*ZM+&F^_?M -MSL\(5L/:R:]&>*>.$@**EFRVER+6;_#TQ Z?W%:?@H4:6L#YPL*-@*"'IE%; -MJ/?&^3HT,D#^D8I96J-^F6+ -MFZJJCJ".2.KS[C?&C86(&K.9NE(!*-+-W _B -MHLF_%GC@O_VNAI(7O1#@V7NZ],N'2(^ E@:]KIZF58-)3='#U<34U0GG\K>^ -MDZ7+FEIXC+;E>O7^9CKRG*/RGW"W<\+9RW,0A(:2A9+TFZK9\E5O]_90U9!6 -MOW"#CYJ@^X$IZ='(BI22U/HU'*NYEGUG\\;\/J+0:YJX,IN2AY7SF-K2<);7 -MRZVFP;^*0W>R7M0MU\4G[_ CBQI03BQH-*S@">OH.N%ZOS -MI9< P\3[[N;W1K9[5T(0AKQ2>Z1:\M? =5Z:\E6#TL;%;N;/-D.VQ$M:;Y.VLIP(]\4P^J-=M+ 9K$=7T)Z> -M6RIL]]0P&P]PF8CM6X;KD%6#&6K8!J80ME2GO;Y5$D6=H#6"\?XXU^[_]IB. -MOQ"3CXE*F^)>?U'?R\\4Y>90(N! -MJH<# -S1EO&5\+V?LMF0;._2%$^\EH0=E:27WV" 6L',QM)>B%>=^K"3O[.% -M^L$4GQ(FA;R=%!8;DB\/FH,-P?G%\D/O4Z"AF9R)59YRC!#JX<7'[]574E1* -MI(J'B+GT?MM<' W*]MP/D#ZAHTRORY!?@\,Z$.06VO.KEE&0F+N&F]Y@1E<# -MJM'C7-]")IQ3BYT0J R^FO;AI9OR\?:BGN7OFH)2732'>AMRJ^- >DF:!?:' -M6(KR]K[OUM?U=YA?D*)2WIMD!@O-'L[PNA9#BU>2\8N0)E?'UL7EUA+_3605XM/IKB^2)X6D(G3/OC&^_;5SYY>BK^=GLOX7E,L_-A( -MS^*6GU9?E8U604+H-D+E?NS\]^?%O[7$AUN/D4^+H'NJF0[(H0'!S4#&B_[? -M$((,NYHR<9_1 L#U-?X_UUV DD'G' -M]O"9EFA7*%N83;6.VO+E_O7"P6O6JHH)F(Z->(X8S=_@U\K3"ZU]C!^6QEWK -MAI!0S69EGFWPHHM2G)=7I*U\H:S6")&CZ!\%UMPAN^\@B+JTU=P+&LECZO<)>+DL$3[>8:^]DUEG.1C**"FT.UJ0TB -MD1"*H\F38VE -MTEORSQ'P6E9031"7LY$'._$@=93'6EP;KYJ=T+F0)ZD#Q.;<,%V+O873LJB@ -MFY-SJ]3?UL+"1X^AJ*J[E%)*B,GJ9?7PXL=:,'VXAQI$LY_)-\=PQ?!SETVX -M#+[&#H>-EKL3V@H"2M/\GU"6N+L7C4-Y\ZKQ8MF64$6BPJB$GJF66IB+N:6H -MQ5[84Z#+7L+8ZL^\BON6./^:+%_941(\Q-HOPQC3LX2?D5N)(PL'" 1P"AR' -MN+R]96H\QC VTIR3FZT025J];).ZQU=:T9P05DF.%?*_N8^K IYX__Y/<$ZF -MN8U64,Y;GS_%P^7V+ME#I9&/VHL/E9CO@V+VNYZB]TOVD(^_6F] -MG56HIJN6I"0647%D__02[]-<0!2M4+-*.P>"]4NN>Y11AIGXF<6I3?F,%'0-R$@Y95D$>I@I.:7P4J-/8GHYS I")2JX*N=!.?R^ M -M._OBB_!&JJ@-&!1#G-JJU.?^-<4+CM6F0PQO:+&WJ<'-B@/)OEKYLA7NM -M"Z"%W<#RL3;TY$#KQY&3EYY(@K/$EGKE)E&&_ ?.]U62F(T%K)>/N%K$#Y<) -MY-C:Q<7"A$2CA9.72JE5PRC(C9R*K9K;EBN,W^/2\#X'A%"?E[255X,UEJB@ -MIRMTG_!3AHV5%XMFCY?5M-%R,_?QD(YYL)!3+J !;_+2\3>0RXKWH-.KOZJ0 -MT0WG$9V:ME %GW90E&SRO4*RWAWD_M1>IO&SHPZ>U8.HBYZ GIUQ(''@-A;8 -MC[J8L)R:2():>AZ](O_:%(?"I-#Z.9W^E7.ZKIK2PZ#;46OL]IKEX712BI#W -M@)R*VNL/\%A#ODMTD5X2X=[Q9OIN$/24<962BI&+AGY(\>'YDD*4PH^/ -MNKY.J%VOH_J Q=S4_D8AP82$F9YCBFM2EKY8T_#SDO8G]]FOOJ6ZFMLJ2(&U -MM\,&0<'6=]PC4E[2.YJWC(=2DKI4FJ/7[?:4TM,QMJ* -MHG&L7_'6,S8W[\&7M!Z']@"6MV!P>LT7(1FO@[.6I+R+BL97FH?T[>?_PQ.Z -MCX&/6B:ZI'+!P^KD]F7;XYY%V*AK6%I5@=%^^>)T)8&#\$S5E*V/.L.4^5C( -M5,+=R+!BQKV E?WM1Z 25TSJ$48UG\:;A*M[OZ:36 J1UAK'PD1WK:KJXO&3 -M5YZW6?Y/7O1J]XG1,:/3P#9PK )T_YDH'$QO7A_HFV_:8=MM#"#9"H\&:\FL\0!Y20FP)-KD!3'@' -M9QS&TPJ6.YUZOIAT4JS9T>7&.L"BOT>N0$D5ZT$Y@(,IS?W^R@/&0Q8&K$F> -M36U@6A" P96FL/KO@UY]5U9'DUF ?9)+:)1X7_%VDO2#5@=BZ^%P)B@M!9W -M\?/Y.F?0PHA0E%F^68(!\<[)6;V#GHZVI5^-I.H8_\9URI!0>G']G)Q^I-93 -M)]\%@*V)@\Z]]*^"@ 690?(M\"? UJN6DYV(3PVRDZ?QP=4N5J.(E[)]JBV3 -ME@-6"<0Y),?WVT]5G>VS [L[S]E;PE9:-$DRGHHY7\<)D[C8Z -M\4Z^1)\L4XB(GB:&T]KOX$\J*@# Q@V;AP"Z\$*?BLF&FL?S_>XR;L%_L%N% -M0%>6F-K>PO"YB9(KCZ-;JZ#B=/ P%H%R: -ME[:Z7\TBY?0R\,6#]I.;JB:65]M4HO.=TC_+K87TGY:3F >>ZL7 W-9R/\"& -MGDP\#-:!HV9P4MC]^DP Y32"G)!%B:^[2V!0>,GVP3WT_\J3._U>FY!#=HN@ -M6KMQ" 76P, 1SM*Y/JLA4E93>::0MI,1,=_&1E;"SLF4CHXA&GLD_P*!B8)0 -M?I6GN@/3_N^?@IJ$T2OW-/3F!UZ,FI1+'[\O.9H9TP %Q\I#XYR@G*6I -M6HT=.*:=PV+C-C 6\(J/<"H#WXD>XE4B#\[M"H8&E -MNJG ]1YN/ML:LY.4I%5: N#6V3!7D#0,E]&"@Z#RDQ8R]AM4"+25C@BZ66)T -M^DBVBS!0"<&6/3/EKQF'E*))LYNJ7Z>)PO)E[G?3"W+&E_I" -MKE6*CZS">+YV>_%ICII 3K96BVP"D]&L!(_& T 76K!$'\;ANJRZ\\U^,]6] -MQ9M:F([&_'"+EE1H7YO-2LG3^,/(@)"&K*Z@FEN_&Y_&7%W%]$7DQO;8O=!6 -MKOJ0G*K"[*"(K)P6.4^1*Z\BDH.4 -MDYHJ\L@)RP%&U-LXJ(?%E5P%DQ;T>DZ[YQ+&Q;O&PU@1AA^6E9A*\03:T)!0 -MHDL'E)*:S?O5_X:P@8/H+-W*[8>* -MO8F\F7JWD&NKL997O\#A]6S0^J,DE6L=XW'Q?0/\9._DE&QB1G6-] T -MQ@%=E*.QQ?F^$Y/^2I;>9_3"=VTE$\<;NQ=Q!#L&ZJH=?VEN/ -MTOY$\.X%:Q>3@K:XVZ7:@)F1E,?&]ZZ>\(V439X,DK)?^.MV4^// 0-L]-G_M2@IJ-"%J CKZ [MC#QLT/QQ_DY"MX"D -M)%%QP/3L+L CG;VBD9"PFITEP\K0,8F2K773NAMB\BT:,- ++%.TF[#W0%ML -M5 . YU/3GKP*VW2%JH*MMMTEN^UO]D\02H6KGKZ3A_>9O(73]O_ZY1-?I:E_ -MDXQ42TW9YO7^-Y>K2;2>+4FTE*K1^_:= -MTO6:ZIX$@IHZAY?RP,R?T0+,SY/O*@L(3XBU&W:_AUP&)J)RTV'0U^; )?22 -M%EU&4)99P-WS\:B$H[7;@WGS)]/1Y_07VZV*6;U45UY?*8Z:]PE%2:X*KR7OM-O0JU9U%LAN6@MR@DJP!^_'^4.-/?J&="D*=\HBJ1?''\#9Z -M\HZRFJ^'=_(ZPH*8<)5>AX\H -ME*2/@NTHZ>,C@P4'$DB7E0&[M@-#B^VGD0C#[J#@]8%0$(&[EZ"9@P%/HU&( -M5D&K@)*Z?0OO=EPJ'R].\D*"=$A$6FZ&.GLCS[,;V -M=M*O1:2+GIM25K%,6? 55/K.J8>ADQ^3!A/^H,R4)^_ZQ=..E9R5A4^^BT:@ -MFPK@U)A=;QX95L[_8EG9:>A8>)BYL(ZP44#Z:1])"*D8]A]/W5 -MFL2GKX">6W>BB(GH!9G2[L<6#YN1E+?$CDF&VOTGX/3&^EK=IWVX'_JJCXZ@ -MB?5\*VR@+NFF+F-K8+:M82(7[> M:Y*A3GUQ-_7VWVFEIZ B,&? -M;%Z_07SOUH_PH]'V$WR=$9 #K/OM9?K/XX>:D$J#JJRR!TIST<77PHOCHJ8O -MNE&5I+=, 3YYY\0Z$4*W_8VYA;MKH)03&,^,3<_B_$S&6HIOGE^-8;H+"?+M -ME_HV15">F5:#H%O\^7UZ.Z -MO#9$E%22B/+_VK2H&%H&DI6*P^23Y=6V18*5DE;VAG264O*'KT%^+1N':Q;I? -MNN:/U*BX7Q]Y6SQP3AZVCUO^'&Y20\)?UZFWEPL#Q^8@+N5(R_BB9@U/8 -M>9Q4?867FG[(WK6Z9CK'C%P!K;:@DL,YLE?9YZKZK:"+K-^=F:ZLFJ[1.9,N -M\,*XGQ8PDY.#&(ZPC-/ T1O4 -V:P?U**T9.FX ,TKFW_.93[Z:,.$*2/)D@ -M6J[##:Q4YMOQ@Z2]@$^3SU*( "TG/B7^IO)#BZZ0HIN.BYO4N\":U,[;XLK& -MUL/<0-^="H)>BY::2+>ZV7+P]:_P)8_)@)U4B;^Z\9><@UA_ -MB6RA:_<67Z.-GZ*_>(F=U8*4), O_/?P%6=.G,V7C V2J)7_4L#$R:E#\9^T -M?DS%CHBHJZ7XQ;05QKWN\*&J^QO6$Y*!EZF7K:-OPB]/G_SJU$=^SK> -MT[.2FM'[Y.V4^BN$$%&],J*J6Q5.TO0=EA.IAE*RG>TVE3__K=/P78G/O8D: -M]S!RFU%58S %G/*%59%8$\PPGN<^\7YEV_#+FL&]>^^<=B.EZ?XU=>X%CW"L -MET.G2"!?G_#DU1+0]MM-< YL2Q*-0)&0>T5O_\U/%<.&]]^,5W^!/6:.70$6 -MQ^_FTE#M?9DFD9"0JI>YE]WRSCB9C0_PLTO?P)SKHP@@ML_^SWMN^)6!!1GY"AJI'CO9U'(T#PK=S3 -MF4;7@KUAH(CJZL<0$,7!C;:YJIJO7;!Q1\7$-;_DQHJ:*/NJ.QS5H)G2]GFE -MY!#BF51_G#L83+TAM[;GR$C5U_=XCI!)GDD.BXULEXM(U/-W[Y;;4HA?BUI/ -MB9PRK+(-40V+Q#*O!)&\UB^?V*^"ADM.L(+2H4OQ -MT(P"HYU7@M.;\L*C.N_NVORP5ID$45F8P25*.WD(Z:4'A%@PSZ->_7UZ?XL_Y-M'B!DN4#PM94=DH,M_>87XGF -M+,?NU@5.?9:<\'U6J,!>BUG#QMQ?H90\E;$(@VP 5]*2967E]=&=ID7RF -M5$MH0,#$]'/'DI*X]H.#';)1O:"V\5 UDNZ]&Y>\KY>/JZP:&,*T?%G>/G)K!LX+(_ YUSPH'X\N(KMO!6)9M -MGO)*3E,BDC[&)&;/4=A6A10)@ZODV=CX_9(B'YN5JHKRPC5M[_Y0N(NCA5H) -M\C&CIJW7QO+"FI19K(^ASEVTAD+8H9;UT-'&F\:KJ]@0TM10K$6C]1 ?T6>R -M;%\*FX>/DT 1'K3NUL;E8Q"]B@V'[1LAVD$)"@ 6!-K(AY;0/)RX9:MLEY_- -M]-$P]B?;[YQY?H.62*BPI(^:P*I2*M$.2?. NYZ<@U9 FI&2H(_-Q^NN[O;^ -MRY!6K.18**7H:Z#Q+RC -MG_F<69ZY0 _#R//F]\6K$HF/D[J2CPA7@HA8T]76U\J[TBP?LI&H=8FO\.'D -M]^SZ)KM/C> ]<@%3EI(70.W>"N;"Q!22N)P4JX"3N*0^P-;U1L:N0ZB&F?#8 -MC[N6)NR<0LW]J8JHC8J:%^+5@M&C\S?O]'51H%I&FO"+F]D= -M$_6X0GY=D%F"6\-R-?+FQ8^=G*2M,(M""V/7FR+V -M-,6:_ZK^>6IMV_OUHK -MAK&2TT$/ZLCF5SF5=GF4N:C,ZI!T@N+DQS"^,E6_%?&UEC!B@')P3H+9#LCW -M6LC?&4"+3[=>J?J#FJ)LEI['\#7P;C;2EYRRD9HQEX+Q2O72?IB6G(Q0F8*C -M,A/P]/( J(.*O)^8B+MIH(+S[84<+_)X6U8(O\.CUE<@\OGW^LBUJ/:D6_'/ -MG[>3O<+V'>0^Q1*2(_*;N(:&G[ZA0/U]_?ONNQ*0+]Z:JXNML B@Z ?H!LN( -MJ:><@(SZ3IUSEI]!-^<;[O[#:9O=DIO6CU86@))?\?[KYNO(@&_5ARP1D7Q^ -MRISSD86:P/C&NB7D\_2)EM64>KFY@,+:X+PV4;BD=Y?;)_;S-OWPSZQ6RAF> -M5WFY0]HXRP.NN'JCF)TSE5JIQHR#X1 \]C!7-8U6:9J;HU):GTJ@QL%]XB5& -M_8R)K@_7L%.-US_NI]8VPI:6OHV]AXV3X%NZVJK4SXH"TKL5K]2)N)5'ME>= -MPO1%)'_^"KNRK4.)H$U2LF.?B6Y1%#9/;G?&)X-2N,_!6DEO,>0+QLS8R_\+^7-N]?;$*W2*$77##\1@J -M@8&;=Z>06^R"0^#1\;?_T^ 2I&P)2CBJ.J%,R/&VUO("BZ>D0WJA%);U9%+_ -MQ>;\QO.&E!BHETV.JR10\P/^#,%+43VILDF.HWN^BZQ6BQ?6]_;ZUO#K+ASS -MB;J-J9G!CIW)HAQ?(M_!0N&"GM\+GI)#5X.B-YCQOCE"_\8C68 6G8ZRB:CC -M52G0/AP+A;"0G/?EP>?6_/IS+!:)KL*7NAEF0#O SN=45""6G0ZALD#CEE/) -M%#3O]_'3DX!I@U&#OX1WG.S3P20ZP)*7H!.HK[.<%;C:GCSO_G/S ]91G\FH -M0;ML(%?-R@\:QHK0EUX1CXN+C:]F_XJ#%L7^P&Z(AU97]Y>>J)^F\+Y[2._D -M0]31 G$(N9/]&H!^F8A8L%.KP/XS.OXZY1J1^["0E*H+@O_STLQ0 Y$WEUJ> -M\JOLGN64X[Q<@;6>4*^+S');(-L'W*Y;^Y"0DU:"J::9XT(W\,+CP^<7J8BO -M@T:2D9H$P?COQNNFGY.#6AV2$HL:VI?V^A)'X3T:'$_M1HL.H8Y;%^0)_^?B -MXH./E$1>4X",V3;%=J+: -MDY>V5S9;K@Y3K,#0[])OUE.-O97MOU^)BL:$5_$*'N/' ,B4M%14G_8@CY:. -M4Q$V-7OE^EJYAY"UJ:>]=A*[LX.E!EC/S\@LSO&KJ)[SL?62B?*2AYK#*A7N -MTE?U?G >5:#1]I\%Z8'(#Y."T2 PO(#(T\"VKNB5Y+0L;/O]O-29YHJTI9+C%^5ZB#"/-#^R4:")9?ZJKX5HX!, -MH?37^BY/G19>FF2N()MMAL*IR$VHWO,<3I:L3;D&[U-F=K;A,A#OYF6A@Y+Y -MFP+R@7N*:80?AP)*S,\*5,J#JIN,B*FFDII3Q+!WPSKD]N7N\)J3E(MR@,.K -M$7\5V*YR7@Z:\-B6\^GJJDJ&"':%6;%SO%]L7_\,N&G:.>]XJ:,J16T*XV;).IO7\'T3)V^(:M?8[1YRL -MJR22D?0N=>M%EHN+Q -M4].#G@9@KYJ(G:P&EW'V-.+'^O/*EM%:T+Z?RJ'YDAOWB*ZG1) OTN6C2O&; -MC'^/ I!ACA+1X_?UTM.%4));FU:E3$/EUX-AD)#0^Q(3U@W',;\5L+O VI ? -MG+18F*DXA /'_,\+L+!3JX19J%OD$%W-,!&7]:L<&;V$@JGIE;K;X$F>EWK$ -MVP^>>8-3NHN=I5;EL";WYMK#UU^,; >]C4UCOG?HU"D9Q5LREIN?S R7N4TY -MI9,%,\3V5A &DH^,VX.5AIX&:;>0D0*LU\>-QL661T^-DT.=JH!*IEZ:PI#E -MEM>:P7^(0%U.2H*X[1G/\Y0+GBV7E192UZO\^O/N"YIQB\5&M+9;XM:M\1O/ -M'(6V,@2GDIZZH+>"QSO7+/J^/>"T>(JNCDB\ -MCZ5*X;6:Q_4>1T[_#QO"C_!6 -ME\4B-.X[RW#GIG1= X:MCHM/A^ 3];9PCJ7L0QB37Y33Z*USESO[^]B/4*Q( -MZ9N;CX7<\7$/VMT6P\F/W+F:2_I-K::"@,SD^?ODTH_HEJRS>O>'4[8%MZV@ -M_H1QR\_$CL&'GYV0J;6)3A& EYKG_O/D]NW%A$B(J5J1'*GKWZ<07)7[D1QS -M29+ ]G&6/I/+?(N3L0^=_)*4$-L(SP]D.)Q?A5>2FH%AI)<94;7FU@+(4H^@ -M5T.[#Z971@TPY^__SI*,H(M3@HCPA83 T_;2,!0!G)99KY:HJYUCAJ[#5I1\ -MK*4(OW2:1YFXC(:*5[_HU#WMM=;S0K95LUO5COI*;+9#$-@ X_]BRR>T4U>; -M1Q&0II821I.;)Z%%'"@%*^R6))6PYN_A"MY^@NVJ_08HFF&8R]GI]!1D^7P,#.;<\HYH] '8B/7LVK -M8$1;F9KL\C?Z3XJ2A7=U[6LR3C$]MY"PYH0>0F+?XRC -M3<#^;>[P9AJ)5 9-@IRE( !D,STJ>@(YJ75YHNKG[FM'S[/3P,@-) -MOME;5J1(G[N OXF% ONCRX_"CKR!E'V%J//GDY3!EY[-,A9G_:*3_>(DXLH -MAX#;:&SN,O<84)6 FM.I=HR5JL'B_/+D]5*VDIJYNPI&DHW17\=V=C[15W:( -MO#^&#HZXCDC-#?^O#=/27B_'RI6MPPI&NH.QEIJ* -M\,9" 5+,Q]K)F7@YFI9:+?R?H)^-I.(]%>[WCSV T;$Z,9:9!=SE$)B2$ECW -MD1J0P])O^[;$PKP*7H22H)NM0I/=*,-*_)"[FJF5]UH>IHY33>)6_;XK.X*C -MK;BS@OI&=8X TB&6VD^[GD&7^CV8SZ:M]-XNQ?Y@PVR6GZJ\VH]=H+79V\[* -MS0;2RK^RNHRL^Z6BK!X;K7*YQ].ZX^>!&)7O1KSG<;POB.\B()UL'2^6]+*V?*4D9.%4%37@<'F[,)O[\.. -M\(.;EG>"@SF7MJ7)V1 .B+*MFB%<@TR^B,/3D3!4TM!'Q[*=%\<(C[<&X./U -M^I;6DIV%@MJ2UH9(K:'P_ZEYX%EY_ -MU-SN>O+:])R$FP!QB8/1^87 A(A?FU2C?%+"PCCR$.6CNHBSK5H$KH/!WD'9 -M(P/R7"2&B38128FR]YK,\_E %^5)IX_#FKB-?I91@:+D%6[WU4_2;).L;Y^7 -MVK[-UM5VFL8;KJ2. 8FOKI,$L(K)5EP; L7REH_PK+V>1-*[EBG)$N\5R+E9:*T->.QAJ5L*5TRJO$O 6X4^0 -ME)2'7EZ;I8"!TJ * ]G?*\B>0M(- -M6MF1FM+ ?,?3[N*1EI"$AXF#@6P-FU/4\QF?O!&%CE5*6J2'@QDYV?_04-O) -M7Z 6N;C7E_4 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/tpg/94654-20170317-085441153.pts b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/tpg/94654-20170317-085441153.pts deleted file mode 100644 index 6760d5ec6..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/pts/tpg/94654-20170317-085441153.pts +++ /dev/null @@ -1,289 +0,0 @@ - -94654mynewt-Updated - - - L2CAP - 0
2
- 1
3
- 1
4
- 1
5
- 1
6
- 2
40
- 2
41
- 2
42
- 2
43
- 2
45
- 2
46
- 2
47
- 3
1
- 3
12
- 3
16
-
- - GAP - 0
2
- 0a
4
- 10
1
- 12
1
- 13
1
- 13
2
- 14
1
- 15
1
- 16
1
- 18
1
- 18
2
- 19
1
- 19
2
- 19
3
- 20
1
- 20
2
- 20
3
- 20
4
- 20A
1
- 20A
10
- 20A
11
- 20A
12
- 20A
13
- 20A
14
- 20A
15
- 20A
16
- 20A
17
- 20A
2
- 20A
3
- 20A
4
- 20A
5
- 20A
7
- 20A
8
- 20A
9
- 21
1
- 21
2
- 21
3
- 21
4
- 21
5
- 21
6
- 21
7
- 21
8
- 21
9
- 22
1
- 22
2
- 22
3
- 22
4
- 23
1
- 23
2
- 23
3
- 23
4
- 23
5
- 24
1
- 24
2
- 24
3
- 24
4
- 25
1
- 25
2
- 25
3
- 25
4
- 25
7
- 25
8
- 25
9
- 26
1
- 26
2
- 26
3
- 26
4
- 27
1
- 27
2
- 28
1
- 28
2
- 29
1
- 29
2
- 29
3
- 29
4
- 30
1
- 30
2
- 31
1
- 31
2
- 31
3
- 31
4
- 31
5
- 31
6
- 31
7
- 31
8
- 31
9
- 32
1
- 32
2
- 32
3
- 33
1
- 33
2
- 33
3
- 33
4
- 33
5
- 33
6
- 34
1
- 34
2
- 34
3
- 35
1
- 35
2
- 35
3
- 35
4
- 35
5
- 35
7
- 35
8
- 35
9
- 37
1
- 37
2
- 37
3
- 5
1
- 5
2
- 5
3
- 5
4
- 6
1
- 7
1
- 7
2
- 8
1
- 8
2
- 8a
3
- 9
1
-
- - SUM ICS - - - PROD - - - GATT - 1
1
- 1
2
- 2
2
- 3
1
- 3
10
- 3
11
- 3
12
- 3
14
- 3
15
- 3
16
- 3
17
- 3
18
- 3
19
- 3
2
- 3
20
- 3
21
- 3
22
- 3
23
- 3
3
- 3
4
- 3
5
- 3
6
- 3
7
- 3
8
- 3
9
- 4
1
- 4
10
- 4
11
- 4
12
- 4
14
- 4
15
- 4
16
- 4
17
- 4
18
- 4
19
- 4
2
- 4
20
- 4
21
- 4
22
- 4
23
- 4
3
- 4
4
- 4
5
- 4
6
- 4
7
- 4
8
- 4
9
- 7
2
- 7
3
- 7
4
-
- - ATT - 1
1
- 1
2
- 2
2
- 3
1
- 3
10
- 3
11
- 3
12
- 3
13
- 3
14
- 3
15
- 3
16
- 3
17
- 3
18
- 3
19
- 3
2
- 3
20
- 3
22
- 3
23
- 3
24
- 3
25
- 3
26
- 3
27
- 3
28
- 3
29
- 3
3
- 3
4
- 3
5
- 3
6
- 3
7
- 3
8
- 3
9
- 4
1
- 4
10
- 4
11
- 4
12
- 4
13
- 4
14
- 4
15
- 4
16
- 4
17
- 4
18
- 4
19
- 4
2
- 4
20
- 4
22
- 4
23
- 4
24
- 4
25
- 4
26
- 4
27
- 4
28
- 4
29
- 4
3
- 4
4
- 4
5
- 4
6
- 4
7
- 4
8
- 4
9
- 5
2
- 5
3
- 5
4
-
- - SM - 1
1
- 1
2
- 2
1
- 2
2
- 2
3
- 2
5
- 3
1
- 4
1
- 4
2
- 5
1
- 5
2
- 5
3
- 5
4
- 7
1
- 7
2
- 7
3
-
-
-
diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ans/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ans/pkg.yml deleted file mode 100644 index 691e566e1..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ans/pkg.yml +++ /dev/null @@ -1,34 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/services/ans -pkg.description: Alert Notification Service Server. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - ans - - nimble - -pkg.deps: - - nimble/host - -pkg.init: - ble_svc_ans_init: 'MYNEWT_VAL(BLE_SVC_ANS_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ans/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ans/syscfg.yml deleted file mode 100644 index 74de8d963..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ans/syscfg.yml +++ /dev/null @@ -1,30 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -syscfg.defs: - BLE_SVC_ANS_NEW_ALERT_CAT: - description: "Initial supported new alert category bitmask." - value: 0 - - BLE_SVC_ANS_UNR_ALERT_CAT: - description: "Initial supported unread alert category bitmask." - value: 0 - - BLE_SVC_ANS_SYSINIT_STAGE: - description: > - Sysinit stage for the alert notification service. - value: 303 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/bas/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/bas/pkg.yml deleted file mode 100644 index afdc69421..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/bas/pkg.yml +++ /dev/null @@ -1,34 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/services/bas -pkg.description: Battery Service -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - bas - - nimble - -pkg.deps: - - nimble/host - -pkg.init: - ble_svc_bas_init: 'MYNEWT_VAL(BLE_SVC_BAS_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/bas/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/bas/syscfg.yml deleted file mode 100644 index 279930f14..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/bas/syscfg.yml +++ /dev/null @@ -1,34 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -syscfg.defs: - BLE_SVC_BAS_BATTERY_LEVEL_READ_PERM: - description: > - Defines permissions for reading "Battery Level" characteristics. Can - be zero to allow read without extra permissions or combination of: - BLE_GATT_CHR_F_READ_ENC - BLE_GATT_CHR_F_READ_AUTHEN - BLE_GATT_CHR_F_READ_AUTHOR - value: 0 - BLE_SVC_BAS_BATTERY_LEVEL_NOTIFY_ENABLE: - description: > - Set to 1 to support notification or 0 to disable it. - value: 1 - BLE_SVC_BAS_SYSINIT_STAGE: - description: > - Sysinit stage for the battery level service. - value: 303 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/dis/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/dis/pkg.yml deleted file mode 100644 index b914ca90a..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/dis/pkg.yml +++ /dev/null @@ -1,34 +0,0 @@ - -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/services/dis -pkg.description: Device Information Service Implementation. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - dis - - nimble - -pkg.deps: - - nimble/host - -pkg.init: - ble_svc_dis_init: 'MYNEWT_VAL(BLE_SVC_DIS_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/dis/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/dis/syscfg.yml deleted file mode 100644 index b306d3bb5..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/dis/syscfg.yml +++ /dev/null @@ -1,109 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_SVC_DIS_DEFAULT_READ_PERM: - description: > - Defines default permissions for reading characteristics. Can be - zero to allow read without extra permissions or combination of: - BLE_GATT_CHR_F_READ_ENC - BLE_GATT_CHR_F_READ_AUTHEN - BLE_GATT_CHR_F_READ_AUTHOR - Set to '-1' to remove this characteristic. - value: -1 - BLE_SVC_DIS_MODEL_NUMBER_READ_PERM: - description: > - Defines permissions for reading "Model Number" characteristics. - Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the - possible values defined for that setting. - value: 0 - BLE_SVC_DIS_MODEL_NUMBER_DEFAULT: - description: > - Defines a default value for "Model number" if not set with - 'ble_svc_dis_model_number_set'. - value: '"Apache Mynewt NimBLE"' - BLE_SVC_DIS_SERIAL_NUMBER_READ_PERM: - description: > - Defines permissions for reading "Serial Number" characteristics. - Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the - possible values defined for that setting. - value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM) - BLE_SVC_DIS_SERIAL_NUMBER_DEFAULT: - description: > - Defines a default value for "Serial number" if not set with - 'ble_svc_dis_serial_number_set'. - value: NULL - BLE_SVC_DIS_HARDWARE_REVISION_READ_PERM: - description: > - Defines permissions for reading "Hardware Revision" characteristics. - Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the - possible values defined for that setting. - value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM) - BLE_SVC_DIS_HARDWARE_REVISION_DEFAULT: - description: > - Defines a default value for "Hardware revision" if not set with - 'ble_svc_dis_hardware_revision_set'. - value: NULL - BLE_SVC_DIS_FIRMWARE_REVISION_READ_PERM: - description: > - Defines permissions for reading "Firmware Revision" characteristics. - Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the - possible values defined for that setting. - value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM) - BLE_SVC_DIS_FIRMWARE_REVISION_DEFAULT: - description: > - Defines a default value for "Software revision" if not set with - 'ble_svc_dis_firmware_revision_set'. - value: NULL - BLE_SVC_DIS_SOFTWARE_REVISION_READ_PERM: - description: > - Defines permissions for reading "Software Revision" characteristics. - Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the - possible values defined for that setting. - value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM) - BLE_SVC_DIS_SOFTWARE_REVISION_DEFAULT: - description: > - Defines a default value for "Software revision" if not set with - 'ble_svc_dis_software_revision_set'. - value: NULL - BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM: - description: > - Defines permissions for reading "Manufacturer name" characteristics. - Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the - possible values defined for that setting. - value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM) - BLE_SVC_DIS_MANUFACTURER_NAME_DEFAULT: - description: > - Defines a default value for "Manufacturer name" if not set with - 'ble_svc_dis_manufacturer_name_set'. - value: NULL - BLE_SVC_DIS_SYSTEM_ID_READ_PERM: - description: > - Defines permissions for reading "System ID" characteristics. - Can be set to BLE_SVC_DIS_DEFAULT_READ_PERM or use any of the - possible values defined for that setting. - value: MYNEWT_VAL(BLE_SVC_DIS_DEFAULT_READ_PERM) - BLE_SVC_DIS_SYSTEM_ID_DEFAULT: - description: > - Defines a default value for "System ID" if not set with - 'ble_svc_dis_manufacturer_name_set'. - value: NULL - BLE_SVC_DIS_SYSINIT_STAGE: - description: > - Sysinit stage for the device information BLE service. - value: 303 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gap/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gap/pkg.yml deleted file mode 100644 index a2ef756e3..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gap/pkg.yml +++ /dev/null @@ -1,34 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/services/gap -pkg.description: Implements the GAP Service. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - nimble - - gap - -pkg.deps: - - nimble/host - -pkg.init: - ble_svc_gap_init: 'MYNEWT_VAL(BLE_SVC_GAP_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gap/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gap/syscfg.yml deleted file mode 100644 index ad6aa7ef3..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gap/syscfg.yml +++ /dev/null @@ -1,83 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_SVC_GAP_DEVICE_NAME: - description: > - Default value for "Device Name" characteristics, unless overwritten - by application. - value: '"nimble"' - BLE_SVC_GAP_DEVICE_NAME_WRITE_PERM: - description: > - Defines permissions for writing "Device Name" characteristics. Can - be zero to allow write without extra permissions or combination of: - BLE_GATT_CHR_F_WRITE_ENC - BLE_GATT_CHR_F_WRITE_AUTHEN - BLE_GATT_CHR_F_WRITE_AUTHOR - Set to '-1' to make characteristic read only. - value: -1 - BLE_SVC_GAP_DEVICE_NAME_MAX_LENGTH: - description: Maximum length for "Device Name" characteristics - value: 31 - BLE_SVC_GAP_APPEARANCE: - description: 'Device appearance' - value: 0 - BLE_SVC_GAP_APPEARANCE_WRITE_PERM: - description: > - Defines permissions for writing "Appearance" characteristics. Can - be zero to allow write without extra permissions or combination of: - BLE_GATT_CHR_F_WRITE_ENC - BLE_GATT_CHR_F_WRITE_AUTHEN - BLE_GATT_CHR_F_WRITE_AUTHOR - Set to '-1' to make characteristic read only. - value: -1 - - # Setting all values for PPCP to '0' will disable characteristic! - BLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL: - description: > - Value of "minimum connection interval" of PPCP characteristic as - defined by Core specification 5.0, Vol 3, Part C, section 12.3. - value: 0 - BLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL: - description: > - Value of "maximum connection interval" of PPCP characteristic as - defined by Core specification 5.0, Vol 3, Part C, section 12.3. - value: 0 - BLE_SVC_GAP_PPCP_SLAVE_LATENCY: - description: > - Value of "slave latency" of PPCP characteristic as defined by Core - specification 5.0, Vol 3, Part C, section 12.3. - value: 0 - BLE_SVC_GAP_PPCP_SUPERVISION_TMO: - description: > - Value of "connection supervision timeout multiplier" of PPCP - characteristic as defined by Core specification 5.0, Vol 3, Part C, - section 12.3. - value: 0 - - BLE_SVC_GAP_CENTRAL_ADDRESS_RESOLUTION: - description: > - Value of "Central Address Resolution" characteristics, as defined - by Core specification 5.0, Vol 3, Part C, section 12. - Set to '-1' to disable. - value: -1 - - BLE_SVC_GAP_SYSINIT_STAGE: - description: > - Sysinit stage for the GAP BLE service. - value: 301 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/pkg.yml deleted file mode 100644 index e3704bc18..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/pkg.yml +++ /dev/null @@ -1,34 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/services/gatt -pkg.description: Implements the GATT service. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - nimble - - gatt - -pkg.deps: - - nimble/host - -pkg.init: - ble_svc_gatt_init: 'MYNEWT_VAL(BLE_SVC_GATT_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/syscfg.yml deleted file mode 100644 index 6ba1b333e..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/gatt/syscfg.yml +++ /dev/null @@ -1,24 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_SVC_GATT_SYSINIT_STAGE: - description: > - Sysinit stage for the GATT BLE service - value: 302 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ias/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ias/pkg.yml deleted file mode 100644 index 3b0ca0745..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ias/pkg.yml +++ /dev/null @@ -1,34 +0,0 @@ - -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/services/ias -pkg.description: Immediate Alert Service Implementation. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - ias - - nimble - -pkg.deps: - - nimble/host - -pkg.init: - ble_svc_ias_init: 'MYNEWT_VAL(BLE_SVC_IAS_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ias/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ias/syscfg.yml deleted file mode 100644 index 2cbed3ab4..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ias/syscfg.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_SVC_IAS_SYSINIT_STAGE: - description: > - Sysinit stage for the immediate alert BLE service. - value: 303 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/pkg.yml deleted file mode 100644 index 55be157d9..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/pkg.yml +++ /dev/null @@ -1,35 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/services/ipss -pkg.description: Implements the IPSS service for IPSP suppoort. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - nimble - - ipsp - - ipss - -pkg.deps: - - nimble/host - -pkg.init: - ble_svc_ipss_init: 'MYNEWT_VAL(BLE_SVC_IPSS_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/syscfg.yml deleted file mode 100644 index dd89608e3..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/ipss/syscfg.yml +++ /dev/null @@ -1,24 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_SVC_IPSS_SYSINIT_STAGE: - description: > - Sysinit stage for the IPSS BLE service - value: 303 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/lls/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/lls/pkg.yml deleted file mode 100644 index 6160f020e..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/lls/pkg.yml +++ /dev/null @@ -1,34 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/services/lls -pkg.description: Link Loss Service Implementation. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - lls - - nimble - -pkg.deps: - - nimble/host - -pkg.init: - ble_svc_lls_init: 'MYNEWT_VAL(BLE_SVC_LLS_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/lls/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/lls/syscfg.yml deleted file mode 100644 index 312b08a2f..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/lls/syscfg.yml +++ /dev/null @@ -1,22 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -syscfg.defs: - BLE_SVC_LLS_SYSINIT_STAGE: - description: > - Sysinit stage for the link loss BLE service. - value: 303 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/include/services/tps/ble_svc_tps.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/include/services/tps/ble_svc_tps.h deleted file mode 100644 index ec4cd790a..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/include/services/tps/ble_svc_tps.h +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -#ifndef H_BLE_SVC_TPS_ -#define H_BLE_SVC_TPS_ - -struct ble_hs_cfg; - -#define BLE_SVC_TPS_UUID16 0x1804 -#define BLE_SVC_TPS_CHR_UUID16_TX_POWER_LEVEL 0x2a07 - -void ble_svc_tps_init(void); - -#endif - diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/pkg.yml deleted file mode 100644 index 3d4c5e98e..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/pkg.yml +++ /dev/null @@ -1,34 +0,0 @@ - -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/services/tps -pkg.description: Tx Power Service adopted specification. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - tps - - nimble - -pkg.deps: - - nimble/host - -pkg.init: - ble_svc_tps_init: 'MYNEWT_VAL(BLE_SVC_TPS_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/src/ble_svc_tps.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/src/ble_svc_tps.c deleted file mode 100644 index 0099a9689..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/src/ble_svc_tps.c +++ /dev/null @@ -1,107 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -#include -#include -#include "nimble/porting/nimble/include/sysinit/sysinit.h" -#include "nimble/porting/nimble/include/syscfg/syscfg.h" -#include "nimble/nimble/host/include/host/ble_hs.h" -#include "../include/services/tps/ble_svc_tps.h" - -/* XXX: We shouldn't be including the host's private header files. The host - * API needs to be updated with a function to query the advertising transmit - * power. - */ -#include "nimble/nimble/host/src/ble_hs_hci_priv.h" - -int8_t ble_svc_tps_tx_power_level; - -/* Access function */ -static int -ble_svc_tps_access(uint16_t conn_handle, uint16_t attr_handle, - struct ble_gatt_access_ctxt *ctxt, void *arg); - -static const struct ble_gatt_svc_def ble_svc_tps_defs[] = { - { - /*** Service: Tx Power Service. */ - .type = BLE_GATT_SVC_TYPE_PRIMARY, - .uuid = BLE_UUID16_DECLARE(BLE_SVC_TPS_UUID16), - .characteristics = (struct ble_gatt_chr_def[]) { { - /*** Characteristic: Tx Power Level. */ - .uuid = BLE_UUID16_DECLARE(BLE_SVC_TPS_CHR_UUID16_TX_POWER_LEVEL), - .access_cb = ble_svc_tps_access, - .flags = BLE_GATT_CHR_F_READ, - }, { - 0, /* No more characteristics in this service. */ - } }, - }, - - { - 0, /* No more services. */ - }, -}; - -/** - * Simple read access callback for the tx power level - * characteristic. - */ -static int -ble_svc_tps_access(uint16_t conn_handle, uint16_t attr_handle, - struct ble_gatt_access_ctxt *ctxt, void *arg) -{ - int rc; - - assert(ctxt->chr == &ble_svc_tps_defs[0].characteristics[0]); - - switch (ctxt->op) { - case BLE_GATT_ACCESS_OP_READ_CHR: - rc = ble_hs_hci_util_read_adv_tx_pwr(&ble_svc_tps_tx_power_level); - if (rc != 0) { - return BLE_ATT_ERR_UNLIKELY; - } - - rc = os_mbuf_append(ctxt->om, &ble_svc_tps_tx_power_level, - sizeof ble_svc_tps_tx_power_level); - return rc == 0 ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES; - - default: - assert(0); - return BLE_ATT_ERR_UNLIKELY; - } - - return 0; -} - -/** - * Initialize the TPS - */ -void -ble_svc_tps_init(void) -{ - int rc; - - /* Ensure this function only gets called by sysinit. */ - SYSINIT_ASSERT_ACTIVE(); - - rc = ble_gatts_count_cfg(ble_svc_tps_defs); - SYSINIT_PANIC_ASSERT(rc == 0); - - rc = ble_gatts_add_svcs(ble_svc_tps_defs); - SYSINIT_PANIC_ASSERT(rc == 0); -} diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/syscfg.yml deleted file mode 100644 index 0391e8b1d..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/services/tps/syscfg.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -syscfg.defs: - BLE_SVC_TPS_SYSINIT_STAGE: - description: > - Sysinit stage for the transmit power BLE service. - value: 303 - diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap.c index 068414bbf..8b18360c9 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_gap.c @@ -482,6 +482,10 @@ ble_gap_conn_find(uint16_t handle, struct ble_gap_conn_desc *out_desc) { struct ble_hs_conn *conn; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); conn = ble_hs_conn_find(handle); @@ -504,6 +508,10 @@ ble_gap_conn_find_by_addr(const ble_addr_t *addr, { struct ble_hs_conn *conn; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); conn = ble_hs_conn_find_by_addr(addr); @@ -551,6 +559,10 @@ ble_gap_extract_conn_cb(uint16_t conn_handle, int ble_gap_set_priv_mode(const ble_addr_t *peer_addr, uint8_t priv_mode) { + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + return ble_hs_pvcy_set_mode(peer_addr, priv_mode); } @@ -562,6 +574,10 @@ ble_gap_read_le_phy(uint16_t conn_handle, uint8_t *tx_phy, uint8_t *rx_phy) struct ble_hs_conn *conn; int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); conn = ble_hs_conn_find(conn_handle); ble_hs_unlock(); @@ -606,6 +622,10 @@ ble_gap_set_prefered_default_le_phy(uint8_t tx_phys_mask, uint8_t rx_phys_mask) return BLE_ERR_INV_HCI_CMD_PARMS; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + memset(&cmd, 0, sizeof(cmd)); if (tx_phys_mask == 0) { @@ -632,6 +652,10 @@ ble_gap_set_prefered_le_phy(uint16_t conn_handle, uint8_t tx_phys_mask, struct ble_hci_le_set_phy_cp cmd; struct ble_hs_conn *conn; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); conn = ble_hs_conn_find(conn_handle); ble_hs_unlock(); @@ -2123,6 +2147,10 @@ ble_gap_set_event_cb(uint16_t conn_handle, ble_gap_event_fn *cb, void *cb_arg) { struct ble_hs_conn *conn; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); conn = ble_hs_conn_find(conn_handle); @@ -2221,6 +2249,10 @@ ble_gap_wl_tx_rmv(const ble_addr_t *addr) return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + memcpy(cmd.addr, addr->val, BLE_DEV_ADDR_LEN); cmd.addr_type = addr->type; @@ -2244,6 +2276,10 @@ ble_gap_wl_set(const ble_addr_t *addrs, uint8_t white_list_count) STATS_INC(ble_gap_stats, wl_set); + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); for (i = 0; i < white_list_count; i++) { @@ -2348,6 +2384,10 @@ ble_gap_adv_stop(void) #if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); rc = ble_gap_adv_stop_no_lock(); ble_hs_unlock(); @@ -2545,6 +2585,10 @@ ble_gap_adv_start(uint8_t own_addr_type, const ble_addr_t *direct_addr, STATS_INC(ble_gap_stats, adv_start); + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); rc = ble_gap_adv_validate(own_addr_type, direct_addr, adv_params); @@ -2561,11 +2605,6 @@ ble_gap_adv_start(uint8_t own_addr_type, const ble_addr_t *direct_addr, } } - if (!ble_hs_is_enabled()) { - rc = BLE_HS_EDISABLED; - goto done; - } - if (ble_gap_is_preempted()) { rc = BLE_HS_EPREEMPTED; goto done; @@ -2630,6 +2669,10 @@ ble_gap_adv_set_data(const uint8_t *data, int data_len) STATS_INC(ble_gap_stats, adv_set_data); + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + /* Check for valid parameters */ if (((data == NULL) && (data_len != 0)) || (data_len > BLE_HCI_MAX_ADV_DATA_LEN)) { @@ -2654,6 +2697,9 @@ ble_gap_adv_rsp_set_data(const uint8_t *data, int data_len) struct ble_hci_le_set_scan_rsp_data_cp cmd; uint16_t opcode; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } /* Check for valid parameters */ if (((data == NULL) && (data_len != 0)) || @@ -2680,6 +2726,10 @@ ble_gap_adv_set_fields(const struct ble_hs_adv_fields *adv_fields) uint8_t buf_sz; int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + rc = ble_hs_adv_set_fields(adv_fields, buf, &buf_sz, sizeof buf); if (rc != 0) { return rc; @@ -2704,6 +2754,10 @@ ble_gap_adv_rsp_set_fields(const struct ble_hs_adv_fields *rsp_fields) uint8_t buf_sz; int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + rc = ble_hs_adv_set_fields(rsp_fields, buf, &buf_sz, sizeof buf); if (rc != 0) { return rc; @@ -2871,6 +2925,10 @@ ble_gap_ext_adv_configure(uint8_t instance, return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + rc = ble_gap_ext_adv_params_validate(params); if (rc) { return rc; @@ -2935,6 +2993,10 @@ ble_gap_ext_adv_set_addr(uint8_t instance, const ble_addr_t *addr) return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); rc = ble_gap_ext_adv_set_addr_no_lock(instance, addr->val); ble_hs_unlock(); @@ -2955,6 +3017,10 @@ ble_gap_ext_adv_start(uint8_t instance, int duration, int max_events) return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); if (!ble_gap_slave[instance].configured) { ble_hs_unlock(); @@ -3232,6 +3298,11 @@ ble_gap_ext_adv_set_data(uint8_t instance, struct os_mbuf *data) goto done; } + if (!ble_hs_is_enabled()) { + rc = BLE_HS_EDISABLED; + goto done; + } + ble_hs_lock(); rc = ble_gap_ext_adv_set_data_validate(instance, data); if (rc != 0) { @@ -3299,6 +3370,11 @@ ble_gap_ext_adv_rsp_set_data(uint8_t instance, struct os_mbuf *data) goto done; } + if (!ble_hs_is_enabled()) { + rc = BLE_HS_EDISABLED; + goto done; + } + ble_hs_lock(); rc = ble_gap_ext_adv_rsp_set_validate(instance, data); if (rc != 0) { @@ -3327,6 +3403,10 @@ ble_gap_ext_adv_remove(uint8_t instance) return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); if (!ble_gap_slave[instance].configured) { ble_hs_unlock(); @@ -3360,6 +3440,10 @@ ble_gap_ext_adv_clear(void) uint8_t instance; uint16_t opcode; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); for (instance = 0; instance < BLE_ADV_INSTANCES; instance++) { @@ -3453,6 +3537,10 @@ ble_gap_periodic_adv_configure(uint8_t instance, return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + rc = ble_gap_periodic_adv_params_validate(params); if (rc) { return rc; @@ -3499,6 +3587,10 @@ ble_gap_periodic_adv_start(uint8_t instance) return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); /* Periodic advertising cannot start unless it is configured before */ @@ -3646,6 +3738,11 @@ ble_gap_periodic_adv_set_data(uint8_t instance, struct os_mbuf *data) goto done; } + if (!ble_hs_is_enabled()) { + rc = BLE_HS_EDISABLED; + goto done; + } + ble_hs_lock(); rc = ble_gap_periodic_adv_set_data_validate(instance, data); @@ -3694,6 +3791,10 @@ ble_gap_periodic_adv_stop(uint8_t instance) return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); rc = ble_gap_periodic_adv_stop_no_lock(instance); ble_hs_unlock(); @@ -3750,6 +3851,10 @@ ble_gap_periodic_adv_sync_create(const ble_addr_t *addr, uint8_t adv_sid, return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); /* No sync can be created if another sync is still pending */ @@ -3838,6 +3943,10 @@ ble_gap_periodic_adv_sync_terminate(uint16_t sync_handle) uint16_t opcode; int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); if (ble_gap_sync.op == BLE_GAP_OP_SYNC) { @@ -3884,6 +3993,10 @@ ble_gap_periodic_adv_sync_reporting(uint16_t sync_handle, bool enable) uint16_t opcode; int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); if (ble_gap_sync.op == BLE_GAP_OP_SYNC) { @@ -3920,6 +4033,10 @@ ble_gap_periodic_adv_sync_transfer(uint16_t sync_handle, uint16_t conn_handle, uint16_t opcode; int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); conn = ble_hs_conn_find(conn_handle); @@ -3964,6 +4081,10 @@ ble_gap_periodic_adv_sync_set_info(uint8_t instance, uint16_t conn_handle, return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); if (ble_gap_slave[instance].periodic_op != BLE_GAP_OP_S_PERIODIC_ADV) { /* periodic adv not enabled */ @@ -4026,6 +4147,10 @@ ble_gap_periodic_adv_sync_receive(uint16_t conn_handle, struct ble_hs_conn *conn; int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); conn = ble_hs_conn_find(conn_handle); @@ -4086,6 +4211,10 @@ ble_gap_add_dev_to_periodic_adv_list(const ble_addr_t *peer_addr, return BLE_ERR_INV_HCI_CMD_PARMS; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + cmd.peer_addr_type = peer_addr->type; memcpy(cmd.peer_addr, peer_addr->val, BLE_DEV_ADDR_LEN); cmd.sid = adv_sid; @@ -4106,6 +4235,10 @@ ble_gap_rem_dev_from_periodic_adv_list(const ble_addr_t *peer_addr, uint8_t adv_ return BLE_ERR_INV_HCI_CMD_PARMS; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + cmd.peer_addr_type = peer_addr->type; memcpy(cmd.peer_addr, peer_addr->val, BLE_DEV_ADDR_LEN); cmd.sid = adv_sid; @@ -4313,6 +4446,10 @@ ble_gap_disc_cancel(void) #if NIMBLE_BLE_SCAN int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); rc = ble_gap_disc_cancel_no_lock(); ble_hs_unlock(); @@ -4406,6 +4543,10 @@ ble_gap_ext_disc(uint8_t own_addr_type, uint16_t duration, uint16_t period, STATS_INC(ble_gap_stats, discover); + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); rc = ble_gap_disc_ext_validate(own_addr_type); @@ -4532,6 +4673,10 @@ ble_gap_disc(uint8_t own_addr_type, int32_t duration_ms, #if MYNEWT_VAL(BLE_EXT_ADV) struct ble_gap_ext_disc_params p = {0}; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + p.itvl = disc_params->itvl; p.passive = disc_params->passive; p.window = disc_params->window; @@ -4553,6 +4698,10 @@ ble_gap_disc(uint8_t own_addr_type, int32_t duration_ms, STATS_INC(ble_gap_stats, discover); + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); /* Make a copy of the parameter strcuture and fill unspecified values with @@ -4912,7 +5061,8 @@ ble_gap_ext_connect(uint8_t own_addr_type, const ble_addr_t *peer_addr, } if (!ble_hs_is_enabled()) { - return BLE_HS_EDISABLED; + rc = BLE_HS_EDISABLED; + goto done; } if (ble_gap_is_preempted()) { @@ -5204,6 +5354,10 @@ ble_gap_terminate(uint16_t conn_handle, uint8_t hci_reason) STATS_INC(ble_gap_stats, terminate); + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); conn = ble_hs_conn_find(conn_handle); @@ -5280,6 +5434,10 @@ ble_gap_conn_cancel(void) #if MYNEWT_VAL(BLE_ROLE_CENTRAL) int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); rc = ble_gap_conn_cancel_no_lock(); ble_hs_unlock(); @@ -5538,6 +5696,10 @@ ble_gap_update_params(uint16_t conn_handle, return BLE_HS_EINVAL; } + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + STATS_INC(ble_gap_stats, update); memset(&l2cap_params, 0, sizeof l2cap_params); entry = NULL; @@ -5633,7 +5795,12 @@ ble_gap_security_initiate(uint16_t conn_handle) STATS_INC(ble_gap_stats, security_initiate); + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + ble_hs_lock(); + conn = ble_hs_conn_find(conn_handle); if (conn != NULL) { conn_flags = conn->bhc_flags; @@ -5694,6 +5861,10 @@ ble_gap_pair_initiate(uint16_t conn_handle) { int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + rc = ble_sm_pair_initiate(conn_handle); return rc; @@ -5711,6 +5882,10 @@ ble_gap_encryption_initiate(uint16_t conn_handle, ble_hs_conn_flags_t conn_flags; int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + rc = ble_hs_atomic_conn_flags(conn_handle, &conn_flags); if (rc != 0) { return rc; @@ -5733,6 +5908,10 @@ ble_gap_unpair(const ble_addr_t *peer_addr) { struct ble_hs_conn *conn; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + if (ble_addr_cmp(peer_addr, BLE_ADDR_ANY) == 0) { return BLE_HS_EINVAL; } @@ -5759,6 +5938,10 @@ ble_gap_unpair_oldest_peer(void) int num_peers; int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + rc = ble_store_util_bonded_peers( &oldest_peer_id_addr, &num_peers, 1); if (rc != 0) { @@ -5784,6 +5967,10 @@ ble_gap_unpair_oldest_except(const ble_addr_t *peer_addr) int num_peers; int rc, i; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + rc = ble_store_util_bonded_peers( &peer_id_addrs[0], &num_peers, MYNEWT_VAL(BLE_STORE_MAX_BONDS)); if (rc != 0) { @@ -5903,6 +6090,10 @@ ble_gap_conn_rssi(uint16_t conn_handle, int8_t *out_rssi) { int rc; + if (!ble_hs_is_enabled()) { + return BLE_HS_EDISABLED; + } + rc = ble_hs_hci_util_read_rssi(conn_handle, out_rssi); return rc; } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs.c index 4a7087b15..7a0ba6e68 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs.c @@ -836,4 +836,8 @@ ble_hs_deinit(void) ble_gap_deinit(); ble_hs_hci_deinit(); + + ble_hs_flow_stop(); + + ble_hs_stop_deinit(); } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow.c index e74f5da36..50ec007d1 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow.c @@ -273,3 +273,11 @@ ble_hs_flow_startup(void) return 0; } + +void +ble_hs_flow_stop(void) +{ +#if MYNEWT_VAL(BLE_HS_FLOW_CTRL) + ble_npl_callout_deinit(&ble_hs_flow_timer); +#endif +} diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow_priv.h index 753eaf8ff..291849a72 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_flow_priv.h @@ -28,7 +28,7 @@ extern "C" { void ble_hs_flow_connection_broken(uint16_t conn_handle); void ble_hs_flow_track_data_mbuf(struct os_mbuf *om); int ble_hs_flow_startup(void); - +void ble_hs_flow_stop(void); #ifdef __cplusplus } #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_priv.h index 952690e71..f2a64a362 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_priv.h @@ -132,6 +132,7 @@ void ble_hs_timer_resched(void); void ble_hs_notifications_sched(void); struct ble_npl_eventq *ble_hs_evq_get(void); void ble_hs_stop_init(void); +void ble_hs_stop_deinit(void); struct ble_mqueue { STAILQ_HEAD(, os_mbuf_pkthdr) head; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_stop.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_stop.c index 92fae1263..36401adf8 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_stop.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_hs_stop.c @@ -281,3 +281,9 @@ ble_hs_stop_init(void) ble_hs_stop_terminate_timeout_cb, NULL); #endif } + +void +ble_hs_stop_deinit(void) +{ + ble_npl_callout_deinit(&ble_hs_stop_terminate_tmo); +} diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_sc.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_sc.c index ffc807fa6..2f481637c 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_sc.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/src/ble_sm_sc.c @@ -611,9 +611,9 @@ ble_sm_sc_public_key_rx(uint16_t conn_handle, struct os_mbuf **om, } cmd = (struct ble_sm_public_key *)(*om)->om_data; - /* Check if the peer public key is same as our generated public key. - * Return fail if the public keys match. */ - if (memcmp(cmd, ble_sm_sc_pub_key, 64) == 0) { + /* Check if the X component of peer public key is same as X + * component of our generated public key. Return fail if they match. */ + if (memcmp(cmd->x, ble_sm_sc_pub_key, 32) == 0) { res->enc_cb = 1; res->sm_err = BLE_SM_ERR_AUTHREQ; return; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/store/config/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/store/config/pkg.yml deleted file mode 100644 index db80d1df8..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/store/config/pkg.yml +++ /dev/null @@ -1,38 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/store/config -pkg.description: sys/config-based persistence layer for the NimBLE host. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - - nimble - - persistence - -pkg.deps: - - "@apache-mynewt-core/encoding/base64" - - nimble/host - -pkg.deps.BLE_STORE_CONFIG_PERSIST: - - "@apache-mynewt-core/sys/config" - -pkg.init: - ble_store_config_init: 'MYNEWT_VAL(BLE_STORE_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/store/config/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/store/config/syscfg.yml deleted file mode 100644 index ff0689c6d..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/store/config/syscfg.yml +++ /dev/null @@ -1,27 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_STORE_CONFIG_PERSIST: - description: > - Whether to save data to sys/config, or just keep it in RAM. - value: 1 - BLE_STORE_SYSINIT_STAGE: - description: > - Sysinit stage for BLE host store. - value: 500 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/syscfg.yml deleted file mode 100644 index e72e8d529..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/syscfg.yml +++ /dev/null @@ -1,471 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_HOST: - description: 'Indicates that a BLE host is present.' - value: 1 - - BLE_HS_AUTO_START: - description: > - Causes the BLE host to automatically start during system - initialization. - value: 1 - - # Debug settings. - BLE_HS_DEBUG: - description: 'Enables extra runtime assertions.' - value: 0 - BLE_HS_PHONY_HCI_ACKS: - description: > - Rather than wait for HCI acknowledgements from a controller, the - host simulates incoming acks. Only recommended for test code - running in the simulator. - value: 0 - BLE_HS_REQUIRE_OS: - description: > - Specifies whether the host can depend on the kernel being present. - This should only be disabled for unit tests running in the - simulator. - value: 1 - - # Monitor interface settings - BLE_MONITOR_UART: - description: Enables monitor interface over UART - value: 0 - BLE_MONITOR_UART_DEV: - description: Monitor interface UART device - value: '"uart0"' - BLE_MONITOR_UART_BAUDRATE: - description: Baudrate for monitor interface UART - value: 1000000 - BLE_MONITOR_UART_BUFFER_SIZE: - description: > - Monitor interface ringbuffer size for UART. - This value should be a power of 2. - value: 64 - BLE_MONITOR_RTT: - description: Enables monitor interface over RTT - value: 0 - BLE_MONITOR_RTT_BUFFER_NAME: - description: Monitor interface upstream buffer name - value: '"btmonitor"' - BLE_MONITOR_RTT_BUFFER_SIZE: - description: Monitor interface upstream buffer size - value: 256 - BLE_MONITOR_RTT_BUFFERED: - description: > - Enables buffering when using monitor interface over RTT. The data - are written to RTT once complete packet is created in intermediate - buffer. This allows to skip complete packet if there is not enough - space in RTT buffer (e.g. there is no reader connected). If disabled, - monitor will simply block waiting for RTT to free space in buffer. - value: 1 - BLE_MONITOR_CONSOLE_BUFFER_SIZE: - description: > - Size of internal buffer for console output. Any line exceeding this - length value will be split. - value: 128 - - # L2CAP settings. - BLE_L2CAP_MAX_CHANS: - description: > - The number of L2CAP channels to allocate. The default value allows - for the signal, ATT, and SM channels for each connection. - value: '3*MYNEWT_VAL_BLE_MAX_CONNECTIONS' - BLE_L2CAP_SIG_MAX_PROCS: - description: > - The maximum number of concurrent L2CAP signal procedures. - value: 1 - BLE_L2CAP_JOIN_RX_FRAGS: - description: > - Whether to collapse incoming L2CAP fragments into a minimal set of - mbufs. - 1: Slower, more memory efficient. - 0: Faster, less memory efficient. - value: 1 - BLE_L2CAP_RX_FRAG_TIMEOUT: - description: > - Expiry time for incoming data packets (ms). If this much time - passes since the previous fragment was received, the connection is - terminated. A value of 0 means no timeout. - value: 30000 - BLE_L2CAP_COC_MAX_NUM: - description: > - Defines maximum number of LE Connection Oriented Channels channels. - When set to (0), LE COC is not compiled in. - value: 0 - BLE_L2CAP_COC_MPS: - description: > - Defines the MPS of L2CAP COC module. This is actually NimBLE's internal - L2CAP MTU. The default MPS size is chosen in a way, that the MPS plus - the required HCI and L2CAP headers fit into the smallest available - MSYS blocks. - value: 'MYNEWT_VAL_MSYS_1_BLOCK_SIZE-8' - - BLE_L2CAP_ENHANCED_COC: - description: > - Enables LE Enhanced CoC mode. - value: 0 - restrictions: - - '(BLE_L2CAP_COC_MAX_NUM > 0) && (BLE_VERSION >= 52) if 1' - - # Security manager settings. - BLE_SM_LEGACY: - description: 'Security manager legacy pairing.' - value: 1 - BLE_SM_SC: - description: 'Security manager secure connections (4.2).' - value: 0 - - BLE_SM_MAX_PROCS: - description: > - The maximum number of concurrent security manager procedures. - value: 1 - BLE_SM_IO_CAP: - description: > - The IO capabilities to report during pairing. Valid values are: - BLE_HS_IO_DISPLAY_ONLY - BLE_HS_IO_DISPLAY_YESNO - BLE_HS_IO_KEYBOARD_ONLY - BLE_HS_IO_NO_INPUT_OUTPUT - BLE_HS_IO_KEYBOARD_DISPLAY - value: 'BLE_HS_IO_NO_INPUT_OUTPUT' - BLE_SM_OOB_DATA_FLAG: - description: > - Whether the out-of-band pairing algorithm is advertised. (0/1) - value: 0 - BLE_SM_BONDING: - description: > - Enables bonding (persistence and restoration of secure links). (0/1) - value: 0 - BLE_SM_MITM: - description: > - Whether man-in-the-middle protection is advertised during - pairing. (0/1) - value: 0 - BLE_SM_KEYPRESS: - description: > - Whether keypress support is advertised during pairing. (0/1) - value: 0 - BLE_SM_OUR_KEY_DIST: - description: > - A bitmap indicating which keys to distribute during pairing. The - bits are defined as follows: - 0x01: BLE_SM_PAIR_KEY_DIST_ENC - 0x02: BLE_SM_PAIR_KEY_DIST_ID - 0x04: BLE_SM_PAIR_KEY_DIST_SIGN - 0x08: BLE_SM_PAIR_KEY_DIST_LINK - value: 0 - BLE_SM_THEIR_KEY_DIST: - description: > - A bitmap indicating which keys to accept during pairing. The - bits are defined as follows: - 0x01: BLE_SM_PAIR_KEY_DIST_ENC - 0x02: BLE_SM_PAIR_KEY_DIST_ID - 0x04: BLE_SM_PAIR_KEY_DIST_SIGN - 0x08: BLE_SM_PAIR_KEY_DIST_LINK - value: 0 - BLE_SM_SC_DEBUG_KEYS: - description: > - Enable SM debug mode. In this mode SM uses predefined DH key pair as - described in Core Specification 5.0, Vol. 3, Part H, 2.3.5.6.1. This - allows to decrypt air traffic easily and thus should be only used - for debugging. - value: 0 - - # GAP options. - BLE_GAP_MAX_PENDING_CONN_PARAM_UPDATE: - description: > - Controls the number of connection parameter updates that can be pending - simultaneously. Devices with many concurrent connections may need - to increase this value. - value: 1 - - # Supported GATT procedures. By default: - # o Notify and indicate are enabled; - # o All other procedures are enabled for centrals. - BLE_GATT_DISC_ALL_SVCS: - description: > - Enables the Discover All Primary Services GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_DISC_SVC_UUID: - description: > - Enables the Discover Primary Services by Service UUID GATT - procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_FIND_INC_SVCS: - description: > - Enables the Find Included Services GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_DISC_ALL_CHRS: - description: > - Enables the Discover All Characteristics of a Service GATT - procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_DISC_CHR_UUID: - description: > - Enables the Discover Characteristics by UUID GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_DISC_ALL_DSCS: - description: > - Enables the Discover All Primary Services GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_READ: - description: > - Enables the Read Characteristic Value GATT procedure. (0/1) - (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_READ_UUID: - description: > - Enables the Read Using Characteristic UUID GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_READ_LONG: - description: > - Enables the Read Long Characteristic Values GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_READ_MULT: - description: > - Enables the Read Multiple Characteristic Values GATT procedure. - (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_WRITE_NO_RSP: - description: > - Enables the Write Without Response GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_SIGNED_WRITE: - description: > - Enables the Signed Write Without Response GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_WRITE: - description: > - Enables the Write Characteristic Value GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_WRITE_LONG: - description: > - Enables the Write Long Characteristic Values GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_WRITE_RELIABLE: - description: > - Enables the Reliable Writes GATT procedure. (0/1) - value: MYNEWT_VAL_BLE_ROLE_CENTRAL - BLE_GATT_NOTIFY: - description: > - Enables sending and receiving of GATT notifications. (0/1) - value: 1 - BLE_GATT_INDICATE: - description: > - Enables sending and receiving of GATT indications. (0/1) - value: 1 - - # GATT options. - BLE_GATT_READ_MAX_ATTRS: - description: > - The maximum number of attributes that can be read with a single - GATT Read Multiple Characteristic Values procedure. (0/1) - value: 8 - BLE_GATT_WRITE_MAX_ATTRS: - description: > - The maximum number of attributes that can be written with a single - GATT Reliable Write procedure. (0/1) - value: 4 - BLE_GATT_MAX_PROCS: - description: > - The maximum number of concurrent client GATT procedures. (0/1) - value: 4 - BLE_GATT_RESUME_RATE: - description: > - The rate to periodically resume GATT procedures that have stalled - due to memory exhaustion. (0/1) Units are milliseconds. (0/1) - value: 1000 - - # Supported server ATT commands. (0/1) - BLE_ATT_SVR_FIND_INFO: - description: > - Enables processing of incoming Find Information Request ATT - commands. (0/1) - value: 1 - BLE_ATT_SVR_FIND_TYPE: - description: > - Enables processing of incoming Find By Type Value Request ATT - commands. (0/1) - value: 1 - BLE_ATT_SVR_READ_TYPE: - description: > - Enables processing of incoming Read By Type Request ATT commands. - (0/1) - value: 1 - BLE_ATT_SVR_READ: - description: > - Enables processing of incoming Read Request ATT commands. (0/1) - value: 1 - BLE_ATT_SVR_READ_BLOB: - description: > - Enables processing of incoming Read Blob Request ATT commands. - (0/1) - value: 1 - BLE_ATT_SVR_READ_MULT: - description: > - Enables processing of incoming Read Multiple Request ATT commands. - (0/1) - value: 1 - BLE_ATT_SVR_READ_GROUP_TYPE: - description: > - Enables processing of incoming Read by Group Type Request ATT - commands. (0/1) - value: 1 - BLE_ATT_SVR_WRITE: - description: > - Enables processing of incoming Write Request ATT commands. (0/1) - value: 1 - BLE_ATT_SVR_WRITE_NO_RSP: - description: > - Enables processing of incoming Write Command ATT commands. (0/1) - value: 1 - BLE_ATT_SVR_SIGNED_WRITE: - description: > - Enables processing of incoming Signed Write Command ATT commands. - (0/1) - value: 1 - BLE_ATT_SVR_QUEUED_WRITE: - description: > - Enables processing of incoming Prepare Write Request and Execute - Write Request ATT commands. (0/1) - value: 1 - BLE_ATT_SVR_NOTIFY: - description: > - Enables processing of incoming Handle Value Notification ATT - commands. (0/1) - value: 1 - BLE_ATT_SVR_INDICATE: - description: > - Enables processing of incoming Handle Value Indication ATT - commands. (0/1) - value: 1 - - # ATT options. - BLE_ATT_PREFERRED_MTU: - description: The preferred MTU to indicate in MTU exchange commands. - value: 256 - - BLE_ATT_SVR_MAX_PREP_ENTRIES: - description: > - A GATT server uses these when a peer performs a "write long - characteristic values" or "write long characteristic descriptors" - procedure. One of these resources is consumed each time a peer - sends a partial write. - value: 64 - - BLE_ATT_SVR_QUEUED_WRITE_TMO: - description: > - Expiry time for incoming ATT queued writes (ms). If this much - time passes since the previous prepared write was received, the - connection is terminated. A value of 0 means no timeout. - value: 30000 - - # Privacy options. - BLE_RPA_TIMEOUT: - description: > - The rate that new random addresses should be generated (seconds). - value: 300 - - # Store settings. - BLE_STORE_MAX_BONDS: - description: > - Maximum number of bonds that can be persisted. Note: increasing - this value may also require increasing the capacity of the - underlying storage mechanism. - value: 3 - BLE_STORE_MAX_CCCDS: - description: > - Maximum number of client characteristic configuration descriptors - that can be persisted. Note: increasing this value may also - require increasing the capacity of the underlying storage - mechanism. - - value: 8 - - BLE_MESH: - description: > - This option enables Bluetooth Mesh support. The specific - features that are available may depend on other features - that have been enabled in the stack, such as GATT support. - value: 0 - - # Flow control settings. - BLE_HS_FLOW_CTRL: - description: > - Whether to enable host-side flow control. This should only be - enabled in host-only setups (i.e., not combined-host-controller). - value: 0 - - BLE_HS_FLOW_CTRL_ITVL: - description: > - The interval, in milliseconds, that the host should provide - number-of-completed-packets updates to the controller. - value: 1000 - - BLE_HS_FLOW_CTRL_THRESH: - description: > - If the number of data buffers available to the controller falls to - this number, immediately send a number-of-completed-packets event. - The free buffer count is calculated as follows: - (total-acl-bufs - bufs-freed-since-last-num-completed-event). - value: 2 - - BLE_HS_FLOW_CTRL_TX_ON_DISCONNECT: - description: > - If enabled, the host will immediately transmit a - host-number-of-completed-packets command whenever a connection - terminates. This behavior is not required by the standard, but is - a necessary workaround when interfacing with some controllers. - value: 0 - - BLE_HS_STOP_ON_SHUTDOWN: - description: > - Stops the Bluetooth host when the system shuts down. Stopping - entails aborting all GAP procedures and terminating open - connections. - value: 1 - - BLE_HS_STOP_ON_SHUTDOWN_TIMEOUT: - description: > - Timeout used in NimBLE's host stop procedure in ms. - value: 2000 - - BLE_HS_SYSINIT_STAGE: - description: > - Sysinit stage for the NimBLE host. - value: 200 - - ### Log settings. - - BLE_HS_LOG_MOD: - description: 'Numeric module ID to use for BLE host log messages.' - value: 4 - BLE_HS_LOG_LVL: - description: 'Minimum level for the BLE host log.' - value: 1 - -syscfg.logs: - BLE_HS_LOG: - module: MYNEWT_VAL(BLE_HS_LOG_MOD) - level: MYNEWT_VAL(BLE_HS_LOG_LVL) - -syscfg.vals.BLE_MESH: - BLE_SM_SC: 1 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/tools/log2smtest.rb b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/tools/log2smtest.rb deleted file mode 100644 index e253e69f0..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/tools/log2smtest.rb +++ /dev/null @@ -1,1029 +0,0 @@ -#!/usr/bin/env ruby - -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -### This script converts a bletiny log into a security manager unit test. The -### input log must contain the connection establishment and complete pairing -### procedure. -### -### Arguments: None -### Stdin: bletiny log file - -$PAIR_ALG_STRINGS = { - 0 => [ 'BLE_SM_PAIR_ALG_JW', 'just works', 'jw' ], - 1 => [ 'BLE_SM_PAIR_ALG_PASSKEY', 'passkey entry', 'pk' ], - 2 => [ 'BLE_SM_PAIR_ALG_OOB', 'out of band', 'ob' ], - 3 => [ 'BLE_SM_PAIR_ALG_NUMCMP', 'numeric comparison', 'nc' ] -} - -$ADDR_TYPE_STRINGS = { - 0 => 'BLE_ADDR_TYPE_PUBLIC', - 1 => 'BLE_ADDR_TYPE_RANDOM', - 2 => 'BLE_ADDR_TYPE_RPA_PUB_DEFAULT', - 3 => 'BLE_ADDR_TYPE_RPA_RND_DEFAULT', -} - -$ACTION_STRINGS = { - 0 => 'BLE_SM_IOACT_NONE', - 1 => 'BLE_SM_IOACT_OOB', - 2 => 'BLE_SM_IOACT_INPUT', - 3 => 'BLE_SM_IOACT_DISP', - 4 => 'BLE_SM_IOACT_NUMCMP', -} - -$prev_idx = 0 -$ctxt = {} - -def test_case_name - type_str = $ctxt[:sc] ? "sc" : "lgcy" - init_str = $ctxt[:we_are_init] ? "us" : "peer" - alg_str = $PAIR_ALG_STRINGS[$ctxt[:pair_alg]][2] - iio_cap_str = "iio#{$ctxt[:pair_req][:io_cap]}" - rio_cap_str = "rio#{$ctxt[:pair_rsp][:io_cap]}" - bonding_str = "b#{$ctxt[:bonding] ? 1 : 0}" - iat_str = "iat#{$ctxt[:addrs][:init_type]}" - rat_str = "rat#{$ctxt[:addrs][:resp_type]}" - ikey_str = "ik#{$ctxt[:pair_rsp][:init_key_dist]}" - rkey_str = "rk#{$ctxt[:pair_rsp][:resp_key_dist]}" - - "ble_sm_" + - "#{type_str}_#{init_str}_#{alg_str}_#{iio_cap_str}_#{rio_cap_str}_" + - "#{bonding_str}_#{iat_str}_#{rat_str}_#{ikey_str}_#{rkey_str}" -end - -def test_case_comment -<<-eos -/** - * #{$ctxt[:sc] ? 'Secure connections' : 'Legacy'} pairing - * Master: #{$ctxt[:we_are_init] ? "us" : "peer"} - * Pair algorithm: #{$PAIR_ALG_STRINGS[$ctxt[:pair_alg]][1]} - * Initiator IO capabilities: #{$ctxt[:pair_req][:io_cap]} - * Responder IO capabilities: #{$ctxt[:pair_rsp][:io_cap]} - * Bonding: #{$ctxt[:bonding]} - * Initiator address type: #{$ADDR_TYPE_STRINGS[$ctxt[:addrs][:init_type]]} - * Responder address type: #{$ADDR_TYPE_STRINGS[$ctxt[:addrs][:resp_type]]} - * Initiator key distribution: #{$ctxt[:pair_rsp][:init_key_dist]} - * Responder key distribution: #{$ctxt[:pair_rsp][:resp_key_dist]} - */ -eos -end - -def to_hex_s(byte) - if byte.is_a?(String) - byte = s_to_i(byte) - end - - "0x#{byte.to_s(16).rjust(2, '0')}" -end - -# to_i(0) but interpret leading zeros as decimal. -def s_to_i(s) - if s[0..1] == "0x" - return s.to_i(16) - else - return s.to_i(10) - end -end - -def invalid_byte_line(msg, line) - str = "invalid byte line" - if msg != nil - str += ": #{msg}" - end - - str += "; line=#{line}" - - raise str -end - -def token_string_to_bytes(line, delim = ' ') - tokens = line.split(delim) - bytes = [] - tokens.each do |token| - begin - byte = token.to_i(16) - bytes << byte - rescue - invalid_byte_line("token=#{token}", line) - end - end - - return bytes -end - -def txrx_prefix(is_tx) - if is_tx - return "tx" - else - return "rx" - end -end - -def reqrsp_s(is_req) - reqrsp = nil - if is_req - return "req" - else - return "rsp" - end -end - -def bytes_to_arr_body(bytes, indent) - lines = [] - - idx = 0 - while idx < bytes.size - slice_len = nil - if bytes.size - idx >= 8 - slice_len = 8 - else - slice_len = bytes.size - idx - end - - slice = bytes[idx...(idx + slice_len)] - line = ' ' * indent + - slice.map{|b| to_hex_s(b)}.join(", ") + "," - lines << line - - idx += slice_len - end - - return lines.join("\n") << "\n" -end - -def bytes_to_arr(bytes, name, indent) - str = "#{' ' * indent}.#{name} = {\n" - str << bytes_to_arr_body(bytes, indent + 4) - str << "#{' ' * indent}}," - - return str -end - -def addr_string_to_bytes(addr_string) - token_string_to_bytes(addr_string, ':').reverse -end - -def parse_pair_cmd(line, is_req) - suffix = reqrsp_s(is_req) - re = %r{ - pair\s#{suffix}; - \s - conn=\d+ - \s - io_cap=(?\d+) - \s - oob_data_flag=(?\d+) - \s - authreq=(?0x[0-9a-f]+) - \s - mac_enc_key_size=(?\d+) - \s - init_key_dist=(?\d+) - \s - resp_key_dist=(?\d+) - }x - - m = re.match(line) - if m == nil - return nil - end - - cmd = {} - cmd[:io_cap] = s_to_i(m[:io_cap]) - cmd[:oob_data_flag] = s_to_i(m[:oob_data_flag]) - cmd[:authreq] = s_to_i(m[:authreq]) - cmd[:max_enc_key_size] = s_to_i(m[:max_enc_key_size]) - cmd[:init_key_dist] = s_to_i(m[:init_key_dist]) - cmd[:resp_key_dist] = s_to_i(m[:resp_key_dist]) - - return cmd -end - -def parse_privkey(line) - if !(line =~ /our privkey=(.+)/) - return nil - end - return token_string_to_bytes($1) -end - -def parse_public_key(line, is_tx) - prefix = txrx_prefix(is_tx) - if !(line =~ /#{prefix}ed sm command: public key; conn=\d+ x=(.+) y=(.+)/) - return nil - end - - pubkey = {} - pubkey[:x] = token_string_to_bytes($1) - pubkey[:y] = token_string_to_bytes($2) - - if pubkey[:x].size != 32 - raise "invalid public key: x length incorrect; line=#{line}" - end - - if pubkey[:y].size != 32 - raise "invalid public key: y length incorrect; line=#{line}" - end - - return pubkey -end - -def parse_confirm(line, is_tx) - prefix = txrx_prefix(is_tx) - if !(line =~ /#{prefix}ed sm command: confirm; conn=\d+ value=(.+)/) - return nil - end - - bytes = token_string_to_bytes($1) - if bytes.size != 16 - raise "invalid confirm line (length mismatch): #{line}" - end - - return { :value => bytes } -end - -def parse_random(line, is_tx) - prefix = txrx_prefix(is_tx) - if !(line =~ /#{prefix}ed sm command: random; conn=\d+ value=(.+)/) - return nil - end - - bytes = token_string_to_bytes($1) - if bytes.size != 16 - raise "invalid random line (length mismatch): #{line}" - end - - return { :value => bytes } -end - -def parse_stk(line) - if !(line =~ /^ out=(.+)/) - return nil - end - - bytes = token_string_to_bytes($1) - if bytes.size != 16 - raise "invalid stk line (length mismatch): #{line}" - end - - return bytes -end - -def parse_dhkey_check(line, is_tx) - prefix = txrx_prefix(is_tx) - if !(line =~ /#{prefix}ed sm command: dhkey check; conn=\d+ value=(.+)/) - return nil - end - - bytes = token_string_to_bytes($1) - if bytes.size != 16 - raise "invalid dhkey_check line (length mismatch): #{line}" - end - - return { :value => bytes } -end - -def parse_ltk(line) - if !(line =~ /persisting.+ltk=([^ ]+)/) - return nil - end - - bytes = $1.split(":") - if bytes.size != 16 - raise "invalid ltk line (length mismatch): exp=16 got=#{bytes.size} " + - "line=#{line}" - end - - return bytes -end - -def parse_enc_info(line, is_tx) - prefix = txrx_prefix(is_tx) - if !(line =~ /#{prefix}ed sm command: enc info; conn=\d+ ltk=(.+)/) - return nil - end - - bytes = token_string_to_bytes($1) - if bytes.size != 16 - raise "invalid enc info line (length mismatch): #{line}" - end - - return { :ltk => bytes } -end - -def parse_master_id(line, is_tx) - prefix = txrx_prefix(is_tx) - if !(line =~ /#{prefix}ed sm command: master id; conn=\d+ ediv=(.+) rand=(.+)/) - return nil - end - - return { - :ediv => s_to_i($1), - :rand => s_to_i($2), - } -end - -def parse_id_info(line, is_tx) - prefix = txrx_prefix(is_tx) - if !(line =~ /#{prefix}ed sm command: id info; conn=\d+ irk=(.+)/) - return nil - end - - bytes = token_string_to_bytes($1) - if bytes.size != 16 - raise "invalid id info line (length mismatch): #{line}" - end - - return { :irk => bytes } -end - -def parse_id_addr_info(line, is_tx) - prefix = txrx_prefix(is_tx) - if !(line =~ /#{prefix}ed sm command: id addr info; conn=\d+ addr_type=(\d+) addr=(.+)/) - return nil - end - - bytes = addr_string_to_bytes($2) - if bytes.size != 6 - raise "invalid id addr info line (length mismatch): #{line}" - end - - return { - :addr_type => s_to_i($1), - :addr => bytes, - } -end - -def parse_sign_info(line, is_tx) - prefix = txrx_prefix(is_tx) - if !(line =~ /#{prefix}ed sm command: sign info; conn=\d+ sig_key=(.+)/) - return nil - end - - bytes = token_string_to_bytes($1) - if bytes.size != 16 - raise "invalid sign info line (length mismatch): #{line}" - end - - return { - :sig_key => bytes, - } -end - -def parse_passkey_info(line) - passkey_info = {} - - case line - when /passkey action event; action=4 numcmp=(\d+)/ - passkey_info[:action] = 4 - passkey_info[:numcmp] = $1.to_i(10) - when /^b passkey conn=\d+ action=1 oob=(\S+)/ - passkey_info[:action] = 1 - passkey_info[:oob] = token_string_to_bytes($1, ':') - when /^b passkey conn=\d+ action=2 key=(\d+)/ - passkey_info[:action] = 2 - passkey_info[:key] = $1.to_i(10) - when /b passkey conn=\d+ action=3 key=(\d+)/ - passkey_info[:action] = 3 - passkey_info[:key] = $1.to_i(10) - else - return nil - end - - return passkey_info -end - -def parse_addrs(line) - if !(line =~ /our_ota_addr_type=(\d+) our_ota_addr=(\S+) our_id_addr_type=(\d+) our_id_addr=(\S+) peer_ota_addr_type=(\d+) peer_ota_addr=(\S+) peer_id_addr_type=(\d+) peer_id_addr=(\S+)/) - return nil - end - - our_ota_addr_bytes = addr_string_to_bytes($2) - our_id_addr_bytes = addr_string_to_bytes($4) - peer_ota_addr_bytes = addr_string_to_bytes($6) - peer_id_addr_bytes = addr_string_to_bytes($8) - - if $ctxt[:we_are_init] - init_id_bytes = our_id_addr_bytes - init_ota_bytes = our_ota_addr_bytes - resp_id_bytes = peer_id_addr_bytes - resp_ota_bytes = peer_ota_addr_bytes - init_addr_type = s_to_i($1) - resp_addr_type = s_to_i($5) - else - init_id_bytes = peer_id_addr_bytes - init_ota_bytes = peer_ota_addr_bytes - resp_id_bytes = our_id_addr_bytes - resp_ota_bytes = our_ota_addr_bytes - init_addr_type = s_to_i($5) - resp_addr_type = s_to_i($1) - end - - if init_id_bytes == init_ota_bytes - init_ota_bytes = [0] * 6 - end - if resp_id_bytes == resp_ota_bytes - resp_ota_bytes = [0] * 6 - end - - return { - :init_type => init_addr_type, - :resp_type => resp_addr_type, - :init_id_addr => init_id_bytes, - :resp_id_addr => resp_id_bytes, - :init_rpa => init_ota_bytes, - :resp_rpa => resp_ota_bytes, - } -end - -def detect_initiator(lines) - lines.each do |line| - if line =~ /txed sm command: pair req/ - $ctxt[:we_are_init] = true - elsif line =~ /txed sm command: pair rsp/ - $ctxt[:we_are_init] = false - end - end - - if $ctxt[:we_are_init] == nil - raise "could not detect which peer is the initiator" - end -end - -def pair_cmd_to_s(cmd, is_req) - suffix = reqrsp_s(is_req) - return <<-eos - .pair_#{suffix} = { - .io_cap = #{to_hex_s(cmd[:io_cap])}, - .oob_data_flag = #{to_hex_s(cmd[:oob_data_flag])}, - .authreq = #{to_hex_s(cmd[:authreq])}, - .max_enc_key_size = #{to_hex_s(cmd[:max_enc_key_size])}, - .init_key_dist = #{to_hex_s(cmd[:init_key_dist])}, - .resp_key_dist = #{to_hex_s(cmd[:resp_key_dist])}, - }, - eos -end - -def privkey_to_s(privkey) - return bytes_to_arr(privkey, "our_priv_key", 8) -end - -def public_key_to_s(public_key, is_req) - suffix = reqrsp_s(is_req) - return <<-eos - .public_key_#{suffix} = { -#{bytes_to_arr(public_key[:x], "x", 12)} -#{bytes_to_arr(public_key[:y], "y", 12)} - }, - eos -end - -def confirm_to_s(confirm, is_req, idx) - return <<-eos - .confirm_#{reqrsp_s(is_req)}[#{idx}] = { -#{bytes_to_arr(confirm[:value], "value", 12)} - }, - eos -end - -def random_to_s(random, is_req, idx) - return <<-eos - .random_#{reqrsp_s(is_req)}[#{idx}] = { -#{bytes_to_arr(random[:value], "value", 12)} - }, - eos -end - -def ltk_to_s(ltk) - return bytes_to_arr(ltk, "ltk", 8) -end - -def stk_to_s(stk) - return bytes_to_arr(stk, "stk", 8) -end - -def enc_info_to_s(id_info, is_req) - return <<-eos - .enc_info_#{reqrsp_s(is_req)} = { -#{bytes_to_arr(id_info[:ltk], "ltk", 12)} - }, - eos -end - -def master_id_to_s(master_id, is_req) - return <<-eos - .master_id_#{reqrsp_s(is_req)} = { - .ediv = 0x#{master_id[:ediv].to_s(16)}, - .rand_val = 0x#{master_id[:rand].to_s(16)}, - }, - eos -end - -def id_info_to_s(id_info, is_req) - return <<-eos - .id_info_#{reqrsp_s(is_req)} = { -#{bytes_to_arr(id_info[:irk], "irk", 12)} - }, - eos -end - -def id_addr_info_to_s(id_addr_info, is_req) - return <<-eos - .id_addr_info_#{reqrsp_s(is_req)} = { - .addr_type = #{id_addr_info[:addr_type]}, -#{bytes_to_arr(id_addr_info[:addr], "bd_addr", 12)} - }, - eos -end - -def sign_info_to_s(sign_info, is_req) - return <<-eos - .sign_info_#{reqrsp_s(is_req)} = { -#{bytes_to_arr(sign_info[:sig_key], "sig_key", 12)} - }, - eos -end - -def passkey_info_fill(passkey_info) - case passkey_info[:action] - # None - when 0 - $ctxt[:pair_alg] = 0 - $ctxt[:authenticated] = false - - # OOB - when 1 - $ctxt[:pair_alg] = 2 - $ctxt[:authenticated] = true - - # Input - when 2 - $ctxt[:pair_alg] = 1 - $ctxt[:authenticated] = true - - # Display - when 3 - $ctxt[:pair_alg] = 1 - $ctxt[:authenticated] = true - - # Numeric comparison - when 4 - $ctxt[:pair_alg] = 3 - $ctxt[:authenticated] = true - - else - raise "invalid MITM action: #{passkey_info[:action]}" - end -end - -def passkey_info_s - passkey_info = $ctxt[:passkey_info] - action_str = $ACTION_STRINGS[passkey_info[:action]] - - result = <<-eos - .pair_alg = #{$ctxt[:pair_alg]}, - .authenticated = #{$ctxt[:authenticated]}, - .passkey_info = { - .passkey = { - .action = #{action_str}, - eos - - if passkey_info[:key] != nil - result << <<-eos - .passkey = #{passkey_info[:key].to_i}, - eos - end - if passkey_info[:oob] != nil - result << <<-eos -#{bytes_to_arr(passkey_info[:oob], "oob", 16)} - eos - end - if passkey_info[:numcmp] != nil - result << <<-eos - .numcmp_accept = 1, - eos - end - - result << <<-eos - }, - eos - - if passkey_info[:numcmp] != nil - result << <<-eos - .exp_numcmp = #{passkey_info[:numcmp].to_i}, - eos - end - - result << <<-eos - }, - eos -end - -def addrs_to_s(addrs) - s = '' - - init_type = addrs[:init_type] - resp_type = addrs[:resp_type] - - if init_type != 0 - s += " .init_addr_type = #{$ADDR_TYPE_STRINGS[init_type]},\n" - end - s += bytes_to_arr(addrs[:init_id_addr], "init_id_addr", 8) + "\n" - if init_type >= 2 - s += bytes_to_arr(addrs[:init_rpa], "init_rpa", 8) + "\n" - end - - if resp_type != 0 - s += " .resp_addr_type = #{$ADDR_TYPE_STRINGS[resp_type]},\n" - end - s += bytes_to_arr(addrs[:resp_id_addr], "resp_id_addr", 8) + "\n" - if resp_type >= 2 - s += bytes_to_arr(addrs[:resp_rpa], "resp_rpa", 8) + "\n" - end - - return s -end - -def dhkey_check_to_s(dhkey_check, is_req) - return <<-eos - .dhkey_check_#{reqrsp_s(is_req)} = { -#{bytes_to_arr(dhkey_check[:value], "value", 12)} - }, - eos -end - -def extract_one(lines, ignore_prev = false) - if ignore_prev - start = 0 - else - start = $prev_idx - end - - (start...lines.size).each do |idx| - line = lines[idx] - result = yield(line) - if result != nil - if !ignore_prev - $prev_idx = idx - end - return result - end - end - - return nil -end - -def extract_pair_req(lines) - return extract_one(lines) {|line| parse_pair_cmd(line, true)} -end - -def extract_pair_rsp(lines) - return extract_one(lines) {|line| parse_pair_cmd(line, false)} -end - -def extract_privkey(lines) - return extract_one(lines) {|line| parse_privkey(line)} -end - -def extract_public_key_req(lines) - return extract_one(lines) do |line| - parse_public_key(line, $ctxt[:we_are_init]) - end -end - -def extract_public_key_rsp(lines) - return extract_one(lines) do |line| - parse_public_key(line, !$ctxt[:we_are_init]) - end -end - -def extract_confirm_req(lines) - return extract_one(lines) do |line| - parse_confirm(line, $ctxt[:we_are_init]) - end -end - -def extract_confirm_rsp(lines) - return extract_one(lines) do |line| - parse_confirm(line, !$ctxt[:we_are_init]) - end -end - -def extract_random_req(lines) - return extract_one(lines) do |line| - parse_random(line, $ctxt[:we_are_init]) - end -end - -def extract_random_rsp(lines) - return extract_one(lines) do |line| - parse_random(line, !$ctxt[:we_are_init]) - end -end - -def extract_confirm_random(lines) - confirm_reqs = [] - confirm_rsps = [] - random_reqs = [] - random_rsps = [] - - idx = 0 - loop do - confirm_req = extract_confirm_req(lines) - if confirm_req != nil - confirm_reqs << confirm_req - end - - confirm_rsp = extract_confirm_rsp(lines) - break if confirm_rsp == nil - if idx >= 20 - raise "too many confirm rsps (>20)" - end - confirm_rsps << confirm_rsp - - random_req = extract_random_req(lines) - break if random_req == nil - random_reqs << random_req - - random_rsp = extract_random_rsp(lines) - break if random_rsp == nil - random_rsps << random_rsp - - idx += 1 - end - - return confirm_reqs, confirm_rsps, random_reqs, random_rsps -end - -def extract_stk(lines) - return extract_one(lines, true) do |line| - parse_stk(line) - end -end - -def extract_dhkey_check_req(lines) - return extract_one(lines) do |line| - parse_dhkey_check(line, $ctxt[:we_are_init]) - end -end - -def extract_dhkey_check_rsp(lines) - return extract_one(lines) do |line| - parse_dhkey_check(line, !$ctxt[:we_are_init]) - end -end - -def extract_enc_info_req(lines) - return extract_one(lines) do |line| - parse_enc_info(line, !$ctxt[:we_are_init]) - end -end - -def extract_enc_info_rsp(lines) - return extract_one(lines) do |line| - parse_enc_info(line, $ctxt[:we_are_init]) - end -end - -def extract_master_id_req(lines) - return extract_one(lines) do |line| - parse_master_id(line, !$ctxt[:we_are_init]) - end -end - -def extract_master_id_rsp(lines) - return extract_one(lines) do |line| - parse_master_id(line, $ctxt[:we_are_init]) - end -end - -def extract_id_info_req(lines) - return extract_one(lines) do |line| - parse_id_info(line, !$ctxt[:we_are_init]) - end -end - -def extract_id_info_rsp(lines) - return extract_one(lines) do |line| - parse_id_info(line, $ctxt[:we_are_init]) - end -end - -def extract_id_addr_info_req(lines) - return extract_one(lines) do |line| - parse_id_addr_info(line, !$ctxt[:we_are_init]) - end -end - -def extract_id_addr_info_rsp(lines) - return extract_one(lines) do |line| - parse_id_addr_info(line, $ctxt[:we_are_init]) - end -end - -def extract_sign_info_req(lines) - return extract_one(lines) do |line| - parse_sign_info(line, !$ctxt[:we_are_init]) - end -end - -def extract_sign_info_rsp(lines) - return extract_one(lines) do |line| - parse_sign_info(line, $ctxt[:we_are_init]) - end -end - -def extract_ltk(lines) - return extract_one(lines) do |line| - parse_ltk(line) - end -end - -def extract_passkey_info(lines) - passkey_info = extract_one(lines, true) do |line| - parse_passkey_info(line) - end - - if passkey_info == nil - passkey_info = { :action => 0 } - end - - return passkey_info -end - -def extract_addrs(lines) - return extract_one(lines) do |line| - parse_addrs(line) - end -end - - -lines = STDIN.readlines - -detect_initiator(lines) -$ctxt[:pair_req] = extract_pair_req(lines) -$ctxt[:pair_rsp] = extract_pair_rsp(lines) -$ctxt[:privkey] = extract_privkey(lines) -$ctxt[:public_key_req] = extract_public_key_req(lines) -$ctxt[:public_key_rsp] = extract_public_key_rsp(lines) -$ctxt[:confirm_reqs], $ctxt[:confirm_rsps], $ctxt[:random_reqs], $ctxt[:random_rsps] = extract_confirm_random(lines) -$ctxt[:passkey_info] = extract_passkey_info(lines) -$ctxt[:dhkey_check_req] = extract_dhkey_check_req(lines) -$ctxt[:dhkey_check_rsp] = extract_dhkey_check_rsp(lines) -$ctxt[:enc_info_req] = extract_enc_info_req(lines) -$ctxt[:master_id_req] = extract_master_id_req(lines) -$ctxt[:id_info_req] = extract_id_info_req(lines) -$ctxt[:id_addr_info_req] = extract_id_addr_info_req(lines) -$ctxt[:sign_info_req] = extract_sign_info_req(lines) -$ctxt[:enc_info_rsp] = extract_enc_info_rsp(lines) -$ctxt[:master_id_rsp] = extract_master_id_rsp(lines) -$ctxt[:id_info_rsp] = extract_id_info_rsp(lines) -$ctxt[:id_addr_info_rsp] = extract_id_addr_info_rsp(lines) -$ctxt[:sign_info_rsp] = extract_sign_info_rsp(lines) -$ctxt[:addrs] = extract_addrs(lines) -$ctxt[:ltk] = extract_ltk(lines) -$ctxt[:stk] = extract_stk(lines) - -expected_confirm_rsps = nil -expected_random_reqs = nil -expected_random_rsps = nil -if $ctxt[:confirm_reqs].size == 0 - expected_confirm_rsps = 1 - expected_random_reqs = 1 - expected_random_rsps = 1 -else - expected_confirm_rsps = $ctxt[:confirm_reqs].size - expected_random_reqs = $ctxt[:random_reqs].size - expected_random_rsps = $ctxt[:random_rsps].size -end - -if $ctxt[:confirm_rsps].size != expected_confirm_rsps - raise "wrong number of confirm responses " + - "(exp=#{expected_confirm_rsps}; got=#{$ctxt[:confirm_rsps].size}" -end - -if $ctxt[:random_reqs].size != expected_random_reqs - raise "wrong number of random requests " + - "(exp=#{expected_random_reqs}; got=#{$ctxt[:random_reqs].size}" -end - -if $ctxt[:random_rsps].size != expected_random_rsps - raise "wrong number of random responses " + - "(exp=#{expected_random_rsps}; got=#{$ctxt[:random_rsps].size}" -end - -passkey_info_fill($ctxt[:passkey_info]) - -$ctxt[:sc] = $ctxt[:public_key_req] != nil -$ctxt[:bonding] = $ctxt[:pair_req][:authreq] & 1 == 1 && - $ctxt[:pair_rsp][:authreq] & 1 == 1 - -puts test_case_comment() -puts <<-eos -TEST_CASE(#{test_case_name()}) -{ - struct ble_sm_test_params params; - - params = (struct ble_sm_test_params) { -eos - -puts addrs_to_s($ctxt[:addrs]) - -puts pair_cmd_to_s($ctxt[:pair_req], true) -puts pair_cmd_to_s($ctxt[:pair_rsp], false) - -if $ctxt[:sc] - puts privkey_to_s($ctxt[:privkey]) - puts public_key_to_s($ctxt[:public_key_req], true) - puts public_key_to_s($ctxt[:public_key_req], false) -end - -$ctxt[:confirm_rsps].size.times do |i| - confirm_req = $ctxt[:confirm_reqs][i] - confirm_rsp = $ctxt[:confirm_rsps][i] - random_req = $ctxt[:random_reqs][i] - random_rsp = $ctxt[:random_rsps][i] - - if confirm_req != nil - puts confirm_to_s(confirm_req, true, i) - end - - puts confirm_to_s(confirm_rsp, false, i) - puts random_to_s(random_req, true, i) - puts random_to_s(random_rsp, false, i) -end - -if $ctxt[:sc] - puts dhkey_check_to_s($ctxt[:dhkey_check_req], true) - puts dhkey_check_to_s($ctxt[:dhkey_check_rsp], false) -end - -if $ctxt[:enc_info_req] != nil - puts enc_info_to_s($ctxt[:enc_info_req], true) -end -if $ctxt[:master_id_req] != nil - puts master_id_to_s($ctxt[:master_id_req], true) -end -if $ctxt[:id_info_req] != nil - puts id_info_to_s($ctxt[:id_info_req], true) -end -if $ctxt[:id_addr_info_req] != nil - puts id_addr_info_to_s($ctxt[:id_addr_info_req], true) -end -if $ctxt[:sign_info_req] != nil - puts sign_info_to_s($ctxt[:sign_info_req], true) -end -if $ctxt[:enc_info_rsp] != nil - puts enc_info_to_s($ctxt[:enc_info_rsp], false) -end -if $ctxt[:master_id_rsp] != nil - puts master_id_to_s($ctxt[:master_id_rsp], false) -end -if $ctxt[:id_info_rsp] != nil - puts id_info_to_s($ctxt[:id_info_rsp], false) -end -if $ctxt[:id_addr_info_rsp] != nil - puts id_addr_info_to_s($ctxt[:id_addr_info_rsp], false) -end -if $ctxt[:sign_info_rsp] != nil - puts sign_info_to_s($ctxt[:sign_info_rsp], false) -end -if $ctxt[:sc] - puts ltk_to_s($ctxt[:ltk]) -else - puts stk_to_s($ctxt[:stk]) -end -puts passkey_info_s() - -puts ' };' - -if $ctxt[:sc] - if $ctxt[:we_are_init] - puts ' ble_sm_test_util_us_sc_good(¶ms);' - else - puts ' ble_sm_test_util_peer_sc_good(¶ms);' - end -else - if $ctxt[:we_are_init] - puts ' ble_sm_test_util_us_lgcy_good(¶ms);' - else - puts ' ble_sm_test_util_peer_lgcy_good(¶ms);' - end -end -puts '}' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/util/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/util/pkg.yml deleted file mode 100644 index 0f5f3a5de..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/util/pkg.yml +++ /dev/null @@ -1,29 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/host/util -pkg.description: Supplementary utilities for the NimBLE host -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - -pkg.deps: - - nimble/host diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/util/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/util/syscfg.yml deleted file mode 100644 index 2cdd57468..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/host/util/syscfg.yml +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/pkg.yml deleted file mode 100644 index 8b6058e11..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/pkg.yml +++ /dev/null @@ -1,30 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble -pkg.description: Generic functionality for the nimble Bluetooth Smart stack; used by both the controller and the host. -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - -pkg.deps: - - porting/npl/mynewt - - "@apache-mynewt-core/kernel/os" diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/syscfg.yml deleted file mode 100644 index 537fd9ba5..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/syscfg.yml +++ /dev/null @@ -1,83 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - # Supported GAP roles. By default, all four roles are enabled. - BLE_ROLE_CENTRAL: - description: 'Enables the Central bluetooth role. (0/1)' - value: 1 - BLE_ROLE_PERIPHERAL: - description: 'Enables the Peripheral bluetooth role. (0/1)' - value: 1 - BLE_ROLE_BROADCASTER: - description: 'Enables the Broadcaster bluetooth role. (0/1)' - value: 1 - BLE_ROLE_OBSERVER: - description: 'Enables the Observer bluetooth role. (0/1)' - value: 1 - - BLE_MAX_CONNECTIONS: - description: 'The maximum number of concurrent connections.' - value: 1 - BLE_MAX_PERIODIC_SYNCS: - description: > - The maximum number of concurrent periodic syncs that can - be created - value: 1 - BLE_WHITELIST: - description: > - Enables the BLE whitelist for controlling who to connect to or - accept a connection from. (0/1) - value: 1 - BLE_MULTI_ADV_INSTANCES: - description: > - This is the number of multi-advertising instances. This is NOT the - total number of advertising instances. The total number of - advertising instances is this number plus 1 (assuming the device - supports advertising). - value: 0 - BLE_EXT_ADV: - description: > - This enables extended advertising feature. - value: 0 - BLE_PERIODIC_ADV: - description: > - This enables periodic advertising feature. - value: 0 - BLE_PERIODIC_ADV_SYNC_TRANSFER: - description: > - This enables Periodic Advertising Sync Transfer Feature. - value: 0 - - BLE_EXT_ADV_MAX_SIZE: - description: > - This allows to configure maximum size of advertising data and - scan response data used in LE Advertising Extensions. - Valid range 31-1650. - value: 31 - BLE_VERSION: - description: > - This allows to configure supported Bluetooth Core version. Some - features may not be available if version is too low. Version is - integer for easy comparison. - range: 50, 51, 52 - value: 50 - -# Allow periodic sync transfer only if 5.1 or higher -syscfg.restrictions: - - "'BLE_PERIODIC_ADV_SYNC_TRANSFER == 0' || 'BLE_VERSION >= 51'" diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/pkg.yml deleted file mode 100644 index 2bc4ac293..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/pkg.yml +++ /dev/null @@ -1,45 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/transport -pkg.description: Meta-package for NimBLE HCI transport -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - -pkg.deps.'BLE_HCI_TRANSPORT == "builtin"': - - nimble/transport/ram - - nimble/controller - -pkg.deps.'BLE_HCI_TRANSPORT == "emspi"': - - nimble/transport/emspi - -pkg.deps.'BLE_HCI_TRANSPORT == "ram"': - - nimble/transport/ram - -pkg.deps.'BLE_HCI_TRANSPORT == "socket"': - - nimble/transport/socket - -pkg.deps.'BLE_HCI_TRANSPORT == "uart"': - - nimble/transport/uart - -pkg.deps.'BLE_HCI_TRANSPORT == "da1469x"': - - nimble/transport/da1469x diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/ram/pkg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/ram/pkg.yml deleted file mode 100644 index bb8397bf3..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/ram/pkg.yml +++ /dev/null @@ -1,36 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -pkg.name: nimble/transport/ram -pkg.description: XXX -pkg.author: "Apache Mynewt " -pkg.homepage: "http://mynewt.apache.org/" -pkg.keywords: - - ble - - bluetooth - -pkg.deps: - - "@apache-mynewt-core/kernel/os" - - nimble - -pkg.apis: - - ble_transport - -pkg.init: - ble_hci_ram_init: 'MYNEWT_VAL(BLE_TRANS_RAM_SYSINIT_STAGE)' diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/ram/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/ram/syscfg.yml deleted file mode 100644 index 3b822fcc6..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/ram/syscfg.yml +++ /dev/null @@ -1,48 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_HCI_EVT_HI_BUF_COUNT: - description: 'Number of high-priority event buffers.' - value: 2 - - BLE_HCI_EVT_LO_BUF_COUNT: - description: 'Number of low-priority event buffers.' - value: 8 - - BLE_HCI_EVT_BUF_SIZE: - description: 'Size of each event buffer, in bytes.' - value: 70 - - BLE_ACL_BUF_COUNT: - description: 'The number of ACL data buffers' - value: 4 - - BLE_ACL_BUF_SIZE: - description: > - This is the maximum size of the data portion of HCI ACL data - packets. It does not include the HCI data header (of 4 bytes). - value: 255 - - BLE_TRANS_RAM_SYSINIT_STAGE: - description: > - Sysinit stage for the RAM BLE transport. - value: 100 - -syscfg.vals.BLE_EXT_ADV: - BLE_HCI_EVT_BUF_SIZE: 257 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/syscfg.yml b/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/syscfg.yml deleted file mode 100644 index 137d6e94f..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/nimble/transport/syscfg.yml +++ /dev/null @@ -1,68 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -syscfg.defs: - BLE_HCI_TRANSPORT: - description: > - Selects HCI transport to be included in build. - This has virtually the same effect as including package dependency - manually, but it allows to easily override HCI transport package in - application or target settings. - value: builtin - restrictions: $notnull - choices: - - builtin # Built-in NimBLE controller and RAM transport - - custom # Custom transport, has to be included manually by user - - ram # RAM transport - - uart # UART HCI H4 transport - - socket # Socket transport (for native builds) - - emspi # SPI transport for EM Microelectionic controllers - - da1469x # Dialog DA1469x integrated controller - -# Deprecated settings - BLE_HCI_TRANSPORT_NIMBLE_BUILTIN: - description: Use BLE_HCI_TRANSPORT instead. - value: 0 - deprecated: 1 - BLE_HCI_TRANSPORT_EMSPI: - description: Use BLE_HCI_TRANSPORT instead. - value: 0 - deprecated: 1 - BLE_HCI_TRANSPORT_RAM: - description: Use BLE_HCI_TRANSPORT instead. - value: 0 - deprecated: 1 - BLE_HCI_TRANSPORT_SOCKET: - description: Use BLE_HCI_TRANSPORT instead. - value: 0 - deprecated: 1 - BLE_HCI_TRANSPORT_UART: - description: Use BLE_HCI_TRANSPORT instead. - value: 0 - deprecated: 1 - -syscfg.vals.BLE_HCI_TRANSPORT_NIMBLE_BUILTIN: - BLE_HCI_TRANSPORT: builtin -syscfg.vals.BLE_HCI_TRANSPORT_RAM: - BLE_HCI_TRANSPORT: ram -syscfg.vals.BLE_HCI_TRANSPORT_UART: - BLE_HCI_TRANSPORT: uart -syscfg.vals.BLE_HCI_TRANSPORT_SOCKET: - BLE_HCI_TRANSPORT: socket -syscfg.vals.BLE_HCI_TRANSPORT_EMSPI: - BLE_HCI_TRANSPORT: emspi diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/npl_os_freertos.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/npl_os_freertos.c index 3f9c530e4..a37d4e1f1 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/npl_os_freertos.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/porting/npl/freertos/src/npl_os_freertos.c @@ -25,11 +25,12 @@ #ifdef ESP_PLATFORM #include "freertos/portable.h" +#include "esp_log.h" portMUX_TYPE ble_port_mutex = portMUX_INITIALIZER_UNLOCKED; +static const char *TAG = "Timer"; #else #include "nrf.h" - static void *radio_isr_addr; static void *rng_isr_addr; static void *rtc0_isr_addr; @@ -450,14 +451,17 @@ void npl_freertos_callout_deinit(struct ble_npl_callout *co) { #if CONFIG_BT_NIMBLE_USE_ESP_TIMER - ESP_ERROR_CHECK_WITHOUT_ABORT(esp_timer_stop(co->handle)); - ESP_ERROR_CHECK_WITHOUT_ABORT(esp_timer_delete(co->handle)); + if(esp_timer_stop(co->handle)) + ESP_LOGW(TAG, "Timer not stopped"); + + if(esp_timer_delete(co->handle)) + ESP_LOGW(TAG, "Timer not deleted"); #else if (co->handle) { xTimerDelete(co->handle, portMAX_DELAY); - co->handle = NULL; } #endif + memset(co, 0, sizeof(struct ble_npl_callout)); } ble_npl_error_t @@ -471,11 +475,6 @@ npl_freertos_callout_reset(struct ble_npl_callout *co, ble_npl_time_t ticks) BaseType_t woken1, woken2, woken3; - if (co->handle == NULL) { - co->handle = xTimerCreate("co", 1, pdFALSE, co, os_callout_timer_cb); - assert(co->handle); - } - if (ticks == 0) { ticks = 1; } @@ -548,9 +547,30 @@ npl_freertos_callout_remaining_ticks(struct ble_npl_callout *co, ble_npl_time_t now) { ble_npl_time_t rt; - uint32_t exp; + uint32_t exp = 0; +#if CONFIG_BT_NIMBLE_USE_ESP_TIMER +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) + uint64_t expiry = 0; + esp_err_t err; + + //Fetch expiry time in microseconds + err = esp_timer_get_expiry_time((esp_timer_handle_t)(co->handle), &expiry); + if (err != ESP_OK) { + //Error. Could not fetch the expiry time + return 0; + } + + //Convert microseconds to ticks + npl_freertos_time_ms_to_ticks((uint32_t)(expiry / 1000), &exp); +#else + //esp_timer_get_expiry_time() is only available from IDF 5.0 onwards + //Set expiry to 0 + exp = 0; +#endif //ESP_IDF_VERSION +#else exp = xTimerGetExpiryTime(co->handle); +#endif if (exp > now) { rt = exp - now;