Parcourir la source

Merge branch 'example/ble_mesh_structural_adjust_v4.1' into 'release/v4.1'

Example/ble mesh structural adjust (v4.1)

See merge request espressif/esp-idf!8856
Island il y a 5 ans
Parent
commit
3cfd7eebd1
100 fichiers modifiés avec 89 ajouts et 3129 suppressions
  1. 1 1
      docs/en/api-guides/esp-ble-mesh/ble-mesh-faq.rst
  2. 2 2
      docs/en/api-guides/esp-ble-mesh/ble-mesh-feature-list.rst
  3. 1 1
      docs/en/api-guides/esp-ble-mesh/ble-mesh-index.rst
  4. 1 1
      docs/zh_CN/api-guides/esp-ble-mesh/ble-mesh-faq.rst
  5. 1 1
      docs/zh_CN/api-guides/esp-ble-mesh/ble-mesh-index.rst
  6. 4 4
      examples/bluetooth/esp_ble_mesh/README.md
  7. 0 6
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/main/CMakeLists.txt
  8. 0 143
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/main/ble_mesh_demo_init.c
  9. 0 18
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/main/ble_mesh_demo_init.h
  10. 0 143
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/main/ble_mesh_demo_init.c
  11. 0 18
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/main/ble_mesh_demo_init.h
  12. 3 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/CMakeLists.txt
  13. 3 4
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/Makefile
  14. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/README.md
  15. 5 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/main/CMakeLists.txt
  16. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/main/component.mk
  17. 4 4
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/main/main.c
  18. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/sdkconfig.ci.bluedroid
  19. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/sdkconfig.ci.nimble
  20. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/sdkconfig.defaults
  21. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/tutorial/BLE_Mesh_Fast_Prov_Client_Example_Walkthrough.md
  22. 3 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/CMakeLists.txt
  23. 3 4
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/Makefile
  24. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/README.md
  25. 1 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/CMakeLists.txt
  26. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/Kconfig.projbuild
  27. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/board.c
  28. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/board.h
  29. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/component.mk
  30. 4 4
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/main.c
  31. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/sdkconfig.ci.bluedroid
  32. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/sdkconfig.ci.nimble
  33. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/sdkconfig.defaults
  34. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/BLE_Mesh_Fast_Prov_Server_Example_Walkthrough.md
  35. 2 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/EspBleMesh.md
  36. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/images/app_ble.png
  37. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/images/device.png
  38. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/images/picture1.png
  39. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/images/picture2.png
  40. 0 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/images/time.png
  41. 3 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/CMakeLists.txt
  42. 2 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/Makefile
  43. 0 230
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/components/button/include/iot_button.h
  44. 1 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/main/CMakeLists.txt
  45. 0 143
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/main/ble_mesh_demo_init.c
  46. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/main/main.c
  47. 2 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/CMakeLists.txt
  48. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/Makefile
  49. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/README.md
  50. 1 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/main/CMakeLists.txt
  51. 0 143
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/main/ble_mesh_demo_init.c
  52. 0 18
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/main/ble_mesh_demo_init.h
  53. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/main/main.c
  54. 2 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/CMakeLists.txt
  55. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/Makefile
  56. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/README.md
  57. 1 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/main/CMakeLists.txt
  58. 0 143
      examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/main/ble_mesh_demo_init.c
  59. 0 18
      examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/main/ble_mesh_demo_init.h
  60. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/main/main.c
  61. 3 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/CMakeLists.txt
  62. 2 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/Makefile
  63. 0 3
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/components/button/CMakeLists.txt
  64. 0 21
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/components/button/Kconfig
  65. 0 46
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/components/button/README.md
  66. 0 434
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/components/button/button.c
  67. 0 48
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/components/button/button_obj.cpp
  68. 1 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/main/CMakeLists.txt
  69. 0 152
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/main/ble_mesh_demo_init.c
  70. 0 18
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/main/ble_mesh_demo_init.h
  71. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/main/main.c
  72. 2 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/CMakeLists.txt
  73. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/Makefile
  74. 1 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/main/CMakeLists.txt
  75. 0 18
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/main/ble_mesh_demo_init.h
  76. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/main/main.c
  77. 3 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/CMakeLists.txt
  78. 2 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/Makefile
  79. 0 7
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/CMakeLists.txt
  80. 0 21
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/Kconfig
  81. 0 46
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/README.md
  82. 0 434
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/button.c
  83. 0 48
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/button_obj.cpp
  84. 0 4
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/component.mk
  85. 0 231
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/include/iot_button.h
  86. 1 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/CMakeLists.txt
  87. 0 152
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/ble_mesh_demo_init.c
  88. 0 18
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/ble_mesh_demo_init.h
  89. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/main.c
  90. 2 0
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/CMakeLists.txt
  91. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/Makefile
  92. 1 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/CMakeLists.txt
  93. 0 153
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/ble_mesh_demo_init.c
  94. 0 18
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/ble_mesh_demo_init.h
  95. 1 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/main.c
  96. 2 1
      examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/CMakeLists.txt
  97. 2 3
      examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/Makefile
  98. 1 2
      examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/main/CMakeLists.txt
  99. 0 143
      examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/main/ble_mesh_demo_init.c
  100. 0 18
      examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/main/ble_mesh_demo_init.h

+ 1 - 1
docs/en/api-guides/esp-ble-mesh/ble-mesh-faq.rst

@@ -563,7 +563,7 @@ Generally, a Provisioner is used to provision unprovisioned devices and form a m
 
     The **count** value is provided to the Proxy node which is provisioned by the App so as to determine when to start Proxy advertising in advance.
 
-4.5 When will Configuration Client Model of the node running :example:`ble_mesh_fast_prov_server <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server>` example start to work?
+4.5 When will Configuration Client Model of the node running :example:`fast_prov_server <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server>` example start to work?
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
     Configuration Client Model will start to work after the Temporary Provisioner functionality is enabled.

+ 2 - 2
docs/en/api-guides/esp-ble-mesh/ble-mesh-feature-list.rst

@@ -120,8 +120,8 @@ Mesh Applications
     * :example:`Tutorial <bluetooth/esp_ble_mesh/ble_mesh_provisioner/tutorial/BLE_Mesh_Provisioner_Example_Walkthrough.md>`
     * :example:`Example <bluetooth/esp_ble_mesh/ble_mesh_provisioner>`
 * ESP-BLE-MESH Fast Provisioning
-    * :example:`Fast Provisioning Client Model Tutorial <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/tutorial/BLE_Mesh_Fast_Prov_Client_Example_Walkthrough.md>`
-    * :example:`Fast Provisioning Server Model Tutorial <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/tutorial/BLE_Mesh_Fast_Prov_Server_Example_Walkthrough.md>`
+    * :example:`Fast Provisioning Client Model Tutorial <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/tutorial/BLE_Mesh_Fast_Prov_Client_Example_Walkthrough.md>`
+    * :example:`Fast Provisioning Server Model Tutorial <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/BLE_Mesh_Fast_Prov_Server_Example_Walkthrough.md>`
     * :example:`Example <bluetooth/esp_ble_mesh/ble_mesh_fast_provision>`
     * `Demo Video <http://download.espressif.com/BLE_MESH/BLE_Mesh_Demo/V0.4_Demo_Fast_Provision/ESP32_BLE_Mesh_Fast_Provision.mp4>`__
 * ESP-BLE-MESH and Wi-Fi Coexistence

+ 1 - 1
docs/en/api-guides/esp-ble-mesh/ble-mesh-index.rst

@@ -215,7 +215,7 @@ ESP-BLE-MESH Examples
 
 * :example:`ESP-BLE-MESH Provisioner <bluetooth/esp_ble_mesh/ble_mesh_provisioner/tutorial/Ble_Mesh_Provisioner_Example_Walkthrough.md>` - shows how a device can act as an ESP-BLE-MESH Provisioner to provision devices. The Provisioner has a Configuration Server model, a Configuration Client model and a Generic OnOff Client model, see :example:`example code <bluetooth/esp_ble_mesh/ble_mesh_provisioner>`.
 
-* ESP-BLE-MESH Fast Provisioning - :example:`Client <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/tutorial/BLE_Mesh_Fast_Prov_Client_Example_Walkthrough.md>` and :example:`Server <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/tutorial/BLE_Mesh_Fast_Prov_Server_Example_Walkthrough.md>` - this example is used for showing how fast provisioning can be used in order to create a mesh network. It takes no more than 60 seconds to provision 100 devices, see :example:`example client code <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client>` and :example:`example server code <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server>`.
+* ESP-BLE-MESH Fast Provisioning - :example:`Client <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/tutorial/BLE_Mesh_Fast_Prov_Client_Example_Walkthrough.md>` and :example_file:`Server <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/BLE_Mesh_Fast_Prov_Server_Example_Walkthrough.md>` - this example is used for showing how fast provisioning can be used in order to create a mesh network. It takes no more than 60 seconds to provision 100 devices, see :example:`example client code <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client>` and :example:`example server code <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server>`.
 
 * :example:`ESP-BLE-MESH and Wi-Fi Coexistence <bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/tutorial/BLE_Mesh_WiFi_Coexist_Example_Walkthrough.md>` - an example that demonstrates the Wi-Fi and Bluetooth (BLE/BR/EDR) coexistence feature of ESP32. Simply put, users can use the Wi-Fi while operating Bluetooth, see :example:`example code <bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist>`.
 

+ 1 - 1
docs/zh_CN/api-guides/esp-ble-mesh/ble-mesh-faq.rst

@@ -565,7 +565,7 @@ ESP-BLE-MESH 常见问题手册
 
     此 **count** 值提供给 App 配置的代理节点,以决定何时提前开始 Proxy 广播信息。
 
-4.5 运行以下示例 :example:`ble_mesh_fast_prov_server <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server>` 的节点的 Configuration Client Model 何时开始工作?
+4.5 运行以下示例 :example:`fast_prov_server <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server>` 的节点的 Configuration Client Model 何时开始工作?
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
     使能了 Temporary Provisioner 功能后,Configuration Client Model 会开始工作。

+ 1 - 1
docs/zh_CN/api-guides/esp-ble-mesh/ble-mesh-index.rst

@@ -218,7 +218,7 @@ ESP-BLE-MESH 示例
 
 * :example:`ESP-BLE-MESH Provisioner <bluetooth/esp_ble_mesh/ble_mesh_provisioner/tutorial/Ble_Mesh_Provisioner_Example_Walkthrough.md>` - 展示了设备如何充当 ESP-BLE-MESH Provisioner 以配网设备。Provisioner 拥有 Configuration Server model、Configuration Client model 和 Generic OnOff Client model,示例请见 :example:`example code <bluetooth/esp_ble_mesh/ble_mesh_provisioner>`。
 
-* ESP-BLE-MESH 快速配网 - :example:`Client <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/tutorial/ble_mesh_fast_provision_client.md>` 和 :example:`Server <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/tutorial/ble_mesh_fast_provision_server.md>` - 该示例用于演示快速配网。配网 100 个设备费时不超过 60 秒,示例请见::example:`example client code <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client>` 和 :example:`example server code <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server>`。
+* ESP-BLE-MESH 快速配网 - :example:`Client <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/tutorial/BLE_Mesh_Fast_Prov_Client_Example_Walkthrough.md>` 和 :example_file`Server <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/BLE_Mesh_Fast_Prov_Server_Example_Walkthrough.md>` - 该示例用于演示快速配网。配网 100 个设备费时不超过 60 秒,示例请见::example:`example client code <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client>` 和 :example:`example server code <bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server>`。
 
 * :example:`Wi-Fi 和 ESP-BLE-MESH 共存 <bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/tutorial/ble_mesh_wifi_coexist.md>` - 该示例用于演示 Wi-Fi 和 ESP-BLE-MESH 共存的功能。简而言之,用户可在运行 ESP-BLE-MESH 时使用 Wi-Fi,示例请见 :example:`example code <bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist>`。
 

+ 4 - 4
examples/bluetooth/esp_ble_mesh/README.md

@@ -30,19 +30,19 @@ See [ble_mesh_provisioner](ble_mesh_console/ble_mesh_provisioner) folder for mor
 
 This example illustrates the solution of ESP-BLE-MESH Fast Provisioning.
 
-#### ble_mesh_fast_prov_client
+#### fast_prov_client
 
 This example shows how ESP32, acting as a BLE Mesh Fast Provisioning Client, provisions other unprovisioned devices and then controls the nodes.
 
-See [ble_mesh_fast_prov_client](ble_mesh_fast_provision/ble_mesh_fast_prov_client) folder for more details.
+See [fast_prov_client](ble_mesh_fast_provision/fast_prov_client) folder for more details.
 
-#### ble_mesh_fast_prov_server
+#### fast_prov_server
 
 This example illustrates the process that:
 1. ESP32 as a BLE Mesh Fast Provisioning Server is provisioned into a node;
 2. ESP32 as a Temporary Provisioner provisions other unprovisioned devices.
 
-See [ble_mesh_fast_prov_server](ble_mesh_fast_provision/ble_mesh_fast_prov_server) folder for more details.
+See [fast_prov_server](ble_mesh_fast_provision/fast_prov_server) folder for more details.
 
 ## ble_mesh_node
 

+ 0 - 6
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/main/CMakeLists.txt

@@ -1,6 +0,0 @@
-set(COMPONENT_SRCS "ble_mesh_demo_main.c"
-                   "ble_mesh_demo_init.c")
-
-set(COMPONENT_ADD_INCLUDEDIRS ".")
-
-register_component()

+ 0 - 143
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/main/ble_mesh_demo_init.c

@@ -1,143 +0,0 @@
-
-/*
- * Copyright (c) 2017 Intel Corporation
- * Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sdkconfig.h>
-/* BLE */
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-#include "esp_bt.h"
-#include "esp_bt_main.h"
-#include "esp_bt_device.h"
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-#include "esp_nimble_hci.h"
-#include "nimble/nimble_port.h"
-#include "nimble/nimble_port_freertos.h"
-#include "host/ble_hs.h"
-#include "host/util/util.h"
-#include "console/console.h"
-#endif
-
-#include "esp_ble_mesh_defs.h"
-#include "ble_mesh_demo_init.h"
-#include "esp_ble_mesh_common_api.h"
-
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid, esp_bt_dev_get_address(), BD_ADDR_LEN);
-}
-
-esp_err_t bluetooth_init(void)
-{
-    esp_err_t ret;
-
-
-    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
-
-    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
-    ret = esp_bt_controller_init(&bt_cfg);
-    if (ret) {
-        ESP_LOGE(TAG, "%s initialize controller failed", __func__);
-        return ret;
-    }
-
-    ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable controller failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_init();
-    if (ret) {
-        ESP_LOGE(TAG, "%s init bluetooth failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_enable();
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable bluetooth failed", __func__);
-        return ret;
-    }
-
-    return ret;
-}
-
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-static SemaphoreHandle_t mesh_sem;
-static uint8_t own_addr_type;
-void ble_store_config_init(void);
-static uint8_t addr_val[6] = {0};
-    
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, addr_val, BD_ADDR_LEN);
-}
-
-static void mesh_on_reset(int reason)
-{
-    ESP_LOGI(TAG, "Resetting state; reason=%d", reason);
-}
-
-static void mesh_on_sync(void)
-{
-    int rc;
-
-    rc = ble_hs_util_ensure_addr(0);
-    assert(rc == 0);
-
-    /* Figure out address to use while advertising (no privacy for now) */
-    rc = ble_hs_id_infer_auto(0, &own_addr_type);
-    if (rc != 0) {
-        ESP_LOGI(TAG, "error determining address type; rc=%d", rc);
-        return;
-    }
-
-    rc = ble_hs_id_copy_addr(own_addr_type, addr_val, NULL);
-
-    xSemaphoreGive(mesh_sem);
-}
-
-void mesh_host_task(void *param)
-{
-    ESP_LOGI(TAG, "BLE Host Task Started");
-    /* This function will return only when nimble_port_stop() is executed */
-    nimble_port_run();
-
-    nimble_port_freertos_deinit();
-}
-
-esp_err_t bluetooth_init(void)
-{
-    mesh_sem = xSemaphoreCreateBinary();
-    if (mesh_sem == NULL) {
-        ESP_LOGE(TAG, "Failed to create mesh semaphore");
-        return ESP_FAIL;
-    }
-
-    ESP_ERROR_CHECK(esp_nimble_hci_and_controller_init());
-
-    nimble_port_init();
-    /* Initialize the NimBLE host configuration. */
-    ble_hs_cfg.reset_cb = mesh_on_reset;
-    ble_hs_cfg.sync_cb = mesh_on_sync;
-    ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
-
-    /* XXX Need to have template for store */
-    ble_store_config_init();
-
-    nimble_port_freertos_init(mesh_host_task);
-
-    xSemaphoreTake(mesh_sem, portMAX_DELAY);
-
-    return ESP_OK;
-}
-#endif

