BLE-Gamepad-Client 0.3.2
Loading...
Searching...
No Matches
BLEControllerRegistry.h
1#pragma once
2
3#include <NimBLEDevice.h>
4#include <deque>
5#include <list>
6#include <map>
7#include "BLEController.h"
8#include "BLEControllerAdapter.h"
9#include "BLEControllerInternal.h"
10
11#define CTRL_ADAPTER_MATCH_TYPE uint64_t
12#define MAX_CTRL_ADAPTER_COUNT sizeof(CTRL_ADAPTER_MATCH_TYPE)
13
14enum BLEClientStatusMsgKind : uint8_t {
15 BLEClientConnected = 0,
16 BLEClientDisconnected = 1
17};
18
20 NimBLEAddress address;
21 BLEClientStatusMsgKind kind;
22
23 explicit operator std::string() const;
24};
25
27 public:
28 static bool init();
29 static bool deinit();
30 static bool isInitialized();
31 static void enableAutoScan();
32 static void disableAutoScan();
33 static bool isAutoScanEnabled();
34 static void deleteBonds();
35 static bool addControllerAdapter(const BLEControllerAdapter& adapter);
36
37 friend class BLEClientCallbacksImpl;
38 friend class BLEScanCallbacksImpl;
39 friend class BLEController;
40
41 private:
42 static BLEControllerInternal* _createController(NimBLEAddress allowedAddress);
43 static BLEControllerInternal* _getController(NimBLEAddress address);
44 static bool _reserveController(NimBLEAddress address);
45 static bool _releaseController(NimBLEAddress address);
46 static void _clientStatusConsumerFn(void* pvParameters);
47 static void _autoScanCheck();
48 static bool _initialized;
49 static bool _autoScanEnabled;
50 static bool _deleteBonds;
51 static QueueHandle_t _clientStatusQueue;
52 static TaskHandle_t _clientStatusConsumerTask;
53 static SemaphoreHandle_t _connectionSlots;
54 static std::map<NimBLEAddress, CTRL_ADAPTER_MATCH_TYPE> _adapterMatch;
55 static std::list<BLEControllerInternal> _controllers;
56 static std::deque<BLEControllerAdapter> _adapters;
57};
Definition BLEControllerInternal.h:15
Definition BLEControllerRegistry.h:26
static void disableAutoScan()
Disables the auto-scan feature.
Definition BLEControllerRegistry.cpp:137
static bool isAutoScanEnabled()
Checks whether the auto-scan feature is enabled.
Definition BLEControllerRegistry.cpp:151
static void enableAutoScan()
Enables the auto-scan feature.
Definition BLEControllerRegistry.cpp:125
static bool addControllerAdapter(const BLEControllerAdapter &adapter)
Registers an adapter for a new controller type. Adapter is used to set up a connection and to decode ...
Definition BLEControllerRegistry.cpp:170
static void deleteBonds()
Deletes all stored bonding information.
Definition BLEControllerRegistry.cpp:158
static bool init()
Initializes a BLEControllerRegistry.
Definition BLEControllerRegistry.cpp:27
static bool isInitialized()
Checks if BLEControllerRegistry is initialized.
Definition BLEControllerRegistry.cpp:114
static bool deinit()
Deinitializes a BLEControllerRegistry.
Definition BLEControllerRegistry.cpp:68
Definition BLEControllerRegistry.h:19
Definition BLEControllerAdapter.h:14