diff --git a/owlps-positioning/src/posutil.cc b/owlps-positioning/src/posutil.cc index 78db584..b88e8da 100644 --- a/owlps-positioning/src/posutil.cc +++ b/owlps-positioning/src/posutil.cc @@ -163,3 +163,21 @@ unsigned long PosUtil::wifi_channel_to_hz(const unsigned long &channel) // Error: wrong channel value throw bad_channel(channel) ; } + + + +/* *** Strings *** */ + + +string PosUtil::int_to_mac(const uint32_t source) +{ + uint8_t bytes[6] ; + memset(bytes, 0, 6) ; + for (int i = 0 ; i < 4 ; ++i) + bytes[i+2] = reinterpret_cast(&source)[i] ; + char mac_cstr[OWL_ETHER_ADDR_STRLEN] ; + owl_mac_bytes_to_string_r(bytes, mac_cstr) ; + string mac(mac_cstr) ; + to_upper(mac) ; + return mac ; +} diff --git a/owlps-positioning/src/posutil.hh b/owlps-positioning/src/posutil.hh index ef1c64b..0a5cb7f 100644 --- a/owlps-positioning/src/posutil.hh +++ b/owlps-positioning/src/posutil.hh @@ -41,6 +41,7 @@ public: //@{ static void to_upper(std::string &str) ; static void assert_uppercase(const std::string &str) ; + static std::string int_to_mac(const uint32_t source) ; //@} } ;