#pragma once #ifdef ESP_PLATFORM #include "sdkconfig.h" #else #include "ext_nimble_config.h" #endif #include "nimconfig_rename.h" /*********************************************** * Arduino user-config options start here **********************************************/ /** @brief Un-comment to change the number of simultaneous connections (esp controller max is 9) */ // #define CONFIG_BT_NIMBLE_MAX_CONNECTIONS 3 /** @brief Un-comment to enable storing the timestamp when an attribute value is updated\n * This allows for checking the last update time using getTimeStamp() or getValue(time_t*)\n * If disabled, the timestamp returned from these functions will be 0.\n * Disabling timestamps will reduce the memory used for each value.\n * 1 = Enabled, 0 = Disabled; Default = Disabled */ // #define CONFIG_NIMBLE_CPP_ATT_VALUE_TIMESTAMP_ENABLED 0 /** @brief Uncomment to set the default allocation size (bytes) for each attribute if\n * not specified when the constructor is called. This is also the size used when a remote\n * characteristic or descriptor is constructed before a value is read/notified.\n * Increasing this will reduce reallocations but increase memory footprint.\n * Default value is 20. Range: 1 : 512 (BLE_ATT_ATTR_MAX_LEN) */ // #define CONFIG_NIMBLE_CPP_ATT_VALUE_INIT_LENGTH 20 /**************************************************** * Extended advertising settings * * For use with ESP32C3, ESP32S3, ESP32H2 ONLY! * ***************************************************/ /** @brief Un-comment to enable extended advertising */ // #define CONFIG_BT_NIMBLE_EXT_ADV 1 /** @brief Un-comment to set the max number of extended advertising instances (Range: 0 - 4) */ // #define CONFIG_BT_NIMBLE_MAX_EXT_ADV_INSTANCES 1 /** @brief Un-comment to set the max extended advertising data size (Range: 31 - 1650) */ // #define CONFIG_BT_NIMBLE_MAX_EXT_ADV_DATA_LEN 251 /** @brief Un-comment to enable periodic advertising */ // #define CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV 1 /** @brief Un-comment to change the maximum number of periodically synced devices */ // #define CONFIG_BT_NIMBLE_MAX_PERIODIC_SYNCS 1 /**************************************************** * END For use with ESP32C3, ESP32S3, ESP32H2 ONLY! * ***************************************************/ /** @brief Un-comment to change the default MTU size */ // #define CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU 255 /** @brief Un-comment to change default device name */ // #define CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME "nimble" /** @brief Un-comment to set the debug log messages level from the NimBLE host stack.\n * Values: 0 = DEBUG, 1 = INFO, 2 = WARNING, 3 = ERROR, 4 = CRITICAL, 5+ = NONE\n * Uses approx. 32kB of flash memory. */ // #define CONFIG_BT_NIMBLE_LOG_LEVEL 5 /** @brief Un-comment to set the debug log messages level from the NimBLE CPP Wrapper.\n * Values: 0 = NONE, 1 = ERROR, 2 = WARNING, 3 = INFO, 4+ = DEBUG\n * Uses approx. 32kB of flash memory. */ // #define CONFIG_NIMBLE_CPP_LOG_LEVEL 0 /** @brief Un-comment to see NimBLE host return codes as text debug log messages. * Uses approx. 7kB of flash memory. */ // #define CONFIG_NIMBLE_CPP_ENABLE_RETURN_CODE_TEXT /** @brief Un-comment to see GAP event codes as text in debug log messages. * Uses approx. 1kB of flash memory. */ // #define CONFIG_NIMBLE_CPP_ENABLE_GAP_EVENT_CODE_TEXT /** @brief Un-comment to see advertisement types as text while scanning in debug log messages. * Uses approx. 250 bytes of flash memory. */ // #define CONFIG_NIMBLE_CPP_ENABLE_ADVERTISEMENT_TYPE_TEXT /** @brief Un-comment to change the default GAP appearance */ // #define CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE 0x0 /** @brief Un-comment if not using NimBLE Client functions \n * Reduces flash size by approx. 7kB. */ // #define CONFIG_BT_NIMBLE_ROLE_CENTRAL_DISABLED /** @brief Un-comment if not using NimBLE Scan functions \n * Reduces flash size by approx. 26kB. */ // #define CONFIG_BT_NIMBLE_ROLE_OBSERVER_DISABLED /** @brief Un-comment if not using NimBLE Server functions \n * Reduces flash size by approx. 16kB. */ // #define CONFIG_BT_NIMBLE_ROLE_PERIPHERAL_DISABLED /** @brief Un-comment if not using NimBLE Advertising functions \n * Reduces flash size by approx. 5kB. */ // #define CONFIG_BT_NIMBLE_ROLE_BROADCASTER_DISABLED /** @brief Un-comment to change the number of devices allowed to store/bond with */ // #define CONFIG_BT_NIMBLE_MAX_BONDS 3 /** @brief Un-comment to change the maximum number of CCCD subscriptions to store */ // #define CONFIG_BT_NIMBLE_MAX_CCCDS 8 /** @brief Un-comment to change the random address refresh time (in seconds) */ // #define CONFIG_BT_NIMBLE_RPA_TIMEOUT 900 /** * @brief Un-comment to change the number of MSYS buffers available. * @details MSYS is a system level mbuf registry. For prepare write & prepare \n * responses MBUFs are allocated out of msys_1 pool. This may need to be increased if\n * you are sending large blocks of data with a low MTU. E.g: 512 bytes with 23 MTU will fail. */ // #define CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT 12 /** @brief Un-comment to use external PSRAM for the NimBLE host */ // #define CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL 1 /** @brief Un-comment to change the core NimBLE host runs on */ // #define CONFIG_BT_NIMBLE_PINNED_TO_CORE 0 /** @brief Un-comment to change the stack size for the NimBLE host task */ // #define CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE 4096 /** * @brief Un-comment to use memory pools for stack operations * @details this will use slightly more RAM but may provide more stability. */ // #define CONFIG_NIMBLE_STACK_USE_MEM_POOLS 1 /********************************** End Arduino user-config **********************************/ #ifndef CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE #define CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE 4096 #endif #ifndef CONFIG_BT_NIMBLE_ROLE_CENTRAL // means for Tasmota: nimble was already embedded into the Arduino framework /* This section should not be altered */ #ifndef CONFIG_BT_NIMBLE_ROLE_CENTRAL_DISABLED #define CONFIG_BT_NIMBLE_ROLE_CENTRAL #endif #ifndef CONFIG_BT_NIMBLE_ROLE_OBSERVER_DISABLED #define CONFIG_BT_NIMBLE_ROLE_OBSERVER #endif #ifndef CONFIG_BT_NIMBLE_ROLE_PERIPHERAL_DISABLED #define CONFIG_BT_NIMBLE_ROLE_PERIPHERAL #endif #ifndef CONFIG_BT_NIMBLE_ROLE_BROADCASTER_DISABLED #define CONFIG_BT_NIMBLE_ROLE_BROADCASTER #endif #ifndef CONFIG_BT_NIMBLE_PINNED_TO_CORE #define CONFIG_BT_NIMBLE_PINNED_TO_CORE 0 #endif #ifndef CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL #define CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL 1 #endif #ifndef CONFIG_BT_NIMBLE_MAX_CONNECTIONS #define CONFIG_BT_NIMBLE_MAX_CONNECTIONS 3 #endif #ifndef CONFIG_BT_NIMBLE_MAX_BONDS #define CONFIG_BT_NIMBLE_MAX_BONDS 3 #endif #ifndef CONFIG_BT_NIMBLE_MAX_CCCDS #define CONFIG_BT_NIMBLE_MAX_CCCDS 8 #endif #ifndef CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME #define CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME "nimble" #endif #ifndef CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU #define CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU 255 #endif #ifndef CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE #define CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE 0x0 #endif #ifndef CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT #define CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT 12 #endif #ifndef CONFIG_BT_NIMBLE_RPA_TIMEOUT #define CONFIG_BT_NIMBLE_RPA_TIMEOUT 900 #endif #ifndef CONFIG_BT_NIMBLE_LOG_LEVEL #define CONFIG_BT_NIMBLE_LOG_LEVEL 5 #endif #ifndef CONFIG_NIMBLE_STACK_USE_MEM_POOLS #define CONFIG_NIMBLE_STACK_USE_MEM_POOLS 0 #endif /** @brief Set if CCCD's and bond data should be stored in NVS */ #define CONFIG_BT_NIMBLE_NVS_PERSIST 0 /** @brief Allow legacy paring */ #define CONFIG_BT_NIMBLE_SM_LEGACY 1 /** @brief Allow BLE secure connections */ #define CONFIG_BT_NIMBLE_SM_SC 1 /** @brief Max device name length (bytes) */ #define CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN 31 /** @brief ACL Buffer count */ #define CONFIG_BT_NIMBLE_ACL_BUF_COUNT 12 /** @brief ACL Buffer size */ #define CONFIG_BT_NIMBLE_ACL_BUF_SIZE 255 /** @brief HCI Event Buffer size */ #if CONFIG_BT_NIMBLE_EXT_ADV || CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV # define CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE 257 #else # define CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE 70 #endif /** @brief Number of high priority HCI event buffers */ #define CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT 30 /** @brief Number of low priority HCI event buffers */ #define CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT 8 /** @brief Maximum number of connection oriented channels */ #define CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM 0 #define CONFIG_BT_NIMBLE_HS_FLOW_CTRL 1 #define CONFIG_BT_NIMBLE_HS_FLOW_CTRL_ITVL 1000 #define CONFIG_BT_NIMBLE_HS_FLOW_CTRL_THRESH 2 #define CONFIG_BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT 1 #define CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS 2000 #ifndef CONFIG_BT_ENABLED #define CONFIG_BT_ENABLED #endif #ifndef CONFIG_BT_NIMBLE_ENABLED #define CONFIG_BT_NIMBLE_ENABLED 1 #endif #ifdef ESP_PLATFORM #ifndef CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY #define CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY #endif #ifndef CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE #define CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE 0 #endif #ifndef CONFIG_BTDM_SCAN_DUPL_TYPE_DATA #define CONFIG_BTDM_SCAN_DUPL_TYPE_DATA 1 #endif #ifndef CONFIG_BTDM_SCAN_DUPL_TYPE_DATA_DEVICE #define CONFIG_BTDM_SCAN_DUPL_TYPE_DATA_DEVICE 2 #endif #if !defined(CONFIG_IDF_TARGET_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32S3) #define CONFIG_IDF_TARGET_ESP32 1 #endif #if CONFIG_BT_NIMBLE_EXT_ADV || CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV # if defined(CONFIG_IDF_TARGET_ESP32) # error Extended advertising is not supported on ESP32. # endif #endif #endif #if CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV && !CONFIG_BT_NIMBLE_EXT_ADV # error Extended advertising must be enabled to use periodic advertising. #endif /* Must have max instances and data length set if extended advertising is enabled */ #if CONFIG_BT_NIMBLE_EXT_ADV # if !defined(CONFIG_BT_NIMBLE_MAX_EXT_ADV_INSTANCES) # define CONFIG_BT_NIMBLE_MAX_EXT_ADV_INSTANCES 1 # endif # if !defined(CONFIG_BT_NIMBLE_MAX_EXT_ADV_DATA_LEN) # define CONFIG_BT_NIMBLE_MAX_EXT_ADV_DATA_LEN 251 # endif #endif /* Must set max number of syncs if periodic advertising is enabled */ #if CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV && !defined(CONFIG_BT_NIMBLE_MAX_PERIODIC_SYNCS) # define CONFIG_BT_NIMBLE_MAX_PERIODIC_SYNCS 1 #endif /* Cannot use client without scan */ #if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) && !defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) #define CONFIG_BT_NIMBLE_ROLE_OBSERVER #endif /* Cannot use server without advertise */ #if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) && !defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER) #define CONFIG_BT_NIMBLE_ROLE_BROADCASTER #endif #endif //CONFIG_BT_NIMBLE_ROLE_CENTRAL /* Enables the use of Arduino String class for attribute values */ #if defined __has_include # if __has_include () # define NIMBLE_CPP_ARDUINO_STRING_AVAILABLE # endif #endif