Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8855174 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add RawAddress standard array access"

parents 68777762 95dea37a
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <base/strings/stringprintf.h>
#include <stdint.h>
#include <algorithm>
#include <array>
#include <vector>

static_assert(sizeof(RawAddress) == 6, "RawAddress must be 6 bytes long!");
@@ -33,12 +34,22 @@ RawAddress::RawAddress(const uint8_t (&addr)[6]) {
  std::copy(addr, addr + kLength, address);
}

RawAddress::RawAddress(const std::array<uint8_t, kLength> mac) {
  std::copy(mac.begin(), mac.end(), address);
}

std::string RawAddress::ToString() const {
  return base::StringPrintf("%02x:%02x:%02x:%02x:%02x:%02x", address[0],
                            address[1], address[2], address[3], address[4],
                            address[5]);
}

std::array<uint8_t, RawAddress::kLength> RawAddress::ToArray() const {
  std::array<uint8_t, kLength> mac;
  std::copy(std::begin(address), std::end(address), std::begin(mac));
  return mac;
}

bool RawAddress::FromString(const std::string& from, RawAddress& to) {
  RawAddress new_addr;
  if (from.length() != 17) return false;
+3 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ class RawAddress final {

  RawAddress() = default;
  RawAddress(const uint8_t (&addr)[kLength]);
  RawAddress(const std::array<uint8_t, kLength> array);

  bool operator<(const RawAddress& rhs) const {
    return (std::memcmp(address, rhs.address, sizeof(address)) < 0);
@@ -56,6 +57,8 @@ class RawAddress final {
  // Returns the number of copied octets - should be always RawAddress::kLength
  size_t FromOctets(const uint8_t* from);

  std::array<uint8_t, kLength> ToArray() const;

  static bool IsValidAddress(const std::string& address);

  static const RawAddress kEmpty;  // 00:00:00:00:00:00
+11 −0
Original line number Diff line number Diff line
@@ -187,3 +187,14 @@ TEST(RawAddressTest, BdAddrFromString) {
  const RawAddress result1 = {{0xab, 0x01, 0x4c, 0xd5, 0x21, 0x9f}};
  EXPECT_EQ(0, memcmp(&addr, &result1, sizeof(addr)));
}

TEST(RawAddressTest, BdAddrFromArray) {
  std::array<uint8_t, 6> mac = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
  RawAddress bdaddr(mac);

  std::string ret = bdaddr.ToString();
  ASSERT_STREQ("11:22:33:44:55:66", ret.c_str());

  std::array<uint8_t, 6> mac2 = bdaddr.ToArray();
  ASSERT_EQ(mac, mac2);
}