mirror of
https://github.com/h2zero/esp-nimble-cpp.git
synced 2025-02-23 06:28:54 +01:00
feat(Device): Implement store status handler
This commit is contained in:
parent
052c0a0455
commit
b29919df96
2 changed files with 40 additions and 1 deletions
|
@ -76,6 +76,8 @@ extern "C" void ble_store_config_init(void);
|
||||||
/**
|
/**
|
||||||
* Singletons for the NimBLEDevice.
|
* Singletons for the NimBLEDevice.
|
||||||
*/
|
*/
|
||||||
|
NimBLEDeviceCallbacks* NimBLEDevice::m_pDeviceCallbacks = nullptr;
|
||||||
|
|
||||||
# if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER)
|
# if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER)
|
||||||
NimBLEScan* NimBLEDevice::m_pScan = nullptr;
|
NimBLEScan* NimBLEDevice::m_pScan = nullptr;
|
||||||
# endif
|
# endif
|
||||||
|
@ -900,7 +902,9 @@ bool NimBLEDevice::init(const std::string& deviceName) {
|
||||||
// Setup callbacks for host events
|
// Setup callbacks for host events
|
||||||
ble_hs_cfg.reset_cb = NimBLEDevice::onReset;
|
ble_hs_cfg.reset_cb = NimBLEDevice::onReset;
|
||||||
ble_hs_cfg.sync_cb = NimBLEDevice::onSync;
|
ble_hs_cfg.sync_cb = NimBLEDevice::onSync;
|
||||||
ble_hs_cfg.store_status_cb = ble_store_util_status_rr; /*TODO: Implement handler for this*/
|
ble_hs_cfg.store_status_cb = [](struct ble_store_status_event* event, void* arg) {
|
||||||
|
return m_pDeviceCallbacks->onStoreStatus(event, arg);
|
||||||
|
};
|
||||||
|
|
||||||
// Set initial security capabilities
|
// Set initial security capabilities
|
||||||
ble_hs_cfg.sm_io_cap = BLE_HS_IO_NO_INPUT_OUTPUT;
|
ble_hs_cfg.sm_io_cap = BLE_HS_IO_NO_INPUT_OUTPUT;
|
||||||
|
@ -1262,4 +1266,13 @@ void nimble_cpp_assert(const char* file, unsigned line) {
|
||||||
}
|
}
|
||||||
# endif // CONFIG_NIMBLE_CPP_DEBUG_ASSERT_ENABLED
|
# endif // CONFIG_NIMBLE_CPP_DEBUG_ASSERT_ENABLED
|
||||||
|
|
||||||
|
void NimBLEDevice::setDeviceCallbacks(NimBLEDeviceCallbacks* cb) {
|
||||||
|
m_pDeviceCallbacks = cb ? cb : &defaultDeviceCallbacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
int NimBLEDeviceCallbacks::onStoreStatus(struct ble_store_status_event* event, void* arg) {
|
||||||
|
NIMBLE_LOGD("NimBLEDeviceCallbacks", "onStoreStatus: default");
|
||||||
|
return ble_store_util_status_rr(event, arg);
|
||||||
|
}
|
||||||
|
|
||||||
#endif // CONFIG_BT_ENABLED
|
#endif // CONFIG_BT_ENABLED
|
||||||
|
|
|
@ -66,6 +66,7 @@ class NimBLEConnInfo;
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
class NimBLEAddress;
|
class NimBLEAddress;
|
||||||
|
class NimBLEDeviceCallbacks;
|
||||||
|
|
||||||
# define BLEDevice NimBLEDevice
|
# define BLEDevice NimBLEDevice
|
||||||
# define BLEClient NimBLEClient
|
# define BLEClient NimBLEClient
|
||||||
|
@ -129,6 +130,7 @@ class NimBLEDevice {
|
||||||
static bool setOwnAddrType(uint8_t type);
|
static bool setOwnAddrType(uint8_t type);
|
||||||
static bool setOwnAddr(const NimBLEAddress& addr);
|
static bool setOwnAddr(const NimBLEAddress& addr);
|
||||||
static bool setOwnAddr(const uint8_t* addr);
|
static bool setOwnAddr(const uint8_t* addr);
|
||||||
|
static void setDeviceCallbacks(NimBLEDeviceCallbacks* cb);
|
||||||
static void setScanDuplicateCacheSize(uint16_t cacheSize);
|
static void setScanDuplicateCacheSize(uint16_t cacheSize);
|
||||||
static void setScanFilterMode(uint8_t type);
|
static void setScanFilterMode(uint8_t type);
|
||||||
static bool setCustomGapHandler(gap_event_handler handler);
|
static bool setCustomGapHandler(gap_event_handler handler);
|
||||||
|
@ -213,6 +215,8 @@ class NimBLEDevice {
|
||||||
static ble_gap_event_listener m_listener;
|
static ble_gap_event_listener m_listener;
|
||||||
static uint8_t m_ownAddrType;
|
static uint8_t m_ownAddrType;
|
||||||
static std::vector<NimBLEAddress> m_whiteList;
|
static std::vector<NimBLEAddress> m_whiteList;
|
||||||
|
static NimBLEDeviceCallbacks* m_pDeviceCallbacks;
|
||||||
|
static NimBLEDeviceCallbacks defaultDeviceCallbacks;
|
||||||
|
|
||||||
# if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER)
|
# if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER)
|
||||||
static NimBLEScan* m_pScan;
|
static NimBLEScan* m_pScan;
|
||||||
|
@ -295,5 +299,27 @@ class NimBLEDevice {
|
||||||
|
|
||||||
# include "NimBLEUtils.h"
|
# include "NimBLEUtils.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Callbacks associated with a BLE device.
|
||||||
|
*/
|
||||||
|
class NimBLEDeviceCallbacks {
|
||||||
|
public:
|
||||||
|
virtual ~NimBLEDeviceCallbacks() {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Indicates an inability to perform a store operation.
|
||||||
|
* This callback should do one of two things:
|
||||||
|
* -Address the problem and return 0, indicating that the store operation
|
||||||
|
* should proceed.
|
||||||
|
* -Return nonzero to indicate that the store operation should be aborted.
|
||||||
|
* @param event Describes the store event being reported.
|
||||||
|
* BLE_STORE_EVENT_FULL; or
|
||||||
|
* BLE_STORE_EVENT_OVERFLOW
|
||||||
|
* @return 0 if the store operation should proceed;
|
||||||
|
* nonzero if the store operation should be aborted.
|
||||||
|
*/
|
||||||
|
virtual int onStoreStatus(struct ble_store_status_event* event, void* arg);
|
||||||
|
};
|
||||||
|
|
||||||
#endif // CONFIG_BT_ENABLED
|
#endif // CONFIG_BT_ENABLED
|
||||||
#endif // NIMBLE_CPP_DEVICE_H_
|
#endif // NIMBLE_CPP_DEVICE_H_
|
||||||
|
|
Loading…
Add table
Reference in a new issue