Control Surface
main
MIDI Control Surface library for Arduino
Toggle main menu visibility
Loading...
Searching...
No Matches
src
MIDI_Interfaces
BLEMIDI
PollingBLEMIDISender.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <
Settings/NamespaceSettings.hpp
>
4
5
#include <chrono>
6
7
#include "
BLEAPI.hpp
"
8
#include <
MIDI_Interfaces/BLEMIDI/BLEMIDIPacketBuilder.hpp
>
9
10
BEGIN_CS_NAMESPACE
11
13
template
<
class
Derived>
14
class
PollingBLEMIDISender
{
15
public
:
16
PollingBLEMIDISender
() =
default
;
17
PollingBLEMIDISender
(
const
PollingBLEMIDISender
&) =
delete
;
18
PollingBLEMIDISender
&
operator=
(
const
PollingBLEMIDISender
&) =
delete
;
19
~PollingBLEMIDISender
();
20
22
void
begin
();
23
25
struct
ProtectedBuilder;
30
ProtectedBuilder
acquirePacket
();
33
void
releasePacketAndNotify
(ProtectedBuilder &lck);
34
36
void
sendNow
(ProtectedBuilder &lck);
37
40
void
updateMTU
(uint16_t mtu);
42
uint16_t
getMinMTU
()
const
{
return
min_mtu
; }
44
void
forceMinMTU
(uint16_t mtu);
45
48
void
setTimeout
(std::chrono::milliseconds
timeout
);
49
50
private
:
52
void
sendData
(
BLEDataView
) =
delete
;
// should be implemented by subclass
53
54
private
:
56
BLEMIDIPacketBuilder
packet
;
59
unsigned
long
timeout
{10};
61
unsigned
long
packet_start_time
{0};
62
63
private
:
65
uint16_t
min_mtu
{23};
69
uint16_t
force_min_mtu
{515};
70
71
public
:
72
struct
ProtectedBuilder
{
73
BLEMIDIPacketBuilder
*
packet
;
74
};
75
};
76
77
END_CS_NAMESPACE
78
79
#include "PollingBLEMIDISender.ipp"
BLEAPI.hpp
Type definitions and callback interfaces for communication between the low-level BLE stacks and highe...
BLEMIDIPacketBuilder.hpp
NamespaceSettings.hpp
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:14
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:11
BLEMIDIPacketBuilder
Class for building MIDI over Bluetooth Low Energy packets.
Definition
BLEMIDIPacketBuilder.hpp:10
PollingBLEMIDISender::PollingBLEMIDISender
PollingBLEMIDISender()=default
PollingBLEMIDISender< ArduinoBLEBackend >::packet
BLEMIDIPacketBuilder packet
Definition
PollingBLEMIDISender.hpp:56
PollingBLEMIDISender::sendData
void sendData(BLEDataView)=delete
Actually perform the BLE notification with the given data.
PollingBLEMIDISender::getMinMTU
uint16_t getMinMTU() const
Get the minimum MTU of all connected clients.
Definition
PollingBLEMIDISender.hpp:42
PollingBLEMIDISender::setTimeout
void setTimeout(std::chrono::milliseconds timeout)
Set the timeout, the number of milliseconds to buffer the outgoing MIDI messages.
PollingBLEMIDISender::forceMinMTU
void forceMinMTU(uint16_t mtu)
Force the MTU to an artificially small value (used for testing).
PollingBLEMIDISender< ArduinoBLEBackend >::timeout
unsigned long timeout
Definition
PollingBLEMIDISender.hpp:59
PollingBLEMIDISender::PollingBLEMIDISender
PollingBLEMIDISender(const PollingBLEMIDISender &)=delete
PollingBLEMIDISender< ArduinoBLEBackend >::packet_start_time
unsigned long packet_start_time
Definition
PollingBLEMIDISender.hpp:61
PollingBLEMIDISender< ArduinoBLEBackend >::min_mtu
uint16_t min_mtu
Definition
PollingBLEMIDISender.hpp:65
PollingBLEMIDISender::acquirePacket
ProtectedBuilder acquirePacket()
Acquire exclusive access to the buffer.
PollingBLEMIDISender::operator=
PollingBLEMIDISender & operator=(const PollingBLEMIDISender &)=delete
PollingBLEMIDISender::begin
void begin()
Initialize.
PollingBLEMIDISender::releasePacketAndNotify
void releasePacketAndNotify(ProtectedBuilder &lck)
Release exclusive access to the buffer and notify the sender thread that data is available.
PollingBLEMIDISender::~PollingBLEMIDISender
~PollingBLEMIDISender()
PollingBLEMIDISender::updateMTU
void updateMTU(uint16_t mtu)
Set the maximum transmission unit of the Bluetooth link.
PollingBLEMIDISender< ArduinoBLEBackend >::force_min_mtu
uint16_t force_min_mtu
Definition
PollingBLEMIDISender.hpp:69
PollingBLEMIDISender::sendNow
void sendNow(ProtectedBuilder &lck)
Sends the data immediately without waiting for the timeout.
BLEDataView
Non-owning, std::span-style read-only view of BLE data.
Definition
BLEAPI.hpp:42
PollingBLEMIDISender::ProtectedBuilder
Definition
PollingBLEMIDISender.hpp:72
PollingBLEMIDISender::ProtectedBuilder::packet
BLEMIDIPacketBuilder * packet
Definition
PollingBLEMIDISender.hpp:73
Generated by
1.17.0