diff options
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/service/audio/audin_u.cpp | 41 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audin_u.h | 23 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audio.cpp | 8 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audout_u.cpp | 43 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audout_u.h | 5 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audrec_u.cpp | 38 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audrec_u.h | 23 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audren_u.cpp | 44 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audren_u.h | 23 | ||||
| -rw-r--r-- | src/core/hle/service/audio/codecctl.cpp | 33 | ||||
| -rw-r--r-- | src/core/hle/service/audio/codecctl.h | 23 |
11 files changed, 299 insertions, 5 deletions
diff --git a/src/core/hle/service/audio/audin_u.cpp b/src/core/hle/service/audio/audin_u.cpp new file mode 100644 index 000000000..ee749fddd --- /dev/null +++ b/src/core/hle/service/audio/audin_u.cpp | |||
| @@ -0,0 +1,41 @@ | |||
| 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 "common/logging/log.h" | ||
| 6 | #include "core/hle/ipc_helpers.h" | ||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/audio/audin_u.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace Audio { | ||
| 12 | |||
| 13 | class IAudioIn final : public ServiceFramework<IAudioIn> { | ||
| 14 | public: | ||
| 15 | IAudioIn() : ServiceFramework("IAudioIn") { | ||
| 16 | static const FunctionInfo functions[] = { | ||
| 17 | {0x0, nullptr, "GetAudioInState"}, | ||
| 18 | {0x1, nullptr, "StartAudioIn"}, | ||
| 19 | {0x2, nullptr, "StopAudioIn"}, | ||
| 20 | {0x3, nullptr, "AppendAudioInBuffer_1"}, | ||
| 21 | {0x4, nullptr, "RegisterBufferEvent"}, | ||
| 22 | {0x5, nullptr, "GetReleasedAudioInBuffer_1"}, | ||
| 23 | {0x6, nullptr, "ContainsAudioInBuffer"}, | ||
| 24 | {0x7, nullptr, "AppendAudioInBuffer_2"}, | ||
| 25 | {0x8, nullptr, "GetReleasedAudioInBuffer_2"}, | ||
| 26 | }; | ||
| 27 | RegisterHandlers(functions); | ||
| 28 | } | ||
| 29 | ~IAudioIn() = default; | ||
| 30 | }; | ||
| 31 | |||
| 32 | AudInU::AudInU() : ServiceFramework("audin:u") { | ||
| 33 | static const FunctionInfo functions[] = { | ||
| 34 | {0x00000000, nullptr, "ListAudioIns"}, | ||
| 35 | {0x00000001, nullptr, "OpenAudioIn"}, | ||
| 36 | }; | ||
| 37 | RegisterHandlers(functions); | ||
| 38 | } | ||
| 39 | |||
| 40 | } // namespace Audio | ||
| 41 | } // namespace Service | ||
diff --git a/src/core/hle/service/audio/audin_u.h b/src/core/hle/service/audio/audin_u.h new file mode 100644 index 000000000..2b8576756 --- /dev/null +++ b/src/core/hle/service/audio/audin_u.h | |||
| @@ -0,0 +1,23 @@ | |||
| 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 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | namespace Kernel { | ||
| 10 | class HLERequestContext; | ||
| 11 | } | ||
| 12 | |||
| 13 | namespace Service { | ||
| 14 | namespace Audio { | ||
| 15 | |||
| 16 | class AudInU final : public ServiceFramework<AudInU> { | ||
| 17 | public: | ||
| 18 | explicit AudInU(); | ||
| 19 | ~AudInU() = default; | ||
| 20 | }; | ||
| 21 | |||
| 22 | } // namespace Audio | ||
| 23 | } // namespace Service | ||
diff --git a/src/core/hle/service/audio/audio.cpp b/src/core/hle/service/audio/audio.cpp index 2b4c6c5d0..3f7fb44eb 100644 --- a/src/core/hle/service/audio/audio.cpp +++ b/src/core/hle/service/audio/audio.cpp | |||
| @@ -2,14 +2,22 @@ | |||
| 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 "core/hle/service/audio/audin_u.h" | ||
| 5 | #include "core/hle/service/audio/audio.h" | 6 | #include "core/hle/service/audio/audio.h" |
| 6 | #include "core/hle/service/audio/audout_u.h" | 7 | #include "core/hle/service/audio/audout_u.h" |
| 8 | #include "core/hle/service/audio/audrec_u.h" | ||
| 9 | #include "core/hle/service/audio/audren_u.h" | ||
| 10 | #include "core/hle/service/audio/codecctl.h" | ||
| 7 | 11 | ||
| 8 | namespace Service { | 12 | namespace Service { |
| 9 | namespace Audio { | 13 | namespace Audio { |
| 10 | 14 | ||
| 11 | void InstallInterfaces(SM::ServiceManager& service_manager) { | 15 | void InstallInterfaces(SM::ServiceManager& service_manager) { |
| 12 | std::make_shared<AudOutU>()->InstallAsService(service_manager); | 16 | std::make_shared<AudOutU>()->InstallAsService(service_manager); |
| 17 | std::make_shared<AudInU>()->InstallAsService(service_manager); | ||
| 18 | std::make_shared<AudRecU>()->InstallAsService(service_manager); | ||
| 19 | std::make_shared<AudRenU>()->InstallAsService(service_manager); | ||
| 20 | std::make_shared<CodecCtl>()->InstallAsService(service_manager); | ||
| 13 | } | 21 | } |
| 14 | 22 | ||
| 15 | } // namespace Audio | 23 | } // namespace Audio |
diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp index c028262c6..8ecfef413 100644 --- a/src/core/hle/service/audio/audout_u.cpp +++ b/src/core/hle/service/audio/audout_u.cpp | |||
| @@ -4,21 +4,56 @@ | |||
| 4 | 4 | ||
| 5 | #include "common/logging/log.h" | 5 | #include "common/logging/log.h" |
| 6 | #include "core/hle/ipc_helpers.h" | 6 | #include "core/hle/ipc_helpers.h" |
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 7 | #include "core/hle/service/audio/audout_u.h" | 8 | #include "core/hle/service/audio/audout_u.h" |
| 8 | 9 | ||
| 9 | namespace Service { | 10 | namespace Service { |
| 10 | namespace Audio { | 11 | namespace Audio { |
| 11 | 12 | ||
| 13 | class IAudioOut final : public ServiceFramework<IAudioOut> { | ||
| 14 | public: | ||
| 15 | IAudioOut() : ServiceFramework("IAudioOut") { | ||
| 16 | static const FunctionInfo functions[] = { | ||
| 17 | {0x0, nullptr, "GetAudioOutState"}, | ||
| 18 | {0x1, nullptr, "StartAudioOut"}, | ||
| 19 | {0x2, nullptr, "StopAudioOut"}, | ||
| 20 | {0x3, nullptr, "AppendAudioOutBuffer_1"}, | ||
| 21 | {0x4, nullptr, "RegisterBufferEvent"}, | ||
| 22 | {0x5, nullptr, "GetReleasedAudioOutBuffer_1"}, | ||
| 23 | {0x6, nullptr, "ContainsAudioOutBuffer"}, | ||
| 24 | {0x7, nullptr, "AppendAudioOutBuffer_2"}, | ||
| 25 | {0x8, nullptr, "GetReleasedAudioOutBuffer_2"}, | ||
| 26 | }; | ||
| 27 | RegisterHandlers(functions); | ||
| 28 | } | ||
| 29 | ~IAudioOut() = default; | ||
| 30 | }; | ||
| 31 | |||
| 12 | void AudOutU::ListAudioOuts(Kernel::HLERequestContext& ctx) { | 32 | void AudOutU::ListAudioOuts(Kernel::HLERequestContext& ctx) { |
| 13 | LOG_WARNING(Service, "(STUBBED) called"); | 33 | LOG_WARNING(Service, "(STUBBED) called"); |
| 14 | IPC::RequestBuilder rb{ctx, 2}; | 34 | IPC::RequestParser rp{ctx}; |
| 35 | |||
| 36 | auto& buffer = ctx.BufferDescriptorB()[0]; | ||
| 37 | const std::string audio_interface = "AudioInterface"; | ||
| 38 | |||
| 39 | Memory::WriteBlock(buffer.Address(), &audio_interface[0], audio_interface.size()); | ||
| 40 | |||
| 41 | IPC::RequestBuilder rb = rp.MakeBuilder(3, 0, 0, 0); | ||
| 42 | |||
| 15 | rb.Push(RESULT_SUCCESS); | 43 | rb.Push(RESULT_SUCCESS); |
| 44 | // TODO(st4rk): we're currently returning only one audio interface | ||
| 45 | // (stringlist size) | ||
| 46 | // however, it's highly possible to have more than one interface (despite that | ||
| 47 | // libtransistor | ||
| 48 | // requires only one). | ||
| 49 | rb.Push<u32>(1); | ||
| 16 | } | 50 | } |
| 17 | 51 | ||
| 18 | AudOutU::AudOutU() : ServiceFramework("audout:u") { | 52 | AudOutU::AudOutU() : ServiceFramework("audout:u") { |
| 19 | static const FunctionInfo functions[] = { | 53 | static const FunctionInfo functions[] = {{0x00000000, &AudOutU::ListAudioOuts, "ListAudioOuts"}, |
| 20 | {0x00000000, &AudOutU::ListAudioOuts, "ListAudioOuts"}, | 54 | {0x00000001, nullptr, "OpenAudioOut"}, |
| 21 | }; | 55 | {0x00000002, nullptr, "Unknown2"}, |
| 56 | {0x00000003, nullptr, "Unknown3"}}; | ||
| 22 | RegisterHandlers(functions); | 57 | RegisterHandlers(functions); |
| 23 | } | 58 | } |
| 24 | 59 | ||
diff --git a/src/core/hle/service/audio/audout_u.h b/src/core/hle/service/audio/audout_u.h index 42680af94..17529245b 100644 --- a/src/core/hle/service/audio/audout_u.h +++ b/src/core/hle/service/audio/audout_u.h | |||
| @@ -4,9 +4,12 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/service.h" | 7 | #include "core/hle/service/service.h" |
| 9 | 8 | ||
| 9 | namespace Kernel { | ||
| 10 | class HLERequestContext; | ||
| 11 | } | ||
| 12 | |||
| 10 | namespace Service { | 13 | namespace Service { |
| 11 | namespace Audio { | 14 | namespace Audio { |
| 12 | 15 | ||
diff --git a/src/core/hle/service/audio/audrec_u.cpp b/src/core/hle/service/audio/audrec_u.cpp new file mode 100644 index 000000000..f2626ec70 --- /dev/null +++ b/src/core/hle/service/audio/audrec_u.cpp | |||
| @@ -0,0 +1,38 @@ | |||
| 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 "common/logging/log.h" | ||
| 6 | #include "core/hle/ipc_helpers.h" | ||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/audio/audrec_u.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace Audio { | ||
| 12 | |||
| 13 | class IFinalOutputRecorder final : public ServiceFramework<IFinalOutputRecorder> { | ||
| 14 | public: | ||
| 15 | IFinalOutputRecorder() : ServiceFramework("IFinalOutputRecorder") { | ||
| 16 | static const FunctionInfo functions[] = { | ||
| 17 | {0x0, nullptr, "GetFinalOutputRecorderState"}, | ||
| 18 | {0x1, nullptr, "StartFinalOutputRecorder"}, | ||
| 19 | {0x2, nullptr, "StopFinalOutputRecorder"}, | ||
| 20 | {0x3, nullptr, "AppendFinalOutputRecorderBuffer"}, | ||
| 21 | {0x4, nullptr, "RegisterBufferEvent"}, | ||
| 22 | {0x5, nullptr, "GetReleasedFinalOutputRecorderBuffer"}, | ||
| 23 | {0x6, nullptr, "ContainsFinalOutputRecorderBuffer"}, | ||
| 24 | }; | ||
| 25 | RegisterHandlers(functions); | ||
| 26 | } | ||
| 27 | ~IFinalOutputRecorder() = default; | ||
| 28 | }; | ||
| 29 | |||
| 30 | AudRecU::AudRecU() : ServiceFramework("audrec:u") { | ||
| 31 | static const FunctionInfo functions[] = { | ||
| 32 | {0x00000000, nullptr, "OpenFinalOutputRecorder"}, | ||
| 33 | }; | ||
| 34 | RegisterHandlers(functions); | ||
| 35 | } | ||
| 36 | |||
| 37 | } // namespace Audio | ||
| 38 | } // namespace Service | ||
diff --git a/src/core/hle/service/audio/audrec_u.h b/src/core/hle/service/audio/audrec_u.h new file mode 100644 index 000000000..c31e412c1 --- /dev/null +++ b/src/core/hle/service/audio/audrec_u.h | |||
| @@ -0,0 +1,23 @@ | |||
| 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 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | namespace Kernel { | ||
| 10 | class HLERequestContext; | ||
| 11 | } | ||
| 12 | |||
| 13 | namespace Service { | ||
| 14 | namespace Audio { | ||
| 15 | |||
| 16 | class AudRecU final : public ServiceFramework<AudRecU> { | ||
| 17 | public: | ||
| 18 | explicit AudRecU(); | ||
| 19 | ~AudRecU() = default; | ||
| 20 | }; | ||
| 21 | |||
| 22 | } // namespace Audio | ||
| 23 | } // namespace Service | ||
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp new file mode 100644 index 000000000..4bafdfac3 --- /dev/null +++ b/src/core/hle/service/audio/audren_u.cpp | |||
| @@ -0,0 +1,44 @@ | |||
| 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 "common/logging/log.h" | ||
| 6 | #include "core/hle/ipc_helpers.h" | ||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/audio/audren_u.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace Audio { | ||
| 12 | |||
| 13 | class IAudioRenderer final : public ServiceFramework<IAudioRenderer> { | ||
| 14 | public: | ||
| 15 | IAudioRenderer() : ServiceFramework("IAudioRenderer") { | ||
| 16 | static const FunctionInfo functions[] = { | ||
| 17 | {0x0, nullptr, "GetAudioRendererSampleRate"}, | ||
| 18 | {0x1, nullptr, "GetAudioRendererSampleCount"}, | ||
| 19 | {0x2, nullptr, "GetAudioRendererMixBufferCount"}, | ||
| 20 | {0x3, nullptr, "GetAudioRendererState"}, | ||
| 21 | {0x4, nullptr, "RequestUpdateAudioRenderer"}, | ||
| 22 | {0x5, nullptr, "StartAudioRenderer"}, | ||
| 23 | {0x6, nullptr, "StopAudioRenderer"}, | ||
| 24 | {0x7, nullptr, "QuerySystemEvent"}, | ||
| 25 | {0x8, nullptr, "SetAudioRendererRenderingTimeLimit"}, | ||
| 26 | {0x9, nullptr, "GetAudioRendererRenderingTimeLimit"}, | ||
| 27 | }; | ||
| 28 | RegisterHandlers(functions); | ||
| 29 | } | ||
| 30 | ~IAudioRenderer() = default; | ||
| 31 | }; | ||
| 32 | |||
| 33 | AudRenU::AudRenU() : ServiceFramework("audren:u") { | ||
| 34 | static const FunctionInfo functions[] = { | ||
| 35 | {0x00000000, nullptr, "OpenAudioRenderer"}, | ||
| 36 | {0x00000001, nullptr, "GetAudioRendererWorkBufferSize"}, | ||
| 37 | {0x00000002, nullptr, "GetAudioRenderersProcessMasterVolume"}, | ||
| 38 | {0x00000003, nullptr, "SetAudioRenderersProcessMasterVolume"}, | ||
| 39 | }; | ||
| 40 | RegisterHandlers(functions); | ||
| 41 | } | ||
| 42 | |||
| 43 | } // namespace Audio | ||
| 44 | } // namespace Service | ||
diff --git a/src/core/hle/service/audio/audren_u.h b/src/core/hle/service/audio/audren_u.h new file mode 100644 index 000000000..1d9264c72 --- /dev/null +++ b/src/core/hle/service/audio/audren_u.h | |||
| @@ -0,0 +1,23 @@ | |||
| 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 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | namespace Kernel { | ||
| 10 | class HLERequestContext; | ||
| 11 | } | ||
| 12 | |||
| 13 | namespace Service { | ||
| 14 | namespace Audio { | ||
| 15 | |||
| 16 | class AudRenU final : public ServiceFramework<AudRenU> { | ||
| 17 | public: | ||
| 18 | explicit AudRenU(); | ||
| 19 | ~AudRenU() = default; | ||
| 20 | }; | ||
| 21 | |||
| 22 | } // namespace Audio | ||
| 23 | } // namespace Service | ||
diff --git a/src/core/hle/service/audio/codecctl.cpp b/src/core/hle/service/audio/codecctl.cpp new file mode 100644 index 000000000..d2a7f4cd0 --- /dev/null +++ b/src/core/hle/service/audio/codecctl.cpp | |||
| @@ -0,0 +1,33 @@ | |||
| 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 "common/logging/log.h" | ||
| 6 | #include "core/hle/ipc_helpers.h" | ||
| 7 | #include "core/hle/kernel/hle_ipc.h" | ||
| 8 | #include "core/hle/service/audio/codecctl.h" | ||
| 9 | |||
| 10 | namespace Service { | ||
| 11 | namespace Audio { | ||
| 12 | |||
| 13 | CodecCtl::CodecCtl() : ServiceFramework("codecctl") { | ||
| 14 | static const FunctionInfo functions[] = { | ||
| 15 | {0x00000000, nullptr, "InitializeCodecController"}, | ||
| 16 | {0x00000001, nullptr, "FinalizeCodecController"}, | ||
| 17 | {0x00000002, nullptr, "SleepCodecController"}, | ||
| 18 | {0x00000003, nullptr, "WakeCodecController"}, | ||
| 19 | {0x00000004, nullptr, "SetCodecVolume"}, | ||
| 20 | {0x00000005, nullptr, "GetCodecVolumeMax"}, | ||
| 21 | {0x00000006, nullptr, "GetCodecVolumeMin"}, | ||
| 22 | {0x00000007, nullptr, "SetCodecActiveTarget"}, | ||
| 23 | {0x00000008, nullptr, "Unknown"}, | ||
| 24 | {0x00000009, nullptr, "BindCodecHeadphoneMicJackInterrupt"}, | ||
| 25 | {0x0000000A, nullptr, "IsCodecHeadphoneMicJackInserted"}, | ||
| 26 | {0x0000000B, nullptr, "ClearCodecHeadphoneMicJackInterrupt"}, | ||
| 27 | {0x0000000C, nullptr, "IsCodecDeviceRequested"}, | ||
| 28 | }; | ||
| 29 | RegisterHandlers(functions); | ||
| 30 | } | ||
| 31 | |||
| 32 | } // namespace Audio | ||
| 33 | } // namespace Service | ||
diff --git a/src/core/hle/service/audio/codecctl.h b/src/core/hle/service/audio/codecctl.h new file mode 100644 index 000000000..1121ab0b1 --- /dev/null +++ b/src/core/hle/service/audio/codecctl.h | |||
| @@ -0,0 +1,23 @@ | |||
| 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 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | namespace Kernel { | ||
| 10 | class HLERequestContext; | ||
| 11 | } | ||
| 12 | |||
| 13 | namespace Service { | ||
| 14 | namespace Audio { | ||
| 15 | |||
| 16 | class CodecCtl final : public ServiceFramework<CodecCtl> { | ||
| 17 | public: | ||
| 18 | explicit CodecCtl(); | ||
| 19 | ~CodecCtl() = default; | ||
| 20 | }; | ||
| 21 | |||
| 22 | } // namespace Audio | ||
| 23 | } // namespace Service | ||