From a8eb2e2a8f2026abfc868ea6e46acd2903bccf2b Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 18 Feb 2017 02:00:56 -0500 Subject: IOS Network: Split wd/command code into its own source files --- Source/Core/Core/CMakeLists.txt | 2 +- Source/Core/Core/Core.vcxproj | 4 +- Source/Core/Core/Core.vcxproj.filters | 15 ++-- Source/Core/Core/IOS/IPC.cpp | 2 +- Source/Core/Core/IOS/Network/Net.cpp | 107 --------------------------- Source/Core/Core/IOS/Network/Net.h | 110 ---------------------------- Source/Core/Core/IOS/Network/WD/Command.cpp | 103 ++++++++++++++++++++++++++ Source/Core/Core/IOS/Network/WD/Command.h | 108 +++++++++++++++++++++++++++ 8 files changed, 224 insertions(+), 227 deletions(-) delete mode 100644 Source/Core/Core/IOS/Network/Net.cpp delete mode 100644 Source/Core/Core/IOS/Network/Net.h create mode 100644 Source/Core/Core/IOS/Network/WD/Command.cpp create mode 100644 Source/Core/Core/IOS/Network/WD/Command.h (limited to 'Source/Core') diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt index a87078a5d3..72019ec25c 100644 --- a/Source/Core/Core/CMakeLists.txt +++ b/Source/Core/Core/CMakeLists.txt @@ -148,7 +148,6 @@ set(SRCS ActionReplay.cpp IOS/FS/FS.cpp IOS/Network/ICMPLin.cpp IOS/Network/MACUtils.cpp - IOS/Network/Net.cpp IOS/Network/Socket.cpp IOS/Network/SSL.cpp IOS/Network/IP/Top.cpp @@ -157,6 +156,7 @@ set(SRCS ActionReplay.cpp IOS/Network/KD/NWC24Config.cpp IOS/Network/NCD/Config.cpp IOS/Network/NCD/Manage.cpp + IOS/Network/WD/Command.cpp IOS/SDIO/SDIOSlot0.cpp IOS/STM/STM.cpp IOS/USB/Common.cpp diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj index 96b7b51340..b450ea3f39 100644 --- a/Source/Core/Core/Core.vcxproj +++ b/Source/Core/Core/Core.vcxproj @@ -180,7 +180,6 @@ - @@ -189,6 +188,7 @@ + @@ -423,7 +423,6 @@ - @@ -432,6 +431,7 @@ + diff --git a/Source/Core/Core/Core.vcxproj.filters b/Source/Core/Core/Core.vcxproj.filters index 58b522ee06..d4d3cc9e8f 100644 --- a/Source/Core/Core/Core.vcxproj.filters +++ b/Source/Core/Core/Core.vcxproj.filters @@ -136,6 +136,9 @@ {a749993a-d2cf-46b6-9f7f-f76294e9ad02} + + {fc3080d6-d99a-44c6-bdd4-140cec1c6bf0} + {3db8c364-1d72-4660-9179-86d1c46904b9} @@ -764,9 +767,6 @@ IOS\Network - - IOS\Network - IOS\Network @@ -791,6 +791,9 @@ IOS\Network\NCD + + IOS\Network\WD + IOS\SDIO @@ -1368,9 +1371,6 @@ IOS\Network - - IOS\Network - IOS\Network @@ -1395,6 +1395,9 @@ IOS\Network\NCD + + IOS\Network\WD + IOS\SDIO diff --git a/Source/Core/Core/IOS/IPC.cpp b/Source/Core/Core/IOS/IPC.cpp index 3e35895a0f..5a334f6c82 100644 --- a/Source/Core/Core/IOS/IPC.cpp +++ b/Source/Core/Core/IOS/IPC.cpp @@ -48,9 +48,9 @@ #include "Core/IOS/Network/KD/NetKDRequest.h" #include "Core/IOS/Network/KD/NetKDTime.h" #include "Core/IOS/Network/NCD/Manage.h" -#include "Core/IOS/Network/Net.h" #include "Core/IOS/Network/SSL.h" #include "Core/IOS/Network/Socket.h" +#include "Core/IOS/Network/WD/Command.h" #include "Core/IOS/SDIO/SDIOSlot0.h" #include "Core/IOS/STM/STM.h" #include "Core/IOS/USB/Bluetooth/BTEmu.h" diff --git a/Source/Core/Core/IOS/Network/Net.cpp b/Source/Core/Core/IOS/Network/Net.cpp deleted file mode 100644 index 2a03d1bf64..0000000000 --- a/Source/Core/Core/IOS/Network/Net.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2008 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#include "Core/IOS/Network/Net.h" - -#include -#include -#include -#include - -#include "Common/CommonFuncs.h" -#include "Common/CommonTypes.h" -#include "Common/Logging/Log.h" -#include "Common/Network.h" -#include "Core/Core.h" -#include "Core/HW/Memmap.h" -#include "Core/IOS/Network/MACUtils.h" -#include "Core/IOS/Network/Socket.h" - -namespace IOS -{ -namespace HLE -{ -namespace Device -{ -// Handle /dev/net/wd/command requests -NetWDCommand::NetWDCommand(u32 device_id, const std::string& device_name) - : Device(device_id, device_name) -{ -} - -// This is just for debugging / playing around. -// There really is no reason to implement wd unless we can bend it such that -// we can talk to the DS. -IPCCommandResult NetWDCommand::IOCtlV(const IOCtlVRequest& request) -{ - s32 return_value = IPC_SUCCESS; - - switch (request.request) - { - case IOCTLV_WD_SCAN: - { - // Gives parameters detailing type of scan and what to match - // XXX - unused - // ScanInfo *scan = (ScanInfo *)Memory::GetPointer(request.in_vectors.at(0).m_Address); - - u16* results = (u16*)Memory::GetPointer(request.io_vectors.at(0).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((u16)strlen(ssid)); - - bss->channel = Common::swap16(2); - } - break; - - case IOCTLV_WD_GET_INFO: - { - Info* info = (Info*)Memory::GetPointer(request.io_vectors.at(0).address); - memset(info, 0, sizeof(Info)); - // Probably used to disallow certain channels? - memcpy(info->country, "US", 2); - info->ntr_allowed_channels = Common::swap16(0xfffe); - - u8 address[Common::MAC_ADDRESS_SIZE]; - IOS::Net::GetMACAddress(address); - memcpy(info->mac, address, sizeof(info->mac)); - } - break; - - case IOCTLV_WD_GET_MODE: - case IOCTLV_WD_SET_LINKSTATE: - case IOCTLV_WD_GET_LINKSTATE: - case IOCTLV_WD_SET_CONFIG: - case IOCTLV_WD_GET_CONFIG: - case IOCTLV_WD_CHANGE_BEACON: - case IOCTLV_WD_DISASSOC: - case IOCTLV_WD_MP_SEND_FRAME: - case IOCTLV_WD_SEND_FRAME: - case IOCTLV_WD_CALL_WL: - case IOCTLV_WD_MEASURE_CHANNEL: - case IOCTLV_WD_GET_LASTERROR: - case IOCTLV_WD_CHANGE_GAMEINFO: - case IOCTLV_WD_CHANGE_VTSF: - case IOCTLV_WD_RECV_FRAME: - case IOCTLV_WD_RECV_NOTIFICATION: - default: - request.Dump(GetDeviceName(), LogTypes::IOS_NET, LogTypes::LINFO); - } - - return GetDefaultReply(return_value); -} -} // namespace Device -} // namespace HLE -} // namespace IOS diff --git a/Source/Core/Core/IOS/Network/Net.h b/Source/Core/Core/IOS/Network/Net.h deleted file mode 100644 index 118d765f2c..0000000000 --- a/Source/Core/Core/IOS/Network/Net.h +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2008 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#pragma once - -#include - -#include "Common/CommonTypes.h" -#include "Core/IOS/Device.h" -#include "Core/IOS/IPC.h" - -namespace IOS -{ -namespace HLE -{ -// TODO: split this up. -namespace Device -{ -class NetWDCommand : public Device -{ -public: - NetWDCommand(u32 device_id, const std::string& device_name); - - IPCCommandResult IOCtlV(const IOCtlVRequest& request) override; - -private: - enum - { - IOCTLV_WD_GET_MODE = 0x1001, // WD_GetMode - IOCTLV_WD_SET_LINKSTATE = 0x1002, // WD_SetLinkState - IOCTLV_WD_GET_LINKSTATE = 0x1003, // WD_GetLinkState - IOCTLV_WD_SET_CONFIG = 0x1004, // WD_SetConfig - IOCTLV_WD_GET_CONFIG = 0x1005, // WD_GetConfig - IOCTLV_WD_CHANGE_BEACON = 0x1006, // WD_ChangeBeacon - IOCTLV_WD_DISASSOC = 0x1007, // WD_DisAssoc - IOCTLV_WD_MP_SEND_FRAME = 0x1008, // WD_MpSendFrame - IOCTLV_WD_SEND_FRAME = 0x1009, // WD_SendFrame - IOCTLV_WD_SCAN = 0x100a, // WD_Scan - IOCTLV_WD_CALL_WL = 0x100c, // WD_CallWL - IOCTLV_WD_MEASURE_CHANNEL = 0x100b, // WD_MeasureChannel - IOCTLV_WD_GET_LASTERROR = 0x100d, // WD_GetLastError - IOCTLV_WD_GET_INFO = 0x100e, // WD_GetInfo - IOCTLV_WD_CHANGE_GAMEINFO = 0x100f, // WD_ChangeGameInfo - IOCTLV_WD_CHANGE_VTSF = 0x1010, // WD_ChangeVTSF - IOCTLV_WD_RECV_FRAME = 0x8000, // WD_ReceiveFrame - 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]; - }; - - struct Info - { - u8 mac[6]; - u16 ntr_allowed_channels; - u16 unk8; - char country[2]; - u32 unkc; - char wlversion[0x50]; - u8 unk[0x30]; - }; -#pragma pack(pop) -}; -} // namespace Device -} // namespace HLE -} // namespace IOS diff --git a/Source/Core/Core/IOS/Network/WD/Command.cpp b/Source/Core/Core/IOS/Network/WD/Command.cpp new file mode 100644 index 0000000000..236355e32a --- /dev/null +++ b/Source/Core/Core/IOS/Network/WD/Command.cpp @@ -0,0 +1,103 @@ +// Copyright 2008 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "Core/IOS/Network/WD/Command.h" + +#include +#include + +#include "Common/CommonFuncs.h" +#include "Common/CommonTypes.h" +#include "Common/Logging/Log.h" +#include "Common/Network.h" + +#include "Core/HW/Memmap.h" +#include "Core/IOS/Network/MACUtils.h" + +namespace IOS +{ +namespace HLE +{ +namespace Device +{ +NetWDCommand::NetWDCommand(u32 device_id, const std::string& device_name) + : Device(device_id, device_name) +{ +} + +// This is just for debugging / playing around. +// There really is no reason to implement wd unless we can bend it such that +// we can talk to the DS. +IPCCommandResult NetWDCommand::IOCtlV(const IOCtlVRequest& request) +{ + s32 return_value = IPC_SUCCESS; + + switch (request.request) + { + case IOCTLV_WD_SCAN: + { + // Gives parameters detailing type of scan and what to match + // XXX - unused + // ScanInfo *scan = (ScanInfo *)Memory::GetPointer(request.in_vectors.at(0).m_Address); + + u16* results = (u16*)Memory::GetPointer(request.io_vectors.at(0).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((u16)strlen(ssid)); + + bss->channel = Common::swap16(2); + } + break; + + case IOCTLV_WD_GET_INFO: + { + Info* info = (Info*)Memory::GetPointer(request.io_vectors.at(0).address); + memset(info, 0, sizeof(Info)); + // Probably used to disallow certain channels? + memcpy(info->country, "US", 2); + info->ntr_allowed_channels = Common::swap16(0xfffe); + + u8 address[Common::MAC_ADDRESS_SIZE]; + IOS::Net::GetMACAddress(address); + memcpy(info->mac, address, sizeof(info->mac)); + } + break; + + case IOCTLV_WD_GET_MODE: + case IOCTLV_WD_SET_LINKSTATE: + case IOCTLV_WD_GET_LINKSTATE: + case IOCTLV_WD_SET_CONFIG: + case IOCTLV_WD_GET_CONFIG: + case IOCTLV_WD_CHANGE_BEACON: + case IOCTLV_WD_DISASSOC: + case IOCTLV_WD_MP_SEND_FRAME: + case IOCTLV_WD_SEND_FRAME: + case IOCTLV_WD_CALL_WL: + case IOCTLV_WD_MEASURE_CHANNEL: + case IOCTLV_WD_GET_LASTERROR: + case IOCTLV_WD_CHANGE_GAMEINFO: + case IOCTLV_WD_CHANGE_VTSF: + case IOCTLV_WD_RECV_FRAME: + case IOCTLV_WD_RECV_NOTIFICATION: + default: + request.Dump(GetDeviceName(), LogTypes::IOS_NET, LogTypes::LINFO); + } + + return GetDefaultReply(return_value); +} +} // namespace Device +} // namespace HLE +} // namespace IOS diff --git a/Source/Core/Core/IOS/Network/WD/Command.h b/Source/Core/Core/IOS/Network/WD/Command.h new file mode 100644 index 0000000000..3b0decc48a --- /dev/null +++ b/Source/Core/Core/IOS/Network/WD/Command.h @@ -0,0 +1,108 @@ +// Copyright 2008 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include + +#include "Common/CommonTypes.h" +#include "Core/IOS/Device.h" + +namespace IOS +{ +namespace HLE +{ +namespace Device +{ +class NetWDCommand : public Device +{ +public: + NetWDCommand(u32 device_id, const std::string& device_name); + + IPCCommandResult IOCtlV(const IOCtlVRequest& request) override; + +private: + enum + { + IOCTLV_WD_GET_MODE = 0x1001, // WD_GetMode + IOCTLV_WD_SET_LINKSTATE = 0x1002, // WD_SetLinkState + IOCTLV_WD_GET_LINKSTATE = 0x1003, // WD_GetLinkState + IOCTLV_WD_SET_CONFIG = 0x1004, // WD_SetConfig + IOCTLV_WD_GET_CONFIG = 0x1005, // WD_GetConfig + IOCTLV_WD_CHANGE_BEACON = 0x1006, // WD_ChangeBeacon + IOCTLV_WD_DISASSOC = 0x1007, // WD_DisAssoc + IOCTLV_WD_MP_SEND_FRAME = 0x1008, // WD_MpSendFrame + IOCTLV_WD_SEND_FRAME = 0x1009, // WD_SendFrame + IOCTLV_WD_SCAN = 0x100a, // WD_Scan + IOCTLV_WD_CALL_WL = 0x100c, // WD_CallWL + IOCTLV_WD_MEASURE_CHANNEL = 0x100b, // WD_MeasureChannel + IOCTLV_WD_GET_LASTERROR = 0x100d, // WD_GetLastError + IOCTLV_WD_GET_INFO = 0x100e, // WD_GetInfo + IOCTLV_WD_CHANGE_GAMEINFO = 0x100f, // WD_ChangeGameInfo + IOCTLV_WD_CHANGE_VTSF = 0x1010, // WD_ChangeVTSF + IOCTLV_WD_RECV_FRAME = 0x8000, // WD_ReceiveFrame + 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]; + }; + + struct Info + { + u8 mac[6]; + u16 ntr_allowed_channels; + u16 unk8; + char country[2]; + u32 unkc; + char wlversion[0x50]; + u8 unk[0x30]; + }; +#pragma pack(pop) +}; +} // namespace Device +} // namespace HLE +} // namespace IOS -- cgit v1.2.3