+ 0 - 18
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/main/ble_mesh_demo_init.h

@@ -1,18 +0,0 @@
-/*
-   This example code is in the Public Domain (or CC0 licensed, at your option.)
-
-   Unless required by applicable law or agreed to in writing, this
-   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-   CONDITIONS OF ANY KIND, either express or implied.
-*/
-
-#ifndef _BLE_MESH_DEMO_INIT_H_
-#define _BLE_MESH_DEMO_INIT_H_
-
-#define TAG "FAST_PROV_CLIENT_DEMO"
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid);
-
-esp_err_t bluetooth_init(void);
-
-#endif

+ 0 - 143
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/main/ble_mesh_demo_init.c

@@ -1,143 +0,0 @@
-
-/*
- * Copyright (c) 2017 Intel Corporation
- * Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sdkconfig.h>
-/* BLE */
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-#include "esp_bt.h"
-#include "esp_bt_main.h"
-#include "esp_bt_device.h"
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-#include "esp_nimble_hci.h"
-#include "nimble/nimble_port.h"
-#include "nimble/nimble_port_freertos.h"
-#include "host/ble_hs.h"
-#include "host/util/util.h"
-#include "console/console.h"
-#endif
-
-#include "esp_ble_mesh_defs.h"
-#include "ble_mesh_demo_init.h"
-#include "esp_ble_mesh_common_api.h"
-
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, esp_bt_dev_get_address(), BD_ADDR_LEN);
-}
-
-esp_err_t bluetooth_init(void)
-{
-    esp_err_t ret;
-
-
-    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
-
-    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
-    ret = esp_bt_controller_init(&bt_cfg);
-    if (ret) {
-        ESP_LOGE(TAG, "%s initialize controller failed", __func__);
-        return ret;
-    }
-
-    ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable controller failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_init();
-    if (ret) {
-        ESP_LOGE(TAG, "%s init bluetooth failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_enable();
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable bluetooth failed", __func__);
-        return ret;
-    }
-
-    return ret;
-}
-
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-static SemaphoreHandle_t mesh_sem;
-static uint8_t own_addr_type;
-void ble_store_config_init(void);
-static uint8_t addr_val[6] = {0};
-    
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, addr_val, BD_ADDR_LEN);
-}
-
-static void mesh_on_reset(int reason)
-{
-    ESP_LOGI(TAG, "Resetting state; reason=%d", reason);
-}
-
-static void mesh_on_sync(void)
-{
-    int rc;
-
-    rc = ble_hs_util_ensure_addr(0);
-    assert(rc == 0);
-
-    /* Figure out address to use while advertising (no privacy for now) */
-    rc = ble_hs_id_infer_auto(0, &own_addr_type);
-    if (rc != 0) {
-        ESP_LOGI(TAG, "error determining address type; rc=%d", rc);
-        return;
-    }
-
-    rc = ble_hs_id_copy_addr(own_addr_type, addr_val, NULL);
-
-    xSemaphoreGive(mesh_sem);
-}
-
-void mesh_host_task(void *param)
-{
-    ESP_LOGI(TAG, "BLE Host Task Started");
-    /* This function will return only when nimble_port_stop() is executed */
-    nimble_port_run();
-
-    nimble_port_freertos_deinit();
-}
-
-esp_err_t bluetooth_init(void)
-{
-    mesh_sem = xSemaphoreCreateBinary();
-    if (mesh_sem == NULL) {
-        ESP_LOGE(TAG, "Failed to create mesh semaphore");
-        return ESP_FAIL;
-    }
-
-    ESP_ERROR_CHECK(esp_nimble_hci_and_controller_init());
-
-    nimble_port_init();
-    /* Initialize the NimBLE host configuration. */
-    ble_hs_cfg.reset_cb = mesh_on_reset;
-    ble_hs_cfg.sync_cb = mesh_on_sync;
-    ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
-
-    /* XXX Need to have template for store */
-    ble_store_config_init();
-
-    nimble_port_freertos_init(mesh_host_task);
-
-    xSemaphoreTake(mesh_sem, portMAX_DELAY);
-
-    return ESP_OK;
-}
-#endif

+ 0 - 18
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/main/ble_mesh_demo_init.h

@@ -1,18 +0,0 @@
-/*
-   This example code is in the Public Domain (or CC0 licensed, at your option.)
-
-   Unless required by applicable law or agreed to in writing, this
-   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-   CONDITIONS OF ANY KIND, either express or implied.
-*/
-
-#ifndef _BLE_MESH_DEMO_INIT_H_
-#define _BLE_MESH_DEMO_INIT_H_
-
-#define TAG "FAST_PROV_SERVER_DEMO"
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid);
-
-esp_err_t bluetooth_init(void);
-
-#endif

+ 3 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/CMakeLists.txt → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/CMakeLists.txt

@@ -2,8 +2,9 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
-set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_vendor_models/fast_prov_vendor_model/components)
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/example_init
+                         $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/fast_provisioning)
 
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(SUPPORTED_TARGETS esp32)
-project(ble_mesh_fast_prov_client)
+project(fast_prov_client)

+ 3 - 4
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/Makefile → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/Makefile

@@ -3,10 +3,9 @@
 # project subdirectory.
 #
 
-PROJECT_NAME := ble_mesh_fast_prov_server
+PROJECT_NAME := fast_prov_client
 
-COMPONENT_ADD_INCLUDEDIRS := components/include
-
-EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_vendor_models/fast_prov_vendor_model/components
+EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/example_init \
+                        $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/fast_provisioning
 
 include $(IDF_PATH)/make/project.mk

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/README.md → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/README.md

@@ -3,4 +3,4 @@ ESP BLE Mesh Fast Provisioning Client example
 
 This example shows how a BLE Mesh device functions as a Fast Provisioning Client.
 
-Please check the [tutorial](tutorial/ble_mesh_fast_provision_client.md) for more information about this example.
+Please check the [tutorial](tutorial/BLE_Mesh_Fast_Prov_Client_Example_Walkthrough.md) for more information about this example.

+ 5 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/main/CMakeLists.txt

@@ -0,0 +1,5 @@
+set(COMPONENT_SRCS "main.c")
+
+set(COMPONENT_ADD_INCLUDEDIRS ".")
+
+register_component()

+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/main/component.mk → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/main/component.mk


+ 4 - 4
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/main/ble_mesh_demo_main.c → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/main/main.c

@@ -26,10 +26,10 @@
 #include "esp_ble_mesh_config_model_api.h"
 #include "esp_ble_mesh_generic_model_api.h"
 
-#include "esp_fast_prov_common.h"
-#include "esp_fast_prov_operation.h"
-#include "esp_fast_prov_client_model.h"
-#include "ble_mesh_demo_init.h"
+#include "ble_mesh_fast_prov_common.h"
+#include "ble_mesh_fast_prov_operation.h"
+#include "ble_mesh_fast_prov_client_model.h"
+#include "ble_mesh_example_init.h"
 
 #define PROV_OWN_ADDR       0x0001
 #define APP_KEY_OCTET       0x12

+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/sdkconfig.ci.bluedroid → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/sdkconfig.ci.bluedroid


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/sdkconfig.ci.nimble → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/sdkconfig.ci.nimble


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/sdkconfig.defaults → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/sdkconfig.defaults


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/tutorial/BLE_Mesh_Fast_Prov_Client_Example_Walkthrough.md → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_client/tutorial/BLE_Mesh_Fast_Prov_Client_Example_Walkthrough.md


+ 3 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/CMakeLists.txt → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/CMakeLists.txt

@@ -2,8 +2,9 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
-set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_vendor_models/fast_prov_vendor_model/components)
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/example_init
+                         $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/fast_provisioning)
 
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(SUPPORTED_TARGETS esp32)
-project(ble_mesh_fast_prov_server)
+project(fast_prov_server)

+ 3 - 4
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/Makefile → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/Makefile

@@ -3,10 +3,9 @@
 # project subdirectory.
 #
 
-PROJECT_NAME := ble_mesh_fast_prov_client
+PROJECT_NAME := fast_prov_server
 
-COMPONENT_ADD_INCLUDEDIRS := components/include
-
-EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_vendor_models/fast_prov_vendor_model/components
+EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/example_init \
+                        $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/fast_provisioning
 
 include $(IDF_PATH)/make/project.mk

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/README.md → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/README.md

@@ -3,4 +3,4 @@ ESP BLE Mesh Fast Provisioning Server example
 
 This example shows how a BLE Mesh device functions as a Fast Provisioning Server.
 
-Please check the [tutorial](tutorial/ble_mesh_fast_provision_server.md) for more information about this example.
+Please check the [tutorial](tutorial/BLE_Mesh_Fast_Prov_Server_Example_Walkthrough.md) for more information about this example.

+ 1 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/main/CMakeLists.txt → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/CMakeLists.txt

@@ -1,5 +1,4 @@
-set(COMPONENT_SRCS "ble_mesh_demo_main.c"
-                   "ble_mesh_demo_init.c"
+set(COMPONENT_SRCS "main.c"
                    "board.c")
 
 set(COMPONENT_ADD_INCLUDEDIRS ".")

+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/main/Kconfig.projbuild → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/Kconfig.projbuild


+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/main/board.c → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/board.c

@@ -16,7 +16,7 @@
 
 #include "driver/gpio.h"
 #include "board.h"
-#include "esp_fast_prov_common.h"
+#include "ble_mesh_fast_prov_common.h"
 
 #define TAG "BOARD"
 

+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/main/board.h → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/board.h


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/main/component.mk → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/component.mk


+ 4 - 4
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/main/ble_mesh_demo_main.c → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/main/main.c

@@ -27,10 +27,10 @@
 #include "esp_ble_mesh_local_data_operation_api.h"
 
 #include "board.h"
-#include "esp_fast_prov_operation.h"
-#include "esp_fast_prov_client_model.h"
-#include "esp_fast_prov_server_model.h"
-#include "ble_mesh_demo_init.h"
+#include "ble_mesh_fast_prov_operation.h"
+#include "ble_mesh_fast_prov_client_model.h"
+#include "ble_mesh_fast_prov_server_model.h"
+#include "ble_mesh_example_init.h"
 
 extern struct _led_state led_state[3];
 extern struct k_delayed_work send_self_prov_node_addr_timer;

+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/sdkconfig.ci.bluedroid → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/sdkconfig.ci.bluedroid


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/sdkconfig.ci.nimble → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/sdkconfig.ci.nimble


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/sdkconfig.defaults → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/sdkconfig.defaults


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/tutorial/BLE_Mesh_Fast_Prov_Server_Example_Walkthrough.md → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/BLE_Mesh_Fast_Prov_Server_Example_Walkthrough.md


+ 2 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/tutorial/EspBleMesh.md → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/EspBleMesh.md

@@ -13,7 +13,7 @@ A video of this demo can be seen
 
 > Note:
 > 
-> 1. Please flash the [`ble_mesh_fast_prov_server`](https://glab.espressif.cn/ble_mesh/esp-ble-mesh-v0.6/tree/ble_mesh_release/esp-ble-mesh-v0.6/examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server) to your boards first;
+> 1. Please flash the [`fast_prov_server`](https://glab.espressif.cn/ble_mesh/esp-ble-mesh-v0.6/tree/ble_mesh_release/esp-ble-mesh-v0.6/examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server) to your boards first;
 > 2. To have a better understanding of the performance of the BLE Mesh network, we recommend that at least 3 devices should be added in your network.
 > 3. We recommend that you solder LED indicators if your development board does not come with lights. 
 > 4. Please check the type of board and LED pin definition enabled in `Example BLE Mesh Config` by running `idf.py menuconfig`
@@ -24,7 +24,7 @@ A video of this demo can be seen
 # Flash and Monitor
 
 1.	Enter the directory: 
-examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server
+examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server
 2.	Make sure that the `IDF_PATH` environment variable was set in accordance with your current IDF path
 3. Check the version of your toolchain. Version 4.1 or newer should be used.
  

+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/tutorial/images/app_ble.png → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/images/app_ble.png


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/tutorial/images/device.png → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/images/device.png


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/tutorial/images/picture1.png → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/images/picture1.png


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/tutorial/images/picture2.png → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/images/picture2.png


+ 0 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/tutorial/images/time.png → examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/fast_prov_server/tutorial/images/time.png


+ 3 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/CMakeLists.txt

@@ -2,6 +2,9 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/button
+                         $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/example_init)
+
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(SUPPORTED_TARGETS esp32)
 project(onoff_client)

+ 2 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/Makefile

@@ -5,6 +5,7 @@
 
 PROJECT_NAME := onoff_client
 
-COMPONENT_ADD_INCLUDEDIRS := components/include
+EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/button \
+                        $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/example_init
 
 include $(IDF_PATH)/make/project.mk

+ 0 - 230
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/components/button/include/iot_button.h

@@ -1,230 +0,0 @@
-// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
-//
-// Licensed 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 _IOT_BUTTON_H_
-#define _IOT_BUTTON_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "driver/gpio.h"
-#include "freertos/portmacro.h"
-typedef void (* button_cb)(void*);
-typedef void* button_handle_t;
-
-typedef enum {
-    BUTTON_ACTIVE_HIGH = 1,    /*!<button active level: high level*/
-    BUTTON_ACTIVE_LOW = 0,     /*!<button active level: low level*/
-} button_active_t;
-
-typedef enum {
-    BUTTON_CB_PUSH = 0,   /*!<button push callback event */
-    BUTTON_CB_RELEASE,    /*!<button release callback event */
-    BUTTON_CB_TAP,        /*!<button quick tap callback event(will not trigger if there already is a "PRESS" event) */
-    BUTTON_CB_SERIAL,     /*!<button serial trigger callback event */
-} button_cb_type_t;
-
-/**
- * @brief Init button functions
- *
- * @param gpio_num GPIO index of the pin that the button uses
- * @param active_level button hardware active level.
- *        For "BUTTON_ACTIVE_LOW" it means when the button pressed, the GPIO will read low level.
- *
- * @return A button_handle_t handle to the created button object, or NULL in case of error.
- */
-button_handle_t iot_button_create(gpio_num_t gpio_num, button_active_t active_level);
-
-/**
- * @brief Register a callback function for a serial trigger event.
- *
- * @param btn_handle handle of the button object
- * @start_after_sec define the time after which to start serial trigger action
- * @interval_tick serial trigger interval
- * @cb callback function for "TAP" action.
- * @arg Parameter for callback function
- * @note
- *        Button callback functions execute in the context of the timer service task.
- *        It is therefore essential that button callback functions never attempt to block.
- *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
- *        or specify a non zero block time when accessing a queue or a semaphore.
- * @return
- *     - ESP_OK Success
- *     - ESP_FAIL Parameter error
- */
-esp_err_t iot_button_set_serial_cb(button_handle_t btn_handle, uint32_t start_after_sec, TickType_t interval_tick, button_cb cb, void* arg);
-
-/**
- * @brief Register a callback function for a button_cb_type_t action.
- *
- * @param btn_handle handle of the button object
- * @param type callback function type
- * @param cb callback function for "TAP" action.
- * @param arg Parameter for callback function
- * @note
- *        Button callback functions execute in the context of the timer service task.
- *        It is therefore essential that button callback functions never attempt to block.
- *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
- *        or specify a non zero block time when accessing a queue or a semaphore.
- * @return
- *     - ESP_OK Success
- *     - ESP_FAIL Parameter error
- */
-esp_err_t iot_button_set_evt_cb(button_handle_t btn_handle, button_cb_type_t type, button_cb cb, void* arg);
-
-/**
- * @brief
- *
- * @param btn_handle handle of the button object
- * @param press_sec the callback function would be called if you press the button for a specified period of time
- * @param cb callback function for "PRESS" action.
- * @param arg Parameter for callback function
- *
- * @note
- *        Button callback functions execute in the context of the timer service task.
- *        It is therefore essential that button callback functions never attempt to block.
- *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
- *        or specify a non zero block time when accessing a queue or a semaphore.
- * @return
- *     - ESP_OK Success
- *     - ESP_FAIL Parameter error
- */
-esp_err_t iot_button_add_custom_cb(button_handle_t btn_handle, uint32_t press_sec, button_cb cb, void* arg);
-
-/**
- * @brief Delete button object and free memory
- * @param btn_handle handle of the button object
- *
- * @return
- *     - ESP_OK Success
- *     - ESP_FAIL Parameter error
- */
-esp_err_t iot_button_delete(button_handle_t btn_handle);
-
-/**
- * @brief Remove callback
- *
- * @param btn_handle The handle of the button object
- * @param type callback function event type
- *
- * @return
- *     - ESP_OK Success
- */
-esp_err_t iot_button_rm_cb(button_handle_t btn_handle, button_cb_type_t type);
-
-#ifdef __cplusplus
-}
-#endif
-
-#ifdef __cplusplus
-
-/**
- * class of button
- * simple usage:
- * CButton* btn = new CButton(BUTTON_IO_NUM, BUTTON_ACTIVE_LEVEL, BUTTON_SERIAL_TRIGGER, 3);
- * btn->add_cb(BUTTON_CB_PUSH, button_tap_cb, (void*) push, 50 / portTICK_PERIOD_MS);
- * btn->add_custom_cb(5, button_press_5s_cb, NULL);
- * ......
- * delete btn;
- */
-class CButton
-{
-private:
-    button_handle_t m_btn_handle;
-
-    /**
-     * prevent copy constructing
-     */
-    CButton(const CButton&);
-    CButton& operator = (const CButton&);
-public:
-
-    /**
-     * @brief constructor of CButton
-     * 
-     * @param gpio_num GPIO index of the pin that the button uses
-     * @param active_level button hardware active level.
-     *        For "BUTTON_ACTIVE_LOW" it means when the button pressed, the GPIO will read low level.
-     */
-    CButton(gpio_num_t gpio_num, button_active_t active_level = BUTTON_ACTIVE_LOW);
-    
-    ~CButton();
-
-    /**
-     * @brief Register a callback function for a button_cb_type_t action.
-     *
-     * @param type callback function type
-     * @param cb callback function for "TAP" action.
-     * @param arg Parameter for callback function
-     * @note
-     *        Button callback functions execute in the context of the timer service task.
-     *        It is therefore essential that button callback functions never attempt to block.
-     *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
-     *        or specify a non zero block time when accessing a queue or a semaphore.
-     * @return
-     *     - ESP_OK Success
-     *     - ESP_FAIL Parameter error
-     */
-    esp_err_t set_evt_cb(button_cb_type_t type, button_cb cb, void* arg);
-
-    /**
-     * @brief Register a callback function for a serial trigger event.
-     *
-     * @param btn_handle handle of the button object
-     * @start_after_sec define the time after which to start serial trigger action
-     * @interval_tick serial trigger interval
-     * @cb callback function for "TAP" action.
-     * @arg Parameter for callback function
-     * @note
-     *        Button callback functions execute in the context of the timer service task.
-     *        It is therefore essential that button callback functions never attempt to block.
-     *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
-     *        or specify a non zero block time when accessing a queue or a semaphore.
-     * @return
-     *     - ESP_OK Success
-     *     - ESP_FAIL Parameter error
-     */
-    esp_err_t set_serial_cb(button_cb cb, void* arg, TickType_t interval_tick, uint32_t start_after_sec);
-
-    /**
-     * @brief
-     *
-     * @param press_sec the callback function would be called if you press the button for a specified period of time
-     * @param cb callback function for "PRESS" action.
-     * @param arg Parameter for callback function
-     *
-     * @note
-     *        Button callback functions execute in the context of the timer service task.
-     *        It is therefore essential that button callback functions never attempt to block.
-     *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
-     *        or specify a non zero block time when accessing a queue or a semaphore.
-     * @return
-     *     - ESP_OK Success
-     *     - ESP_FAIL Parameter error
-     */
-    esp_err_t add_custom_cb(uint32_t press_sec, button_cb cb, void* arg);
-
-    /**
-     * @brief Remove callback
-     *
-     * @param type callback function event type
-     *
-     * @return
-     *     - ESP_OK Success
-     */
-    esp_err_t rm_cb(button_cb_type_t type);
-};
-#endif
-
-#endif

+ 1 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/main/CMakeLists.txt

@@ -1,5 +1,4 @@
-set(COMPONENT_SRCS "ble_mesh_demo_main.c"
-                   "ble_mesh_demo_init.c"
+set(COMPONENT_SRCS "main.c"
                    "board.c")
 
 set(COMPONENT_ADD_INCLUDEDIRS ".")

+ 0 - 143
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/main/ble_mesh_demo_init.c

@@ -1,143 +0,0 @@
-
-/*
- * Copyright (c) 2017 Intel Corporation
- * Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sdkconfig.h>
-/* BLE */
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-#include "esp_bt.h"
-#include "esp_bt_main.h"
-#include "esp_bt_device.h"
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-#include "esp_nimble_hci.h"
-#include "nimble/nimble_port.h"
-#include "nimble/nimble_port_freertos.h"
-#include "host/ble_hs.h"
-#include "host/util/util.h"
-#include "console/console.h"
-#endif
-
-#include "esp_ble_mesh_defs.h"
-#include "ble_mesh_demo_init.h"
-#include "esp_ble_mesh_common_api.h"
-
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, esp_bt_dev_get_address(), BD_ADDR_LEN);
-}
-
-esp_err_t bluetooth_init(void)
-{
-    esp_err_t ret;
-
-
-    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
-
-    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
-    ret = esp_bt_controller_init(&bt_cfg);
-    if (ret) {
-        ESP_LOGE(TAG, "%s initialize controller failed", __func__);
-        return ret;
-    }
-
-    ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable controller failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_init();
-    if (ret) {
-        ESP_LOGE(TAG, "%s init bluetooth failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_enable();
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable bluetooth failed", __func__);
-        return ret;
-    }
-
-    return ret;
-}
-
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-static SemaphoreHandle_t mesh_sem;
-static uint8_t own_addr_type;
-void ble_store_config_init(void);
-static uint8_t addr_val[6] = {0};
-    
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, addr_val, BD_ADDR_LEN);
-}
-
-static void mesh_on_reset(int reason)
-{
-    ESP_LOGI(TAG, "Resetting state; reason=%d", reason);
-}
-
-static void mesh_on_sync(void)
-{
-    int rc;
-
-    rc = ble_hs_util_ensure_addr(0);
-    assert(rc == 0);
-
-    /* Figure out address to use while advertising (no privacy for now) */
-    rc = ble_hs_id_infer_auto(0, &own_addr_type);
-    if (rc != 0) {
-        ESP_LOGI(TAG, "error determining address type; rc=%d", rc);
-        return;
-    }
-
-    rc = ble_hs_id_copy_addr(own_addr_type, addr_val, NULL);
-
-    xSemaphoreGive(mesh_sem);
-}
-
-void mesh_host_task(void *param)
-{
-    ESP_LOGI(TAG, "BLE Host Task Started");
-    /* This function will return only when nimble_port_stop() is executed */
-    nimble_port_run();
-
-    nimble_port_freertos_deinit();
-}
-
-esp_err_t bluetooth_init(void)
-{
-    mesh_sem = xSemaphoreCreateBinary();
-    if (mesh_sem == NULL) {
-        ESP_LOGE(TAG, "Failed to create mesh semaphore");
-        return ESP_FAIL;
-    }
-
-    ESP_ERROR_CHECK(esp_nimble_hci_and_controller_init());
-
-    nimble_port_init();
-    /* Initialize the NimBLE host configuration. */
-    ble_hs_cfg.reset_cb = mesh_on_reset;
-    ble_hs_cfg.sync_cb = mesh_on_sync;
-    ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
-
-    /* XXX Need to have template for store */
-    ble_store_config_init();
-
-    nimble_port_freertos_init(mesh_host_task);
-
-    xSemaphoreTake(mesh_sem, portMAX_DELAY);
-
-    return ESP_OK;
-}
-#endif

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/main/ble_mesh_demo_main.c → examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/main/main.c

@@ -20,7 +20,7 @@
 #include "esp_ble_mesh_generic_model_api.h"
 
 #include "board.h"
-#include "ble_mesh_demo_init.h"
+#include "ble_mesh_example_init.h"
 
 #define CID_ESP 0x02E5
 

+ 2 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/CMakeLists.txt

@@ -2,6 +2,8 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/example_init)
+
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(SUPPORTED_TARGETS esp32)
 project(onoff_server)

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/Makefile

@@ -5,6 +5,6 @@
 
 PROJECT_NAME := onoff_server
 
-COMPONENT_ADD_INCLUDEDIRS := components/include
+EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/example_init
 
 include $(IDF_PATH)/make/project.mk

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/README.md

@@ -13,4 +13,4 @@ The default purpose of this demo is to enable the advertising function with 20-m
 For a better demonstration effect, an RGB LED can be soldered onto the ESP32-DevKitC board, by connecting their corresponding GPIO pins are GPIO\_NUM\_25, GPIO\_NUM\_26, GPIO\_NUM\_27. Then you need to select the following option in menuconfig:
    `idf.py menuconfig --> Example Configuration --> Board selection for BLE Mesh --> ESP-WROOM-32`
 
-Please check the [tutorial](tutorial/Ble_Mesh_Node_Example_Walkthrough.md) for more information about this example.
+Please check the [tutorial](tutorial/BLE_Mesh_Node_OnOff_Server_Example_Walkthrough.md) for more information about this example.

+ 1 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/main/CMakeLists.txt

@@ -1,5 +1,4 @@
-set(COMPONENT_SRCS "ble_mesh_demo_main.c"
-                   "ble_mesh_demo_init.c"
+set(COMPONENT_SRCS "main.c"
                    "board.c")
 
 set(COMPONENT_ADD_INCLUDEDIRS ".")

+ 0 - 143
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/main/ble_mesh_demo_init.c

@@ -1,143 +0,0 @@
-
-/*
- * Copyright (c) 2017 Intel Corporation
- * Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sdkconfig.h>
-/* BLE */
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-#include "esp_bt.h"
-#include "esp_bt_main.h"
-#include "esp_bt_device.h"
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-#include "esp_nimble_hci.h"
-#include "nimble/nimble_port.h"
-#include "nimble/nimble_port_freertos.h"
-#include "host/ble_hs.h"
-#include "host/util/util.h"
-#include "console/console.h"
-#endif
-
-#include "esp_ble_mesh_defs.h"
-#include "ble_mesh_demo_init.h"
-#include "esp_ble_mesh_common_api.h"
-
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, esp_bt_dev_get_address(), BD_ADDR_LEN);
-}
-
-esp_err_t bluetooth_init(void)
-{
-    esp_err_t ret;
-
-
-    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
-
-    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
-    ret = esp_bt_controller_init(&bt_cfg);
-    if (ret) {
-        ESP_LOGE(TAG, "%s initialize controller failed", __func__);
-        return ret;
-    }
-
-    ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable controller failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_init();
-    if (ret) {
-        ESP_LOGE(TAG, "%s init bluetooth failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_enable();
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable bluetooth failed", __func__);
-        return ret;
-    }
-
-    return ret;
-}
-
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-static SemaphoreHandle_t mesh_sem;
-static uint8_t own_addr_type;
-void ble_store_config_init(void);
-static uint8_t addr_val[6] = {0};
-    
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, addr_val, BD_ADDR_LEN);
-}
-
-static void mesh_on_reset(int reason)
-{
-    ESP_LOGI(TAG, "Resetting state; reason=%d", reason);
-}
-
-static void mesh_on_sync(void)
-{
-    int rc;
-
-    rc = ble_hs_util_ensure_addr(0);
-    assert(rc == 0);
-
-    /* Figure out address to use while advertising (no privacy for now) */
-    rc = ble_hs_id_infer_auto(0, &own_addr_type);
-    if (rc != 0) {
-        ESP_LOGI(TAG, "error determining address type; rc=%d", rc);
-        return;
-    }
-
-    rc = ble_hs_id_copy_addr(own_addr_type, addr_val, NULL);
-
-    xSemaphoreGive(mesh_sem);
-}
-
-void mesh_host_task(void *param)
-{
-    ESP_LOGI(TAG, "BLE Host Task Started");
-    /* This function will return only when nimble_port_stop() is executed */
-    nimble_port_run();
-
-    nimble_port_freertos_deinit();
-}
-
-esp_err_t bluetooth_init(void)
-{
-    mesh_sem = xSemaphoreCreateBinary();
-    if (mesh_sem == NULL) {
-        ESP_LOGE(TAG, "Failed to create mesh semaphore");
-        return ESP_FAIL;
-    }
-
-    ESP_ERROR_CHECK(esp_nimble_hci_and_controller_init());
-
-    nimble_port_init();
-    /* Initialize the NimBLE host configuration. */
-    ble_hs_cfg.reset_cb = mesh_on_reset;
-    ble_hs_cfg.sync_cb = mesh_on_sync;
-    ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
-
-    /* XXX Need to have template for store */
-    ble_store_config_init();
-
-    nimble_port_freertos_init(mesh_host_task);
-
-    xSemaphoreTake(mesh_sem, portMAX_DELAY);
-
-    return ESP_OK;
-}
-#endif

+ 0 - 18
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/main/ble_mesh_demo_init.h

@@ -1,18 +0,0 @@
-/*
-   This example code is in the Public Domain (or CC0 licensed, at your option.)
-
-   Unless required by applicable law or agreed to in writing, this
-   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-   CONDITIONS OF ANY KIND, either express or implied.
-*/
-
-#ifndef _BLE_MESH_DEMO_INIT_H_
-#define _BLE_MESH_DEMO_INIT_H_
-
-#define TAG "onoff_server"
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid);
-
-esp_err_t bluetooth_init(void);
-
-#endif

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/main/ble_mesh_demo_main.c → examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/main/main.c

@@ -22,7 +22,7 @@
 #include "esp_ble_mesh_local_data_operation_api.h"
 
 #include "board.h"
-#include "ble_mesh_demo_init.h"
+#include "ble_mesh_example_init.h"
 
 #define CID_ESP 0x02E5
 

+ 2 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/CMakeLists.txt

@@ -2,6 +2,8 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/example_init)
+
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(SUPPORTED_TARGETS esp32)
 project(ble_mesh_provisioner)

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/Makefile

@@ -5,6 +5,6 @@
 
 PROJECT_NAME := ble_mesh_provisioner
 
-COMPONENT_ADD_INCLUDEDIRS := components/include
+EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/example_init
 
 include $(IDF_PATH)/make/project.mk

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/README.md

@@ -3,4 +3,4 @@ ESP BLE Mesh Provisioner demo
 
 This demo shows how a BLE Mesh device can function as a provisioner.
 
-Please check the [tutorial](tutorial/Ble_Mesh_Provisioner_Example_Walkthrough.md) for more information about this example.
+Please check the [tutorial](tutorial/BLE_Mesh_Provisioner_Example_Walkthrough.md) for more information about this example.

+ 1 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/main/CMakeLists.txt

@@ -1,5 +1,4 @@
-set(COMPONENT_SRCS "ble_mesh_demo_main.c"
-                   "ble_mesh_demo_init.c")
+set(COMPONENT_SRCS "main.c")
 
 set(COMPONENT_ADD_INCLUDEDIRS ".")
 

+ 0 - 143
examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/main/ble_mesh_demo_init.c

@@ -1,143 +0,0 @@
-
-/*
- * Copyright (c) 2017 Intel Corporation
- * Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sdkconfig.h>
-/* BLE */
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-#include "esp_bt.h"
-#include "esp_bt_main.h"
-#include "esp_bt_device.h"
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-#include "esp_nimble_hci.h"
-#include "nimble/nimble_port.h"
-#include "nimble/nimble_port_freertos.h"
-#include "host/ble_hs.h"
-#include "host/util/util.h"
-#include "console/console.h"
-#endif
-
-#include "esp_ble_mesh_defs.h"
-#include "ble_mesh_demo_init.h"
-#include "esp_ble_mesh_common_api.h"
-
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, esp_bt_dev_get_address(), BD_ADDR_LEN);
-}
-
-esp_err_t bluetooth_init(void)
-{
-    esp_err_t ret;
-
-
-    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
-
-    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
-    ret = esp_bt_controller_init(&bt_cfg);
-    if (ret) {
-        ESP_LOGE(TAG, "%s initialize controller failed", __func__);
-        return ret;
-    }
-
-    ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable controller failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_init();
-    if (ret) {
-        ESP_LOGE(TAG, "%s init bluetooth failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_enable();
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable bluetooth failed", __func__);
-        return ret;
-    }
-
-    return ret;
-}
-
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-static SemaphoreHandle_t mesh_sem;
-static uint8_t own_addr_type;
-void ble_store_config_init(void);
-static uint8_t addr_val[6] = {0};
-    
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, addr_val, BD_ADDR_LEN);
-}
-
-static void mesh_on_reset(int reason)
-{
-    ESP_LOGI(TAG, "Resetting state; reason=%d", reason);
-}
-
-static void mesh_on_sync(void)
-{
-    int rc;
-
-    rc = ble_hs_util_ensure_addr(0);
-    assert(rc == 0);
-
-    /* Figure out address to use while advertising (no privacy for now) */
-    rc = ble_hs_id_infer_auto(0, &own_addr_type);
-    if (rc != 0) {
-        ESP_LOGI(TAG, "error determining address type; rc=%d", rc);
-        return;
-    }
-
-    rc = ble_hs_id_copy_addr(own_addr_type, addr_val, NULL);
-
-    xSemaphoreGive(mesh_sem);
-}
-
-void mesh_host_task(void *param)
-{
-    ESP_LOGI(TAG, "BLE Host Task Started");
-    /* This function will return only when nimble_port_stop() is executed */
-    nimble_port_run();
-
-    nimble_port_freertos_deinit();
-}
-
-esp_err_t bluetooth_init(void)
-{
-    mesh_sem = xSemaphoreCreateBinary();
-    if (mesh_sem == NULL) {
-        ESP_LOGE(TAG, "Failed to create mesh semaphore");
-        return ESP_FAIL;
-    }
-
-    ESP_ERROR_CHECK(esp_nimble_hci_and_controller_init());
-
-    nimble_port_init();
-    /* Initialize the NimBLE host configuration. */
-    ble_hs_cfg.reset_cb = mesh_on_reset;
-    ble_hs_cfg.sync_cb = mesh_on_sync;
-    ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
-
-    /* XXX Need to have template for store */
-    ble_store_config_init();
-
-    nimble_port_freertos_init(mesh_host_task);
-
-    xSemaphoreTake(mesh_sem, portMAX_DELAY);
-
-    return ESP_OK;
-}
-#endif

