Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
BLEService.hxx
Go to the documentation of this file.
1
28#ifndef _OPENLCB_BLESERVICE_HXX_
29#define _OPENLCB_BLESERVICE_HXX_
30
31#include <cstring>
32
33#include "ble/Service.hxx"
34#include "utils/macros.h"
35
36namespace openlcb
37{
38
41{
42public:
44 static const uint8_t GATT_SERVICE_UUID_OPENLCB[16];
45
47 static const uint8_t GATT_CHAR_UUID_DATA_IN[16];
48
50 static const uint8_t GATT_CHAR_UUID_DATA_OUT[16];
51
52private:
53 static uint8_t dataIn_[200];
54 static uint8_t dataOut_[200];
55
56 static uint8_t dataInCCCD_[2];
57 static uint8_t dataOutCCCD_[2];
58
59public:
71
73 static constexpr GATTAttribute GATT_ATTRIBUTES[] =
74 {
75 // Primary service.
76 {
82 },
83 // Characteristic declaration for data in.
84 {
90 },
91 // Characteristic value for data in.
92 {
96 sizeof(dataIn_),
98 },
99 // Client characteristic configuration descriptor (CCCD) for data in.
100 {
104 sizeof(dataInCCCD_),
106 },
107 // Characteristic declaration for data out.
108 {
114 },
115 // Characteristic value for data out.
116 {
120 sizeof(dataOut_),
122 },
123 // Client characteristic configuration descriptor (CCCD) for data out.
124 {
128 sizeof(dataOutCCCD_),
130 },
131 };
132
135 static constexpr size_t size()
136 {
138 }
139};
140
141} // namespace ble
142
143#endif // _OPENLCB_BLESERVICE_HXX_
@ UUID_LEN_128
length in bytes of a 128-bit UUID
Definition ble/Defs.hxx:101
@ UUID_LEN_16
length in bytes of a 16-bit UUID
Definition ble/Defs.hxx:99
static const uint8_t CHAR_PROP_READ_NOTIFY_ACK[1]
Characteristic read/write/notify property.
Definition ble/Defs.hxx:67
static const uint8_t CHAR_PROP_WRITE[1]
Characteristic read/write/notify property.
Definition ble/Defs.hxx:70
@ READ
attribute is readable
@ WRITE
attribute is writable
static const uint8_t PRIMARY_SERVICE_UUID[2]
Primary service UUID.
Definition ble/Defs.hxx:52
static const uint8_t CHAR_CLIENT_CONFIG_UUID[2]
Characterisitic Client Config Descriptor (CCCD) UUID.
Definition ble/Defs.hxx:61
static const uint8_t CHAR_DECLARATOIN_UUID[2]
Characteristic UUID.
Definition ble/Defs.hxx:58
BLE service definition interface.
OpenLCB BLE service definition.
static constexpr GATTAttribute GATT_ATTRIBUTES[]
GATT Attribute table properties for this service.
static const uint8_t GATT_CHAR_UUID_DATA_OUT[16]
OpenLCB GATT data out characterisitic UUID.
static const uint8_t GATT_SERVICE_UUID_OPENLCB[16]
OpenLCB GATT service UUID.
static uint8_t dataOutCCCD_[2]
configuration descriptor for output
static uint8_t dataOut_[200]
data outgoing from the server
static uint8_t dataIn_[200]
data incoming to the server
static uint8_t dataInCCCD_[2]
configuration descriptor for input
static const uint8_t GATT_CHAR_UUID_DATA_IN[16]
OpenLCB GATT data in characterisitic UUID.
static constexpr size_t size()
Get the size in number of elements (Attributes).
GATTAttributeIndexs
The entry indexes for the GATT_ATTRIBUTES table.
@ GATT_DATA_IN_DECL_INDEX
GATT data in declaration index.
@ GATT_DATA_IN_CCCD_INDEX
GATT data in CCCD index.
@ GATT_DATA_OUT_CCCD_INDEX
GATT data out CCCD index.
@ GATT_DATA_OUT_VALUE_INDEX
GATT data out value index.
@ GATT_DATA_OUT_DECL_INDEX
GATT data out declaration index.
@ GATT_DATA_IN_VALUE_INDEX
GATT data in value index.
@ GATT_SERVICE_INDEX
GATT Primary Service index.
#define ARRAYSIZE(a)
Returns the number of elements in a statically defined array (of static size)
Definition macros.h:185