Skip to content

Commit 96cd78a

Browse files
committed
add Crazyflie::broadcastUriFromUnicastUri
1 parent cfd10d8 commit 96cd78a

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

include/crazyflie_cpp/Crazyflie.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ class Crazyflie
131131
static std::vector<std::string> scan(
132132
uint64_t address = 0xE7E7E7E7E7);
133133

134+
// returns the URI that can be used for broadcast communication (or empty string if there is none)
135+
static std::string broadcastUriFromUnicastUri(const std::string& link_uri);
136+
134137
const bitcraze::crazyflieLinkCpp::Connection::Statistics connectionStats() const
135138
{
136139
return m_connection.statistics();

src/Crazyflie.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,12 @@ std::vector<std::string> Crazyflie::scan(
4646
return bitcraze::crazyflieLinkCpp::Connection::scan(address);
4747
}
4848

49-
std::string Crazyflie::uri() const
50-
{
51-
return m_connection.uri();
52-
}
53-
54-
std::string Crazyflie::broadcastUri() const
49+
std::string Crazyflie::broadcastUriFromUnicastUri(
50+
const std::string& link_uri)
5551
{
5652
const std::regex uri_regex("radio:\\/\\/(\\d+|\\*)\\/(\\d+)\\/(250K|1M|2M)\\/([a-fA-F0-9]+)");
5753
std::smatch match;
58-
if (!std::regex_match(m_connection.uri(), match, uri_regex))
54+
if (!std::regex_match(link_uri, match, uri_regex))
5955
{
6056
// unsupported for broadcast
6157
return std::string();
@@ -64,6 +60,16 @@ std::string Crazyflie::broadcastUri() const
6460
return "radiobroadcast://*/" + match[2].str() + "/" + match[3].str();
6561
}
6662

63+
std::string Crazyflie::uri() const
64+
{
65+
return m_connection.uri();
66+
}
67+
68+
std::string Crazyflie::broadcastUri() const
69+
{
70+
return Crazyflie::broadcastUriFromUnicastUri(uri());
71+
}
72+
6773
uint64_t Crazyflie::address() const
6874
{
6975
const std::regex uri_regex("radio:\\/\\/(\\d+|\\*)\\/(\\d+)\\/(250K|1M|2M)\\/([a-fA-F0-9]+)");

0 commit comments

Comments
 (0)