Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
ble/Defs.hxx
Go to the documentation of this file.
1
28#ifndef _BLE_DEFS_HXX_
29#define _BLE_DEFS_HXX_
30
31#include <sys/types.h> // ssize_t on some platforms
32#include <cstdint>
33#include <string>
34
35namespace ble
36{
37
39class Defs
40{
41public:
43 static constexpr uint16_t ATTR_HANDLE_INVALID = 0;
44
46 static constexpr uint16_t CONN_HANDLE_INVALID = 0xFFFF;
47
49 static constexpr uint8_t ADDR_LEN = 6;
50
52 static const uint8_t PRIMARY_SERVICE_UUID[2];
53
55 static const uint8_t SECONDARY_SERVICE_UUID[2];
56
58 static const uint8_t CHAR_DECLARATOIN_UUID[2];
59
61 static const uint8_t CHAR_CLIENT_CONFIG_UUID[2];
62
64 static const uint8_t CHAR_PROP_READ_WRITE_NOTIFY[1];
65
67 static const uint8_t CHAR_PROP_READ_NOTIFY_ACK[1];
68
70 static const uint8_t CHAR_PROP_WRITE[1];
71
73 typedef uint8_t Addr[ADDR_LEN];
74
76 typedef uint8_t AddrType;
77
79 typedef uint16_t ConnHandle;
80
81 typedef uint16_t AttHandle;
82
84 enum class GATTPerm : uint8_t
85 {
86 READ = 0x01,
87 WRITE = 0x02,
88 AUTHEN_READ = 0x04,
89 AUTHEN_WRITE = 0x08,
90 AUTHOR_READ = 0x10,
91 AUTHOR_WRITE = 0x20,
92 ENCRYPT_READ = 0x40,
93 ENCRYPT_WRITE = 0x80,
94 };
95
97 enum
98 {
102 };
103
105 enum class AdvType : uint8_t
106 {
107 FLAGS = 0x01,
108 NAME_SHORT = 0x08,
109 NAME_COMPLETE = 0x09,
110 SERVICE_DATA_128 = 0x21,
111 };
112
119 static ssize_t adv_find_data(std::basic_string<uint8_t> &adv, AdvType type,
120 uint8_t *size, unsigned instance = 1);
121
126 static std::string adv_find_name_short(
127 std::basic_string<uint8_t> &adv, unsigned instance = 1);
128
133 static std::string adv_find_name_complete(
134 std::basic_string<uint8_t> &adv, unsigned instance = 1);
135
142 static std::basic_string<uint8_t> adv_find_service_data_128(
143 std::basic_string<uint8_t> &adv, const uint8_t service_uuid[16],
144 unsigned instance = 1);
145};
146
150inline constexpr Defs::GATTPerm operator|(
151 const Defs::GATTPerm &a, const Defs::GATTPerm &b)
152{
153 return static_cast<Defs::GATTPerm>(
154 static_cast<uint8_t>(a) | static_cast<uint8_t>(b));
155}
156
160inline constexpr bool operator&(
161 const Defs::GATTPerm &a, const Defs::GATTPerm &b)
162{
163 return static_cast<bool>(
164 static_cast<uint8_t>(a) & static_cast<uint8_t>(b));
165}
166
167} // namespace ble
168
169#endif // _BLE_DEFS_HXX_
constexpr bool operator&(const Defs::GATTPerm &a, const Defs::GATTPerm &b)
'&' operator for GATTPerm.
Definition ble/Defs.hxx:160
constexpr Defs::GATTPerm operator|(const Defs::GATTPerm &a, const Defs::GATTPerm &b)
'|' operator for GATTPerm.
Definition ble/Defs.hxx:150
Miscellaneous BLE definitions.
Definition ble/Defs.hxx:40
@ 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
@ UUID_LEN_32
length in bytes of a 32-bit UUID
Definition ble/Defs.hxx:100
uint8_t AddrType
Address Type.
Definition ble/Defs.hxx:76
static const uint8_t CHAR_PROP_READ_WRITE_NOTIFY[1]
Characteristic read/write/notify property.
Definition ble/Defs.hxx:64
static constexpr uint16_t CONN_HANDLE_INVALID
The value of an invalid or unitialized connection handle.
Definition ble/Defs.hxx:46
AdvType
Advertising types.
Definition ble/Defs.hxx:106
@ SERVICE_DATA_128
128-bit service UUID folloed by data
@ FLAGS
GAP discovery modes.
@ NAME_COMPLETE
complete local name
@ NAME_SHORT
shortened local name
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
GATTPerm
GATT Permisions.
Definition ble/Defs.hxx:85
@ AUTHEN_WRITE
write requires authentication
@ AUTHOR_READ
read requires authorization
@ AUTHEN_READ
read requires authentication
@ READ
attribute is readable
@ AUTHOR_WRITE
write requires authorization
@ ENCRYPT_READ
read requires encryption
@ WRITE
attribute is writable
@ ENCRYPT_WRITE
write requires encryption
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 SECONDARY_SERVICE_UUID[2]
Secondary service UUID.
Definition ble/Defs.hxx:55
static std::string adv_find_name_short(std::basic_string< uint8_t > &adv, unsigned instance=1)
Find an advertisment name short type within an advertisement set.
Definition ble/Defs.cxx:88
uint16_t ConnHandle
Connection handle.
Definition ble/Defs.hxx:79
static constexpr uint16_t ATTR_HANDLE_INVALID
The value of an invalid or unitialized attribute handle.
Definition ble/Defs.hxx:43
uint8_t Addr[ADDR_LEN]
BLE address.
Definition ble/Defs.hxx:73
static constexpr uint8_t ADDR_LEN
The length of an address.
Definition ble/Defs.hxx:49
static ssize_t adv_find_data(std::basic_string< uint8_t > &adv, AdvType type, uint8_t *size, unsigned instance=1)
Find an advertisment data within an advertisement set.
Definition ble/Defs.cxx:59
static std::basic_string< uint8_t > adv_find_service_data_128(std::basic_string< uint8_t > &adv, const uint8_t service_uuid[16], unsigned instance=1)
Find an advertisment service data 128 type within an advertisement set.
Definition ble/Defs.cxx:120
static const uint8_t CHAR_DECLARATOIN_UUID[2]
Characteristic UUID.
Definition ble/Defs.hxx:58
static std::string adv_find_name_complete(std::basic_string< uint8_t > &adv, unsigned instance=1)
Find an advertisment name complete type within an advertisement set.
Definition ble/Defs.cxx:104