+ 0 - 18
examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/main/ble_mesh_demo_init.h

@@ -1,18 +0,0 @@
-/*
-   This example code is in the Public Domain (or CC0 licensed, at your option.)
-
-   Unless required by applicable law or agreed to in writing, this
-   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-   CONDITIONS OF ANY KIND, either express or implied.
-*/
-
-#ifndef _BLE_MESH_DEMO_INIT_H_
-#define _BLE_MESH_DEMO_INIT_H_
-
-#define TAG "ble_mesh_provisioner"
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid);
-
-esp_err_t bluetooth_init(void);
-
-#endif

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/main/ble_mesh_demo_main.c → examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/main/main.c

@@ -19,7 +19,7 @@
 #include "esp_ble_mesh_config_model_api.h"
 #include "esp_ble_mesh_generic_model_api.h"
 
-#include "ble_mesh_demo_init.h"
+#include "ble_mesh_example_init.h"
 
 #define LED_OFF             0x0
 #define LED_ON              0x1

+ 3 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/CMakeLists.txt

@@ -2,6 +2,9 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/button
+                         $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/example_init)
+
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(SUPPORTED_TARGETS esp32)
 project(sensor_client)

+ 2 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/Makefile

@@ -5,6 +5,7 @@
 
 PROJECT_NAME := sensor_client
 
-COMPONENT_ADD_INCLUDEDIRS := components/include
+EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/button \
+                        $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/example_init
 
 include $(IDF_PATH)/make/project.mk

+ 0 - 3
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/components/button/CMakeLists.txt

@@ -1,3 +0,0 @@
-
-idf_component_register(SRCS "button.c" "button_obj.cpp"
-                    INCLUDE_DIRS  "." "include")

+ 0 - 21
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/components/button/Kconfig

@@ -1,21 +0,0 @@
-menu "Button"
-
-    choice BUTTON_TIMER_IMPLEMENT
-        bool "Button Timer Mode"
-        default BUTTON_USE_ESP_TIMER
-        help
-            Choose a implementation of timer for button instance.
-
-        config BUTTON_USE_RTOS_TIMER
-            bool "Use FreeRTOS Timer"
-
-        config BUTTON_USE_ESP_TIMER
-            bool "Use ESP Timer"
-    endchoice
-
-    config BUTTON_IO_GLITCH_FILTER_TIME_MS
-        int "IO glitch filter timer ms (10~100)"
-        range 10 100
-        default 50
-
-endmenu

+ 0 - 46
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/components/button/README.md

@@ -1,46 +0,0 @@
-# Component: Button
-
-* This component defines a button as a well encapsulated object.
-* A button device is defined by:
-    * GPIO number on which the button is attached.
-    * Active level which decided by peripheral hardware.
-    * Trigger mode which decides whether to call serial trigger callback during pressing
-    * Serial threshold seconds which decides that serial trigger callback will be called after how many seconds' pressing
-* A button device can provide:
-    * One push event callback
-    * One release event callback
-    * One short-time tap event callback
-    * One serial trigger event callback
-    * Several long-time press event callback
-    We can set different jitter filters for all the events.
-    Once any of the long press callback is triggered, the short tap event will not be triggered.
-    These components are based on GPIO provided by ESP-IDF and soft timer provided by FreeRTOS.
-
-* To use the button device, you need to:
-    * create a button object returned by iot_button_create().
-    * Then hook different event callbacks to the button object.
-    * To free the object, you can call iot_button_delete to delete the button object and free the used memory.
-
-* Todo: Add hardware timer mode(because sometimes soft-timer callback function is limited)
-
-### NOTE:
-> All the event callback function are implemented by FreeRTOS soft timer APIs, the callback must follow the rule:
-
-
-
-```
-  Button callback functions execute in the context of the timer service task.
-  It is therefore essential that button callback functions never attempt to block.
-  For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(), or specify a non zero block time when accessing a queue or a semaphore.
-```
-
-> In addition:
-> You can adjust the following macros within FreeRTOS to adjust the stack depth/queue length/task priority of the timer service.
-
-
-```
-#define configUSE_TIMERS //enable soft-timer
-#define configTIMER_TASK_PRIORITY // priority of the timers service task
-#define configQueue_LENGTH // length of timer command queue
-#define configTIMER_TASK_STACK_DEPTH // stack depth of the soft-timer
-```

+ 0 - 434
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/components/button/button.c

@@ -1,434 +0,0 @@
-// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
-//
-// Licensed 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 <stdio.h>
-#include "freertos/FreeRTOS.h"
-#include "freertos/task.h"
-#include "freertos/queue.h"
-#include "freertos/timers.h"
-#include "esp_log.h"
-#include "driver/gpio.h"
-#include "iot_button.h"
-#include "esp_timer.h"
-
-#define USE_ESP_TIMER   CONFIG_BUTTON_USE_ESP_TIMER
-#if USE_ESP_TIMER
-#define STOP_TIMER(tmr)   esp_timer_stop(tmr)
-#define DELETE_TIMER(tmr) esp_timer_delete(tmr)
-#else
-#define STOP_TIMER(tmr)   xTimerStop(tmr, portMAX_DELAY)
-#define DELETE_TIMER(tmr) xTimerDelete(tmr, portMAX_DELAY);
-#endif
-
-#define IOT_CHECK(tag, a, ret)  if(!(a)) {                                             \
-        ESP_LOGE(tag,"%s:%d (%s)", __FILE__, __LINE__, __FUNCTION__);      \
-        return (ret);                                                                   \
-        }
-#define ERR_ASSERT(tag, param)  IOT_CHECK(tag, (param) == ESP_OK, ESP_FAIL)
-#define POINT_ASSERT(tag, param, ret)    IOT_CHECK(tag, (param) != NULL, (ret))
-
-typedef enum {
-    BUTTON_STATE_IDLE = 0,
-    BUTTON_STATE_PUSH,
-    BUTTON_STATE_PRESSED,
-} button_status_t;
-
-typedef struct button_dev button_dev_t;
-typedef struct btn_cb button_cb_t;
-
-struct btn_cb{
-    TickType_t interval;
-    button_cb cb;
-    void* arg;
-    #if !USE_ESP_TIMER
-    TimerHandle_t tmr;
-    #else
-    esp_timer_handle_t tmr;
-    #endif
-    button_dev_t *pbtn;
-    button_cb_t *next_cb;
-};
-
-struct button_dev{
-    uint8_t io_num;
-    uint8_t active_level;
-    uint32_t serial_thres_sec;
-    button_status_t state;
-    button_cb_t tap_short_cb;
-    button_cb_t tap_psh_cb;
-    button_cb_t tap_rls_cb;
-    button_cb_t press_serial_cb;
-    button_cb_t* cb_head;
-};
-
-#define BUTTON_GLITCH_FILTER_TIME_MS   CONFIG_BUTTON_IO_GLITCH_FILTER_TIME_MS
-static const char* TAG = "button";
-
-// static void button_press_cb(xTimerHandle tmr)
-static void button_press_cb(void* tmr)
-{
-    #if !USE_ESP_TIMER
-    button_cb_t* btn_cb = (button_cb_t*) pvTimerGetTimerID(tmr);
-    #else
-    button_cb_t* btn_cb = (button_cb_t*)(tmr);
-    #endif
-
-    button_dev_t* btn = btn_cb->pbtn;
-    // low, then restart
-    if (btn->active_level == gpio_get_level(btn->io_num)) {
-        btn->state = BUTTON_STATE_PRESSED;
-        if (btn_cb->cb) {
-            btn_cb->cb(btn_cb->arg);
-        }
-    }
-}
-
-// static void button_tap_psh_cb(xTimerHandle tmr)
-static void button_tap_psh_cb(void* tmr)
-{
-    #if !USE_ESP_TIMER
-    button_cb_t* btn_cb = (button_cb_t*) pvTimerGetTimerID(tmr);
-    #else
-    button_cb_t* btn_cb = (button_cb_t*)(tmr);
-    #endif
-
-    button_dev_t* btn = btn_cb->pbtn;
-    STOP_TIMER(btn->tap_rls_cb.tmr);
-
-    int lv = gpio_get_level(btn->io_num);
-
-    if (btn->active_level == lv) {
-        // high, then key is up
-        btn->state = BUTTON_STATE_PUSH;
-        if (btn->press_serial_cb.tmr) {
-            #if !USE_ESP_TIMER
-            xTimerChangePeriod(btn->press_serial_cb.tmr, btn->serial_thres_sec*1000 / portTICK_PERIOD_MS, portMAX_DELAY);
-            xTimerReset(btn->press_serial_cb.tmr, portMAX_DELAY);
-            #else
-            esp_timer_stop(btn->press_serial_cb.tmr);
-            esp_timer_start_once(btn->press_serial_cb.tmr, btn->serial_thres_sec * 1000 * 1000);
-            #endif
-
-        }
-        if (btn->tap_psh_cb.cb) {
-            btn->tap_psh_cb.cb(btn->tap_psh_cb.arg);
-        }
-    } else {
-        // 50ms, check if this is a real key up
-        if (btn->tap_rls_cb.tmr) {
-            STOP_TIMER(btn->tap_rls_cb.tmr);
-            #if !USE_ESP_TIMER
-            xTimerReset(btn->tap_rls_cb.tmr, portMAX_DELAY);
-            #else
-            esp_timer_start_once(btn->tap_rls_cb.tmr, btn->tap_rls_cb.interval * portTICK_PERIOD_MS * 1000);
-            #endif
-        }
-    }
-}
-
-static void button_tap_rls_cb(void* tmr)
-{
-    #if !USE_ESP_TIMER
-    button_cb_t* btn_cb = (button_cb_t*) pvTimerGetTimerID(tmr);
-    #else
-    button_cb_t* btn_cb = (button_cb_t*)(tmr);
-    #endif
-    button_dev_t* btn = btn_cb->pbtn;
-    STOP_TIMER(btn->tap_rls_cb.tmr);
-
-    if (btn->active_level == gpio_get_level(btn->io_num)) {
-
-    } else {
-        // high, then key is up
-        button_cb_t *pcb = btn->cb_head;
-        while (pcb != NULL) {
-            if (pcb->tmr != NULL) {
-                STOP_TIMER(pcb->tmr);
-            }
-            pcb = pcb->next_cb;
-        }
-        if (btn->press_serial_cb.tmr && btn->press_serial_cb.tmr != NULL) {
-            STOP_TIMER(btn->press_serial_cb.tmr);
-        }
-        if (btn->tap_short_cb.cb && btn->state == BUTTON_STATE_PUSH) {
-            btn->tap_short_cb.cb(btn->tap_short_cb.arg);
-        }
-        if(btn->tap_rls_cb.cb && btn->state != BUTTON_STATE_IDLE) {
-            btn->tap_rls_cb.cb(btn->tap_rls_cb.arg);
-        }
-        btn->state = BUTTON_STATE_IDLE;
-    }
-}
-
-static void button_press_serial_cb(void* tmr)
-{
-    #if !USE_ESP_TIMER
-    button_dev_t* btn = (button_dev_t*) pvTimerGetTimerID(tmr);
-    #else
-    button_dev_t* btn = (button_dev_t*)(tmr);
-    #endif
-
-    if (btn->press_serial_cb.cb) {
-        btn->press_serial_cb.cb(btn->press_serial_cb.arg);
-    }
-    #if !USE_ESP_TIMER
-    xTimerChangePeriod(btn->press_serial_cb.tmr, btn->press_serial_cb.interval, portMAX_DELAY);
-    xTimerReset(btn->press_serial_cb.tmr, portMAX_DELAY);
-    #else
-    esp_timer_stop(btn->press_serial_cb.tmr);
-    esp_timer_start_once(btn->press_serial_cb.tmr, btn->press_serial_cb.interval * portTICK_PERIOD_MS * 1000);
-    #endif
-}
-
-static void button_gpio_isr_handler(void* arg)
-{
-    button_dev_t* btn = (button_dev_t*) arg;
-    portBASE_TYPE HPTaskAwoken = pdFALSE;
-    int level = gpio_get_level(btn->io_num);
-    if (level == btn->active_level) {
-        if (btn->tap_psh_cb.tmr) {
-            #if !USE_ESP_TIMER
-            xTimerStopFromISR(btn->tap_psh_cb.tmr, &HPTaskAwoken);
-            xTimerResetFromISR(btn->tap_psh_cb.tmr, &HPTaskAwoken);
-            #else 
-            esp_timer_stop(btn->tap_psh_cb.tmr);
-            esp_timer_start_once(btn->tap_psh_cb.tmr, btn->tap_psh_cb.interval * portTICK_PERIOD_MS * 1000);
-            #endif
-        }
-
-        button_cb_t *pcb = btn->cb_head;
-        while (pcb != NULL) {
-            if (pcb->tmr != NULL) {
-                #if !USE_ESP_TIMER
-                xTimerStopFromISR(pcb->tmr, &HPTaskAwoken);
-                xTimerResetFromISR(pcb->tmr, &HPTaskAwoken);
-                #else
-                esp_timer_stop(pcb->tmr);
-                esp_timer_start_once(pcb->tmr, pcb->interval * portTICK_PERIOD_MS * 1000);
-                #endif
-            }
-            pcb = pcb->next_cb;
-        }
-    } else {
-        // 50ms, check if this is a real key up
-        if (btn->tap_rls_cb.tmr) {
-            #if !USE_ESP_TIMER
-            xTimerStopFromISR(btn->tap_rls_cb.tmr, &HPTaskAwoken);
-            xTimerResetFromISR(btn->tap_rls_cb.tmr, &HPTaskAwoken);
-            #else
-            esp_timer_stop(btn->tap_rls_cb.tmr);
-            esp_timer_start_once(btn->tap_rls_cb.tmr, btn->tap_rls_cb.interval * portTICK_PERIOD_MS * 1000);
-            #endif
-        }
-    }
-    if(HPTaskAwoken == pdTRUE) {
-        portYIELD_FROM_ISR();
-    }
-}
-
-#if !USE_ESP_TIMER
-static void button_free_tmr(xTimerHandle* tmr)
-#else
-static void button_free_tmr(esp_timer_handle_t *tmr)
-#endif
-{
-    if (tmr && *tmr) {
-        STOP_TIMER(*tmr);
-        DELETE_TIMER(*tmr);
-        *tmr = NULL;
-    }
-}
-
-esp_err_t iot_button_delete(button_handle_t btn_handle)
-{
-    POINT_ASSERT(TAG, btn_handle, ESP_ERR_INVALID_ARG);
-    button_dev_t* btn = (button_dev_t*) btn_handle;
-    gpio_set_intr_type(btn->io_num, GPIO_INTR_DISABLE);
-    gpio_isr_handler_remove(btn->io_num);
-
-    button_free_tmr(&btn->tap_rls_cb.tmr);
-    button_free_tmr(&btn->tap_psh_cb.tmr);
-    button_free_tmr(&btn->tap_short_cb.tmr);
-    button_free_tmr(&btn->press_serial_cb.tmr);
-
-    button_cb_t *pcb = btn->cb_head;
-    while (pcb != NULL) {
-        button_cb_t *cb_next = pcb->next_cb;
-        button_free_tmr(&pcb->tmr);
-        free(pcb);
-        pcb = cb_next;
-    }
-    free(btn);
-    return ESP_OK;
-}
-
-button_handle_t iot_button_create(gpio_num_t gpio_num, button_active_t active_level)
-{
-    #if USE_ESP_TIMER
-    ets_printf("use esp timer !!!\n");
-    esp_timer_init();
-    #endif
-
-    IOT_CHECK(TAG, gpio_num < GPIO_NUM_MAX, NULL);
-    button_dev_t* btn = (button_dev_t*) calloc(1, sizeof(button_dev_t));
-    POINT_ASSERT(TAG, btn, NULL);
-    btn->active_level = active_level;
-    btn->io_num = gpio_num;
-    btn->state = BUTTON_STATE_IDLE;
-    btn->tap_rls_cb.arg = NULL;
-    btn->tap_rls_cb.cb = NULL;
-    btn->tap_rls_cb.interval = BUTTON_GLITCH_FILTER_TIME_MS / portTICK_PERIOD_MS;
-    btn->tap_rls_cb.pbtn = btn;
-    #if !USE_ESP_TIMER
-    btn->tap_rls_cb.tmr = xTimerCreate("btn_rls_tmr", btn->tap_rls_cb.interval, pdFALSE,
-            &btn->tap_rls_cb, button_tap_rls_cb);
-    #else
-    esp_timer_create_args_t tmr_param_rls;
-    tmr_param_rls.arg = &btn->tap_rls_cb;
-    tmr_param_rls.callback = button_tap_rls_cb;
-    tmr_param_rls.dispatch_method = ESP_TIMER_TASK;
-    tmr_param_rls.name = "btn_rls_tmr";
-    esp_timer_create(&tmr_param_rls, &btn->tap_rls_cb.tmr);
-    #endif
-
-    btn->tap_psh_cb.arg = NULL;
-    btn->tap_psh_cb.cb = NULL;
-    btn->tap_psh_cb.interval = BUTTON_GLITCH_FILTER_TIME_MS / portTICK_PERIOD_MS;
-    btn->tap_psh_cb.pbtn = btn;
-    #if !USE_ESP_TIMER
-    btn->tap_psh_cb.tmr = xTimerCreate("btn_psh_tmr", btn->tap_psh_cb.interval, pdFALSE,
-            &btn->tap_psh_cb, button_tap_psh_cb);
-    #else
-    esp_timer_create_args_t tmr_param_psh;
-    tmr_param_psh.arg = &btn->tap_psh_cb;
-    tmr_param_psh.callback = button_tap_psh_cb;
-    tmr_param_psh.dispatch_method = ESP_TIMER_TASK;
-    tmr_param_psh.name = "btn_psh_tmr";
-    esp_timer_create(&tmr_param_psh, &btn->tap_psh_cb.tmr);
-    #endif
-    gpio_install_isr_service(0);
-    gpio_config_t gpio_conf;
-    gpio_conf.intr_type = GPIO_INTR_ANYEDGE;
-    gpio_conf.mode = GPIO_MODE_INPUT;
-    gpio_conf.pin_bit_mask = (1ULL << gpio_num);
-    gpio_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
-    gpio_conf.pull_up_en = GPIO_PULLUP_ENABLE;
-    gpio_config(&gpio_conf);
-    gpio_isr_handler_add(gpio_num, button_gpio_isr_handler, btn);
-    return (button_handle_t) btn;
-}
-
-esp_err_t iot_button_rm_cb(button_handle_t btn_handle, button_cb_type_t type)
-{
-    button_dev_t* btn = (button_dev_t*) btn_handle;
-    button_cb_t* btn_cb = NULL;
-    if (type == BUTTON_CB_PUSH) {
-        btn_cb = &btn->tap_psh_cb;
-    } else if (type == BUTTON_CB_RELEASE) {
-        btn_cb = &btn->tap_rls_cb;
-    } else if (type == BUTTON_CB_TAP) {
-        btn_cb = &btn->tap_short_cb;
-    } else if (type == BUTTON_CB_SERIAL) {
-        btn_cb = &btn->press_serial_cb;
-    }
-    btn_cb->cb = NULL;
-    btn_cb->arg = NULL;
-    btn_cb->pbtn = btn;
-    button_free_tmr(&btn_cb->tmr);
-    return ESP_OK;
-}
-
-esp_err_t iot_button_set_serial_cb(button_handle_t btn_handle, uint32_t start_after_sec, TickType_t interval_tick, button_cb cb, void* arg)
-{
-    button_dev_t* btn = (button_dev_t*) btn_handle;
-    btn->serial_thres_sec = start_after_sec;
-
-    if (btn->press_serial_cb.tmr == NULL) {
-        #if !USE_ESP_TIMER
-        btn->press_serial_cb.tmr = xTimerCreate("btn_serial_tmr", btn->serial_thres_sec*1000 / portTICK_PERIOD_MS,
-                            pdFALSE, btn, button_press_serial_cb);
-        #else
-        esp_timer_create_args_t tmr_param_ser;
-        tmr_param_ser.arg = btn;
-        tmr_param_ser.callback = button_press_serial_cb;
-        tmr_param_ser.dispatch_method = ESP_TIMER_TASK;
-        tmr_param_ser.name = "btn_serial_tmr";
-        esp_timer_create(&tmr_param_ser, &btn->press_serial_cb.tmr);
-        #endif
-    }
-    btn->press_serial_cb.arg = arg;
-    btn->press_serial_cb.cb = cb;
-    btn->press_serial_cb.interval = interval_tick;
-    btn->press_serial_cb.pbtn = btn;
-    #if !USE_ESP_TIMER
-    xTimerChangePeriod(btn->press_serial_cb.tmr, btn->serial_thres_sec*1000 / portTICK_PERIOD_MS, portMAX_DELAY);
-    #endif
-    return ESP_OK;
-}
-
-esp_err_t iot_button_set_evt_cb(button_handle_t btn_handle, button_cb_type_t type, button_cb cb, void* arg)
-{
-    POINT_ASSERT(TAG, btn_handle, ESP_ERR_INVALID_ARG);
-    button_dev_t* btn = (button_dev_t*) btn_handle;
-    if (type == BUTTON_CB_PUSH) {
-        btn->tap_psh_cb.arg = arg;
-        btn->tap_psh_cb.cb = cb;
-        btn->tap_psh_cb.interval = BUTTON_GLITCH_FILTER_TIME_MS / portTICK_RATE_MS;
-        btn->tap_psh_cb.pbtn = btn;
-        #if !USE_ESP_TIMER
-        xTimerChangePeriod(btn->tap_psh_cb.tmr, btn->tap_psh_cb.interval, portMAX_DELAY);
-        #endif
-    } else if (type == BUTTON_CB_RELEASE) {
-        btn->tap_rls_cb.arg = arg;
-        btn->tap_rls_cb.cb = cb;
-        btn->tap_rls_cb.interval = BUTTON_GLITCH_FILTER_TIME_MS / portTICK_RATE_MS;
-        btn->tap_rls_cb.pbtn = btn;
-        #if !USE_ESP_TIMER
-        xTimerChangePeriod(btn->tap_rls_cb.tmr, btn->tap_psh_cb.interval, portMAX_DELAY);
-        #endif
-    } else if (type == BUTTON_CB_TAP) {
-        btn->tap_short_cb.arg = arg;
-        btn->tap_short_cb.cb = cb;
-        btn->tap_short_cb.interval = BUTTON_GLITCH_FILTER_TIME_MS / portTICK_RATE_MS;
-        btn->tap_short_cb.pbtn = btn;
-    } else if (type == BUTTON_CB_SERIAL) {
-        iot_button_set_serial_cb(btn_handle, 1, 1000 / portTICK_RATE_MS, cb, arg);
-    }
-    return ESP_OK;
-}
-
-esp_err_t iot_button_add_custom_cb(button_handle_t btn_handle, uint32_t press_sec, button_cb cb, void* arg)
-{
-    POINT_ASSERT(TAG, btn_handle, ESP_ERR_INVALID_ARG);
-    IOT_CHECK(TAG, press_sec != 0, ESP_ERR_INVALID_ARG);
-    button_dev_t* btn = (button_dev_t*) btn_handle;
-    button_cb_t* cb_new = (button_cb_t*) calloc(1, sizeof(button_cb_t));
-    POINT_ASSERT(TAG, cb_new, ESP_FAIL);
-    cb_new->arg = arg;
-    cb_new->cb = cb;
-    cb_new->interval = press_sec * 1000 / portTICK_PERIOD_MS;
-    cb_new->pbtn = btn;
-    #if !USE_ESP_TIMER
-    cb_new->tmr = xTimerCreate("btn_press_tmr", cb_new->interval, pdFALSE, cb_new, button_press_cb);
-    #else
-    esp_timer_create_args_t tmr_param_cus;
-    tmr_param_cus.arg = cb_new;
-    tmr_param_cus.callback = button_press_cb;
-    tmr_param_cus.dispatch_method = ESP_TIMER_TASK;
-    tmr_param_cus.name = "btn_press_custom_tmr";
-    esp_timer_create(&tmr_param_cus, &cb_new->tmr);
-    #endif
-    cb_new->next_cb = btn->cb_head;
-    btn->cb_head = cb_new;
-    return ESP_OK;
-}

