Common/Network: Add BluetoothAddress struct and string conversion functions.

This commit is contained in:
Jordan Woyak
2025-09-22 08:02:01 -05:00
parent b1e8de82a6
commit b2fef6ee1f
2 changed files with 26 additions and 0 deletions

View File

@@ -86,6 +86,21 @@ std::optional<MACAddress> StringToMacAddress(std::string_view mac_string)
return std::make_optional(mac);
}
std::string BluetoothAddressToString(BluetoothAddress bdaddr)
{
std::ranges::reverse(bdaddr);
return MacAddressToString(std::bit_cast<MACAddress>(bdaddr));
}
std::optional<BluetoothAddress> StringToBluetoothAddress(std::string_view str)
{
auto result = StringToMacAddress(str);
if (!result)
return std::nullopt;
std::ranges::reverse(*result);
return std::bit_cast<BluetoothAddress>(*result);
}
EthernetHeader::EthernetHeader() = default;
EthernetHeader::EthernetHeader(u16 ether_type) : ethertype(htons(ether_type))

View File

@@ -36,6 +36,12 @@ enum DHCPConst
};
using MACAddress = std::array<u8, MAC_ADDRESS_SIZE>;
// Note: Bluetooth address display order is reverse of the storage order.
struct BluetoothAddress : std::array<u8, MAC_ADDRESS_SIZE>
{
};
constexpr std::size_t IPV4_ADDR_LEN = 4;
using IPAddress = std::array<u8, IPV4_ADDR_LEN>;
constexpr IPAddress IP_ADDR_ANY = {0, 0, 0, 0};
@@ -259,8 +265,13 @@ struct NetworkErrorState
};
MACAddress GenerateMacAddress(MACConsumer type);
std::string MacAddressToString(const MACAddress& mac);
std::optional<MACAddress> StringToMacAddress(std::string_view mac_string);
std::string BluetoothAddressToString(BluetoothAddress bdaddr);
std::optional<BluetoothAddress> StringToBluetoothAddress(std::string_view str);
u16 ComputeNetworkChecksum(const void* data, u16 length, u32 initial_value = 0);
u16 ComputeTCPNetworkChecksum(const IPAddress& from, const IPAddress& to, const void* data,
u16 length, u8 protocol);