diff options
Diffstat (limited to '')
| -rw-r--r-- | src/core/CMakeLists.txt | 12 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/bcat.cpp | 12 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/newly_arrived_event_holder.cpp | 32 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/newly_arrived_event_holder.h | 33 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/news_data_service.cpp | 25 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/news_data_service.h | 20 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/news_database_service.cpp | 35 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/news_database_service.h | 24 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/news_interface.cpp | 63 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/news_interface.h | 35 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/news_service.cpp | 46 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/news_service.h | 24 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/overwrite_event_holder.cpp | 31 | ||||
| -rw-r--r-- | src/core/hle/service/bcat/news/overwrite_event_holder.h | 33 |
14 files changed, 425 insertions, 0 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 703e6050f..539e09894 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -512,6 +512,18 @@ add_library(core STATIC | |||
| 512 | hle/service/audio/hwopus.h | 512 | hle/service/audio/hwopus.h |
| 513 | hle/service/bcat/backend/backend.cpp | 513 | hle/service/bcat/backend/backend.cpp |
| 514 | hle/service/bcat/backend/backend.h | 514 | hle/service/bcat/backend/backend.h |
| 515 | hle/service/bcat/news/newly_arrived_event_holder.cpp | ||
| 516 | hle/service/bcat/news/newly_arrived_event_holder.h | ||
| 517 | hle/service/bcat/news/news_data_service.cpp | ||
| 518 | hle/service/bcat/news/news_data_service.h | ||
| 519 | hle/service/bcat/news/news_database_service.cpp | ||
| 520 | hle/service/bcat/news/news_database_service.h | ||
| 521 | hle/service/bcat/news/news_interface.cpp | ||
| 522 | hle/service/bcat/news/news_interface.h | ||
| 523 | hle/service/bcat/news/news_service.cpp | ||
| 524 | hle/service/bcat/news/news_service.h | ||
| 525 | hle/service/bcat/news/overwrite_event_holder.cpp | ||
| 526 | hle/service/bcat/news/overwrite_event_holder.h | ||
| 515 | hle/service/bcat/bcat.cpp | 527 | hle/service/bcat/bcat.cpp |
| 516 | hle/service/bcat/bcat.h | 528 | hle/service/bcat/bcat.h |
| 517 | hle/service/bcat/bcat_interface.cpp | 529 | hle/service/bcat/bcat_interface.cpp |
diff --git a/src/core/hle/service/bcat/bcat.cpp b/src/core/hle/service/bcat/bcat.cpp index 31e9d8662..02995ddee 100644 --- a/src/core/hle/service/bcat/bcat.cpp +++ b/src/core/hle/service/bcat/bcat.cpp | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | #include "core/hle/service/bcat/backend/backend.h" | 4 | #include "core/hle/service/bcat/backend/backend.h" |
| 5 | #include "core/hle/service/bcat/bcat.h" | 5 | #include "core/hle/service/bcat/bcat.h" |
| 6 | #include "core/hle/service/bcat/bcat_interface.h" | 6 | #include "core/hle/service/bcat/bcat_interface.h" |
| 7 | #include "core/hle/service/bcat/news/news_interface.h" | ||
| 7 | #include "core/hle/service/server_manager.h" | 8 | #include "core/hle/service/server_manager.h" |
| 8 | 9 | ||
| 9 | namespace Service::BCAT { | 10 | namespace Service::BCAT { |
| @@ -20,6 +21,17 @@ void LoopProcess(Core::System& system) { | |||
| 20 | server_manager->RegisterNamedService("bcat:s", | 21 | server_manager->RegisterNamedService("bcat:s", |
| 21 | std::make_shared<BcatInterface>(system, "bcat:s")); | 22 | std::make_shared<BcatInterface>(system, "bcat:s")); |
| 22 | 23 | ||
| 24 | server_manager->RegisterNamedService( | ||
| 25 | "news:a", std::make_shared<NewsInterface>(system, 0xffffffff, "news:a")); | ||
| 26 | server_manager->RegisterNamedService("news:p", | ||
| 27 | std::make_shared<NewsInterface>(system, 0x1, "news:p")); | ||
| 28 | server_manager->RegisterNamedService("news:c", | ||
| 29 | std::make_shared<NewsInterface>(system, 0x2, "news:c")); | ||
| 30 | server_manager->RegisterNamedService("news:v", | ||
| 31 | std::make_shared<NewsInterface>(system, 0x4, "news:v")); | ||
| 32 | server_manager->RegisterNamedService("news:m", | ||
| 33 | std::make_shared<NewsInterface>(system, 0xd, "news:m")); | ||
| 34 | |||
| 23 | ServerManager::RunServer(std::move(server_manager)); | 35 | ServerManager::RunServer(std::move(server_manager)); |
| 24 | } | 36 | } |
| 25 | 37 | ||
diff --git a/src/core/hle/service/bcat/news/newly_arrived_event_holder.cpp b/src/core/hle/service/bcat/news/newly_arrived_event_holder.cpp new file mode 100644 index 000000000..b3f9e4683 --- /dev/null +++ b/src/core/hle/service/bcat/news/newly_arrived_event_holder.cpp | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #include "core/hle/service/bcat/news/newly_arrived_event_holder.h" | ||
| 5 | #include "core/hle/service/cmif_serialization.h" | ||
| 6 | |||
| 7 | namespace Service::BCAT { | ||
| 8 | |||
| 9 | INewlyArrivedEventHolder::INewlyArrivedEventHolder(Core::System& system_) | ||
| 10 | : ServiceFramework{system_, "INewlyArrivedEventHolder"}, service_context{ | ||
| 11 | system_, | ||
| 12 | "INewlyArrivedEventHolder"} { | ||
| 13 | // clang-format off | ||
| 14 | static const FunctionInfo functions[] = { | ||
| 15 | {0, C<&INewlyArrivedEventHolder::Get>, "Get"}, | ||
| 16 | }; | ||
| 17 | // clang-format on | ||
| 18 | |||
| 19 | RegisterHandlers(functions); | ||
| 20 | arrived_event = service_context.CreateEvent("INewlyArrivedEventHolder::ArrivedEvent"); | ||
| 21 | } | ||
| 22 | |||
| 23 | INewlyArrivedEventHolder::~INewlyArrivedEventHolder() = default; | ||
| 24 | |||
| 25 | Result INewlyArrivedEventHolder::Get(OutCopyHandle<Kernel::KReadableEvent> out_event) { | ||
| 26 | LOG_INFO(Service_BCAT, "called"); | ||
| 27 | |||
| 28 | *out_event = &arrived_event->GetReadableEvent(); | ||
| 29 | R_SUCCEED(); | ||
| 30 | } | ||
| 31 | |||
| 32 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/newly_arrived_event_holder.h b/src/core/hle/service/bcat/news/newly_arrived_event_holder.h new file mode 100644 index 000000000..af19d81a7 --- /dev/null +++ b/src/core/hle/service/bcat/news/newly_arrived_event_holder.h | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | #include "core/hle/service/cmif_types.h" | ||
| 7 | #include "core/hle/service/kernel_helpers.h" | ||
| 8 | #include "core/hle/service/service.h" | ||
| 9 | |||
| 10 | namespace Core { | ||
| 11 | class System; | ||
| 12 | } | ||
| 13 | |||
| 14 | namespace Kernel { | ||
| 15 | class KEvent; | ||
| 16 | class KReadableEvent; | ||
| 17 | } // namespace Kernel | ||
| 18 | |||
| 19 | namespace Service::BCAT { | ||
| 20 | |||
| 21 | class INewlyArrivedEventHolder final : public ServiceFramework<INewlyArrivedEventHolder> { | ||
| 22 | public: | ||
| 23 | explicit INewlyArrivedEventHolder(Core::System& system_); | ||
| 24 | ~INewlyArrivedEventHolder() override; | ||
| 25 | |||
| 26 | private: | ||
| 27 | Result Get(OutCopyHandle<Kernel::KReadableEvent> out_event); | ||
| 28 | |||
| 29 | Kernel::KEvent* arrived_event; | ||
| 30 | KernelHelpers::ServiceContext service_context; | ||
| 31 | }; | ||
| 32 | |||
| 33 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/news_data_service.cpp b/src/core/hle/service/bcat/news/news_data_service.cpp new file mode 100644 index 000000000..eba2e6064 --- /dev/null +++ b/src/core/hle/service/bcat/news/news_data_service.cpp | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #include "core/hle/service/bcat/news/news_data_service.h" | ||
| 5 | |||
| 6 | namespace Service::BCAT { | ||
| 7 | |||
| 8 | INewsDataService::INewsDataService(Core::System& system_) | ||
| 9 | : ServiceFramework{system_, "INewsDataService"} { | ||
| 10 | // clang-format off | ||
| 11 | static const FunctionInfo functions[] = { | ||
| 12 | {0, nullptr, "Open"}, | ||
| 13 | {1, nullptr, "OpenWithNewsRecordV1"}, | ||
| 14 | {2, nullptr, "Read"}, | ||
| 15 | {3, nullptr, "GetSize"}, | ||
| 16 | {1001, nullptr, "OpenWithNewsRecord"}, | ||
| 17 | }; | ||
| 18 | // clang-format on | ||
| 19 | |||
| 20 | RegisterHandlers(functions); | ||
| 21 | } | ||
| 22 | |||
| 23 | INewsDataService::~INewsDataService() = default; | ||
| 24 | |||
| 25 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/news_data_service.h b/src/core/hle/service/bcat/news/news_data_service.h new file mode 100644 index 000000000..441e0ea8e --- /dev/null +++ b/src/core/hle/service/bcat/news/news_data_service.h | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | #include "core/hle/service/service.h" | ||
| 7 | |||
| 8 | namespace Core { | ||
| 9 | class System; | ||
| 10 | } | ||
| 11 | |||
| 12 | namespace Service::BCAT { | ||
| 13 | |||
| 14 | class INewsDataService final : public ServiceFramework<INewsDataService> { | ||
| 15 | public: | ||
| 16 | explicit INewsDataService(Core::System& system_); | ||
| 17 | ~INewsDataService() override; | ||
| 18 | }; | ||
| 19 | |||
| 20 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/news_database_service.cpp b/src/core/hle/service/bcat/news/news_database_service.cpp new file mode 100644 index 000000000..3b4b33901 --- /dev/null +++ b/src/core/hle/service/bcat/news/news_database_service.cpp | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #include "core/hle/service/bcat/news/news_database_service.h" | ||
| 5 | #include "core/hle/service/cmif_serialization.h" | ||
| 6 | |||
| 7 | namespace Service::BCAT { | ||
| 8 | |||
| 9 | INewsDatabaseService::INewsDatabaseService(Core::System& system_) | ||
| 10 | : ServiceFramework{system_, "INewsDatabaseService"} { | ||
| 11 | // clang-format off | ||
| 12 | static const FunctionInfo functions[] = { | ||
| 13 | {0, nullptr, "GetListV1"}, | ||
| 14 | {1, C<&INewsDatabaseService::Count>, "Count"}, | ||
| 15 | {2, nullptr, "CountWithKey"}, | ||
| 16 | {3, nullptr, "UpdateIntegerValue"}, | ||
| 17 | {4, nullptr, "UpdateIntegerValueWithAddition"}, | ||
| 18 | {5, nullptr, "UpdateStringValue"}, | ||
| 19 | {1000, nullptr, "GetList"}, | ||
| 20 | }; | ||
| 21 | // clang-format on | ||
| 22 | |||
| 23 | RegisterHandlers(functions); | ||
| 24 | } | ||
| 25 | |||
| 26 | INewsDatabaseService::~INewsDatabaseService() = default; | ||
| 27 | |||
| 28 | Result INewsDatabaseService::Count(Out<u32> out_count, | ||
| 29 | InBuffer<BufferAttr_HipcPointer> buffer_data) { | ||
| 30 | LOG_WARNING(Service_BCAT, "(STUBBED) called, buffer_size={}", buffer_data.size()); | ||
| 31 | *out_count = 0; | ||
| 32 | R_SUCCEED(); | ||
| 33 | } | ||
| 34 | |||
| 35 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/news_database_service.h b/src/core/hle/service/bcat/news/news_database_service.h new file mode 100644 index 000000000..dd09a1662 --- /dev/null +++ b/src/core/hle/service/bcat/news/news_database_service.h | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | #include "core/hle/service/cmif_types.h" | ||
| 7 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 13 | namespace Service::BCAT { | ||
| 14 | |||
| 15 | class INewsDatabaseService final : public ServiceFramework<INewsDatabaseService> { | ||
| 16 | public: | ||
| 17 | explicit INewsDatabaseService(Core::System& system_); | ||
| 18 | ~INewsDatabaseService() override; | ||
| 19 | |||
| 20 | private: | ||
| 21 | Result Count(Out<u32> out_count, InBuffer<BufferAttr_HipcPointer> buffer_data); | ||
| 22 | }; | ||
| 23 | |||
| 24 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/news_interface.cpp b/src/core/hle/service/bcat/news/news_interface.cpp new file mode 100644 index 000000000..0eaef2ddc --- /dev/null +++ b/src/core/hle/service/bcat/news/news_interface.cpp | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #include "core/hle/service/bcat/news/newly_arrived_event_holder.h" | ||
| 5 | #include "core/hle/service/bcat/news/news_data_service.h" | ||
| 6 | #include "core/hle/service/bcat/news/news_database_service.h" | ||
| 7 | #include "core/hle/service/bcat/news/news_interface.h" | ||
| 8 | #include "core/hle/service/bcat/news/news_service.h" | ||
| 9 | #include "core/hle/service/bcat/news/overwrite_event_holder.h" | ||
| 10 | #include "core/hle/service/cmif_serialization.h" | ||
| 11 | |||
| 12 | namespace Service::BCAT { | ||
| 13 | |||
| 14 | NewsInterface::NewsInterface(Core::System& system_, u32 permissions_, const char* name_) | ||
| 15 | : ServiceFramework{system_, name_}, permissions{permissions_} { | ||
| 16 | // clang-format off | ||
| 17 | static const FunctionInfo functions[] = { | ||
| 18 | {0, C<&NewsInterface::CreateNewsService>, "CreateNewsService"}, | ||
| 19 | {1, C<&NewsInterface::CreateNewlyArrivedEventHolder>, "CreateNewlyArrivedEventHolder"}, | ||
| 20 | {2, C<&NewsInterface::CreateNewsDataService>, "CreateNewsDataService"}, | ||
| 21 | {3, C<&NewsInterface::CreateNewsDatabaseService>, "CreateNewsDatabaseService"}, | ||
| 22 | {4, C<&NewsInterface::CreateOverwriteEventHolder>, "CreateOverwriteEventHolder"}, | ||
| 23 | }; | ||
| 24 | // clang-format on | ||
| 25 | |||
| 26 | RegisterHandlers(functions); | ||
| 27 | } | ||
| 28 | |||
| 29 | NewsInterface::~NewsInterface() = default; | ||
| 30 | |||
| 31 | Result NewsInterface::CreateNewsService(OutInterface<INewsService> out_interface) { | ||
| 32 | LOG_INFO(Service_BCAT, "called"); | ||
| 33 | *out_interface = std::make_shared<INewsService>(system); | ||
| 34 | R_SUCCEED(); | ||
| 35 | } | ||
| 36 | |||
| 37 | Result NewsInterface::CreateNewlyArrivedEventHolder( | ||
| 38 | OutInterface<INewlyArrivedEventHolder> out_interface) { | ||
| 39 | LOG_INFO(Service_BCAT, "called"); | ||
| 40 | *out_interface = std::make_shared<INewlyArrivedEventHolder>(system); | ||
| 41 | R_SUCCEED(); | ||
| 42 | } | ||
| 43 | |||
| 44 | Result NewsInterface::CreateNewsDataService(OutInterface<INewsDataService> out_interface) { | ||
| 45 | LOG_INFO(Service_BCAT, "called"); | ||
| 46 | *out_interface = std::make_shared<INewsDataService>(system); | ||
| 47 | R_SUCCEED(); | ||
| 48 | } | ||
| 49 | |||
| 50 | Result NewsInterface::CreateNewsDatabaseService(OutInterface<INewsDatabaseService> out_interface) { | ||
| 51 | LOG_INFO(Service_BCAT, "called"); | ||
| 52 | *out_interface = std::make_shared<INewsDatabaseService>(system); | ||
| 53 | R_SUCCEED(); | ||
| 54 | } | ||
| 55 | |||
| 56 | Result NewsInterface::CreateOverwriteEventHolder( | ||
| 57 | OutInterface<IOverwriteEventHolder> out_interface) { | ||
| 58 | LOG_INFO(Service_BCAT, "called"); | ||
| 59 | *out_interface = std::make_shared<IOverwriteEventHolder>(system); | ||
| 60 | R_SUCCEED(); | ||
| 61 | } | ||
| 62 | |||
| 63 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/news_interface.h b/src/core/hle/service/bcat/news/news_interface.h new file mode 100644 index 000000000..d95edba3d --- /dev/null +++ b/src/core/hle/service/bcat/news/news_interface.h | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | #include "core/hle/service/cmif_types.h" | ||
| 7 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 13 | namespace Service::BCAT { | ||
| 14 | class INewsService; | ||
| 15 | class INewlyArrivedEventHolder; | ||
| 16 | class INewsDataService; | ||
| 17 | class INewsDatabaseService; | ||
| 18 | class IOverwriteEventHolder; | ||
| 19 | |||
| 20 | class NewsInterface final : public ServiceFramework<NewsInterface> { | ||
| 21 | public: | ||
| 22 | explicit NewsInterface(Core::System& system_, u32 permissions_, const char* name_); | ||
| 23 | ~NewsInterface() override; | ||
| 24 | |||
| 25 | private: | ||
| 26 | Result CreateNewsService(OutInterface<INewsService> out_interface); | ||
| 27 | Result CreateNewlyArrivedEventHolder(OutInterface<INewlyArrivedEventHolder> out_interface); | ||
| 28 | Result CreateNewsDataService(OutInterface<INewsDataService> out_interface); | ||
| 29 | Result CreateNewsDatabaseService(OutInterface<INewsDatabaseService> out_interface); | ||
| 30 | Result CreateOverwriteEventHolder(OutInterface<IOverwriteEventHolder> out_interface); | ||
| 31 | |||
| 32 | u32 permissions; | ||
| 33 | }; | ||
| 34 | |||
| 35 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/news_service.cpp b/src/core/hle/service/bcat/news/news_service.cpp new file mode 100644 index 000000000..372937351 --- /dev/null +++ b/src/core/hle/service/bcat/news/news_service.cpp | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #include "core/hle/service/bcat/news/news_service.h" | ||
| 5 | #include "core/hle/service/cmif_serialization.h" | ||
| 6 | |||
| 7 | namespace Service::BCAT { | ||
| 8 | |||
| 9 | INewsService::INewsService(Core::System& system_) : ServiceFramework{system_, "INewsService"} { | ||
| 10 | // clang-format off | ||
| 11 | static const FunctionInfo functions[] = { | ||
| 12 | {10100, nullptr, "PostLocalNews"}, | ||
| 13 | {20100, nullptr, "SetPassphrase"}, | ||
| 14 | {30100, C<&INewsService::GetSubscriptionStatus>, "GetSubscriptionStatus"}, | ||
| 15 | {30101, nullptr, "GetTopicList"}, | ||
| 16 | {30110, nullptr, "Unknown30110"}, | ||
| 17 | {30200, nullptr, "IsSystemUpdateRequired"}, | ||
| 18 | {30201, nullptr, "Unknown30201"}, | ||
| 19 | {30210, nullptr, "Unknown30210"}, | ||
| 20 | {30300, nullptr, "RequestImmediateReception"}, | ||
| 21 | {30400, nullptr, "DecodeArchiveFile"}, | ||
| 22 | {30500, nullptr, "Unknown30500"}, | ||
| 23 | {30900, nullptr, "Unknown30900"}, | ||
| 24 | {30901, nullptr, "Unknown30901"}, | ||
| 25 | {30902, nullptr, "Unknown30902"}, | ||
| 26 | {40100, nullptr, "SetSubscriptionStatus"}, | ||
| 27 | {40101, nullptr, "RequestAutoSubscription"}, | ||
| 28 | {40200, nullptr, "ClearStorage"}, | ||
| 29 | {40201, nullptr, "ClearSubscriptionStatusAll"}, | ||
| 30 | {90100, nullptr, "GetNewsDatabaseDump"}, | ||
| 31 | }; | ||
| 32 | // clang-format on | ||
| 33 | |||
| 34 | RegisterHandlers(functions); | ||
| 35 | } | ||
| 36 | |||
| 37 | INewsService::~INewsService() = default; | ||
| 38 | |||
| 39 | Result INewsService::GetSubscriptionStatus(Out<u32> out_status, | ||
| 40 | InBuffer<BufferAttr_HipcPointer> buffer_data) { | ||
| 41 | LOG_WARNING(Service_BCAT, "(STUBBED) called, buffer_size={}", buffer_data.size()); | ||
| 42 | *out_status = 0; | ||
| 43 | R_SUCCEED(); | ||
| 44 | } | ||
| 45 | |||
| 46 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/news_service.h b/src/core/hle/service/bcat/news/news_service.h new file mode 100644 index 000000000..bb2e49848 --- /dev/null +++ b/src/core/hle/service/bcat/news/news_service.h | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | #include "core/hle/service/cmif_types.h" | ||
| 7 | #include "core/hle/service/service.h" | ||
| 8 | |||
| 9 | namespace Core { | ||
| 10 | class System; | ||
| 11 | } | ||
| 12 | |||
| 13 | namespace Service::BCAT { | ||
| 14 | |||
| 15 | class INewsService final : public ServiceFramework<INewsService> { | ||
| 16 | public: | ||
| 17 | explicit INewsService(Core::System& system_); | ||
| 18 | ~INewsService() override; | ||
| 19 | |||
| 20 | private: | ||
| 21 | Result GetSubscriptionStatus(Out<u32> out_status, InBuffer<BufferAttr_HipcPointer> buffer_data); | ||
| 22 | }; | ||
| 23 | |||
| 24 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/overwrite_event_holder.cpp b/src/core/hle/service/bcat/news/overwrite_event_holder.cpp new file mode 100644 index 000000000..4b06bfc5e --- /dev/null +++ b/src/core/hle/service/bcat/news/overwrite_event_holder.cpp | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #include "core/hle/service/bcat/news/overwrite_event_holder.h" | ||
| 5 | #include "core/hle/service/cmif_serialization.h" | ||
| 6 | |||
| 7 | namespace Service::BCAT { | ||
| 8 | |||
| 9 | IOverwriteEventHolder::IOverwriteEventHolder(Core::System& system_) | ||
| 10 | : ServiceFramework{system_, "IOverwriteEventHolder"}, service_context{system_, | ||
| 11 | "IOverwriteEventHolder"} { | ||
| 12 | // clang-format off | ||
| 13 | static const FunctionInfo functions[] = { | ||
| 14 | {0, C<&IOverwriteEventHolder::Get>, "Get"}, | ||
| 15 | }; | ||
| 16 | // clang-format on | ||
| 17 | |||
| 18 | RegisterHandlers(functions); | ||
| 19 | overwrite_event = service_context.CreateEvent("IOverwriteEventHolder::OverwriteEvent"); | ||
| 20 | } | ||
| 21 | |||
| 22 | IOverwriteEventHolder::~IOverwriteEventHolder() = default; | ||
| 23 | |||
| 24 | Result IOverwriteEventHolder::Get(OutCopyHandle<Kernel::KReadableEvent> out_event) { | ||
| 25 | LOG_INFO(Service_BCAT, "called"); | ||
| 26 | |||
| 27 | *out_event = &overwrite_event->GetReadableEvent(); | ||
| 28 | R_SUCCEED(); | ||
| 29 | } | ||
| 30 | |||
| 31 | } // namespace Service::BCAT | ||
diff --git a/src/core/hle/service/bcat/news/overwrite_event_holder.h b/src/core/hle/service/bcat/news/overwrite_event_holder.h new file mode 100644 index 000000000..4b016b2fe --- /dev/null +++ b/src/core/hle/service/bcat/news/overwrite_event_holder.h | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-3.0-or-later | ||
| 3 | |||
| 4 | #pragma once | ||
| 5 | |||
| 6 | #include "core/hle/service/cmif_types.h" | ||
| 7 | #include "core/hle/service/kernel_helpers.h" | ||
| 8 | #include "core/hle/service/service.h" | ||
| 9 | |||
| 10 | namespace Core { | ||
| 11 | class System; | ||
| 12 | } | ||
| 13 | |||
| 14 | namespace Kernel { | ||
| 15 | class KEvent; | ||
| 16 | class KReadableEvent; | ||
| 17 | } // namespace Kernel | ||
| 18 | |||
| 19 | namespace Service::BCAT { | ||
| 20 | |||
| 21 | class IOverwriteEventHolder final : public ServiceFramework<IOverwriteEventHolder> { | ||
| 22 | public: | ||
| 23 | explicit IOverwriteEventHolder(Core::System& system_); | ||
| 24 | ~IOverwriteEventHolder() override; | ||
| 25 | |||
| 26 | private: | ||
| 27 | Result Get(OutCopyHandle<Kernel::KReadableEvent> out_event); | ||
| 28 | |||
| 29 | Kernel::KEvent* overwrite_event; | ||
| 30 | KernelHelpers::ServiceContext service_context; | ||
| 31 | }; | ||
| 32 | |||
| 33 | } // namespace Service::BCAT | ||