+ 0 - 48
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/components/button/button_obj.cpp

@@ -1,48 +0,0 @@
-// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
-//
-// Licensed 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 "freertos/FreeRTOS.h"
-#include "freertos/task.h"
-#include "esp_system.h"
-#include "iot_button.h"
-
-CButton::CButton(gpio_num_t gpio_num, button_active_t active_level)
-{
-    m_btn_handle = iot_button_create(gpio_num, active_level);
-}
-
-CButton::~CButton()
-{
-    iot_button_delete(m_btn_handle);
-    m_btn_handle = NULL;
-}
-
-esp_err_t CButton::set_evt_cb(button_cb_type_t type, button_cb cb, void* arg)
-{
-    return iot_button_set_evt_cb(m_btn_handle, type, cb, arg);
-}
-
-esp_err_t CButton::set_serial_cb(button_cb cb, void* arg, TickType_t interval_tick, uint32_t start_after_sec)
-{
-    return iot_button_set_serial_cb(m_btn_handle, start_after_sec, interval_tick, cb, arg);
-}
-
-esp_err_t CButton::add_custom_cb(uint32_t press_sec, button_cb cb, void* arg)
-{
-    return iot_button_add_custom_cb(m_btn_handle, press_sec, cb, arg);
-}
-
-esp_err_t CButton::rm_cb(button_cb_type_t type)
-{
-    return iot_button_rm_cb(m_btn_handle, type);
-}

+ 1 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/main/CMakeLists.txt

@@ -1,5 +1,4 @@
-set(srcs "ble_mesh_demo_main.c"
-        "ble_mesh_demo_init.c"
+set(srcs "main.c"
         "board.c")
 
 idf_component_register(SRCS "${srcs}"

+ 0 - 152
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/main/ble_mesh_demo_init.c

@@ -1,152 +0,0 @@
-
-/*
- * Copyright (c) 2017 Intel Corporation
- * Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sdkconfig.h>
-/* BLE */
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-#include "esp_bt.h"
-#include "esp_bt_main.h"
-#include "esp_bt_device.h"
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-#include "esp_nimble_hci.h"
-#include "nimble/nimble_port.h"
-#include "nimble/nimble_port_freertos.h"
-#include "host/ble_hs.h"
-#include "host/util/util.h"
-#include "console/console.h"
-#endif
-
-#include "esp_ble_mesh_defs.h"
-#include "ble_mesh_demo_init.h"
-#include "esp_ble_mesh_common_api.h"
-
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    if (dev_uuid == NULL) {
-        ESP_LOGE(TAG, "%s, Invalid device uuid", __func__);
-        return;
-    }
-
-    /* Copy device address to the device uuid with offset equals to 2 here.
-     * The first two bytes is used for matching device uuid by Provisioner.
-     * And using device address here is to avoid using the same device uuid
-     * by different unprovisioned devices.
-     */
-    memcpy(dev_uuid + 2, esp_bt_dev_get_address(), BD_ADDR_LEN);
-}
-
-esp_err_t bluetooth_init(void)
-{
-    esp_err_t ret;
-
-    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
-
-    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
-    ret = esp_bt_controller_init(&bt_cfg);
-    if (ret) {
-        ESP_LOGE(TAG, "%s initialize controller failed", __func__);
-        return ret;
-    }
-
-    ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable controller failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_init();
-    if (ret) {
-        ESP_LOGE(TAG, "%s init bluetooth failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_enable();
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable bluetooth failed", __func__);
-        return ret;
-    }
-
-    return ret;
-}
-
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-static SemaphoreHandle_t mesh_sem;
-static uint8_t own_addr_type;
-void ble_store_config_init(void);
-static uint8_t addr_val[BD_ADDR_LEN] = {0};
-    
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, addr_val, BD_ADDR_LEN);
-}
-
-static void mesh_on_reset(int reason)
-{
-    ESP_LOGI(TAG, "Resetting state; reason=%d", reason);
-}
-
-static void mesh_on_sync(void)
-{
-    int rc;
-
-    rc = ble_hs_util_ensure_addr(0);
-    assert(rc == 0);
-
-    /* Figure out address to use while advertising (no privacy for now) */
-    rc = ble_hs_id_infer_auto(0, &own_addr_type);
-    if (rc != 0) {
-        ESP_LOGI(TAG, "error determining address type; rc=%d", rc);
-        return;
-    }
-
-    rc = ble_hs_id_copy_addr(own_addr_type, addr_val, NULL);
-
-    xSemaphoreGive(mesh_sem);
-}
-
-void mesh_host_task(void *param)
-{
-    ESP_LOGI(TAG, "BLE Host Task Started");
-    /* This function will return only when nimble_port_stop() is executed */
-    nimble_port_run();
-
-    nimble_port_freertos_deinit();
-}
-
-esp_err_t bluetooth_init(void)
-{
-    mesh_sem = xSemaphoreCreateBinary();
-    if (mesh_sem == NULL) {
-        ESP_LOGE(TAG, "Failed to create mesh semaphore");
-        return ESP_FAIL;
-    }
-
-    ESP_ERROR_CHECK(esp_nimble_hci_and_controller_init());
-
-    nimble_port_init();
-    /* Initialize the NimBLE host configuration. */
-    ble_hs_cfg.reset_cb = mesh_on_reset;
-    ble_hs_cfg.sync_cb = mesh_on_sync;
-    ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
-
-    /* XXX Need to have template for store */
-    ble_store_config_init();
-
-    nimble_port_freertos_init(mesh_host_task);
-
-    xSemaphoreTake(mesh_sem, portMAX_DELAY);
-
-    return ESP_OK;
-}
-#endif

+ 0 - 18
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/main/ble_mesh_demo_init.h

@@ -1,18 +0,0 @@
-/*
-   This example code is in the Public Domain (or CC0 licensed, at your option.)
-
-   Unless required by applicable law or agreed to in writing, this
-   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-   CONDITIONS OF ANY KIND, either express or implied.
-*/
-
-#ifndef _BLE_MESH_DEMO_INIT_H_
-#define _BLE_MESH_DEMO_INIT_H_
-
-#define TAG "Client"
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid);
-
-esp_err_t bluetooth_init(void);
-
-#endif

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/main/ble_mesh_demo_main.c → examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_client/main/main.c

@@ -19,7 +19,7 @@
 #include "esp_ble_mesh_config_model_api.h"
 #include "esp_ble_mesh_sensor_model_api.h"
 
-#include "ble_mesh_demo_init.h"
+#include "ble_mesh_example_init.h"
 #include "board.h"
 
 #define CID_ESP             0x02E5

+ 2 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/CMakeLists.txt

@@ -2,6 +2,8 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/example_init)
+
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(SUPPORTED_TARGETS esp32)
 project(sensor_server)

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/Makefile

@@ -5,6 +5,6 @@
 
 PROJECT_NAME := sensor_server
 
-COMPONENT_ADD_INCLUDEDIRS := components/include
+EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/example_init
 
 include $(IDF_PATH)/make/project.mk

+ 1 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/main/CMakeLists.txt

