summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/bcat/news
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/bcat/news')
-rw-r--r--src/core/hle/service/bcat/news/newly_arrived_event_holder.cpp34
-rw-r--r--src/core/hle/service/bcat/news/newly_arrived_event_holder.h33
-rw-r--r--src/core/hle/service/bcat/news/news_data_service.cpp25
-rw-r--r--src/core/hle/service/bcat/news/news_data_service.h20
-rw-r--r--src/core/hle/service/bcat/news/news_database_service.cpp35
-rw-r--r--src/core/hle/service/bcat/news/news_database_service.h24
-rw-r--r--src/core/hle/service/bcat/news/news_service.cpp46
-rw-r--r--src/core/hle/service/bcat/news/news_service.h24
-rw-r--r--src/core/hle/service/bcat/news/overwrite_event_holder.cpp33
-rw-r--r--src/core/hle/service/bcat/news/overwrite_event_holder.h33
-rw-r--r--src/core/hle/service/bcat/news/service_creator.cpp64
-rw-r--r--src/core/hle/service/bcat/news/service_creator.h35
12 files changed, 406 insertions, 0 deletions
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..5be167fce
--- /dev/null
+++ b/src/core/hle/service/bcat/news/newly_arrived_event_holder.cpp
@@ -0,0 +1,34 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "core/hle/service/bcat/news/newly_arrived_event_holder.h"
+#include "core/hle/service/cmif_serialization.h"
+
+namespace Service::News {
+
+INewlyArrivedEventHolder::INewlyArrivedEventHolder(Core::System& system_)
+ : ServiceFramework{system_, "INewlyArrivedEventHolder"}, service_context{
+ system_,
+ "INewlyArrivedEventHolder"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, C<&INewlyArrivedEventHolder::Get>, "Get"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ arrived_event = service_context.CreateEvent("INewlyArrivedEventHolder::ArrivedEvent");
+}
+
+INewlyArrivedEventHolder::~INewlyArrivedEventHolder() {
+ service_context.CloseEvent(arrived_event);
+}
+
+Result INewlyArrivedEventHolder::Get(OutCopyHandle<Kernel::KReadableEvent> out_event) {
+ LOG_INFO(Service_BCAT, "called");
+
+ *out_event = &arrived_event->GetReadableEvent();
+ R_SUCCEED();
+}
+
+} // namespace Service::News
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..6cc9ae099
--- /dev/null
+++ b/src/core/hle/service/bcat/news/newly_arrived_event_holder.h
@@ -0,0 +1,33 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "core/hle/service/cmif_types.h"
+#include "core/hle/service/kernel_helpers.h"
+#include "core/hle/service/service.h"
+
+namespace Core {
+class System;
+}
+
+namespace Kernel {
+class KEvent;
+class KReadableEvent;
+} // namespace Kernel
+
+namespace Service::News {
+
+class INewlyArrivedEventHolder final : public ServiceFramework<INewlyArrivedEventHolder> {
+public:
+ explicit INewlyArrivedEventHolder(Core::System& system_);
+ ~INewlyArrivedEventHolder() override;
+
+private:
+ Result Get(OutCopyHandle<Kernel::KReadableEvent> out_event);
+
+ Kernel::KEvent* arrived_event;
+ KernelHelpers::ServiceContext service_context;
+};
+
+} // namespace Service::News
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..08103c9c3
--- /dev/null
+++ b/src/core/hle/service/bcat/news/news_data_service.cpp
@@ -0,0 +1,25 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "core/hle/service/bcat/news/news_data_service.h"
+
+namespace Service::News {
+
+INewsDataService::INewsDataService(Core::System& system_)
+ : ServiceFramework{system_, "INewsDataService"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "Open"},
+ {1, nullptr, "OpenWithNewsRecordV1"},
+ {2, nullptr, "Read"},
+ {3, nullptr, "GetSize"},
+ {1001, nullptr, "OpenWithNewsRecord"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+}
+
+INewsDataService::~INewsDataService() = default;
+
+} // namespace Service::News
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..12082ada4
--- /dev/null
+++ b/src/core/hle/service/bcat/news/news_data_service.h
@@ -0,0 +1,20 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Core {
+class System;
+}
+
+namespace Service::News {
+
+class INewsDataService final : public ServiceFramework<INewsDataService> {
+public:
+ explicit INewsDataService(Core::System& system_);
+ ~INewsDataService() override;
+};
+
+} // namespace Service::News
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..18109f9b0
--- /dev/null
+++ b/src/core/hle/service/bcat/news/news_database_service.cpp
@@ -0,0 +1,35 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "core/hle/service/bcat/news/news_database_service.h"
+#include "core/hle/service/cmif_serialization.h"
+
+namespace Service::News {
+
+INewsDatabaseService::INewsDatabaseService(Core::System& system_)
+ : ServiceFramework{system_, "INewsDatabaseService"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, nullptr, "GetListV1"},
+ {1, C<&INewsDatabaseService::Count>, "Count"},
+ {2, nullptr, "CountWithKey"},
+ {3, nullptr, "UpdateIntegerValue"},
+ {4, nullptr, "UpdateIntegerValueWithAddition"},
+ {5, nullptr, "UpdateStringValue"},
+ {1000, nullptr, "GetList"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+}
+
+INewsDatabaseService::~INewsDatabaseService() = default;
+
+Result INewsDatabaseService::Count(Out<s32> out_count,
+ InBuffer<BufferAttr_HipcPointer> buffer_data) {
+ LOG_WARNING(Service_BCAT, "(STUBBED) called, buffer_size={}", buffer_data.size());
+ *out_count = 0;
+ R_SUCCEED();
+}
+
+} // namespace Service::News
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..f5916634b
--- /dev/null
+++ b/src/core/hle/service/bcat/news/news_database_service.h
@@ -0,0 +1,24 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "core/hle/service/cmif_types.h"
+#include "core/hle/service/service.h"
+
+namespace Core {
+class System;
+}
+
+namespace Service::News {
+
+class INewsDatabaseService final : public ServiceFramework<INewsDatabaseService> {
+public:
+ explicit INewsDatabaseService(Core::System& system_);
+ ~INewsDatabaseService() override;
+
+private:
+ Result Count(Out<s32> out_count, InBuffer<BufferAttr_HipcPointer> buffer_data);
+};
+
+} // namespace Service::News
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..e19cea7b5
--- /dev/null
+++ b/src/core/hle/service/bcat/news/news_service.cpp
@@ -0,0 +1,46 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "core/hle/service/bcat/news/news_service.h"
+#include "core/hle/service/cmif_serialization.h"
+
+namespace Service::News {
+
+INewsService::INewsService(Core::System& system_) : ServiceFramework{system_, "INewsService"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {10100, nullptr, "PostLocalNews"},
+ {20100, nullptr, "SetPassphrase"},
+ {30100, C<&INewsService::GetSubscriptionStatus>, "GetSubscriptionStatus"},
+ {30101, nullptr, "GetTopicList"},
+ {30110, nullptr, "Unknown30110"},
+ {30200, nullptr, "IsSystemUpdateRequired"},
+ {30201, nullptr, "Unknown30201"},
+ {30210, nullptr, "Unknown30210"},
+ {30300, nullptr, "RequestImmediateReception"},
+ {30400, nullptr, "DecodeArchiveFile"},
+ {30500, nullptr, "Unknown30500"},
+ {30900, nullptr, "Unknown30900"},
+ {30901, nullptr, "Unknown30901"},
+ {30902, nullptr, "Unknown30902"},
+ {40100, nullptr, "SetSubscriptionStatus"},
+ {40101, nullptr, "RequestAutoSubscription"},
+ {40200, nullptr, "ClearStorage"},
+ {40201, nullptr, "ClearSubscriptionStatusAll"},
+ {90100, nullptr, "GetNewsDatabaseDump"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+}
+
+INewsService::~INewsService() = default;
+
+Result INewsService::GetSubscriptionStatus(Out<u32> out_status,
+ InBuffer<BufferAttr_HipcPointer> buffer_data) {
+ LOG_WARNING(Service_BCAT, "(STUBBED) called, buffer_size={}", buffer_data.size());
+ *out_status = 0;
+ R_SUCCEED();
+}
+
+} // namespace Service::News
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..8d06be9d6
--- /dev/null
+++ b/src/core/hle/service/bcat/news/news_service.h
@@ -0,0 +1,24 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "core/hle/service/cmif_types.h"
+#include "core/hle/service/service.h"
+
+namespace Core {
+class System;
+}
+
+namespace Service::News {
+
+class INewsService final : public ServiceFramework<INewsService> {
+public:
+ explicit INewsService(Core::System& system_);
+ ~INewsService() override;
+
+private:
+ Result GetSubscriptionStatus(Out<u32> out_status, InBuffer<BufferAttr_HipcPointer> buffer_data);
+};
+
+} // namespace Service::News
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..c32a5ca8f
--- /dev/null
+++ b/src/core/hle/service/bcat/news/overwrite_event_holder.cpp
@@ -0,0 +1,33 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "core/hle/service/bcat/news/overwrite_event_holder.h"
+#include "core/hle/service/cmif_serialization.h"
+
+namespace Service::News {
+
+IOverwriteEventHolder::IOverwriteEventHolder(Core::System& system_)
+ : ServiceFramework{system_, "IOverwriteEventHolder"}, service_context{system_,
+ "IOverwriteEventHolder"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, C<&IOverwriteEventHolder::Get>, "Get"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ overwrite_event = service_context.CreateEvent("IOverwriteEventHolder::OverwriteEvent");
+}
+
+IOverwriteEventHolder::~IOverwriteEventHolder() {
+ service_context.CloseEvent(overwrite_event);
+}
+
+Result IOverwriteEventHolder::Get(OutCopyHandle<Kernel::KReadableEvent> out_event) {
+ LOG_INFO(Service_BCAT, "called");
+
+ *out_event = &overwrite_event->GetReadableEvent();
+ R_SUCCEED();
+}
+
+} // namespace Service::News
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..cdc87d782
--- /dev/null
+++ b/src/core/hle/service/bcat/news/overwrite_event_holder.h
@@ -0,0 +1,33 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "core/hle/service/cmif_types.h"
+#include "core/hle/service/kernel_helpers.h"
+#include "core/hle/service/service.h"
+
+namespace Core {
+class System;
+}
+
+namespace Kernel {
+class KEvent;
+class KReadableEvent;
+} // namespace Kernel
+
+namespace Service::News {
+
+class IOverwriteEventHolder final : public ServiceFramework<IOverwriteEventHolder> {
+public:
+ explicit IOverwriteEventHolder(Core::System& system_);
+ ~IOverwriteEventHolder() override;
+
+private:
+ Result Get(OutCopyHandle<Kernel::KReadableEvent> out_event);
+
+ Kernel::KEvent* overwrite_event;
+ KernelHelpers::ServiceContext service_context;
+};
+
+} // namespace Service::News
diff --git a/src/core/hle/service/bcat/news/service_creator.cpp b/src/core/hle/service/bcat/news/service_creator.cpp
new file mode 100644
index 000000000..d5ba5dff7
--- /dev/null
+++ b/src/core/hle/service/bcat/news/service_creator.cpp
@@ -0,0 +1,64 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "core/hle/service/bcat/news/newly_arrived_event_holder.h"
+#include "core/hle/service/bcat/news/news_data_service.h"
+#include "core/hle/service/bcat/news/news_database_service.h"
+#include "core/hle/service/bcat/news/news_service.h"
+#include "core/hle/service/bcat/news/overwrite_event_holder.h"
+#include "core/hle/service/bcat/news/service_creator.h"
+#include "core/hle/service/cmif_serialization.h"
+
+namespace Service::News {
+
+IServiceCreator::IServiceCreator(Core::System& system_, u32 permissions_, const char* name_)
+ : ServiceFramework{system_, name_}, permissions{permissions_} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, C<&IServiceCreator::CreateNewsService>, "CreateNewsService"},
+ {1, C<&IServiceCreator::CreateNewlyArrivedEventHolder>, "CreateNewlyArrivedEventHolder"},
+ {2, C<&IServiceCreator::CreateNewsDataService>, "CreateNewsDataService"},
+ {3, C<&IServiceCreator::CreateNewsDatabaseService>, "CreateNewsDatabaseService"},
+ {4, C<&IServiceCreator::CreateOverwriteEventHolder>, "CreateOverwriteEventHolder"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+}
+
+IServiceCreator::~IServiceCreator() = default;
+
+Result IServiceCreator::CreateNewsService(OutInterface<INewsService> out_interface) {
+ LOG_INFO(Service_BCAT, "called");
+ *out_interface = std::make_shared<INewsService>(system);
+ R_SUCCEED();
+}
+
+Result IServiceCreator::CreateNewlyArrivedEventHolder(
+ OutInterface<INewlyArrivedEventHolder> out_interface) {
+ LOG_INFO(Service_BCAT, "called");
+ *out_interface = std::make_shared<INewlyArrivedEventHolder>(system);
+ R_SUCCEED();
+}
+
+Result IServiceCreator::CreateNewsDataService(OutInterface<INewsDataService> out_interface) {
+ LOG_INFO(Service_BCAT, "called");
+ *out_interface = std::make_shared<INewsDataService>(system);
+ R_SUCCEED();
+}
+
+Result IServiceCreator::CreateNewsDatabaseService(
+ OutInterface<INewsDatabaseService> out_interface) {
+ LOG_INFO(Service_BCAT, "called");
+ *out_interface = std::make_shared<INewsDatabaseService>(system);
+ R_SUCCEED();
+}
+
+Result IServiceCreator::CreateOverwriteEventHolder(
+ OutInterface<IOverwriteEventHolder> out_interface) {
+ LOG_INFO(Service_BCAT, "called");
+ *out_interface = std::make_shared<IOverwriteEventHolder>(system);
+ R_SUCCEED();
+}
+
+} // namespace Service::News
diff --git a/src/core/hle/service/bcat/news/service_creator.h b/src/core/hle/service/bcat/news/service_creator.h
new file mode 100644
index 000000000..5a62e7c1a
--- /dev/null
+++ b/src/core/hle/service/bcat/news/service_creator.h
@@ -0,0 +1,35 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "core/hle/service/cmif_types.h"
+#include "core/hle/service/service.h"
+
+namespace Core {
+class System;
+}
+
+namespace Service::News {
+class INewsService;
+class INewlyArrivedEventHolder;
+class INewsDataService;
+class INewsDatabaseService;
+class IOverwriteEventHolder;
+
+class IServiceCreator final : public ServiceFramework<IServiceCreator> {
+public:
+ explicit IServiceCreator(Core::System& system_, u32 permissions_, const char* name_);
+ ~IServiceCreator() override;
+
+private:
+ Result CreateNewsService(OutInterface<INewsService> out_interface);
+ Result CreateNewlyArrivedEventHolder(OutInterface<INewlyArrivedEventHolder> out_interface);
+ Result CreateNewsDataService(OutInterface<INewsDataService> out_interface);
+ Result CreateNewsDatabaseService(OutInterface<INewsDatabaseService> out_interface);
+ Result CreateOverwriteEventHolder(OutInterface<IOverwriteEventHolder> out_interface);
+
+ u32 permissions;
+};
+
+} // namespace Service::News