aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArisotura <thetotalworm@gmail.com>2019-02-21 02:45:01 +0100
committerArisotura <thetotalworm@gmail.com>2019-02-21 02:45:01 +0100
commit023a1ba200009eb9f462625597b508cd4fffa0da (patch)
treefdacee5eac6837968bbeb9ca4e85137763563bc6
parent616f2b494b311862f89b769151cec774fcbffc15 (diff)
list adapters, display their info
-rw-r--r--src/libui_sdl/DlgWifiSettings.cpp78
-rw-r--r--src/libui_sdl/LAN.cpp3
-rw-r--r--src/libui_sdl/LAN.h4
3 files changed, 83 insertions, 2 deletions
diff --git a/src/libui_sdl/DlgWifiSettings.cpp b/src/libui_sdl/DlgWifiSettings.cpp
index 51854fb..c94f1db 100644
--- a/src/libui_sdl/DlgWifiSettings.cpp
+++ b/src/libui_sdl/DlgWifiSettings.cpp
@@ -25,6 +25,7 @@
#include "../types.h"
#include "../Config.h"
+#include "LAN.h"
#include "DlgWifiSettings.h"
@@ -39,6 +40,43 @@ uiWindow* win;
uiCheckbox* cbBindAnyAddr;
+uiCombobox* cmAdapterList;
+uiCheckbox* cbDirectLAN;
+
+uiLabel* lbAdapterMAC;
+uiLabel* lbAdapterIP;
+uiLabel* lbAdapterDNS0;
+uiLabel* lbAdapterDNS1;
+
+
+void UpdateAdapterInfo()
+{
+ int sel = uiComboboxSelected(cmAdapterList);
+ if (sel < 0 || sel >= LAN::NumAdapters) return;
+
+ LAN::AdapterData* adapter = &LAN::Adapters[sel];
+ char tmp[64];
+
+ sprintf(tmp, "MAC: %02X:%02X:%02X:%02X:%02X:%02X",
+ adapter->MAC[0], adapter->MAC[1], adapter->MAC[2],
+ adapter->MAC[3], adapter->MAC[4], adapter->MAC[5]);
+ uiLabelSetText(lbAdapterMAC, tmp);
+
+ sprintf(tmp, "IP: %d.%d.%d.%d",
+ adapter->IP_v4[0], adapter->IP_v4[1],
+ adapter->IP_v4[2], adapter->IP_v4[3]);
+ uiLabelSetText(lbAdapterIP, tmp);
+
+ sprintf(tmp, "Primary DNS: %d.%d.%d.%d",
+ adapter->DNS[0][0], adapter->DNS[0][1],
+ adapter->DNS[0][2], adapter->DNS[0][3]);
+ uiLabelSetText(lbAdapterDNS0, tmp);
+
+ sprintf(tmp, "Secondary DNS: %d.%d.%d.%d",
+ adapter->DNS[1][0], adapter->DNS[1][1],
+ adapter->DNS[1][2], adapter->DNS[1][3]);
+ uiLabelSetText(lbAdapterDNS1, tmp);
+}
int OnCloseWindow(uiWindow* window, void* blarg)
{
@@ -46,6 +84,11 @@ int OnCloseWindow(uiWindow* window, void* blarg)
return 1;
}
+void OnAdapterSelect(uiCombobox* c, void* blarg)
+{
+ UpdateAdapterInfo();
+}
+
void OnCancel(uiButton* btn, void* blarg)
{
uiControlDestroy(uiControl(win));
@@ -72,6 +115,8 @@ void Open()
return;
}
+ LAN::Init();
+
opened = true;
win = uiNewWindow("Wifi settings - melonDS", 400, 100, 0, 0, 0);
uiWindowSetMargined(win, 1);
@@ -94,6 +139,8 @@ void Open()
}
{
+ uiLabel* lbl;
+
uiGroup* grp = uiNewGroup("Online");
uiBoxAppend(top, uiControl(grp), 0);
uiGroupSetMargined(grp, 1);
@@ -101,8 +148,24 @@ void Open()
uiBox* in_ctrl = uiNewVerticalBox();
uiGroupSetChild(grp, uiControl(in_ctrl));
- uiLabel* dorp = uiNewLabel("placeholder");
- uiBoxAppend(in_ctrl, uiControl(dorp), 0);
+ lbl = uiNewLabel("Network adapter:");
+ uiBoxAppend(in_ctrl, uiControl(lbl), 0);
+
+ cmAdapterList = uiNewCombobox();
+ uiComboboxOnSelected(cmAdapterList, OnAdapterSelect, NULL);
+ uiBoxAppend(in_ctrl, uiControl(cmAdapterList), 0);
+
+ lbAdapterMAC = uiNewLabel("MAC");
+ uiBoxAppend(in_ctrl, uiControl(lbAdapterMAC), 0);
+ lbAdapterIP = uiNewLabel("IP");
+ uiBoxAppend(in_ctrl, uiControl(lbAdapterIP), 0);
+ lbAdapterDNS0 = uiNewLabel("DNS0");
+ uiBoxAppend(in_ctrl, uiControl(lbAdapterDNS0), 0);
+ lbAdapterDNS1 = uiNewLabel("DNS1");
+ uiBoxAppend(in_ctrl, uiControl(lbAdapterDNS1), 0);
+
+ cbDirectLAN = uiNewCheckbox("Direct mode (requires ethernet connection)");
+ uiBoxAppend(in_ctrl, uiControl(cbDirectLAN), 0);
}
{
@@ -124,6 +187,17 @@ void Open()
uiCheckboxSetChecked(cbBindAnyAddr, Config::SocketBindAnyAddr);
+ int sel = 0;
+ for (int i = 0; i < LAN::NumAdapters; i++)
+ {
+ LAN::AdapterData* adapter = &LAN::Adapters[i];
+
+ uiComboboxAppend(cmAdapterList, adapter->FriendlyName);
+ }
+ // TODO: select the right one!
+ uiComboboxSetSelected(cmAdapterList, sel);
+ UpdateAdapterInfo();
+
uiControlShow(uiControl(win));
}
diff --git a/src/libui_sdl/LAN.cpp b/src/libui_sdl/LAN.cpp
index a738656..2021b3d 100644
--- a/src/libui_sdl/LAN.cpp
+++ b/src/libui_sdl/LAN.cpp
@@ -98,6 +98,9 @@ bool TryLoadPCap(void* lib)
bool Init()
{
+ // TODO: how to deal with cases where an adapter is unplugged or changes config??
+ if (PCapLib) return true;
+
PCapLib = NULL;
PCapAdapter = NULL;
PCapPacketLen = 0;
diff --git a/src/libui_sdl/LAN.h b/src/libui_sdl/LAN.h
index 3f40828..47e59c9 100644
--- a/src/libui_sdl/LAN.h
+++ b/src/libui_sdl/LAN.h
@@ -38,6 +38,10 @@ typedef struct
} AdapterData;
+extern AdapterData* Adapters;
+extern int NumAdapters;
+
+
bool Init();
void DeInit();