@@ -1,5 +1,4 @@
-set(srcs "ble_mesh_demo_main.c"
-        "ble_mesh_demo_init.c"
+set(srcs "main.c"
         "board.c")
 
 idf_component_register(SRCS "${srcs}"

+ 0 - 18
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/main/ble_mesh_demo_init.h

@@ -1,18 +0,0 @@
-/*
-   This example code is in the Public Domain (or CC0 licensed, at your option.)
-
-   Unless required by applicable law or agreed to in writing, this
-   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-   CONDITIONS OF ANY KIND, either express or implied.
-*/
-
-#ifndef _BLE_MESH_DEMO_INIT_H_
-#define _BLE_MESH_DEMO_INIT_H_
-
-#define TAG "Server"
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid);
-
-esp_err_t bluetooth_init(void);
-
-#endif

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/main/ble_mesh_demo_main.c → examples/bluetooth/esp_ble_mesh/ble_mesh_sensor_model/sensor_server/main/main.c

@@ -20,7 +20,7 @@
 #include "esp_ble_mesh_config_model_api.h"
 #include "esp_ble_mesh_sensor_model_api.h"
 
-#include "ble_mesh_demo_init.h"
+#include "ble_mesh_example_init.h"
 #include "board.h"
 
 #define CID_ESP     0x02E5

+ 3 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/CMakeLists.txt

@@ -2,6 +2,9 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/button
+                         $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/example_init)
+
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(SUPPORTED_TARGETS esp32)
 project(vendor_client)

+ 2 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/Makefile

@@ -5,6 +5,7 @@
 
 PROJECT_NAME := vendor_client
 
-COMPONENT_ADD_INCLUDEDIRS := components/include
+EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/button \
+                        $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/example_init
 
 include $(IDF_PATH)/make/project.mk

+ 0 - 7
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/CMakeLists.txt

@@ -1,7 +0,0 @@
-
-set(COMPONENT_SRCS "button.c"
-                   "button_obj.cpp")
-
-set(COMPONENT_ADD_INCLUDEDIRS ". include")
-
-register_component()

+ 0 - 21
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/Kconfig

@@ -1,21 +0,0 @@
-menu "Button"
-
-    choice BUTTON_TIMER_IMPLEMENT
-        bool "Button Timer Mode"
-        default BUTTON_USE_ESP_TIMER
-        help
-            Choose a implementation of timer for button instance.
-
-        config BUTTON_USE_RTOS_TIMER
-            bool "Use FreeRTOS Timer"
-
-        config BUTTON_USE_ESP_TIMER
-            bool "Use ESP Timer"
-    endchoice
-
-    config BUTTON_IO_GLITCH_FILTER_TIME_MS
-        int "IO glitch filter timer ms (10~100)"
-        range 10 100
-        default 50
-
-endmenu

+ 0 - 46
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/README.md

@@ -1,46 +0,0 @@
-# Component: Button
-
-* This component defines a button as a well encapsulated object.
-* A button device is defined by:
-    * GPIO number on which the button is attached.
-    * Active level which decided by peripheral hardware.
-    * Trigger mode which decides whether to call serial trigger callback during pressing
-    * Serial threshold seconds which decides that serial trigger callback will be called after how many seconds' pressing
-* A button device can provide:
-    * One push event callback
-    * One release event callback
-    * One short-time tap event callback
-    * One serial trigger event callback
-    * Several long-time press event callback
-    We can set different jitter filters for all the events.
-    Once any of the long press callback is triggered, the short tap event will not be triggered.
-    These components are based on GPIO provided by ESP-IDF and soft timer provided by FreeRTOS.
-
-* To use the button device, you need to:
-    * create a button object returned by iot_button_create().
-    * Then hook different event callbacks to the button object.
-    * To free the object, you can call iot_button_delete to delete the button object and free the used memory.
-
-* Todo: Add hardware timer mode(because sometimes soft-timer callback function is limited)
-
-### NOTE:
-> All the event callback function are implemented by FreeRTOS soft timer APIs, the callback must follow the rule:
-
-
-
-```
-  Button callback functions execute in the context of the timer service task.
-  It is therefore essential that button callback functions never attempt to block.
-  For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(), or specify a non zero block time when accessing a queue or a semaphore.
-```
-
-> In addition:
-> You can adjust the following macros within FreeRTOS to adjust the stack depth/queue length/task priority of the timer service.
-
-
-```
-#define configUSE_TIMERS //enable soft-timer
-#define configTIMER_TASK_PRIORITY // priority of the timers service task
-#define configQueue_LENGTH // length of timer command queue
-#define configTIMER_TASK_STACK_DEPTH // stack depth of the soft-timer
-```

+ 0 - 434
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/button.c

@@ -1,434 +0,0 @@
-// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
-//
-// Licensed 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 <stdio.h>
-#include "freertos/FreeRTOS.h"
-#include "freertos/task.h"
-#include "freertos/queue.h"
-#include "freertos/timers.h"
-#include "esp_log.h"
-#include "driver/gpio.h"
-#include "iot_button.h"
-#include "esp_timer.h"
-
-#define USE_ESP_TIMER   CONFIG_BUTTON_USE_ESP_TIMER
-#if USE_ESP_TIMER
-#define STOP_TIMER(tmr)   esp_timer_stop(tmr)
-#define DELETE_TIMER(tmr) esp_timer_delete(tmr)
-#else
-#define STOP_TIMER(tmr)   xTimerStop(tmr, portMAX_DELAY)
-#define DELETE_TIMER(tmr) xTimerDelete(tmr, portMAX_DELAY);
-#endif
-
-#define IOT_CHECK(tag, a, ret)  if(!(a)) {                                             \
-        ESP_LOGE(tag,"%s:%d (%s)", __FILE__, __LINE__, __FUNCTION__);      \
-        return (ret);                                                                   \
-        }
-#define ERR_ASSERT(tag, param)  IOT_CHECK(tag, (param) == ESP_OK, ESP_FAIL)
-#define POINT_ASSERT(tag, param, ret)    IOT_CHECK(tag, (param) != NULL, (ret))
-
-typedef enum {
-    BUTTON_STATE_IDLE = 0,
-    BUTTON_STATE_PUSH,
-    BUTTON_STATE_PRESSED,
-} button_status_t;
-
-typedef struct button_dev button_dev_t;
-typedef struct btn_cb button_cb_t;
-
-struct btn_cb{
-    TickType_t interval;
-    button_cb cb;
-    void* arg;
-    #if !USE_ESP_TIMER
-    TimerHandle_t tmr;
-    #else
-    esp_timer_handle_t tmr;
-    #endif
-    button_dev_t *pbtn;
-    button_cb_t *next_cb;
-};
-
-struct button_dev{
-    uint8_t io_num;
-    uint8_t active_level;
-    uint32_t serial_thres_sec;
-    button_status_t state;
-    button_cb_t tap_short_cb;
-    button_cb_t tap_psh_cb;
-    button_cb_t tap_rls_cb;
-    button_cb_t press_serial_cb;
-    button_cb_t* cb_head;
-};
-
-#define BUTTON_GLITCH_FILTER_TIME_MS   CONFIG_BUTTON_IO_GLITCH_FILTER_TIME_MS
-static const char* TAG = "button";
-
-// static void button_press_cb(xTimerHandle tmr)
-static void button_press_cb(void* tmr)
-{
-    #if !USE_ESP_TIMER
-    button_cb_t* btn_cb = (button_cb_t*) pvTimerGetTimerID(tmr);
-    #else
-    button_cb_t* btn_cb = (button_cb_t*)(tmr);
-    #endif
-
-    button_dev_t* btn = btn_cb->pbtn;
-    // low, then restart
-    if (btn->active_level == gpio_get_level(btn->io_num)) {
-        btn->state = BUTTON_STATE_PRESSED;
-        if (btn_cb->cb) {
-            btn_cb->cb(btn_cb->arg);
-        }
-    }
-}
-
-// static void button_tap_psh_cb(xTimerHandle tmr)
-static void button_tap_psh_cb(void* tmr)
-{
-    #if !USE_ESP_TIMER
-    button_cb_t* btn_cb = (button_cb_t*) pvTimerGetTimerID(tmr);
-    #else
-    button_cb_t* btn_cb = (button_cb_t*)(tmr);
-    #endif
-
-    button_dev_t* btn = btn_cb->pbtn;
-    STOP_TIMER(btn->tap_rls_cb.tmr);
-
-    int lv = gpio_get_level(btn->io_num);
-
-    if (btn->active_level == lv) {
-        // high, then key is up
-        btn->state = BUTTON_STATE_PUSH;
-        if (btn->press_serial_cb.tmr) {
-            #if !USE_ESP_TIMER
-            xTimerChangePeriod(btn->press_serial_cb.tmr, btn->serial_thres_sec*1000 / portTICK_PERIOD_MS, portMAX_DELAY);
-            xTimerReset(btn->press_serial_cb.tmr, portMAX_DELAY);
-            #else
-            esp_timer_stop(btn->press_serial_cb.tmr);
-            esp_timer_start_once(btn->press_serial_cb.tmr, btn->serial_thres_sec * 1000 * 1000);
-            #endif
-
-        }
-        if (btn->tap_psh_cb.cb) {
-            btn->tap_psh_cb.cb(btn->tap_psh_cb.arg);
-        }
-    } else {
-        // 50ms, check if this is a real key up
-        if (btn->tap_rls_cb.tmr) {
-            STOP_TIMER(btn->tap_rls_cb.tmr);
-            #if !USE_ESP_TIMER
-            xTimerReset(btn->tap_rls_cb.tmr, portMAX_DELAY);
-            #else
-            esp_timer_start_once(btn->tap_rls_cb.tmr, btn->tap_rls_cb.interval * portTICK_PERIOD_MS * 1000);
-            #endif
-        }
-    }
-}
-
-static void button_tap_rls_cb(void* tmr)
-{
-    #if !USE_ESP_TIMER
-    button_cb_t* btn_cb = (button_cb_t*) pvTimerGetTimerID(tmr);
-    #else
-    button_cb_t* btn_cb = (button_cb_t*)(tmr);
-    #endif
-    button_dev_t* btn = btn_cb->pbtn;
-    STOP_TIMER(btn->tap_rls_cb.tmr);
-
-    if (btn->active_level == gpio_get_level(btn->io_num)) {
-
-    } else {
-        // high, then key is up
-        button_cb_t *pcb = btn->cb_head;
-        while (pcb != NULL) {
-            if (pcb->tmr != NULL) {
-                STOP_TIMER(pcb->tmr);
-            }
-            pcb = pcb->next_cb;
-        }
-        if (btn->press_serial_cb.tmr && btn->press_serial_cb.tmr != NULL) {
-            STOP_TIMER(btn->press_serial_cb.tmr);
-        }
-        if (btn->tap_short_cb.cb && btn->state == BUTTON_STATE_PUSH) {
-            btn->tap_short_cb.cb(btn->tap_short_cb.arg);
-        }
-        if(btn->tap_rls_cb.cb && btn->state != BUTTON_STATE_IDLE) {
-            btn->tap_rls_cb.cb(btn->tap_rls_cb.arg);
-        }
-        btn->state = BUTTON_STATE_IDLE;
-    }
-}
-
-static void button_press_serial_cb(void* tmr)
-{
-    #if !USE_ESP_TIMER
-    button_dev_t* btn = (button_dev_t*) pvTimerGetTimerID(tmr);
-    #else
-    button_dev_t* btn = (button_dev_t*)(tmr);
-    #endif
-
-    if (btn->press_serial_cb.cb) {
-        btn->press_serial_cb.cb(btn->press_serial_cb.arg);
-    }
-    #if !USE_ESP_TIMER
-    xTimerChangePeriod(btn->press_serial_cb.tmr, btn->press_serial_cb.interval, portMAX_DELAY);
-    xTimerReset(btn->press_serial_cb.tmr, portMAX_DELAY);
-    #else
-    esp_timer_stop(btn->press_serial_cb.tmr);
-    esp_timer_start_once(btn->press_serial_cb.tmr, btn->press_serial_cb.interval * portTICK_PERIOD_MS * 1000);
-    #endif
-}
-
-static void button_gpio_isr_handler(void* arg)
-{
-    button_dev_t* btn = (button_dev_t*) arg;
-    portBASE_TYPE HPTaskAwoken = pdFALSE;
-    int level = gpio_get_level(btn->io_num);
-    if (level == btn->active_level) {
-        if (btn->tap_psh_cb.tmr) {
-            #if !USE_ESP_TIMER
-            xTimerStopFromISR(btn->tap_psh_cb.tmr, &HPTaskAwoken);
-            xTimerResetFromISR(btn->tap_psh_cb.tmr, &HPTaskAwoken);
-            #else 
-            esp_timer_stop(btn->tap_psh_cb.tmr);
-            esp_timer_start_once(btn->tap_psh_cb.tmr, btn->tap_psh_cb.interval * portTICK_PERIOD_MS * 1000);
-            #endif
-        }
-
-        button_cb_t *pcb = btn->cb_head;
-        while (pcb != NULL) {
-            if (pcb->tmr != NULL) {
-                #if !USE_ESP_TIMER
-                xTimerStopFromISR(pcb->tmr, &HPTaskAwoken);
-                xTimerResetFromISR(pcb->tmr, &HPTaskAwoken);
-                #else
-                esp_timer_stop(pcb->tmr);
-                esp_timer_start_once(pcb->tmr, pcb->interval * portTICK_PERIOD_MS * 1000);
-                #endif
-            }
-            pcb = pcb->next_cb;
-        }
-    } else {
-        // 50ms, check if this is a real key up
-        if (btn->tap_rls_cb.tmr) {
-            #if !USE_ESP_TIMER
-            xTimerStopFromISR(btn->tap_rls_cb.tmr, &HPTaskAwoken);
-            xTimerResetFromISR(btn->tap_rls_cb.tmr, &HPTaskAwoken);
-            #else
-            esp_timer_stop(btn->tap_rls_cb.tmr);
-            esp_timer_start_once(btn->tap_rls_cb.tmr, btn->tap_rls_cb.interval * portTICK_PERIOD_MS * 1000);
-            #endif
-        }
-    }
-    if(HPTaskAwoken == pdTRUE) {
-        portYIELD_FROM_ISR();
-    }
-}
-
-#if !USE_ESP_TIMER
-static void button_free_tmr(xTimerHandle* tmr)
-#else
-static void button_free_tmr(esp_timer_handle_t *tmr)
-#endif
-{
-    if (tmr && *tmr) {
-        STOP_TIMER(*tmr);
-        DELETE_TIMER(*tmr);
-        *tmr = NULL;
-    }
-}
-
-esp_err_t iot_button_delete(button_handle_t btn_handle)
-{
-    POINT_ASSERT(TAG, btn_handle, ESP_ERR_INVALID_ARG);
-    button_dev_t* btn = (button_dev_t*) btn_handle;
-    gpio_set_intr_type(btn->io_num, GPIO_INTR_DISABLE);
-    gpio_isr_handler_remove(btn->io_num);
-
-    button_free_tmr(&btn->tap_rls_cb.tmr);
-    button_free_tmr(&btn->tap_psh_cb.tmr);
-    button_free_tmr(&btn->tap_short_cb.tmr);
-    button_free_tmr(&btn->press_serial_cb.tmr);
-
-    button_cb_t *pcb = btn->cb_head;
-    while (pcb != NULL) {
-        button_cb_t *cb_next = pcb->next_cb;
-        button_free_tmr(&pcb->tmr);
-        free(pcb);
-        pcb = cb_next;
-    }
-    free(btn);
-    return ESP_OK;
-}
-
-button_handle_t iot_button_create(gpio_num_t gpio_num, button_active_t active_level)
-{
-    #if USE_ESP_TIMER
-    ets_printf("use esp timer !!!\n");
-    esp_timer_init();
-    #endif
-
-    IOT_CHECK(TAG, gpio_num < GPIO_NUM_MAX, NULL);
-    button_dev_t* btn = (button_dev_t*) calloc(1, sizeof(button_dev_t));
-    POINT_ASSERT(TAG, btn, NULL);
-    btn->active_level = active_level;
-    btn->io_num = gpio_num;
-    btn->state = BUTTON_STATE_IDLE;
-    btn->tap_rls_cb.arg = NULL;
-    btn->tap_rls_cb.cb = NULL;
-    btn->tap_rls_cb.interval = BUTTON_GLITCH_FILTER_TIME_MS / portTICK_PERIOD_MS;
-    btn->tap_rls_cb.pbtn = btn;
-    #if !USE_ESP_TIMER
-    btn->tap_rls_cb.tmr = xTimerCreate("btn_rls_tmr", btn->tap_rls_cb.interval, pdFALSE,
-            &btn->tap_rls_cb, button_tap_rls_cb);
-    #else
-    esp_timer_create_args_t tmr_param_rls;
-    tmr_param_rls.arg = &btn->tap_rls_cb;
-    tmr_param_rls.callback = button_tap_rls_cb;
-    tmr_param_rls.dispatch_method = ESP_TIMER_TASK;
-    tmr_param_rls.name = "btn_rls_tmr";
-    esp_timer_create(&tmr_param_rls, &btn->tap_rls_cb.tmr);
-    #endif
-
-    btn->tap_psh_cb.arg = NULL;
-    btn->tap_psh_cb.cb = NULL;
-    btn->tap_psh_cb.interval = BUTTON_GLITCH_FILTER_TIME_MS / portTICK_PERIOD_MS;
-    btn->tap_psh_cb.pbtn = btn;
-    #if !USE_ESP_TIMER
-    btn->tap_psh_cb.tmr = xTimerCreate("btn_psh_tmr", btn->tap_psh_cb.interval, pdFALSE,
-            &btn->tap_psh_cb, button_tap_psh_cb);
-    #else
-    esp_timer_create_args_t tmr_param_psh;
-    tmr_param_psh.arg = &btn->tap_psh_cb;
-    tmr_param_psh.callback = button_tap_psh_cb;
-    tmr_param_psh.dispatch_method = ESP_TIMER_TASK;
-    tmr_param_psh.name = "btn_psh_tmr";
-    esp_timer_create(&tmr_param_psh, &btn->tap_psh_cb.tmr);
-    #endif
-    gpio_install_isr_service(0);
-    gpio_config_t gpio_conf;
-    gpio_conf.intr_type = GPIO_INTR_ANYEDGE;
-    gpio_conf.mode = GPIO_MODE_INPUT;
-    gpio_conf.pin_bit_mask = (1ULL << gpio_num);
-    gpio_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
-    gpio_conf.pull_up_en = GPIO_PULLUP_ENABLE;
-    gpio_config(&gpio_conf);
-    gpio_isr_handler_add(gpio_num, button_gpio_isr_handler, btn);
-    return (button_handle_t) btn;
-}
-
-esp_err_t iot_button_rm_cb(button_handle_t btn_handle, button_cb_type_t type)
-{
-    button_dev_t* btn = (button_dev_t*) btn_handle;
-    button_cb_t* btn_cb = NULL;
-    if (type == BUTTON_CB_PUSH) {
-        btn_cb = &btn->tap_psh_cb;
-    } else if (type == BUTTON_CB_RELEASE) {
-        btn_cb = &btn->tap_rls_cb;
-    } else if (type == BUTTON_CB_TAP) {
-        btn_cb = &btn->tap_short_cb;
-    } else if (type == BUTTON_CB_SERIAL) {
-        btn_cb = &btn->press_serial_cb;
-    }
-    btn_cb->cb = NULL;
-    btn_cb->arg = NULL;
-    btn_cb->pbtn = btn;
-    button_free_tmr(&btn_cb->tmr);
-    return ESP_OK;
-}
-
-esp_err_t iot_button_set_serial_cb(button_handle_t btn_handle, uint32_t start_after_sec, TickType_t interval_tick, button_cb cb, void* arg)
-{
-    button_dev_t* btn = (button_dev_t*) btn_handle;
-    btn->serial_thres_sec = start_after_sec;
-
-    if (btn->press_serial_cb.tmr == NULL) {
-        #if !USE_ESP_TIMER
-        btn->press_serial_cb.tmr = xTimerCreate("btn_serial_tmr", btn->serial_thres_sec*1000 / portTICK_PERIOD_MS,
-                            pdFALSE, btn, button_press_serial_cb);
-        #else
-        esp_timer_create_args_t tmr_param_ser;
-        tmr_param_ser.arg = btn;
-        tmr_param_ser.callback = button_press_serial_cb;
-        tmr_param_ser.dispatch_method = ESP_TIMER_TASK;
-        tmr_param_ser.name = "btn_serial_tmr";
-        esp_timer_create(&tmr_param_ser, &btn->press_serial_cb.tmr);
-        #endif
-    }
-    btn->press_serial_cb.arg = arg;
-    btn->press_serial_cb.cb = cb;
-    btn->press_serial_cb.interval = interval_tick;
-    btn->press_serial_cb.pbtn = btn;
-    #if !USE_ESP_TIMER
-    xTimerChangePeriod(btn->press_serial_cb.tmr, btn->serial_thres_sec*1000 / portTICK_PERIOD_MS, portMAX_DELAY);
-    #endif
-    return ESP_OK;
-}
-
-esp_err_t iot_button_set_evt_cb(button_handle_t btn_handle, button_cb_type_t type, button_cb cb, void* arg)
-{
-    POINT_ASSERT(TAG, btn_handle, ESP_ERR_INVALID_ARG);
-    button_dev_t* btn = (button_dev_t*) btn_handle;
-    if (type == BUTTON_CB_PUSH) {
-        btn->tap_psh_cb.arg = arg;
-        btn->tap_psh_cb.cb = cb;
-        btn->tap_psh_cb.interval = BUTTON_GLITCH_FILTER_TIME_MS / portTICK_RATE_MS;
-        btn->tap_psh_cb.pbtn = btn;
-        #if !USE_ESP_TIMER
-        xTimerChangePeriod(btn->tap_psh_cb.tmr, btn->tap_psh_cb.interval, portMAX_DELAY);
-        #endif
-    } else if (type == BUTTON_CB_RELEASE) {
-        btn->tap_rls_cb.arg = arg;
-        btn->tap_rls_cb.cb = cb;
-        btn->tap_rls_cb.interval = BUTTON_GLITCH_FILTER_TIME_MS / portTICK_RATE_MS;
-        btn->tap_rls_cb.pbtn = btn;
-        #if !USE_ESP_TIMER
-        xTimerChangePeriod(btn->tap_rls_cb.tmr, btn->tap_psh_cb.interval, portMAX_DELAY);
-        #endif
-    } else if (type == BUTTON_CB_TAP) {
-        btn->tap_short_cb.arg = arg;
-        btn->tap_short_cb.cb = cb;
-        btn->tap_short_cb.interval = BUTTON_GLITCH_FILTER_TIME_MS / portTICK_RATE_MS;
-        btn->tap_short_cb.pbtn = btn;
-    } else if (type == BUTTON_CB_SERIAL) {
-        iot_button_set_serial_cb(btn_handle, 1, 1000 / portTICK_RATE_MS, cb, arg);
-    }
-    return ESP_OK;
-}
-
-esp_err_t iot_button_add_custom_cb(button_handle_t btn_handle, uint32_t press_sec, button_cb cb, void* arg)
-{
-    POINT_ASSERT(TAG, btn_handle, ESP_ERR_INVALID_ARG);
-    IOT_CHECK(TAG, press_sec != 0, ESP_ERR_INVALID_ARG);
-    button_dev_t* btn = (button_dev_t*) btn_handle;
-    button_cb_t* cb_new = (button_cb_t*) calloc(1, sizeof(button_cb_t));
-    POINT_ASSERT(TAG, cb_new, ESP_FAIL);
-    cb_new->arg = arg;
-    cb_new->cb = cb;
-    cb_new->interval = press_sec * 1000 / portTICK_PERIOD_MS;
-    cb_new->pbtn = btn;
-    #if !USE_ESP_TIMER
-    cb_new->tmr = xTimerCreate("btn_press_tmr", cb_new->interval, pdFALSE, cb_new, button_press_cb);
-    #else
-    esp_timer_create_args_t tmr_param_cus;
-    tmr_param_cus.arg = cb_new;
-    tmr_param_cus.callback = button_press_cb;
-    tmr_param_cus.dispatch_method = ESP_TIMER_TASK;
-    tmr_param_cus.name = "btn_press_custom_tmr";
-    esp_timer_create(&tmr_param_cus, &cb_new->tmr);
-    #endif
-    cb_new->next_cb = btn->cb_head;
-    btn->cb_head = cb_new;
-    return ESP_OK;
-}

