diff options
Diffstat (limited to 'src')
25 files changed, 303 insertions, 28 deletions
diff --git a/src/audio_core/CMakeLists.txt b/src/audio_core/CMakeLists.txt index 827ab0ac7..ec71524a3 100644 --- a/src/audio_core/CMakeLists.txt +++ b/src/audio_core/CMakeLists.txt | |||
| @@ -4,8 +4,6 @@ add_library(audio_core STATIC | |||
| 4 | audio_renderer.cpp | 4 | audio_renderer.cpp |
| 5 | audio_renderer.h | 5 | audio_renderer.h |
| 6 | buffer.h | 6 | buffer.h |
| 7 | cubeb_sink.cpp | ||
| 8 | cubeb_sink.h | ||
| 9 | codec.cpp | 7 | codec.cpp |
| 10 | codec.h | 8 | codec.h |
| 11 | null_sink.h | 9 | null_sink.h |
| @@ -15,6 +13,8 @@ add_library(audio_core STATIC | |||
| 15 | sink_details.cpp | 13 | sink_details.cpp |
| 16 | sink_details.h | 14 | sink_details.h |
| 17 | sink_stream.h | 15 | sink_stream.h |
| 16 | |||
| 17 | $<$<BOOL:${ENABLE_CUBEB}>:cubeb_sink.cpp cubeb_sink.h> | ||
| 18 | ) | 18 | ) |
| 19 | 19 | ||
| 20 | create_target_directory_groups(audio_core) | 20 | create_target_directory_groups(audio_core) |
diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp index 816414e8d..355abd682 100644 --- a/src/common/logging/backend.cpp +++ b/src/common/logging/backend.cpp | |||
| @@ -200,6 +200,7 @@ void FileBackend::Write(const Entry& entry) { | |||
| 200 | SUB(Service, SPL) \ | 200 | SUB(Service, SPL) \ |
| 201 | SUB(Service, SSL) \ | 201 | SUB(Service, SSL) \ |
| 202 | SUB(Service, Time) \ | 202 | SUB(Service, Time) \ |
| 203 | SUB(Service, USB) \ | ||
| 203 | SUB(Service, VI) \ | 204 | SUB(Service, VI) \ |
| 204 | SUB(Service, WLAN) \ | 205 | SUB(Service, WLAN) \ |
| 205 | CLS(HW) \ | 206 | CLS(HW) \ |
diff --git a/src/common/logging/log.h b/src/common/logging/log.h index 7ab5277ea..a889ebefa 100644 --- a/src/common/logging/log.h +++ b/src/common/logging/log.h | |||
| @@ -87,6 +87,7 @@ enum class Class : ClassType { | |||
| 87 | Service_SPL, ///< The SPL service | 87 | Service_SPL, ///< The SPL service |
| 88 | Service_SSL, ///< The SSL service | 88 | Service_SSL, ///< The SSL service |
| 89 | Service_Time, ///< The time service | 89 | Service_Time, ///< The time service |
| 90 | Service_USB, ///< The USB (Universal Serial Bus) service | ||
| 90 | Service_VI, ///< The VI (Video interface) service | 91 | Service_VI, ///< The VI (Video interface) service |
| 91 | Service_WLAN, ///< The WLAN (Wireless local area network) service | 92 | Service_WLAN, ///< The WLAN (Wireless local area network) service |
| 92 | HW, ///< Low-level hardware emulation | 93 | HW, ///< Low-level hardware emulation |
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index c11f017da..0abf7edc1 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -315,6 +315,8 @@ add_library(core STATIC | |||
| 315 | hle/service/time/interface.h | 315 | hle/service/time/interface.h |
| 316 | hle/service/time/time.cpp | 316 | hle/service/time/time.cpp |
| 317 | hle/service/time/time.h | 317 | hle/service/time/time.h |
| 318 | hle/service/usb/usb.cpp | ||
| 319 | hle/service/usb/usb.h | ||
| 318 | hle/service/vi/vi.cpp | 320 | hle/service/vi/vi.cpp |
| 319 | hle/service/vi/vi.h | 321 | hle/service/vi/vi.h |
| 320 | hle/service/vi/vi_m.cpp | 322 | hle/service/vi/vi_m.cpp |
diff --git a/src/core/hle/kernel/client_port.cpp b/src/core/hle/kernel/client_port.cpp index 7933c105c..134e41ebc 100644 --- a/src/core/hle/kernel/client_port.cpp +++ b/src/core/hle/kernel/client_port.cpp | |||
| @@ -14,8 +14,8 @@ | |||
| 14 | 14 | ||
| 15 | namespace Kernel { | 15 | namespace Kernel { |
| 16 | 16 | ||
| 17 | ClientPort::ClientPort() {} | 17 | ClientPort::ClientPort() = default; |
| 18 | ClientPort::~ClientPort() {} | 18 | ClientPort::~ClientPort() = default; |
| 19 | 19 | ||
| 20 | ResultVal<SharedPtr<ClientSession>> ClientPort::Connect() { | 20 | ResultVal<SharedPtr<ClientSession>> ClientPort::Connect() { |
| 21 | // Note: Threads do not wait for the server endpoint to call | 21 | // Note: Threads do not wait for the server endpoint to call |
| @@ -40,4 +40,12 @@ ResultVal<SharedPtr<ClientSession>> ClientPort::Connect() { | |||
| 40 | return MakeResult(std::get<SharedPtr<ClientSession>>(sessions)); | 40 | return MakeResult(std::get<SharedPtr<ClientSession>>(sessions)); |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | void ClientPort::ConnectionClosed() { | ||
| 44 | if (active_sessions == 0) { | ||
| 45 | return; | ||
| 46 | } | ||
| 47 | |||
| 48 | --active_sessions; | ||
| 49 | } | ||
| 50 | |||
| 43 | } // namespace Kernel | 51 | } // namespace Kernel |
diff --git a/src/core/hle/kernel/client_port.h b/src/core/hle/kernel/client_port.h index b42c94bde..b1269ea5c 100644 --- a/src/core/hle/kernel/client_port.h +++ b/src/core/hle/kernel/client_port.h | |||
| @@ -37,14 +37,20 @@ public: | |||
| 37 | */ | 37 | */ |
| 38 | ResultVal<SharedPtr<ClientSession>> Connect(); | 38 | ResultVal<SharedPtr<ClientSession>> Connect(); |
| 39 | 39 | ||
| 40 | SharedPtr<ServerPort> server_port; ///< ServerPort associated with this client port. | 40 | /** |
| 41 | u32 max_sessions; ///< Maximum number of simultaneous sessions the port can have | 41 | * Signifies that a previously active connection has been closed, |
| 42 | u32 active_sessions; ///< Number of currently open sessions to this port | 42 | * decreasing the total number of active connections to this port. |
| 43 | std::string name; ///< Name of client port (optional) | 43 | */ |
| 44 | void ConnectionClosed(); | ||
| 44 | 45 | ||
| 45 | private: | 46 | private: |
| 46 | ClientPort(); | 47 | ClientPort(); |
| 47 | ~ClientPort() override; | 48 | ~ClientPort() override; |
| 49 | |||
| 50 | SharedPtr<ServerPort> server_port; ///< ServerPort associated with this client port. | ||
| 51 | u32 max_sessions = 0; ///< Maximum number of simultaneous sessions the port can have | ||
| 52 | u32 active_sessions = 0; ///< Number of currently open sessions to this port | ||
| 53 | std::string name; ///< Name of client port (optional) | ||
| 48 | }; | 54 | }; |
| 49 | 55 | ||
| 50 | } // namespace Kernel | 56 | } // namespace Kernel |
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp index 60370e9ec..93560152f 100644 --- a/src/core/hle/kernel/server_session.cpp +++ b/src/core/hle/kernel/server_session.cpp | |||
| @@ -27,7 +27,7 @@ ServerSession::~ServerSession() { | |||
| 27 | 27 | ||
| 28 | // Decrease the port's connection count. | 28 | // Decrease the port's connection count. |
| 29 | if (parent->port) | 29 | if (parent->port) |
| 30 | parent->port->active_sessions--; | 30 | parent->port->ConnectionClosed(); |
| 31 | 31 | ||
| 32 | // TODO(Subv): Wake up all the ClientSession's waiting threads and set | 32 | // TODO(Subv): Wake up all the ClientSession's waiting threads and set |
| 33 | // the SendSyncRequest result to 0xC920181A. | 33 | // the SendSyncRequest result to 0xC920181A. |
diff --git a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp index 2b74e6a33..8bc49935a 100644 --- a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp +++ b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp | |||
| @@ -7,8 +7,8 @@ | |||
| 7 | #include "core/core.h" | 7 | #include "core/core.h" |
| 8 | #include "core/hle/service/nvdrv/devices/nvdisp_disp0.h" | 8 | #include "core/hle/service/nvdrv/devices/nvdisp_disp0.h" |
| 9 | #include "core/hle/service/nvdrv/devices/nvmap.h" | 9 | #include "core/hle/service/nvdrv/devices/nvmap.h" |
| 10 | #include "video_core/gpu.h" | ||
| 10 | #include "video_core/renderer_base.h" | 11 | #include "video_core/renderer_base.h" |
| 11 | #include "video_core/video_core.h" | ||
| 12 | 12 | ||
| 13 | namespace Service::Nvidia::Devices { | 13 | namespace Service::Nvidia::Devices { |
| 14 | 14 | ||
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp index 4b601781f..be2b79256 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp | |||
| @@ -2,14 +2,15 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <cinttypes> | 5 | #include <cstring> |
| 6 | #include "common/assert.h" | 6 | #include "common/assert.h" |
| 7 | #include "common/logging/log.h" | 7 | #include "common/logging/log.h" |
| 8 | #include "core/core.h" | 8 | #include "core/core.h" |
| 9 | #include "core/hle/service/nvdrv/devices/nvhost_as_gpu.h" | 9 | #include "core/hle/service/nvdrv/devices/nvhost_as_gpu.h" |
| 10 | #include "core/hle/service/nvdrv/devices/nvmap.h" | 10 | #include "core/hle/service/nvdrv/devices/nvmap.h" |
| 11 | #include "video_core/memory_manager.h" | ||
| 12 | #include "video_core/rasterizer_interface.h" | ||
| 11 | #include "video_core/renderer_base.h" | 13 | #include "video_core/renderer_base.h" |
| 12 | #include "video_core/video_core.h" | ||
| 13 | 14 | ||
| 14 | namespace Service::Nvidia::Devices { | 15 | namespace Service::Nvidia::Devices { |
| 15 | 16 | ||
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp index 671b092e1..5685eb2be 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp | |||
| @@ -2,6 +2,9 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <cstdlib> | ||
| 6 | #include <cstring> | ||
| 7 | |||
| 5 | #include "common/assert.h" | 8 | #include "common/assert.h" |
| 6 | #include "common/logging/log.h" | 9 | #include "common/logging/log.h" |
| 7 | #include "core/hle/service/nvdrv/devices/nvhost_ctrl.h" | 10 | #include "core/hle/service/nvdrv/devices/nvhost_ctrl.h" |
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.h b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.h index 090261a60..6b496e9fe 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.h +++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.h | |||
| @@ -5,8 +5,6 @@ | |||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <array> | 7 | #include <array> |
| 8 | #include <cstdlib> | ||
| 9 | #include <cstring> | ||
| 10 | #include <vector> | 8 | #include <vector> |
| 11 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
| 12 | #include "core/hle/service/nvdrv/devices/nvdevice.h" | 10 | #include "core/hle/service/nvdrv/devices/nvdevice.h" |
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp index 010072a5b..ae421247d 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <cinttypes> | 5 | #include <cstring> |
| 6 | #include "common/assert.h" | 6 | #include "common/assert.h" |
| 7 | #include "common/logging/log.h" | 7 | #include "common/logging/log.h" |
| 8 | #include "core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h" | 8 | #include "core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h" |
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp index 5a1123ad2..116dabedb 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp | |||
| @@ -2,12 +2,14 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <cinttypes> | 5 | #include <cstring> |
| 6 | #include <map> | ||
| 7 | #include "common/assert.h" | 6 | #include "common/assert.h" |
| 8 | #include "common/logging/log.h" | 7 | #include "common/logging/log.h" |
| 9 | #include "core/core.h" | 8 | #include "core/core.h" |
| 10 | #include "core/hle/service/nvdrv/devices/nvhost_gpu.h" | 9 | #include "core/hle/service/nvdrv/devices/nvhost_gpu.h" |
| 10 | #include "core/memory.h" | ||
| 11 | #include "video_core/gpu.h" | ||
| 12 | #include "video_core/memory_manager.h" | ||
| 11 | 13 | ||
| 12 | namespace Service::Nvidia::Devices { | 14 | namespace Service::Nvidia::Devices { |
| 13 | 15 | ||
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_gpu.h b/src/core/hle/service/nvdrv/devices/nvhost_gpu.h index aa8df2e6e..650ed8fbc 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_gpu.h +++ b/src/core/hle/service/nvdrv/devices/nvhost_gpu.h | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <vector> | 8 | #include <vector> |
| 9 | #include "common/bit_field.h" | ||
| 9 | #include "common/common_types.h" | 10 | #include "common/common_types.h" |
| 10 | #include "common/swap.h" | 11 | #include "common/swap.h" |
| 11 | #include "core/hle/service/nvdrv/devices/nvdevice.h" | 12 | #include "core/hle/service/nvdrv/devices/nvdevice.h" |
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp b/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp index b51c73ee8..364619e67 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <cstring> | ||
| 6 | |||
| 5 | #include "common/assert.h" | 7 | #include "common/assert.h" |
| 6 | #include "common/logging/log.h" | 8 | #include "common/logging/log.h" |
| 7 | #include "core/hle/service/nvdrv/devices/nvhost_nvdec.h" | 9 | #include "core/hle/service/nvdrv/devices/nvhost_nvdec.h" |
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvdec.h b/src/core/hle/service/nvdrv/devices/nvhost_nvdec.h index 0192aecdd..6ad74421b 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_nvdec.h +++ b/src/core/hle/service/nvdrv/devices/nvhost_nvdec.h | |||
| @@ -4,11 +4,9 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <array> | ||
| 8 | #include <cstdlib> | ||
| 9 | #include <cstring> | ||
| 10 | #include <vector> | 7 | #include <vector> |
| 11 | #include "common/common_types.h" | 8 | #include "common/common_types.h" |
| 9 | #include "common/swap.h" | ||
| 12 | #include "core/hle/service/nvdrv/devices/nvdevice.h" | 10 | #include "core/hle/service/nvdrv/devices/nvdevice.h" |
| 13 | 11 | ||
| 14 | namespace Service::Nvidia::Devices { | 12 | namespace Service::Nvidia::Devices { |
diff --git a/src/core/hle/service/nvdrv/devices/nvmap.cpp b/src/core/hle/service/nvdrv/devices/nvmap.cpp index 724eeb139..e9305bfb3 100644 --- a/src/core/hle/service/nvdrv/devices/nvmap.cpp +++ b/src/core/hle/service/nvdrv/devices/nvmap.cpp | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <algorithm> | 5 | #include <algorithm> |
| 6 | #include <cinttypes> | 6 | #include <cstring> |
| 7 | 7 | ||
| 8 | #include "common/assert.h" | 8 | #include "common/assert.h" |
| 9 | #include "common/logging/log.h" | 9 | #include "common/logging/log.h" |
diff --git a/src/core/hle/service/nvdrv/interface.h b/src/core/hle/service/nvdrv/interface.h index 959b5ba29..1c3529bb6 100644 --- a/src/core/hle/service/nvdrv/interface.h +++ b/src/core/hle/service/nvdrv/interface.h | |||
| @@ -5,7 +5,6 @@ | |||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <string> | ||
| 9 | #include "core/hle/kernel/event.h" | 8 | #include "core/hle/kernel/event.h" |
| 10 | #include "core/hle/service/nvdrv/nvdrv.h" | 9 | #include "core/hle/service/nvdrv/nvdrv.h" |
| 11 | #include "core/hle/service/service.h" | 10 | #include "core/hle/service/service.h" |
diff --git a/src/core/hle/service/nvdrv/nvdrv.cpp b/src/core/hle/service/nvdrv/nvdrv.cpp index 1555ea806..e8b30921a 100644 --- a/src/core/hle/service/nvdrv/nvdrv.cpp +++ b/src/core/hle/service/nvdrv/nvdrv.cpp | |||
| @@ -54,7 +54,7 @@ u32 Module::Open(const std::string& device_name) { | |||
| 54 | return fd; | 54 | return fd; |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | u32 Module::Ioctl(u32 fd, u32_le command, const std::vector<u8>& input, std::vector<u8>& output) { | 57 | u32 Module::Ioctl(u32 fd, u32 command, const std::vector<u8>& input, std::vector<u8>& output) { |
| 58 | auto itr = open_files.find(fd); | 58 | auto itr = open_files.find(fd); |
| 59 | ASSERT_MSG(itr != open_files.end(), "Tried to talk to an invalid device"); | 59 | ASSERT_MSG(itr != open_files.end(), "Tried to talk to an invalid device"); |
| 60 | 60 | ||
diff --git a/src/core/hle/service/nvdrv/nvmemp.cpp b/src/core/hle/service/nvdrv/nvmemp.cpp index 9ca6e5512..0e8e21bad 100644 --- a/src/core/hle/service/nvdrv/nvmemp.cpp +++ b/src/core/hle/service/nvdrv/nvmemp.cpp | |||
| @@ -4,8 +4,6 @@ | |||
| 4 | 4 | ||
| 5 | #include "common/assert.h" | 5 | #include "common/assert.h" |
| 6 | #include "common/logging/log.h" | 6 | #include "common/logging/log.h" |
| 7 | #include "core/hle/ipc_helpers.h" | ||
| 8 | #include "core/hle/service/nvdrv/nvdrv.h" | ||
| 9 | #include "core/hle/service/nvdrv/nvmemp.h" | 7 | #include "core/hle/service/nvdrv/nvmemp.h" |
| 10 | 8 | ||
| 11 | namespace Service::Nvidia { | 9 | namespace Service::Nvidia { |
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 31ea79773..889cdd41a 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -63,6 +63,7 @@ | |||
| 63 | #include "core/hle/service/spl/module.h" | 63 | #include "core/hle/service/spl/module.h" |
| 64 | #include "core/hle/service/ssl/ssl.h" | 64 | #include "core/hle/service/ssl/ssl.h" |
| 65 | #include "core/hle/service/time/time.h" | 65 | #include "core/hle/service/time/time.h" |
| 66 | #include "core/hle/service/usb/usb.h" | ||
| 66 | #include "core/hle/service/vi/vi.h" | 67 | #include "core/hle/service/vi/vi.h" |
| 67 | #include "core/hle/service/wlan/wlan.h" | 68 | #include "core/hle/service/wlan/wlan.h" |
| 68 | 69 | ||
| @@ -249,6 +250,7 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm) { | |||
| 249 | SPL::InstallInterfaces(*sm); | 250 | SPL::InstallInterfaces(*sm); |
| 250 | SSL::InstallInterfaces(*sm); | 251 | SSL::InstallInterfaces(*sm); |
| 251 | Time::InstallInterfaces(*sm); | 252 | Time::InstallInterfaces(*sm); |
| 253 | USB::InstallInterfaces(*sm); | ||
| 252 | VI::InstallInterfaces(*sm, nv_flinger); | 254 | VI::InstallInterfaces(*sm, nv_flinger); |
| 253 | WLAN::InstallInterfaces(*sm); | 255 | WLAN::InstallInterfaces(*sm); |
| 254 | 256 | ||
diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index 37b58bb77..2172c681b 100644 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp | |||
| @@ -80,8 +80,8 @@ public: | |||
| 80 | {5, nullptr, "GetTimeZoneRuleVersion"}, | 80 | {5, nullptr, "GetTimeZoneRuleVersion"}, |
| 81 | {100, &ITimeZoneService::ToCalendarTime, "ToCalendarTime"}, | 81 | {100, &ITimeZoneService::ToCalendarTime, "ToCalendarTime"}, |
| 82 | {101, &ITimeZoneService::ToCalendarTimeWithMyRule, "ToCalendarTimeWithMyRule"}, | 82 | {101, &ITimeZoneService::ToCalendarTimeWithMyRule, "ToCalendarTimeWithMyRule"}, |
| 83 | {200, nullptr, "ToPosixTime"}, | 83 | {201, nullptr, "ToPosixTime"}, |
| 84 | {201, nullptr, "ToPosixTimeWithMyRule"}, | 84 | {202, nullptr, "ToPosixTimeWithMyRule"}, |
| 85 | }; | 85 | }; |
| 86 | RegisterHandlers(functions); | 86 | RegisterHandlers(functions); |
| 87 | } | 87 | } |
diff --git a/src/core/hle/service/usb/usb.cpp b/src/core/hle/service/usb/usb.cpp new file mode 100644 index 000000000..e7fb5a419 --- /dev/null +++ b/src/core/hle/service/usb/usb.cpp | |||
| @@ -0,0 +1,238 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include <memory> | ||
| 6 | |||
| 7 | #include "common/logging/log.h" | ||
| 8 | #include "core/hle/ipc_helpers.h" | ||
| 9 | #include "core/hle/kernel/hle_ipc.h" | ||
| 10 | #include "core/hle/service/service.h" | ||
| 11 | #include "core/hle/service/sm/sm.h" | ||
| 12 | #include "core/hle/service/usb/usb.h" | ||
| 13 | |||
| 14 | namespace Service::USB { | ||
| 15 | |||
| 16 | class IDsInterface final : public ServiceFramework<IDsInterface> { | ||
| 17 | public: | ||
| 18 | explicit IDsInterface() : ServiceFramework{"IDsInterface"} { | ||
| 19 | // clang-format off | ||
| 20 | static const FunctionInfo functions[] = { | ||
| 21 | {0, nullptr, "GetDsEndpoint"}, | ||
| 22 | {1, nullptr, "GetSetupEvent"}, | ||
| 23 | {2, nullptr, "Unknown"}, | ||
| 24 | {3, nullptr, "EnableInterface"}, | ||
| 25 | {4, nullptr, "DisableInterface"}, | ||
| 26 | {5, nullptr, "CtrlInPostBufferAsync"}, | ||
| 27 | {6, nullptr, "CtrlOutPostBufferAsync"}, | ||
| 28 | {7, nullptr, "GetCtrlInCompletionEvent"}, | ||
| 29 | {8, nullptr, "GetCtrlInReportData"}, | ||
| 30 | {9, nullptr, "GetCtrlOutCompletionEvent"}, | ||
| 31 | {10, nullptr, "GetCtrlOutReportData"}, | ||
| 32 | {11, nullptr, "StallCtrl"}, | ||
| 33 | {12, nullptr, "AppendConfigurationData"}, | ||
| 34 | }; | ||
| 35 | // clang-format on | ||
| 36 | |||
| 37 | RegisterHandlers(functions); | ||
| 38 | } | ||
| 39 | }; | ||
| 40 | |||
| 41 | class USB_DS final : public ServiceFramework<USB_DS> { | ||
| 42 | public: | ||
| 43 | explicit USB_DS() : ServiceFramework{"usb:ds"} { | ||
| 44 | // clang-format off | ||
| 45 | static const FunctionInfo functions[] = { | ||
| 46 | {0, nullptr, "BindDevice"}, | ||
| 47 | {1, nullptr, "BindClientProcess"}, | ||
| 48 | {2, nullptr, "GetDsInterface"}, | ||
| 49 | {3, nullptr, "GetStateChangeEvent"}, | ||
| 50 | {4, nullptr, "GetState"}, | ||
| 51 | {5, nullptr, "ClearDeviceData"}, | ||
| 52 | {6, nullptr, "AddUsbStringDescriptor"}, | ||
| 53 | {7, nullptr, "DeleteUsbStringDescriptor"}, | ||
| 54 | {8, nullptr, "SetUsbDeviceDescriptor"}, | ||
| 55 | {9, nullptr, "SetBinaryObjectStore"}, | ||
| 56 | {10, nullptr, "Enable"}, | ||
| 57 | {11, nullptr, "Disable"}, | ||
| 58 | }; | ||
| 59 | // clang-format on | ||
| 60 | |||
| 61 | RegisterHandlers(functions); | ||
| 62 | } | ||
| 63 | }; | ||
| 64 | |||
| 65 | class IClientEpSession final : public ServiceFramework<IClientEpSession> { | ||
| 66 | public: | ||
| 67 | explicit IClientEpSession() : ServiceFramework{"IClientEpSession"} { | ||
| 68 | // clang-format off | ||
| 69 | static const FunctionInfo functions[] = { | ||
| 70 | {0, nullptr, "Unknown1"}, | ||
| 71 | {1, nullptr, "Unknown2"}, | ||
| 72 | {2, nullptr, "Unknown3"}, | ||
| 73 | {3, nullptr, "Unknown4"}, | ||
| 74 | {4, nullptr, "PostBufferAsync"}, | ||
| 75 | {5, nullptr, "Unknown5"}, | ||
| 76 | {6, nullptr, "Unknown6"}, | ||
| 77 | {7, nullptr, "Unknown7"}, | ||
| 78 | {8, nullptr, "Unknown8"}, | ||
| 79 | }; | ||
| 80 | // clang-format on | ||
| 81 | |||
| 82 | RegisterHandlers(functions); | ||
| 83 | } | ||
| 84 | }; | ||
| 85 | |||
| 86 | class IClientIfSession final : public ServiceFramework<IClientIfSession> { | ||
| 87 | public: | ||
| 88 | explicit IClientIfSession() : ServiceFramework{"IClientIfSession"} { | ||
| 89 | // clang-format off | ||
| 90 | static const FunctionInfo functions[] = { | ||
| 91 | {0, nullptr, "Unknown1"}, | ||
| 92 | {1, nullptr, "Unknown2"}, | ||
| 93 | {2, nullptr, "Unknown3"}, | ||
| 94 | {3, nullptr, "Unknown4"}, | ||
| 95 | {4, nullptr, "Unknown5"}, | ||
| 96 | {5, nullptr, "CtrlXferAsync"}, | ||
| 97 | {6, nullptr, "Unknown6"}, | ||
| 98 | {7, nullptr, "GetCtrlXferReport"}, | ||
| 99 | {8, nullptr, "Unknown7"}, | ||
| 100 | {9, nullptr, "GetClientEpSession"}, | ||
| 101 | }; | ||
| 102 | // clang-format on | ||
| 103 | |||
| 104 | RegisterHandlers(functions); | ||
| 105 | } | ||
| 106 | }; | ||
| 107 | |||
| 108 | class USB_HS final : public ServiceFramework<USB_HS> { | ||
| 109 | public: | ||
| 110 | explicit USB_HS() : ServiceFramework{"usb:hs"} { | ||
| 111 | // clang-format off | ||
| 112 | static const FunctionInfo functions[] = { | ||
| 113 | {0, nullptr, "BindClientProcess"}, | ||
| 114 | {1, nullptr, "Unknown1"}, | ||
| 115 | {2, nullptr, "Unknown2"}, | ||
| 116 | {3, nullptr, "Unknown3"}, | ||
| 117 | {4, nullptr, "Unknown4"}, | ||
| 118 | {5, nullptr, "Unknown5"}, | ||
| 119 | {6, nullptr, "GetInterfaceStateChangeEvent"}, | ||
| 120 | {7, nullptr, "GetClientIfSession"}, | ||
| 121 | }; | ||
| 122 | // clang-format on | ||
| 123 | |||
| 124 | RegisterHandlers(functions); | ||
| 125 | } | ||
| 126 | }; | ||
| 127 | |||
| 128 | class IPdSession final : public ServiceFramework<IPdSession> { | ||
| 129 | public: | ||
| 130 | explicit IPdSession() : ServiceFramework{"IPdSession"} { | ||
| 131 | // clang-format off | ||
| 132 | static const FunctionInfo functions[] = { | ||
| 133 | {0, nullptr, "BindNoticeEvent"}, | ||
| 134 | {1, nullptr, "Unknown1"}, | ||
| 135 | {2, nullptr, "GetStatus"}, | ||
| 136 | {3, nullptr, "GetNotice"}, | ||
| 137 | {4, nullptr, "Unknown2"}, | ||
| 138 | {5, nullptr, "Unknown3"}, | ||
| 139 | {6, nullptr, "ReplyPowerRequest"}, | ||
| 140 | }; | ||
| 141 | // clang-format on | ||
| 142 | |||
| 143 | RegisterHandlers(functions); | ||
| 144 | } | ||
| 145 | }; | ||
| 146 | |||
| 147 | class USB_PD final : public ServiceFramework<USB_PD> { | ||
| 148 | public: | ||
| 149 | explicit USB_PD() : ServiceFramework{"usb:pd"} { | ||
| 150 | // clang-format off | ||
| 151 | static const FunctionInfo functions[] = { | ||
| 152 | {0, &USB_PD::GetPdSession, "GetPdSession"}, | ||
| 153 | }; | ||
| 154 | // clang-format on | ||
| 155 | |||
| 156 | RegisterHandlers(functions); | ||
| 157 | } | ||
| 158 | |||
| 159 | private: | ||
| 160 | void GetPdSession(Kernel::HLERequestContext& ctx) { | ||
| 161 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 162 | rb.Push(RESULT_SUCCESS); | ||
| 163 | rb.PushIpcInterface<IPdSession>(); | ||
| 164 | |||
| 165 | LOG_DEBUG(Service_USB, "called"); | ||
| 166 | } | ||
| 167 | }; | ||
| 168 | |||
| 169 | class IPdCradleSession final : public ServiceFramework<IPdCradleSession> { | ||
| 170 | public: | ||
| 171 | explicit IPdCradleSession() : ServiceFramework{"IPdCradleSession"} { | ||
| 172 | // clang-format off | ||
| 173 | static const FunctionInfo functions[] = { | ||
| 174 | {0, nullptr, "VdmUserWrite"}, | ||
| 175 | {1, nullptr, "VdmUserRead"}, | ||
| 176 | {2, nullptr, "Vdm20Init"}, | ||
| 177 | {3, nullptr, "GetFwType"}, | ||
| 178 | {4, nullptr, "GetFwRevision"}, | ||
| 179 | {5, nullptr, "GetManufacturerId"}, | ||
| 180 | {6, nullptr, "GetDeviceId"}, | ||
| 181 | {7, nullptr, "Unknown1"}, | ||
| 182 | {8, nullptr, "Unknown2"}, | ||
| 183 | }; | ||
| 184 | // clang-format on | ||
| 185 | |||
| 186 | RegisterHandlers(functions); | ||
| 187 | } | ||
| 188 | }; | ||
| 189 | |||
| 190 | class USB_PD_C final : public ServiceFramework<USB_PD_C> { | ||
| 191 | public: | ||
| 192 | explicit USB_PD_C() : ServiceFramework{"usb:pd:c"} { | ||
| 193 | // clang-format off | ||
| 194 | static const FunctionInfo functions[] = { | ||
| 195 | {0, &USB_PD_C::GetPdCradleSession, "GetPdCradleSession"}, | ||
| 196 | }; | ||
| 197 | // clang-format on | ||
| 198 | |||
| 199 | RegisterHandlers(functions); | ||
| 200 | } | ||
| 201 | |||
| 202 | private: | ||
| 203 | void GetPdCradleSession(Kernel::HLERequestContext& ctx) { | ||
| 204 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||
| 205 | rb.Push(RESULT_SUCCESS); | ||
| 206 | rb.PushIpcInterface<IPdCradleSession>(); | ||
| 207 | |||
| 208 | LOG_DEBUG(Service_USB, "called"); | ||
| 209 | } | ||
| 210 | }; | ||
| 211 | |||
| 212 | class USB_PM final : public ServiceFramework<USB_PM> { | ||
| 213 | public: | ||
| 214 | explicit USB_PM() : ServiceFramework{"usb:pm"} { | ||
| 215 | // clang-format off | ||
| 216 | static const FunctionInfo functions[] = { | ||
| 217 | {0, nullptr, "Unknown1"}, | ||
| 218 | {1, nullptr, "Unknown2"}, | ||
| 219 | {2, nullptr, "Unknown3"}, | ||
| 220 | {3, nullptr, "Unknown4"}, | ||
| 221 | {4, nullptr, "Unknown5"}, | ||
| 222 | {5, nullptr, "Unknown6"}, | ||
| 223 | }; | ||
| 224 | // clang-format on | ||
| 225 | |||
| 226 | RegisterHandlers(functions); | ||
| 227 | } | ||
| 228 | }; | ||
| 229 | |||
| 230 | void InstallInterfaces(SM::ServiceManager& sm) { | ||
| 231 | std::make_shared<USB_DS>()->InstallAsService(sm); | ||
| 232 | std::make_shared<USB_HS>()->InstallAsService(sm); | ||
| 233 | std::make_shared<USB_PD>()->InstallAsService(sm); | ||
| 234 | std::make_shared<USB_PD_C>()->InstallAsService(sm); | ||
| 235 | std::make_shared<USB_PM>()->InstallAsService(sm); | ||
| 236 | } | ||
| 237 | |||
| 238 | } // namespace Service::USB | ||
diff --git a/src/core/hle/service/usb/usb.h b/src/core/hle/service/usb/usb.h new file mode 100644 index 000000000..970a11fe8 --- /dev/null +++ b/src/core/hle/service/usb/usb.h | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | // Copyright 2018 yuzu emulator team | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | namespace Service::SM { | ||
| 8 | class ServiceManager; | ||
| 9 | } | ||
| 10 | |||
| 11 | namespace Service::USB { | ||
| 12 | |||
| 13 | void InstallInterfaces(SM::ServiceManager& sm); | ||
| 14 | |||
| 15 | } // namespace Service::USB | ||
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp index 076927dff..9a8cdd0ff 100644 --- a/src/core/loader/deconstructed_rom_directory.cpp +++ b/src/core/loader/deconstructed_rom_directory.cpp | |||
| @@ -41,7 +41,7 @@ ResultStatus AppLoader_DeconstructedRomDirectory::Load( | |||
| 41 | if (dir == nullptr) { | 41 | if (dir == nullptr) { |
| 42 | if (file == nullptr) | 42 | if (file == nullptr) |
| 43 | return ResultStatus::ErrorInvalidFormat; | 43 | return ResultStatus::ErrorInvalidFormat; |
| 44 | const FileSys::VirtualDir dir = file->GetContainingDirectory(); | 44 | dir = file->GetContainingDirectory(); |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | const FileSys::VirtualFile npdm = dir->GetFile("main.npdm"); | 47 | const FileSys::VirtualFile npdm = dir->GetFile("main.npdm"); |