diff --git a/gui/include/discoverymanager.h b/gui/include/discoverymanager.h index c99e0c9..f2b09de 100644 --- a/gui/include/discoverymanager.h +++ b/gui/include/discoverymanager.h @@ -18,6 +18,8 @@ #ifndef CHIAKI_DISCOVERYMANAGER_H #define CHIAKI_DISCOVERYMANAGER_H +#include "host.h" + #include #include @@ -30,6 +32,8 @@ struct DiscoveryHost #define STRING_MEMBER(name) QString name; CHIAKI_DISCOVERY_HOST_STRING_FOREACH(STRING_MEMBER) #undef STRING_MEMBER + + HostMAC GetHostMAC() const; }; Q_DECLARE_METATYPE(DiscoveryHost) diff --git a/gui/include/host.h b/gui/include/host.h index 4abd3ae..0c0adcc 100644 --- a/gui/include/host.h +++ b/gui/include/host.h @@ -32,6 +32,7 @@ class HostMAC HostMAC() { memset(mac, 0, sizeof(mac)); } explicit HostMAC(const uint8_t mac[6]) { memcpy(this->mac, mac, sizeof(this->mac)); } const uint8_t *GetMAC() const { return mac; } + QString ToString() const { return QByteArray((const char *)mac, sizeof(mac)).toHex(); } }; static bool operator==(const HostMAC &a, const HostMAC &b) { return memcmp(a.GetMAC(), b.GetMAC(), 6) == 0; } diff --git a/gui/src/discoverymanager.cpp b/gui/src/discoverymanager.cpp index 0e5b289..00f4585 100644 --- a/gui/src/discoverymanager.cpp +++ b/gui/src/discoverymanager.cpp @@ -25,6 +25,14 @@ #define HOSTS_MAX 16 #define DROP_PINGS 3 +HostMAC DiscoveryHost::GetHostMAC() const +{ + QByteArray data = QByteArray::fromHex(host_id.toUtf8()); + if(data.size() != 6) + return HostMAC(); + return HostMAC((uint8_t *)data.constData()); +} + static void DiscoveryServiceHostsCallback(ChiakiDiscoveryHost *hosts, size_t hosts_count, void *user); DiscoveryManager::DiscoveryManager(QObject *parent) : QObject(parent) diff --git a/gui/src/serveritemwidget.cpp b/gui/src/serveritemwidget.cpp index 6f44a22..9b8d8a6 100644 --- a/gui/src/serveritemwidget.cpp +++ b/gui/src/serveritemwidget.cpp @@ -72,7 +72,7 @@ void ServerItemWidget::Update(const DisplayServer &display_server) icon_widget->SetState(display_server.discovery_host.state); top_label->setText(tr("%1\nID: %2\nAddress: %3").arg( display_server.discovery_host.host_name, - display_server.discovery_host.host_id, + display_server.discovery_host.GetHostMAC().ToString(), display_server.discovery_host.host_addr)); bottom_label->setText(tr("State: %1").arg(chiaki_discovery_host_state_string(display_server.discovery_host.state))); }