+ 0 - 48
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/button_obj.cpp

@@ -1,48 +0,0 @@
-// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
-//
-// Licensed 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 "freertos/FreeRTOS.h"
-#include "freertos/task.h"
-#include "esp_system.h"
-#include "iot_button.h"
-
-CButton::CButton(gpio_num_t gpio_num, button_active_t active_level)
-{
-    m_btn_handle = iot_button_create(gpio_num, active_level);
-}
-
-CButton::~CButton()
-{
-    iot_button_delete(m_btn_handle);
-    m_btn_handle = NULL;
-}
-
-esp_err_t CButton::set_evt_cb(button_cb_type_t type, button_cb cb, void* arg)
-{
-    return iot_button_set_evt_cb(m_btn_handle, type, cb, arg);
-}
-
-esp_err_t CButton::set_serial_cb(button_cb cb, void* arg, TickType_t interval_tick, uint32_t start_after_sec)
-{
-    return iot_button_set_serial_cb(m_btn_handle, start_after_sec, interval_tick, cb, arg);
-}
-
-esp_err_t CButton::add_custom_cb(uint32_t press_sec, button_cb cb, void* arg)
-{
-    return iot_button_add_custom_cb(m_btn_handle, press_sec, cb, arg);
-}
-
-esp_err_t CButton::rm_cb(button_cb_type_t type)
-{
-    return iot_button_rm_cb(m_btn_handle, type);
-}

+ 0 - 4
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/component.mk

@@ -1,4 +0,0 @@
-#
-# "main" pseudo-component makefile.
-#
-# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)

+ 0 - 231
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/components/button/include/iot_button.h

@@ -1,231 +0,0 @@
-// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
-//
-// Licensed 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 _IOT_BUTTON_H_
-#define _IOT_BUTTON_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "driver/gpio.h"
-#include "freertos/portmacro.h"
-
-typedef void (* button_cb)(void*);
-typedef void* button_handle_t;
-
-typedef enum {
-    BUTTON_ACTIVE_HIGH = 1,    /*!<button active level: high level*/
-    BUTTON_ACTIVE_LOW = 0,     /*!<button active level: low level*/
-} button_active_t;
-
-typedef enum {
-    BUTTON_CB_PUSH = 0,   /*!<button push callback event */
-    BUTTON_CB_RELEASE,    /*!<button release callback event */
-    BUTTON_CB_TAP,        /*!<button quick tap callback event(will not trigger if there already is a "PRESS" event) */
-    BUTTON_CB_SERIAL,     /*!<button serial trigger callback event */
-} button_cb_type_t;
-
-/**
- * @brief Init button functions
- *
- * @param gpio_num GPIO index of the pin that the button uses
- * @param active_level button hardware active level.
- *        For "BUTTON_ACTIVE_LOW" it means when the button pressed, the GPIO will read low level.
- *
- * @return A button_handle_t handle to the created button object, or NULL in case of error.
- */
-button_handle_t iot_button_create(gpio_num_t gpio_num, button_active_t active_level);
-
-/**
- * @brief Register a callback function for a serial trigger event.
- *
- * @param btn_handle handle of the button object
- * @start_after_sec define the time after which to start serial trigger action
- * @interval_tick serial trigger interval
- * @cb callback function for "TAP" action.
- * @arg Parameter for callback function
- * @note
- *        Button callback functions execute in the context of the timer service task.
- *        It is therefore essential that button callback functions never attempt to block.
- *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
- *        or specify a non zero block time when accessing a queue or a semaphore.
- * @return
- *     - ESP_OK Success
- *     - ESP_FAIL Parameter error
- */
-esp_err_t iot_button_set_serial_cb(button_handle_t btn_handle, uint32_t start_after_sec, TickType_t interval_tick, button_cb cb, void* arg);
-
-/**
- * @brief Register a callback function for a button_cb_type_t action.
- *
- * @param btn_handle handle of the button object
- * @param type callback function type
- * @param cb callback function for "TAP" action.
- * @param arg Parameter for callback function
- * @note
- *        Button callback functions execute in the context of the timer service task.
- *        It is therefore essential that button callback functions never attempt to block.
- *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
- *        or specify a non zero block time when accessing a queue or a semaphore.
- * @return
- *     - ESP_OK Success
- *     - ESP_FAIL Parameter error
- */
-esp_err_t iot_button_set_evt_cb(button_handle_t btn_handle, button_cb_type_t type, button_cb cb, void* arg);
-
-/**
- * @brief
- *
- * @param btn_handle handle of the button object
- * @param press_sec the callback function would be called if you press the button for a specified period of time
- * @param cb callback function for "PRESS" action.
- * @param arg Parameter for callback function
- *
- * @note
- *        Button callback functions execute in the context of the timer service task.
- *        It is therefore essential that button callback functions never attempt to block.
- *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
- *        or specify a non zero block time when accessing a queue or a semaphore.
- * @return
- *     - ESP_OK Success
- *     - ESP_FAIL Parameter error
- */
-esp_err_t iot_button_add_custom_cb(button_handle_t btn_handle, uint32_t press_sec, button_cb cb, void* arg);
-
-/**
- * @brief Delete button object and free memory
- * @param btn_handle handle of the button object
- *
- * @return
- *     - ESP_OK Success
- *     - ESP_FAIL Parameter error
- */
-esp_err_t iot_button_delete(button_handle_t btn_handle);
-
-/**
- * @brief Remove callback
- *
- * @param btn_handle The handle of the button object
- * @param type callback function event type
- *
- * @return
- *     - ESP_OK Success
- */
-esp_err_t iot_button_rm_cb(button_handle_t btn_handle, button_cb_type_t type);
-
-#ifdef __cplusplus
-}
-#endif
-
-#ifdef __cplusplus
-
-/**
- * class of button
- * simple usage:
- * CButton* btn = new CButton(BUTTON_IO_NUM, BUTTON_ACTIVE_LEVEL, BUTTON_SERIAL_TRIGGER, 3);
- * btn->add_cb(BUTTON_CB_PUSH, button_tap_cb, (void*) push, 50 / portTICK_PERIOD_MS);
- * btn->add_custom_cb(5, button_press_5s_cb, NULL);
- * ......
- * delete btn;
- */
-class CButton
-{
-private:
-    button_handle_t m_btn_handle;
-
-    /**
-     * prevent copy constructing
-     */
-    CButton(const CButton&);
-    CButton& operator = (const CButton&);
-public:
-
-    /**
-     * @brief constructor of CButton
-     * 
-     * @param gpio_num GPIO index of the pin that the button uses
-     * @param active_level button hardware active level.
-     *        For "BUTTON_ACTIVE_LOW" it means when the button pressed, the GPIO will read low level.
-     */
-    CButton(gpio_num_t gpio_num, button_active_t active_level = BUTTON_ACTIVE_LOW);
-    
-    ~CButton();
-
-    /**
-     * @brief Register a callback function for a button_cb_type_t action.
-     *
-     * @param type callback function type
-     * @param cb callback function for "TAP" action.
-     * @param arg Parameter for callback function
-     * @note
-     *        Button callback functions execute in the context of the timer service task.
-     *        It is therefore essential that button callback functions never attempt to block.
-     *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
-     *        or specify a non zero block time when accessing a queue or a semaphore.
-     * @return
-     *     - ESP_OK Success
-     *     - ESP_FAIL Parameter error
-     */
-    esp_err_t set_evt_cb(button_cb_type_t type, button_cb cb, void* arg);
-
-    /**
-     * @brief Register a callback function for a serial trigger event.
-     *
-     * @param btn_handle handle of the button object
-     * @start_after_sec define the time after which to start serial trigger action
-     * @interval_tick serial trigger interval
-     * @cb callback function for "TAP" action.
-     * @arg Parameter for callback function
-     * @note
-     *        Button callback functions execute in the context of the timer service task.
-     *        It is therefore essential that button callback functions never attempt to block.
-     *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
-     *        or specify a non zero block time when accessing a queue or a semaphore.
-     * @return
-     *     - ESP_OK Success
-     *     - ESP_FAIL Parameter error
-     */
-    esp_err_t set_serial_cb(button_cb cb, void* arg, TickType_t interval_tick, uint32_t start_after_sec);
-
-    /**
-     * @brief
-     *
-     * @param press_sec the callback function would be called if you press the button for a specified period of time
-     * @param cb callback function for "PRESS" action.
-     * @param arg Parameter for callback function
-     *
-     * @note
-     *        Button callback functions execute in the context of the timer service task.
-     *        It is therefore essential that button callback functions never attempt to block.
-     *        For example, a button callback function must not call vTaskDelay(), vTaskDelayUntil(),
-     *        or specify a non zero block time when accessing a queue or a semaphore.
-     * @return
-     *     - ESP_OK Success
-     *     - ESP_FAIL Parameter error
-     */
-    esp_err_t add_custom_cb(uint32_t press_sec, button_cb cb, void* arg);
-
-    /**
-     * @brief Remove callback
-     *
-     * @param type callback function event type
-     *
-     * @return
-     *     - ESP_OK Success
-     */
-    esp_err_t rm_cb(button_cb_type_t type);
-};
-#endif
-
-#endif

