#include <MIDI_Interfaces/BLEMIDI/ESP32Backend.hpp>
template<class Impl>
class ESP32BLEBackend< Impl >
ESP32 backend intended to be plugged into GenericBLEMIDI_Interface.
Impl
can be used to select different low-level BLE stacks.
Definition at line 23 of file ESP32Backend.hpp.
|
bool | popMessage (IncomingMIDIMessage &incomingMessage) |
|
void | begin (BLESettings ble_settings) |
|
void | end () |
|
bool | isConnected () const |
|
ProtectedBuilder | acquirePacket () |
| Acquire exclusive access to the buffer to be sent by the timer.
|
|
void | forceMinMTU (uint16_t mtu) |
| Force the MTU to an artificially small value (used for testing).
|
|
uint16_t | getMinMTU () const |
| Get the minimum MTU of all connected clients.
|
|
void | releasePacketAndNotify (ProtectedBuilder &lck) |
| Release exclusive access to the buffer and notify the sender thread that data is available.
|
|
void | sendNow (ProtectedBuilder &lck) |
| Sends the data immediately without waiting for the timeout.
|
|
void | setTimeout (std::chrono::milliseconds timeout) |
| Set the timeout, the number of milliseconds to buffer the outgoing MIDI messages.
|
|
|
using | lock_t |
| Lock type used to lock the mutex.
|
|
|
void | begin () |
| Start the background thread.
|
|
void | updateMTU (uint16_t mtu) |
| Set the maximum transmission unit of the Bluetooth link.
|
|
bool | handleSendEvents () |
| Function that waits for BLE packets and sends them in the background.
|
|
|
BufferedBLEMIDIParser< 4096, AtomicSize > | parser |
| Contains incoming BLE MIDI data to be parsed.
|
|
BLEMIDIPacketBuilder | packet |
| View of the data to send.
|
|
bool | stop |
| Flag to stop the background thread.
|
|
bool | flush |
| Flag to tell the sender thread to send the packet immediately.
|
|
std::chrono::milliseconds | timeout |
| Timeout before the sender thread sends a packet.
|
|
std::mutex | mtx |
| Lock to protect all shared data in this struct.
|
|
struct { | |
|
BLEMIDIPacketBuilder packet | |
| View of the data to send. More...
|
|
bool stop = false | |
| Flag to stop the background thread. More...
|
|
bool flush = false | |
| Flag to tell the sender thread to send the packet immediately. More...
|
|
std::chrono::milliseconds timeout {10} | |
| Timeout before the sender thread sends a packet. More...
|
|
std::mutex mtx | |
| Lock to protect all shared data in this struct. More...
|
|
} | shared | |
|
std::condition_variable | cv |
| Condition variable used by the background sender thread to wait for data to send, and for the main thread to wait for the data to be flushed by the sender thread.
|
|
std::thread | send_thread |
| The background thread responsible for sending the data.
|
|
std::atomic_uint_fast16_t | min_mtu |
| The minimum MTU of all connected clients.
|
|
std::atomic_uint_fast16_t | force_min_mtu |
| Override the minimum MTU (0 means don't override, nonzero overrides if it's smaller than the minimum MTU of the clients).
|
|
◆ Sender
◆ IncomingMIDIMessage
◆ lock_t
◆ sendData()
◆ handleConnect()
template<class Impl >
|
inlineoverrideprotectedvirtual |
◆ handleDisconnect()
template<class Impl >
|
inlineoverrideprotectedvirtual |
◆ handleMTU()
template<class Impl >
|
inlineoverrideprotectedvirtual |
◆ handleSubscribe()
template<class Impl >
|
inlineoverrideprotectedvirtual |
Called by the BLE stack when the central subscribes to receive notifications for the MIDI GATT characteristic.
Implements MIDIBLEInstance.
Definition at line 57 of file ESP32Backend.hpp.
◆ handleData()
template<class Impl >
|
inlineoverrideprotectedvirtual |
◆ popMessage()
◆ begin() [1/2]
◆ end()
◆ isConnected()
template<class Impl >
bool isConnected |
( |
| ) |
const |
|
inline |
◆ acquirePacket()
template<class Impl >
ProtectedBuilder acquirePacket |
( |
| ) |
|
Acquire exclusive access to the buffer to be sent by the timer.
- Returns
- A RAII wrapper that automatically releases the buffer upon destruction. Just make sure you don't keep any pointers to the
packet
member.
◆ forceMinMTU()
template<class Impl >
void forceMinMTU |
( |
uint16_t | mtu | ) |
|
Force the MTU to an artificially small value (used for testing).
◆ getMinMTU()
template<class Impl >
uint16_t getMinMTU |
( |
| ) |
const |
|
inline |
◆ releasePacketAndNotify()
template<class Impl >
void releasePacketAndNotify |
( |
ProtectedBuilder & | lck | ) |
|
Release exclusive access to the buffer and notify the sender thread that data is available.
◆ sendNow()
template<class Impl >
void sendNow |
( |
ProtectedBuilder & | lck | ) |
|
Sends the data immediately without waiting for the timeout.
◆ setTimeout()
template<class Impl >
void setTimeout |
( |
std::chrono::milliseconds | timeout | ) |
|
Set the timeout, the number of milliseconds to buffer the outgoing MIDI messages.
◆ begin() [2/2]
Start the background thread.
◆ updateMTU()
void updateMTU |
( |
uint16_t | mtu | ) |
|
|
inherited |
Set the maximum transmission unit of the Bluetooth link.
Used to compute the MIDI BLE packet size.
◆ handleSendEvents()
bool handleSendEvents |
( |
| ) |
|
|
privateinherited |
Function that waits for BLE packets and sends them in the background.
It either sends them after a timeout (a given number of milliseconds after the first data was added to the packet), or immediately when it receives a flush signal from the main thread.
◆ impl
◆ Sender
◆ connection
◆ characteristic
◆ parser
◆ packet
◆ stop
◆ flush
◆ timeout
std::chrono::milliseconds timeout |
|
inherited |
◆ mtx
◆ [struct]
◆ cv
std::condition_variable cv |
|
privateinherited |
Condition variable used by the background sender thread to wait for data to send, and for the main thread to wait for the data to be flushed by the sender thread.
Definition at line 80 of file ThreadedBLEMIDISender.hpp.
◆ send_thread
◆ min_mtu
std::atomic_uint_fast16_t min_mtu |
|
privateinherited |
◆ force_min_mtu
std::atomic_uint_fast16_t force_min_mtu |
|
privateinherited |
Override the minimum MTU (0 means don't override, nonzero overrides if it's smaller than the minimum MTU of the clients).
- See also
- forceMinMTU()
Definition at line 92 of file ThreadedBLEMIDISender.hpp.
The documentation for this class was generated from the following file: