show a wifi AP :)
the connection test fails (freezes), though. strange, since it will work with net config settings from a real nand...
This commit is contained in:
parent
8ddfff6425
commit
f412227cd5
|
@ -315,13 +315,36 @@ bool CWII_IPC_HLE_Device_net_wd_command::Close(u32 CommandAddress, bool Force)
|
||||||
bool CWII_IPC_HLE_Device_net_wd_command::IOCtlV(u32 CommandAddress)
|
bool CWII_IPC_HLE_Device_net_wd_command::IOCtlV(u32 CommandAddress)
|
||||||
{
|
{
|
||||||
u32 return_value = 0;
|
u32 return_value = 0;
|
||||||
u32 common_result = 0;
|
|
||||||
u32 common_vector = 0;
|
|
||||||
|
|
||||||
SIOCtlVBuffer CommandBuffer(CommandAddress);
|
SIOCtlVBuffer CommandBuffer(CommandAddress);
|
||||||
|
|
||||||
switch (CommandBuffer.Parameter)
|
switch (CommandBuffer.Parameter)
|
||||||
{
|
{
|
||||||
|
case IOCTLV_WD_SCAN:
|
||||||
|
{
|
||||||
|
// Gives parameters detailing type of scan and what to match
|
||||||
|
ScanInfo *scan = (ScanInfo *)Memory::GetPointer(CommandBuffer.InBuffer.at(0).m_Address);
|
||||||
|
|
||||||
|
u16 *results = (u16 *)Memory::GetPointer(CommandBuffer.PayloadBuffer.at(0).m_Address);
|
||||||
|
// first u16 indicates number of BSSInfo following
|
||||||
|
results[0] = Common::swap16(1);
|
||||||
|
|
||||||
|
BSSInfo *bss = (BSSInfo *)&results[1];
|
||||||
|
memset(bss, 0, sizeof(BSSInfo));
|
||||||
|
|
||||||
|
bss->length = Common::swap16(sizeof(BSSInfo));
|
||||||
|
bss->rssi = Common::swap16(0xffff);
|
||||||
|
|
||||||
|
for (int i = 0; i < BSSID_SIZE; ++i)
|
||||||
|
bss->bssid[i] = i;
|
||||||
|
|
||||||
|
const char *ssid = "dolphin-emu";
|
||||||
|
strcpy((char *)bss->ssid, ssid);
|
||||||
|
bss->ssid_length = Common::swap16(strlen(ssid));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IOCTLV_WD_GET_INFO:
|
||||||
case IOCTLV_WD_GET_MODE:
|
case IOCTLV_WD_GET_MODE:
|
||||||
case IOCTLV_WD_SET_LINKSTATE:
|
case IOCTLV_WD_SET_LINKSTATE:
|
||||||
case IOCTLV_WD_GET_LINKSTATE:
|
case IOCTLV_WD_GET_LINKSTATE:
|
||||||
|
@ -331,11 +354,9 @@ bool CWII_IPC_HLE_Device_net_wd_command::IOCtlV(u32 CommandAddress)
|
||||||
case IOCTLV_WD_DISASSOC:
|
case IOCTLV_WD_DISASSOC:
|
||||||
case IOCTLV_WD_MP_SEND_FRAME:
|
case IOCTLV_WD_MP_SEND_FRAME:
|
||||||
case IOCTLV_WD_SEND_FRAME:
|
case IOCTLV_WD_SEND_FRAME:
|
||||||
case IOCTLV_WD_SCAN:
|
|
||||||
case IOCTLV_WD_CALL_WL:
|
case IOCTLV_WD_CALL_WL:
|
||||||
case IOCTLV_WD_MEASURE_CHANNEL:
|
case IOCTLV_WD_MEASURE_CHANNEL:
|
||||||
case IOCTLV_WD_GET_LASTERROR:
|
case IOCTLV_WD_GET_LASTERROR:
|
||||||
case IOCTLV_WD_GET_INFO:
|
|
||||||
case IOCTLV_WD_CHANGE_GAMEINFO:
|
case IOCTLV_WD_CHANGE_GAMEINFO:
|
||||||
case IOCTLV_WD_CHANGE_VTSF:
|
case IOCTLV_WD_CHANGE_VTSF:
|
||||||
case IOCTLV_WD_RECV_FRAME:
|
case IOCTLV_WD_RECV_FRAME:
|
||||||
|
@ -361,8 +382,6 @@ bool CWII_IPC_HLE_Device_net_wd_command::IOCtlV(u32 CommandAddress)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Memory::Write_U32(common_result,
|
|
||||||
CommandBuffer.PayloadBuffer.at(common_vector).m_Address);
|
|
||||||
Memory::Write_U32(return_value, CommandAddress + 4);
|
Memory::Write_U32(return_value, CommandAddress + 4);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -441,6 +441,7 @@ private:
|
||||||
WiiNetConfig config;
|
WiiNetConfig config;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
class CWII_IPC_HLE_Device_net_wd_command : public IWII_IPC_HLE_Device
|
class CWII_IPC_HLE_Device_net_wd_command : public IWII_IPC_HLE_Device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -474,6 +475,53 @@ private:
|
||||||
IOCTLV_WD_RECV_FRAME = 0x8000, // WD_ReceiveFrame
|
IOCTLV_WD_RECV_FRAME = 0x8000, // WD_ReceiveFrame
|
||||||
IOCTLV_WD_RECV_NOTIFICATION = 0x8001 // WD_ReceiveNotification
|
IOCTLV_WD_RECV_NOTIFICATION = 0x8001 // WD_ReceiveNotification
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
BSSID_SIZE = 6,
|
||||||
|
SSID_SIZE = 32
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
SCAN_ACTIVE,
|
||||||
|
SCAN_PASSIVE
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
struct ScanInfo
|
||||||
|
{
|
||||||
|
u16 channel_bitmap;
|
||||||
|
u16 max_channel_time;
|
||||||
|
u8 bssid[BSSID_SIZE];
|
||||||
|
u16 scan_type;
|
||||||
|
u16 ssid_length;
|
||||||
|
u8 ssid[SSID_SIZE];
|
||||||
|
u8 ssid_match_mask[SSID_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct BSSInfo
|
||||||
|
{
|
||||||
|
u16 length;
|
||||||
|
u16 rssi;
|
||||||
|
u8 bssid[BSSID_SIZE];
|
||||||
|
u16 ssid_length;
|
||||||
|
u8 ssid[SSID_SIZE];
|
||||||
|
u16 capabilities;
|
||||||
|
struct rate
|
||||||
|
{
|
||||||
|
u16 basic;
|
||||||
|
u16 support;
|
||||||
|
};
|
||||||
|
u16 beacon_period;
|
||||||
|
u16 DTIM_period;
|
||||||
|
u16 channel;
|
||||||
|
u16 CF_period;
|
||||||
|
u16 CF_max_duration;
|
||||||
|
u16 element_info_length;
|
||||||
|
u16 element_info[1];
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
|
|
Loading…
Reference in New Issue