+ 1 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/CMakeLists.txt

@@ -1,5 +1,4 @@
-set(COMPONENT_SRCS "ble_mesh_demo_main.c"
-                   "ble_mesh_demo_init.c"
+set(COMPONENT_SRCS "main.c"
                    "board.c")
 
 set(COMPONENT_ADD_INCLUDEDIRS ".")

+ 0 - 152
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/ble_mesh_demo_init.c

@@ -1,152 +0,0 @@
-
-/*
- * Copyright (c) 2017 Intel Corporation
- * Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sdkconfig.h>
-/* BLE */
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-#include "esp_bt.h"
-#include "esp_bt_main.h"
-#include "esp_bt_device.h"
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-#include "esp_nimble_hci.h"
-#include "nimble/nimble_port.h"
-#include "nimble/nimble_port_freertos.h"
-#include "host/ble_hs.h"
-#include "host/util/util.h"
-#include "console/console.h"
-#endif
-
-#include "esp_ble_mesh_defs.h"
-#include "ble_mesh_demo_init.h"
-#include "esp_ble_mesh_common_api.h"
-
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    if (dev_uuid == NULL) {
-        ESP_LOGE(TAG, "%s, Invalid device uuid", __func__);
-        return;
-    }
-
-    /* Copy device address to the device uuid with offset equals to 2 here.
-     * The first two bytes is used for matching device uuid by Provisioner.
-     * And using device address here is to avoid using the same device uuid
-     * by different unprovisioned devices.
-     */
-    memcpy(dev_uuid + 2, esp_bt_dev_get_address(), BD_ADDR_LEN);
-}
-
-esp_err_t bluetooth_init(void)
-{
-    esp_err_t ret;
-
-    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
-
-    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
-    ret = esp_bt_controller_init(&bt_cfg);
-    if (ret) {
-        ESP_LOGE(TAG, "%s initialize controller failed", __func__);
-        return ret;
-    }
-
-    ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable controller failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_init();
-    if (ret) {
-        ESP_LOGE(TAG, "%s init bluetooth failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_enable();
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable bluetooth failed", __func__);
-        return ret;
-    }
-
-    return ret;
-}
-
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-static SemaphoreHandle_t mesh_sem;
-static uint8_t own_addr_type;
-void ble_store_config_init(void);
-static uint8_t addr_val[BD_ADDR_LEN] = {0};
-    
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, addr_val, BD_ADDR_LEN);
-}
-
-static void mesh_on_reset(int reason)
-{
-    ESP_LOGI(TAG, "Resetting state; reason=%d", reason);
-}
-
-static void mesh_on_sync(void)
-{
-    int rc;
-
-    rc = ble_hs_util_ensure_addr(0);
-    assert(rc == 0);
-
-    /* Figure out address to use while advertising (no privacy for now) */
-    rc = ble_hs_id_infer_auto(0, &own_addr_type);
-    if (rc != 0) {
-        ESP_LOGI(TAG, "error determining address type; rc=%d", rc);
-        return;
-    }
-
-    rc = ble_hs_id_copy_addr(own_addr_type, addr_val, NULL);
-
-    xSemaphoreGive(mesh_sem);
-}
-
-void mesh_host_task(void *param)
-{
-    ESP_LOGI(TAG, "BLE Host Task Started");
-    /* This function will return only when nimble_port_stop() is executed */
-    nimble_port_run();
-
-    nimble_port_freertos_deinit();
-}
-
-esp_err_t bluetooth_init(void)
-{
-    mesh_sem = xSemaphoreCreateBinary();
-    if (mesh_sem == NULL) {
-        ESP_LOGE(TAG, "Failed to create mesh semaphore");
-        return ESP_FAIL;
-    }
-
-    ESP_ERROR_CHECK(esp_nimble_hci_and_controller_init());
-
-    nimble_port_init();
-    /* Initialize the NimBLE host configuration. */
-    ble_hs_cfg.reset_cb = mesh_on_reset;
-    ble_hs_cfg.sync_cb = mesh_on_sync;
-    ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
-
-    /* XXX Need to have template for store */
-    ble_store_config_init();
-
-    nimble_port_freertos_init(mesh_host_task);
-
-    xSemaphoreTake(mesh_sem, portMAX_DELAY);
-
-    return ESP_OK;
-}
-#endif

+ 0 - 18
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/ble_mesh_demo_init.h

@@ -1,18 +0,0 @@
-/*
-   This example code is in the Public Domain (or CC0 licensed, at your option.)
-
-   Unless required by applicable law or agreed to in writing, this
-   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-   CONDITIONS OF ANY KIND, either express or implied.
-*/
-
-#ifndef _BLE_MESH_DEMO_INIT_H_
-#define _BLE_MESH_DEMO_INIT_H_
-
-#define TAG "Client"
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid);
-
-esp_err_t bluetooth_init(void);
-
-#endif

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/ble_mesh_demo_main.c → examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/main.c

@@ -19,7 +19,7 @@
 #include "esp_ble_mesh_networking_api.h"
 #include "esp_ble_mesh_config_model_api.h"
 
-#include "ble_mesh_demo_init.h"
+#include "ble_mesh_example_init.h"
 #include "board.h"
 
 #define CID_ESP             0x02E5

+ 2 - 0
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/CMakeLists.txt

@@ -2,6 +2,8 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/example_init)
+
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(SUPPORTED_TARGETS esp32)
 project(vendor_server)

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/Makefile

@@ -5,6 +5,6 @@
 
 PROJECT_NAME := vendor_server
 
-COMPONENT_ADD_INCLUDEDIRS := components/include
+EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/example_init
 
 include $(IDF_PATH)/make/project.mk

+ 1 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/CMakeLists.txt

@@ -1,5 +1,4 @@
-set(COMPONENT_SRCS "ble_mesh_demo_main.c"
-                   "ble_mesh_demo_init.c"
+set(COMPONENT_SRCS "main.c"
                    "board.c")
 
 set(COMPONENT_ADD_INCLUDEDIRS ".")

+ 0 - 153
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/ble_mesh_demo_init.c

@@ -1,153 +0,0 @@
-
-/*
- * Copyright (c) 2017 Intel Corporation
- * Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sdkconfig.h>
-/* BLE */
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-#include "esp_bt.h"
-#include "esp_bt_main.h"
-#include "esp_bt_device.h"
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-#include "esp_nimble_hci.h"
-#include "nimble/nimble_port.h"
-#include "nimble/nimble_port_freertos.h"
-#include "host/ble_hs.h"
-#include "host/util/util.h"
-#include "console/console.h"
-#endif
-
-#include "esp_ble_mesh_defs.h"
-#include "ble_mesh_demo_init.h"
-#include "esp_ble_mesh_common_api.h"
-
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    if (dev_uuid == NULL) {
-        ESP_LOGE(TAG, "%s, Invalid device uuid", __func__);
-        return;
-    }
-
-    /* Copy device address to the device uuid with offset equals to 2 here.
-     * The first two bytes is used for matching device uuid by Provisioner.
-     * And using device address here is to avoid using the same device uuid
-     * by different unprovisioned devices.
-     */
-    memcpy(dev_uuid + 2, esp_bt_dev_get_address(), BD_ADDR_LEN);
-}
-
-esp_err_t bluetooth_init(void)
-{
-    esp_err_t ret;
-
-
-    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
-
-    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
-    ret = esp_bt_controller_init(&bt_cfg);
-    if (ret) {
-        ESP_LOGE(TAG, "%s initialize controller failed", __func__);
-        return ret;
-    }
-
-    ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable controller failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_init();
-    if (ret) {
-        ESP_LOGE(TAG, "%s init bluetooth failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_enable();
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable bluetooth failed", __func__);
-        return ret;
-    }
-
-    return ret;
-}
-
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-static SemaphoreHandle_t mesh_sem;
-static uint8_t own_addr_type;
-void ble_store_config_init(void);
-static uint8_t addr_val[BD_ADDR_LEN] = {0};
-    
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, addr_val, BD_ADDR_LEN);
-}
-
-static void mesh_on_reset(int reason)
-{
-    ESP_LOGI(TAG, "Resetting state; reason=%d", reason);
-}
-
-static void mesh_on_sync(void)
-{
-    int rc;
-
-    rc = ble_hs_util_ensure_addr(0);
-    assert(rc == 0);
-
-    /* Figure out address to use while advertising (no privacy for now) */
-    rc = ble_hs_id_infer_auto(0, &own_addr_type);
-    if (rc != 0) {
-        ESP_LOGI(TAG, "error determining address type; rc=%d", rc);
-        return;
-    }
-
-    rc = ble_hs_id_copy_addr(own_addr_type, addr_val, NULL);
-
-    xSemaphoreGive(mesh_sem);
-}
-
-void mesh_host_task(void *param)
-{
-    ESP_LOGI(TAG, "BLE Host Task Started");
-    /* This function will return only when nimble_port_stop() is executed */
-    nimble_port_run();
-
-    nimble_port_freertos_deinit();
-}
-
-esp_err_t bluetooth_init(void)
-{
-    mesh_sem = xSemaphoreCreateBinary();
-    if (mesh_sem == NULL) {
-        ESP_LOGE(TAG, "Failed to create mesh semaphore");
-        return ESP_FAIL;
-    }
-
-    ESP_ERROR_CHECK(esp_nimble_hci_and_controller_init());
-
-    nimble_port_init();
-    /* Initialize the NimBLE host configuration. */
-    ble_hs_cfg.reset_cb = mesh_on_reset;
-    ble_hs_cfg.sync_cb = mesh_on_sync;
-    ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
-
-    /* XXX Need to have template for store */
-    ble_store_config_init();
-
-    nimble_port_freertos_init(mesh_host_task);
-
-    xSemaphoreTake(mesh_sem, portMAX_DELAY);
-
-    return ESP_OK;
-}
-#endif

+ 0 - 18
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/ble_mesh_demo_init.h

@@ -1,18 +0,0 @@
-/*
-   This example code is in the Public Domain (or CC0 licensed, at your option.)
-
-   Unless required by applicable law or agreed to in writing, this
-   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-   CONDITIONS OF ANY KIND, either express or implied.
-*/
-
-#ifndef _BLE_MESH_DEMO_INIT_H_
-#define _BLE_MESH_DEMO_INIT_H_
-
-#define TAG "Server"
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid);
-
-esp_err_t bluetooth_init(void);
-
-#endif

+ 1 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/ble_mesh_demo_main.c → examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/main.c

@@ -22,7 +22,7 @@
 #include "esp_ble_mesh_local_data_operation_api.h"
 
 #include "board.h"
-#include "ble_mesh_demo_init.h"
+#include "ble_mesh_example_init.h"
 
 #define CID_ESP     0x02E5
 #define CID_NVAL    0xFFFF

+ 2 - 1
examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/CMakeLists.txt

@@ -2,7 +2,8 @@
 # in this exact order for cmake to work correctly
 cmake_minimum_required(VERSION 3.5)
 
-set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_vendor_models/fast_prov_vendor_model/components)
+set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/example_init
+                         $ENV{IDF_PATH}/examples/bluetooth/esp_ble_mesh/common_components/fast_provisioning)
 
 include($ENV{IDF_PATH}/tools/cmake/project.cmake)
 set(SUPPORTED_TARGETS esp32)

+ 2 - 3
examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/Makefile

@@ -5,8 +5,7 @@
 
 PROJECT_NAME := ble_mesh_wifi_coexist
 
-COMPONENT_ADD_INCLUDEDIRS := components/include
-
-EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_vendor_models/fast_prov_vendor_model/components
+EXTRA_COMPONENT_DIRS := $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/example_init \
+                        $(IDF_PATH)/examples/bluetooth/esp_ble_mesh/common_components/fast_provisioning
 
 include $(IDF_PATH)/make/project.mk

+ 1 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/main/CMakeLists.txt

@@ -1,5 +1,4 @@
-set(COMPONENT_SRCS "ble_mesh_demo_main.c"
-                   "ble_mesh_demo_init.c"
+set(COMPONENT_SRCS "main.c"
                    "board.c")
 
 set(COMPONENT_ADD_INCLUDEDIRS ".")

+ 0 - 143
examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/main/ble_mesh_demo_init.c

@@ -1,143 +0,0 @@
-
-/*
- * Copyright (c) 2017 Intel Corporation
- * Additional Copyright (c) 2018 Espressif Systems (Shanghai) PTE LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sdkconfig.h>
-/* BLE */
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-#include "esp_bt.h"
-#include "esp_bt_main.h"
-#include "esp_bt_device.h"
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-#include "esp_nimble_hci.h"
-#include "nimble/nimble_port.h"
-#include "nimble/nimble_port_freertos.h"
-#include "host/ble_hs.h"
-#include "host/util/util.h"
-#include "console/console.h"
-#endif
-
-#include "esp_ble_mesh_defs.h"
-#include "ble_mesh_demo_init.h"
-#include "esp_ble_mesh_common_api.h"
-
-#ifdef CONFIG_BT_BLUEDROID_ENABLED
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, esp_bt_dev_get_address(), BD_ADDR_LEN);
-}
-
-esp_err_t bluetooth_init(void)
-{
-    esp_err_t ret;
-
-
-    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
-
-    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
-    ret = esp_bt_controller_init(&bt_cfg);
-    if (ret) {
-        ESP_LOGE(TAG, "%s initialize controller failed", __func__);
-        return ret;
-    }
-
-    ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable controller failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_init();
-    if (ret) {
-        ESP_LOGE(TAG, "%s init bluetooth failed", __func__);
-        return ret;
-    }
-    ret = esp_bluedroid_enable();
-    if (ret) {
-        ESP_LOGE(TAG, "%s enable bluetooth failed", __func__);
-        return ret;
-    }
-
-    return ret;
-}
-
-#endif
-
-#ifdef CONFIG_BT_NIMBLE_ENABLED
-static SemaphoreHandle_t mesh_sem;
-static uint8_t own_addr_type;
-void ble_store_config_init(void);
-static uint8_t addr_val[6] = {0};
-    
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid)
-{
-    memcpy(dev_uuid + 2, addr_val, BD_ADDR_LEN);
-}
-
-static void mesh_on_reset(int reason)
-{
-    ESP_LOGI(TAG, "Resetting state; reason=%d", reason);
-}
-
-static void mesh_on_sync(void)
-{
-    int rc;
-
-    rc = ble_hs_util_ensure_addr(0);
-    assert(rc == 0);
-
-    /* Figure out address to use while advertising (no privacy for now) */
-    rc = ble_hs_id_infer_auto(0, &own_addr_type);
-    if (rc != 0) {
-        ESP_LOGI(TAG, "error determining address type; rc=%d", rc);
-        return;
-    }
-
-    rc = ble_hs_id_copy_addr(own_addr_type, addr_val, NULL);
-
-    xSemaphoreGive(mesh_sem);
-}
-
-void mesh_host_task(void *param)
-{
-    ESP_LOGI(TAG, "BLE Host Task Started");
-    /* This function will return only when nimble_port_stop() is executed */
-    nimble_port_run();
-
-    nimble_port_freertos_deinit();
-}
-
-esp_err_t bluetooth_init(void)
-{
-    mesh_sem = xSemaphoreCreateBinary();
-    if (mesh_sem == NULL) {
-        ESP_LOGE(TAG, "Failed to create mesh semaphore");
-        return ESP_FAIL;
-    }
-
-    ESP_ERROR_CHECK(esp_nimble_hci_and_controller_init());
-
-    nimble_port_init();
-    /* Initialize the NimBLE host configuration. */
-    ble_hs_cfg.reset_cb = mesh_on_reset;
-    ble_hs_cfg.sync_cb = mesh_on_sync;
-    ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
-
-    /* XXX Need to have template for store */
-    ble_store_config_init();
-
-    nimble_port_freertos_init(mesh_host_task);
-
-    xSemaphoreTake(mesh_sem, portMAX_DELAY);
-
-    return ESP_OK;
-}
-#endif

+ 0 - 18
examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/main/ble_mesh_demo_init.h

@@ -1,18 +0,0 @@
-/*
-   This example code is in the Public Domain (or CC0 licensed, at your option.)
-
-   Unless required by applicable law or agreed to in writing, this
-   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-   CONDITIONS OF ANY KIND, either express or implied.
-*/
-
-#ifndef _BLE_MESH_DEMO_INIT_H_
-#define _BLE_MESH_DEMO_INIT_H_
-
-#define TAG "BLE_MESH_WIFI_COEXIST_DEMO"
-
-void ble_mesh_get_dev_uuid(uint8_t *dev_uuid);
-
-esp_err_t bluetooth_init(void);
-
-#endif

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff