BLE-Gamepad-Client 0.3.2
Loading...
Searching...
No Matches
BLEOutgoingSignal.h
1#pragma once
2
3#include <NimBLEDevice.h>
4#include "BLEOutgoingSignalAdapter.h"
5#include "BLEVibrationsCommand.h"
6
7template <typename T>
8class BLEOutgoingSignal {
9 public:
10 struct Store {
11 uint8_t* pBuffer{};
12 uint8_t* pSendBuffer{};
13 size_t used{};
14 size_t capacity{};
15 };
16 BLEOutgoingSignal();
17 ~BLEOutgoingSignal() = default;
18 bool init(NimBLEAddress address, BLEOutgoingSignalAdapter<T>& adapter);
19 bool deinit(bool disconnected);
20 bool isInitialized() const;
21 void write(const T& value);
22
23 private:
24 static void _sendDataFn(void* pvParameters);
25 bool _initialized;
26 BLESignalEncoder<T> _encoder;
27 NimBLEAddress _address;
28 NimBLERemoteCharacteristic* _pChar;
29 TaskHandle_t _sendDataTask;
30 SemaphoreHandle_t _storeMutex;
31 Store _store;
32};
33
35
36using BLEVibrationsSignal = BLEOutgoingSignal<BLEVibrationsCommand>;
Definition BLEOutgoingSignal.h:8
Definition BLEOutgoingSignalAdapter.h:12
Definition BLEOutgoingSignal.h:10