2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#include "net/rc/config/ConfigAddress.h"
44#include "net/config/ConfigAddressBase.hpp"
45#include "net/config/ConfigAddressLocal.hpp"
46#include "net/config/ConfigAddressRemote.hpp"
47#include "net/config/ConfigAddressReverse.hpp"
48#include "net/config/ConfigSection.hpp"
50#ifndef DOXYGEN_SHOULD_SKIP_THIS
52#include "utils/PreserveErrno.h"
60 template <
template <
typename SocketAddress>
typename ConfigAddressType>
63 [[
maybe_unused]]
const std::string& addressOptionDescription)
65 , ConfigAddressType<net::rc::SocketAddress>(
this) {
68 template <
template <
typename SocketAddress>
typename ConfigAddressType>
73 , ConfigAddressType<net::rc::SocketAddress>(
this) {
76 "Bluetooth address (format 01:23:45:67:89:AB)",
80 [](std::string& s) -> std::string {
82 static const std::regex re(R"(^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$)");
84 if (std::regex_match(s, re)) {
88 return "Invalid Bluetooth address. Expected format like \"01:23:45:67:89:AB\" "
89 "(6 hex octets separated by ':').";
99 CLI::Range(
static_cast<uint16_t>(1),
static_cast<uint16_t>(30)));
102 template <
template <
typename SocketAddress>
typename ConfigAddressType>
107 return socketAddress;
110 template <
template <
typename SocketAddress>
typename ConfigAddressType>
118 template <
template <
typename SocketAddress>
typename ConfigAddressType>
128 template <
template <
typename SocketAddress>
typename ConfigAddressType>
133 template <
template <
typename SocketAddress>
typename ConfigAddressType>
143 template <
template <
typename SocketAddress>
typename ConfigAddressType>
148 template <
template <
typename SocketAddressT>
typename ConfigAddressTypeT>
151 this->setConfigurable(
channelOpt, configurable);
154 template <
template <
typename SocketAddress>
typename ConfigAddressType>
161 template <
template <
typename SocketAddress>
typename ConfigAddressType>
170template class net::config::ConfigAddress<net::rc::SocketAddress>;
171template class net::config::ConfigAddressLocal<net::rc::SocketAddress>;
172template class net::config::ConfigAddressRemote<net::rc::SocketAddress>;
173template class net::config::ConfigAddressReverse<net::rc::SocketAddress>;
174template class net::config::ConfigAddressBase<net::rc::SocketAddress>;
uint8_t getChannel() const
SocketAddress(const std::string &btAddress, uint8_t channel)
std::string getBtAddress() const
ConfigAddressReverse(net::config::ConfigInstance *instance, const std::string &addressOptionName, const std::string &addressOptionDescription)
SocketAddress * init() final
std::string getBtAddress() const
uint8_t getChannel() const
ConfigAddress(net::config::ConfigInstance *instance, const std::string &addressOptionName, const std::string &addressOptionDescription)
ConfigAddress & setChannel(uint8_t channel)
void configurable(bool configurable=true) final
CLI::Option * btAddressOpt
ConfigAddress & setBtAddress(const std::string &btAddress)
ConfigAddress & setSocketAddress(const SocketAddress &socketAddress)
ConfigAddress & setChannelRequired(bool required=true)
ConfigAddress & setBtAddressRequired(bool required=true)