mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-09-25 18:55:57 +00:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 411dc2054b | |||
| f0190a1643 | |||
| f232a351cb | |||
| a1fd05e855 | |||
| 33a6f339a2 | |||
| 1f784d5541 | |||
| 9375aeaacf | |||
| 9e59b4132a | |||
| bebc19da32 | |||
| 99bf8cf51a |
@@ -1,6 +1,6 @@
|
|||||||
# Design Overview
|
# Design Overview
|
||||||
|
|
||||||
Modern game consoles require heavy power to be emulated appropriately. This is why the emulator uses an approach known as HLE (High-Level-Emulation), in a nutshell: Instead of accurately emulating every subsystem that forms part of a component, emulate the resulting visible I/O interface instead.
|
Modern game consoles require heavy power to emulate. This is why the emulator uses an approach known as HLE (High-Level-Emulation), in a nutshell: Instead of accurately emulating every subsystem that forms part of a component, emulate the resulting visible output of said interface instead.
|
||||||
|
|
||||||
For example, take a disk write, instead of emulating a proper SD card we instead use the C++ standard library for I/O. Additionally we use the abstractions provided by the `fs` service to "lie" to programs about certain SD card properties. Notably this includes making up sizes for the fake SD card, giving "realistic" values or expected outputs for a given card, and so on. And instead of writing to an actual SD card, the emulator simply writes to a file.
|
For example, take a disk write, instead of emulating a proper SD card we instead use the C++ standard library for I/O. Additionally we use the abstractions provided by the `fs` service to "lie" to programs about certain SD card properties. Notably this includes making up sizes for the fake SD card, giving "realistic" values or expected outputs for a given card, and so on. And instead of writing to an actual SD card, the emulator simply writes to a file.
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ This contains documentation created by developers, build instructions, guideline
|
|||||||
- Subsystems:
|
- Subsystems:
|
||||||
- **[Design Overview](./DesignOverview.md)**
|
- **[Design Overview](./DesignOverview.md)**
|
||||||
- **[Dynarmic](./dynarmic/README.md)**
|
- **[Dynarmic](./dynarmic/README.md)**
|
||||||
- **[HOS Kernel](./HosKernel.md)**
|
- **[Subsystem: HLE](./SubsystemHLE.md)**
|
||||||
- **[Settings](./Settings.md)**
|
- **[Settings](./Settings.md)**
|
||||||
|
|
||||||
## Policies
|
## Policies
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# HOS Kernel
|
# Subsystem: HLE
|
||||||
|
|
||||||
|
## HOS Kernel
|
||||||
|
|
||||||
In brief, the HOS kernel is a microkernel, all services and programs run in userspace, the primary way to do communication between these is via `HIPC` (not covered here); otherwise most of the primitives reside in the forms of syscalls invoked via `svc #imm`. The kernel supports both 32-bit and 64-bit programs, and has the capacity to use 32, 36 and 39 bits of address space for spawned processes. Most of the networking stack is based off FreeBSD's network stack.
|
In brief, the HOS kernel is a microkernel, all services and programs run in userspace, the primary way to do communication between these is via `HIPC` (not covered here); otherwise most of the primitives reside in the forms of syscalls invoked via `svc #imm`. The kernel supports both 32-bit and 64-bit programs, and has the capacity to use 32, 36 and 39 bits of address space for spawned processes. Most of the networking stack is based off FreeBSD's network stack.
|
||||||
|
|
||||||
@@ -29,3 +31,42 @@ Every process keeps it's own tracking of the following structures:
|
|||||||
The emulator willingly restricts itself to only use 4 threads (to emulate 4 cores), this is because most existing applications do not benefit greatly from the added core count, and in fact can be detrimental due to extra contention. This translates equitatively to about 4 `ArmInterface` slots for each process, these are then redirected to whatever is the last `pc` of the last thread running on the core is meant to be; proceed to run it, then when returning (due to halt or interruption), proceed to reschedule the thread.
|
The emulator willingly restricts itself to only use 4 threads (to emulate 4 cores), this is because most existing applications do not benefit greatly from the added core count, and in fact can be detrimental due to extra contention. This translates equitatively to about 4 `ArmInterface` slots for each process, these are then redirected to whatever is the last `pc` of the last thread running on the core is meant to be; proceed to run it, then when returning (due to halt or interruption), proceed to reschedule the thread.
|
||||||
|
|
||||||
The scheduler as-is isn't 100% faithful to the original (for example the original is cooperative and not preemptive), and has great timing variance (especially due to the fact the emulator can run in systems with wildly different timings).
|
The scheduler as-is isn't 100% faithful to the original (for example the original is cooperative and not preemptive), and has great timing variance (especially due to the fact the emulator can run in systems with wildly different timings).
|
||||||
|
|
||||||
|
## Services
|
||||||
|
|
||||||
|
Consult [SwitchBrew](https://switchbrew.org/) for per-service methods, and implementation details.
|
||||||
|
|
||||||
|
All services are instatiated implicitly using `ServiceFramework`. To register a new interface or service, you can inherit from said class, providing additionally a template parameter that references `Self`, for example:
|
||||||
|
|
||||||
|
```c++
|
||||||
|
// Follows as:
|
||||||
|
// class MyInterface [final] : public ServiceFramework<MyInterface> { ... };
|
||||||
|
// [final] is optional, but should be used whenever there is no intention of this class itself being inherited.
|
||||||
|
class IFloatingRegistrationRequest final : public ServiceFramework<IFloatingRegistrationRequest> {
|
||||||
|
public:
|
||||||
|
// ctor, you can pass extra parameters here (if so required)
|
||||||
|
explicit IFloatingRegistrationRequest(Core::System& system_)
|
||||||
|
: ServiceFramework{system_, "IFloatingRegistrationRequest"}
|
||||||
|
{}
|
||||||
|
|
||||||
|
// Define here your functions and methods, please order them.
|
||||||
|
// Use FindRequestTipc for TIPC handlers.
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "GetSessionId"},
|
||||||
|
FunctionInfo{12, nullptr, "GetAccountId"},
|
||||||
|
FunctionInfo{13, nullptr, "GetLinkedNintendoAccountId"},
|
||||||
|
FunctionInfo{14, nullptr, "GetNickname"},
|
||||||
|
FunctionInfo{15, nullptr, "GetProfileImage"},
|
||||||
|
FunctionInfo{16, nullptr, "GetProfileLargeImage", MakeVersionGate({18,0,0})},
|
||||||
|
FunctionInfo{21, nullptr, "LoadIdTokenCache"},
|
||||||
|
FunctionInfo{100, nullptr, "RegisterUser"},
|
||||||
|
FunctionInfo{101, nullptr, "RegisterUserWithUid"},
|
||||||
|
FunctionInfo{102, nullptr, "RegisterNetworkServiceAccountAsync", MakeVersionGate({4,0,0})},
|
||||||
|
FunctionInfo{103, nullptr, "RegisterNetworkServiceAccountWithUidAsync", MakeVersionGate({4,0,0})},
|
||||||
|
FunctionInfo{110, nullptr, "SetSystemProgramIdentification"},
|
||||||
|
FunctionInfo{111, nullptr, "EnsureIdTokenCacheAsync"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
||||||
+1
@@ -30,6 +30,7 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
|
|||||||
RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"),
|
RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"),
|
||||||
ENABLE_BUFFER_HISTORY("enable_buffer_history"),
|
ENABLE_BUFFER_HISTORY("enable_buffer_history"),
|
||||||
USE_OPTIMIZED_VERTEX_BUFFERS("use_optimized_vertex_buffers"),
|
USE_OPTIMIZED_VERTEX_BUFFERS("use_optimized_vertex_buffers"),
|
||||||
|
ENABLE_GPU_BUFFER_READBACK("enable_gpu_buffer_readback"),
|
||||||
SYNC_MEMORY_OPERATIONS("sync_memory_operations"),
|
SYNC_MEMORY_OPERATIONS("sync_memory_operations"),
|
||||||
BUFFER_REORDER_DISABLE("disable_buffer_reorder"),
|
BUFFER_REORDER_DISABLE("disable_buffer_reorder"),
|
||||||
RENDERER_DEBUG("debug"),
|
RENDERER_DEBUG("debug"),
|
||||||
|
|||||||
+7
@@ -908,6 +908,13 @@ abstract class SettingsItem(
|
|||||||
descriptionId = R.string.enable_buffer_history_description
|
descriptionId = R.string.enable_buffer_history_description
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
put(
|
||||||
|
SwitchSetting(
|
||||||
|
BooleanSetting.ENABLE_GPU_BUFFER_READBACK,
|
||||||
|
titleId = R.string.enable_gpu_buffer_readback,
|
||||||
|
descriptionId = R.string.enable_gpu_buffer_readback_description
|
||||||
|
)
|
||||||
|
)
|
||||||
put(
|
put(
|
||||||
SwitchSetting(
|
SwitchSetting(
|
||||||
BooleanSetting.USE_OPTIMIZED_VERTEX_BUFFERS,
|
BooleanSetting.USE_OPTIMIZED_VERTEX_BUFFERS,
|
||||||
|
|||||||
+1
@@ -549,6 +549,7 @@ class SettingsFragmentPresenter(
|
|||||||
add(BooleanSetting.RENDERER_FORCE_MAX_CLOCK.key)
|
add(BooleanSetting.RENDERER_FORCE_MAX_CLOCK.key)
|
||||||
add(BooleanSetting.RENDERER_REACTIVE_FLUSHING.key)
|
add(BooleanSetting.RENDERER_REACTIVE_FLUSHING.key)
|
||||||
add(BooleanSetting.ENABLE_BUFFER_HISTORY.key)
|
add(BooleanSetting.ENABLE_BUFFER_HISTORY.key)
|
||||||
|
add(BooleanSetting.ENABLE_GPU_BUFFER_READBACK.key)
|
||||||
add(BooleanSetting.USE_OPTIMIZED_VERTEX_BUFFERS.key)
|
add(BooleanSetting.USE_OPTIMIZED_VERTEX_BUFFERS.key)
|
||||||
|
|
||||||
add(HeaderSetting(R.string.hacks))
|
add(HeaderSetting(R.string.hacks))
|
||||||
|
|||||||
@@ -580,6 +580,8 @@
|
|||||||
<string name="renderer_reactive_flushing_description">يحسن دقة العرض في بعض الألعاب على حساب الأداء.</string>
|
<string name="renderer_reactive_flushing_description">يحسن دقة العرض في بعض الألعاب على حساب الأداء.</string>
|
||||||
<string name="enable_buffer_history">تمكين سجل التخزين المؤقت</string>
|
<string name="enable_buffer_history">تمكين سجل التخزين المؤقت</string>
|
||||||
<string name="enable_buffer_history_description">يُتيح هذا الخيار الوصول إلى حالات التخزين المؤقت السابقة. وقد يُحسّن جودة العرض وثبات الأداء في بعض الألعاب.</string>
|
<string name="enable_buffer_history_description">يُتيح هذا الخيار الوصول إلى حالات التخزين المؤقت السابقة. وقد يُحسّن جودة العرض وثبات الأداء في بعض الألعاب.</string>
|
||||||
|
<string name="enable_gpu_buffer_readback">تفعيل قراءة مخزن وحدة معالجة الرسومات</string>
|
||||||
|
<string name="enable_gpu_buffer_readback_description">يحافظ هذا النظام على بيانات المخزن المؤقت المُعدّلة بواسطة وحدة معالجة الرسومات عن طريق قراءتها مرة أخرى قبل التحميل. تتطلب بعض الألعاب ذلك لعرض بعض التأثيرات بشكل صحيح. قد يُسبب ذلك مشاكل إذا لم يتمكن الجهاز من التعامل مع عبء العمل الإضافي.</string>
|
||||||
<string name="use_optimized_vertex_buffers">مخازن الرؤوس المُحسّنة</string>
|
<string name="use_optimized_vertex_buffers">مخازن الرؤوس المُحسّنة</string>
|
||||||
<string name="use_optimized_vertex_buffers_description">يُتيح ربطًا مُحسَّنًا لمخازن الرؤوس لتحسين الأداء. يتطلب برامج تشغيل Mesa 26.0+ Turnip/ برامج تشغيل QCOM. قد يتعطل على برامج تشغيل Turnip القديمة (25.3 وما دون).</string>
|
<string name="use_optimized_vertex_buffers_description">يُتيح ربطًا مُحسَّنًا لمخازن الرؤوس لتحسين الأداء. يتطلب برامج تشغيل Mesa 26.0+ Turnip/ برامج تشغيل QCOM. قد يتعطل على برامج تشغيل Turnip القديمة (25.3 وما دون).</string>
|
||||||
|
|
||||||
@@ -1097,6 +1099,7 @@
|
|||||||
<string name="gpu_fence_behavior_immediate">فوري</string>
|
<string name="gpu_fence_behavior_immediate">فوري</string>
|
||||||
<string name="gpu_fence_behavior_balanced">متوازن</string>
|
<string name="gpu_fence_behavior_balanced">متوازن</string>
|
||||||
<string name="gpu_fence_behavior_accurate">دقيق</string>
|
<string name="gpu_fence_behavior_accurate">دقيق</string>
|
||||||
|
<string name="gpu_fence_behavior_strict">صارم</string>
|
||||||
|
|
||||||
<string name="vram_usage_conservative">محافظ</string>
|
<string name="vram_usage_conservative">محافظ</string>
|
||||||
<string name="vram_usage_aggressive">عدواني</string>
|
<string name="vram_usage_aggressive">عدواني</string>
|
||||||
|
|||||||
@@ -967,6 +967,7 @@ Wirklich fortfahren?</string>
|
|||||||
<string name="gpu_fence_behavior_immediate">Direkt</string>
|
<string name="gpu_fence_behavior_immediate">Direkt</string>
|
||||||
<string name="gpu_fence_behavior_balanced">Ausgewogen</string>
|
<string name="gpu_fence_behavior_balanced">Ausgewogen</string>
|
||||||
<string name="gpu_fence_behavior_accurate">Genau</string>
|
<string name="gpu_fence_behavior_accurate">Genau</string>
|
||||||
|
<string name="gpu_fence_behavior_strict">Strikt</string>
|
||||||
|
|
||||||
<string name="vram_usage_conservative">Konservativ</string>
|
<string name="vram_usage_conservative">Konservativ</string>
|
||||||
<string name="vram_usage_aggressive">Aggressiv</string>
|
<string name="vram_usage_aggressive">Aggressiv</string>
|
||||||
|
|||||||
@@ -524,6 +524,8 @@
|
|||||||
<string name="renderer_reactive_flushing_description">Mejora la precisión de renderizado en algunos juegos, pero reduce el rendimiento.</string>
|
<string name="renderer_reactive_flushing_description">Mejora la precisión de renderizado en algunos juegos, pero reduce el rendimiento.</string>
|
||||||
<string name="enable_buffer_history">Activar el historial del búfer</string>
|
<string name="enable_buffer_history">Activar el historial del búfer</string>
|
||||||
<string name="enable_buffer_history_description">Permite el acceso al estado del búfer anterior. Esta opción puede mejorar la calidad de renderizado y la consistencia en el rendimiento de algunos juegos.</string>
|
<string name="enable_buffer_history_description">Permite el acceso al estado del búfer anterior. Esta opción puede mejorar la calidad de renderizado y la consistencia en el rendimiento de algunos juegos.</string>
|
||||||
|
<string name="enable_gpu_buffer_readback">Activar la lectura del buffer de la GPU</string>
|
||||||
|
<string name="enable_gpu_buffer_readback_description">Conserva los datos del búfer modificados por la GPU leyéndolos antes de subirlos.\nAlgunos juegos requieren esto para renderizar correctamente ciertos efectos.\nPuede causar problemas si el hardware no puede soportar la carga de trabajo adicional.</string>
|
||||||
<string name="use_optimized_vertex_buffers">Búferes de vértices optimizados</string>
|
<string name="use_optimized_vertex_buffers">Búferes de vértices optimizados</string>
|
||||||
<string name="use_optimized_vertex_buffers_description">Permite la optimización del enlace del búfer de vértices para un mejor rendimiento. Requiere controladores Mesa 26.0+ Turnip/ controladores QCOM. Fallará con controladores Turnip más antiguos (versión 25.3 o inferior).</string>
|
<string name="use_optimized_vertex_buffers_description">Permite la optimización del enlace del búfer de vértices para un mejor rendimiento. Requiere controladores Mesa 26.0+ Turnip/ controladores QCOM. Fallará con controladores Turnip más antiguos (versión 25.3 o inferior).</string>
|
||||||
|
|
||||||
@@ -1036,6 +1038,7 @@
|
|||||||
<string name="gpu_fence_behavior_immediate">Inmediato</string>
|
<string name="gpu_fence_behavior_immediate">Inmediato</string>
|
||||||
<string name="gpu_fence_behavior_balanced">Equilibrado</string>
|
<string name="gpu_fence_behavior_balanced">Equilibrado</string>
|
||||||
<string name="gpu_fence_behavior_accurate">Preciso</string>
|
<string name="gpu_fence_behavior_accurate">Preciso</string>
|
||||||
|
<string name="gpu_fence_behavior_strict">Estricto</string>
|
||||||
|
|
||||||
<string name="vram_usage_conservative">Conservador</string>
|
<string name="vram_usage_conservative">Conservador</string>
|
||||||
<string name="vram_usage_aggressive">Agresivo</string>
|
<string name="vram_usage_aggressive">Agresivo</string>
|
||||||
|
|||||||
@@ -569,6 +569,8 @@
|
|||||||
<string name="renderer_reactive_flushing_description">Повышение точности рендеринга в некоторых играх за счет снижения производительности.</string>
|
<string name="renderer_reactive_flushing_description">Повышение точности рендеринга в некоторых играх за счет снижения производительности.</string>
|
||||||
<string name="enable_buffer_history">Включить историю буфера</string>
|
<string name="enable_buffer_history">Включить историю буфера</string>
|
||||||
<string name="enable_buffer_history_description">Позволяет обращаться к предыдущим состояниям буфера. Эта опция может повысить качество рендеринга и стабильность производительности в некоторых играх.</string>
|
<string name="enable_buffer_history_description">Позволяет обращаться к предыдущим состояниям буфера. Эта опция может повысить качество рендеринга и стабильность производительности в некоторых играх.</string>
|
||||||
|
<string name="enable_gpu_buffer_readback">Включить обратное чтение буфера ГПУ</string>
|
||||||
|
<string name="enable_gpu_buffer_readback_description">Сохраняет измененные ГПУ данные буфера путем чтения их обратно перед выгрузками. Некоторые игры требуют этого, чтобы рендерить определенные эффекты правильно. Может вызывать проблемы если оборудование не может обработать дополнительную рабочую нагрузку.</string>
|
||||||
<string name="use_optimized_vertex_buffers">Оптимизированные вершинные буферы</string>
|
<string name="use_optimized_vertex_buffers">Оптимизированные вершинные буферы</string>
|
||||||
<string name="use_optimized_vertex_buffers_description">Включает оптимизированную привязку вершинного буфера для повышения производительности. Требует Mesa Turnip 26.0+ / QCOM. Приводит к вылету на старых версиях драйверов Turnip (25.3 и ниже).</string>
|
<string name="use_optimized_vertex_buffers_description">Включает оптимизированную привязку вершинного буфера для повышения производительности. Требует Mesa Turnip 26.0+ / QCOM. Приводит к вылету на старых версиях драйверов Turnip (25.3 и ниже).</string>
|
||||||
|
|
||||||
@@ -1086,6 +1088,7 @@
|
|||||||
<string name="gpu_fence_behavior_immediate">Мгновенный</string>
|
<string name="gpu_fence_behavior_immediate">Мгновенный</string>
|
||||||
<string name="gpu_fence_behavior_balanced">Сбалансированный</string>
|
<string name="gpu_fence_behavior_balanced">Сбалансированный</string>
|
||||||
<string name="gpu_fence_behavior_accurate">Точный</string>
|
<string name="gpu_fence_behavior_accurate">Точный</string>
|
||||||
|
<string name="gpu_fence_behavior_strict">Строгий</string>
|
||||||
|
|
||||||
<string name="vram_usage_conservative">Консервативный</string>
|
<string name="vram_usage_conservative">Консервативный</string>
|
||||||
<string name="vram_usage_aggressive">Агрессивный</string>
|
<string name="vram_usage_aggressive">Агрессивный</string>
|
||||||
|
|||||||
@@ -570,6 +570,8 @@
|
|||||||
<string name="renderer_reactive_flushing_description">通过牺牲性能来提升某些游戏的渲染精度。</string>
|
<string name="renderer_reactive_flushing_description">通过牺牲性能来提升某些游戏的渲染精度。</string>
|
||||||
<string name="enable_buffer_history">启用缓冲区历史</string>
|
<string name="enable_buffer_history">启用缓冲区历史</string>
|
||||||
<string name="enable_buffer_history_description">启用对先前缓冲区状态的访问。此选项可在某些游戏中提升渲染质量并保持性能的一致性。</string>
|
<string name="enable_buffer_history_description">启用对先前缓冲区状态的访问。此选项可在某些游戏中提升渲染质量并保持性能的一致性。</string>
|
||||||
|
<string name="enable_gpu_buffer_readback">启用 GPU 缓冲区回读</string>
|
||||||
|
<string name="enable_gpu_buffer_readback_description">在上传前回读经由 GPU 修改过的缓冲区数据,以将其保留。一些游戏会用到这项设定以正确渲染某些效果。如果硬件无法处理额外的工作负载,则可能会导致问题。</string>
|
||||||
<string name="use_optimized_vertex_buffers">优化顶点缓冲区</string>
|
<string name="use_optimized_vertex_buffers">优化顶点缓冲区</string>
|
||||||
<string name="use_optimized_vertex_buffers_description">启用经过优化的顶点缓冲区绑定以提升性能。需要 Mesa 26.0 及以上版本的 Turnip 或 QCOM 驱动程序。若使用较旧版本的 Turnip 驱动 (25.3 及以下版本) 则会导致崩溃。</string>
|
<string name="use_optimized_vertex_buffers_description">启用经过优化的顶点缓冲区绑定以提升性能。需要 Mesa 26.0 及以上版本的 Turnip 或 QCOM 驱动程序。若使用较旧版本的 Turnip 驱动 (25.3 及以下版本) 则会导致崩溃。</string>
|
||||||
|
|
||||||
@@ -1087,6 +1089,7 @@
|
|||||||
<string name="gpu_fence_behavior_immediate">即时</string>
|
<string name="gpu_fence_behavior_immediate">即时</string>
|
||||||
<string name="gpu_fence_behavior_balanced">均衡</string>
|
<string name="gpu_fence_behavior_balanced">均衡</string>
|
||||||
<string name="gpu_fence_behavior_accurate">精确</string>
|
<string name="gpu_fence_behavior_accurate">精确</string>
|
||||||
|
<string name="gpu_fence_behavior_strict">严格</string>
|
||||||
|
|
||||||
<string name="vram_usage_conservative">保守式</string>
|
<string name="vram_usage_conservative">保守式</string>
|
||||||
<string name="vram_usage_aggressive">主动式</string>
|
<string name="vram_usage_aggressive">主动式</string>
|
||||||
|
|||||||
@@ -561,6 +561,8 @@
|
|||||||
<string name="renderer_reactive_flushing_description">犧牲效能,以改善部分遊戲的轉譯準確度</string>
|
<string name="renderer_reactive_flushing_description">犧牲效能,以改善部分遊戲的轉譯準確度</string>
|
||||||
<string name="enable_buffer_history">啟用緩衝區歷史</string>
|
<string name="enable_buffer_history">啟用緩衝區歷史</string>
|
||||||
<string name="enable_buffer_history_description">允許存取先前的緩衝區狀態。此選項可能會改善部分遊戲的渲染品質與效能穩定性</string>
|
<string name="enable_buffer_history_description">允許存取先前的緩衝區狀態。此選項可能會改善部分遊戲的渲染品質與效能穩定性</string>
|
||||||
|
<string name="enable_gpu_buffer_readback">啟用 GPU 緩衝區讀回</string>
|
||||||
|
<string name="enable_gpu_buffer_readback_description">透過在上傳之前先將 GPU 修改過的緩衝區資料讀回來保存資料,部分遊戲需要啟用此功能才能正常渲染遊戲特效。如果硬體無法負荷可能會導致錯誤</string>
|
||||||
<string name="use_optimized_vertex_buffers">最佳化頂點緩衝區</string>
|
<string name="use_optimized_vertex_buffers">最佳化頂點緩衝區</string>
|
||||||
<string name="use_optimized_vertex_buffers_description">啟用最佳化的頂點緩衝區綁定。需要安裝 Mesa 26.0+ Turnip drivers/Qualcomm drivers。使用舊版 Turnip drivers 會導致當機 (25.3版和更低的版本)</string>
|
<string name="use_optimized_vertex_buffers_description">啟用最佳化的頂點緩衝區綁定。需要安裝 Mesa 26.0+ Turnip drivers/Qualcomm drivers。使用舊版 Turnip drivers 會導致當機 (25.3版和更低的版本)</string>
|
||||||
|
|
||||||
|
|||||||
@@ -558,6 +558,7 @@
|
|||||||
<item>@string/gpu_fence_behavior_immediate</item>
|
<item>@string/gpu_fence_behavior_immediate</item>
|
||||||
<item>@string/gpu_fence_behavior_balanced</item>
|
<item>@string/gpu_fence_behavior_balanced</item>
|
||||||
<item>@string/gpu_fence_behavior_accurate</item>
|
<item>@string/gpu_fence_behavior_accurate</item>
|
||||||
|
<item>@string/gpu_fence_behavior_strict</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
<integer-array name="gpuFenceBehaviorValues">
|
<integer-array name="gpuFenceBehaviorValues">
|
||||||
<item>0</item>
|
<item>0</item>
|
||||||
|
|||||||
@@ -586,6 +586,8 @@
|
|||||||
<string name="renderer_reactive_flushing_description">Improves rendering accuracy in some games at the cost of performance.</string>
|
<string name="renderer_reactive_flushing_description">Improves rendering accuracy in some games at the cost of performance.</string>
|
||||||
<string name="enable_buffer_history">Enable buffer history</string>
|
<string name="enable_buffer_history">Enable buffer history</string>
|
||||||
<string name="enable_buffer_history_description">Enables access to previous buffer states. This option may improve rendering quality and performance consistency in some games.</string>
|
<string name="enable_buffer_history_description">Enables access to previous buffer states. This option may improve rendering quality and performance consistency in some games.</string>
|
||||||
|
<string name="enable_gpu_buffer_readback">Enable GPU Buffer Readback</string>
|
||||||
|
<string name="enable_gpu_buffer_readback_description">Preserves GPU-modified buffer data by reading it back before uploads. Some games require this to render certain effects properly. May cause issues if the hardware cannot handle the additional workload.</string>
|
||||||
<string name="use_optimized_vertex_buffers">Optimized Vertex Buffers</string>
|
<string name="use_optimized_vertex_buffers">Optimized Vertex Buffers</string>
|
||||||
<string name="use_optimized_vertex_buffers_description">Enables optimized vertex buffer binding for improved performance. Requires Mesa 26.0+ Turnip drivers/ QCOM drivers. Will crash on older Turnip drivers (25.3 and below).</string>
|
<string name="use_optimized_vertex_buffers_description">Enables optimized vertex buffer binding for improved performance. Requires Mesa 26.0+ Turnip drivers/ QCOM drivers. Will crash on older Turnip drivers (25.3 and below).</string>
|
||||||
|
|
||||||
@@ -1136,6 +1138,7 @@
|
|||||||
<string name="gpu_fence_behavior_immediate">Immediate</string>
|
<string name="gpu_fence_behavior_immediate">Immediate</string>
|
||||||
<string name="gpu_fence_behavior_balanced">Balanced</string>
|
<string name="gpu_fence_behavior_balanced">Balanced</string>
|
||||||
<string name="gpu_fence_behavior_accurate">Accurate</string>
|
<string name="gpu_fence_behavior_accurate">Accurate</string>
|
||||||
|
<string name="gpu_fence_behavior_strict">Strict</string>
|
||||||
|
|
||||||
<!-- ASTC Decoding Method Choices -->
|
<!-- ASTC Decoding Method Choices -->
|
||||||
<string name="accelerate_astc_cpu" translatable="false">CPU</string>
|
<string name="accelerate_astc_cpu" translatable="false">CPU</string>
|
||||||
|
|||||||
@@ -76,7 +76,6 @@ add_library(
|
|||||||
logging.h
|
logging.h
|
||||||
lz4_compression.cpp
|
lz4_compression.cpp
|
||||||
lz4_compression.h
|
lz4_compression.h
|
||||||
make_unique_for_overwrite.h
|
|
||||||
math_util.h
|
math_util.h
|
||||||
memory_detect.cpp
|
memory_detect.cpp
|
||||||
memory_detect.h
|
memory_detect.h
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include <type_traits>
|
|
||||||
|
|
||||||
namespace Common {
|
|
||||||
|
|
||||||
template <class T>
|
|
||||||
requires(!std::is_array_v<T>)
|
|
||||||
std::unique_ptr<T> make_unique_for_overwrite() {
|
|
||||||
return std::unique_ptr<T>(new T);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T>
|
|
||||||
requires std::is_unbounded_array_v<T>
|
|
||||||
std::unique_ptr<T> make_unique_for_overwrite(std::size_t n) {
|
|
||||||
return std::unique_ptr<T>(new std::remove_extent_t<T>[n]);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T, class... Args>
|
|
||||||
requires std::is_bounded_array_v<T>
|
|
||||||
void make_unique_for_overwrite(Args&&...) = delete;
|
|
||||||
|
|
||||||
} // namespace Common
|
|
||||||
@@ -8,8 +8,7 @@
|
|||||||
|
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
#include <memory>
|
||||||
#include "common/make_unique_for_overwrite.h"
|
|
||||||
|
|
||||||
namespace Common {
|
namespace Common {
|
||||||
|
|
||||||
@@ -38,8 +37,9 @@ public:
|
|||||||
ScratchBuffer() = default;
|
ScratchBuffer() = default;
|
||||||
|
|
||||||
explicit ScratchBuffer(size_type initial_capacity)
|
explicit ScratchBuffer(size_type initial_capacity)
|
||||||
: last_requested_size{initial_capacity}, buffer_capacity{initial_capacity},
|
: last_requested_size{initial_capacity}
|
||||||
buffer{Common::make_unique_for_overwrite<T[]>(initial_capacity)} {}
|
, buffer_capacity{initial_capacity}
|
||||||
|
, buffer{std::make_unique_for_overwrite<T[]>(initial_capacity)} {}
|
||||||
|
|
||||||
~ScratchBuffer() = default;
|
~ScratchBuffer() = default;
|
||||||
ScratchBuffer(const ScratchBuffer&) = delete;
|
ScratchBuffer(const ScratchBuffer&) = delete;
|
||||||
@@ -64,7 +64,7 @@ public:
|
|||||||
/// The previously held data will remain intact.
|
/// The previously held data will remain intact.
|
||||||
void resize(size_type size) {
|
void resize(size_type size) {
|
||||||
if (size > buffer_capacity) {
|
if (size > buffer_capacity) {
|
||||||
auto new_buffer = Common::make_unique_for_overwrite<T[]>(size);
|
auto new_buffer = std::make_unique_for_overwrite<T[]>(size);
|
||||||
std::memcpy(new_buffer.get(), buffer.get(), buffer_capacity * sizeof(T));
|
std::memcpy(new_buffer.get(), buffer.get(), buffer_capacity * sizeof(T));
|
||||||
buffer = std::move(new_buffer);
|
buffer = std::move(new_buffer);
|
||||||
buffer_capacity = size;
|
buffer_capacity = size;
|
||||||
@@ -77,7 +77,7 @@ public:
|
|||||||
void resize_destructive(size_type size) {
|
void resize_destructive(size_type size) {
|
||||||
if (size > buffer_capacity) {
|
if (size > buffer_capacity) {
|
||||||
buffer_capacity = size;
|
buffer_capacity = size;
|
||||||
buffer = Common::make_unique_for_overwrite<T[]>(buffer_capacity);
|
buffer = std::make_unique_for_overwrite<T[]>(buffer_capacity);
|
||||||
}
|
}
|
||||||
last_requested_size = size;
|
last_requested_size = size;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -178,6 +178,10 @@ bool IsGPUFenceBehaviorAccurate() {
|
|||||||
return values.gpu_fence_behavior.GetValue() == GpuFenceBehavior::Accurate;
|
return values.gpu_fence_behavior.GetValue() == GpuFenceBehavior::Accurate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsGPUFenceBehaviorStrict() {
|
||||||
|
return values.gpu_fence_behavior.GetValue() == GpuFenceBehavior::Strict;
|
||||||
|
}
|
||||||
|
|
||||||
bool IsFastmemEnabled() {
|
bool IsFastmemEnabled() {
|
||||||
if (values.cpu_accuracy.GetValue() == Settings::CpuAccuracy::Debugging)
|
if (values.cpu_accuracy.GetValue() == Settings::CpuAccuracy::Debugging)
|
||||||
return bool(values.cpuopt_fastmem);
|
return bool(values.cpuopt_fastmem);
|
||||||
|
|||||||
@@ -525,7 +525,7 @@ struct Values {
|
|||||||
SwitchableSetting<GpuFenceBehavior, true> gpu_fence_behavior{linkage,
|
SwitchableSetting<GpuFenceBehavior, true> gpu_fence_behavior{linkage,
|
||||||
GpuFenceBehavior::Default,
|
GpuFenceBehavior::Default,
|
||||||
GpuFenceBehavior::Default,
|
GpuFenceBehavior::Default,
|
||||||
GpuFenceBehavior::Accurate,
|
GpuFenceBehavior::Strict,
|
||||||
"gpu_fence_behavior",
|
"gpu_fence_behavior",
|
||||||
Category::RendererAdvanced,
|
Category::RendererAdvanced,
|
||||||
Specialization::Default,
|
Specialization::Default,
|
||||||
@@ -655,6 +655,13 @@ struct Values {
|
|||||||
|
|
||||||
SwitchableSetting<bool> rescale_hack{linkage, false, "rescale_hack",
|
SwitchableSetting<bool> rescale_hack{linkage, false, "rescale_hack",
|
||||||
Category::RendererHacks};
|
Category::RendererHacks};
|
||||||
|
SwitchableSetting<bool> enable_gpu_buffer_readback{linkage,
|
||||||
|
false,
|
||||||
|
"enable_gpu_buffer_readback",
|
||||||
|
Category::RendererAdvanced,
|
||||||
|
Specialization::Default,
|
||||||
|
true,
|
||||||
|
true};
|
||||||
|
|
||||||
SwitchableSetting<bool> use_asynchronous_shaders{linkage, false, "use_asynchronous_shaders",
|
SwitchableSetting<bool> use_asynchronous_shaders{linkage, false, "use_asynchronous_shaders",
|
||||||
Category::RendererHacks};
|
Category::RendererHacks};
|
||||||
@@ -972,6 +979,7 @@ bool IsDMALevelSafe();
|
|||||||
bool IsGPUFenceBehaviorDefault();
|
bool IsGPUFenceBehaviorDefault();
|
||||||
bool IsGPUFenceBehaviorBalanced();
|
bool IsGPUFenceBehaviorBalanced();
|
||||||
bool IsGPUFenceBehaviorAccurate();
|
bool IsGPUFenceBehaviorAccurate();
|
||||||
|
bool IsGPUFenceBehaviorStrict();
|
||||||
|
|
||||||
bool IsFastmemEnabled();
|
bool IsFastmemEnabled();
|
||||||
void SetNceEnabled(bool is_64bit);
|
void SetNceEnabled(bool is_64bit);
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ ENUM(VramUsageMode, Conservative, Aggressive);
|
|||||||
ENUM(RendererBackend, OpenGL_GLSL, Vulkan, Null, OpenGL_GLASM, OpenGL_SPIRV);
|
ENUM(RendererBackend, OpenGL_GLSL, Vulkan, Null, OpenGL_GLASM, OpenGL_SPIRV);
|
||||||
ENUM(GpuAccuracy, Low, High);
|
ENUM(GpuAccuracy, Low, High);
|
||||||
ENUM(DmaAccuracy, Default, Unsafe, Safe);
|
ENUM(DmaAccuracy, Default, Unsafe, Safe);
|
||||||
ENUM(GpuFenceBehavior, Default, Immediate, Balanced, Accurate);
|
ENUM(GpuFenceBehavior, Default, Immediate, Balanced, Accurate, Strict);
|
||||||
ENUM(CpuBackend, Dynarmic, Nce);
|
ENUM(CpuBackend, Dynarmic, Nce);
|
||||||
ENUM(CpuAccuracy, Auto, Accurate, Unsafe, Paranoid, Debugging);
|
ENUM(CpuAccuracy, Auto, Accurate, Unsafe, Paranoid, Debugging);
|
||||||
ENUM(CpuClock, Normal, Boost, Overclock)
|
ENUM(CpuClock, Normal, Boost, Overclock)
|
||||||
|
|||||||
@@ -1222,7 +1222,7 @@ target_link_libraries(core PRIVATE
|
|||||||
RenderDoc::API
|
RenderDoc::API
|
||||||
ZLIB::ZLIB)
|
ZLIB::ZLIB)
|
||||||
|
|
||||||
target_link_libraries(core PUBLIC httplib::httplib zstd::zstd)
|
target_link_libraries(core PUBLIC httplib::httplib zstd::zstd frozen::frozen-headers)
|
||||||
|
|
||||||
if (ENABLE_WEB_SERVICE)
|
if (ENABLE_WEB_SERVICE)
|
||||||
target_compile_definitions(core PUBLIC ENABLE_WEB_SERVICE)
|
target_compile_definitions(core PUBLIC ENABLE_WEB_SERVICE)
|
||||||
|
|||||||
@@ -109,8 +109,7 @@ VirtualFile RealVfsFilesystem::OpenFileFromEntry(std::string_view path_, std::op
|
|||||||
auto reference = std::make_unique<FileReference>();
|
auto reference = std::make_unique<FileReference>();
|
||||||
this->InsertReferenceIntoListLocked(*reference);
|
this->InsertReferenceIntoListLocked(*reference);
|
||||||
|
|
||||||
auto file = std::shared_ptr<RealVfsFile>(
|
auto file = std::make_shared<RealVfsFile>(*this, std::move(reference), path, perms, size, std::move(parent_path));
|
||||||
new RealVfsFile(*this, std::move(reference), path, perms, size, std::move(parent_path)));
|
|
||||||
cache[path] = file;
|
cache[path] = file;
|
||||||
|
|
||||||
return file;
|
return file;
|
||||||
@@ -177,7 +176,7 @@ bool RealVfsFilesystem::DeleteFile(std::string_view path_) {
|
|||||||
|
|
||||||
VirtualDir RealVfsFilesystem::OpenDirectory(std::string_view path_, OpenMode perms) {
|
VirtualDir RealVfsFilesystem::OpenDirectory(std::string_view path_, OpenMode perms) {
|
||||||
const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault);
|
const auto path = FS::SanitizePath(path_, FS::DirectorySeparator::PlatformDefault);
|
||||||
return std::shared_ptr<RealVfsDirectory>(new RealVfsDirectory(*this, path, perms));
|
return std::make_shared<RealVfsDirectory>(*this, path, perms);
|
||||||
}
|
}
|
||||||
|
|
||||||
VirtualDir RealVfsFilesystem::CreateDirectory(std::string_view path_, OpenMode perms) {
|
VirtualDir RealVfsFilesystem::CreateDirectory(std::string_view path_, OpenMode perms) {
|
||||||
@@ -185,7 +184,7 @@ VirtualDir RealVfsFilesystem::CreateDirectory(std::string_view path_, OpenMode p
|
|||||||
if (!FS::CreateDirs(path)) {
|
if (!FS::CreateDirs(path)) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return std::shared_ptr<RealVfsDirectory>(new RealVfsDirectory(*this, path, perms));
|
return std::make_shared<RealVfsDirectory>(*this, path, perms);
|
||||||
}
|
}
|
||||||
|
|
||||||
VirtualDir RealVfsFilesystem::CopyDirectory(std::string_view old_path_,
|
VirtualDir RealVfsFilesystem::CopyDirectory(std::string_view old_path_,
|
||||||
|
|||||||
@@ -82,6 +82,9 @@ class RealVfsFile : public VfsFile {
|
|||||||
friend class RealVfsFilesystem;
|
friend class RealVfsFilesystem;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
RealVfsFile(RealVfsFilesystem& base, std::unique_ptr<FileReference> reference,
|
||||||
|
const std::string& path, OpenMode perms = OpenMode::Read,
|
||||||
|
std::optional<u64> size = {}, std::optional<std::string> parent_path = {});
|
||||||
~RealVfsFile() override;
|
~RealVfsFile() override;
|
||||||
|
|
||||||
std::string GetName() const override;
|
std::string GetName() const override;
|
||||||
@@ -95,9 +98,6 @@ public:
|
|||||||
bool Rename(std::string_view name) override;
|
bool Rename(std::string_view name) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RealVfsFile(RealVfsFilesystem& base, std::unique_ptr<FileReference> reference,
|
|
||||||
const std::string& path, OpenMode perms = OpenMode::Read,
|
|
||||||
std::optional<u64> size = {}, std::optional<std::string> parent_path = {});
|
|
||||||
|
|
||||||
RealVfsFilesystem& base;
|
RealVfsFilesystem& base;
|
||||||
std::unique_ptr<FileReference> reference;
|
std::unique_ptr<FileReference> reference;
|
||||||
@@ -113,6 +113,8 @@ class RealVfsDirectory : public VfsDirectory {
|
|||||||
friend class RealVfsFilesystem;
|
friend class RealVfsFilesystem;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
RealVfsDirectory(RealVfsFilesystem& base, const std::string& path,
|
||||||
|
OpenMode perms = OpenMode::Read);
|
||||||
~RealVfsDirectory() override;
|
~RealVfsDirectory() override;
|
||||||
|
|
||||||
VirtualFile GetFileRelative(std::string_view relative_path) const override;
|
VirtualFile GetFileRelative(std::string_view relative_path) const override;
|
||||||
@@ -138,9 +140,6 @@ public:
|
|||||||
std::map<std::string, VfsEntryType, std::less<>> GetEntries() const override;
|
std::map<std::string, VfsEntryType, std::less<>> GetEntries() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RealVfsDirectory(RealVfsFilesystem& base, const std::string& path,
|
|
||||||
OpenMode perms = OpenMode::Read);
|
|
||||||
|
|
||||||
template <typename T, typename R>
|
template <typename T, typename R>
|
||||||
std::vector<std::shared_ptr<R>> IterateEntries() const;
|
std::vector<std::shared_ptr<R>> IterateEntries() const;
|
||||||
|
|
||||||
|
|||||||
+591
-629
File diff suppressed because it is too large
Load Diff
@@ -517,7 +517,7 @@ void WindowSystem::UpdateAppletStateLocked(Applet* applet, bool is_foreground, b
|
|||||||
// Layer ordering. Composition sorts back-to-front. Now with enums for calrity.
|
// Layer ordering. Composition sorts back-to-front. Now with enums for calrity.
|
||||||
s32 z_index = Background;
|
s32 z_index = Background;
|
||||||
if (is_overlay) {
|
if (is_overlay) {
|
||||||
z_index = Overlay;
|
z_index = this->IsOverlayOpenLocked(*applet) ? Overlay : Background;
|
||||||
} else if (inherited_foreground) {
|
} else if (inherited_foreground) {
|
||||||
z_index = is_obscured ? Foreground : ForegroundVisible;
|
z_index = is_obscured ? Foreground : ForegroundVisible;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -13,11 +16,11 @@ IPurchaseEventManager::IPurchaseEventManager(Core::System& system_)
|
|||||||
"IPurchaseEventManager"} {
|
"IPurchaseEventManager"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&IPurchaseEventManager::SetDefaultDeliveryTarget>, "SetDefaultDeliveryTarget"},
|
FunctionInfo{0, D<&IPurchaseEventManager::SetDefaultDeliveryTarget>, "SetDefaultDeliveryTarget"},
|
||||||
{1, D<&IPurchaseEventManager::SetDeliveryTarget>, "SetDeliveryTarget"},
|
FunctionInfo{1, D<&IPurchaseEventManager::SetDeliveryTarget>, "SetDeliveryTarget"},
|
||||||
{2, D<&IPurchaseEventManager::GetPurchasedEvent>, "GetPurchasedEvent"},
|
FunctionInfo{2, D<&IPurchaseEventManager::GetPurchasedEvent>, "GetPurchasedEvent"},
|
||||||
{3, D<&IPurchaseEventManager::PopPurchasedProductInfo>, "PopPurchasedProductInfo"},
|
FunctionInfo{3, D<&IPurchaseEventManager::PopPurchasedProductInfo>, "PopPurchasedProductInfo"},
|
||||||
{4, D<&IPurchaseEventManager::PopPurchasedProductInfoWithUid>, "PopPurchasedProductInfoWithUid"},
|
FunctionInfo{4, D<&IPurchaseEventManager::PopPurchasedProductInfoWithUid>, "PopPurchasedProductInfoWithUid"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ public:
|
|||||||
explicit ISession(Core::System& system_, Controller& controller_)
|
explicit ISession(Core::System& system_, Controller& controller_)
|
||||||
: ServiceFramework{system_, "ISession"}, controller{controller_} {
|
: ServiceFramework{system_, "ISession"}, controller{controller_} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &ISession::SetPerformanceConfiguration, "SetPerformanceConfiguration"},
|
FunctionInfo{0, &ISession::SetPerformanceConfiguration, "SetPerformanceConfiguration"},
|
||||||
{1, &ISession::GetPerformanceConfiguration, "GetPerformanceConfiguration"},
|
FunctionInfo{1, &ISession::GetPerformanceConfiguration, "GetPerformanceConfiguration"},
|
||||||
{2, &ISession::SetCpuOverclockEnabled, "SetCpuOverclockEnabled"},
|
FunctionInfo{2, &ISession::SetCpuOverclockEnabled, "SetCpuOverclockEnabled"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,164 +21,154 @@ namespace Service::Audio {
|
|||||||
class IAudioOutManagerForApplet final : public ServiceFramework<IAudioOutManagerForApplet> {
|
class IAudioOutManagerForApplet final : public ServiceFramework<IAudioOutManagerForApplet> {
|
||||||
public:
|
public:
|
||||||
explicit IAudioOutManagerForApplet(Core::System& system_)
|
explicit IAudioOutManagerForApplet(Core::System& system_)
|
||||||
: ServiceFramework{system_, "audout:a"} {
|
: ServiceFramework{system_, "audout:a"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "RequestSuspend"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "RequestResume"},
|
FunctionInfo{0, nullptr, "RequestSuspend"},
|
||||||
{2, nullptr, "GetProcessMasterVolume"},
|
FunctionInfo{1, nullptr, "RequestResume"},
|
||||||
{3, nullptr, "SetProcessMasterVolume"},
|
FunctionInfo{2, nullptr, "GetProcessMasterVolume"},
|
||||||
{4, nullptr, "GetProcessRecordVolume"},
|
FunctionInfo{3, nullptr, "SetProcessMasterVolume"},
|
||||||
{5, nullptr, "SetProcessRecordVolume"},
|
FunctionInfo{4, nullptr, "GetProcessRecordVolume"},
|
||||||
};
|
FunctionInfo{5, nullptr, "SetProcessRecordVolume"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IAudioSnoopManager final : public ServiceFramework<IAudioSnoopManager> {
|
class IAudioSnoopManager final : public ServiceFramework<IAudioSnoopManager> {
|
||||||
public:
|
public:
|
||||||
explicit IAudioSnoopManager(Core::System& system_)
|
explicit IAudioSnoopManager(Core::System& system_)
|
||||||
: ServiceFramework{system_, "auddev"} {
|
: ServiceFramework{system_, "auddev"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "GetDspStatistics"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "GetAppletStateSummaries"},
|
FunctionInfo{0, nullptr, "GetDspStatistics"},
|
||||||
{2, nullptr, "SetDspStatisticsParameter"},
|
FunctionInfo{1, nullptr, "GetAppletStateSummaries"},
|
||||||
{3, nullptr, "GetDspStatisticsParameter"},
|
FunctionInfo{2, nullptr, "SetDspStatisticsParameter"},
|
||||||
{6, nullptr, "GetDspUsage"},
|
FunctionInfo{3, nullptr, "GetDspStatisticsParameter"},
|
||||||
};
|
FunctionInfo{6, nullptr, "GetDspUsage"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IAudioInManagerForApplet final : public ServiceFramework<IAudioInManagerForApplet> {
|
class IAudioInManagerForApplet final : public ServiceFramework<IAudioInManagerForApplet> {
|
||||||
public:
|
public:
|
||||||
explicit IAudioInManagerForApplet(Core::System& system_)
|
explicit IAudioInManagerForApplet(Core::System& system_)
|
||||||
: ServiceFramework{system_, "audin:a"} {
|
: ServiceFramework{system_, "audin:a"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "RequestSuspend"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "RequestResume"},
|
FunctionInfo{0, nullptr, "RequestSuspend"},
|
||||||
{2, nullptr, "GetProcessMasterVolume"},
|
FunctionInfo{1, nullptr, "RequestResume"},
|
||||||
{3, nullptr, "SetProcessMasterVolume"},
|
FunctionInfo{2, nullptr, "GetProcessMasterVolume"},
|
||||||
};
|
FunctionInfo{3, nullptr, "SetProcessMasterVolume"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IAudioRendererManagerForApplet final : public ServiceFramework<IAudioRendererManagerForApplet> {
|
class IAudioRendererManagerForApplet final : public ServiceFramework<IAudioRendererManagerForApplet> {
|
||||||
public:
|
public:
|
||||||
explicit IAudioRendererManagerForApplet(Core::System& system_)
|
explicit IAudioRendererManagerForApplet(Core::System& system_)
|
||||||
: ServiceFramework{system_, "audren:a"} {
|
: ServiceFramework{system_, "audren:a"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "RequestSuspend"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "RequestResume"},
|
FunctionInfo{0, nullptr, "RequestSuspend"},
|
||||||
{2, nullptr, "GetProcessMasterVolume"},
|
FunctionInfo{1, nullptr, "RequestResume"},
|
||||||
{3, nullptr, "SetProcessMasterVolume"},
|
FunctionInfo{2, nullptr, "GetProcessMasterVolume"},
|
||||||
{4, nullptr, "RegisterAppletResourceUserId"},
|
FunctionInfo{3, nullptr, "SetProcessMasterVolume"},
|
||||||
{5, nullptr, "UnregisterAppletResourceUserId"},
|
FunctionInfo{4, nullptr, "RegisterAppletResourceUserId"},
|
||||||
{6, nullptr, "GetProcessRecordVolume"},
|
FunctionInfo{5, nullptr, "UnregisterAppletResourceUserId"},
|
||||||
{7, nullptr, "SetProcessRecordVolume"},
|
FunctionInfo{6, nullptr, "GetProcessRecordVolume"},
|
||||||
};
|
FunctionInfo{7, nullptr, "SetProcessRecordVolume"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IAudioOutManagerForDebugger final : public ServiceFramework<IAudioOutManagerForDebugger> {
|
class IAudioOutManagerForDebugger final : public ServiceFramework<IAudioOutManagerForDebugger> {
|
||||||
public:
|
public:
|
||||||
explicit IAudioOutManagerForDebugger(Core::System& system_)
|
explicit IAudioOutManagerForDebugger(Core::System& system_)
|
||||||
: ServiceFramework{system_, "audout:d"} {
|
: ServiceFramework{system_, "audout:d"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "RequestSuspend"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "RequestResume"},
|
FunctionInfo{0, nullptr, "RequestSuspend"},
|
||||||
};
|
FunctionInfo{1, nullptr, "RequestResume"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IAudioInManagerForDebugger final : public ServiceFramework<IAudioInManagerForDebugger> {
|
class IAudioInManagerForDebugger final : public ServiceFramework<IAudioInManagerForDebugger> {
|
||||||
public:
|
public:
|
||||||
explicit IAudioInManagerForDebugger(Core::System& system_)
|
explicit IAudioInManagerForDebugger(Core::System& system_)
|
||||||
: ServiceFramework{system_, "audin:d"} {
|
: ServiceFramework{system_, "audin:d"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "RequestSuspend"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "RequestResume"},
|
FunctionInfo{0, nullptr, "RequestSuspend"},
|
||||||
};
|
FunctionInfo{1, nullptr, "RequestResume"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IFinalOutputRecorderManagerForDebugger final : public ServiceFramework<IFinalOutputRecorderManagerForDebugger> {
|
class IFinalOutputRecorderManagerForDebugger final : public ServiceFramework<IFinalOutputRecorderManagerForDebugger> {
|
||||||
public:
|
public:
|
||||||
explicit IFinalOutputRecorderManagerForDebugger(Core::System& system_)
|
explicit IFinalOutputRecorderManagerForDebugger(Core::System& system_)
|
||||||
: ServiceFramework{system_, "audrec:d"} {
|
: ServiceFramework{system_, "audrec:d"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "RequestSuspend"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "RequestResume"},
|
FunctionInfo{0, nullptr, "RequestSuspend"},
|
||||||
};
|
FunctionInfo{1, nullptr, "RequestResume"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IAudioRendererManagerForDebugger final : public ServiceFramework<IAudioRendererManagerForDebugger> {
|
class IAudioRendererManagerForDebugger final : public ServiceFramework<IAudioRendererManagerForDebugger> {
|
||||||
public:
|
public:
|
||||||
explicit IAudioRendererManagerForDebugger(Core::System& system_)
|
explicit IAudioRendererManagerForDebugger(Core::System& system_)
|
||||||
: ServiceFramework{system_, "audren:d"} {
|
: ServiceFramework{system_, "audren:d"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "RequestSuspend"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "RequestResume"},
|
FunctionInfo{0, nullptr, "RequestSuspend"},
|
||||||
};
|
FunctionInfo{1, nullptr, "RequestResume"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IAudioSystemManagerForApplet final : public ServiceFramework<IAudioSystemManagerForApplet> {
|
class IAudioSystemManagerForApplet final : public ServiceFramework<IAudioSystemManagerForApplet> {
|
||||||
public:
|
public:
|
||||||
explicit IAudioSystemManagerForApplet(Core::System& system_)
|
explicit IAudioSystemManagerForApplet(Core::System& system_)
|
||||||
: ServiceFramework{system_, "aud:a"} {
|
: ServiceFramework{system_, "aud:a"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "RegisterAppletResourceUserId"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "UnregisterAppletResourceUserId"},
|
FunctionInfo{0, nullptr, "RegisterAppletResourceUserId"},
|
||||||
{2, nullptr, "RequestSuspendAudio"},
|
FunctionInfo{1, nullptr, "UnregisterAppletResourceUserId"},
|
||||||
{3, nullptr, "RequestResumeAudio"},
|
FunctionInfo{2, nullptr, "RequestSuspendAudio"},
|
||||||
{4, nullptr, "GetAudioOutputProcessMasterVolume"},
|
FunctionInfo{3, nullptr, "RequestResumeAudio"},
|
||||||
{5, nullptr, "SetAudioOutputProcessMasterVolume"},
|
FunctionInfo{4, nullptr, "GetAudioOutputProcessMasterVolume"},
|
||||||
{6, nullptr, "GetAudioInputProcessMasterVolume"},
|
FunctionInfo{5, nullptr, "SetAudioOutputProcessMasterVolume"},
|
||||||
{7, nullptr, "SetAudioInputProcessMasterVolume"},
|
FunctionInfo{6, nullptr, "GetAudioInputProcessMasterVolume"},
|
||||||
{8, nullptr, "GetAudioOutputProcessRecordVolume"},
|
FunctionInfo{7, nullptr, "SetAudioInputProcessMasterVolume"},
|
||||||
{9, nullptr, "SetAudioOutputProcessRecordVolume"},
|
FunctionInfo{8, nullptr, "GetAudioOutputProcessRecordVolume"},
|
||||||
{10, nullptr, "GetAppletStateSummaries"},
|
FunctionInfo{9, nullptr, "SetAudioOutputProcessRecordVolume"},
|
||||||
};
|
FunctionInfo{10, nullptr, "GetAppletStateSummaries"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IAudioSystemManagerForDebugger final : public ServiceFramework<IAudioSystemManagerForDebugger> {
|
class IAudioSystemManagerForDebugger final : public ServiceFramework<IAudioSystemManagerForDebugger> {
|
||||||
public:
|
public:
|
||||||
explicit IAudioSystemManagerForDebugger(Core::System& system_)
|
explicit IAudioSystemManagerForDebugger(Core::System& system_)
|
||||||
: ServiceFramework{system_, "aud:d"} {
|
: ServiceFramework{system_, "aud:d"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "RequestSuspendAudioForDebug"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "RequestResumeAudioForDebug"},
|
FunctionInfo{0, nullptr, "RequestSuspendAudioForDebug"},
|
||||||
};
|
FunctionInfo{1, nullptr, "RequestResumeAudioForDebug"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -8,25 +11,23 @@ namespace Service::Audio {
|
|||||||
class IFinalOutputRecorder final : public ServiceFramework<IFinalOutputRecorder> {
|
class IFinalOutputRecorder final : public ServiceFramework<IFinalOutputRecorder> {
|
||||||
public:
|
public:
|
||||||
explicit IFinalOutputRecorder(Core::System& system_)
|
explicit IFinalOutputRecorder(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IFinalOutputRecorder"} {
|
: ServiceFramework{system_, "IFinalOutputRecorder"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "GetFinalOutputRecorderState"},
|
|
||||||
{1, nullptr, "Start"},
|
|
||||||
{2, nullptr, "Stop"},
|
|
||||||
{3, nullptr, "AppendFinalOutputRecorderBuffer"},
|
|
||||||
{4, nullptr, "RegisterBufferEvent"},
|
|
||||||
{5, nullptr, "GetReleasedFinalOutputRecorderBuffers"},
|
|
||||||
{6, nullptr, "ContainsFinalOutputRecorderBuffer"},
|
|
||||||
{7, nullptr, "GetFinalOutputRecorderBufferEndTime"},
|
|
||||||
{8, nullptr, "AppendFinalOutputRecorderBufferAuto"},
|
|
||||||
{9, nullptr, "GetReleasedFinalOutputRecorderBufferAuto"},
|
|
||||||
{10, nullptr, "FlushFinalOutputRecorderBuffers"},
|
|
||||||
{11, nullptr, "AttachWorkBuffer"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "GetFinalOutputRecorderState"},
|
||||||
|
FunctionInfo{1, nullptr, "Start"},
|
||||||
|
FunctionInfo{2, nullptr, "Stop"},
|
||||||
|
FunctionInfo{3, nullptr, "AppendFinalOutputRecorderBuffer"},
|
||||||
|
FunctionInfo{4, nullptr, "RegisterBufferEvent"},
|
||||||
|
FunctionInfo{5, nullptr, "GetReleasedFinalOutputRecorderBuffers"},
|
||||||
|
FunctionInfo{6, nullptr, "ContainsFinalOutputRecorderBuffer"},
|
||||||
|
FunctionInfo{7, nullptr, "GetFinalOutputRecorderBufferEndTime"},
|
||||||
|
FunctionInfo{8, nullptr, "AppendFinalOutputRecorderBufferAuto"},
|
||||||
|
FunctionInfo{9, nullptr, "GetReleasedFinalOutputRecorderBufferAuto"},
|
||||||
|
FunctionInfo{10, nullptr, "FlushFinalOutputRecorderBuffers"},
|
||||||
|
FunctionInfo{11, nullptr, "AttachWorkBuffer"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -32,32 +32,32 @@ IBcatService::IBcatService(Core::System& system_, BcatBackend& backend_, u64 pro
|
|||||||
}} {
|
}} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{10100, D<&IBcatService::RequestSyncDeliveryCache>, "RequestSyncDeliveryCache"},
|
FunctionInfo{10100, D<&IBcatService::RequestSyncDeliveryCache>, "RequestSyncDeliveryCache"},
|
||||||
{10101, D<&IBcatService::RequestSyncDeliveryCacheWithDirectoryName>, "RequestSyncDeliveryCacheWithDirectoryName"},
|
FunctionInfo{10101, D<&IBcatService::RequestSyncDeliveryCacheWithDirectoryName>, "RequestSyncDeliveryCacheWithDirectoryName"},
|
||||||
{10200, nullptr, "CancelSyncDeliveryCacheRequest"},
|
FunctionInfo{10200, nullptr, "CancelSyncDeliveryCacheRequest"},
|
||||||
{20100, nullptr, "RequestSyncDeliveryCacheWithApplicationId"},
|
FunctionInfo{20100, nullptr, "RequestSyncDeliveryCacheWithApplicationId"},
|
||||||
{20101, nullptr, "RequestSyncDeliveryCacheWithApplicationIdAndDirectoryName"},
|
FunctionInfo{20101, nullptr, "RequestSyncDeliveryCacheWithApplicationIdAndDirectoryName"},
|
||||||
{20300, nullptr, "GetDeliveryCacheStorageUpdateNotifier"},
|
FunctionInfo{20300, nullptr, "GetDeliveryCacheStorageUpdateNotifier"},
|
||||||
{20301, nullptr, "RequestSuspendDeliveryTask"},
|
FunctionInfo{20301, nullptr, "RequestSuspendDeliveryTask"},
|
||||||
{20400, nullptr, "RegisterSystemApplicationDeliveryTask"},
|
FunctionInfo{20400, nullptr, "RegisterSystemApplicationDeliveryTask"},
|
||||||
{20401, nullptr, "UnregisterSystemApplicationDeliveryTask"},
|
FunctionInfo{20401, nullptr, "UnregisterSystemApplicationDeliveryTask"},
|
||||||
{20410, nullptr, "SetSystemApplicationDeliveryTaskTimer"},
|
FunctionInfo{20410, nullptr, "SetSystemApplicationDeliveryTaskTimer"},
|
||||||
{30100, D<&IBcatService::SetPassphrase>, "SetPassphrase"},
|
FunctionInfo{30100, D<&IBcatService::SetPassphrase>, "SetPassphrase"},
|
||||||
{30101, nullptr, "Unknown30101"}, //2.0.0-2.3.0
|
FunctionInfo{30101, nullptr, "Unknown30101"}, //2.0.0-2.3.0
|
||||||
{30102, nullptr, "Unknown30102"}, //2.0.0-2.3.0
|
FunctionInfo{30102, nullptr, "Unknown30102"}, //2.0.0-2.3.0
|
||||||
{30200, nullptr, "RegisterBackgroundDeliveryTask"},
|
FunctionInfo{30200, nullptr, "RegisterBackgroundDeliveryTask"},
|
||||||
{30201, nullptr, "UnregisterBackgroundDeliveryTask"},
|
FunctionInfo{30201, nullptr, "UnregisterBackgroundDeliveryTask"},
|
||||||
{30202, nullptr, "BlockDeliveryTask"},
|
FunctionInfo{30202, nullptr, "BlockDeliveryTask"},
|
||||||
{30203, nullptr, "UnblockDeliveryTask"},
|
FunctionInfo{30203, nullptr, "UnblockDeliveryTask"},
|
||||||
{30210, nullptr, "SetDeliveryTaskTimer"},
|
FunctionInfo{30210, nullptr, "SetDeliveryTaskTimer"},
|
||||||
{30300, D<&IBcatService::RegisterSystemApplicationDeliveryTasks>, "RegisterSystemApplicationDeliveryTasks"},
|
FunctionInfo{30300, D<&IBcatService::RegisterSystemApplicationDeliveryTasks>, "RegisterSystemApplicationDeliveryTasks"},
|
||||||
{90100, nullptr, "GetDeliveryTaskList"},
|
FunctionInfo{90100, nullptr, "GetDeliveryTaskList"},
|
||||||
{90101, nullptr, "GetDeliveryTaskListForSystem"}, //11.0.0+
|
FunctionInfo{90101, nullptr, "GetDeliveryTaskListForSystem"}, //11.0.0+
|
||||||
{90200, nullptr, "GetDeliveryList"},
|
FunctionInfo{90200, nullptr, "GetDeliveryList"},
|
||||||
{90201, D<&IBcatService::ClearDeliveryCacheStorage>, "ClearDeliveryCacheStorage"},
|
FunctionInfo{90201, D<&IBcatService::ClearDeliveryCacheStorage>, "ClearDeliveryCacheStorage"},
|
||||||
{90202, nullptr, "ClearDeliveryTaskSubscriptionStatus"},
|
FunctionInfo{90202, nullptr, "ClearDeliveryTaskSubscriptionStatus"},
|
||||||
{90300, nullptr, "GetPushNotificationLog"},
|
FunctionInfo{90300, nullptr, "GetPushNotificationLog"},
|
||||||
{90301, nullptr, "GetDeliveryCacheStorageUsage"}, //11.0.0+
|
FunctionInfo{90301, nullptr, "GetDeliveryCacheStorageUsage"}, //11.0.0+
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
|
|||||||
@@ -14,103 +14,95 @@ namespace Service::BPC {
|
|||||||
|
|
||||||
class BPC final : public ServiceFramework<BPC> {
|
class BPC final : public ServiceFramework<BPC> {
|
||||||
public:
|
public:
|
||||||
explicit BPC(Core::System& system_) : ServiceFramework{system_, "bpc"} {
|
explicit BPC(Core::System& system_) : ServiceFramework{system_, "bpc"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "ShutdownSystem"},
|
|
||||||
{1, nullptr, "RebootSystem"},
|
|
||||||
{2, nullptr, "GetWakeupReason"},
|
|
||||||
{3, nullptr, "GetShutdownReason"},
|
|
||||||
{4, nullptr, "GetAcOk"},
|
|
||||||
{5, nullptr, "GetBoardPowerControlEvent"},
|
|
||||||
{6, nullptr, "GetSleepButtonState"},
|
|
||||||
{7, nullptr, "GetPowerEvent"},
|
|
||||||
{8, nullptr, "CreateWakeupTimer"},
|
|
||||||
{9, nullptr, "CancelWakeupTimer"},
|
|
||||||
{10, nullptr, "EnableWakeupTimerOnDevice"},
|
|
||||||
{11, nullptr, "CreateWakeupTimerEx"},
|
|
||||||
{12, nullptr, "GetLastEnabledWakeupTimerType"},
|
|
||||||
{13, nullptr, "CleanAllWakeupTimers"},
|
|
||||||
{14, nullptr, "GetPowerButton"},
|
|
||||||
{15, nullptr, "SetEnableWakeupTimer"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "ShutdownSystem"},
|
||||||
|
FunctionInfo{1, nullptr, "RebootSystem"},
|
||||||
|
FunctionInfo{2, nullptr, "GetWakeupReason"},
|
||||||
|
FunctionInfo{3, nullptr, "GetShutdownReason"},
|
||||||
|
FunctionInfo{4, nullptr, "GetAcOk"},
|
||||||
|
FunctionInfo{5, nullptr, "GetBoardPowerControlEvent"},
|
||||||
|
FunctionInfo{6, nullptr, "GetSleepButtonState"},
|
||||||
|
FunctionInfo{7, nullptr, "GetPowerEvent"},
|
||||||
|
FunctionInfo{8, nullptr, "CreateWakeupTimer"},
|
||||||
|
FunctionInfo{9, nullptr, "CancelWakeupTimer"},
|
||||||
|
FunctionInfo{10, nullptr, "EnableWakeupTimerOnDevice"},
|
||||||
|
FunctionInfo{11, nullptr, "CreateWakeupTimerEx"},
|
||||||
|
FunctionInfo{12, nullptr, "GetLastEnabledWakeupTimerType"},
|
||||||
|
FunctionInfo{13, nullptr, "CleanAllWakeupTimers"},
|
||||||
|
FunctionInfo{14, nullptr, "GetPowerButton"},
|
||||||
|
FunctionInfo{15, nullptr, "SetEnableWakeupTimer"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class BPC_R final : public ServiceFramework<BPC_R> {
|
class BPC_R final : public ServiceFramework<BPC_R> {
|
||||||
public:
|
public:
|
||||||
explicit BPC_R(Core::System& system_) : ServiceFramework{system_, "bpc:r"} {
|
explicit BPC_R(Core::System& system_) : ServiceFramework{system_, "bpc:r"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "GetRtcTime"},
|
|
||||||
{1, nullptr, "SetRtcTime"},
|
|
||||||
{2, nullptr, "GetRtcResetDetected"},
|
|
||||||
{3, nullptr, "ClearRtcResetDetected"},
|
|
||||||
{4, nullptr, "SetUpRtcResetOnShutdown"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "GetRtcTime"},
|
||||||
|
FunctionInfo{1, nullptr, "SetRtcTime"},
|
||||||
|
FunctionInfo{2, nullptr, "GetRtcResetDetected"},
|
||||||
|
FunctionInfo{3, nullptr, "ClearRtcResetDetected"},
|
||||||
|
FunctionInfo{4, nullptr, "SetUpRtcResetOnShutdown"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class BPC_C final : public ServiceFramework<BPC_C> {
|
class BPC_C final : public ServiceFramework<BPC_C> {
|
||||||
public:
|
public:
|
||||||
explicit BPC_C(Core::System& system_) : ServiceFramework{system_, "bpc:c"} {
|
explicit BPC_C(Core::System& system_) : ServiceFramework{system_, "bpc:c"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "ShutdownSystem"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "RebootSystem"},
|
FunctionInfo{0, nullptr, "ShutdownSystem"},
|
||||||
{2, nullptr, "GetWakeupReason"},
|
FunctionInfo{1, nullptr, "RebootSystem"},
|
||||||
{3, nullptr, "GetShutdownReason"},
|
FunctionInfo{2, nullptr, "GetWakeupReason"},
|
||||||
{4, nullptr, "GetAcOk"},
|
FunctionInfo{3, nullptr, "GetShutdownReason"},
|
||||||
{5, nullptr, "GetPowerEvent"},
|
FunctionInfo{4, nullptr, "GetAcOk"},
|
||||||
};
|
FunctionInfo{5, nullptr, "GetPowerEvent"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class BPC_B final : public ServiceFramework<BPC_B> {
|
class BPC_B final : public ServiceFramework<BPC_B> {
|
||||||
public:
|
public:
|
||||||
explicit BPC_B(Core::System& system_) : ServiceFramework{system_, "bpc:b"} {
|
explicit BPC_B(Core::System& system_) : ServiceFramework{system_, "bpc:b"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "GetSleepButtonState"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "GetPowerButtonEvent"},
|
FunctionInfo{0, nullptr, "GetSleepButtonState"},
|
||||||
};
|
FunctionInfo{1, nullptr, "GetPowerButtonEvent"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class BPC_W final : public ServiceFramework<BPC_W> {
|
class BPC_W final : public ServiceFramework<BPC_W> {
|
||||||
public:
|
public:
|
||||||
explicit BPC_W(Core::System& system_) : ServiceFramework{system_, "bpc:w"} {
|
explicit BPC_W(Core::System& system_) : ServiceFramework{system_, "bpc:w"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "CreateWakeupTimer"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "CancelWakeupTimer"},
|
FunctionInfo{0, nullptr, "CreateWakeupTimer"},
|
||||||
{2, nullptr, "EnableWakeupTimerOnDevice"},
|
FunctionInfo{1, nullptr, "CancelWakeupTimer"},
|
||||||
};
|
FunctionInfo{2, nullptr, "EnableWakeupTimerOnDevice"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class BPC_AMS final : public ServiceFramework<BPC_AMS> {
|
class BPC_AMS final : public ServiceFramework<BPC_AMS> {
|
||||||
public:
|
public:
|
||||||
explicit BPC_AMS(Core::System& system_) : ServiceFramework{system_, "bpc:ams"} {
|
explicit BPC_AMS(Core::System& system_) : ServiceFramework{system_, "bpc:ams"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{65000, nullptr, "RebootToFatalError"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{65001, nullptr, "SetRebootPayload"},
|
FunctionInfo{65000, nullptr, "RebootToFatalError"},
|
||||||
};
|
FunctionInfo{65001, nullptr, "SetRebootPayload"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -20,26 +20,26 @@ namespace Service::BtDrv {
|
|||||||
class IBluetoothUser final : public ServiceFramework<IBluetoothUser> {
|
class IBluetoothUser final : public ServiceFramework<IBluetoothUser> {
|
||||||
public:
|
public:
|
||||||
explicit IBluetoothUser(Core::System& system_)
|
explicit IBluetoothUser(Core::System& system_)
|
||||||
: ServiceFramework{system_, "bt"}, service_context{system_, "bt"} {
|
: ServiceFramework{system_, "bt"}
|
||||||
// clang-format off
|
, service_context{system_, "bt"} {
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "LeClientReadCharacteristic"},
|
|
||||||
{1, nullptr, "LeClientReadDescriptor"},
|
|
||||||
{2, nullptr, "LeClientWriteCharacteristic"},
|
|
||||||
{3, nullptr, "LeClientWriteDescriptor"},
|
|
||||||
{4, nullptr, "LeClientRegisterNotification"},
|
|
||||||
{5, nullptr, "LeClientDeregisterNotification"},
|
|
||||||
{6, nullptr, "SetLeResponse"},
|
|
||||||
{7, nullptr, "LeSendIndication"},
|
|
||||||
{8, nullptr, "GetLeEventInfo"},
|
|
||||||
{9, C<&IBluetoothUser::RegisterBleEvent>, "RegisterBleEvent"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
|
|
||||||
register_event = service_context.CreateEvent("BT:RegisterEvent");
|
register_event = service_context.CreateEvent("BT:RegisterEvent");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "LeClientReadCharacteristic"},
|
||||||
|
FunctionInfo{1, nullptr, "LeClientReadDescriptor"},
|
||||||
|
FunctionInfo{2, nullptr, "LeClientWriteCharacteristic"},
|
||||||
|
FunctionInfo{3, nullptr, "LeClientWriteDescriptor"},
|
||||||
|
FunctionInfo{4, nullptr, "LeClientRegisterNotification"},
|
||||||
|
FunctionInfo{5, nullptr, "LeClientDeregisterNotification"},
|
||||||
|
FunctionInfo{6, nullptr, "SetLeResponse"},
|
||||||
|
FunctionInfo{7, nullptr, "LeSendIndication"},
|
||||||
|
FunctionInfo{8, nullptr, "GetLeEventInfo"},
|
||||||
|
FunctionInfo{9, C<&IBluetoothUser::RegisterBleEvent>, "RegisterBleEvent"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
~IBluetoothUser() override {
|
~IBluetoothUser() override {
|
||||||
service_context.CloseEvent(register_event);
|
service_context.CloseEvent(register_event);
|
||||||
}
|
}
|
||||||
@@ -59,144 +59,142 @@ private:
|
|||||||
|
|
||||||
class IBluetoothDriver final : public ServiceFramework<IBluetoothDriver> {
|
class IBluetoothDriver final : public ServiceFramework<IBluetoothDriver> {
|
||||||
public:
|
public:
|
||||||
explicit IBluetoothDriver(Core::System& system_) : ServiceFramework{system_, "btdrv"} {
|
explicit IBluetoothDriver(Core::System& system_) : ServiceFramework{system_, "btdrv"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "InitializeBluetoothDriver"},
|
|
||||||
{1, nullptr, "InitializeBluetooth"},
|
|
||||||
{2, nullptr, "EnableBluetooth"},
|
|
||||||
{3, nullptr, "DisableBluetooth"},
|
|
||||||
{4, nullptr, "FinalizeBluetooth"},
|
|
||||||
{5, nullptr, "GetAdapterProperties"},
|
|
||||||
{6, nullptr, "GetAdapterProperty"},
|
|
||||||
{7, nullptr, "SetAdapterProperty"},
|
|
||||||
{8, nullptr, "StartInquiry"},
|
|
||||||
{9, nullptr, "StopInquiry"},
|
|
||||||
{10, nullptr, "CreateBond"},
|
|
||||||
{11, nullptr, "RemoveBond"},
|
|
||||||
{12, nullptr, "CancelBond"},
|
|
||||||
{13, nullptr, "RespondToPinRequest"},
|
|
||||||
{14, nullptr, "RespondToSspRequest"},
|
|
||||||
{15, nullptr, "GetEventInfo"},
|
|
||||||
{16, nullptr, "InitializeHid"},
|
|
||||||
{17, nullptr, "OpenHidConnection"},
|
|
||||||
{18, nullptr, "CloseHidConnection"},
|
|
||||||
{19, nullptr, "WriteHidData"},
|
|
||||||
{20, nullptr, "WriteHidData2"},
|
|
||||||
{21, nullptr, "SetHidReport"},
|
|
||||||
{22, nullptr, "GetHidReport"},
|
|
||||||
{23, nullptr, "TriggerConnection"},
|
|
||||||
{24, nullptr, "AddPairedDeviceInfo"},
|
|
||||||
{25, nullptr, "GetPairedDeviceInfo"},
|
|
||||||
{26, nullptr, "FinalizeHid"},
|
|
||||||
{27, nullptr, "GetHidEventInfo"},
|
|
||||||
{28, nullptr, "SetTsi"},
|
|
||||||
{29, nullptr, "EnableBurstMode"},
|
|
||||||
{30, nullptr, "SetZeroRetransmission"},
|
|
||||||
{31, nullptr, "EnableMcMode"},
|
|
||||||
{32, nullptr, "EnableLlrScan"},
|
|
||||||
{33, nullptr, "DisableLlrScan"},
|
|
||||||
{34, C<&IBluetoothDriver::EnableRadio>, "EnableRadio"},
|
|
||||||
{35, nullptr, "SetVisibility"},
|
|
||||||
{36, nullptr, "EnableTbfcScan"},
|
|
||||||
{37, nullptr, "RegisterHidReportEvent"},
|
|
||||||
{38, nullptr, "GetHidReportEventInfo"},
|
|
||||||
{39, nullptr, "GetLatestPlr"},
|
|
||||||
{40, nullptr, "GetPendingConnections"},
|
|
||||||
{41, nullptr, "GetChannelMap"},
|
|
||||||
{42, nullptr, "EnableTxPowerBoostSetting"},
|
|
||||||
{43, nullptr, "IsTxPowerBoostSettingEnabled"},
|
|
||||||
{44, nullptr, "EnableAfhSetting"},
|
|
||||||
{45, nullptr, "IsAfhSettingEnabled"},
|
|
||||||
{46, nullptr, "InitializeBle"},
|
|
||||||
{47, nullptr, "EnableBle"},
|
|
||||||
{48, nullptr, "DisableBle"},
|
|
||||||
{49, nullptr, "FinalizeBle"},
|
|
||||||
{50, nullptr, "SetBleVisibility"},
|
|
||||||
{51, nullptr, "SetBleConnectionParameter"},
|
|
||||||
{52, nullptr, "SetBleDefaultConnectionParameter"},
|
|
||||||
{53, nullptr, "SetBleAdvertiseData"},
|
|
||||||
{54, nullptr, "SetBleAdvertiseParameter"},
|
|
||||||
{55, nullptr, "StartBleScan"},
|
|
||||||
{56, nullptr, "StopBleScan"},
|
|
||||||
{57, nullptr, "AddBleScanFilterCondition"},
|
|
||||||
{58, nullptr, "DeleteBleScanFilterCondition"},
|
|
||||||
{59, nullptr, "DeleteBleScanFilter"},
|
|
||||||
{60, nullptr, "ClearBleScanFilters"},
|
|
||||||
{61, nullptr, "EnableBleScanFilter"},
|
|
||||||
{62, nullptr, "RegisterGattClient"},
|
|
||||||
{63, nullptr, "UnregisterGattClient"},
|
|
||||||
{64, nullptr, "UnregisterAllGattClients"},
|
|
||||||
{65, nullptr, "ConnectGattServer"},
|
|
||||||
{66, nullptr, "CancelConnectGattServer"},
|
|
||||||
{67, nullptr, "DisconnectGattServer"},
|
|
||||||
{68, nullptr, "GetGattAttribute"},
|
|
||||||
{69, nullptr, "GetGattService"},
|
|
||||||
{70, nullptr, "ConfigureAttMtu"},
|
|
||||||
{71, nullptr, "RegisterGattServer"},
|
|
||||||
{72, nullptr, "UnregisterGattServer"},
|
|
||||||
{73, nullptr, "ConnectGattClient"},
|
|
||||||
{74, nullptr, "DisconnectGattClient"},
|
|
||||||
{75, nullptr, "AddGattService"},
|
|
||||||
{76, nullptr, "EnableGattService"},
|
|
||||||
{77, nullptr, "AddGattCharacteristic"},
|
|
||||||
{78, nullptr, "AddGattDescriptor"},
|
|
||||||
{79, nullptr, "GetBleManagedEventInfo"},
|
|
||||||
{80, nullptr, "GetGattFirstCharacteristic"},
|
|
||||||
{81, nullptr, "GetGattNextCharacteristic"},
|
|
||||||
{82, nullptr, "GetGattFirstDescriptor"},
|
|
||||||
{83, nullptr, "GetGattNextDescriptor"},
|
|
||||||
{84, nullptr, "RegisterGattManagedDataPath"},
|
|
||||||
{85, nullptr, "UnregisterGattManagedDataPath"},
|
|
||||||
{86, nullptr, "RegisterGattHidDataPath"},
|
|
||||||
{87, nullptr, "UnregisterGattHidDataPath"},
|
|
||||||
{88, nullptr, "RegisterGattDataPath"},
|
|
||||||
{89, nullptr, "UnregisterGattDataPath"},
|
|
||||||
{90, nullptr, "ReadGattCharacteristic"},
|
|
||||||
{91, nullptr, "ReadGattDescriptor"},
|
|
||||||
{92, nullptr, "WriteGattCharacteristic"},
|
|
||||||
{93, nullptr, "WriteGattDescriptor"},
|
|
||||||
{94, nullptr, "RegisterGattNotification"},
|
|
||||||
{95, nullptr, "UnregisterGattNotification"},
|
|
||||||
{96, nullptr, "GetLeHidEventInfo"},
|
|
||||||
{97, nullptr, "RegisterBleHidEvent"},
|
|
||||||
{98, nullptr, "SetBleScanParameter"},
|
|
||||||
{99, nullptr, "MoveToSecondaryPiconet"},
|
|
||||||
{100, nullptr, "IsBluetoothEnabled"},
|
|
||||||
{128, nullptr, "AcquireAudioEvent"},
|
|
||||||
{129, nullptr, "GetAudioEventInfo"},
|
|
||||||
{130, nullptr, "OpenAudioConnection"},
|
|
||||||
{131, nullptr, "CloseAudioConnection"},
|
|
||||||
{132, nullptr, "OpenAudioOut"},
|
|
||||||
{133, nullptr, "CloseAudioOut"},
|
|
||||||
{134, nullptr, "AcquireAudioOutStateChangedEvent"},
|
|
||||||
{135, nullptr, "StartAudioOut"},
|
|
||||||
{136, nullptr, "StopAudioOut"},
|
|
||||||
{137, nullptr, "GetAudioOutState"},
|
|
||||||
{138, nullptr, "GetAudioOutFeedingCodec"},
|
|
||||||
{139, nullptr, "GetAudioOutFeedingParameter"},
|
|
||||||
{140, nullptr, "AcquireAudioOutBufferAvailableEvent"},
|
|
||||||
{141, nullptr, "SendAudioData"},
|
|
||||||
{142, nullptr, "AcquireAudioControlInputStateChangedEvent"},
|
|
||||||
{143, nullptr, "GetAudioControlInputState"},
|
|
||||||
{144, nullptr, "AcquireAudioConnectionStateChangedEvent"},
|
|
||||||
{145, nullptr, "GetConnectedAudioDevice"},
|
|
||||||
{146, nullptr, "CloseAudioControlInput"},
|
|
||||||
{147, nullptr, "RegisterAudioControlNotification"},
|
|
||||||
{148, nullptr, "SendAudioControlPassthroughCommand"},
|
|
||||||
{149, nullptr, "SendAudioControlSetAbsoluteVolumeCommand"},
|
|
||||||
{150, nullptr, "AcquireAudioSinkVolumeLocallyChangedEvent"},
|
|
||||||
{151, nullptr, "AcquireAudioSinkVolumeUpdateRequestCompletedEvent"},
|
|
||||||
{152, nullptr, "GetAudioSinkVolume"},
|
|
||||||
{153, nullptr, "RequestUpdateAudioSinkVolume"},
|
|
||||||
{154, nullptr, "IsAudioSinkVolumeSupported"},
|
|
||||||
{256, nullptr, "IsManufacturingMode"},
|
|
||||||
{257, nullptr, "EmulateBluetoothCrash"},
|
|
||||||
{258, nullptr, "GetBleChannelMap"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "InitializeBluetoothDriver"},
|
||||||
|
FunctionInfo{1, nullptr, "InitializeBluetooth"},
|
||||||
|
FunctionInfo{2, nullptr, "EnableBluetooth"},
|
||||||
|
FunctionInfo{3, nullptr, "DisableBluetooth"},
|
||||||
|
FunctionInfo{4, nullptr, "FinalizeBluetooth"},
|
||||||
|
FunctionInfo{5, nullptr, "GetAdapterProperties"},
|
||||||
|
FunctionInfo{6, nullptr, "GetAdapterProperty"},
|
||||||
|
FunctionInfo{7, nullptr, "SetAdapterProperty"},
|
||||||
|
FunctionInfo{8, nullptr, "StartInquiry"},
|
||||||
|
FunctionInfo{9, nullptr, "StopInquiry"},
|
||||||
|
FunctionInfo{10, nullptr, "CreateBond"},
|
||||||
|
FunctionInfo{11, nullptr, "RemoveBond"},
|
||||||
|
FunctionInfo{12, nullptr, "CancelBond"},
|
||||||
|
FunctionInfo{13, nullptr, "RespondToPinRequest"},
|
||||||
|
FunctionInfo{14, nullptr, "RespondToSspRequest"},
|
||||||
|
FunctionInfo{15, nullptr, "GetEventInfo"},
|
||||||
|
FunctionInfo{16, nullptr, "InitializeHid"},
|
||||||
|
FunctionInfo{17, nullptr, "OpenHidConnection"},
|
||||||
|
FunctionInfo{18, nullptr, "CloseHidConnection"},
|
||||||
|
FunctionInfo{19, nullptr, "WriteHidData"},
|
||||||
|
FunctionInfo{20, nullptr, "WriteHidData2"},
|
||||||
|
FunctionInfo{21, nullptr, "SetHidReport"},
|
||||||
|
FunctionInfo{22, nullptr, "GetHidReport"},
|
||||||
|
FunctionInfo{23, nullptr, "TriggerConnection"},
|
||||||
|
FunctionInfo{24, nullptr, "AddPairedDeviceInfo"},
|
||||||
|
FunctionInfo{25, nullptr, "GetPairedDeviceInfo"},
|
||||||
|
FunctionInfo{26, nullptr, "FinalizeHid"},
|
||||||
|
FunctionInfo{27, nullptr, "GetHidEventInfo"},
|
||||||
|
FunctionInfo{28, nullptr, "SetTsi"},
|
||||||
|
FunctionInfo{29, nullptr, "EnableBurstMode"},
|
||||||
|
FunctionInfo{30, nullptr, "SetZeroRetransmission"},
|
||||||
|
FunctionInfo{31, nullptr, "EnableMcMode"},
|
||||||
|
FunctionInfo{32, nullptr, "EnableLlrScan"},
|
||||||
|
FunctionInfo{33, nullptr, "DisableLlrScan"},
|
||||||
|
FunctionInfo{34, C<&IBluetoothDriver::EnableRadio>, "EnableRadio"},
|
||||||
|
FunctionInfo{35, nullptr, "SetVisibility"},
|
||||||
|
FunctionInfo{36, nullptr, "EnableTbfcScan"},
|
||||||
|
FunctionInfo{37, nullptr, "RegisterHidReportEvent"},
|
||||||
|
FunctionInfo{38, nullptr, "GetHidReportEventInfo"},
|
||||||
|
FunctionInfo{39, nullptr, "GetLatestPlr"},
|
||||||
|
FunctionInfo{40, nullptr, "GetPendingConnections"},
|
||||||
|
FunctionInfo{41, nullptr, "GetChannelMap"},
|
||||||
|
FunctionInfo{42, nullptr, "EnableTxPowerBoostSetting"},
|
||||||
|
FunctionInfo{43, nullptr, "IsTxPowerBoostSettingEnabled"},
|
||||||
|
FunctionInfo{44, nullptr, "EnableAfhSetting"},
|
||||||
|
FunctionInfo{45, nullptr, "IsAfhSettingEnabled"},
|
||||||
|
FunctionInfo{46, nullptr, "InitializeBle"},
|
||||||
|
FunctionInfo{47, nullptr, "EnableBle"},
|
||||||
|
FunctionInfo{48, nullptr, "DisableBle"},
|
||||||
|
FunctionInfo{49, nullptr, "FinalizeBle"},
|
||||||
|
FunctionInfo{50, nullptr, "SetBleVisibility"},
|
||||||
|
FunctionInfo{51, nullptr, "SetBleConnectionParameter"},
|
||||||
|
FunctionInfo{52, nullptr, "SetBleDefaultConnectionParameter"},
|
||||||
|
FunctionInfo{53, nullptr, "SetBleAdvertiseData"},
|
||||||
|
FunctionInfo{54, nullptr, "SetBleAdvertiseParameter"},
|
||||||
|
FunctionInfo{55, nullptr, "StartBleScan"},
|
||||||
|
FunctionInfo{56, nullptr, "StopBleScan"},
|
||||||
|
FunctionInfo{57, nullptr, "AddBleScanFilterCondition"},
|
||||||
|
FunctionInfo{58, nullptr, "DeleteBleScanFilterCondition"},
|
||||||
|
FunctionInfo{59, nullptr, "DeleteBleScanFilter"},
|
||||||
|
FunctionInfo{60, nullptr, "ClearBleScanFilters"},
|
||||||
|
FunctionInfo{61, nullptr, "EnableBleScanFilter"},
|
||||||
|
FunctionInfo{62, nullptr, "RegisterGattClient"},
|
||||||
|
FunctionInfo{63, nullptr, "UnregisterGattClient"},
|
||||||
|
FunctionInfo{64, nullptr, "UnregisterAllGattClients"},
|
||||||
|
FunctionInfo{65, nullptr, "ConnectGattServer"},
|
||||||
|
FunctionInfo{66, nullptr, "CancelConnectGattServer"},
|
||||||
|
FunctionInfo{67, nullptr, "DisconnectGattServer"},
|
||||||
|
FunctionInfo{68, nullptr, "GetGattAttribute"},
|
||||||
|
FunctionInfo{69, nullptr, "GetGattService"},
|
||||||
|
FunctionInfo{70, nullptr, "ConfigureAttMtu"},
|
||||||
|
FunctionInfo{71, nullptr, "RegisterGattServer"},
|
||||||
|
FunctionInfo{72, nullptr, "UnregisterGattServer"},
|
||||||
|
FunctionInfo{73, nullptr, "ConnectGattClient"},
|
||||||
|
FunctionInfo{74, nullptr, "DisconnectGattClient"},
|
||||||
|
FunctionInfo{75, nullptr, "AddGattService"},
|
||||||
|
FunctionInfo{76, nullptr, "EnableGattService"},
|
||||||
|
FunctionInfo{77, nullptr, "AddGattCharacteristic"},
|
||||||
|
FunctionInfo{78, nullptr, "AddGattDescriptor"},
|
||||||
|
FunctionInfo{79, nullptr, "GetBleManagedEventInfo"},
|
||||||
|
FunctionInfo{80, nullptr, "GetGattFirstCharacteristic"},
|
||||||
|
FunctionInfo{81, nullptr, "GetGattNextCharacteristic"},
|
||||||
|
FunctionInfo{82, nullptr, "GetGattFirstDescriptor"},
|
||||||
|
FunctionInfo{83, nullptr, "GetGattNextDescriptor"},
|
||||||
|
FunctionInfo{84, nullptr, "RegisterGattManagedDataPath"},
|
||||||
|
FunctionInfo{85, nullptr, "UnregisterGattManagedDataPath"},
|
||||||
|
FunctionInfo{86, nullptr, "RegisterGattHidDataPath"},
|
||||||
|
FunctionInfo{87, nullptr, "UnregisterGattHidDataPath"},
|
||||||
|
FunctionInfo{88, nullptr, "RegisterGattDataPath"},
|
||||||
|
FunctionInfo{89, nullptr, "UnregisterGattDataPath"},
|
||||||
|
FunctionInfo{90, nullptr, "ReadGattCharacteristic"},
|
||||||
|
FunctionInfo{91, nullptr, "ReadGattDescriptor"},
|
||||||
|
FunctionInfo{92, nullptr, "WriteGattCharacteristic"},
|
||||||
|
FunctionInfo{93, nullptr, "WriteGattDescriptor"},
|
||||||
|
FunctionInfo{94, nullptr, "RegisterGattNotification"},
|
||||||
|
FunctionInfo{95, nullptr, "UnregisterGattNotification"},
|
||||||
|
FunctionInfo{96, nullptr, "GetLeHidEventInfo"},
|
||||||
|
FunctionInfo{97, nullptr, "RegisterBleHidEvent"},
|
||||||
|
FunctionInfo{98, nullptr, "SetBleScanParameter"},
|
||||||
|
FunctionInfo{99, nullptr, "MoveToSecondaryPiconet"},
|
||||||
|
FunctionInfo{100, nullptr, "IsBluetoothEnabled"},
|
||||||
|
FunctionInfo{128, nullptr, "AcquireAudioEvent"},
|
||||||
|
FunctionInfo{129, nullptr, "GetAudioEventInfo"},
|
||||||
|
FunctionInfo{130, nullptr, "OpenAudioConnection"},
|
||||||
|
FunctionInfo{131, nullptr, "CloseAudioConnection"},
|
||||||
|
FunctionInfo{132, nullptr, "OpenAudioOut"},
|
||||||
|
FunctionInfo{133, nullptr, "CloseAudioOut"},
|
||||||
|
FunctionInfo{134, nullptr, "AcquireAudioOutStateChangedEvent"},
|
||||||
|
FunctionInfo{135, nullptr, "StartAudioOut"},
|
||||||
|
FunctionInfo{136, nullptr, "StopAudioOut"},
|
||||||
|
FunctionInfo{137, nullptr, "GetAudioOutState"},
|
||||||
|
FunctionInfo{138, nullptr, "GetAudioOutFeedingCodec"},
|
||||||
|
FunctionInfo{139, nullptr, "GetAudioOutFeedingParameter"},
|
||||||
|
FunctionInfo{140, nullptr, "AcquireAudioOutBufferAvailableEvent"},
|
||||||
|
FunctionInfo{141, nullptr, "SendAudioData"},
|
||||||
|
FunctionInfo{142, nullptr, "AcquireAudioControlInputStateChangedEvent"},
|
||||||
|
FunctionInfo{143, nullptr, "GetAudioControlInputState"},
|
||||||
|
FunctionInfo{144, nullptr, "AcquireAudioConnectionStateChangedEvent"},
|
||||||
|
FunctionInfo{145, nullptr, "GetConnectedAudioDevice"},
|
||||||
|
FunctionInfo{146, nullptr, "CloseAudioControlInput"},
|
||||||
|
FunctionInfo{147, nullptr, "RegisterAudioControlNotification"},
|
||||||
|
FunctionInfo{148, nullptr, "SendAudioControlPassthroughCommand"},
|
||||||
|
FunctionInfo{149, nullptr, "SendAudioControlSetAbsoluteVolumeCommand"},
|
||||||
|
FunctionInfo{150, nullptr, "AcquireAudioSinkVolumeLocallyChangedEvent"},
|
||||||
|
FunctionInfo{151, nullptr, "AcquireAudioSinkVolumeUpdateRequestCompletedEvent"},
|
||||||
|
FunctionInfo{152, nullptr, "GetAudioSinkVolume"},
|
||||||
|
FunctionInfo{153, nullptr, "RequestUpdateAudioSinkVolume"},
|
||||||
|
FunctionInfo{154, nullptr, "IsAudioSinkVolumeSupported"},
|
||||||
|
FunctionInfo{256, nullptr, "IsManufacturingMode"},
|
||||||
|
FunctionInfo{257, nullptr, "EmulateBluetoothCrash"},
|
||||||
|
FunctionInfo{258, nullptr, "GetBleChannelMap"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
@@ -17,100 +17,98 @@ namespace Service::BTM {
|
|||||||
|
|
||||||
class IBtm final : public ServiceFramework<IBtm> {
|
class IBtm final : public ServiceFramework<IBtm> {
|
||||||
public:
|
public:
|
||||||
explicit IBtm(Core::System& system_) : ServiceFramework{system_, "btm"} {
|
explicit IBtm(Core::System& system_) : ServiceFramework{system_, "btm"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "GetState"},
|
|
||||||
{1, nullptr, "GetHostDeviceProperty"},
|
|
||||||
{2, nullptr, "AcquireDeviceConditionEvent"},
|
|
||||||
{3, nullptr, "GetDeviceCondition"},
|
|
||||||
{4, nullptr, "SetBurstMode"},
|
|
||||||
{5, nullptr, "SetSlotMode"},
|
|
||||||
{6, nullptr, "SetBluetoothMode"},
|
|
||||||
{7, nullptr, "SetWlanMode"},
|
|
||||||
{8, nullptr, "AcquireDeviceInfoEvent"},
|
|
||||||
{9, nullptr, "GetDeviceInfo"},
|
|
||||||
{10, nullptr, "AddDeviceInfo"},
|
|
||||||
{11, nullptr, "RemoveDeviceInfo"},
|
|
||||||
{12, nullptr, "IncreaseDeviceInfoOrder"},
|
|
||||||
{13, nullptr, "LlrNotify"},
|
|
||||||
{14, nullptr, "EnableRadio"},
|
|
||||||
{15, nullptr, "DisableRadio"},
|
|
||||||
{16, nullptr, "HidDisconnect"},
|
|
||||||
{17, nullptr, "HidSetRetransmissionMode"},
|
|
||||||
{18, nullptr, "AcquireAwakeReqEvent"},
|
|
||||||
{19, nullptr, "AcquireLlrStateEvent"},
|
|
||||||
{20, nullptr, "IsLlrStarted"},
|
|
||||||
{21, nullptr, "EnableSlotSaving"},
|
|
||||||
{22, nullptr, "ProtectDeviceInfo"},
|
|
||||||
{23, nullptr, "AcquireBleScanEvent"},
|
|
||||||
{24, nullptr, "GetBleScanParameterGeneral"},
|
|
||||||
{25, nullptr, "GetBleScanParameterSmartDevice"},
|
|
||||||
{26, nullptr, "StartBleScanForGeneral"},
|
|
||||||
{27, nullptr, "StopBleScanForGeneral"},
|
|
||||||
{28, nullptr, "GetBleScanResultsForGeneral"},
|
|
||||||
{29, nullptr, "StartBleScanForPairedDevice"},
|
|
||||||
{30, nullptr, "StopBleScanForPairedDevice"},
|
|
||||||
{31, nullptr, "StartBleScanForSmartDevice"},
|
|
||||||
{32, nullptr, "StopBleScanForSmartDevice"},
|
|
||||||
{33, nullptr, "GetBleScanResultsForSmartDevice"},
|
|
||||||
{34, nullptr, "AcquireBleConnectionEvent"},
|
|
||||||
{35, nullptr, "BleConnect"},
|
|
||||||
{36, nullptr, "BleOverrideConnection"},
|
|
||||||
{37, nullptr, "BleDisconnect"},
|
|
||||||
{38, nullptr, "BleGetConnectionState"},
|
|
||||||
{39, nullptr, "BleGetGattClientConditionList"},
|
|
||||||
{40, nullptr, "AcquireBlePairingEvent"},
|
|
||||||
{41, nullptr, "BlePairDevice"},
|
|
||||||
{42, nullptr, "BleUnpairDeviceOnBoth"},
|
|
||||||
{43, nullptr, "BleUnpairDevice"},
|
|
||||||
{44, nullptr, "BleGetPairedAddresses"},
|
|
||||||
{45, nullptr, "AcquireBleServiceDiscoveryEvent"},
|
|
||||||
{46, nullptr, "GetGattServices"},
|
|
||||||
{47, nullptr, "GetGattService"},
|
|
||||||
{48, nullptr, "GetGattIncludedServices"},
|
|
||||||
{49, nullptr, "GetBelongingService"},
|
|
||||||
{50, nullptr, "GetGattCharacteristics"},
|
|
||||||
{51, nullptr, "GetGattDescriptors"},
|
|
||||||
{52, nullptr, "AcquireBleMtuConfigEvent"},
|
|
||||||
{53, nullptr, "ConfigureBleMtu"},
|
|
||||||
{54, nullptr, "GetBleMtu"},
|
|
||||||
{55, nullptr, "RegisterBleGattDataPath"},
|
|
||||||
{56, nullptr, "UnregisterBleGattDataPath"},
|
|
||||||
{57, nullptr, "RegisterAppletResourceUserId"},
|
|
||||||
{58, nullptr, "UnregisterAppletResourceUserId"},
|
|
||||||
{59, nullptr, "SetAppletResourceUserId"},
|
|
||||||
{60, nullptr, "AcquireBleConnectionParameterUpdateEvent"}, //8.0.0+
|
|
||||||
{61, nullptr, "SetCeLength"}, //8.0.0+
|
|
||||||
{62, nullptr, "EnsureSlotExpansion"}, //9.0.0+
|
|
||||||
{63, nullptr, "IsSlotExpansionEnsured"}, //9.0.0+
|
|
||||||
{64, nullptr, "CancelConnectionTrigger"}, //10.0.0+
|
|
||||||
{65, nullptr, "GetConnectionCapacity"}, //13.0.0+
|
|
||||||
{66, nullptr, "GetWlanMode"}, //13.0.0+
|
|
||||||
{67, nullptr, "IsSlotSavingEnabled"}, //13.0.0+
|
|
||||||
{68, nullptr, "IsSlotSavingForPairingEnabled"}, //13.0.0+
|
|
||||||
{69, nullptr, "AcquireAudioDeviceConnectionEvent"}, //13.0.0+
|
|
||||||
{70, nullptr, "GetConnectedAudioDevices"}, //13.0.0+
|
|
||||||
{71, nullptr, "SetAudioSourceVolume"}, //13.0.0+
|
|
||||||
{72, nullptr, "GetAudioSourceVolume"}, //13.0.0+
|
|
||||||
{73, nullptr, "RequestAudioDeviceConnectionRejection"}, //13.0.0+
|
|
||||||
{74, nullptr, "CancelAudioDeviceConnectionRejection"}, //13.0.0+
|
|
||||||
{75, nullptr, "GetPairedAudioDevices"}, //13.0.0+
|
|
||||||
{76, nullptr, "SetWlanModeWithOption"}, //13.1.0+
|
|
||||||
{100, nullptr, "AcquireConnectionDisallowedEvent"}, //13.0.0+
|
|
||||||
{101, nullptr, "GetUsecaseViolationFactor"}, //13.0.0+
|
|
||||||
{110, nullptr, "GetShortenedDeviceInfo"}, //13.0.0+
|
|
||||||
{111, nullptr, "AcquirePairingCountUpdateEvent"},//13.0.0+
|
|
||||||
{112, nullptr, "Unknown112"}, //14.0.0-14.1.2
|
|
||||||
{113, nullptr, "Unknown113"}, //14.0.0-14.1.2
|
|
||||||
{114, nullptr, "IsFirstAudioControlConnection"}, //14.0.0+
|
|
||||||
{115, nullptr, "GetShortenedDeviceCondition"}, //14.0.0+
|
|
||||||
{116, nullptr, "SetAudioSinkVolume"}, //15.0.0+
|
|
||||||
{117, nullptr, "GetAudioSinkVolume"}, //15.0.0+
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "GetState"},
|
||||||
|
FunctionInfo{1, nullptr, "GetHostDeviceProperty"},
|
||||||
|
FunctionInfo{2, nullptr, "AcquireDeviceConditionEvent"},
|
||||||
|
FunctionInfo{3, nullptr, "GetDeviceCondition"},
|
||||||
|
FunctionInfo{4, nullptr, "SetBurstMode"},
|
||||||
|
FunctionInfo{5, nullptr, "SetSlotMode"},
|
||||||
|
FunctionInfo{6, nullptr, "SetBluetoothMode"},
|
||||||
|
FunctionInfo{7, nullptr, "SetWlanMode"},
|
||||||
|
FunctionInfo{8, nullptr, "AcquireDeviceInfoEvent"},
|
||||||
|
FunctionInfo{9, nullptr, "GetDeviceInfo"},
|
||||||
|
FunctionInfo{10, nullptr, "AddDeviceInfo"},
|
||||||
|
FunctionInfo{11, nullptr, "RemoveDeviceInfo"},
|
||||||
|
FunctionInfo{12, nullptr, "IncreaseDeviceInfoOrder"},
|
||||||
|
FunctionInfo{13, nullptr, "LlrNotify"},
|
||||||
|
FunctionInfo{14, nullptr, "EnableRadio"},
|
||||||
|
FunctionInfo{15, nullptr, "DisableRadio"},
|
||||||
|
FunctionInfo{16, nullptr, "HidDisconnect"},
|
||||||
|
FunctionInfo{17, nullptr, "HidSetRetransmissionMode"},
|
||||||
|
FunctionInfo{18, nullptr, "AcquireAwakeReqEvent"},
|
||||||
|
FunctionInfo{19, nullptr, "AcquireLlrStateEvent"},
|
||||||
|
FunctionInfo{20, nullptr, "IsLlrStarted"},
|
||||||
|
FunctionInfo{21, nullptr, "EnableSlotSaving"},
|
||||||
|
FunctionInfo{22, nullptr, "ProtectDeviceInfo"},
|
||||||
|
FunctionInfo{23, nullptr, "AcquireBleScanEvent"},
|
||||||
|
FunctionInfo{24, nullptr, "GetBleScanParameterGeneral"},
|
||||||
|
FunctionInfo{25, nullptr, "GetBleScanParameterSmartDevice"},
|
||||||
|
FunctionInfo{26, nullptr, "StartBleScanForGeneral"},
|
||||||
|
FunctionInfo{27, nullptr, "StopBleScanForGeneral"},
|
||||||
|
FunctionInfo{28, nullptr, "GetBleScanResultsForGeneral"},
|
||||||
|
FunctionInfo{29, nullptr, "StartBleScanForPairedDevice"},
|
||||||
|
FunctionInfo{30, nullptr, "StopBleScanForPairedDevice"},
|
||||||
|
FunctionInfo{31, nullptr, "StartBleScanForSmartDevice"},
|
||||||
|
FunctionInfo{32, nullptr, "StopBleScanForSmartDevice"},
|
||||||
|
FunctionInfo{33, nullptr, "GetBleScanResultsForSmartDevice"},
|
||||||
|
FunctionInfo{34, nullptr, "AcquireBleConnectionEvent"},
|
||||||
|
FunctionInfo{35, nullptr, "BleConnect"},
|
||||||
|
FunctionInfo{36, nullptr, "BleOverrideConnection"},
|
||||||
|
FunctionInfo{37, nullptr, "BleDisconnect"},
|
||||||
|
FunctionInfo{38, nullptr, "BleGetConnectionState"},
|
||||||
|
FunctionInfo{39, nullptr, "BleGetGattClientConditionList"},
|
||||||
|
FunctionInfo{40, nullptr, "AcquireBlePairingEvent"},
|
||||||
|
FunctionInfo{41, nullptr, "BlePairDevice"},
|
||||||
|
FunctionInfo{42, nullptr, "BleUnpairDeviceOnBoth"},
|
||||||
|
FunctionInfo{43, nullptr, "BleUnpairDevice"},
|
||||||
|
FunctionInfo{44, nullptr, "BleGetPairedAddresses"},
|
||||||
|
FunctionInfo{45, nullptr, "AcquireBleServiceDiscoveryEvent"},
|
||||||
|
FunctionInfo{46, nullptr, "GetGattServices"},
|
||||||
|
FunctionInfo{47, nullptr, "GetGattService"},
|
||||||
|
FunctionInfo{48, nullptr, "GetGattIncludedServices"},
|
||||||
|
FunctionInfo{49, nullptr, "GetBelongingService"},
|
||||||
|
FunctionInfo{50, nullptr, "GetGattCharacteristics"},
|
||||||
|
FunctionInfo{51, nullptr, "GetGattDescriptors"},
|
||||||
|
FunctionInfo{52, nullptr, "AcquireBleMtuConfigEvent"},
|
||||||
|
FunctionInfo{53, nullptr, "ConfigureBleMtu"},
|
||||||
|
FunctionInfo{54, nullptr, "GetBleMtu"},
|
||||||
|
FunctionInfo{55, nullptr, "RegisterBleGattDataPath"},
|
||||||
|
FunctionInfo{56, nullptr, "UnregisterBleGattDataPath"},
|
||||||
|
FunctionInfo{57, nullptr, "RegisterAppletResourceUserId"},
|
||||||
|
FunctionInfo{58, nullptr, "UnregisterAppletResourceUserId"},
|
||||||
|
FunctionInfo{59, nullptr, "SetAppletResourceUserId"},
|
||||||
|
FunctionInfo{60, nullptr, "AcquireBleConnectionParameterUpdateEvent"}, //8.0.0+
|
||||||
|
FunctionInfo{61, nullptr, "SetCeLength"}, //8.0.0+
|
||||||
|
FunctionInfo{62, nullptr, "EnsureSlotExpansion"}, //9.0.0+
|
||||||
|
FunctionInfo{63, nullptr, "IsSlotExpansionEnsured"}, //9.0.0+
|
||||||
|
FunctionInfo{64, nullptr, "CancelConnectionTrigger"}, //10.0.0+
|
||||||
|
FunctionInfo{65, nullptr, "GetConnectionCapacity"}, //13.0.0+
|
||||||
|
FunctionInfo{66, nullptr, "GetWlanMode"}, //13.0.0+
|
||||||
|
FunctionInfo{67, nullptr, "IsSlotSavingEnabled"}, //13.0.0+
|
||||||
|
FunctionInfo{68, nullptr, "IsSlotSavingForPairingEnabled"}, //13.0.0+
|
||||||
|
FunctionInfo{69, nullptr, "AcquireAudioDeviceConnectionEvent"}, //13.0.0+
|
||||||
|
FunctionInfo{70, nullptr, "GetConnectedAudioDevices"}, //13.0.0+
|
||||||
|
FunctionInfo{71, nullptr, "SetAudioSourceVolume"}, //13.0.0+
|
||||||
|
FunctionInfo{72, nullptr, "GetAudioSourceVolume"}, //13.0.0+
|
||||||
|
FunctionInfo{73, nullptr, "RequestAudioDeviceConnectionRejection"}, //13.0.0+
|
||||||
|
FunctionInfo{74, nullptr, "CancelAudioDeviceConnectionRejection"}, //13.0.0+
|
||||||
|
FunctionInfo{75, nullptr, "GetPairedAudioDevices"}, //13.0.0+
|
||||||
|
FunctionInfo{76, nullptr, "SetWlanModeWithOption"}, //13.1.0+
|
||||||
|
FunctionInfo{100, nullptr, "AcquireConnectionDisallowedEvent"}, //13.0.0+
|
||||||
|
FunctionInfo{101, nullptr, "GetUsecaseViolationFactor"}, //13.0.0+
|
||||||
|
FunctionInfo{110, nullptr, "GetShortenedDeviceInfo"}, //13.0.0+
|
||||||
|
FunctionInfo{111, nullptr, "AcquirePairingCountUpdateEvent"},//13.0.0+
|
||||||
|
FunctionInfo{112, nullptr, "Unknown112"}, //14.0.0-14.1.2
|
||||||
|
FunctionInfo{113, nullptr, "Unknown113"}, //14.0.0-14.1.2
|
||||||
|
FunctionInfo{114, nullptr, "IsFirstAudioControlConnection"}, //14.0.0+
|
||||||
|
FunctionInfo{115, nullptr, "GetShortenedDeviceCondition"}, //14.0.0+
|
||||||
|
FunctionInfo{116, nullptr, "SetAudioSinkVolume"}, //15.0.0+
|
||||||
|
FunctionInfo{117, nullptr, "GetAudioSinkVolume"} //15.0.0+
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -20,15 +20,14 @@ namespace Service::Capture {
|
|||||||
|
|
||||||
class IDecoderControlService final : public ServiceFramework<IDecoderControlService> {
|
class IDecoderControlService final : public ServiceFramework<IDecoderControlService> {
|
||||||
public:
|
public:
|
||||||
explicit IDecoderControlService(Core::System& system_) : ServiceFramework{system_, "grc:d"} {
|
explicit IDecoderControlService(Core::System& system_) : ServiceFramework{system_, "grc:d"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{3001, nullptr, "DecodeJpeg"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{4001, nullptr, "ShrinkJpeg"},
|
FunctionInfo{3001, nullptr, "DecodeJpeg"},
|
||||||
{4002, nullptr, "ShrinkJpegEx"},
|
FunctionInfo{4001, nullptr, "ShrinkJpeg"},
|
||||||
};
|
FunctionInfo{4002, nullptr, "ShrinkJpegEx"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -17,30 +17,28 @@ namespace Service::ERPT {
|
|||||||
|
|
||||||
class ErrorReportContext final : public ServiceFramework<ErrorReportContext> {
|
class ErrorReportContext final : public ServiceFramework<ErrorReportContext> {
|
||||||
public:
|
public:
|
||||||
explicit ErrorReportContext(Core::System& system_) : ServiceFramework{system_, "erpt:c"} {
|
explicit ErrorReportContext(Core::System& system_) : ServiceFramework{system_, "erpt:c"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, C<&ErrorReportContext::SubmitContext>, "SubmitContext"},
|
|
||||||
{1, C<&ErrorReportContext::CreateReportV0>, "CreateReportV0"},
|
|
||||||
{2, nullptr, "SetInitialLaunchSettingsCompletionTime"},
|
|
||||||
{3, nullptr, "ClearInitialLaunchSettingsCompletionTime"},
|
|
||||||
{4, nullptr, "UpdatePowerOnTime"},
|
|
||||||
{5, D<&ErrorReportContext::UpdateAwakeTime>, "UpdateAwakeTime"},
|
|
||||||
{6, nullptr, "SubmitMultipleCategoryContext"},
|
|
||||||
{7, nullptr, "UpdateApplicationLaunchTime"},
|
|
||||||
{8, nullptr, "ClearApplicationLaunchTime"},
|
|
||||||
{9, nullptr, "SubmitAttachment"},
|
|
||||||
{10, nullptr, "CreateReportWithAttachments"},
|
|
||||||
{11, C<&ErrorReportContext::CreateReportV1>, "CreateReportV1"},
|
|
||||||
{12, C<&ErrorReportContext::CreateReport>, "CreateReport"},
|
|
||||||
{20, nullptr, "RegisterRunningApplet"},
|
|
||||||
{21, nullptr, "UnregisterRunningApplet"},
|
|
||||||
{22, nullptr, "UpdateAppletSuspendedDuration"},
|
|
||||||
{30, nullptr, "InvalidateForcedShutdownDetection"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, C<&ErrorReportContext::SubmitContext>, "SubmitContext"},
|
||||||
|
FunctionInfo{1, C<&ErrorReportContext::CreateReportV0>, "CreateReportV0"},
|
||||||
|
FunctionInfo{2, nullptr, "SetInitialLaunchSettingsCompletionTime"},
|
||||||
|
FunctionInfo{3, nullptr, "ClearInitialLaunchSettingsCompletionTime"},
|
||||||
|
FunctionInfo{4, nullptr, "UpdatePowerOnTime"},
|
||||||
|
FunctionInfo{5, D<&ErrorReportContext::UpdateAwakeTime>, "UpdateAwakeTime"},
|
||||||
|
FunctionInfo{6, nullptr, "SubmitMultipleCategoryContext"},
|
||||||
|
FunctionInfo{7, nullptr, "UpdateApplicationLaunchTime"},
|
||||||
|
FunctionInfo{8, nullptr, "ClearApplicationLaunchTime"},
|
||||||
|
FunctionInfo{9, nullptr, "SubmitAttachment"},
|
||||||
|
FunctionInfo{10, nullptr, "CreateReportWithAttachments"},
|
||||||
|
FunctionInfo{11, C<&ErrorReportContext::CreateReportV1>, "CreateReportV1"},
|
||||||
|
FunctionInfo{12, C<&ErrorReportContext::CreateReport>, "CreateReport"},
|
||||||
|
FunctionInfo{20, nullptr, "RegisterRunningApplet"},
|
||||||
|
FunctionInfo{21, nullptr, "UnregisterRunningApplet"},
|
||||||
|
FunctionInfo{22, nullptr, "UpdateAppletSuspendedDuration"},
|
||||||
|
FunctionInfo{30, nullptr, "InvalidateForcedShutdownDetection"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -89,16 +87,14 @@ private:
|
|||||||
|
|
||||||
class ErrorReportSession final : public ServiceFramework<ErrorReportSession> {
|
class ErrorReportSession final : public ServiceFramework<ErrorReportSession> {
|
||||||
public:
|
public:
|
||||||
explicit ErrorReportSession(Core::System& system_) : ServiceFramework{system_, "erpt:r"} {
|
explicit ErrorReportSession(Core::System& system_) : ServiceFramework{system_, "erpt:r"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "OpenReport"},
|
|
||||||
{1, nullptr, "OpenManager"},
|
|
||||||
{2, nullptr, "OpenAttachment"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "OpenReport"},
|
||||||
|
FunctionInfo{1, nullptr, "OpenManager"},
|
||||||
|
FunctionInfo{2, nullptr, "OpenAttachment"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+168
-171
@@ -19,110 +19,109 @@ constexpr Result ERROR_INVALID_RIGHTS_ID{ErrorModule::ETicket, 3};
|
|||||||
class ETicket final : public ServiceFramework<ETicket> {
|
class ETicket final : public ServiceFramework<ETicket> {
|
||||||
public:
|
public:
|
||||||
explicit ETicket(Core::System& system_) : ServiceFramework{system_, "es"} {
|
explicit ETicket(Core::System& system_) : ServiceFramework{system_, "es"} {
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{1, &ETicket::ImportTicket, "ImportTicket"},
|
|
||||||
{2, nullptr, "ImportTicketCertificateSet"},
|
|
||||||
{3, nullptr, "DeleteTicket"},
|
|
||||||
{4, nullptr, "DeletePersonalizedTicket"},
|
|
||||||
{5, nullptr, "DeleteAllCommonTicket"},
|
|
||||||
{6, nullptr, "DeleteAllPersonalizedTicket"},
|
|
||||||
{7, nullptr, "DeleteAllPersonalizedTicketEx"},
|
|
||||||
{8, &ETicket::GetTitleKey, "GetTitleKey"},
|
|
||||||
{9, &ETicket::CountCommonTicket, "CountCommonTicket"},
|
|
||||||
{10, &ETicket::CountPersonalizedTicket, "CountPersonalizedTicket"},
|
|
||||||
{11, &ETicket::ListCommonTicketRightsIds, "ListCommonTicketRightsIds"},
|
|
||||||
{12, &ETicket::ListPersonalizedTicketRightsIds, "ListPersonalizedTicketRightsIds"},
|
|
||||||
{13, nullptr, "ListMissingPersonalizedTicket"},
|
|
||||||
{14, &ETicket::GetCommonTicketSize, "GetCommonTicketSize"},
|
|
||||||
{15, &ETicket::GetPersonalizedTicketSize, "GetPersonalizedTicketSize"},
|
|
||||||
{16, &ETicket::GetCommonTicketData, "GetCommonTicketData"},
|
|
||||||
{17, &ETicket::GetPersonalizedTicketData, "GetPersonalizedTicketData"},
|
|
||||||
{18, nullptr, "OwnTicket"},
|
|
||||||
{19, nullptr, "GetTicketInfo"},
|
|
||||||
{20, nullptr, "ListLightTicketInfo"},
|
|
||||||
{21, nullptr, "SignData"},
|
|
||||||
{22, nullptr, "GetCommonTicketAndCertificateSize"},
|
|
||||||
{23, nullptr, "GetCommonTicketAndCertificateData"},
|
|
||||||
{24, nullptr, "ImportPrepurchaseRecord"},
|
|
||||||
{25, nullptr, "DeletePrepurchaseRecord"},
|
|
||||||
{26, nullptr, "DeleteAllPrepurchaseRecord"},
|
|
||||||
{27, nullptr, "CountPrepurchaseRecord"},
|
|
||||||
{28, nullptr, "ListPrepurchaseRecordRightsIds"},
|
|
||||||
{29, nullptr, "ListPrepurchaseRecordInfo"},
|
|
||||||
{30, nullptr, "CountTicket"},
|
|
||||||
{31, nullptr, "ListTicketRightsIds"},
|
|
||||||
{32, nullptr, "CountPrepurchaseRecordEx"},
|
|
||||||
{33, nullptr, "ListPrepurchaseRecordRightsIdsEx"},
|
|
||||||
{34, nullptr, "GetEncryptedTicketSize"},
|
|
||||||
{35, nullptr, "GetEncryptedTicketData"},
|
|
||||||
{36, nullptr, "DeleteAllInactiveELicenseRequiredPersonalizedTicket"},
|
|
||||||
{37, nullptr, "OwnTicket2"},
|
|
||||||
{38, nullptr, "OwnTicket3"},
|
|
||||||
{39, nullptr, "DeleteAllInactivePersonalizedTicket"},
|
|
||||||
{40, nullptr, "DeletePrepurchaseRecordByNintendoAccountId"},
|
|
||||||
{101, nullptr, "Unknown101"}, //18.0.0+
|
|
||||||
{102, nullptr, "Unknown102"}, //18.0.0+
|
|
||||||
{103, nullptr, "Unknown103"}, //18.0.0+
|
|
||||||
{104, nullptr, "Unknown104"}, //18.0.0+
|
|
||||||
{105, nullptr, "Unknown105"}, //20.0.0+
|
|
||||||
{201, nullptr, "Unknown201"}, //18.0.0+
|
|
||||||
{202, nullptr, "Unknown202"}, //18.0.0+
|
|
||||||
{203, nullptr, "Unknown203"}, //18.0.0+
|
|
||||||
{204, nullptr, "Unknown204"}, //18.0.0+
|
|
||||||
{205, nullptr, "Unknown205"}, //18.0.0+
|
|
||||||
{501, nullptr, "Unknown501"},
|
|
||||||
{502, nullptr, "Unknown502"},
|
|
||||||
{503, nullptr, "GetTitleKey"},
|
|
||||||
{504, nullptr, "Unknown504"},
|
|
||||||
{508, nullptr, "Unknown508"},
|
|
||||||
{509, nullptr, "Unknown509"},
|
|
||||||
{510, nullptr, "Unknown510"},
|
|
||||||
{511, nullptr, "Unknown511"},
|
|
||||||
{1001, nullptr, "Unknown1001"},
|
|
||||||
{1002, nullptr, "Unknown1001"},
|
|
||||||
{1003, nullptr, "Unknown1003"},
|
|
||||||
{1004, nullptr, "Unknown1004"},
|
|
||||||
{1005, nullptr, "Unknown1005"},
|
|
||||||
{1006, nullptr, "Unknown1006"},
|
|
||||||
{1007, nullptr, "Unknown1007"},
|
|
||||||
{1009, nullptr, "Unknown1009"},
|
|
||||||
{1010, nullptr, "Unknown1010"},
|
|
||||||
{1011, nullptr, "Unknown1011"},
|
|
||||||
{1012, nullptr, "Unknown1012"},
|
|
||||||
{1013, nullptr, "Unknown1013"},
|
|
||||||
{1014, nullptr, "Unknown1014"},
|
|
||||||
{1015, nullptr, "Unknown1015"},
|
|
||||||
{1016, nullptr, "Unknown1016"},
|
|
||||||
{1017, nullptr, "Unknown1017"},
|
|
||||||
{1018, nullptr, "Unknown1018"},
|
|
||||||
{1019, nullptr, "Unknown1019"},
|
|
||||||
{1020, nullptr, "Unknown1020"},
|
|
||||||
{1021, nullptr, "Unknown1021"},
|
|
||||||
{1501, nullptr, "Unknown1501"},
|
|
||||||
{1502, nullptr, "Unknown1502"},
|
|
||||||
{1503, nullptr, "Unknown1503"},
|
|
||||||
{1504, nullptr, "Unknown1504"},
|
|
||||||
{1505, nullptr, "Unknown1505"},
|
|
||||||
{1506, nullptr, "Unknown1506"},
|
|
||||||
{2000, nullptr, "Unknown2000"},
|
|
||||||
{2001, nullptr, "Unknown2001"},
|
|
||||||
{2002, nullptr, "Unknown2002"},
|
|
||||||
{2003, nullptr, "Unknown2003"},
|
|
||||||
{2100, nullptr, "Unknown2100"},
|
|
||||||
{2501, nullptr, "Unknown2501"},
|
|
||||||
{2502, nullptr, "Unknown2502"},
|
|
||||||
{2601, nullptr, "Unknown2601"},
|
|
||||||
{3001, nullptr, "Unknown3001"},
|
|
||||||
{3002, nullptr, "Unknown3002"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
|
|
||||||
keys.PopulateTickets();
|
keys.PopulateTickets();
|
||||||
keys.SynthesizeTickets();
|
keys.SynthesizeTickets();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{1, &ETicket::ImportTicket, "ImportTicket"},
|
||||||
|
FunctionInfo{2, nullptr, "ImportTicketCertificateSet"},
|
||||||
|
FunctionInfo{3, nullptr, "DeleteTicket"},
|
||||||
|
FunctionInfo{4, nullptr, "DeletePersonalizedTicket"},
|
||||||
|
FunctionInfo{5, nullptr, "DeleteAllCommonTicket"},
|
||||||
|
FunctionInfo{6, nullptr, "DeleteAllPersonalizedTicket"},
|
||||||
|
FunctionInfo{7, nullptr, "DeleteAllPersonalizedTicketEx"},
|
||||||
|
FunctionInfo{8, &ETicket::GetTitleKey, "GetTitleKey"},
|
||||||
|
FunctionInfo{9, &ETicket::CountCommonTicket, "CountCommonTicket"},
|
||||||
|
FunctionInfo{10, &ETicket::CountPersonalizedTicket, "CountPersonalizedTicket"},
|
||||||
|
FunctionInfo{11, &ETicket::ListCommonTicketRightsIds, "ListCommonTicketRightsIds"},
|
||||||
|
FunctionInfo{12, &ETicket::ListPersonalizedTicketRightsIds, "ListPersonalizedTicketRightsIds"},
|
||||||
|
FunctionInfo{13, nullptr, "ListMissingPersonalizedTicket"},
|
||||||
|
FunctionInfo{14, &ETicket::GetCommonTicketSize, "GetCommonTicketSize"},
|
||||||
|
FunctionInfo{15, &ETicket::GetPersonalizedTicketSize, "GetPersonalizedTicketSize"},
|
||||||
|
FunctionInfo{16, &ETicket::GetCommonTicketData, "GetCommonTicketData"},
|
||||||
|
FunctionInfo{17, &ETicket::GetPersonalizedTicketData, "GetPersonalizedTicketData"},
|
||||||
|
FunctionInfo{18, nullptr, "OwnTicket"},
|
||||||
|
FunctionInfo{19, nullptr, "GetTicketInfo"},
|
||||||
|
FunctionInfo{20, nullptr, "ListLightTicketInfo"},
|
||||||
|
FunctionInfo{21, nullptr, "SignData"},
|
||||||
|
FunctionInfo{22, nullptr, "GetCommonTicketAndCertificateSize"},
|
||||||
|
FunctionInfo{23, nullptr, "GetCommonTicketAndCertificateData"},
|
||||||
|
FunctionInfo{24, nullptr, "ImportPrepurchaseRecord"},
|
||||||
|
FunctionInfo{25, nullptr, "DeletePrepurchaseRecord"},
|
||||||
|
FunctionInfo{26, nullptr, "DeleteAllPrepurchaseRecord"},
|
||||||
|
FunctionInfo{27, nullptr, "CountPrepurchaseRecord"},
|
||||||
|
FunctionInfo{28, nullptr, "ListPrepurchaseRecordRightsIds"},
|
||||||
|
FunctionInfo{29, nullptr, "ListPrepurchaseRecordInfo"},
|
||||||
|
FunctionInfo{30, nullptr, "CountTicket"},
|
||||||
|
FunctionInfo{31, nullptr, "ListTicketRightsIds"},
|
||||||
|
FunctionInfo{32, nullptr, "CountPrepurchaseRecordEx"},
|
||||||
|
FunctionInfo{33, nullptr, "ListPrepurchaseRecordRightsIdsEx"},
|
||||||
|
FunctionInfo{34, nullptr, "GetEncryptedTicketSize"},
|
||||||
|
FunctionInfo{35, nullptr, "GetEncryptedTicketData"},
|
||||||
|
FunctionInfo{36, nullptr, "DeleteAllInactiveELicenseRequiredPersonalizedTicket"},
|
||||||
|
FunctionInfo{37, nullptr, "OwnTicket2"},
|
||||||
|
FunctionInfo{38, nullptr, "OwnTicket3"},
|
||||||
|
FunctionInfo{39, nullptr, "DeleteAllInactivePersonalizedTicket"},
|
||||||
|
FunctionInfo{40, nullptr, "DeletePrepurchaseRecordByNintendoAccountId"},
|
||||||
|
FunctionInfo{101, nullptr, "Unknown101"}, //18.0.0+
|
||||||
|
FunctionInfo{102, nullptr, "Unknown102"}, //18.0.0+
|
||||||
|
FunctionInfo{103, nullptr, "Unknown103"}, //18.0.0+
|
||||||
|
FunctionInfo{104, nullptr, "Unknown104"}, //18.0.0+
|
||||||
|
FunctionInfo{105, nullptr, "Unknown105"}, //20.0.0+
|
||||||
|
FunctionInfo{201, nullptr, "Unknown201"}, //18.0.0+
|
||||||
|
FunctionInfo{202, nullptr, "Unknown202"}, //18.0.0+
|
||||||
|
FunctionInfo{203, nullptr, "Unknown203"}, //18.0.0+
|
||||||
|
FunctionInfo{204, nullptr, "Unknown204"}, //18.0.0+
|
||||||
|
FunctionInfo{205, nullptr, "Unknown205"}, //18.0.0+
|
||||||
|
FunctionInfo{501, nullptr, "Unknown501"},
|
||||||
|
FunctionInfo{502, nullptr, "Unknown502"},
|
||||||
|
FunctionInfo{503, nullptr, "GetTitleKey"},
|
||||||
|
FunctionInfo{504, nullptr, "Unknown504"},
|
||||||
|
FunctionInfo{508, nullptr, "Unknown508"},
|
||||||
|
FunctionInfo{509, nullptr, "Unknown509"},
|
||||||
|
FunctionInfo{510, nullptr, "Unknown510"},
|
||||||
|
FunctionInfo{511, nullptr, "Unknown511"},
|
||||||
|
FunctionInfo{1001, nullptr, "Unknown1001"},
|
||||||
|
FunctionInfo{1002, nullptr, "Unknown1001"},
|
||||||
|
FunctionInfo{1003, nullptr, "Unknown1003"},
|
||||||
|
FunctionInfo{1004, nullptr, "Unknown1004"},
|
||||||
|
FunctionInfo{1005, nullptr, "Unknown1005"},
|
||||||
|
FunctionInfo{1006, nullptr, "Unknown1006"},
|
||||||
|
FunctionInfo{1007, nullptr, "Unknown1007"},
|
||||||
|
FunctionInfo{1009, nullptr, "Unknown1009"},
|
||||||
|
FunctionInfo{1010, nullptr, "Unknown1010"},
|
||||||
|
FunctionInfo{1011, nullptr, "Unknown1011"},
|
||||||
|
FunctionInfo{1012, nullptr, "Unknown1012"},
|
||||||
|
FunctionInfo{1013, nullptr, "Unknown1013"},
|
||||||
|
FunctionInfo{1014, nullptr, "Unknown1014"},
|
||||||
|
FunctionInfo{1015, nullptr, "Unknown1015"},
|
||||||
|
FunctionInfo{1016, nullptr, "Unknown1016"},
|
||||||
|
FunctionInfo{1017, nullptr, "Unknown1017"},
|
||||||
|
FunctionInfo{1018, nullptr, "Unknown1018"},
|
||||||
|
FunctionInfo{1019, nullptr, "Unknown1019"},
|
||||||
|
FunctionInfo{1020, nullptr, "Unknown1020"},
|
||||||
|
FunctionInfo{1021, nullptr, "Unknown1021"},
|
||||||
|
FunctionInfo{1501, nullptr, "Unknown1501"},
|
||||||
|
FunctionInfo{1502, nullptr, "Unknown1502"},
|
||||||
|
FunctionInfo{1503, nullptr, "Unknown1503"},
|
||||||
|
FunctionInfo{1504, nullptr, "Unknown1504"},
|
||||||
|
FunctionInfo{1505, nullptr, "Unknown1505"},
|
||||||
|
FunctionInfo{1506, nullptr, "Unknown1506"},
|
||||||
|
FunctionInfo{2000, nullptr, "Unknown2000"},
|
||||||
|
FunctionInfo{2001, nullptr, "Unknown2001"},
|
||||||
|
FunctionInfo{2002, nullptr, "Unknown2002"},
|
||||||
|
FunctionInfo{2003, nullptr, "Unknown2003"},
|
||||||
|
FunctionInfo{2100, nullptr, "Unknown2100"},
|
||||||
|
FunctionInfo{2501, nullptr, "Unknown2501"},
|
||||||
|
FunctionInfo{2502, nullptr, "Unknown2502"},
|
||||||
|
FunctionInfo{2601, nullptr, "Unknown2601"},
|
||||||
|
FunctionInfo{3001, nullptr, "Unknown3001"},
|
||||||
|
FunctionInfo{3002, nullptr, "Unknown3002"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool CheckRightsId(HLERequestContext& ctx, const u128& rights_id) {
|
bool CheckRightsId(HLERequestContext& ctx, const u128& rights_id) {
|
||||||
if (rights_id == u128{}) {
|
if (rights_id == u128{}) {
|
||||||
@@ -323,83 +322,81 @@ private:
|
|||||||
class NDRM_LU final : public ServiceFramework<NDRM_LU> {
|
class NDRM_LU final : public ServiceFramework<NDRM_LU> {
|
||||||
public:
|
public:
|
||||||
explicit NDRM_LU(Core::System& system_)
|
explicit NDRM_LU(Core::System& system_)
|
||||||
: ServiceFramework{system_, "ndrm:lu"} {
|
: ServiceFramework{system_, "ndrm:lu"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{1, nullptr, "Cmd1"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{2, nullptr, "Cmd2"},
|
FunctionInfo{1, nullptr, "Cmd1"},
|
||||||
{3, nullptr, "Cmd3"},
|
FunctionInfo{2, nullptr, "Cmd2"},
|
||||||
{1000, nullptr, "Cmd1000"},
|
FunctionInfo{3, nullptr, "Cmd3"},
|
||||||
{8000, nullptr, "Cmd8000"},
|
FunctionInfo{1000, nullptr, "Cmd1000"},
|
||||||
};
|
FunctionInfo{8000, nullptr, "Cmd8000"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class NDRM_LA final : public ServiceFramework<NDRM_LA> {
|
class NDRM_LA final : public ServiceFramework<NDRM_LA> {
|
||||||
public:
|
public:
|
||||||
explicit NDRM_LA(Core::System& system_)
|
explicit NDRM_LA(Core::System& system_)
|
||||||
: ServiceFramework{system_, "ndrm:la"} {
|
: ServiceFramework{system_, "ndrm:la"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{1, nullptr, "Cmd1"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{2, nullptr, "Cmd2"},
|
FunctionInfo{1, nullptr, "Cmd1"},
|
||||||
{3, nullptr, "Cmd3"},
|
FunctionInfo{2, nullptr, "Cmd2"},
|
||||||
{4, nullptr, "Cmd4"},
|
FunctionInfo{3, nullptr, "Cmd3"},
|
||||||
{5, nullptr, "Cmd5"},
|
FunctionInfo{4, nullptr, "Cmd4"},
|
||||||
{6, nullptr, "Cmd6"},
|
FunctionInfo{5, nullptr, "Cmd5"},
|
||||||
{7, nullptr, "Cmd7"},
|
FunctionInfo{6, nullptr, "Cmd6"},
|
||||||
{8, nullptr, "Cmd8"},
|
FunctionInfo{7, nullptr, "Cmd7"},
|
||||||
{9, nullptr, "Cmd9"},
|
FunctionInfo{8, nullptr, "Cmd8"},
|
||||||
{10, nullptr, "Cmd10"},
|
FunctionInfo{9, nullptr, "Cmd9"},
|
||||||
{11, nullptr, "Cmd11"},
|
FunctionInfo{10, nullptr, "Cmd10"},
|
||||||
{12, nullptr, "Cmd12"},
|
FunctionInfo{11, nullptr, "Cmd11"},
|
||||||
{13, nullptr, "Cmd13"},
|
FunctionInfo{12, nullptr, "Cmd12"},
|
||||||
{14, nullptr, "Cmd14"},
|
FunctionInfo{13, nullptr, "Cmd13"},
|
||||||
{15, nullptr, "Cmd15"},
|
FunctionInfo{14, nullptr, "Cmd14"},
|
||||||
{16, nullptr, "Cmd16"},
|
FunctionInfo{15, nullptr, "Cmd15"},
|
||||||
{17, nullptr, "Cmd17"},
|
FunctionInfo{16, nullptr, "Cmd16"},
|
||||||
{18, nullptr, "Cmd18"},
|
FunctionInfo{17, nullptr, "Cmd17"},
|
||||||
{19, nullptr, "Cmd19"},
|
FunctionInfo{18, nullptr, "Cmd18"},
|
||||||
{20, nullptr, "Cmd20"},
|
FunctionInfo{19, nullptr, "Cmd19"},
|
||||||
{21, nullptr, "Cmd21"},
|
FunctionInfo{20, nullptr, "Cmd20"},
|
||||||
{22, nullptr, "Cmd22"},
|
FunctionInfo{21, nullptr, "Cmd21"},
|
||||||
{23, nullptr, "Cmd23"},
|
FunctionInfo{22, nullptr, "Cmd22"},
|
||||||
{24, nullptr, "Cmd24"},
|
FunctionInfo{23, nullptr, "Cmd23"},
|
||||||
{25, nullptr, "Cmd25"},
|
FunctionInfo{24, nullptr, "Cmd24"},
|
||||||
{26, nullptr, "Cmd26"},
|
FunctionInfo{25, nullptr, "Cmd25"},
|
||||||
{27, nullptr, "Cmd27"},
|
FunctionInfo{26, nullptr, "Cmd26"},
|
||||||
{28, nullptr, "Cmd28"},
|
FunctionInfo{27, nullptr, "Cmd27"},
|
||||||
{29, nullptr, "Cmd29"},
|
FunctionInfo{28, nullptr, "Cmd28"},
|
||||||
{30, nullptr, "Cmd30"},
|
FunctionInfo{29, nullptr, "Cmd29"},
|
||||||
{31, nullptr, "Cmd31"},
|
FunctionInfo{30, nullptr, "Cmd30"},
|
||||||
{32, nullptr, "Cmd32"},
|
FunctionInfo{31, nullptr, "Cmd31"},
|
||||||
{33, nullptr, "Cmd33"},
|
FunctionInfo{32, nullptr, "Cmd32"},
|
||||||
{34, nullptr, "Cmd34"},
|
FunctionInfo{33, nullptr, "Cmd33"},
|
||||||
{35, nullptr, "Cmd35"},
|
FunctionInfo{34, nullptr, "Cmd34"},
|
||||||
{36, nullptr, "Cmd36"},
|
FunctionInfo{35, nullptr, "Cmd35"},
|
||||||
{37, nullptr, "Cmd37"},
|
FunctionInfo{36, nullptr, "Cmd36"},
|
||||||
{38, nullptr, "Cmd38"},
|
FunctionInfo{37, nullptr, "Cmd37"},
|
||||||
{39, nullptr, "Cmd39"},
|
FunctionInfo{38, nullptr, "Cmd38"},
|
||||||
{40, nullptr, "Cmd40"},
|
FunctionInfo{39, nullptr, "Cmd39"},
|
||||||
{42, nullptr, "Cmd42"},
|
FunctionInfo{40, nullptr, "Cmd40"},
|
||||||
{43, nullptr, "Cmd43"},
|
FunctionInfo{42, nullptr, "Cmd42"},
|
||||||
{44, nullptr, "Cmd44"},
|
FunctionInfo{43, nullptr, "Cmd43"},
|
||||||
{45, nullptr, "Cmd45"},
|
FunctionInfo{44, nullptr, "Cmd44"},
|
||||||
{46, nullptr, "Cmd46"},
|
FunctionInfo{45, nullptr, "Cmd45"},
|
||||||
{47, nullptr, "Cmd47"},
|
FunctionInfo{46, nullptr, "Cmd46"},
|
||||||
{48, nullptr, "Cmd48"},
|
FunctionInfo{47, nullptr, "Cmd47"},
|
||||||
{49, nullptr, "Cmd49"},
|
FunctionInfo{48, nullptr, "Cmd48"},
|
||||||
{50, nullptr, "Cmd50"},
|
FunctionInfo{49, nullptr, "Cmd49"},
|
||||||
{51, nullptr, "Cmd51"},
|
FunctionInfo{50, nullptr, "Cmd50"},
|
||||||
{8000, nullptr, "Cmd8000"},
|
FunctionInfo{51, nullptr, "Cmd51"},
|
||||||
{8001, nullptr, "Cmd8001"},
|
FunctionInfo{8000, nullptr, "Cmd8000"},
|
||||||
{8002, nullptr, "Cmd8002"},
|
FunctionInfo{8001, nullptr, "Cmd8001"},
|
||||||
{8003, nullptr, "Cmd8003"},
|
FunctionInfo{8002, nullptr, "Cmd8002"},
|
||||||
};
|
FunctionInfo{8003, nullptr, "Cmd8003"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -11,36 +14,32 @@ namespace Service::EUPLD {
|
|||||||
|
|
||||||
class ErrorUploadContext final : public ServiceFramework<ErrorUploadContext> {
|
class ErrorUploadContext final : public ServiceFramework<ErrorUploadContext> {
|
||||||
public:
|
public:
|
||||||
explicit ErrorUploadContext(Core::System& system_) : ServiceFramework{system_, "eupld:c"} {
|
explicit ErrorUploadContext(Core::System& system_) : ServiceFramework{system_, "eupld:c"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "SetUrl"},
|
|
||||||
{1, nullptr, "ImportCrt"},
|
|
||||||
{2, nullptr, "ImportPki"},
|
|
||||||
{3, nullptr, "SetAutoUpload"},
|
|
||||||
{4, nullptr, "GetAutoUpload"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "SetUrl"},
|
||||||
|
FunctionInfo{1, nullptr, "ImportCrt"},
|
||||||
|
FunctionInfo{2, nullptr, "ImportPki"},
|
||||||
|
FunctionInfo{3, nullptr, "SetAutoUpload"},
|
||||||
|
FunctionInfo{4, nullptr, "GetAutoUpload"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ErrorUploadRequest final : public ServiceFramework<ErrorUploadRequest> {
|
class ErrorUploadRequest final : public ServiceFramework<ErrorUploadRequest> {
|
||||||
public:
|
public:
|
||||||
explicit ErrorUploadRequest(Core::System& system_) : ServiceFramework{system_, "eupld:r"} {
|
explicit ErrorUploadRequest(Core::System& system_) : ServiceFramework{system_, "eupld:r"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "Initialize"},
|
|
||||||
{1, nullptr, "UploadAll"},
|
|
||||||
{2, nullptr, "UploadSelected"},
|
|
||||||
{3, nullptr, "GetUploadStatus"},
|
|
||||||
{4, nullptr, "CancelUpload"},
|
|
||||||
{5, nullptr, "GetResult"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "Initialize"},
|
||||||
|
FunctionInfo{1, nullptr, "UploadAll"},
|
||||||
|
FunctionInfo{2, nullptr, "UploadSelected"},
|
||||||
|
FunctionInfo{3, nullptr, "GetUploadStatus"},
|
||||||
|
FunctionInfo{4, nullptr, "CancelUpload"},
|
||||||
|
FunctionInfo{5, nullptr, "GetResult"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -16,30 +16,26 @@ namespace Service::FGM {
|
|||||||
|
|
||||||
class IRequest final : public ServiceFramework<IRequest> {
|
class IRequest final : public ServiceFramework<IRequest> {
|
||||||
public:
|
public:
|
||||||
explicit IRequest(Core::System& system_) : ServiceFramework{system_, "IRequest"} {
|
explicit IRequest(Core::System& system_) : ServiceFramework{system_, "IRequest"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "Initialize"},
|
|
||||||
{1, nullptr, "Set"},
|
|
||||||
{2, nullptr, "Get"},
|
|
||||||
{3, nullptr, "Cancel"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "Initialize"},
|
||||||
|
FunctionInfo{1, nullptr, "Set"},
|
||||||
|
FunctionInfo{2, nullptr, "Get"},
|
||||||
|
FunctionInfo{3, nullptr, "Cancel"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class FGM final : public ServiceFramework<FGM> {
|
class FGM final : public ServiceFramework<FGM> {
|
||||||
public:
|
public:
|
||||||
explicit FGM(Core::System& system_, const char* name) : ServiceFramework{system_, name} {
|
explicit FGM(Core::System& system_, const char* name) : ServiceFramework{system_, name} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &FGM::Initialize, "Initialize"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &FGM::Initialize, "Initialize"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -54,16 +50,14 @@ private:
|
|||||||
|
|
||||||
class FGM_DBG final : public ServiceFramework<FGM_DBG> {
|
class FGM_DBG final : public ServiceFramework<FGM_DBG> {
|
||||||
public:
|
public:
|
||||||
explicit FGM_DBG(Core::System& system_) : ServiceFramework{system_, "fgm:dbg"} {
|
explicit FGM_DBG(Core::System& system_) : ServiceFramework{system_, "fgm:dbg"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "Initialize"},
|
|
||||||
{1, nullptr, "Read"},
|
|
||||||
{2, nullptr, "Cancel"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "Initialize"},
|
||||||
|
FunctionInfo{1, nullptr, "Read"},
|
||||||
|
FunctionInfo{2, nullptr, "Cancel"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -22,128 +22,126 @@ class IFriendService final : public ServiceFramework<IFriendService> {
|
|||||||
public:
|
public:
|
||||||
explicit IFriendService(Core::System& system_)
|
explicit IFriendService(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IFriendService"}, service_context{system, "IFriendService"} {
|
: ServiceFramework{system_, "IFriendService"}, service_context{system, "IFriendService"} {
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IFriendService::GetCompletionEvent, "GetCompletionEvent"},
|
|
||||||
{1, &IFriendService::Cancel, "Cancel"},
|
|
||||||
{10100, nullptr, "GetFriendListIds"},
|
|
||||||
{10101, &IFriendService::GetFriendList, "GetFriendList"},
|
|
||||||
{10102, nullptr, "UpdateFriendInfo"},
|
|
||||||
{10110, nullptr, "GetFriendProfileImage"},
|
|
||||||
{10111, nullptr, "GetFriendProfileImageWithImageSize"}, // 18.0.0+
|
|
||||||
{10120, &IFriendService::CheckFriendListAvailability, "CheckFriendListAvailability"},
|
|
||||||
{10121, nullptr, "EnsureFriendListAvailable"},
|
|
||||||
{10200, nullptr, "SendFriendRequestForApplication"},
|
|
||||||
{10211, nullptr, "AddFacedFriendRequestForApplication"},
|
|
||||||
{10400, &IFriendService::GetBlockedUserListIds, "GetBlockedUserListIds"},
|
|
||||||
{10420, &IFriendService::CheckBlockedUserListAvailability, "CheckBlockedUserListAvailability"},
|
|
||||||
{10421, nullptr, "EnsureBlockedUserListAvailable"},
|
|
||||||
{10500, nullptr, "GetProfileList"},
|
|
||||||
{10501, nullptr, "GetProfileListV2"}, // 18.0.0+
|
|
||||||
{10600, nullptr, "DeclareOpenOnlinePlaySession"},
|
|
||||||
{10601, &IFriendService::DeclareCloseOnlinePlaySession, "DeclareCloseOnlinePlaySession"},
|
|
||||||
{10610, &IFriendService::UpdateUserPresence, "UpdateUserPresence"},
|
|
||||||
{10700, &IFriendService::GetPlayHistoryRegistrationKey, "GetPlayHistoryRegistrationKey"},
|
|
||||||
{10701, nullptr, "GetPlayHistoryRegistrationKeyWithNetworkServiceAccountId"},
|
|
||||||
{10702, nullptr, "AddPlayHistory"},
|
|
||||||
{11000, nullptr, "GetProfileImageUrl"},
|
|
||||||
{11001, nullptr, "GetProfileImageUrlV2"}, // 18.0.0+
|
|
||||||
{20100, &IFriendService::GetFriendCount, "GetFriendCount"},
|
|
||||||
{20101, &IFriendService::GetNewlyFriendCount, "GetNewlyFriendCount"},
|
|
||||||
{20102, nullptr, "GetFriendDetailedInfo"},
|
|
||||||
{20103, nullptr, "SyncFriendList"},
|
|
||||||
{20104, &IFriendService::RequestSyncFriendList, "RequestSyncFriendList"},
|
|
||||||
{20105, &IFriendService::GetFriendListForViewer, "GetFriendListForViewerV1"},
|
|
||||||
{20106, nullptr, "UpdateFriendInfoForViewerV1"},
|
|
||||||
{20107, nullptr, "GetFriendDetailedInfoV2"}, // 20.0.0+
|
|
||||||
{20108, &IFriendService::GetFriendListForViewer, "GetFriendListForViewerV2"}, // 22.0.0+
|
|
||||||
{20109, nullptr, "UpdateFriendInfoForViewerV2"}, // 22.0.0+
|
|
||||||
{20110, nullptr, "LoadFriendSettingV1"},
|
|
||||||
{20111, nullptr, "LoadFriendSettingV2"}, // 22.0.0+
|
|
||||||
{20200, &IFriendService::GetReceivedFriendRequestCount, "GetReceivedFriendRequestCount"},
|
|
||||||
{20201, nullptr, "GetFriendRequestListV1"},
|
|
||||||
{20202, nullptr, "GetFriendRequestListV2"}, // 20.0.0+
|
|
||||||
{20203, nullptr, "GetFriendRequestReceivedNotificationCount"}, // 22.0.0+
|
|
||||||
{20300, nullptr, "GetFriendCandidateList"},
|
|
||||||
{20301, nullptr, "GetNintendoNetworkIdInfo"},
|
|
||||||
{20302, nullptr, "GetSnsAccountLinkage"}, // 5.0.0-19.0.1
|
|
||||||
{20303, nullptr, "GetSnsAccountProfile"}, // 5.0.0-19.0.1
|
|
||||||
{20304, nullptr, "GetSnsAccountFriendList"}, // 5.0.0-19.0.1
|
|
||||||
{20400, nullptr, "GetBlockedUserListV1"},
|
|
||||||
{20401, nullptr, "SyncBlockedUserList"},
|
|
||||||
{20402, nullptr, "GetBlockedUserListV2"}, // 20.0.0+
|
|
||||||
{20500, nullptr, "GetProfileExtraListV1"},
|
|
||||||
{20501, nullptr, "GetRelationship"},
|
|
||||||
{20502, nullptr, "GetProfileExtraListV2"}, // 19.0.0+
|
|
||||||
{20600, &IFriendService::GetUserPresenceView, "GetUserPresenceViewV1"},
|
|
||||||
{20601, &IFriendService::GetUserPresenceView, "GetUserPresenceViewV2"}, // 19.0.0+
|
|
||||||
{20700, nullptr, "GetPlayHistoryListV1"},
|
|
||||||
{20701, &IFriendService::GetPlayHistoryStatistics, "GetPlayHistoryStatistics"},
|
|
||||||
{20702, nullptr, "GetPlayHistoryListV2"}, // 19.0.0+
|
|
||||||
{20800, &IFriendService::LoadUserSetting, "LoadUserSettingV1"},
|
|
||||||
{20801, nullptr, "SyncUserSetting"},
|
|
||||||
{20802, &IFriendService::LoadUserSetting, "LoadUserSettingV2"}, // 19.0.0+
|
|
||||||
{20900, &IFriendService::RequestListSummaryOverlayNotification, "RequestListSummaryOverlayNotification"},
|
|
||||||
{21000, nullptr, "GetExternalApplicationCatalog"},
|
|
||||||
{22000, nullptr, "GetReceivedFriendInvitationListV1"},
|
|
||||||
{22001, nullptr, "GetReceivedFriendInvitationDetailedInfoV1"},
|
|
||||||
{22002, nullptr, "GetReceivedFriendInvitationListV2"}, // 19.0.0+
|
|
||||||
{22003, nullptr, "GetReceivedFriendInvitationDetailedInfoV2"}, // 19.0.0+
|
|
||||||
{22010, &IFriendService::GetReceivedFriendInvitationCountCache, "GetReceivedFriendInvitationCountCache"},
|
|
||||||
{30100, nullptr, "DropFriendNewlyFlags"},
|
|
||||||
{30101, nullptr, "DeleteFriend"},
|
|
||||||
{30110, nullptr, "DropFriendNewlyFlag"},
|
|
||||||
{30120, nullptr, "ChangeFriendFavoriteFlag"},
|
|
||||||
{30121, nullptr, "ChangeFriendOnlineNotificationFlag"},
|
|
||||||
{30130, nullptr, "SetFriendNote"}, // 22.0.0+
|
|
||||||
{30131, nullptr, "RequestUploadPendingNote"}, // 22.0.0+
|
|
||||||
{30190, nullptr, "RequestSyncLocalUpdates"}, // 22.0.0+
|
|
||||||
{30200, nullptr, "SendFriendRequest"},
|
|
||||||
{30201, nullptr, "SendFriendRequestWithApplicationInfoV1"},
|
|
||||||
{30202, nullptr, "CancelFriendRequest"},
|
|
||||||
{30203, nullptr, "AcceptFriendRequest"},
|
|
||||||
{30204, nullptr, "RejectFriendRequest"},
|
|
||||||
{30205, nullptr, "ReadFriendRequest"},
|
|
||||||
{30210, nullptr, "GetFacedFriendRequestRegistrationKey"},
|
|
||||||
{30211, nullptr, "AddFacedFriendRequest"},
|
|
||||||
{30212, nullptr, "CancelFacedFriendRequest"},
|
|
||||||
{30213, nullptr, "GetFacedFriendRequestProfileImage"},
|
|
||||||
{30214, nullptr, "GetFacedFriendRequestProfileImageFromPath"},
|
|
||||||
{30215, nullptr, "SendFriendRequestWithExternalApplicationCatalogId"},
|
|
||||||
{30216, nullptr, "ResendFacedFriendRequest"},
|
|
||||||
{30217, nullptr, "SendFriendRequestWithNintendoNetworkIdInfo"},
|
|
||||||
{30218, nullptr, "SendFriendRequestWithApplicationInfoV2"}, // 20.0.0+
|
|
||||||
{30300, nullptr, "GetSnsAccountLinkPageUrl"}, // 5.0.0-19.0.1
|
|
||||||
{30301, nullptr, "UnlinkSnsAccount"}, // 5.0.0-19.0.1
|
|
||||||
{30400, nullptr, "BlockUser"},
|
|
||||||
{30401, nullptr, "BlockUserWithApplicationInfoV1"},
|
|
||||||
{30402, nullptr, "UnblockUser"},
|
|
||||||
{30403, nullptr, "BlockUserWithApplicationInfoV2"}, // 20.0.0+
|
|
||||||
{30500, nullptr, "GetProfileExtraFromFriendCodeV1"},
|
|
||||||
{30501, nullptr, "GetProfileExtraFromFriendCodeV2"}, // 19.0.0+
|
|
||||||
{30700, nullptr, "DeletePlayHistory"},
|
|
||||||
{30701, nullptr, "AddPlayHistoryWithApplication"}, // 19.0.0+
|
|
||||||
{30810, nullptr, "ChangePresencePermission"},
|
|
||||||
{30811, nullptr, "ChangeFriendRequestReception"},
|
|
||||||
{30812, nullptr, "ChangePlayLogPermission"},
|
|
||||||
{30820, nullptr, "IssueFriendCode"},
|
|
||||||
{30830, nullptr, "ClearPlayLog"},
|
|
||||||
{30900, nullptr, "SendFriendInvitationV1"},
|
|
||||||
{30901, nullptr, "SendFriendInvitationV2"}, // 19.0.0+
|
|
||||||
{30910, nullptr, "ReadFriendInvitation"},
|
|
||||||
{30911, nullptr, "ReadAllFriendInvitations"},
|
|
||||||
{31000, nullptr, "OpenUser"}, // 19.0.0+
|
|
||||||
{40100, nullptr, "DeleteFriendListCache"},
|
|
||||||
{40400, nullptr, "DeleteBlockedUserListCache"},
|
|
||||||
{49900, nullptr, "DeleteNetworkServiceAccountCache"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
|
|
||||||
completion_event = service_context.CreateEvent("IFriendService:CompletionEvent");
|
completion_event = service_context.CreateEvent("IFriendService:CompletionEvent");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IFriendService::GetCompletionEvent, "GetCompletionEvent"},
|
||||||
|
FunctionInfo{1, &IFriendService::Cancel, "Cancel"},
|
||||||
|
FunctionInfo{10100, nullptr, "GetFriendListIds"},
|
||||||
|
FunctionInfo{10101, &IFriendService::GetFriendList, "GetFriendList"},
|
||||||
|
FunctionInfo{10102, nullptr, "UpdateFriendInfo"},
|
||||||
|
FunctionInfo{10110, nullptr, "GetFriendProfileImage"},
|
||||||
|
FunctionInfo{10111, nullptr, "GetFriendProfileImageWithImageSize"}, // 18.0.0+
|
||||||
|
FunctionInfo{10120, &IFriendService::CheckFriendListAvailability, "CheckFriendListAvailability"},
|
||||||
|
FunctionInfo{10121, nullptr, "EnsureFriendListAvailable"},
|
||||||
|
FunctionInfo{10200, nullptr, "SendFriendRequestForApplication"},
|
||||||
|
FunctionInfo{10211, nullptr, "AddFacedFriendRequestForApplication"},
|
||||||
|
FunctionInfo{10400, &IFriendService::GetBlockedUserListIds, "GetBlockedUserListIds"},
|
||||||
|
FunctionInfo{10420, &IFriendService::CheckBlockedUserListAvailability, "CheckBlockedUserListAvailability"},
|
||||||
|
FunctionInfo{10421, nullptr, "EnsureBlockedUserListAvailable"},
|
||||||
|
FunctionInfo{10500, nullptr, "GetProfileList"},
|
||||||
|
FunctionInfo{10501, nullptr, "GetProfileListV2"}, // 18.0.0+
|
||||||
|
FunctionInfo{10600, nullptr, "DeclareOpenOnlinePlaySession"},
|
||||||
|
FunctionInfo{10601, &IFriendService::DeclareCloseOnlinePlaySession, "DeclareCloseOnlinePlaySession"},
|
||||||
|
FunctionInfo{10610, &IFriendService::UpdateUserPresence, "UpdateUserPresence"},
|
||||||
|
FunctionInfo{10700, &IFriendService::GetPlayHistoryRegistrationKey, "GetPlayHistoryRegistrationKey"},
|
||||||
|
FunctionInfo{10701, nullptr, "GetPlayHistoryRegistrationKeyWithNetworkServiceAccountId"},
|
||||||
|
FunctionInfo{10702, nullptr, "AddPlayHistory"},
|
||||||
|
FunctionInfo{11000, nullptr, "GetProfileImageUrl"},
|
||||||
|
FunctionInfo{11001, nullptr, "GetProfileImageUrlV2"}, // 18.0.0+
|
||||||
|
FunctionInfo{20100, &IFriendService::GetFriendCount, "GetFriendCount"},
|
||||||
|
FunctionInfo{20101, &IFriendService::GetNewlyFriendCount, "GetNewlyFriendCount"},
|
||||||
|
FunctionInfo{20102, nullptr, "GetFriendDetailedInfo"},
|
||||||
|
FunctionInfo{20103, nullptr, "SyncFriendList"},
|
||||||
|
FunctionInfo{20104, &IFriendService::RequestSyncFriendList, "RequestSyncFriendList"},
|
||||||
|
FunctionInfo{20105, &IFriendService::GetFriendListForViewer, "GetFriendListForViewerV1"},
|
||||||
|
FunctionInfo{20106, nullptr, "UpdateFriendInfoForViewerV1"},
|
||||||
|
FunctionInfo{20107, nullptr, "GetFriendDetailedInfoV2"}, // 20.0.0+
|
||||||
|
FunctionInfo{20108, &IFriendService::GetFriendListForViewer, "GetFriendListForViewerV2"}, // 22.0.0+
|
||||||
|
FunctionInfo{20109, nullptr, "UpdateFriendInfoForViewerV2"}, // 22.0.0+
|
||||||
|
FunctionInfo{20110, nullptr, "LoadFriendSettingV1"},
|
||||||
|
FunctionInfo{20111, nullptr, "LoadFriendSettingV2"}, // 22.0.0+
|
||||||
|
FunctionInfo{20200, &IFriendService::GetReceivedFriendRequestCount, "GetReceivedFriendRequestCount"},
|
||||||
|
FunctionInfo{20201, nullptr, "GetFriendRequestListV1"},
|
||||||
|
FunctionInfo{20202, nullptr, "GetFriendRequestListV2"}, // 20.0.0+
|
||||||
|
FunctionInfo{20203, nullptr, "GetFriendRequestReceivedNotificationCount"}, // 22.0.0+
|
||||||
|
FunctionInfo{20300, nullptr, "GetFriendCandidateList"},
|
||||||
|
FunctionInfo{20301, nullptr, "GetNintendoNetworkIdInfo"},
|
||||||
|
FunctionInfo{20302, nullptr, "GetSnsAccountLinkage"}, // 5.0.0-19.0.1
|
||||||
|
FunctionInfo{20303, nullptr, "GetSnsAccountProfile"}, // 5.0.0-19.0.1
|
||||||
|
FunctionInfo{20304, nullptr, "GetSnsAccountFriendList"}, // 5.0.0-19.0.1
|
||||||
|
FunctionInfo{20400, nullptr, "GetBlockedUserListV1"},
|
||||||
|
FunctionInfo{20401, nullptr, "SyncBlockedUserList"},
|
||||||
|
FunctionInfo{20402, nullptr, "GetBlockedUserListV2"}, // 20.0.0+
|
||||||
|
FunctionInfo{20500, nullptr, "GetProfileExtraListV1"},
|
||||||
|
FunctionInfo{20501, nullptr, "GetRelationship"},
|
||||||
|
FunctionInfo{20502, nullptr, "GetProfileExtraListV2"}, // 19.0.0+
|
||||||
|
FunctionInfo{20600, &IFriendService::GetUserPresenceView, "GetUserPresenceViewV1"},
|
||||||
|
FunctionInfo{20601, &IFriendService::GetUserPresenceView, "GetUserPresenceViewV2"}, // 19.0.0+
|
||||||
|
FunctionInfo{20700, nullptr, "GetPlayHistoryListV1"},
|
||||||
|
FunctionInfo{20701, &IFriendService::GetPlayHistoryStatistics, "GetPlayHistoryStatistics"},
|
||||||
|
FunctionInfo{20702, nullptr, "GetPlayHistoryListV2"}, // 19.0.0+
|
||||||
|
FunctionInfo{20800, &IFriendService::LoadUserSetting, "LoadUserSettingV1"},
|
||||||
|
FunctionInfo{20801, nullptr, "SyncUserSetting"},
|
||||||
|
FunctionInfo{20802, &IFriendService::LoadUserSetting, "LoadUserSettingV2"}, // 19.0.0+
|
||||||
|
FunctionInfo{20900, &IFriendService::RequestListSummaryOverlayNotification, "RequestListSummaryOverlayNotification"},
|
||||||
|
FunctionInfo{21000, nullptr, "GetExternalApplicationCatalog"},
|
||||||
|
FunctionInfo{22000, nullptr, "GetReceivedFriendInvitationListV1"},
|
||||||
|
FunctionInfo{22001, nullptr, "GetReceivedFriendInvitationDetailedInfoV1"},
|
||||||
|
FunctionInfo{22002, nullptr, "GetReceivedFriendInvitationListV2"}, // 19.0.0+
|
||||||
|
FunctionInfo{22003, nullptr, "GetReceivedFriendInvitationDetailedInfoV2"}, // 19.0.0+
|
||||||
|
FunctionInfo{22010, &IFriendService::GetReceivedFriendInvitationCountCache, "GetReceivedFriendInvitationCountCache"},
|
||||||
|
FunctionInfo{30100, nullptr, "DropFriendNewlyFlags"},
|
||||||
|
FunctionInfo{30101, nullptr, "DeleteFriend"},
|
||||||
|
FunctionInfo{30110, nullptr, "DropFriendNewlyFlag"},
|
||||||
|
FunctionInfo{30120, nullptr, "ChangeFriendFavoriteFlag"},
|
||||||
|
FunctionInfo{30121, nullptr, "ChangeFriendOnlineNotificationFlag"},
|
||||||
|
FunctionInfo{30130, nullptr, "SetFriendNote"}, // 22.0.0+
|
||||||
|
FunctionInfo{30131, nullptr, "RequestUploadPendingNote"}, // 22.0.0+
|
||||||
|
FunctionInfo{30190, nullptr, "RequestSyncLocalUpdates"}, // 22.0.0+
|
||||||
|
FunctionInfo{30200, nullptr, "SendFriendRequest"},
|
||||||
|
FunctionInfo{30201, nullptr, "SendFriendRequestWithApplicationInfoV1"},
|
||||||
|
FunctionInfo{30202, nullptr, "CancelFriendRequest"},
|
||||||
|
FunctionInfo{30203, nullptr, "AcceptFriendRequest"},
|
||||||
|
FunctionInfo{30204, nullptr, "RejectFriendRequest"},
|
||||||
|
FunctionInfo{30205, nullptr, "ReadFriendRequest"},
|
||||||
|
FunctionInfo{30210, nullptr, "GetFacedFriendRequestRegistrationKey"},
|
||||||
|
FunctionInfo{30211, nullptr, "AddFacedFriendRequest"},
|
||||||
|
FunctionInfo{30212, nullptr, "CancelFacedFriendRequest"},
|
||||||
|
FunctionInfo{30213, nullptr, "GetFacedFriendRequestProfileImage"},
|
||||||
|
FunctionInfo{30214, nullptr, "GetFacedFriendRequestProfileImageFromPath"},
|
||||||
|
FunctionInfo{30215, nullptr, "SendFriendRequestWithExternalApplicationCatalogId"},
|
||||||
|
FunctionInfo{30216, nullptr, "ResendFacedFriendRequest"},
|
||||||
|
FunctionInfo{30217, nullptr, "SendFriendRequestWithNintendoNetworkIdInfo"},
|
||||||
|
FunctionInfo{30218, nullptr, "SendFriendRequestWithApplicationInfoV2"}, // 20.0.0+
|
||||||
|
FunctionInfo{30300, nullptr, "GetSnsAccountLinkPageUrl"}, // 5.0.0-19.0.1
|
||||||
|
FunctionInfo{30301, nullptr, "UnlinkSnsAccount"}, // 5.0.0-19.0.1
|
||||||
|
FunctionInfo{30400, nullptr, "BlockUser"},
|
||||||
|
FunctionInfo{30401, nullptr, "BlockUserWithApplicationInfoV1"},
|
||||||
|
FunctionInfo{30402, nullptr, "UnblockUser"},
|
||||||
|
FunctionInfo{30403, nullptr, "BlockUserWithApplicationInfoV2"}, // 20.0.0+
|
||||||
|
FunctionInfo{30500, nullptr, "GetProfileExtraFromFriendCodeV1"},
|
||||||
|
FunctionInfo{30501, nullptr, "GetProfileExtraFromFriendCodeV2"}, // 19.0.0+
|
||||||
|
FunctionInfo{30700, nullptr, "DeletePlayHistory"},
|
||||||
|
FunctionInfo{30701, nullptr, "AddPlayHistoryWithApplication"}, // 19.0.0+
|
||||||
|
FunctionInfo{30810, nullptr, "ChangePresencePermission"},
|
||||||
|
FunctionInfo{30811, nullptr, "ChangeFriendRequestReception"},
|
||||||
|
FunctionInfo{30812, nullptr, "ChangePlayLogPermission"},
|
||||||
|
FunctionInfo{30820, nullptr, "IssueFriendCode"},
|
||||||
|
FunctionInfo{30830, nullptr, "ClearPlayLog"},
|
||||||
|
FunctionInfo{30900, nullptr, "SendFriendInvitationV1"},
|
||||||
|
FunctionInfo{30901, nullptr, "SendFriendInvitationV2"}, // 19.0.0+
|
||||||
|
FunctionInfo{30910, nullptr, "ReadFriendInvitation"},
|
||||||
|
FunctionInfo{30911, nullptr, "ReadAllFriendInvitations"},
|
||||||
|
FunctionInfo{31000, nullptr, "OpenUser"}, // 19.0.0+
|
||||||
|
FunctionInfo{40100, nullptr, "DeleteFriendListCache"},
|
||||||
|
FunctionInfo{40400, nullptr, "DeleteBlockedUserListCache"},
|
||||||
|
FunctionInfo{49900, nullptr, "DeleteNetworkServiceAccountCache"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
~IFriendService() override {
|
~IFriendService() override {
|
||||||
service_context.CloseEvent(completion_event);
|
service_context.CloseEvent(completion_event);
|
||||||
}
|
}
|
||||||
@@ -375,21 +373,19 @@ private:
|
|||||||
class INotificationService final : public ServiceFramework<INotificationService> {
|
class INotificationService final : public ServiceFramework<INotificationService> {
|
||||||
public:
|
public:
|
||||||
explicit INotificationService(Core::System& system_, Common::UUID uuid_)
|
explicit INotificationService(Core::System& system_, Common::UUID uuid_)
|
||||||
: ServiceFramework{system_, "INotificationService"}, uuid{uuid_},
|
: ServiceFramework{system_, "INotificationService"}, uuid{uuid_}
|
||||||
service_context{system_, "INotificationService"} {
|
, service_context{system_, "INotificationService"} {
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &INotificationService::GetEvent, "GetEvent"},
|
|
||||||
{1, &INotificationService::Clear, "Clear"},
|
|
||||||
{2, &INotificationService::Pop, "Pop"}
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
|
|
||||||
notification_event = service_context.CreateEvent("INotificationService:NotifyEvent");
|
notification_event = service_context.CreateEvent("INotificationService:NotifyEvent");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &INotificationService::GetEvent, "GetEvent"},
|
||||||
|
FunctionInfo{1, &INotificationService::Clear, "Clear"},
|
||||||
|
FunctionInfo{2, &INotificationService::Pop, "Pop"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
~INotificationService() override {
|
~INotificationService() override {
|
||||||
service_context.CloseEvent(notification_event);
|
service_context.CloseEvent(notification_event);
|
||||||
}
|
}
|
||||||
@@ -501,12 +497,13 @@ class IServiceForApplication final : public ServiceFramework<IServiceForApplicat
|
|||||||
public:
|
public:
|
||||||
explicit IServiceForApplication(Core::System& system_)
|
explicit IServiceForApplication(Core::System& system_)
|
||||||
: ServiceFramework{system_, "nd:app"}
|
: ServiceFramework{system_, "nd:app"}
|
||||||
{
|
{}
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "GetReceivableNeighborInfoCountMax"},
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{10, nullptr, "IsNeighborDetectionEnabled"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, nullptr, "GetReceivableNeighborInfoCountMax"},
|
||||||
RegisterHandlers(functions);
|
FunctionInfo{10, nullptr, "IsNeighborDetectionEnabled"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -514,47 +511,48 @@ class IServiceForSystem final : public ServiceFramework<IServiceForSystem> {
|
|||||||
public:
|
public:
|
||||||
explicit IServiceForSystem(Core::System& system_)
|
explicit IServiceForSystem(Core::System& system_)
|
||||||
: ServiceFramework{system_, "nd:sys"}
|
: ServiceFramework{system_, "nd:sys"}
|
||||||
{
|
{}
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "GetReceivableNeighborInfoCountMax"},
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{10, nullptr, "IsNeighborDetectionEnabled"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{200, nullptr, "SetSystemData"},
|
FunctionInfo{0, nullptr, "GetReceivableNeighborInfoCountMax"},
|
||||||
{201, nullptr, "ClearSystemData"},
|
FunctionInfo{10, nullptr, "IsNeighborDetectionEnabled"},
|
||||||
{203, nullptr, "GetReceivableNeighborInfoCountForSystem"},
|
FunctionInfo{200, nullptr, "SetSystemData"},
|
||||||
{204, nullptr, "ReceiveNeighborInfoForSystem"},
|
FunctionInfo{201, nullptr, "ClearSystemData"},
|
||||||
{205, nullptr, "SetSender"},
|
FunctionInfo{203, nullptr, "GetReceivableNeighborInfoCountForSystem"},
|
||||||
{206, nullptr, "GetSender"},
|
FunctionInfo{204, nullptr, "ReceiveNeighborInfoForSystem"},
|
||||||
{207, nullptr, "CreateScannerForSystem"},
|
FunctionInfo{205, nullptr, "SetSender"},
|
||||||
{208, nullptr, "CreateReceiveEventHolderForSystem"},
|
FunctionInfo{206, nullptr, "GetSender"},
|
||||||
{223, nullptr, "EnableNeighborDetection"},
|
FunctionInfo{207, nullptr, "CreateScannerForSystem"},
|
||||||
{224, nullptr, "DisableNeighborDetection"},
|
FunctionInfo{208, nullptr, "CreateReceiveEventHolderForSystem"},
|
||||||
{226, nullptr, "EnablePowerSave"},
|
FunctionInfo{223, nullptr, "EnableNeighborDetection"},
|
||||||
{227, nullptr, "DisablePowerSave"},
|
FunctionInfo{224, nullptr, "DisableNeighborDetection"},
|
||||||
{228, nullptr, "IsPowerSaveEnabled"},
|
FunctionInfo{226, nullptr, "EnablePowerSave"},
|
||||||
{232, nullptr, "ClearBlockedUsers"},
|
FunctionInfo{227, nullptr, "DisablePowerSave"},
|
||||||
{233, nullptr, "GetBlockedUserCount"},
|
FunctionInfo{228, nullptr, "IsPowerSaveEnabled"},
|
||||||
{234, nullptr, "BlockUserByLocalUserId"},
|
FunctionInfo{232, nullptr, "ClearBlockedUsers"},
|
||||||
{235, nullptr, "BlockUserByNetworkUserId"},
|
FunctionInfo{233, nullptr, "GetBlockedUserCount"},
|
||||||
{236, nullptr, "UnblockUserByLocalUserId"},
|
FunctionInfo{234, nullptr, "BlockUserByLocalUserId"},
|
||||||
{237, nullptr, "UnblockUserByNetworkUserId"},
|
FunctionInfo{235, nullptr, "BlockUserByNetworkUserId"},
|
||||||
{240, nullptr, "DeleteApplication"},
|
FunctionInfo{236, nullptr, "UnblockUserByLocalUserId"},
|
||||||
{250, nullptr, "InitializeApplicationInfo"},
|
FunctionInfo{237, nullptr, "UnblockUserByNetworkUserId"},
|
||||||
{260, nullptr, "CreateAccountSystemSaveDataAccessSuppressor"},
|
FunctionInfo{240, nullptr, "DeleteApplication"},
|
||||||
{300, nullptr, "AddReceivedNeighborInfoForSystemForDebug"},
|
FunctionInfo{250, nullptr, "InitializeApplicationInfo"},
|
||||||
{301, nullptr, "GetSendDataForDebug"},
|
FunctionInfo{260, nullptr, "CreateAccountSystemSaveDataAccessSuppressor"},
|
||||||
{302, nullptr, "ClearReceiveCounterForDebug"},
|
FunctionInfo{300, nullptr, "AddReceivedNeighborInfoForSystemForDebug"},
|
||||||
{303, nullptr, "GetNextReceiveCounterForDebug"},
|
FunctionInfo{301, nullptr, "GetSendDataForDebug"},
|
||||||
{304, nullptr, "ListBlockedUsersForDebug"},
|
FunctionInfo{302, nullptr, "ClearReceiveCounterForDebug"},
|
||||||
{305, nullptr, "RefreshSendDataIdForDebug"},
|
FunctionInfo{303, nullptr, "GetNextReceiveCounterForDebug"},
|
||||||
{306, nullptr, "ReloadFwdbgSettingsForDebug"},
|
FunctionInfo{304, nullptr, "ListBlockedUsersForDebug"},
|
||||||
{307, nullptr, "EnableApplicationForDebug"},
|
FunctionInfo{305, nullptr, "RefreshSendDataIdForDebug"},
|
||||||
{308, nullptr, "GetNextReceiveCountersForDebug"},
|
FunctionInfo{306, nullptr, "ReloadFwdbgSettingsForDebug"},
|
||||||
{309, nullptr, "ListApplicationInfoForDebug"},
|
FunctionInfo{307, nullptr, "EnableApplicationForDebug"},
|
||||||
{310, nullptr, "SetApplicationDataForDebug"},
|
FunctionInfo{308, nullptr, "GetNextReceiveCountersForDebug"},
|
||||||
{400, nullptr, "GetNetworkUserId"},
|
FunctionInfo{309, nullptr, "ListApplicationInfoForDebug"},
|
||||||
{401, nullptr, "DeleteNetworkUserId"},
|
FunctionInfo{310, nullptr, "SetApplicationDataForDebug"},
|
||||||
};
|
FunctionInfo{400, nullptr, "GetNetworkUserId"},
|
||||||
RegisterHandlers(functions);
|
FunctionInfo{401, nullptr, "DeleteNetworkUserId"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -164,16 +164,14 @@ public:
|
|||||||
using IssuerFn = std::function<Result(u64, ApplicationLaunchProperty, std::vector<u8>)>;
|
using IssuerFn = std::function<Result(u64, ApplicationLaunchProperty, std::vector<u8>)>;
|
||||||
|
|
||||||
explicit IRegistrar(Core::System& system_, IssuerFn&& issuer)
|
explicit IRegistrar(Core::System& system_, IssuerFn&& issuer)
|
||||||
: ServiceFramework{system_, "IRegistrar"}, issue_process_id{std::move(issuer)} {
|
: ServiceFramework{system_, "IRegistrar"}, issue_process_id{std::move(issuer)} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IRegistrar::Issue, "Issue"},
|
|
||||||
{1, &IRegistrar::SetApplicationLaunchProperty, "SetApplicationLaunchProperty"},
|
|
||||||
{2, &IRegistrar::SetApplicationControlProperty, "SetApplicationControlProperty"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IRegistrar::Issue, "Issue"},
|
||||||
|
FunctionInfo{1, &IRegistrar::SetApplicationLaunchProperty, "SetApplicationLaunchProperty"},
|
||||||
|
FunctionInfo{2, &IRegistrar::SetApplicationControlProperty, "SetApplicationControlProperty"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -248,9 +246,9 @@ ARP_W::ARP_W(Core::System& system_, ARPManager& manager_)
|
|||||||
: ServiceFramework{system_, "arp:w"}, manager{manager_} {
|
: ServiceFramework{system_, "arp:w"}, manager{manager_} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &ARP_W::AcquireRegistrar, "AcquireRegistrar"},
|
FunctionInfo{0, &ARP_W::AcquireRegistrar, "AcquireRegistrar"},
|
||||||
{1, &ARP_W::UnregisterApplicationInstance , "UnregisterApplicationInstance "},
|
FunctionInfo{1, &ARP_W::UnregisterApplicationInstance , "UnregisterApplicationInstance "},
|
||||||
{2, nullptr, "AcquireUpdater"},
|
FunctionInfo{2, nullptr, "AcquireUpdater"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -12,14 +12,12 @@ namespace Service::Glue {
|
|||||||
// This is nn::err::context::IContextRegistrar
|
// This is nn::err::context::IContextRegistrar
|
||||||
class IContextRegistrar : public ServiceFramework<IContextRegistrar> {
|
class IContextRegistrar : public ServiceFramework<IContextRegistrar> {
|
||||||
public:
|
public:
|
||||||
IContextRegistrar(Core::System& system_) : ServiceFramework{system_, "IContextRegistrar"} {
|
IContextRegistrar(Core::System& system_) : ServiceFramework{system_, "IContextRegistrar"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IContextRegistrar::Complete, "Complete"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IContextRegistrar::Complete, "Complete"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
~IContextRegistrar() override = default;
|
~IContextRegistrar() override = default;
|
||||||
|
|||||||
@@ -178,18 +178,15 @@ class INotificationSystemEventAccessor final
|
|||||||
: public ServiceFramework<INotificationSystemEventAccessor> {
|
: public ServiceFramework<INotificationSystemEventAccessor> {
|
||||||
public:
|
public:
|
||||||
explicit INotificationSystemEventAccessor(Core::System& system_)
|
explicit INotificationSystemEventAccessor(Core::System& system_)
|
||||||
: ServiceFramework{system_, "INotificationSystemEventAccessor"},
|
: ServiceFramework{system_, "INotificationSystemEventAccessor"}
|
||||||
service_context{system_, "INotificationSystemEventAccessor"} {
|
, service_context{system_, "INotificationSystemEventAccessor"} {
|
||||||
// clang-format off
|
notification_event = service_context.CreateEvent("INotificationSystemEventAccessor:NotificationEvent");
|
||||||
static const FunctionInfo functions[] = {
|
}
|
||||||
{0, D<&INotificationSystemEventAccessor::GetSystemEvent>, "GetSystemEvent"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
notification_event =
|
FunctionInfo{0, D<&INotificationSystemEventAccessor::GetSystemEvent>, "GetSystemEvent"}
|
||||||
service_context.CreateEvent("INotificationSystemEventAccessor:NotificationEvent");
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
~INotificationSystemEventAccessor() {
|
~INotificationSystemEventAccessor() {
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -31,25 +34,25 @@ StaticService::StaticService(Core::System& system_,
|
|||||||
m_time_zone_binary{time->m_time_zone_binary} {
|
m_time_zone_binary{time->m_time_zone_binary} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&StaticService::GetStandardUserSystemClock>, "GetStandardUserSystemClock"},
|
FunctionInfo{0, D<&StaticService::GetStandardUserSystemClock>, "GetStandardUserSystemClock"},
|
||||||
{1, D<&StaticService::GetStandardNetworkSystemClock>, "GetStandardNetworkSystemClock"},
|
FunctionInfo{1, D<&StaticService::GetStandardNetworkSystemClock>, "GetStandardNetworkSystemClock"},
|
||||||
{2, D<&StaticService::GetStandardSteadyClock>, "GetStandardSteadyClock"},
|
FunctionInfo{2, D<&StaticService::GetStandardSteadyClock>, "GetStandardSteadyClock"},
|
||||||
{3, D<&StaticService::GetTimeZoneService>, "GetTimeZoneService"},
|
FunctionInfo{3, D<&StaticService::GetTimeZoneService>, "GetTimeZoneService"},
|
||||||
{4, D<&StaticService::GetStandardLocalSystemClock>, "GetStandardLocalSystemClock"},
|
FunctionInfo{4, D<&StaticService::GetStandardLocalSystemClock>, "GetStandardLocalSystemClock"},
|
||||||
{5, D<&StaticService::GetEphemeralNetworkSystemClock>, "GetEphemeralNetworkSystemClock"},
|
FunctionInfo{5, D<&StaticService::GetEphemeralNetworkSystemClock>, "GetEphemeralNetworkSystemClock"},
|
||||||
{20, D<&StaticService::GetSharedMemoryNativeHandle>, "GetSharedMemoryNativeHandle"},
|
FunctionInfo{20, D<&StaticService::GetSharedMemoryNativeHandle>, "GetSharedMemoryNativeHandle"},
|
||||||
{50, D<&StaticService::SetStandardSteadyClockInternalOffset>, "SetStandardSteadyClockInternalOffset"},
|
FunctionInfo{50, D<&StaticService::SetStandardSteadyClockInternalOffset>, "SetStandardSteadyClockInternalOffset"},
|
||||||
{51, D<&StaticService::GetStandardSteadyClockRtcValue>, "GetStandardSteadyClockRtcValue"},
|
FunctionInfo{51, D<&StaticService::GetStandardSteadyClockRtcValue>, "GetStandardSteadyClockRtcValue"},
|
||||||
{100, D<&StaticService::IsStandardUserSystemClockAutomaticCorrectionEnabled>, "IsStandardUserSystemClockAutomaticCorrectionEnabled"},
|
FunctionInfo{100, D<&StaticService::IsStandardUserSystemClockAutomaticCorrectionEnabled>, "IsStandardUserSystemClockAutomaticCorrectionEnabled"},
|
||||||
{101, D<&StaticService::SetStandardUserSystemClockAutomaticCorrectionEnabled>, "SetStandardUserSystemClockAutomaticCorrectionEnabled"},
|
FunctionInfo{101, D<&StaticService::SetStandardUserSystemClockAutomaticCorrectionEnabled>, "SetStandardUserSystemClockAutomaticCorrectionEnabled"},
|
||||||
{102, D<&StaticService::GetStandardUserSystemClockInitialYear>, "GetStandardUserSystemClockInitialYear"},
|
FunctionInfo{102, D<&StaticService::GetStandardUserSystemClockInitialYear>, "GetStandardUserSystemClockInitialYear"},
|
||||||
{200, D<&StaticService::IsStandardNetworkSystemClockAccuracySufficient>, "IsStandardNetworkSystemClockAccuracySufficient"},
|
FunctionInfo{200, D<&StaticService::IsStandardNetworkSystemClockAccuracySufficient>, "IsStandardNetworkSystemClockAccuracySufficient"},
|
||||||
{201, D<&StaticService::GetStandardUserSystemClockAutomaticCorrectionUpdatedTime>, "GetStandardUserSystemClockAutomaticCorrectionUpdatedTime"},
|
FunctionInfo{201, D<&StaticService::GetStandardUserSystemClockAutomaticCorrectionUpdatedTime>, "GetStandardUserSystemClockAutomaticCorrectionUpdatedTime"},
|
||||||
{300, D<&StaticService::CalculateMonotonicSystemClockBaseTimePoint>, "CalculateMonotonicSystemClockBaseTimePoint"},
|
FunctionInfo{300, D<&StaticService::CalculateMonotonicSystemClockBaseTimePoint>, "CalculateMonotonicSystemClockBaseTimePoint"},
|
||||||
{400, D<&StaticService::GetClockSnapshot>, "GetClockSnapshot"},
|
FunctionInfo{400, D<&StaticService::GetClockSnapshot>, "GetClockSnapshot"},
|
||||||
{401, D<&StaticService::GetClockSnapshotFromSystemClockContext>, "GetClockSnapshotFromSystemClockContext"},
|
FunctionInfo{401, D<&StaticService::GetClockSnapshotFromSystemClockContext>, "GetClockSnapshotFromSystemClockContext"},
|
||||||
{500, D<&StaticService::CalculateStandardUserSystemClockDifferenceByUser>, "CalculateStandardUserSystemClockDifferenceByUser"},
|
FunctionInfo{500, D<&StaticService::CalculateStandardUserSystemClockDifferenceByUser>, "CalculateStandardUserSystemClockDifferenceByUser"},
|
||||||
{501, D<&StaticService::CalculateSpanBetween>, "CalculateSpanBetween"},
|
FunctionInfo{501, D<&StaticService::CalculateSpanBetween>, "CalculateSpanBetween"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ public:
|
|||||||
: ServiceFramework{system_, "gpio"}
|
: ServiceFramework{system_, "gpio"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Cmd0"},
|
FunctionInfo{0, nullptr, "Cmd0"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,32 +14,29 @@ namespace Service::GRC {
|
|||||||
|
|
||||||
class GRC final : public ServiceFramework<GRC> {
|
class GRC final : public ServiceFramework<GRC> {
|
||||||
public:
|
public:
|
||||||
explicit GRC(Core::System& system_) : ServiceFramework{system_, "grc:c"} {
|
explicit GRC(Core::System& system_) : ServiceFramework{system_, "grc:c"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{1, nullptr, "OpenContinuousRecorder"},
|
|
||||||
{2, nullptr, "OpenGameMovieTrimmer"},
|
|
||||||
{3, nullptr, "OpenOffscreenRecorder"},
|
|
||||||
{101, nullptr, "CreateMovieMaker"},
|
|
||||||
{9903, nullptr, "SetOffscreenRecordingMarker"}
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{1, nullptr, "OpenContinuousRecorder"},
|
||||||
|
FunctionInfo{2, nullptr, "OpenGameMovieTrimmer"},
|
||||||
|
FunctionInfo{3, nullptr, "OpenOffscreenRecorder"},
|
||||||
|
FunctionInfo{101, nullptr, "CreateMovieMaker"},
|
||||||
|
FunctionInfo{9903, nullptr, "SetOffscreenRecordingMarker"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class GRC_D final : public ServiceFramework<GRC_D> {
|
class GRC_D final : public ServiceFramework<GRC_D> {
|
||||||
public:
|
public:
|
||||||
explicit GRC_D(Core::System& system_) : ServiceFramework{system_, "grc:d"} {
|
explicit GRC_D(Core::System& system_) : ServiceFramework{system_, "grc:d"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{1, nullptr, "Initialize"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{2, nullptr, "Transfer"},
|
FunctionInfo{1, nullptr, "Initialize"},
|
||||||
{3, nullptr, "Cmd3"},
|
FunctionInfo{2, nullptr, "Transfer"},
|
||||||
};
|
FunctionInfo{3, nullptr, "Cmd3"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ IActiveVibrationDeviceList::IActiveVibrationDeviceList(Core::System& system_,
|
|||||||
: ServiceFramework{system_, "IActiveVibrationDeviceList"}, resource_manager(resource) {
|
: ServiceFramework{system_, "IActiveVibrationDeviceList"}, resource_manager(resource) {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, C<&IActiveVibrationDeviceList::ActivateVibrationDevice>, "ActivateVibrationDevice"},
|
FunctionInfo{0, C<&IActiveVibrationDeviceList::ActivateVibrationDevice>, "ActivateVibrationDevice"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -22,13 +22,12 @@ namespace Service::HID {
|
|||||||
class IHidTemporaryServer final : public ServiceFramework<IHidTemporaryServer> {
|
class IHidTemporaryServer final : public ServiceFramework<IHidTemporaryServer> {
|
||||||
public:
|
public:
|
||||||
explicit IHidTemporaryServer(Core::System& system_)
|
explicit IHidTemporaryServer(Core::System& system_)
|
||||||
: ServiceFramework{system_, "hid:tmp"} {
|
: ServiceFramework{system_, "hid:tmp"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "GetConsoleSixAxisSensorCalibrationValues"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, nullptr, "GetConsoleSixAxisSensorCalibrationValues"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
~IHidTemporaryServer() override = default;
|
~IHidTemporaryServer() override = default;
|
||||||
};
|
};
|
||||||
@@ -36,17 +35,16 @@ public:
|
|||||||
class AHID_CD final : public ServiceFramework<AHID_CD> {
|
class AHID_CD final : public ServiceFramework<AHID_CD> {
|
||||||
public:
|
public:
|
||||||
explicit AHID_CD(Core::System& system_)
|
explicit AHID_CD(Core::System& system_)
|
||||||
: ServiceFramework{system_, "ahid:cd"} {
|
: ServiceFramework{system_, "ahid:cd"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "AcquireDevice"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "ReleaseDevice"},
|
FunctionInfo{0, nullptr, "AcquireDevice"},
|
||||||
{2, nullptr, "GetCtrlSession"},
|
FunctionInfo{1, nullptr, "ReleaseDevice"},
|
||||||
{3, nullptr, "GetReadSession"},
|
FunctionInfo{2, nullptr, "GetCtrlSession"},
|
||||||
{4, nullptr, "GetWriteSession"},
|
FunctionInfo{3, nullptr, "GetReadSession"},
|
||||||
};
|
FunctionInfo{4, nullptr, "GetWriteSession"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
~AHID_CD() override = default;
|
~AHID_CD() override = default;
|
||||||
};
|
};
|
||||||
@@ -54,18 +52,17 @@ public:
|
|||||||
class AHID_HDR final : public ServiceFramework<AHID_HDR> {
|
class AHID_HDR final : public ServiceFramework<AHID_HDR> {
|
||||||
public:
|
public:
|
||||||
explicit AHID_HDR(Core::System& system_)
|
explicit AHID_HDR(Core::System& system_)
|
||||||
: ServiceFramework{system_, "ahid:hdr"} {
|
: ServiceFramework{system_, "ahid:hdr"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "GetDeviceEntries"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "GetDeviceList"},
|
FunctionInfo{0, nullptr, "GetDeviceEntries"},
|
||||||
{2, nullptr, "GetDeviceParameters"},
|
FunctionInfo{1, nullptr, "GetDeviceList"},
|
||||||
{3, nullptr, "AttachDevice"},
|
FunctionInfo{2, nullptr, "GetDeviceParameters"},
|
||||||
{4, nullptr, "DetachDevice"},
|
FunctionInfo{3, nullptr, "AttachDevice"},
|
||||||
{5, nullptr, "SetDeviceFilter"},
|
FunctionInfo{4, nullptr, "DetachDevice"},
|
||||||
};
|
FunctionInfo{5, nullptr, "SetDeviceFilter"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
~AHID_HDR() override = default;
|
~AHID_HDR() override = default;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -31,20 +31,20 @@ Hidbus::Hidbus(Core::System& system_)
|
|||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{1, C<&Hidbus::GetBusHandle>, "GetBusHandle"},
|
FunctionInfo{1, C<&Hidbus::GetBusHandle>, "GetBusHandle"},
|
||||||
{2, C<&Hidbus::IsExternalDeviceConnected>, "IsExternalDeviceConnected"},
|
FunctionInfo{2, C<&Hidbus::IsExternalDeviceConnected>, "IsExternalDeviceConnected"},
|
||||||
{3, C<&Hidbus::Initialize>, "Initialize"},
|
FunctionInfo{3, C<&Hidbus::Initialize>, "Initialize"},
|
||||||
{4, C<&Hidbus::Finalize>, "Finalize"},
|
FunctionInfo{4, C<&Hidbus::Finalize>, "Finalize"},
|
||||||
{5, C<&Hidbus::EnableExternalDevice>, "EnableExternalDevice"},
|
FunctionInfo{5, C<&Hidbus::EnableExternalDevice>, "EnableExternalDevice"},
|
||||||
{6, C<&Hidbus::GetExternalDeviceId>, "GetExternalDeviceId"},
|
FunctionInfo{6, C<&Hidbus::GetExternalDeviceId>, "GetExternalDeviceId"},
|
||||||
{7, C<&Hidbus::SendCommandAsync>, "SendCommandAsync"},
|
FunctionInfo{7, C<&Hidbus::SendCommandAsync>, "SendCommandAsync"},
|
||||||
{8, C<&Hidbus::GetSendCommandAsynceResult>, "GetSendCommandAsynceResult"},
|
FunctionInfo{8, C<&Hidbus::GetSendCommandAsynceResult>, "GetSendCommandAsynceResult"},
|
||||||
{9, C<&Hidbus::SetEventForSendCommandAsycResult>, "SetEventForSendCommandAsycResult"},
|
FunctionInfo{9, C<&Hidbus::SetEventForSendCommandAsycResult>, "SetEventForSendCommandAsycResult"},
|
||||||
{10, C<&Hidbus::GetSharedMemoryHandle>, "GetSharedMemoryHandle"},
|
FunctionInfo{10, C<&Hidbus::GetSharedMemoryHandle>, "GetSharedMemoryHandle"},
|
||||||
{11, C<&Hidbus::EnableJoyPollingReceiveMode>, "EnableJoyPollingReceiveMode"},
|
FunctionInfo{11, C<&Hidbus::EnableJoyPollingReceiveMode>, "EnableJoyPollingReceiveMode"},
|
||||||
{12, C<&Hidbus::DisableJoyPollingReceiveMode>, "DisableJoyPollingReceiveMode"},
|
FunctionInfo{12, C<&Hidbus::DisableJoyPollingReceiveMode>, "DisableJoyPollingReceiveMode"},
|
||||||
{13, nullptr, "GetPollingData"},
|
FunctionInfo{13, nullptr, "GetPollingData"},
|
||||||
{14, C<&Hidbus::SetStatusManagerType>, "SetStatusManagerType"},
|
FunctionInfo{14, C<&Hidbus::SetStatusManagerType>, "SetStatusManagerType"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -21,13 +21,13 @@ public:
|
|||||||
: ServiceFramework{system_, "I2CSession"}
|
: ServiceFramework{system_, "I2CSession"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "SendOld"},
|
FunctionInfo{0, nullptr, "SendOld"},
|
||||||
{1, nullptr, "ReceiveOld"},
|
FunctionInfo{1, nullptr, "ReceiveOld"},
|
||||||
{2, nullptr, "ExecuteCommandListOld"},
|
FunctionInfo{2, nullptr, "ExecuteCommandListOld"},
|
||||||
{10, C<&I2CSession::Send>, "Send"},
|
FunctionInfo{10, C<&I2CSession::Send>, "Send"},
|
||||||
{11, nullptr, "Receive"},
|
FunctionInfo{11, nullptr, "Receive"},
|
||||||
{12, nullptr, "ExecuteCommandList"},
|
FunctionInfo{12, nullptr, "ExecuteCommandList"},
|
||||||
{13, nullptr, "SetRetryPolicy"},
|
FunctionInfo{13, nullptr, "SetRetryPolicy"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -49,11 +49,11 @@ public:
|
|||||||
: ServiceFramework{system_, "i2c"}
|
: ServiceFramework{system_, "i2c"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, C<&I2C::OpenSessionForDev>, "OpenSessionForDev"},
|
FunctionInfo{0, C<&I2C::OpenSessionForDev>, "OpenSessionForDev"},
|
||||||
{1, C<&I2C::OpenSession>, "OpenSession"},
|
FunctionInfo{1, C<&I2C::OpenSession>, "OpenSession"},
|
||||||
{2, C<&I2C::HasDevice>, "HasDevice"},
|
FunctionInfo{2, C<&I2C::HasDevice>, "HasDevice"},
|
||||||
{3, C<&I2C::HasDeviceForDev>, "HasDeviceForDev"},
|
FunctionInfo{3, C<&I2C::HasDeviceForDev>, "HasDeviceForDev"},
|
||||||
{4, C<&I2C::OpenSession2>, "OpenSession2"},
|
FunctionInfo{4, C<&I2C::OpenSession2>, "OpenSession2"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,18 +37,6 @@ public:
|
|||||||
, user_ro{std::move(user_ro_)}
|
, user_ro{std::move(user_ro_)}
|
||||||
, context{process_->GetMemory()}
|
, context{process_->GetMemory()}
|
||||||
{
|
{
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, C<&IJitEnvironment::GenerateCode>, "GenerateCode"},
|
|
||||||
{1, C<&IJitEnvironment::Control>, "Control"},
|
|
||||||
{1000, C<&IJitEnvironment::LoadPlugin>, "LoadPlugin"},
|
|
||||||
{1001, C<&IJitEnvironment::GetCodeAddress>, "GetCodeAddress"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
|
|
||||||
// Identity map user code range into sysmodule context
|
// Identity map user code range into sysmodule context
|
||||||
configuration.user_rx_memory.size = user_rx.GetSize();
|
configuration.user_rx_memory.size = user_rx.GetSize();
|
||||||
configuration.user_rx_memory.offset = user_rx.GetAddress();
|
configuration.user_rx_memory.offset = user_rx.GetAddress();
|
||||||
@@ -59,6 +47,15 @@ public:
|
|||||||
configuration.sys_ro_memory = configuration.user_ro_memory;
|
configuration.sys_ro_memory = configuration.user_ro_memory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, C<&IJitEnvironment::GenerateCode>, "GenerateCode"},
|
||||||
|
FunctionInfo{1, C<&IJitEnvironment::Control>, "Control"},
|
||||||
|
FunctionInfo{1000, C<&IJitEnvironment::LoadPlugin>, "LoadPlugin"},
|
||||||
|
FunctionInfo{1001, C<&IJitEnvironment::GetCodeAddress>, "GetCodeAddress"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
~IJitEnvironment() {
|
~IJitEnvironment() {
|
||||||
user_rx.Finalize(system.Kernel());
|
user_rx.Finalize(system.Kernel());
|
||||||
user_ro.Finalize(system.Kernel());
|
user_ro.Finalize(system.Kernel());
|
||||||
@@ -258,14 +255,12 @@ private:
|
|||||||
|
|
||||||
class JITU final : public ServiceFramework<JITU> {
|
class JITU final : public ServiceFramework<JITU> {
|
||||||
public:
|
public:
|
||||||
explicit JITU(Core::System& system_) : ServiceFramework{system_, "jit:u"} {
|
explicit JITU(Core::System& system_) : ServiceFramework{system_, "jit:u"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, C<&JITU::CreateJitEnvironment>, "CreateJitEnvironment"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, C<&JITU::CreateJitEnvironment>, "CreateJitEnvironment"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -18,43 +18,41 @@ namespace Service::LBL {
|
|||||||
|
|
||||||
class LBL final : public ServiceFramework<LBL> {
|
class LBL final : public ServiceFramework<LBL> {
|
||||||
public:
|
public:
|
||||||
explicit LBL(Core::System& system_) : ServiceFramework{system_, "lbl"} {
|
explicit LBL(Core::System& system_) : ServiceFramework{system_, "lbl"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &LBL::SaveCurrentSetting, "SaveCurrentSetting"},
|
|
||||||
{1, &LBL::LoadCurrentSetting, "LoadCurrentSetting"},
|
|
||||||
{2, &LBL::SetCurrentBrightnessSetting, "SetCurrentBrightnessSetting"},
|
|
||||||
{3, &LBL::GetCurrentBrightnessSetting, "GetCurrentBrightnessSetting"},
|
|
||||||
{4, nullptr, "ApplyCurrentBrightnessSettingToBacklight"},
|
|
||||||
{5, nullptr, "GetBrightnessSettingAppliedToBacklight"},
|
|
||||||
{6, &LBL::SwitchBacklightOn, "SwitchBacklightOn"},
|
|
||||||
{7, &LBL::SwitchBacklightOff, "SwitchBacklightOff"},
|
|
||||||
{8, &LBL::GetBacklightSwitchStatus, "GetBacklightSwitchStatus"},
|
|
||||||
{9, &LBL::EnableDimming, "EnableDimming"},
|
|
||||||
{10, &LBL::DisableDimming, "DisableDimming"},
|
|
||||||
{11, &LBL::IsDimmingEnabled, "IsDimmingEnabled"},
|
|
||||||
{12, &LBL::EnableAutoBrightnessControl, "EnableAutoBrightnessControl"},
|
|
||||||
{13, &LBL::DisableAutoBrightnessControl, "DisableAutoBrightnessControl"},
|
|
||||||
{14, &LBL::IsAutoBrightnessControlEnabled, "IsAutoBrightnessControlEnabled"},
|
|
||||||
{15, &LBL::SetAmbientLightSensorValue, "SetAmbientLightSensorValue"},
|
|
||||||
{16, &LBL::GetAmbientLightSensorValue, "GetAmbientLightSensorValue"},
|
|
||||||
{17, &LBL::SetBrightnessReflectionDelayLevel, "SetBrightnessReflectionDelayLevel"},
|
|
||||||
{18, &LBL::GetBrightnessReflectionDelayLevel, "GetBrightnessReflectionDelayLevel"},
|
|
||||||
{19, &LBL::SetCurrentBrightnessMapping, "SetCurrentBrightnessMapping"},
|
|
||||||
{20, &LBL::GetCurrentBrightnessMapping, "GetCurrentBrightnessMapping"},
|
|
||||||
{21, &LBL::SetCurrentAmbientLightSensorMapping, "SetCurrentAmbientLightSensorMapping"},
|
|
||||||
{22, &LBL::GetCurrentAmbientLightSensorMapping, "GetCurrentAmbientLightSensorMapping"},
|
|
||||||
{23, &LBL::IsAmbientLightSensorAvailable, "IsAmbientLightSensorAvailable"},
|
|
||||||
{24, &LBL::SetCurrentBrightnessSettingForVrMode, "SetCurrentBrightnessSettingForVrMode"},
|
|
||||||
{25, &LBL::GetCurrentBrightnessSettingForVrMode, "GetCurrentBrightnessSettingForVrMode"},
|
|
||||||
{26, &LBL::EnableVrMode, "EnableVrMode"},
|
|
||||||
{27, &LBL::DisableVrMode, "DisableVrMode"},
|
|
||||||
{28, &LBL::IsVrModeEnabled, "IsVrModeEnabled"},
|
|
||||||
{29, &LBL::IsAutoBrightnessControlSupported, "IsAutoBrightnessControlSupported"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &LBL::SaveCurrentSetting, "SaveCurrentSetting"},
|
||||||
|
FunctionInfo{1, &LBL::LoadCurrentSetting, "LoadCurrentSetting"},
|
||||||
|
FunctionInfo{2, &LBL::SetCurrentBrightnessSetting, "SetCurrentBrightnessSetting"},
|
||||||
|
FunctionInfo{3, &LBL::GetCurrentBrightnessSetting, "GetCurrentBrightnessSetting"},
|
||||||
|
FunctionInfo{4, nullptr, "ApplyCurrentBrightnessSettingToBacklight"},
|
||||||
|
FunctionInfo{5, nullptr, "GetBrightnessSettingAppliedToBacklight"},
|
||||||
|
FunctionInfo{6, &LBL::SwitchBacklightOn, "SwitchBacklightOn"},
|
||||||
|
FunctionInfo{7, &LBL::SwitchBacklightOff, "SwitchBacklightOff"},
|
||||||
|
FunctionInfo{8, &LBL::GetBacklightSwitchStatus, "GetBacklightSwitchStatus"},
|
||||||
|
FunctionInfo{9, &LBL::EnableDimming, "EnableDimming"},
|
||||||
|
FunctionInfo{10, &LBL::DisableDimming, "DisableDimming"},
|
||||||
|
FunctionInfo{11, &LBL::IsDimmingEnabled, "IsDimmingEnabled"},
|
||||||
|
FunctionInfo{12, &LBL::EnableAutoBrightnessControl, "EnableAutoBrightnessControl"},
|
||||||
|
FunctionInfo{13, &LBL::DisableAutoBrightnessControl, "DisableAutoBrightnessControl"},
|
||||||
|
FunctionInfo{14, &LBL::IsAutoBrightnessControlEnabled, "IsAutoBrightnessControlEnabled"},
|
||||||
|
FunctionInfo{15, &LBL::SetAmbientLightSensorValue, "SetAmbientLightSensorValue"},
|
||||||
|
FunctionInfo{16, &LBL::GetAmbientLightSensorValue, "GetAmbientLightSensorValue"},
|
||||||
|
FunctionInfo{17, &LBL::SetBrightnessReflectionDelayLevel, "SetBrightnessReflectionDelayLevel"},
|
||||||
|
FunctionInfo{18, &LBL::GetBrightnessReflectionDelayLevel, "GetBrightnessReflectionDelayLevel"},
|
||||||
|
FunctionInfo{19, &LBL::SetCurrentBrightnessMapping, "SetCurrentBrightnessMapping"},
|
||||||
|
FunctionInfo{20, &LBL::GetCurrentBrightnessMapping, "GetCurrentBrightnessMapping"},
|
||||||
|
FunctionInfo{21, &LBL::SetCurrentAmbientLightSensorMapping, "SetCurrentAmbientLightSensorMapping"},
|
||||||
|
FunctionInfo{22, &LBL::GetCurrentAmbientLightSensorMapping, "GetCurrentAmbientLightSensorMapping"},
|
||||||
|
FunctionInfo{23, &LBL::IsAmbientLightSensorAvailable, "IsAmbientLightSensorAvailable"},
|
||||||
|
FunctionInfo{24, &LBL::SetCurrentBrightnessSettingForVrMode, "SetCurrentBrightnessSettingForVrMode"},
|
||||||
|
FunctionInfo{25, &LBL::GetCurrentBrightnessSettingForVrMode, "GetCurrentBrightnessSettingForVrMode"},
|
||||||
|
FunctionInfo{26, &LBL::EnableVrMode, "EnableVrMode"},
|
||||||
|
FunctionInfo{27, &LBL::DisableVrMode, "DisableVrMode"},
|
||||||
|
FunctionInfo{28, &LBL::IsVrModeEnabled, "IsVrModeEnabled"},
|
||||||
|
FunctionInfo{29, &LBL::IsAutoBrightnessControlSupported, "IsAutoBrightnessControlSupported"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -20,13 +20,12 @@ class IClientProcessMonitor final
|
|||||||
: public ServiceFramework<IClientProcessMonitor> {
|
: public ServiceFramework<IClientProcessMonitor> {
|
||||||
public:
|
public:
|
||||||
explicit IClientProcessMonitor(Core::System& system_)
|
explicit IClientProcessMonitor(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IClientProcessMonitor"} {
|
: ServiceFramework{system_, "IClientProcessMonitor"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, D<&IClientProcessMonitor::RegisterClient>, "RegisterClient"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, D<&IClientProcessMonitor::RegisterClient>, "RegisterClient"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
~IClientProcessMonitor() override = default;
|
~IClientProcessMonitor() override = default;
|
||||||
private:
|
private:
|
||||||
@@ -38,13 +37,12 @@ private:
|
|||||||
|
|
||||||
class IMonitorServiceCreator final : public ServiceFramework<IMonitorServiceCreator> {
|
class IMonitorServiceCreator final : public ServiceFramework<IMonitorServiceCreator> {
|
||||||
public:
|
public:
|
||||||
explicit IMonitorServiceCreator(Core::System& system_) : ServiceFramework{system_, "ldn:m"} {
|
explicit IMonitorServiceCreator(Core::System& system_) : ServiceFramework{system_, "ldn:m"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, C<&IMonitorServiceCreator::CreateMonitorService>, "CreateMonitorService"}
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, C<&IMonitorServiceCreator::CreateMonitorService>, "CreateMonitorService"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -58,15 +56,13 @@ private:
|
|||||||
|
|
||||||
class ISystemServiceCreator final : public ServiceFramework<ISystemServiceCreator> {
|
class ISystemServiceCreator final : public ServiceFramework<ISystemServiceCreator> {
|
||||||
public:
|
public:
|
||||||
explicit ISystemServiceCreator(Core::System& system_) : ServiceFramework{system_, "ldn:s"} {
|
explicit ISystemServiceCreator(Core::System& system_) : ServiceFramework{system_, "ldn:s"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, C<&ISystemServiceCreator::CreateSystemLocalCommunicationService>, "CreateSystemLocalCommunicationService"},
|
|
||||||
{1, C<&ISystemServiceCreator::CreateClientProcessMonitor>, "CreateClientProcessMonitor"} // 18.0.0+
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, C<&ISystemServiceCreator::CreateSystemLocalCommunicationService>, "CreateSystemLocalCommunicationService"},
|
||||||
|
FunctionInfo{1, C<&ISystemServiceCreator::CreateClientProcessMonitor>, "CreateClientProcessMonitor"} // 18.0.0+
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -89,15 +85,13 @@ private:
|
|||||||
|
|
||||||
class IUserServiceCreator final : public ServiceFramework<IUserServiceCreator> {
|
class IUserServiceCreator final : public ServiceFramework<IUserServiceCreator> {
|
||||||
public:
|
public:
|
||||||
explicit IUserServiceCreator(Core::System& system_) : ServiceFramework{system_, "ldn:u"} {
|
explicit IUserServiceCreator(Core::System& system_) : ServiceFramework{system_, "ldn:u"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, D<&IUserServiceCreator::CreateUserLocalCommunicationService>, "CreateUserLocalCommunicationService"},
|
|
||||||
{1, D<&IUserServiceCreator::CreateClientProcessMonitor>, "CreateClientProcessMonitor"} // 18.0.0+
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, D<&IUserServiceCreator::CreateUserLocalCommunicationService>, "CreateUserLocalCommunicationService"},
|
||||||
|
FunctionInfo{1, D<&IUserServiceCreator::CreateClientProcessMonitor>, "CreateClientProcessMonitor"} // 18.0.0+
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -121,15 +115,13 @@ private:
|
|||||||
class ISfServiceCreator final : public ServiceFramework<ISfServiceCreator> {
|
class ISfServiceCreator final : public ServiceFramework<ISfServiceCreator> {
|
||||||
public:
|
public:
|
||||||
explicit ISfServiceCreator(Core::System& system_, bool is_system_, const char* name_)
|
explicit ISfServiceCreator(Core::System& system_, bool is_system_, const char* name_)
|
||||||
: ServiceFramework{system_, name_}, is_system{is_system_} {
|
: ServiceFramework{system_, name_}, is_system{is_system_} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, C<&ISfServiceCreator::CreateNetworkService>, "CreateNetworkService"},
|
|
||||||
{8, C<&ISfServiceCreator::CreateNetworkServiceMonitor>, "CreateNetworkServiceMonitor"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, C<&ISfServiceCreator::CreateNetworkService>, "CreateNetworkService"},
|
||||||
|
FunctionInfo{8, C<&ISfServiceCreator::CreateNetworkServiceMonitor>, "CreateNetworkServiceMonitor"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -155,14 +147,12 @@ private:
|
|||||||
|
|
||||||
class ISfMonitorServiceCreator final : public ServiceFramework<ISfMonitorServiceCreator> {
|
class ISfMonitorServiceCreator final : public ServiceFramework<ISfMonitorServiceCreator> {
|
||||||
public:
|
public:
|
||||||
explicit ISfMonitorServiceCreator(Core::System& system_) : ServiceFramework{system_, "lp2p:m"} {
|
explicit ISfMonitorServiceCreator(Core::System& system_) : ServiceFramework{system_, "lp2p:m"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, C<&ISfMonitorServiceCreator::CreateMonitorService>, "CreateMonitorService"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, C<&ISfMonitorServiceCreator::CreateMonitorService>, "CreateMonitorService"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
@@ -11,9 +14,9 @@ ISfMonitorService::ISfMonitorService(Core::System& system_)
|
|||||||
: ServiceFramework{system_, "ISfMonitorService"} {
|
: ServiceFramework{system_, "ISfMonitorService"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, C<&ISfMonitorService::Initialize>, "Initialize"},
|
FunctionInfo{0, C<&ISfMonitorService::Initialize>, "Initialize"},
|
||||||
{288, C<&ISfMonitorService::GetGroupInfo>, "GetGroupInfo"},
|
FunctionInfo{288, C<&ISfMonitorService::GetGroupInfo>, "GetGroupInfo"},
|
||||||
{320, nullptr, "GetLinkLevel"},
|
FunctionInfo{320, nullptr, "GetLinkLevel"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
@@ -8,24 +11,24 @@ namespace Service::LDN {
|
|||||||
ISfService::ISfService(Core::System& system_) : ServiceFramework{system_, "ISfService"} {
|
ISfService::ISfService(Core::System& system_) : ServiceFramework{system_, "ISfService"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Initialize"},
|
FunctionInfo{0, nullptr, "Initialize"},
|
||||||
{256, nullptr, "AttachNetworkInterfaceStateChangeEvent"},
|
FunctionInfo{256, nullptr, "AttachNetworkInterfaceStateChangeEvent"},
|
||||||
{264, nullptr, "GetNetworkInterfaceLastError"},
|
FunctionInfo{264, nullptr, "GetNetworkInterfaceLastError"},
|
||||||
{272, nullptr, "GetRole"},
|
FunctionInfo{272, nullptr, "GetRole"},
|
||||||
{280, nullptr, "GetAdvertiseData"},
|
FunctionInfo{280, nullptr, "GetAdvertiseData"},
|
||||||
{288, nullptr, "GetGroupInfo"},
|
FunctionInfo{288, nullptr, "GetGroupInfo"},
|
||||||
{296, nullptr, "GetGroupInfo2"},
|
FunctionInfo{296, nullptr, "GetGroupInfo2"},
|
||||||
{304, nullptr, "GetGroupOwner"},
|
FunctionInfo{304, nullptr, "GetGroupOwner"},
|
||||||
{312, nullptr, "GetIpConfig"},
|
FunctionInfo{312, nullptr, "GetIpConfig"},
|
||||||
{320, nullptr, "GetLinkLevel"},
|
FunctionInfo{320, nullptr, "GetLinkLevel"},
|
||||||
{512, nullptr, "Scan"},
|
FunctionInfo{512, nullptr, "Scan"},
|
||||||
{768, nullptr, "CreateGroup"},
|
FunctionInfo{768, nullptr, "CreateGroup"},
|
||||||
{776, nullptr, "DestroyGroup"},
|
FunctionInfo{776, nullptr, "DestroyGroup"},
|
||||||
{784, nullptr, "SetAdvertiseData"},
|
FunctionInfo{784, nullptr, "SetAdvertiseData"},
|
||||||
{1536, nullptr, "SendToOtherGroup"},
|
FunctionInfo{1536, nullptr, "SendToOtherGroup"},
|
||||||
{1544, nullptr, "RecvFromOtherGroup"},
|
FunctionInfo{1544, nullptr, "RecvFromOtherGroup"},
|
||||||
{1552, nullptr, "AddAcceptableGroupId"},
|
FunctionInfo{1552, nullptr, "AddAcceptableGroupId"},
|
||||||
{1560, nullptr, "ClearAcceptableGroupId"},
|
FunctionInfo{1560, nullptr, "ClearAcceptableGroupId"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
@@ -11,19 +14,19 @@ ISfServiceMonitor::ISfServiceMonitor(Core::System& system_)
|
|||||||
: ServiceFramework{system_, "ISfServiceMonitor"} {
|
: ServiceFramework{system_, "ISfServiceMonitor"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, C<&ISfServiceMonitor::Initialize>, "Initialize"},
|
FunctionInfo{0, C<&ISfServiceMonitor::Initialize>, "Initialize"},
|
||||||
{256, nullptr, "AttachNetworkInterfaceStateChangeEvent"},
|
FunctionInfo{256, nullptr, "AttachNetworkInterfaceStateChangeEvent"},
|
||||||
{264, nullptr, "GetNetworkInterfaceLastError"},
|
FunctionInfo{264, nullptr, "GetNetworkInterfaceLastError"},
|
||||||
{272, nullptr, "GetRole"},
|
FunctionInfo{272, nullptr, "GetRole"},
|
||||||
{280, nullptr, "GetAdvertiseData"},
|
FunctionInfo{280, nullptr, "GetAdvertiseData"},
|
||||||
{281, nullptr, "GetAdvertiseData2"},
|
FunctionInfo{281, nullptr, "GetAdvertiseData2"},
|
||||||
{288, C<&ISfServiceMonitor::GetGroupInfo>, "GetGroupInfo"},
|
FunctionInfo{288, C<&ISfServiceMonitor::GetGroupInfo>, "GetGroupInfo"},
|
||||||
{296, nullptr, "GetGroupInfo2"},
|
FunctionInfo{296, nullptr, "GetGroupInfo2"},
|
||||||
{304, nullptr, "GetGroupOwner"},
|
FunctionInfo{304, nullptr, "GetGroupOwner"},
|
||||||
{312, nullptr, "GetIpConfig"},
|
FunctionInfo{312, nullptr, "GetIpConfig"},
|
||||||
{320, nullptr, "GetLinkLevel"},
|
FunctionInfo{320, nullptr, "GetLinkLevel"},
|
||||||
{328, nullptr, "AttachJoinEvent"},
|
FunctionInfo{328, nullptr, "AttachJoinEvent"},
|
||||||
{336, nullptr, "GetMembers"},
|
FunctionInfo{336, nullptr, "GetMembers"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
@@ -10,36 +13,36 @@ ISystemLocalCommunicationService::ISystemLocalCommunicationService(Core::System&
|
|||||||
: ServiceFramework{system_, "ISystemLocalCommunicationService"} {
|
: ServiceFramework{system_, "ISystemLocalCommunicationService"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "GetState"},
|
FunctionInfo{0, nullptr, "GetState"},
|
||||||
{1, nullptr, "GetNetworkInfo"},
|
FunctionInfo{1, nullptr, "GetNetworkInfo"},
|
||||||
{2, nullptr, "GetIpv4Address"},
|
FunctionInfo{2, nullptr, "GetIpv4Address"},
|
||||||
{3, nullptr, "GetDisconnectReason"},
|
FunctionInfo{3, nullptr, "GetDisconnectReason"},
|
||||||
{4, nullptr, "GetSecurityParameter"},
|
FunctionInfo{4, nullptr, "GetSecurityParameter"},
|
||||||
{5, nullptr, "GetNetworkConfig"},
|
FunctionInfo{5, nullptr, "GetNetworkConfig"},
|
||||||
{100, nullptr, "AttachStateChangeEvent"},
|
FunctionInfo{100, nullptr, "AttachStateChangeEvent"},
|
||||||
{101, nullptr, "GetNetworkInfoLatestUpdate"},
|
FunctionInfo{101, nullptr, "GetNetworkInfoLatestUpdate"},
|
||||||
{102, nullptr, "Scan"},
|
FunctionInfo{102, nullptr, "Scan"},
|
||||||
{103, nullptr, "ScanPrivate"},
|
FunctionInfo{103, nullptr, "ScanPrivate"},
|
||||||
{104, nullptr, "SetWirelessControllerRestriction"},
|
FunctionInfo{104, nullptr, "SetWirelessControllerRestriction"},
|
||||||
{200, nullptr, "OpenAccessPoint"},
|
FunctionInfo{200, nullptr, "OpenAccessPoint"},
|
||||||
{201, nullptr, "CloseAccessPoint"},
|
FunctionInfo{201, nullptr, "CloseAccessPoint"},
|
||||||
{202, nullptr, "CreateNetwork"},
|
FunctionInfo{202, nullptr, "CreateNetwork"},
|
||||||
{203, nullptr, "CreateNetworkPrivate"},
|
FunctionInfo{203, nullptr, "CreateNetworkPrivate"},
|
||||||
{204, nullptr, "DestroyNetwork"},
|
FunctionInfo{204, nullptr, "DestroyNetwork"},
|
||||||
{205, nullptr, "Reject"},
|
FunctionInfo{205, nullptr, "Reject"},
|
||||||
{206, nullptr, "SetAdvertiseData"},
|
FunctionInfo{206, nullptr, "SetAdvertiseData"},
|
||||||
{207, nullptr, "SetStationAcceptPolicy"},
|
FunctionInfo{207, nullptr, "SetStationAcceptPolicy"},
|
||||||
{208, nullptr, "AddAcceptFilterEntry"},
|
FunctionInfo{208, nullptr, "AddAcceptFilterEntry"},
|
||||||
{209, nullptr, "ClearAcceptFilter"},
|
FunctionInfo{209, nullptr, "ClearAcceptFilter"},
|
||||||
{300, nullptr, "OpenStation"},
|
FunctionInfo{300, nullptr, "OpenStation"},
|
||||||
{301, nullptr, "CloseStation"},
|
FunctionInfo{301, nullptr, "CloseStation"},
|
||||||
{302, nullptr, "Connect"},
|
FunctionInfo{302, nullptr, "Connect"},
|
||||||
{303, nullptr, "ConnectPrivate"},
|
FunctionInfo{303, nullptr, "ConnectPrivate"},
|
||||||
{304, nullptr, "Disconnect"},
|
FunctionInfo{304, nullptr, "Disconnect"},
|
||||||
{400, nullptr, "InitializeSystem"},
|
FunctionInfo{400, nullptr, "InitializeSystem"},
|
||||||
{401, nullptr, "FinalizeSystem"},
|
FunctionInfo{401, nullptr, "FinalizeSystem"},
|
||||||
{402, nullptr, "SetOperationMode"},
|
FunctionInfo{402, nullptr, "SetOperationMode"},
|
||||||
{403, C<&ISystemLocalCommunicationService::InitializeSystem2>, "InitializeSystem2"},
|
FunctionInfo{403, C<&ISystemLocalCommunicationService::InitializeSystem2>, "InitializeSystem2"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -27,36 +27,36 @@ IUserLocalCommunicationService::IUserLocalCommunicationService(Core::System& sys
|
|||||||
lan_discovery{} {
|
lan_discovery{} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&IUserLocalCommunicationService::GetState>, "GetState"},
|
FunctionInfo{0, D<&IUserLocalCommunicationService::GetState>, "GetState"},
|
||||||
{1, D<&IUserLocalCommunicationService::GetNetworkInfo>, "GetNetworkInfo"},
|
FunctionInfo{1, D<&IUserLocalCommunicationService::GetNetworkInfo>, "GetNetworkInfo"},
|
||||||
{2, D<&IUserLocalCommunicationService::GetIpv4Address>, "GetIpv4Address"},
|
FunctionInfo{2, D<&IUserLocalCommunicationService::GetIpv4Address>, "GetIpv4Address"},
|
||||||
{3, D<&IUserLocalCommunicationService::GetDisconnectReason>, "GetDisconnectReason"},
|
FunctionInfo{3, D<&IUserLocalCommunicationService::GetDisconnectReason>, "GetDisconnectReason"},
|
||||||
{4, D<&IUserLocalCommunicationService::GetSecurityParameter>, "GetSecurityParameter"},
|
FunctionInfo{4, D<&IUserLocalCommunicationService::GetSecurityParameter>, "GetSecurityParameter"},
|
||||||
{5, D<&IUserLocalCommunicationService::GetNetworkConfig>, "GetNetworkConfig"},
|
FunctionInfo{5, D<&IUserLocalCommunicationService::GetNetworkConfig>, "GetNetworkConfig"},
|
||||||
{100, D<&IUserLocalCommunicationService::AttachStateChangeEvent>, "AttachStateChangeEvent"},
|
FunctionInfo{100, D<&IUserLocalCommunicationService::AttachStateChangeEvent>, "AttachStateChangeEvent"},
|
||||||
{101, D<&IUserLocalCommunicationService::GetNetworkInfoLatestUpdate>, "GetNetworkInfoLatestUpdate"},
|
FunctionInfo{101, D<&IUserLocalCommunicationService::GetNetworkInfoLatestUpdate>, "GetNetworkInfoLatestUpdate"},
|
||||||
{102, D<&IUserLocalCommunicationService::Scan>, "Scan"},
|
FunctionInfo{102, D<&IUserLocalCommunicationService::Scan>, "Scan"},
|
||||||
{103, D<&IUserLocalCommunicationService::ScanPrivate>, "ScanPrivate"},
|
FunctionInfo{103, D<&IUserLocalCommunicationService::ScanPrivate>, "ScanPrivate"},
|
||||||
{104, D<&IUserLocalCommunicationService::SetWirelessControllerRestriction>, "SetWirelessControllerRestriction"},
|
FunctionInfo{104, D<&IUserLocalCommunicationService::SetWirelessControllerRestriction>, "SetWirelessControllerRestriction"},
|
||||||
{ 106, D<&IUserLocalCommunicationService::SetProtocol>, "SetProtocol" },
|
FunctionInfo{106, D<&IUserLocalCommunicationService::SetProtocol>, "SetProtocol" },
|
||||||
{200, D<&IUserLocalCommunicationService::OpenAccessPoint>, "OpenAccessPoint"},
|
FunctionInfo{200, D<&IUserLocalCommunicationService::OpenAccessPoint>, "OpenAccessPoint"},
|
||||||
{201, D<&IUserLocalCommunicationService::CloseAccessPoint>, "CloseAccessPoint"},
|
FunctionInfo{201, D<&IUserLocalCommunicationService::CloseAccessPoint>, "CloseAccessPoint"},
|
||||||
{202, D<&IUserLocalCommunicationService::CreateNetwork>, "CreateNetwork"},
|
FunctionInfo{202, D<&IUserLocalCommunicationService::CreateNetwork>, "CreateNetwork"},
|
||||||
{203, D<&IUserLocalCommunicationService::CreateNetworkPrivate>, "CreateNetworkPrivate"},
|
FunctionInfo{203, D<&IUserLocalCommunicationService::CreateNetworkPrivate>, "CreateNetworkPrivate"},
|
||||||
{204, D<&IUserLocalCommunicationService::DestroyNetwork>, "DestroyNetwork"},
|
FunctionInfo{204, D<&IUserLocalCommunicationService::DestroyNetwork>, "DestroyNetwork"},
|
||||||
{205, nullptr, "Reject"},
|
FunctionInfo{205, nullptr, "Reject"},
|
||||||
{206, D<&IUserLocalCommunicationService::SetAdvertiseData>, "SetAdvertiseData"},
|
FunctionInfo{206, D<&IUserLocalCommunicationService::SetAdvertiseData>, "SetAdvertiseData"},
|
||||||
{207, D<&IUserLocalCommunicationService::SetStationAcceptPolicy>, "SetStationAcceptPolicy"},
|
FunctionInfo{207, D<&IUserLocalCommunicationService::SetStationAcceptPolicy>, "SetStationAcceptPolicy"},
|
||||||
{208, D<&IUserLocalCommunicationService::AddAcceptFilterEntry>, "AddAcceptFilterEntry"},
|
FunctionInfo{208, D<&IUserLocalCommunicationService::AddAcceptFilterEntry>, "AddAcceptFilterEntry"},
|
||||||
{209, nullptr, "ClearAcceptFilter"},
|
FunctionInfo{209, nullptr, "ClearAcceptFilter"},
|
||||||
{300, D<&IUserLocalCommunicationService::OpenStation>, "OpenStation"},
|
FunctionInfo{300, D<&IUserLocalCommunicationService::OpenStation>, "OpenStation"},
|
||||||
{301, D<&IUserLocalCommunicationService::CloseStation>, "CloseStation"},
|
FunctionInfo{301, D<&IUserLocalCommunicationService::CloseStation>, "CloseStation"},
|
||||||
{302, D<&IUserLocalCommunicationService::Connect>, "Connect"},
|
FunctionInfo{302, D<&IUserLocalCommunicationService::Connect>, "Connect"},
|
||||||
{303, nullptr, "ConnectPrivate"},
|
FunctionInfo{303, nullptr, "ConnectPrivate"},
|
||||||
{304, D<&IUserLocalCommunicationService::Disconnect>, "Disconnect"},
|
FunctionInfo{304, D<&IUserLocalCommunicationService::Disconnect>, "Disconnect"},
|
||||||
{400, D<&IUserLocalCommunicationService::Initialize>, "Initialize"},
|
FunctionInfo{400, D<&IUserLocalCommunicationService::Initialize>, "Initialize"},
|
||||||
{401, D<&IUserLocalCommunicationService::Finalize>, "Finalize"},
|
FunctionInfo{401, D<&IUserLocalCommunicationService::Finalize>, "Finalize"},
|
||||||
{402, D<&IUserLocalCommunicationService::Initialize2>, "Initialize2"},
|
FunctionInfo{402, D<&IUserLocalCommunicationService::Initialize2>, "Initialize2"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -12,47 +12,41 @@ namespace Service::LDR {
|
|||||||
|
|
||||||
class DebugMonitor final : public ServiceFramework<DebugMonitor> {
|
class DebugMonitor final : public ServiceFramework<DebugMonitor> {
|
||||||
public:
|
public:
|
||||||
explicit DebugMonitor(Core::System& system_) : ServiceFramework{system_, "ldr:dmnt"} {
|
explicit DebugMonitor(Core::System& system_) : ServiceFramework{system_, "ldr:dmnt"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "SetProgramArgument"},
|
|
||||||
{1, nullptr, "FlushArguments"},
|
|
||||||
{2, nullptr, "GetProcessModuleInfo"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "SetProgramArgument"},
|
||||||
|
FunctionInfo{1, nullptr, "FlushArguments"},
|
||||||
|
FunctionInfo{2, nullptr, "GetProcessModuleInfo"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ProcessManager final : public ServiceFramework<ProcessManager> {
|
class ProcessManager final : public ServiceFramework<ProcessManager> {
|
||||||
public:
|
public:
|
||||||
explicit ProcessManager(Core::System& system_) : ServiceFramework{system_, "ldr:pm"} {
|
explicit ProcessManager(Core::System& system_) : ServiceFramework{system_, "ldr:pm"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "CreateProcess"},
|
|
||||||
{1, nullptr, "GetProgramInfo"},
|
|
||||||
{2, nullptr, "PinProgram"},
|
|
||||||
{3, nullptr, "UnpinProgram"},
|
|
||||||
{4, nullptr, "SetEnabledProgramVerification"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "CreateProcess"},
|
||||||
|
FunctionInfo{1, nullptr, "GetProgramInfo"},
|
||||||
|
FunctionInfo{2, nullptr, "PinProgram"},
|
||||||
|
FunctionInfo{3, nullptr, "UnpinProgram"},
|
||||||
|
FunctionInfo{4, nullptr, "SetEnabledProgramVerification"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class Shell final : public ServiceFramework<Shell> {
|
class Shell final : public ServiceFramework<Shell> {
|
||||||
public:
|
public:
|
||||||
explicit Shell(Core::System& system_) : ServiceFramework{system_, "ldr:shel"} {
|
explicit Shell(Core::System& system_) : ServiceFramework{system_, "ldr:shel"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "SetProgramArgument"},
|
|
||||||
{1, nullptr, "FlushArguments"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "SetProgramArgument"},
|
||||||
|
FunctionInfo{1, nullptr, "FlushArguments"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -89,10 +89,10 @@ class ILogger final : public ServiceFramework<ILogger> {
|
|||||||
public:
|
public:
|
||||||
explicit ILogger(Core::System& system_) : ServiceFramework{system_, "ILogger"} {
|
explicit ILogger(Core::System& system_) : ServiceFramework{system_, "ILogger"} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &ILogger::Log, "Log"},
|
FunctionInfo{0, &ILogger::Log, "Log"},
|
||||||
{1, &ILogger::SetDestination, "SetDestination"},
|
FunctionInfo{1, &ILogger::SetDestination, "SetDestination"},
|
||||||
{2, nullptr, "TransmitHashedLog"}, //20.0.0+
|
FunctionInfo{2, nullptr, "TransmitHashedLog"}, //20.0.0+
|
||||||
{3, nullptr, "DevNotify"}, //20.0.0+
|
FunctionInfo{3, nullptr, "DevNotify"}, //20.0.0+
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -337,14 +337,12 @@ private:
|
|||||||
|
|
||||||
class LM final : public ServiceFramework<LM> {
|
class LM final : public ServiceFramework<LM> {
|
||||||
public:
|
public:
|
||||||
explicit LM(Core::System& system_) : ServiceFramework{system_, "lm"} {
|
explicit LM(Core::System& system_) : ServiceFramework{system_, "lm"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &LM::OpenLogger, "OpenLogger"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &LM::OpenLogger, "OpenLogger"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -363,10 +361,10 @@ public:
|
|||||||
: ServiceFramework{system_, "lm:get"}
|
: ServiceFramework{system_, "lm:get"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "StartLogging"},
|
FunctionInfo{0, nullptr, "StartLogging"},
|
||||||
{1, nullptr, "StopLogging"},
|
FunctionInfo{1, nullptr, "StopLogging"},
|
||||||
{2, nullptr, "GetLog"},
|
FunctionInfo{2, nullptr, "GetLog"},
|
||||||
{100, nullptr, "CreateDevNotificationReceiver"},
|
FunctionInfo{100, nullptr, "CreateDevNotificationReceiver"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
@@ -14,49 +14,47 @@ namespace Service::Migration {
|
|||||||
|
|
||||||
class MIG_USR final : public ServiceFramework<MIG_USR> {
|
class MIG_USR final : public ServiceFramework<MIG_USR> {
|
||||||
public:
|
public:
|
||||||
explicit MIG_USR(Core::System& system_) : ServiceFramework{system_, "mig:usr"} {
|
explicit MIG_USR(Core::System& system_) : ServiceFramework{system_, "mig:usr"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "Unknown0"}, //19.0.0+
|
|
||||||
{1, nullptr, "Unknown1"}, //20.0.0+
|
|
||||||
{2, nullptr, "Unknown2"}, //20.0.0+
|
|
||||||
{10, nullptr, "TryGetLastMigrationInfo"},
|
|
||||||
{11, nullptr, "Unknown11"}, //20.0.0+
|
|
||||||
{100, nullptr, "CreateUserMigrationServer"}, //7.0.0+
|
|
||||||
{101, nullptr, "ResumeUserMigrationServer"}, //7.0.0+
|
|
||||||
{200, nullptr, "CreateUserMigrationClient"}, //7.0.0+
|
|
||||||
{201, nullptr, "ResumeUserMigrationClient"}, //7.0.0+
|
|
||||||
{1001, nullptr, "GetSaveDataMigrationPolicyInfoAsync"}, //8.0.0-20.5.0
|
|
||||||
{1010, nullptr, "TryGetLastSaveDataMigrationInfo"}, //7.0.0+
|
|
||||||
{1100, nullptr, "CreateSaveDataMigrationServer"}, //7.0.0-19.0.1
|
|
||||||
{1101, nullptr, "ResumeSaveDataMigrationServer"}, //7.0.0+
|
|
||||||
{1110, nullptr, "Unknown1101"}, //17.0.0+
|
|
||||||
{1200, nullptr, "CreateSaveDataMigrationClient"}, //7.0.0+
|
|
||||||
{1201, nullptr, "ResumeSaveDataMigrationClient"}, //7.0.0+
|
|
||||||
{2001, nullptr, "Unknown2001"}, //20.0.0+
|
|
||||||
{2010, nullptr, "Unknown2010"}, //20.0.0+
|
|
||||||
{2100, nullptr, "Unknown2100"}, //20.0.0+
|
|
||||||
{2110, nullptr, "Unknown2110"}, //20.0.0+
|
|
||||||
{2200, nullptr, "Unknown2200"}, //20.0.0+
|
|
||||||
{2210, nullptr, "Unknown2210"}, //20.0.0+
|
|
||||||
{2220, nullptr, "Unknown2220"}, //20.0.0+
|
|
||||||
{2230, nullptr, "Unknown2230"}, //20.0.0+
|
|
||||||
{2231, nullptr, "Unknown2231"}, //20.0.0+
|
|
||||||
{2232, nullptr, "Unknown2232"}, //20.0.0+
|
|
||||||
{2233, nullptr, "Unknown2233"}, //20.0.0+
|
|
||||||
{2234, nullptr, "Unknown2234"}, //20.0.0+
|
|
||||||
{2250, nullptr, "Unknown2250"}, //20.0.0+
|
|
||||||
{2260, nullptr, "Unknown2260"}, //20.0.0+
|
|
||||||
{2270, nullptr, "Unknown2270"}, //20.0.0+
|
|
||||||
{2280, nullptr, "Unknown2280"}, //20.0.0+
|
|
||||||
{2300, nullptr, "Unknown2300"}, //20.0.0+
|
|
||||||
{2310, nullptr, "Unknown2310"}, //20.0.0+
|
|
||||||
{2400, nullptr, "Unknown2400"}, //20.0.0+
|
|
||||||
{2420, nullptr, "Unknown2420"}, //20.0.0+
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "Unknown0"}, //19.0.0+
|
||||||
|
FunctionInfo{1, nullptr, "Unknown1"}, //20.0.0+
|
||||||
|
FunctionInfo{2, nullptr, "Unknown2"}, //20.0.0+
|
||||||
|
FunctionInfo{10, nullptr, "TryGetLastMigrationInfo"},
|
||||||
|
FunctionInfo{11, nullptr, "Unknown11"}, //20.0.0+
|
||||||
|
FunctionInfo{100, nullptr, "CreateUserMigrationServer"}, //7.0.0+
|
||||||
|
FunctionInfo{101, nullptr, "ResumeUserMigrationServer"}, //7.0.0+
|
||||||
|
FunctionInfo{200, nullptr, "CreateUserMigrationClient"}, //7.0.0+
|
||||||
|
FunctionInfo{201, nullptr, "ResumeUserMigrationClient"}, //7.0.0+
|
||||||
|
FunctionInfo{1001, nullptr, "GetSaveDataMigrationPolicyInfoAsync"}, //8.0.0-20.5.0
|
||||||
|
FunctionInfo{1010, nullptr, "TryGetLastSaveDataMigrationInfo"}, //7.0.0+
|
||||||
|
FunctionInfo{1100, nullptr, "CreateSaveDataMigrationServer"}, //7.0.0-19.0.1
|
||||||
|
FunctionInfo{1101, nullptr, "ResumeSaveDataMigrationServer"}, //7.0.0+
|
||||||
|
FunctionInfo{1110, nullptr, "Unknown1101"}, //17.0.0+
|
||||||
|
FunctionInfo{1200, nullptr, "CreateSaveDataMigrationClient"}, //7.0.0+
|
||||||
|
FunctionInfo{1201, nullptr, "ResumeSaveDataMigrationClient"}, //7.0.0+
|
||||||
|
FunctionInfo{2001, nullptr, "Unknown2001"}, //20.0.0+
|
||||||
|
FunctionInfo{2010, nullptr, "Unknown2010"}, //20.0.0+
|
||||||
|
FunctionInfo{2100, nullptr, "Unknown2100"}, //20.0.0+
|
||||||
|
FunctionInfo{2110, nullptr, "Unknown2110"}, //20.0.0+
|
||||||
|
FunctionInfo{2200, nullptr, "Unknown2200"}, //20.0.0+
|
||||||
|
FunctionInfo{2210, nullptr, "Unknown2210"}, //20.0.0+
|
||||||
|
FunctionInfo{2220, nullptr, "Unknown2220"}, //20.0.0+
|
||||||
|
FunctionInfo{2230, nullptr, "Unknown2230"}, //20.0.0+
|
||||||
|
FunctionInfo{2231, nullptr, "Unknown2231"}, //20.0.0+
|
||||||
|
FunctionInfo{2232, nullptr, "Unknown2232"}, //20.0.0+
|
||||||
|
FunctionInfo{2233, nullptr, "Unknown2233"}, //20.0.0+
|
||||||
|
FunctionInfo{2234, nullptr, "Unknown2234"}, //20.0.0+
|
||||||
|
FunctionInfo{2250, nullptr, "Unknown2250"}, //20.0.0+
|
||||||
|
FunctionInfo{2260, nullptr, "Unknown2260"}, //20.0.0+
|
||||||
|
FunctionInfo{2270, nullptr, "Unknown2270"}, //20.0.0+
|
||||||
|
FunctionInfo{2280, nullptr, "Unknown2280"}, //20.0.0+
|
||||||
|
FunctionInfo{2300, nullptr, "Unknown2300"}, //20.0.0+
|
||||||
|
FunctionInfo{2310, nullptr, "Unknown2310"}, //20.0.0+
|
||||||
|
FunctionInfo{2400, nullptr, "Unknown2400"}, //20.0.0+
|
||||||
|
FunctionInfo{2420, nullptr, "Unknown2420"} //20.0.0+
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -24,49 +24,46 @@ namespace Service::Mii {
|
|||||||
|
|
||||||
class IDatabaseService final : public ServiceFramework<IDatabaseService> {
|
class IDatabaseService final : public ServiceFramework<IDatabaseService> {
|
||||||
public:
|
public:
|
||||||
explicit IDatabaseService(Core::System& system_, std::shared_ptr<MiiManager> mii_manager,
|
explicit IDatabaseService(Core::System& system_, std::shared_ptr<MiiManager> mii_manager, bool is_system_)
|
||||||
bool is_system_)
|
: ServiceFramework{system_, "IDatabaseService"}
|
||||||
: ServiceFramework{system_, "IDatabaseService"}, manager{mii_manager}, is_system{
|
, manager{mii_manager}
|
||||||
is_system_} {
|
, is_system{is_system_} {
|
||||||
// clang-format off
|
m_set_sys = system.ServiceManager().GetService<Service::Set::ISystemSettingsServer>("set:sys", true);
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, D<&IDatabaseService::IsUpdated>, "IsUpdated"},
|
|
||||||
{1, D<&IDatabaseService::IsFullDatabase>, "IsFullDatabase"},
|
|
||||||
{2, D<&IDatabaseService::GetCount>, "GetCount"},
|
|
||||||
{3, D<&IDatabaseService::Get>, "Get"},
|
|
||||||
{4, D<&IDatabaseService::Get1>, "Get1"},
|
|
||||||
{5, D<&IDatabaseService::UpdateLatest>, "UpdateLatest"},
|
|
||||||
{6, D<&IDatabaseService::BuildRandom>, "BuildRandom"},
|
|
||||||
{7, D<&IDatabaseService::BuildDefault>, "BuildDefault"},
|
|
||||||
{8, D<&IDatabaseService::Get2>, "Get2"},
|
|
||||||
{9, D<&IDatabaseService::Get3>, "Get3"},
|
|
||||||
{10, D<&IDatabaseService::UpdateLatest1>, "UpdateLatest1"},
|
|
||||||
{11, D<&IDatabaseService::FindIndex>, "FindIndex"},
|
|
||||||
{12, D<&IDatabaseService::Move>, "Move"},
|
|
||||||
{13, D<&IDatabaseService::AddOrReplace>, "AddOrReplace"},
|
|
||||||
{14, D<&IDatabaseService::Delete>, "Delete"},
|
|
||||||
{15, D<&IDatabaseService::DestroyFile>, "DestroyFile"},
|
|
||||||
{16, D<&IDatabaseService::DeleteFile>, "DeleteFile"},
|
|
||||||
{17, D<&IDatabaseService::Format>, "Format"},
|
|
||||||
{18, nullptr, "Import"},
|
|
||||||
{19, nullptr, "Export"},
|
|
||||||
{20, D<&IDatabaseService::IsBrokenDatabaseWithClearFlag>, "IsBrokenDatabaseWithClearFlag"},
|
|
||||||
{21, D<&IDatabaseService::GetIndex>, "GetIndex"},
|
|
||||||
{22, D<&IDatabaseService::SetInterfaceVersion>, "SetInterfaceVersion"},
|
|
||||||
{23, D<&IDatabaseService::Convert>, "Convert"},
|
|
||||||
{24, D<&IDatabaseService::ConvertCoreDataToCharInfo>, "ConvertCoreDataToCharInfo"},
|
|
||||||
{25, D<&IDatabaseService::ConvertCharInfoToCoreData>, "ConvertCharInfoToCoreData"},
|
|
||||||
{26, D<&IDatabaseService::Append>, "Append"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
|
|
||||||
m_set_sys = system.ServiceManager().GetService<Service::Set::ISystemSettingsServer>(
|
|
||||||
"set:sys", true);
|
|
||||||
manager->Initialize(metadata);
|
manager->Initialize(metadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, D<&IDatabaseService::IsUpdated>, "IsUpdated"},
|
||||||
|
FunctionInfo{1, D<&IDatabaseService::IsFullDatabase>, "IsFullDatabase"},
|
||||||
|
FunctionInfo{2, D<&IDatabaseService::GetCount>, "GetCount"},
|
||||||
|
FunctionInfo{3, D<&IDatabaseService::Get>, "Get"},
|
||||||
|
FunctionInfo{4, D<&IDatabaseService::Get1>, "Get1"},
|
||||||
|
FunctionInfo{5, D<&IDatabaseService::UpdateLatest>, "UpdateLatest"},
|
||||||
|
FunctionInfo{6, D<&IDatabaseService::BuildRandom>, "BuildRandom"},
|
||||||
|
FunctionInfo{7, D<&IDatabaseService::BuildDefault>, "BuildDefault"},
|
||||||
|
FunctionInfo{8, D<&IDatabaseService::Get2>, "Get2"},
|
||||||
|
FunctionInfo{9, D<&IDatabaseService::Get3>, "Get3"},
|
||||||
|
FunctionInfo{10, D<&IDatabaseService::UpdateLatest1>, "UpdateLatest1"},
|
||||||
|
FunctionInfo{11, D<&IDatabaseService::FindIndex>, "FindIndex"},
|
||||||
|
FunctionInfo{12, D<&IDatabaseService::Move>, "Move"},
|
||||||
|
FunctionInfo{13, D<&IDatabaseService::AddOrReplace>, "AddOrReplace"},
|
||||||
|
FunctionInfo{14, D<&IDatabaseService::Delete>, "Delete"},
|
||||||
|
FunctionInfo{15, D<&IDatabaseService::DestroyFile>, "DestroyFile"},
|
||||||
|
FunctionInfo{16, D<&IDatabaseService::DeleteFile>, "DeleteFile"},
|
||||||
|
FunctionInfo{17, D<&IDatabaseService::Format>, "Format"},
|
||||||
|
FunctionInfo{18, nullptr, "Import"},
|
||||||
|
FunctionInfo{19, nullptr, "Export"},
|
||||||
|
FunctionInfo{20, D<&IDatabaseService::IsBrokenDatabaseWithClearFlag>, "IsBrokenDatabaseWithClearFlag"},
|
||||||
|
FunctionInfo{21, D<&IDatabaseService::GetIndex>, "GetIndex"},
|
||||||
|
FunctionInfo{22, D<&IDatabaseService::SetInterfaceVersion>, "SetInterfaceVersion"},
|
||||||
|
FunctionInfo{23, D<&IDatabaseService::Convert>, "Convert"},
|
||||||
|
FunctionInfo{24, D<&IDatabaseService::ConvertCoreDataToCharInfo>, "ConvertCoreDataToCharInfo"},
|
||||||
|
FunctionInfo{25, D<&IDatabaseService::ConvertCharInfoToCoreData>, "ConvertCharInfoToCoreData"},
|
||||||
|
FunctionInfo{26, D<&IDatabaseService::Append>, "Append"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Result IsUpdated(Out<bool> out_is_updated, SourceFlag source_flag) {
|
Result IsUpdated(Out<bool> out_is_updated, SourceFlag source_flag) {
|
||||||
LOG_DEBUG(Service_Mii, "called with source_flag={}", source_flag);
|
LOG_DEBUG(Service_Mii, "called with source_flag={}", source_flag);
|
||||||
@@ -324,27 +321,25 @@ std::shared_ptr<MiiManager> IStaticService::GetMiiManager() {
|
|||||||
|
|
||||||
class IImageDatabaseService final : public ServiceFramework<IImageDatabaseService> {
|
class IImageDatabaseService final : public ServiceFramework<IImageDatabaseService> {
|
||||||
public:
|
public:
|
||||||
explicit IImageDatabaseService(Core::System& system_) : ServiceFramework{system_, "miiimg"} {
|
explicit IImageDatabaseService(Core::System& system_) : ServiceFramework{system_, "miiimg"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, D<&IImageDatabaseService::Initialize>, "Initialize"},
|
|
||||||
{10, nullptr, "Reload"},
|
|
||||||
{11, D<&IImageDatabaseService::GetCount>, "GetCount"},
|
|
||||||
{12, nullptr, "IsEmpty"},
|
|
||||||
{13, nullptr, "IsFull"},
|
|
||||||
{14, nullptr, "GetAttribute"},
|
|
||||||
{15, nullptr, "LoadImage"},
|
|
||||||
{16, nullptr, "AddOrUpdateImage"},
|
|
||||||
{17, nullptr, "DeleteImages"},
|
|
||||||
{100, nullptr, "DeleteFile"},
|
|
||||||
{101, nullptr, "DestroyFile"},
|
|
||||||
{102, nullptr, "ImportFile"},
|
|
||||||
{103, nullptr, "ExportFile"},
|
|
||||||
{104, nullptr, "ForceInitialize"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, D<&IImageDatabaseService::Initialize>, "Initialize"},
|
||||||
|
FunctionInfo{10, nullptr, "Reload"},
|
||||||
|
FunctionInfo{11, D<&IImageDatabaseService::GetCount>, "GetCount"},
|
||||||
|
FunctionInfo{12, nullptr, "IsEmpty"},
|
||||||
|
FunctionInfo{13, nullptr, "IsFull"},
|
||||||
|
FunctionInfo{14, nullptr, "GetAttribute"},
|
||||||
|
FunctionInfo{15, nullptr, "LoadImage"},
|
||||||
|
FunctionInfo{16, nullptr, "AddOrUpdateImage"},
|
||||||
|
FunctionInfo{17, nullptr, "DeleteImages"},
|
||||||
|
FunctionInfo{100, nullptr, "DeleteFile"},
|
||||||
|
FunctionInfo{101, nullptr, "DestroyFile"},
|
||||||
|
FunctionInfo{102, nullptr, "ImportFile"},
|
||||||
|
FunctionInfo{103, nullptr, "ExportFile"},
|
||||||
|
FunctionInfo{104, nullptr, "ForceInitialize"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -49,21 +49,19 @@ public:
|
|||||||
|
|
||||||
class MM_U final : public ServiceFramework<MM_U> {
|
class MM_U final : public ServiceFramework<MM_U> {
|
||||||
public:
|
public:
|
||||||
explicit MM_U(Core::System& system_) : ServiceFramework{system_, "mm:u"} {
|
explicit MM_U(Core::System& system_) : ServiceFramework{system_, "mm:u"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &MM_U::InitializeOld, "InitializeOld"},
|
|
||||||
{1, &MM_U::FinalizeOld, "FinalizeOld"},
|
|
||||||
{2, &MM_U::SetAndWaitOld, "SetAndWaitOld"},
|
|
||||||
{3, &MM_U::GetOld, "GetOld"},
|
|
||||||
{4, &MM_U::Initialize, "Initialize"},
|
|
||||||
{5, &MM_U::Finalize, "Finalize"},
|
|
||||||
{6, &MM_U::SetAndWait, "SetAndWait"},
|
|
||||||
{7, &MM_U::Get, "Get"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &MM_U::InitializeOld, "InitializeOld"},
|
||||||
|
FunctionInfo{1, &MM_U::FinalizeOld, "FinalizeOld"},
|
||||||
|
FunctionInfo{2, &MM_U::SetAndWaitOld, "SetAndWaitOld"},
|
||||||
|
FunctionInfo{3, &MM_U::GetOld, "GetOld"},
|
||||||
|
FunctionInfo{4, &MM_U::Initialize, "Initialize"},
|
||||||
|
FunctionInfo{5, &MM_U::Finalize, "Finalize"},
|
||||||
|
FunctionInfo{6, &MM_U::SetAndWait, "SetAndWait"},
|
||||||
|
FunctionInfo{7, &MM_U::Get, "Get"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -14,15 +14,13 @@ namespace Service::MNPP {
|
|||||||
|
|
||||||
class MNPP_APP final : public ServiceFramework<MNPP_APP> {
|
class MNPP_APP final : public ServiceFramework<MNPP_APP> {
|
||||||
public:
|
public:
|
||||||
explicit MNPP_APP(Core::System& system_) : ServiceFramework{system_, "mnpp:app"} {
|
explicit MNPP_APP(Core::System& system_) : ServiceFramework{system_, "mnpp:app"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &MNPP_APP::Cmd0, "Cmd0"},
|
|
||||||
{1, &MNPP_APP::Cmd1, "Cmd1"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &MNPP_APP::Cmd0, "Cmd0"},
|
||||||
|
FunctionInfo{1, &MNPP_APP::Cmd1, "Cmd1"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -43,34 +41,32 @@ private:
|
|||||||
|
|
||||||
class MNPP_SYS final : public ServiceFramework<MNPP_SYS> {
|
class MNPP_SYS final : public ServiceFramework<MNPP_SYS> {
|
||||||
public:
|
public:
|
||||||
explicit MNPP_SYS(Core::System& system_) : ServiceFramework{system_, "mnpp:sys"} {
|
explicit MNPP_SYS(Core::System& system_) : ServiceFramework{system_, "mnpp:sys"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "Cmd0"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{10, nullptr, "Cmd10"},
|
FunctionInfo{0, nullptr, "Cmd0"},
|
||||||
{100, nullptr, "Cmd100"},
|
FunctionInfo{10, nullptr, "Cmd10"},
|
||||||
{200, nullptr, "Cmd200"},
|
FunctionInfo{100, nullptr, "Cmd100"},
|
||||||
{300, nullptr, "Cmd300"},
|
FunctionInfo{200, nullptr, "Cmd200"},
|
||||||
{400, nullptr, "Cmd400"},
|
FunctionInfo{300, nullptr, "Cmd300"},
|
||||||
};
|
FunctionInfo{400, nullptr, "Cmd400"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class MNPP_WEB final : public ServiceFramework<MNPP_WEB> {
|
class MNPP_WEB final : public ServiceFramework<MNPP_WEB> {
|
||||||
public:
|
public:
|
||||||
explicit MNPP_WEB(Core::System& system_) : ServiceFramework{system_, "mnpp:web"} {
|
explicit MNPP_WEB(Core::System& system_) : ServiceFramework{system_, "mnpp:web"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "Cmd0"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "Cmd1"},
|
FunctionInfo{0, nullptr, "Cmd0"},
|
||||||
{10, nullptr, "Cmd10"},
|
FunctionInfo{1, nullptr, "Cmd1"},
|
||||||
{20, nullptr, "Cmd20"},
|
FunctionInfo{10, nullptr, "Cmd10"},
|
||||||
{100, nullptr, "Cmd100"},
|
FunctionInfo{20, nullptr, "Cmd20"},
|
||||||
};
|
FunctionInfo{100, nullptr, "Cmd100"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -24,33 +24,31 @@ namespace Service::NCM {
|
|||||||
class ILocationResolver final : public ServiceFramework<ILocationResolver> {
|
class ILocationResolver final : public ServiceFramework<ILocationResolver> {
|
||||||
public:
|
public:
|
||||||
explicit ILocationResolver(Core::System& system_, FileSys::StorageId id)
|
explicit ILocationResolver(Core::System& system_, FileSys::StorageId id)
|
||||||
: ServiceFramework{system_, "ILocationResolver"}, storage{id} {
|
: ServiceFramework{system_, "ILocationResolver"}, storage{id} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "ResolveProgramPath"},
|
|
||||||
{1, nullptr, "RedirectProgramPath"},
|
|
||||||
{2, nullptr, "ResolveApplicationControlPath"},
|
|
||||||
{3, nullptr, "ResolveApplicationHtmlDocumentPath"},
|
|
||||||
{4, nullptr, "ResolveDataPath"},
|
|
||||||
{5, nullptr, "RedirectApplicationControlPath"},
|
|
||||||
{6, nullptr, "RedirectApplicationHtmlDocumentPath"},
|
|
||||||
{7, nullptr, "ResolveApplicationLegalInformationPath"},
|
|
||||||
{8, nullptr, "RedirectApplicationLegalInformationPath"},
|
|
||||||
{9, nullptr, "Refresh"},
|
|
||||||
{10, nullptr, "RedirectApplicationProgramPath"},
|
|
||||||
{11, nullptr, "ClearApplicationRedirection"},
|
|
||||||
{12, nullptr, "EraseProgramRedirection"},
|
|
||||||
{13, nullptr, "EraseApplicationControlRedirection"},
|
|
||||||
{14, nullptr, "EraseApplicationHtmlDocumentRedirection"},
|
|
||||||
{15, nullptr, "EraseApplicationLegalInformationRedirection"},
|
|
||||||
{16, nullptr, "ResolveProgramPathForDebug"},
|
|
||||||
{17, nullptr, "RedirectProgramPathForDebug"},
|
|
||||||
{18, nullptr, "RedirectApplicationProgramPathForDebug"},
|
|
||||||
{19, nullptr, "EraseProgramRedirectionForDebug"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "ResolveProgramPath"},
|
||||||
|
FunctionInfo{1, nullptr, "RedirectProgramPath"},
|
||||||
|
FunctionInfo{2, nullptr, "ResolveApplicationControlPath"},
|
||||||
|
FunctionInfo{3, nullptr, "ResolveApplicationHtmlDocumentPath"},
|
||||||
|
FunctionInfo{4, nullptr, "ResolveDataPath"},
|
||||||
|
FunctionInfo{5, nullptr, "RedirectApplicationControlPath"},
|
||||||
|
FunctionInfo{6, nullptr, "RedirectApplicationHtmlDocumentPath"},
|
||||||
|
FunctionInfo{7, nullptr, "ResolveApplicationLegalInformationPath"},
|
||||||
|
FunctionInfo{8, nullptr, "RedirectApplicationLegalInformationPath"},
|
||||||
|
FunctionInfo{9, nullptr, "Refresh"},
|
||||||
|
FunctionInfo{10, nullptr, "RedirectApplicationProgramPath"},
|
||||||
|
FunctionInfo{11, nullptr, "ClearApplicationRedirection"},
|
||||||
|
FunctionInfo{12, nullptr, "EraseProgramRedirection"},
|
||||||
|
FunctionInfo{13, nullptr, "EraseApplicationControlRedirection"},
|
||||||
|
FunctionInfo{14, nullptr, "EraseApplicationHtmlDocumentRedirection"},
|
||||||
|
FunctionInfo{15, nullptr, "EraseApplicationLegalInformationRedirection"},
|
||||||
|
FunctionInfo{16, nullptr, "ResolveProgramPathForDebug"},
|
||||||
|
FunctionInfo{17, nullptr, "RedirectProgramPathForDebug"},
|
||||||
|
FunctionInfo{18, nullptr, "RedirectApplicationProgramPathForDebug"},
|
||||||
|
FunctionInfo{19, nullptr, "EraseProgramRedirectionForDebug"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -60,60 +58,54 @@ private:
|
|||||||
class IRegisteredLocationResolver final : public ServiceFramework<IRegisteredLocationResolver> {
|
class IRegisteredLocationResolver final : public ServiceFramework<IRegisteredLocationResolver> {
|
||||||
public:
|
public:
|
||||||
explicit IRegisteredLocationResolver(Core::System& system_)
|
explicit IRegisteredLocationResolver(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IRegisteredLocationResolver"} {
|
: ServiceFramework{system_, "IRegisteredLocationResolver"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "ResolveProgramPath"},
|
|
||||||
{1, nullptr, "RegisterProgramPath"},
|
|
||||||
{2, nullptr, "UnregisterProgramPath"},
|
|
||||||
{3, nullptr, "RedirectProgramPath"},
|
|
||||||
{4, nullptr, "ResolveHtmlDocumentPath"},
|
|
||||||
{5, nullptr, "RegisterHtmlDocumentPath"},
|
|
||||||
{6, nullptr, "UnregisterHtmlDocumentPath"},
|
|
||||||
{7, nullptr, "RedirectHtmlDocumentPath"},
|
|
||||||
{8, nullptr, "Refresh"},
|
|
||||||
{9, nullptr, "RefreshExcluding"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "ResolveProgramPath"},
|
||||||
|
FunctionInfo{1, nullptr, "RegisterProgramPath"},
|
||||||
|
FunctionInfo{2, nullptr, "UnregisterProgramPath"},
|
||||||
|
FunctionInfo{3, nullptr, "RedirectProgramPath"},
|
||||||
|
FunctionInfo{4, nullptr, "ResolveHtmlDocumentPath"},
|
||||||
|
FunctionInfo{5, nullptr, "RegisterHtmlDocumentPath"},
|
||||||
|
FunctionInfo{6, nullptr, "UnregisterHtmlDocumentPath"},
|
||||||
|
FunctionInfo{7, nullptr, "RedirectHtmlDocumentPath"},
|
||||||
|
FunctionInfo{8, nullptr, "Refresh"},
|
||||||
|
FunctionInfo{9, nullptr, "RefreshExcluding"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IAddOnContentLocationResolver final : public ServiceFramework<IAddOnContentLocationResolver> {
|
class IAddOnContentLocationResolver final : public ServiceFramework<IAddOnContentLocationResolver> {
|
||||||
public:
|
public:
|
||||||
explicit IAddOnContentLocationResolver(Core::System& system_)
|
explicit IAddOnContentLocationResolver(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IAddOnContentLocationResolver"} {
|
: ServiceFramework{system_, "IAddOnContentLocationResolver"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "ResolveAddOnContentPath"},
|
|
||||||
{1, nullptr, "RegisterAddOnContentStorage"},
|
|
||||||
{2, nullptr, "UnregisterAllAddOnContentPath"},
|
|
||||||
{3, nullptr, "RefreshApplicationAddOnContent"},
|
|
||||||
{4, nullptr, "UnregisterApplicationAddOnContent"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "ResolveAddOnContentPath"},
|
||||||
|
FunctionInfo{1, nullptr, "RegisterAddOnContentStorage"},
|
||||||
|
FunctionInfo{2, nullptr, "UnregisterAllAddOnContentPath"},
|
||||||
|
FunctionInfo{3, nullptr, "RefreshApplicationAddOnContent"},
|
||||||
|
FunctionInfo{4, nullptr, "UnregisterApplicationAddOnContent"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IContentStorage final : public ServiceFramework<IContentStorage> {
|
class IContentStorage final : public ServiceFramework<IContentStorage> {
|
||||||
public:
|
public:
|
||||||
explicit IContentStorage(Core::System& system_, FileSys::StorageId id)
|
explicit IContentStorage(Core::System& system_, FileSys::StorageId id)
|
||||||
: ServiceFramework{system_, "IContentStorage"}, storage{id} {
|
: ServiceFramework{system_, "IContentStorage"}, storage{id} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IContentStorage::GeneratePlaceHolderId, "GeneratePlaceHolderId"},
|
|
||||||
{1, &IContentStorage::CreatePlaceHolder, "CreatePlaceHolder"},
|
|
||||||
{2, &IContentStorage::DeletePlaceHolder, "DeletePlaceHolder"},
|
|
||||||
{4, &IContentStorage::WritePlaceHolder, "WritePlaceHolder"},
|
|
||||||
{5, &IContentStorage::Register, "Register"},
|
|
||||||
{6, &IContentStorage::Delete, "Delete"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IContentStorage::GeneratePlaceHolderId, "GeneratePlaceHolderId"},
|
||||||
|
FunctionInfo{1, &IContentStorage::CreatePlaceHolder, "CreatePlaceHolder"},
|
||||||
|
FunctionInfo{2, &IContentStorage::DeletePlaceHolder, "DeletePlaceHolder"},
|
||||||
|
FunctionInfo{4, &IContentStorage::WritePlaceHolder, "WritePlaceHolder"},
|
||||||
|
FunctionInfo{5, &IContentStorage::Register, "Register"},
|
||||||
|
FunctionInfo{6, &IContentStorage::Delete, "Delete"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -258,17 +250,15 @@ private:
|
|||||||
class IContentMetaDatabase final : public ServiceFramework<IContentMetaDatabase> {
|
class IContentMetaDatabase final : public ServiceFramework<IContentMetaDatabase> {
|
||||||
public:
|
public:
|
||||||
explicit IContentMetaDatabase(Core::System& system_, FileSys::StorageId id)
|
explicit IContentMetaDatabase(Core::System& system_, FileSys::StorageId id)
|
||||||
: ServiceFramework{system_, "IContentMetaDatabase"}, storage{id} {
|
: ServiceFramework{system_, "IContentMetaDatabase"}, storage{id} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IContentMetaDatabase::Set, "Set"},
|
|
||||||
{2, &IContentMetaDatabase::Remove, "Remove"},
|
|
||||||
{8, &IContentMetaDatabase::Has, "Has"},
|
|
||||||
{15, &IContentMetaDatabase::Commit, "Commit"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IContentMetaDatabase::Set, "Set"},
|
||||||
|
FunctionInfo{2, &IContentMetaDatabase::Remove, "Remove"},
|
||||||
|
FunctionInfo{8, &IContentMetaDatabase::Has, "Has"},
|
||||||
|
FunctionInfo{15, &IContentMetaDatabase::Commit, "Commit"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -362,45 +352,41 @@ private:
|
|||||||
|
|
||||||
class LR final : public ServiceFramework<LR> {
|
class LR final : public ServiceFramework<LR> {
|
||||||
public:
|
public:
|
||||||
explicit LR(Core::System& system_) : ServiceFramework{system_, "lr"} {
|
explicit LR(Core::System& system_) : ServiceFramework{system_, "lr"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "OpenLocationResolver"},
|
|
||||||
{1, nullptr, "OpenRegisteredLocationResolver"},
|
|
||||||
{2, nullptr, "RefreshLocationResolver"},
|
|
||||||
{3, nullptr, "OpenAddOnContentLocationResolver"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "OpenLocationResolver"},
|
||||||
|
FunctionInfo{1, nullptr, "OpenRegisteredLocationResolver"},
|
||||||
|
FunctionInfo{2, nullptr, "RefreshLocationResolver"},
|
||||||
|
FunctionInfo{3, nullptr, "OpenAddOnContentLocationResolver"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class NCM final : public ServiceFramework<NCM> {
|
class NCM final : public ServiceFramework<NCM> {
|
||||||
public:
|
public:
|
||||||
explicit NCM(Core::System& system_) : ServiceFramework{system_, "ncm"} {
|
explicit NCM(Core::System& system_) : ServiceFramework{system_, "ncm"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "CreateContentStorage"},
|
|
||||||
{1, nullptr, "CreateContentMetaDatabase"},
|
|
||||||
{2, nullptr, "VerifyContentStorage"},
|
|
||||||
{3, nullptr, "VerifyContentMetaDatabase"},
|
|
||||||
{4, &NCM::OpenContentStorage, "OpenContentStorage"},
|
|
||||||
{5, &NCM::OpenContentMetaDatabase, "OpenContentMetaDatabase"},
|
|
||||||
{6, nullptr, "CloseContentStorageForcibly"},
|
|
||||||
{7, nullptr, "CloseContentMetaDatabaseForcibly"},
|
|
||||||
{8, nullptr, "CleanupContentMetaDatabase"},
|
|
||||||
{9, nullptr, "ActivateContentStorage"},
|
|
||||||
{10, nullptr, "InactivateContentStorage"},
|
|
||||||
{11, nullptr, "ActivateContentMetaDatabase"},
|
|
||||||
{12, nullptr, "InactivateContentMetaDatabase"},
|
|
||||||
{13, nullptr, "InvalidateRightsIdCache"},
|
|
||||||
{14, nullptr, "GetMemoryReport"},
|
|
||||||
{15, nullptr, "ActivateFsContentStorage"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "CreateContentStorage"},
|
||||||
|
FunctionInfo{1, nullptr, "CreateContentMetaDatabase"},
|
||||||
|
FunctionInfo{2, nullptr, "VerifyContentStorage"},
|
||||||
|
FunctionInfo{3, nullptr, "VerifyContentMetaDatabase"},
|
||||||
|
FunctionInfo{4, &NCM::OpenContentStorage, "OpenContentStorage"},
|
||||||
|
FunctionInfo{5, &NCM::OpenContentMetaDatabase, "OpenContentMetaDatabase"},
|
||||||
|
FunctionInfo{6, nullptr, "CloseContentStorageForcibly"},
|
||||||
|
FunctionInfo{7, nullptr, "CloseContentMetaDatabaseForcibly"},
|
||||||
|
FunctionInfo{8, nullptr, "CleanupContentMetaDatabase"},
|
||||||
|
FunctionInfo{9, nullptr, "ActivateContentStorage"},
|
||||||
|
FunctionInfo{10, nullptr, "InactivateContentStorage"},
|
||||||
|
FunctionInfo{11, nullptr, "ActivateContentMetaDatabase"},
|
||||||
|
FunctionInfo{12, nullptr, "InactivateContentMetaDatabase"},
|
||||||
|
FunctionInfo{13, nullptr, "InvalidateRightsIdCache"},
|
||||||
|
FunctionInfo{14, nullptr, "GetMemoryReport"},
|
||||||
|
FunctionInfo{15, nullptr, "ActivateFsContentStorage"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -433,7 +419,7 @@ public:
|
|||||||
: ServiceFramework{system_, "ncm:v"}
|
: ServiceFramework{system_, "ncm:v"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "GetSystemVersion"},
|
FunctionInfo{0, nullptr, "GetSystemVersion"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,8 +19,7 @@ namespace Service::NFC {
|
|||||||
class IUser final : public NfcInterface {
|
class IUser final : public NfcInterface {
|
||||||
public:
|
public:
|
||||||
explicit IUser(Core::System& system_) : NfcInterface(system_, "NFC::IUser", BackendType::Nfc) {
|
explicit IUser(Core::System& system_) : NfcInterface(system_, "NFC::IUser", BackendType::Nfc) {
|
||||||
// clang-format off
|
static const FunctionInfoTyped<IUser> functions[] = {
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &NfcInterface::Initialize, "InitializeOld"},
|
{0, &NfcInterface::Initialize, "InitializeOld"},
|
||||||
{1, &NfcInterface::Finalize, "FinalizeOld"},
|
{1, &NfcInterface::Finalize, "FinalizeOld"},
|
||||||
{2, &NfcInterface::GetState, "GetStateOld"},
|
{2, &NfcInterface::GetState, "GetStateOld"},
|
||||||
@@ -42,10 +41,8 @@ public:
|
|||||||
{1001, &NfcInterface::WriteMifare ,"WriteMifare"},
|
{1001, &NfcInterface::WriteMifare ,"WriteMifare"},
|
||||||
{1300, &NfcInterface::SendCommandByPassThrough, "SendCommandByPassThrough"},
|
{1300, &NfcInterface::SendCommandByPassThrough, "SendCommandByPassThrough"},
|
||||||
{1301, nullptr, "KeepPassThroughSession"},
|
{1301, nullptr, "KeepPassThroughSession"},
|
||||||
{1302, nullptr, "ReleasePassThroughSession"},
|
{1302, nullptr, "ReleasePassThroughSession"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -54,8 +51,7 @@ class ISystem final : public NfcInterface {
|
|||||||
public:
|
public:
|
||||||
explicit ISystem(Core::System& system_)
|
explicit ISystem(Core::System& system_)
|
||||||
: NfcInterface{system_, "NFC::ISystem", BackendType::Nfc} {
|
: NfcInterface{system_, "NFC::ISystem", BackendType::Nfc} {
|
||||||
// clang-format off
|
static const FunctionInfoTyped<ISystem> functions[] = {
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &NfcInterface::Initialize, "InitializeOld"},
|
{0, &NfcInterface::Initialize, "InitializeOld"},
|
||||||
{1, &NfcInterface::Finalize, "FinalizeOld"},
|
{1, &NfcInterface::Finalize, "FinalizeOld"},
|
||||||
{2, &NfcInterface::GetState, "GetStateOld"},
|
{2, &NfcInterface::GetState, "GetStateOld"},
|
||||||
@@ -80,10 +76,8 @@ public:
|
|||||||
{1001, &NfcInterface::WriteMifare, "WriteMifare"},
|
{1001, &NfcInterface::WriteMifare, "WriteMifare"},
|
||||||
{1300, &NfcInterface::SendCommandByPassThrough, "SendCommandByPassThrough"},
|
{1300, &NfcInterface::SendCommandByPassThrough, "SendCommandByPassThrough"},
|
||||||
{1301, nullptr, "KeepPassThroughSession"},
|
{1301, nullptr, "KeepPassThroughSession"},
|
||||||
{1302, nullptr, "ReleasePassThroughSession"},
|
{1302, nullptr, "ReleasePassThroughSession"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -93,9 +87,7 @@ public:
|
|||||||
using MFInterface = NfcInterface;
|
using MFInterface = NfcInterface;
|
||||||
class MFIUser final : public MFInterface {
|
class MFIUser final : public MFInterface {
|
||||||
public:
|
public:
|
||||||
explicit MFIUser(Core::System& system_)
|
explicit MFIUser(Core::System& system_) : MFInterface{system_, "NFC::MFInterface", BackendType::Mifare} {
|
||||||
: MFInterface{system_, "NFC::MFInterface", BackendType::Mifare} {
|
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfoTyped<MFIUser> functions[] = {
|
static const FunctionInfoTyped<MFIUser> functions[] = {
|
||||||
{0, &MFIUser::Initialize, "Initialize"},
|
{0, &MFIUser::Initialize, "Initialize"},
|
||||||
{1, &MFIUser::Finalize, "Finalize"},
|
{1, &MFIUser::Finalize, "Finalize"},
|
||||||
@@ -110,39 +102,33 @@ public:
|
|||||||
{10, &MFIUser::GetState, "GetState"},
|
{10, &MFIUser::GetState, "GetState"},
|
||||||
{11, &MFIUser::GetDeviceState, "GetDeviceState"},
|
{11, &MFIUser::GetDeviceState, "GetDeviceState"},
|
||||||
{12, &MFIUser::GetNpadId, "GetNpadId"},
|
{12, &MFIUser::GetNpadId, "GetNpadId"},
|
||||||
{13, &MFIUser::AttachAvailabilityChangeEvent, "GetAvailabilityChangeEventHandle"},
|
{13, &MFIUser::AttachAvailabilityChangeEvent, "GetAvailabilityChangeEventHandle"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IAm final : public ServiceFramework<IAm> {
|
class IAm final : public ServiceFramework<IAm> {
|
||||||
public:
|
public:
|
||||||
explicit IAm(Core::System& system_) : ServiceFramework{system_, "NFC::IAm"} {
|
explicit IAm(Core::System& system_) : ServiceFramework{system_, "NFC::IAm"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "Initialize"},
|
|
||||||
{1, nullptr, "Finalize"},
|
|
||||||
{2, nullptr, "NotifyForegroundApplet"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "Initialize"},
|
||||||
|
FunctionInfo{1, nullptr, "Finalize"},
|
||||||
|
FunctionInfo{2, nullptr, "NotifyForegroundApplet"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class NFC_AM final : public ServiceFramework<NFC_AM> {
|
class NFC_AM final : public ServiceFramework<NFC_AM> {
|
||||||
public:
|
public:
|
||||||
explicit NFC_AM(Core::System& system_) : ServiceFramework{system_, "nfc:am"} {
|
explicit NFC_AM(Core::System& system_) : ServiceFramework{system_, "nfc:am"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &NFC_AM::CreateAmNfcInterface, "CreateAmNfcInterface"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &NFC_AM::CreateAmNfcInterface, "CreateAmNfcInterface"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -157,14 +143,12 @@ private:
|
|||||||
|
|
||||||
class NFC_MF_U final : public ServiceFramework<NFC_MF_U> {
|
class NFC_MF_U final : public ServiceFramework<NFC_MF_U> {
|
||||||
public:
|
public:
|
||||||
explicit NFC_MF_U(Core::System& system_) : ServiceFramework{system_, "nfc:mf:u"} {
|
explicit NFC_MF_U(Core::System& system_) : ServiceFramework{system_, "nfc:mf:u"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &NFC_MF_U::CreateUserNfcInterface, "CreateUserNfcInterface"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &NFC_MF_U::CreateUserNfcInterface, "CreateUserNfcInterface"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -179,14 +163,12 @@ private:
|
|||||||
|
|
||||||
class NFC_U final : public ServiceFramework<NFC_U> {
|
class NFC_U final : public ServiceFramework<NFC_U> {
|
||||||
public:
|
public:
|
||||||
explicit NFC_U(Core::System& system_) : ServiceFramework{system_, "nfc:user"} {
|
explicit NFC_U(Core::System& system_) : ServiceFramework{system_, "nfc:user"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &NFC_U::CreateUserNfcInterface, "CreateUserNfcInterface"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &NFC_U::CreateUserNfcInterface, "CreateUserNfcInterface"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -201,14 +183,12 @@ private:
|
|||||||
|
|
||||||
class NFC_SYS final : public ServiceFramework<NFC_SYS> {
|
class NFC_SYS final : public ServiceFramework<NFC_SYS> {
|
||||||
public:
|
public:
|
||||||
explicit NFC_SYS(Core::System& system_) : ServiceFramework{system_, "nfc:sys"} {
|
explicit NFC_SYS(Core::System& system_) : ServiceFramework{system_, "nfc:sys"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &NFC_SYS::CreateSystemNfcInterface, "CreateSystemNfcInterface"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &NFC_SYS::CreateSystemNfcInterface, "CreateSystemNfcInterface"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ namespace Service::NFP {
|
|||||||
class IUser final : public Interface {
|
class IUser final : public Interface {
|
||||||
public:
|
public:
|
||||||
explicit IUser(Core::System& system_) : Interface(system_, "NFP:IUser") {
|
explicit IUser(Core::System& system_) : Interface(system_, "NFP:IUser") {
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfoTyped<IUser> functions[] = {
|
static const FunctionInfoTyped<IUser> functions[] = {
|
||||||
{0, &IUser::Initialize, "Initialize"},
|
{0, &IUser::Initialize, "Initialize"},
|
||||||
{1, &IUser::Finalize, "Finalize"},
|
{1, &IUser::Finalize, "Finalize"},
|
||||||
@@ -42,10 +41,8 @@ public:
|
|||||||
{22, &IUser::GetApplicationAreaSize, "GetApplicationAreaSize"},
|
{22, &IUser::GetApplicationAreaSize, "GetApplicationAreaSize"},
|
||||||
{23, &IUser::AttachAvailabilityChangeEvent, "AttachAvailabilityChangeEvent"},
|
{23, &IUser::AttachAvailabilityChangeEvent, "AttachAvailabilityChangeEvent"},
|
||||||
{24, &IUser::RecreateApplicationArea, "RecreateApplicationArea"},
|
{24, &IUser::RecreateApplicationArea, "RecreateApplicationArea"},
|
||||||
{25, &IUser::StartDetection, "StartDetectionWithFilter"},
|
{25, &IUser::StartDetection, "StartDetectionWithFilter"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -53,7 +50,6 @@ public:
|
|||||||
class ISystem final : public Interface {
|
class ISystem final : public Interface {
|
||||||
public:
|
public:
|
||||||
explicit ISystem(Core::System& system_) : Interface(system_, "NFP:ISystem") {
|
explicit ISystem(Core::System& system_) : Interface(system_, "NFP:ISystem") {
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfoTyped<ISystem> functions[] = {
|
static const FunctionInfoTyped<ISystem> functions[] = {
|
||||||
{0, &ISystem::InitializeSystem, "InitializeSystem"},
|
{0, &ISystem::InitializeSystem, "InitializeSystem"},
|
||||||
{1, &ISystem::FinalizeSystem, "FinalizeSystem"},
|
{1, &ISystem::FinalizeSystem, "FinalizeSystem"},
|
||||||
@@ -82,10 +78,8 @@ public:
|
|||||||
{103, &ISystem::SetRegisterInfoPrivate, "SetRegisterInfoPrivate"},
|
{103, &ISystem::SetRegisterInfoPrivate, "SetRegisterInfoPrivate"},
|
||||||
{104, &ISystem::DeleteRegisterInfo, "DeleteRegisterInfo"},
|
{104, &ISystem::DeleteRegisterInfo, "DeleteRegisterInfo"},
|
||||||
{105, &ISystem::DeleteApplicationArea, "DeleteApplicationArea"},
|
{105, &ISystem::DeleteApplicationArea, "DeleteApplicationArea"},
|
||||||
{106, &ISystem::ExistsApplicationArea, "ExistsApplicationArea"},
|
{106, &ISystem::ExistsApplicationArea, "ExistsApplicationArea"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -93,7 +87,6 @@ public:
|
|||||||
class IDebug final : public Interface {
|
class IDebug final : public Interface {
|
||||||
public:
|
public:
|
||||||
explicit IDebug(Core::System& system_) : Interface(system_, "NFP:IDebug") {
|
explicit IDebug(Core::System& system_) : Interface(system_, "NFP:IDebug") {
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfoTyped<IDebug> functions[] = {
|
static const FunctionInfoTyped<IDebug> functions[] = {
|
||||||
{0, &IDebug::InitializeDebug, "InitializeDebug"},
|
{0, &IDebug::InitializeDebug, "InitializeDebug"},
|
||||||
{1, &IDebug::FinalizeDebug, "FinalizeDebug"},
|
{1, &IDebug::FinalizeDebug, "FinalizeDebug"},
|
||||||
@@ -134,24 +127,20 @@ public:
|
|||||||
{203, &IDebug::BreakTag, "BreakTag"},
|
{203, &IDebug::BreakTag, "BreakTag"},
|
||||||
{204, &IDebug::ReadBackupData, "ReadBackupData"},
|
{204, &IDebug::ReadBackupData, "ReadBackupData"},
|
||||||
{205, &IDebug::WriteBackupData, "WriteBackupData"},
|
{205, &IDebug::WriteBackupData, "WriteBackupData"},
|
||||||
{206, &IDebug::WriteNtf, "WriteNtf"},
|
{206, &IDebug::WriteNtf, "WriteNtf"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IUserManager final : public ServiceFramework<IUserManager> {
|
class IUserManager final : public ServiceFramework<IUserManager> {
|
||||||
public:
|
public:
|
||||||
explicit IUserManager(Core::System& system_) : ServiceFramework{system_, "nfp:user"} {
|
explicit IUserManager(Core::System& system_) : ServiceFramework{system_, "nfp:user"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IUserManager::CreateUserInterface, "CreateUserInterface"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IUserManager::CreateUserInterface, "CreateUserInterface"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -166,14 +155,12 @@ private:
|
|||||||
|
|
||||||
class ISystemManager final : public ServiceFramework<ISystemManager> {
|
class ISystemManager final : public ServiceFramework<ISystemManager> {
|
||||||
public:
|
public:
|
||||||
explicit ISystemManager(Core::System& system_) : ServiceFramework{system_, "nfp:sys"} {
|
explicit ISystemManager(Core::System& system_) : ServiceFramework{system_, "nfp:sys"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &ISystemManager::CreateSystemInterface, "CreateSystemInterface"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &ISystemManager::CreateSystemInterface, "CreateSystemInterface"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -188,14 +175,12 @@ private:
|
|||||||
|
|
||||||
class IDebugManager final : public ServiceFramework<IDebugManager> {
|
class IDebugManager final : public ServiceFramework<IDebugManager> {
|
||||||
public:
|
public:
|
||||||
explicit IDebugManager(Core::System& system_) : ServiceFramework{system_, "nfp:dbg"} {
|
explicit IDebugManager(Core::System& system_) : ServiceFramework{system_, "nfp:dbg"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IDebugManager::CreateDebugInterface, "CreateDebugInterface"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IDebugManager::CreateDebugInterface, "CreateDebugInterface"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -21,15 +21,13 @@ namespace Service::NGC {
|
|||||||
|
|
||||||
class IService final : public ServiceFramework<IService> {
|
class IService final : public ServiceFramework<IService> {
|
||||||
public:
|
public:
|
||||||
explicit IService(Core::System& system_) : ServiceFramework{system_, "ngct:u"} {
|
explicit IService(Core::System& system_) : ServiceFramework{system_, "ngct:u"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IService::Match, "Match"},
|
|
||||||
{1, &IService::Filter, "Filter"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IService::Match, "Match"},
|
||||||
|
FunctionInfo{1, &IService::Filter, "Filter"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -65,19 +63,17 @@ private:
|
|||||||
|
|
||||||
class NgcServiceImpl final : public ServiceFramework<NgcServiceImpl> {
|
class NgcServiceImpl final : public ServiceFramework<NgcServiceImpl> {
|
||||||
public:
|
public:
|
||||||
explicit NgcServiceImpl(Core::System& system_) : ServiceFramework(system_, "ngc:u") {
|
explicit NgcServiceImpl(Core::System& system_) : ServiceFramework(system_, "ngc:u") {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &NgcServiceImpl::GetContentVersion, "GetContentVersion"},
|
|
||||||
{1, &NgcServiceImpl::Check, "Check"},
|
|
||||||
{2, &NgcServiceImpl::Mask, "Mask"},
|
|
||||||
{3, &NgcServiceImpl::Reload, "Reload"},
|
|
||||||
{4, &NgcServiceImpl::Check, "Check2"},
|
|
||||||
{5, &NgcServiceImpl::Mask, "Mask2"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &NgcServiceImpl::GetContentVersion, "GetContentVersion"},
|
||||||
|
FunctionInfo{1, &NgcServiceImpl::Check, "Check"},
|
||||||
|
FunctionInfo{2, &NgcServiceImpl::Mask, "Mask"},
|
||||||
|
FunctionInfo{3, &NgcServiceImpl::Reload, "Reload"},
|
||||||
|
FunctionInfo{4, &NgcServiceImpl::Check, "Check2"},
|
||||||
|
FunctionInfo{5, &NgcServiceImpl::Mask, "Mask2"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -154,21 +150,20 @@ private:
|
|||||||
|
|
||||||
class IServiceWithManagementApi final : public ServiceFramework<IServiceWithManagementApi> {
|
class IServiceWithManagementApi final : public ServiceFramework<IServiceWithManagementApi> {
|
||||||
public:
|
public:
|
||||||
explicit IServiceWithManagementApi(Core::System& system_) : ServiceFramework(system_, "ngct:s") {
|
explicit IServiceWithManagementApi(Core::System& system_) : ServiceFramework(system_, "ngct:s") {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0 , nullptr, "Match"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1 , nullptr, "Filter"},
|
FunctionInfo{0, nullptr, "Match"},
|
||||||
{100, nullptr, "ConfigureAutoUpdateSetting"},
|
FunctionInfo{1, nullptr, "Filter"},
|
||||||
{101, nullptr, "RequestResourceUpdateCheck"},
|
FunctionInfo{100, nullptr, "ConfigureAutoUpdateSetting"},
|
||||||
{110, nullptr, "Reload"},
|
FunctionInfo{101, nullptr, "RequestResourceUpdateCheck"},
|
||||||
{111, nullptr, "IsReloadRequired"},
|
FunctionInfo{110, nullptr, "Reload"},
|
||||||
{112, nullptr, "TryAcquireReloadRequestNotifier"},
|
FunctionInfo{111, nullptr, "IsReloadRequired"},
|
||||||
{120, nullptr, "CalculateContentFingerprint"},
|
FunctionInfo{112, nullptr, "TryAcquireReloadRequestNotifier"},
|
||||||
{130, nullptr, "TryEnableTemporalPassThrough"},
|
FunctionInfo{120, nullptr, "CalculateContentFingerprint"},
|
||||||
};
|
FunctionInfo{130, nullptr, "TryEnableTemporalPassThrough"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -179,20 +174,19 @@ static_assert(sizeof(SaveDataHandle) == 0x08);
|
|||||||
|
|
||||||
class IUserShimScopedObject final : public ServiceFramework<IUserShimScopedObject> {
|
class IUserShimScopedObject final : public ServiceFramework<IUserShimScopedObject> {
|
||||||
public:
|
public:
|
||||||
explicit IUserShimScopedObject(Core::System& system_) : ServiceFramework(system_, "IUserShimScopedObject") {
|
explicit IUserShimScopedObject(Core::System& system_) : ServiceFramework(system_, "IUserShimScopedObject") {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{450, nullptr, "InitializeForSaveData"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{451, nullptr, "FinalizeForSaveData"},
|
FunctionInfo{450, nullptr, "InitializeForSaveData"},
|
||||||
{452, D<&IUserShimScopedObject::OpenSaveData>, "OpenSaveData"},
|
FunctionInfo{451, nullptr, "FinalizeForSaveData"},
|
||||||
{453, nullptr, "CloseSaveData"},
|
FunctionInfo{452, D<&IUserShimScopedObject::OpenSaveData>, "OpenSaveData"},
|
||||||
{454, D<&IUserShimScopedObject::ReadSaveSlot>, "ReadSaveSlot"},
|
FunctionInfo{453, nullptr, "CloseSaveData"},
|
||||||
{455, D<&IUserShimScopedObject::WriteSaveSlot>, "WriteSaveSlot"},
|
FunctionInfo{454, D<&IUserShimScopedObject::ReadSaveSlot>, "ReadSaveSlot"},
|
||||||
{456, nullptr, "FlushSaveSlot"},
|
FunctionInfo{455, D<&IUserShimScopedObject::WriteSaveSlot>, "WriteSaveSlot"},
|
||||||
{457, nullptr, "CommitSaveData"},
|
FunctionInfo{456, nullptr, "FlushSaveSlot"},
|
||||||
};
|
FunctionInfo{457, nullptr, "CommitSaveData"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Result OpenSaveData(Account::Uid unk0, Out<SaveDataHandle> unk1) {
|
Result OpenSaveData(Account::Uid unk0, Out<SaveDataHandle> unk1) {
|
||||||
@@ -214,13 +208,12 @@ public:
|
|||||||
|
|
||||||
class IUserService final : public ServiceFramework<IUserService> {
|
class IUserService final : public ServiceFramework<IUserService> {
|
||||||
public:
|
public:
|
||||||
explicit IUserService(Core::System& system_) : ServiceFramework(system_, "stpl:u") {
|
explicit IUserService(Core::System& system_) : ServiceFramework(system_, "stpl:u") {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0 , D<&IUserService::Cmd0>, "Cmd0"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, D<&IUserService::Cmd0>, "Cmd0"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
Result Cmd0(u32 unk0, OutInterface<IUserShimScopedObject> out_interface) {
|
Result Cmd0(u32 unk0, OutInterface<IUserShimScopedObject> out_interface) {
|
||||||
LOG_WARNING(Service_NGC, "stubbed");
|
LOG_WARNING(Service_NGC, "stubbed");
|
||||||
@@ -231,21 +224,20 @@ public:
|
|||||||
|
|
||||||
class ISystemShimScopedObject final : public ServiceFramework<ISystemShimScopedObject> {
|
class ISystemShimScopedObject final : public ServiceFramework<ISystemShimScopedObject> {
|
||||||
public:
|
public:
|
||||||
explicit ISystemShimScopedObject(Core::System& system_) : ServiceFramework(system_, "ISystemShimScopedObject") {
|
explicit ISystemShimScopedObject(Core::System& system_) : ServiceFramework(system_, "ISystemShimScopedObject") {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{106, nullptr, "Cmd106"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{107, nullptr, "Cmd107"},
|
FunctionInfo{106, nullptr, "Cmd106"},
|
||||||
{108, D<&ISystemShimScopedObject::Cmd108>, "Cmd108"},
|
FunctionInfo{107, nullptr, "Cmd107"},
|
||||||
{207, nullptr, "Cmd207"},
|
FunctionInfo{108, D<&ISystemShimScopedObject::Cmd108>, "Cmd108"},
|
||||||
{208, D<&ISystemShimScopedObject::Cmd208>, "Cmd208"},
|
FunctionInfo{207, nullptr, "Cmd207"},
|
||||||
{209, nullptr, "Cmd209"},
|
FunctionInfo{208, D<&ISystemShimScopedObject::Cmd208>, "Cmd208"},
|
||||||
{210, nullptr, "Cmd210"},
|
FunctionInfo{209, nullptr, "Cmd209"},
|
||||||
{211, nullptr, "Cmd211"},
|
FunctionInfo{210, nullptr, "Cmd210"},
|
||||||
{212, nullptr, "Cmd212"},
|
FunctionInfo{211, nullptr, "Cmd211"},
|
||||||
};
|
FunctionInfo{212, nullptr, "Cmd212"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Result Cmd108() {
|
Result Cmd108() {
|
||||||
@@ -261,13 +253,12 @@ public:
|
|||||||
|
|
||||||
class ISystemService final : public ServiceFramework<ISystemService> {
|
class ISystemService final : public ServiceFramework<ISystemService> {
|
||||||
public:
|
public:
|
||||||
explicit ISystemService(Core::System& system_) : ServiceFramework(system_, "stpl:sys") {
|
explicit ISystemService(Core::System& system_) : ServiceFramework(system_, "stpl:sys") {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0 , D<&ISystemService::Cmd0>, "Cmd0"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, D<&ISystemService::Cmd0>, "Cmd0"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
Result Cmd0(OutInterface<ISystemShimScopedObject> out_interface) {
|
Result Cmd0(OutInterface<ISystemShimScopedObject> out_interface) {
|
||||||
LOG_WARNING(Service_NGC, "stubbed");
|
LOG_WARNING(Service_NGC, "stubbed");
|
||||||
|
|||||||
@@ -236,11 +236,11 @@ public:
|
|||||||
: ServiceFramework{system_, "IScanRequest"}, svc_ctx{system_, "IScanRequest"} {
|
: ServiceFramework{system_, "IScanRequest"}, svc_ctx{system_, "IScanRequest"} {
|
||||||
|
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &IScanRequest::Submit, "Submit"},
|
FunctionInfo{0, &IScanRequest::Submit, "Submit"},
|
||||||
{1, &IScanRequest::IsProcessing, "IsProcessing"},
|
FunctionInfo{1, &IScanRequest::IsProcessing, "IsProcessing"},
|
||||||
{2, &IScanRequest::GetResult, "GetResult"},
|
FunctionInfo{2, &IScanRequest::GetResult, "GetResult"},
|
||||||
{3, &IScanRequest::GetSystemEventReadableHandle, "GetSystemEventReadableHandle"},
|
FunctionInfo{3, &IScanRequest::GetSystemEventReadableHandle, "GetSystemEventReadableHandle"},
|
||||||
{4, &IScanRequest::SetChannels, "SetChannels"},
|
FunctionInfo{4, &IScanRequest::SetChannels, "SetChannels"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
|
|
||||||
@@ -343,32 +343,32 @@ public:
|
|||||||
explicit IRequest(Core::System& system_)
|
explicit IRequest(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IRequest"}, service_context{system_, "IRequest"} {
|
: ServiceFramework{system_, "IRequest"}, service_context{system_, "IRequest"} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &IRequest::GetRequestState, "GetRequestState"},
|
FunctionInfo{0, &IRequest::GetRequestState, "GetRequestState"},
|
||||||
{1, &IRequest::GetResult, "GetResult"},
|
FunctionInfo{1, &IRequest::GetResult, "GetResult"},
|
||||||
{2, &IRequest::GetSystemEventReadableHandles, "GetSystemEventReadableHandles"},
|
FunctionInfo{2, &IRequest::GetSystemEventReadableHandles, "GetSystemEventReadableHandles"},
|
||||||
{3, &IRequest::Cancel, "Cancel"},
|
FunctionInfo{3, &IRequest::Cancel, "Cancel"},
|
||||||
{4, &IRequest::Submit, "Submit"},
|
FunctionInfo{4, &IRequest::Submit, "Submit"},
|
||||||
{5, nullptr, "SetRequirement"},
|
FunctionInfo{5, nullptr, "SetRequirement"},
|
||||||
{6, &IRequest::SetRequirementPreset, "SetRequirementPreset"},
|
FunctionInfo{6, &IRequest::SetRequirementPreset, "SetRequirementPreset"},
|
||||||
{8, nullptr, "SetPriority"},
|
FunctionInfo{8, nullptr, "SetPriority"},
|
||||||
{9, &IRequest::SetNetworkProfileId, "SetNetworkProfileId"},
|
FunctionInfo{9, &IRequest::SetNetworkProfileId, "SetNetworkProfileId"},
|
||||||
{10, nullptr, "SetRejectable"},
|
FunctionInfo{10, nullptr, "SetRejectable"},
|
||||||
{11, &IRequest::SetConnectionConfirmationOption, "SetConnectionConfirmationOption"},
|
FunctionInfo{11, &IRequest::SetConnectionConfirmationOption, "SetConnectionConfirmationOption"},
|
||||||
{12, nullptr, "SetPersistent"},
|
FunctionInfo{12, nullptr, "SetPersistent"},
|
||||||
{13, nullptr, "SetInstant"},
|
FunctionInfo{13, nullptr, "SetInstant"},
|
||||||
{14, nullptr, "SetSustainable"},
|
FunctionInfo{14, nullptr, "SetSustainable"},
|
||||||
{15, nullptr, "SetRawPriority"},
|
FunctionInfo{15, nullptr, "SetRawPriority"},
|
||||||
{16, nullptr, "SetGreedy"},
|
FunctionInfo{16, nullptr, "SetGreedy"},
|
||||||
{17, nullptr, "SetSharable"},
|
FunctionInfo{17, nullptr, "SetSharable"},
|
||||||
{18, nullptr, "SetRequirementByRevision"},
|
FunctionInfo{18, nullptr, "SetRequirementByRevision"},
|
||||||
{19, nullptr, "GetRequirement"},
|
FunctionInfo{19, nullptr, "GetRequirement"},
|
||||||
{20, nullptr, "GetRevision"},
|
FunctionInfo{20, nullptr, "GetRevision"},
|
||||||
{21, &IRequest::GetAppletInfo, "GetAppletInfo"},
|
FunctionInfo{21, &IRequest::GetAppletInfo, "GetAppletInfo"},
|
||||||
{22, nullptr, "GetAdditionalInfo"},
|
FunctionInfo{22, nullptr, "GetAdditionalInfo"},
|
||||||
{23, nullptr, "SetKeptInSleep"},
|
FunctionInfo{23, nullptr, "SetKeptInSleep"},
|
||||||
{24, nullptr, "RegisterSocketDescriptor"},
|
FunctionInfo{24, nullptr, "RegisterSocketDescriptor"},
|
||||||
{25, nullptr, "UnregisterSocketDescriptor"},
|
FunctionInfo{25, nullptr, "UnregisterSocketDescriptor"},
|
||||||
{26, nullptr, "GetNetworkAccessStatus"}, //21.0.0+
|
FunctionInfo{26, nullptr, "GetNetworkAccessStatus"}, //21.0.0+
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
|
|
||||||
@@ -510,9 +510,9 @@ class INetworkProfile final : public ServiceFramework<INetworkProfile> {
|
|||||||
public:
|
public:
|
||||||
explicit INetworkProfile(Core::System& system_) : ServiceFramework{system_, "INetworkProfile"} {
|
explicit INetworkProfile(Core::System& system_) : ServiceFramework{system_, "INetworkProfile"} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Update"},
|
FunctionInfo{0, nullptr, "Update"},
|
||||||
{1, nullptr, "PersistOld"},
|
FunctionInfo{1, nullptr, "PersistOld"},
|
||||||
{2, nullptr, "Persist"},
|
FunctionInfo{2, nullptr, "Persist"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -1117,8 +1117,8 @@ public:
|
|||||||
explicit NetworkInterface(const char* name, Core::System& system_)
|
explicit NetworkInterface(const char* name, Core::System& system_)
|
||||||
: ServiceFramework{system_, name} {
|
: ServiceFramework{system_, name} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{4, &NetworkInterface::CreateGeneralServiceOld, "CreateGeneralServiceOld"},
|
FunctionInfo{4, &NetworkInterface::CreateGeneralServiceOld, "CreateGeneralServiceOld"},
|
||||||
{5, &NetworkInterface::CreateGeneralService, "CreateGeneralService"},
|
FunctionInfo{5, &NetworkInterface::CreateGeneralService, "CreateGeneralService"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
+312
-327
@@ -24,24 +24,22 @@ namespace Service::NIM {
|
|||||||
class IShopServiceAsync final : public ServiceFramework<IShopServiceAsync> {
|
class IShopServiceAsync final : public ServiceFramework<IShopServiceAsync> {
|
||||||
public:
|
public:
|
||||||
explicit IShopServiceAsync(Core::System& system_)
|
explicit IShopServiceAsync(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IShopServiceAsync"},
|
: ServiceFramework{system_, "IShopServiceAsync"}
|
||||||
service_context{system_, "IShopServiceAsync"} {
|
, service_context{system_, "IShopServiceAsync"} {
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, D<&IShopServiceAsync::Cancel>, "Cancel"},
|
|
||||||
{1, D<&IShopServiceAsync::GetSize>, "GetSize"},
|
|
||||||
{2, D<&IShopServiceAsync::Read>, "Read"},
|
|
||||||
{3, D<&IShopServiceAsync::GetErrorCode>, "GetErrorCode"},
|
|
||||||
{4, D<&IShopServiceAsync::Request>, "Request"},
|
|
||||||
{5, D<&IShopServiceAsync::Prepare>, "Prepare"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
|
|
||||||
completion_event = service_context.CreateEvent("IShopServiceAsync:Completion");
|
completion_event = service_context.CreateEvent("IShopServiceAsync:Completion");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, D<&IShopServiceAsync::Cancel>, "Cancel"},
|
||||||
|
FunctionInfo{1, D<&IShopServiceAsync::GetSize>, "GetSize"},
|
||||||
|
FunctionInfo{2, D<&IShopServiceAsync::Read>, "Read"},
|
||||||
|
FunctionInfo{3, D<&IShopServiceAsync::GetErrorCode>, "GetErrorCode"},
|
||||||
|
FunctionInfo{4, D<&IShopServiceAsync::Request>, "Request"},
|
||||||
|
FunctionInfo{5, D<&IShopServiceAsync::Prepare>, "Prepare"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
~IShopServiceAsync() override {
|
~IShopServiceAsync() override {
|
||||||
CancelImpl();
|
CancelImpl();
|
||||||
service_context.CloseEvent(completion_event);
|
service_context.CloseEvent(completion_event);
|
||||||
@@ -141,14 +139,12 @@ private:
|
|||||||
class IShopServiceAccessor final : public ServiceFramework<IShopServiceAccessor> {
|
class IShopServiceAccessor final : public ServiceFramework<IShopServiceAccessor> {
|
||||||
public:
|
public:
|
||||||
explicit IShopServiceAccessor(Core::System& system_)
|
explicit IShopServiceAccessor(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IShopServiceAccessor"} {
|
: ServiceFramework{system_, "IShopServiceAccessor"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IShopServiceAccessor::CreateAsyncInterface, "CreateAsyncInterface"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IShopServiceAccessor::CreateAsyncInterface, "CreateAsyncInterface"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -165,14 +161,12 @@ private:
|
|||||||
class IShopServiceAccessServer final : public ServiceFramework<IShopServiceAccessServer> {
|
class IShopServiceAccessServer final : public ServiceFramework<IShopServiceAccessServer> {
|
||||||
public:
|
public:
|
||||||
explicit IShopServiceAccessServer(Core::System& system_)
|
explicit IShopServiceAccessServer(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IShopServiceAccessServer"} {
|
: ServiceFramework{system_, "IShopServiceAccessServer"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IShopServiceAccessServer::CreateAccessorInterface, "CreateAccessorInterface"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IShopServiceAccessServer::CreateAccessorInterface, "CreateAccessorInterface"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -186,254 +180,250 @@ private:
|
|||||||
|
|
||||||
class NIM final : public ServiceFramework<NIM> {
|
class NIM final : public ServiceFramework<NIM> {
|
||||||
public:
|
public:
|
||||||
explicit NIM(Core::System& system_) : ServiceFramework{system_, "nim"} {
|
explicit NIM(Core::System& system_) : ServiceFramework{system_, "nim"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "CreateSystemUpdateTask"},
|
|
||||||
{1, nullptr, "DestroySystemUpdateTask"},
|
|
||||||
{2, nullptr, "ListSystemUpdateTask"},
|
|
||||||
{3, nullptr, "RequestSystemUpdateTaskRun"},
|
|
||||||
{4, nullptr, "GetSystemUpdateTaskInfo"},
|
|
||||||
{5, nullptr, "CommitSystemUpdateTask"},
|
|
||||||
{6, nullptr, "CreateNetworkInstallTask"},
|
|
||||||
{7, nullptr, "DestroyNetworkInstallTask"},
|
|
||||||
{8, nullptr, "ListNetworkInstallTask"},
|
|
||||||
{9, nullptr, "RequestNetworkInstallTaskRun"},
|
|
||||||
{10, nullptr, "GetNetworkInstallTaskInfo"},
|
|
||||||
{11, nullptr, "CommitNetworkInstallTask"},
|
|
||||||
{12, nullptr, "RequestLatestSystemUpdateMeta"},
|
|
||||||
{14, nullptr, "ListApplicationNetworkInstallTask"},
|
|
||||||
{15, nullptr, "ListNetworkInstallTaskContentMeta"},
|
|
||||||
{16, nullptr, "RequestLatestVersion"},
|
|
||||||
{17, nullptr, "SetNetworkInstallTaskAttribute"},
|
|
||||||
{18, nullptr, "AddNetworkInstallTaskContentMeta"},
|
|
||||||
{19, nullptr, "GetDownloadedSystemDataPath"},
|
|
||||||
{20, nullptr, "CalculateNetworkInstallTaskRequiredSize"},
|
|
||||||
{21, nullptr, "IsExFatDriverIncluded"},
|
|
||||||
{22, nullptr, "GetBackgroundDownloadStressTaskInfo"},
|
|
||||||
{23, nullptr, "RequestDeviceAuthenticationToken"},
|
|
||||||
{24, nullptr, "RequestGameCardRegistrationStatus"},
|
|
||||||
{25, nullptr, "RequestRegisterGameCard"},
|
|
||||||
{26, nullptr, "RequestRegisterNotificationToken"},
|
|
||||||
{27, nullptr, "RequestDownloadTaskList"},
|
|
||||||
{28, nullptr, "RequestApplicationControl"},
|
|
||||||
{29, nullptr, "RequestLatestApplicationControl"},
|
|
||||||
{30, nullptr, "RequestVersionList"},
|
|
||||||
{31, nullptr, "CreateApplyDeltaTask"},
|
|
||||||
{32, nullptr, "DestroyApplyDeltaTask"},
|
|
||||||
{33, nullptr, "ListApplicationApplyDeltaTask"},
|
|
||||||
{34, nullptr, "RequestApplyDeltaTaskRun"},
|
|
||||||
{35, nullptr, "GetApplyDeltaTaskInfo"},
|
|
||||||
{36, nullptr, "ListApplyDeltaTask"},
|
|
||||||
{37, nullptr, "CommitApplyDeltaTask"},
|
|
||||||
{38, nullptr, "CalculateApplyDeltaTaskRequiredSize"},
|
|
||||||
{39, nullptr, "PrepareShutdown"},
|
|
||||||
{40, nullptr, "ListApplyDeltaTask"},
|
|
||||||
{41, nullptr, "ClearNotEnoughSpaceStateOfApplyDeltaTask"},
|
|
||||||
{42, nullptr, "CreateApplyDeltaTaskFromDownloadTask"},
|
|
||||||
{43, nullptr, "GetBackgroundApplyDeltaStressTaskInfo"},
|
|
||||||
{44, nullptr, "GetApplyDeltaTaskRequiredStorage"},
|
|
||||||
{45, nullptr, "CalculateNetworkInstallTaskContentsSize"},
|
|
||||||
{46, nullptr, "PrepareShutdownForSystemUpdate"},
|
|
||||||
{47, nullptr, "FindMaxRequiredApplicationVersionOfTask"},
|
|
||||||
{48, nullptr, "CommitNetworkInstallTaskPartially"},
|
|
||||||
{49, nullptr, "ListNetworkInstallTaskCommittedContentMeta"},
|
|
||||||
{50, nullptr, "ListNetworkInstallTaskNotCommittedContentMeta"},
|
|
||||||
{51, nullptr, "FindMaxRequiredSystemVersionOfTask"},
|
|
||||||
{52, nullptr, "GetNetworkInstallTaskErrorContext"},
|
|
||||||
{53, nullptr, "CreateLocalCommunicationReceiveApplicationTask"},
|
|
||||||
{54, nullptr, "DestroyLocalCommunicationReceiveApplicationTask"},
|
|
||||||
{55, nullptr, "ListLocalCommunicationReceiveApplicationTask"},
|
|
||||||
{56, nullptr, "RequestLocalCommunicationReceiveApplicationTaskRun"},
|
|
||||||
{57, nullptr, "GetLocalCommunicationReceiveApplicationTaskInfo"},
|
|
||||||
{58, nullptr, "CommitLocalCommunicationReceiveApplicationTask"},
|
|
||||||
{59, nullptr, "ListLocalCommunicationReceiveApplicationTaskContentMeta"},
|
|
||||||
{60, nullptr, "CreateLocalCommunicationSendApplicationTask"},
|
|
||||||
{61, nullptr, "RequestLocalCommunicationSendApplicationTaskRun"},
|
|
||||||
{62, nullptr, "GetLocalCommunicationReceiveApplicationTaskErrorContext"},
|
|
||||||
{63, nullptr, "GetLocalCommunicationSendApplicationTaskInfo"},
|
|
||||||
{64, nullptr, "DestroyLocalCommunicationSendApplicationTask"},
|
|
||||||
{65, nullptr, "GetLocalCommunicationSendApplicationTaskErrorContext"},
|
|
||||||
{66, nullptr, "CalculateLocalCommunicationReceiveApplicationTaskRequiredSize"},
|
|
||||||
{67, nullptr, "ListApplicationLocalCommunicationReceiveApplicationTask"},
|
|
||||||
{68, nullptr, "ListApplicationLocalCommunicationSendApplicationTask"},
|
|
||||||
{69, nullptr, "CreateLocalCommunicationReceiveSystemUpdateTask"},
|
|
||||||
{70, nullptr, "DestroyLocalCommunicationReceiveSystemUpdateTask"},
|
|
||||||
{71, nullptr, "ListLocalCommunicationReceiveSystemUpdateTask"},
|
|
||||||
{72, nullptr, "RequestLocalCommunicationReceiveSystemUpdateTaskRun"},
|
|
||||||
{73, nullptr, "GetLocalCommunicationReceiveSystemUpdateTaskInfo"},
|
|
||||||
{74, nullptr, "CommitLocalCommunicationReceiveSystemUpdateTask"},
|
|
||||||
{75, nullptr, "GetLocalCommunicationReceiveSystemUpdateTaskErrorContext"},
|
|
||||||
{76, nullptr, "CreateLocalCommunicationSendSystemUpdateTask"},
|
|
||||||
{77, nullptr, "RequestLocalCommunicationSendSystemUpdateTaskRun"},
|
|
||||||
{78, nullptr, "GetLocalCommunicationSendSystemUpdateTaskInfo"},
|
|
||||||
{79, nullptr, "DestroyLocalCommunicationSendSystemUpdateTask"},
|
|
||||||
{80, nullptr, "GetLocalCommunicationSendSystemUpdateTaskErrorContext"},
|
|
||||||
{81, nullptr, "ListLocalCommunicationSendSystemUpdateTask"},
|
|
||||||
{82, nullptr, "GetReceivedSystemDataPath"},
|
|
||||||
{83, nullptr, "CalculateApplyDeltaTaskOccupiedSize"},
|
|
||||||
{84, nullptr, "ReloadErrorSimulation"},
|
|
||||||
{85, nullptr, "ListNetworkInstallTaskContentMetaFromInstallMeta"},
|
|
||||||
{86, nullptr, "ListNetworkInstallTaskOccupiedSize"},
|
|
||||||
{87, nullptr, "RequestQueryAvailableELicenses"},
|
|
||||||
{88, nullptr, "RequestAssignELicenses"},
|
|
||||||
{89, nullptr, "RequestExtendELicenses"},
|
|
||||||
{90, nullptr, "RequestSyncELicenses"},
|
|
||||||
{91, nullptr, "Unknown91"}, //6.0.0-14.1.2
|
|
||||||
{92, nullptr, "Unknown92"}, //21.0.0+
|
|
||||||
{93, nullptr, "RequestReportActiveELicenses"},
|
|
||||||
{94, nullptr, "RequestReportActiveELicensesPassively"},
|
|
||||||
{95, nullptr, "RequestRegisterDynamicRightsNotificationToken"},
|
|
||||||
{96, nullptr, "RequestAssignAllDeviceLinkedELicenses"},
|
|
||||||
{97, nullptr, "RequestRevokeAllELicenses"},
|
|
||||||
{98, nullptr, "RequestPrefetchForDynamicRights"},
|
|
||||||
{99, nullptr, "CreateNetworkInstallTask"},
|
|
||||||
{100, nullptr, "ListNetworkInstallTaskRightsIds"},
|
|
||||||
{101, nullptr, "RequestDownloadETickets"},
|
|
||||||
{102, nullptr, "RequestQueryDownloadableContents"},
|
|
||||||
{103, nullptr, "DeleteNetworkInstallTaskContentMeta"},
|
|
||||||
{104, nullptr, "RequestIssueEdgeTokenForDebug"},
|
|
||||||
{105, nullptr, "RequestQueryAvailableELicenses2"},
|
|
||||||
{106, nullptr, "RequestAssignELicenses2"},
|
|
||||||
{107, nullptr, "GetNetworkInstallTaskStateCounter"},
|
|
||||||
{108, nullptr, "InvalidateDynamicRightsNaIdTokenCacheForDebug"},
|
|
||||||
{109, nullptr, "ListNetworkInstallTaskPartialInstallContentMeta"},
|
|
||||||
{110, nullptr, "ListNetworkInstallTaskRightsIdsFromIndex"},
|
|
||||||
{111, nullptr, "AddNetworkInstallTaskContentMetaForUser"},
|
|
||||||
{112, nullptr, "RequestAssignELicensesAndDownloadETickets"},
|
|
||||||
{113, nullptr, "RequestQueryAvailableCommonELicenses"},
|
|
||||||
{114, nullptr, "SetNetworkInstallTaskExtendedAttribute"},
|
|
||||||
{115, nullptr, "GetNetworkInstallTaskExtendedAttribute"},
|
|
||||||
{116, nullptr, "GetAllocatorInfo"},
|
|
||||||
{117, nullptr, "RequestQueryDownloadableContentsByApplicationId"},
|
|
||||||
{118, nullptr, "MarkNoDownloadRightsErrorResolved"},
|
|
||||||
{119, nullptr, "GetApplyDeltaTaskAllAppliedContentMeta"},
|
|
||||||
{120, nullptr, "PrioritizeNetworkInstallTask"},
|
|
||||||
{121, nullptr, "RequestQueryAvailableCommonELicenses2"},
|
|
||||||
{122, nullptr, "RequestAssignCommonELicenses"},
|
|
||||||
{123, nullptr, "RequestAssignCommonELicenses2"},
|
|
||||||
{124, nullptr, "IsNetworkInstallTaskFrontOfQueue"},
|
|
||||||
{125, nullptr, "PrioritizeApplyDeltaTask"},
|
|
||||||
{126, nullptr, "RerouteDownloadingPatch"},
|
|
||||||
{127, nullptr, "UnmarkNoDownloadRightsErrorResolved"},
|
|
||||||
{128, nullptr, "RequestContentsSize"},
|
|
||||||
{129, nullptr, "RequestContentsAuthorizationToken"},
|
|
||||||
{130, nullptr, "RequestCdnVendorDiscovery"},
|
|
||||||
{131, nullptr, "RefreshDebugAvailability"},
|
|
||||||
{132, nullptr, "ClearResponseSimulationEntry"},
|
|
||||||
{133, nullptr, "RegisterResponseSimulationEntry"},
|
|
||||||
{134, nullptr, "GetProcessedCdnVendors"},
|
|
||||||
{135, nullptr, "RefreshRuntimeBehaviorsForDebug"},
|
|
||||||
{136, nullptr, "RequestOnlineSubscriptionFreeTrialAvailability"},
|
|
||||||
{137, nullptr, "GetNetworkInstallTaskContentMetaCount"},
|
|
||||||
{138, nullptr, "RequestRevokeELicenses"},
|
|
||||||
{139, nullptr, "EnableNetworkConnectionToUseApplicationCore"},
|
|
||||||
{140, nullptr, "DisableNetworkConnectionToUseApplicationCore"},
|
|
||||||
{141, nullptr, "IsNetworkConnectionEnabledToUseApplicationCore"},
|
|
||||||
{142, nullptr, "RequestCheckSafeSystemVersion"},
|
|
||||||
{143, nullptr, "RequestApplicationIcon"},
|
|
||||||
{144, nullptr, "RequestDownloadIdbeIconFile"},
|
|
||||||
{147, nullptr, "Unknown147"}, //18.0.0+
|
|
||||||
{148, nullptr, "Unknown148"}, //18.0.0+
|
|
||||||
{150, nullptr, "Unknown150"}, //19.0.0+
|
|
||||||
{151, nullptr, "Unknown151"}, //20.0.0+
|
|
||||||
{152, nullptr, "Unknown152"}, //20.0.0+
|
|
||||||
{153, nullptr, "Unknown153"}, //20.0.0+
|
|
||||||
{154, nullptr, "Unknown154"}, //20.0.0+
|
|
||||||
{155, nullptr, "Unknown155"}, //20.0.0+
|
|
||||||
{156, nullptr, "Unknown156"}, //20.0.0+
|
|
||||||
{157, nullptr, "Unknown157"}, //20.0.0+
|
|
||||||
{158, nullptr, "Unknown158"}, //20.0.0+
|
|
||||||
{159, nullptr, "Unknown159"}, //20.0.0+
|
|
||||||
{160, nullptr, "Unknown160"}, //20.0.0+
|
|
||||||
{161, nullptr, "Unknown161"}, //20.0.0+
|
|
||||||
{162, nullptr, "Unknown162"}, //20.0.0+
|
|
||||||
{163, nullptr, "Unknown163"}, //20.0.0+
|
|
||||||
{164, nullptr, "Unknown164"}, //20.0.0+
|
|
||||||
{165, nullptr, "Unknown165"}, //20.0.0+
|
|
||||||
{166, nullptr, "Unknown166"}, //20.0.0+
|
|
||||||
{167, nullptr, "Unknown167"}, //20.0.0+
|
|
||||||
{168, nullptr, "Unknown168"}, //20.0.0+
|
|
||||||
{169, nullptr, "Unknown169"}, //20.0.0+
|
|
||||||
{170, nullptr, "Unknown170"}, //20.0.0+
|
|
||||||
{171, nullptr, "Unknown171"}, //20.0.0+
|
|
||||||
{172, nullptr, "Unknown172"}, //20.0.0+
|
|
||||||
{173, nullptr, "Unknown173"}, //20.0.0+
|
|
||||||
{174, nullptr, "Unknown174"}, //20.0.0+
|
|
||||||
{175, nullptr, "Unknown175"}, //20.0.0+
|
|
||||||
{176, nullptr, "Unknown176"}, //20.0.0+
|
|
||||||
{177, nullptr, "Unknown177"}, //20.0.0+
|
|
||||||
{2000, nullptr, "Unknown2000"}, //20.0.0+
|
|
||||||
{2001, nullptr, "Unknown2001"}, //20.0.0+
|
|
||||||
{2002, nullptr, "Unknown2002"}, //20.0.0+
|
|
||||||
{2003, nullptr, "Unknown2003"}, //20.0.0+
|
|
||||||
{2004, nullptr, "Unknown2004"}, //20.0.0+
|
|
||||||
{2007, nullptr, "Unknown2007"}, //20.0.0+
|
|
||||||
{2011, nullptr, "Unknown2011"}, //20.0.0+
|
|
||||||
{2012, nullptr, "Unknown2012"}, //20.0.0+
|
|
||||||
{2013, nullptr, "Unknown2013"}, //20.0.0+
|
|
||||||
{2014, nullptr, "Unknown2014"}, //20.0.0+
|
|
||||||
{2015, nullptr, "Unknown2015"}, //20.0.0+
|
|
||||||
{2016, nullptr, "Unknown2016"}, //20.0.0+
|
|
||||||
{2017, nullptr, "Unknown2017"}, //20.0.0+
|
|
||||||
{2018, nullptr, "Unknown2018"}, //20.0.0+
|
|
||||||
{2019, nullptr, "Unknown2019"}, //20.0.0+
|
|
||||||
{2020, nullptr, "Unknown2020"}, //20.0.0+
|
|
||||||
{2021, nullptr, "Unknown2021"}, //20.0.0+
|
|
||||||
{2022, nullptr, "Unknown2022"}, //20.0.0+
|
|
||||||
{2023, nullptr, "Unknown2023"}, //20.0.0+
|
|
||||||
{2024, nullptr, "Unknown2024"}, //20.0.0+
|
|
||||||
{2025, nullptr, "Unknown2025"}, //20.0.0+
|
|
||||||
{2026, nullptr, "Unknown2026"}, //20.0.0+
|
|
||||||
{2027, nullptr, "Unknown2027"}, //20.0.0+
|
|
||||||
{2028, nullptr, "Unknown2028"}, //20.0.0+
|
|
||||||
{2029, nullptr, "Unknown2029"}, //20.0.0+
|
|
||||||
{2030, nullptr, "Unknown2030"}, //20.0.0+
|
|
||||||
{2031, nullptr, "Unknown2031"}, //20.0.0+
|
|
||||||
{2032, nullptr, "Unknown2032"}, //20.0.0+
|
|
||||||
{2033, nullptr, "Unknown2033"}, //20.0.0+
|
|
||||||
{2034, nullptr, "Unknown2034"}, //20.0.0+
|
|
||||||
{2035, nullptr, "Unknown2035"}, //20.0.0+
|
|
||||||
{2036, nullptr, "Unknown2036"}, //20.0.0+
|
|
||||||
{2037, nullptr, "Unknown2037"}, //20.0.0+
|
|
||||||
{2038, nullptr, "Unknown2038"}, //20.0.0+
|
|
||||||
{2039, nullptr, "Unknown2039"}, //20.0.0+
|
|
||||||
{2040, nullptr, "Unknown2040"}, //20.0.0+
|
|
||||||
{2041, nullptr, "Unknown2041"}, //20.0.0+
|
|
||||||
{2042, nullptr, "Unknown2042"}, //20.0.0+
|
|
||||||
{2043, nullptr, "Unknown2043"}, //20.0.0+
|
|
||||||
{2044, nullptr, "Unknown2044"}, //20.0.0+
|
|
||||||
{2045, nullptr, "Unknown2045"}, //20.0.0+
|
|
||||||
{2046, nullptr, "Unknown2046"}, //20.0.0+
|
|
||||||
{2047, nullptr, "Unknown2047"}, //20.0.0+
|
|
||||||
{2048, nullptr, "Unknown2048"}, //20.0.0+
|
|
||||||
{2049, nullptr, "Unknown2049"}, //20.0.0+
|
|
||||||
{2050, nullptr, "Unknown2050"}, //20.0.0+
|
|
||||||
{2051, nullptr, "Unknown2051"}, //20.0.0+
|
|
||||||
{3000, nullptr, "RequestLatestApplicationIcon"}, //17.0.0+
|
|
||||||
{3001, nullptr, "RequestDownloadIdbeLatestIconFile"}, //17.0.0+
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "CreateSystemUpdateTask"},
|
||||||
|
FunctionInfo{1, nullptr, "DestroySystemUpdateTask"},
|
||||||
|
FunctionInfo{2, nullptr, "ListSystemUpdateTask"},
|
||||||
|
FunctionInfo{3, nullptr, "RequestSystemUpdateTaskRun"},
|
||||||
|
FunctionInfo{4, nullptr, "GetSystemUpdateTaskInfo"},
|
||||||
|
FunctionInfo{5, nullptr, "CommitSystemUpdateTask"},
|
||||||
|
FunctionInfo{6, nullptr, "CreateNetworkInstallTask"},
|
||||||
|
FunctionInfo{7, nullptr, "DestroyNetworkInstallTask"},
|
||||||
|
FunctionInfo{8, nullptr, "ListNetworkInstallTask"},
|
||||||
|
FunctionInfo{9, nullptr, "RequestNetworkInstallTaskRun"},
|
||||||
|
FunctionInfo{10, nullptr, "GetNetworkInstallTaskInfo"},
|
||||||
|
FunctionInfo{11, nullptr, "CommitNetworkInstallTask"},
|
||||||
|
FunctionInfo{12, nullptr, "RequestLatestSystemUpdateMeta"},
|
||||||
|
FunctionInfo{14, nullptr, "ListApplicationNetworkInstallTask"},
|
||||||
|
FunctionInfo{15, nullptr, "ListNetworkInstallTaskContentMeta"},
|
||||||
|
FunctionInfo{16, nullptr, "RequestLatestVersion"},
|
||||||
|
FunctionInfo{17, nullptr, "SetNetworkInstallTaskAttribute"},
|
||||||
|
FunctionInfo{18, nullptr, "AddNetworkInstallTaskContentMeta"},
|
||||||
|
FunctionInfo{19, nullptr, "GetDownloadedSystemDataPath"},
|
||||||
|
FunctionInfo{20, nullptr, "CalculateNetworkInstallTaskRequiredSize"},
|
||||||
|
FunctionInfo{21, nullptr, "IsExFatDriverIncluded"},
|
||||||
|
FunctionInfo{22, nullptr, "GetBackgroundDownloadStressTaskInfo"},
|
||||||
|
FunctionInfo{23, nullptr, "RequestDeviceAuthenticationToken"},
|
||||||
|
FunctionInfo{24, nullptr, "RequestGameCardRegistrationStatus"},
|
||||||
|
FunctionInfo{25, nullptr, "RequestRegisterGameCard"},
|
||||||
|
FunctionInfo{26, nullptr, "RequestRegisterNotificationToken"},
|
||||||
|
FunctionInfo{27, nullptr, "RequestDownloadTaskList"},
|
||||||
|
FunctionInfo{28, nullptr, "RequestApplicationControl"},
|
||||||
|
FunctionInfo{29, nullptr, "RequestLatestApplicationControl"},
|
||||||
|
FunctionInfo{30, nullptr, "RequestVersionList"},
|
||||||
|
FunctionInfo{31, nullptr, "CreateApplyDeltaTask"},
|
||||||
|
FunctionInfo{32, nullptr, "DestroyApplyDeltaTask"},
|
||||||
|
FunctionInfo{33, nullptr, "ListApplicationApplyDeltaTask"},
|
||||||
|
FunctionInfo{34, nullptr, "RequestApplyDeltaTaskRun"},
|
||||||
|
FunctionInfo{35, nullptr, "GetApplyDeltaTaskInfo"},
|
||||||
|
FunctionInfo{36, nullptr, "ListApplyDeltaTask"},
|
||||||
|
FunctionInfo{37, nullptr, "CommitApplyDeltaTask"},
|
||||||
|
FunctionInfo{38, nullptr, "CalculateApplyDeltaTaskRequiredSize"},
|
||||||
|
FunctionInfo{39, nullptr, "PrepareShutdown"},
|
||||||
|
FunctionInfo{40, nullptr, "ListApplyDeltaTask"},
|
||||||
|
FunctionInfo{41, nullptr, "ClearNotEnoughSpaceStateOfApplyDeltaTask"},
|
||||||
|
FunctionInfo{42, nullptr, "CreateApplyDeltaTaskFromDownloadTask"},
|
||||||
|
FunctionInfo{43, nullptr, "GetBackgroundApplyDeltaStressTaskInfo"},
|
||||||
|
FunctionInfo{44, nullptr, "GetApplyDeltaTaskRequiredStorage"},
|
||||||
|
FunctionInfo{45, nullptr, "CalculateNetworkInstallTaskContentsSize"},
|
||||||
|
FunctionInfo{46, nullptr, "PrepareShutdownForSystemUpdate"},
|
||||||
|
FunctionInfo{47, nullptr, "FindMaxRequiredApplicationVersionOfTask"},
|
||||||
|
FunctionInfo{48, nullptr, "CommitNetworkInstallTaskPartially"},
|
||||||
|
FunctionInfo{49, nullptr, "ListNetworkInstallTaskCommittedContentMeta"},
|
||||||
|
FunctionInfo{50, nullptr, "ListNetworkInstallTaskNotCommittedContentMeta"},
|
||||||
|
FunctionInfo{51, nullptr, "FindMaxRequiredSystemVersionOfTask"},
|
||||||
|
FunctionInfo{52, nullptr, "GetNetworkInstallTaskErrorContext"},
|
||||||
|
FunctionInfo{53, nullptr, "CreateLocalCommunicationReceiveApplicationTask"},
|
||||||
|
FunctionInfo{54, nullptr, "DestroyLocalCommunicationReceiveApplicationTask"},
|
||||||
|
FunctionInfo{55, nullptr, "ListLocalCommunicationReceiveApplicationTask"},
|
||||||
|
FunctionInfo{56, nullptr, "RequestLocalCommunicationReceiveApplicationTaskRun"},
|
||||||
|
FunctionInfo{57, nullptr, "GetLocalCommunicationReceiveApplicationTaskInfo"},
|
||||||
|
FunctionInfo{58, nullptr, "CommitLocalCommunicationReceiveApplicationTask"},
|
||||||
|
FunctionInfo{59, nullptr, "ListLocalCommunicationReceiveApplicationTaskContentMeta"},
|
||||||
|
FunctionInfo{60, nullptr, "CreateLocalCommunicationSendApplicationTask"},
|
||||||
|
FunctionInfo{61, nullptr, "RequestLocalCommunicationSendApplicationTaskRun"},
|
||||||
|
FunctionInfo{62, nullptr, "GetLocalCommunicationReceiveApplicationTaskErrorContext"},
|
||||||
|
FunctionInfo{63, nullptr, "GetLocalCommunicationSendApplicationTaskInfo"},
|
||||||
|
FunctionInfo{64, nullptr, "DestroyLocalCommunicationSendApplicationTask"},
|
||||||
|
FunctionInfo{65, nullptr, "GetLocalCommunicationSendApplicationTaskErrorContext"},
|
||||||
|
FunctionInfo{66, nullptr, "CalculateLocalCommunicationReceiveApplicationTaskRequiredSize"},
|
||||||
|
FunctionInfo{67, nullptr, "ListApplicationLocalCommunicationReceiveApplicationTask"},
|
||||||
|
FunctionInfo{68, nullptr, "ListApplicationLocalCommunicationSendApplicationTask"},
|
||||||
|
FunctionInfo{69, nullptr, "CreateLocalCommunicationReceiveSystemUpdateTask"},
|
||||||
|
FunctionInfo{70, nullptr, "DestroyLocalCommunicationReceiveSystemUpdateTask"},
|
||||||
|
FunctionInfo{71, nullptr, "ListLocalCommunicationReceiveSystemUpdateTask"},
|
||||||
|
FunctionInfo{72, nullptr, "RequestLocalCommunicationReceiveSystemUpdateTaskRun"},
|
||||||
|
FunctionInfo{73, nullptr, "GetLocalCommunicationReceiveSystemUpdateTaskInfo"},
|
||||||
|
FunctionInfo{74, nullptr, "CommitLocalCommunicationReceiveSystemUpdateTask"},
|
||||||
|
FunctionInfo{75, nullptr, "GetLocalCommunicationReceiveSystemUpdateTaskErrorContext"},
|
||||||
|
FunctionInfo{76, nullptr, "CreateLocalCommunicationSendSystemUpdateTask"},
|
||||||
|
FunctionInfo{77, nullptr, "RequestLocalCommunicationSendSystemUpdateTaskRun"},
|
||||||
|
FunctionInfo{78, nullptr, "GetLocalCommunicationSendSystemUpdateTaskInfo"},
|
||||||
|
FunctionInfo{79, nullptr, "DestroyLocalCommunicationSendSystemUpdateTask"},
|
||||||
|
FunctionInfo{80, nullptr, "GetLocalCommunicationSendSystemUpdateTaskErrorContext"},
|
||||||
|
FunctionInfo{81, nullptr, "ListLocalCommunicationSendSystemUpdateTask"},
|
||||||
|
FunctionInfo{82, nullptr, "GetReceivedSystemDataPath"},
|
||||||
|
FunctionInfo{83, nullptr, "CalculateApplyDeltaTaskOccupiedSize"},
|
||||||
|
FunctionInfo{84, nullptr, "ReloadErrorSimulation"},
|
||||||
|
FunctionInfo{85, nullptr, "ListNetworkInstallTaskContentMetaFromInstallMeta"},
|
||||||
|
FunctionInfo{86, nullptr, "ListNetworkInstallTaskOccupiedSize"},
|
||||||
|
FunctionInfo{87, nullptr, "RequestQueryAvailableELicenses"},
|
||||||
|
FunctionInfo{88, nullptr, "RequestAssignELicenses"},
|
||||||
|
FunctionInfo{89, nullptr, "RequestExtendELicenses"},
|
||||||
|
FunctionInfo{90, nullptr, "RequestSyncELicenses"},
|
||||||
|
FunctionInfo{91, nullptr, "Unknown91"}, //6.0.0-14.1.2
|
||||||
|
FunctionInfo{92, nullptr, "Unknown92"}, //21.0.0+
|
||||||
|
FunctionInfo{93, nullptr, "RequestReportActiveELicenses"},
|
||||||
|
FunctionInfo{94, nullptr, "RequestReportActiveELicensesPassively"},
|
||||||
|
FunctionInfo{95, nullptr, "RequestRegisterDynamicRightsNotificationToken"},
|
||||||
|
FunctionInfo{96, nullptr, "RequestAssignAllDeviceLinkedELicenses"},
|
||||||
|
FunctionInfo{97, nullptr, "RequestRevokeAllELicenses"},
|
||||||
|
FunctionInfo{98, nullptr, "RequestPrefetchForDynamicRights"},
|
||||||
|
FunctionInfo{99, nullptr, "CreateNetworkInstallTask"},
|
||||||
|
FunctionInfo{100, nullptr, "ListNetworkInstallTaskRightsIds"},
|
||||||
|
FunctionInfo{101, nullptr, "RequestDownloadETickets"},
|
||||||
|
FunctionInfo{102, nullptr, "RequestQueryDownloadableContents"},
|
||||||
|
FunctionInfo{103, nullptr, "DeleteNetworkInstallTaskContentMeta"},
|
||||||
|
FunctionInfo{104, nullptr, "RequestIssueEdgeTokenForDebug"},
|
||||||
|
FunctionInfo{105, nullptr, "RequestQueryAvailableELicenses2"},
|
||||||
|
FunctionInfo{106, nullptr, "RequestAssignELicenses2"},
|
||||||
|
FunctionInfo{107, nullptr, "GetNetworkInstallTaskStateCounter"},
|
||||||
|
FunctionInfo{108, nullptr, "InvalidateDynamicRightsNaIdTokenCacheForDebug"},
|
||||||
|
FunctionInfo{109, nullptr, "ListNetworkInstallTaskPartialInstallContentMeta"},
|
||||||
|
FunctionInfo{110, nullptr, "ListNetworkInstallTaskRightsIdsFromIndex"},
|
||||||
|
FunctionInfo{111, nullptr, "AddNetworkInstallTaskContentMetaForUser"},
|
||||||
|
FunctionInfo{112, nullptr, "RequestAssignELicensesAndDownloadETickets"},
|
||||||
|
FunctionInfo{113, nullptr, "RequestQueryAvailableCommonELicenses"},
|
||||||
|
FunctionInfo{114, nullptr, "SetNetworkInstallTaskExtendedAttribute"},
|
||||||
|
FunctionInfo{115, nullptr, "GetNetworkInstallTaskExtendedAttribute"},
|
||||||
|
FunctionInfo{116, nullptr, "GetAllocatorInfo"},
|
||||||
|
FunctionInfo{117, nullptr, "RequestQueryDownloadableContentsByApplicationId"},
|
||||||
|
FunctionInfo{118, nullptr, "MarkNoDownloadRightsErrorResolved"},
|
||||||
|
FunctionInfo{119, nullptr, "GetApplyDeltaTaskAllAppliedContentMeta"},
|
||||||
|
FunctionInfo{120, nullptr, "PrioritizeNetworkInstallTask"},
|
||||||
|
FunctionInfo{121, nullptr, "RequestQueryAvailableCommonELicenses2"},
|
||||||
|
FunctionInfo{122, nullptr, "RequestAssignCommonELicenses"},
|
||||||
|
FunctionInfo{123, nullptr, "RequestAssignCommonELicenses2"},
|
||||||
|
FunctionInfo{124, nullptr, "IsNetworkInstallTaskFrontOfQueue"},
|
||||||
|
FunctionInfo{125, nullptr, "PrioritizeApplyDeltaTask"},
|
||||||
|
FunctionInfo{126, nullptr, "RerouteDownloadingPatch"},
|
||||||
|
FunctionInfo{127, nullptr, "UnmarkNoDownloadRightsErrorResolved"},
|
||||||
|
FunctionInfo{128, nullptr, "RequestContentsSize"},
|
||||||
|
FunctionInfo{129, nullptr, "RequestContentsAuthorizationToken"},
|
||||||
|
FunctionInfo{130, nullptr, "RequestCdnVendorDiscovery"},
|
||||||
|
FunctionInfo{131, nullptr, "RefreshDebugAvailability"},
|
||||||
|
FunctionInfo{132, nullptr, "ClearResponseSimulationEntry"},
|
||||||
|
FunctionInfo{133, nullptr, "RegisterResponseSimulationEntry"},
|
||||||
|
FunctionInfo{134, nullptr, "GetProcessedCdnVendors"},
|
||||||
|
FunctionInfo{135, nullptr, "RefreshRuntimeBehaviorsForDebug"},
|
||||||
|
FunctionInfo{136, nullptr, "RequestOnlineSubscriptionFreeTrialAvailability"},
|
||||||
|
FunctionInfo{137, nullptr, "GetNetworkInstallTaskContentMetaCount"},
|
||||||
|
FunctionInfo{138, nullptr, "RequestRevokeELicenses"},
|
||||||
|
FunctionInfo{139, nullptr, "EnableNetworkConnectionToUseApplicationCore"},
|
||||||
|
FunctionInfo{140, nullptr, "DisableNetworkConnectionToUseApplicationCore"},
|
||||||
|
FunctionInfo{141, nullptr, "IsNetworkConnectionEnabledToUseApplicationCore"},
|
||||||
|
FunctionInfo{142, nullptr, "RequestCheckSafeSystemVersion"},
|
||||||
|
FunctionInfo{143, nullptr, "RequestApplicationIcon"},
|
||||||
|
FunctionInfo{144, nullptr, "RequestDownloadIdbeIconFile"},
|
||||||
|
FunctionInfo{147, nullptr, "Unknown147"}, //18.0.0+
|
||||||
|
FunctionInfo{148, nullptr, "Unknown148"}, //18.0.0+
|
||||||
|
FunctionInfo{150, nullptr, "Unknown150"}, //19.0.0+
|
||||||
|
FunctionInfo{151, nullptr, "Unknown151"}, //20.0.0+
|
||||||
|
FunctionInfo{152, nullptr, "Unknown152"}, //20.0.0+
|
||||||
|
FunctionInfo{153, nullptr, "Unknown153"}, //20.0.0+
|
||||||
|
FunctionInfo{154, nullptr, "Unknown154"}, //20.0.0+
|
||||||
|
FunctionInfo{155, nullptr, "Unknown155"}, //20.0.0+
|
||||||
|
FunctionInfo{156, nullptr, "Unknown156"}, //20.0.0+
|
||||||
|
FunctionInfo{157, nullptr, "Unknown157"}, //20.0.0+
|
||||||
|
FunctionInfo{158, nullptr, "Unknown158"}, //20.0.0+
|
||||||
|
FunctionInfo{159, nullptr, "Unknown159"}, //20.0.0+
|
||||||
|
FunctionInfo{160, nullptr, "Unknown160"}, //20.0.0+
|
||||||
|
FunctionInfo{161, nullptr, "Unknown161"}, //20.0.0+
|
||||||
|
FunctionInfo{162, nullptr, "Unknown162"}, //20.0.0+
|
||||||
|
FunctionInfo{163, nullptr, "Unknown163"}, //20.0.0+
|
||||||
|
FunctionInfo{164, nullptr, "Unknown164"}, //20.0.0+
|
||||||
|
FunctionInfo{165, nullptr, "Unknown165"}, //20.0.0+
|
||||||
|
FunctionInfo{166, nullptr, "Unknown166"}, //20.0.0+
|
||||||
|
FunctionInfo{167, nullptr, "Unknown167"}, //20.0.0+
|
||||||
|
FunctionInfo{168, nullptr, "Unknown168"}, //20.0.0+
|
||||||
|
FunctionInfo{169, nullptr, "Unknown169"}, //20.0.0+
|
||||||
|
FunctionInfo{170, nullptr, "Unknown170"}, //20.0.0+
|
||||||
|
FunctionInfo{171, nullptr, "Unknown171"}, //20.0.0+
|
||||||
|
FunctionInfo{172, nullptr, "Unknown172"}, //20.0.0+
|
||||||
|
FunctionInfo{173, nullptr, "Unknown173"}, //20.0.0+
|
||||||
|
FunctionInfo{174, nullptr, "Unknown174"}, //20.0.0+
|
||||||
|
FunctionInfo{175, nullptr, "Unknown175"}, //20.0.0+
|
||||||
|
FunctionInfo{176, nullptr, "Unknown176"}, //20.0.0+
|
||||||
|
FunctionInfo{177, nullptr, "Unknown177"}, //20.0.0+
|
||||||
|
FunctionInfo{2000, nullptr, "Unknown2000"}, //20.0.0+
|
||||||
|
FunctionInfo{2001, nullptr, "Unknown2001"}, //20.0.0+
|
||||||
|
FunctionInfo{2002, nullptr, "Unknown2002"}, //20.0.0+
|
||||||
|
FunctionInfo{2003, nullptr, "Unknown2003"}, //20.0.0+
|
||||||
|
FunctionInfo{2004, nullptr, "Unknown2004"}, //20.0.0+
|
||||||
|
FunctionInfo{2007, nullptr, "Unknown2007"}, //20.0.0+
|
||||||
|
FunctionInfo{2011, nullptr, "Unknown2011"}, //20.0.0+
|
||||||
|
FunctionInfo{2012, nullptr, "Unknown2012"}, //20.0.0+
|
||||||
|
FunctionInfo{2013, nullptr, "Unknown2013"}, //20.0.0+
|
||||||
|
FunctionInfo{2014, nullptr, "Unknown2014"}, //20.0.0+
|
||||||
|
FunctionInfo{2015, nullptr, "Unknown2015"}, //20.0.0+
|
||||||
|
FunctionInfo{2016, nullptr, "Unknown2016"}, //20.0.0+
|
||||||
|
FunctionInfo{2017, nullptr, "Unknown2017"}, //20.0.0+
|
||||||
|
FunctionInfo{2018, nullptr, "Unknown2018"}, //20.0.0+
|
||||||
|
FunctionInfo{2019, nullptr, "Unknown2019"}, //20.0.0+
|
||||||
|
FunctionInfo{2020, nullptr, "Unknown2020"}, //20.0.0+
|
||||||
|
FunctionInfo{2021, nullptr, "Unknown2021"}, //20.0.0+
|
||||||
|
FunctionInfo{2022, nullptr, "Unknown2022"}, //20.0.0+
|
||||||
|
FunctionInfo{2023, nullptr, "Unknown2023"}, //20.0.0+
|
||||||
|
FunctionInfo{2024, nullptr, "Unknown2024"}, //20.0.0+
|
||||||
|
FunctionInfo{2025, nullptr, "Unknown2025"}, //20.0.0+
|
||||||
|
FunctionInfo{2026, nullptr, "Unknown2026"}, //20.0.0+
|
||||||
|
FunctionInfo{2027, nullptr, "Unknown2027"}, //20.0.0+
|
||||||
|
FunctionInfo{2028, nullptr, "Unknown2028"}, //20.0.0+
|
||||||
|
FunctionInfo{2029, nullptr, "Unknown2029"}, //20.0.0+
|
||||||
|
FunctionInfo{2030, nullptr, "Unknown2030"}, //20.0.0+
|
||||||
|
FunctionInfo{2031, nullptr, "Unknown2031"}, //20.0.0+
|
||||||
|
FunctionInfo{2032, nullptr, "Unknown2032"}, //20.0.0+
|
||||||
|
FunctionInfo{2033, nullptr, "Unknown2033"}, //20.0.0+
|
||||||
|
FunctionInfo{2034, nullptr, "Unknown2034"}, //20.0.0+
|
||||||
|
FunctionInfo{2035, nullptr, "Unknown2035"}, //20.0.0+
|
||||||
|
FunctionInfo{2036, nullptr, "Unknown2036"}, //20.0.0+
|
||||||
|
FunctionInfo{2037, nullptr, "Unknown2037"}, //20.0.0+
|
||||||
|
FunctionInfo{2038, nullptr, "Unknown2038"}, //20.0.0+
|
||||||
|
FunctionInfo{2039, nullptr, "Unknown2039"}, //20.0.0+
|
||||||
|
FunctionInfo{2040, nullptr, "Unknown2040"}, //20.0.0+
|
||||||
|
FunctionInfo{2041, nullptr, "Unknown2041"}, //20.0.0+
|
||||||
|
FunctionInfo{2042, nullptr, "Unknown2042"}, //20.0.0+
|
||||||
|
FunctionInfo{2043, nullptr, "Unknown2043"}, //20.0.0+
|
||||||
|
FunctionInfo{2044, nullptr, "Unknown2044"}, //20.0.0+
|
||||||
|
FunctionInfo{2045, nullptr, "Unknown2045"}, //20.0.0+
|
||||||
|
FunctionInfo{2046, nullptr, "Unknown2046"}, //20.0.0+
|
||||||
|
FunctionInfo{2047, nullptr, "Unknown2047"}, //20.0.0+
|
||||||
|
FunctionInfo{2048, nullptr, "Unknown2048"}, //20.0.0+
|
||||||
|
FunctionInfo{2049, nullptr, "Unknown2049"}, //20.0.0+
|
||||||
|
FunctionInfo{2050, nullptr, "Unknown2050"}, //20.0.0+
|
||||||
|
FunctionInfo{2051, nullptr, "Unknown2051"}, //20.0.0+
|
||||||
|
FunctionInfo{3000, nullptr, "RequestLatestApplicationIcon"}, //17.0.0+
|
||||||
|
FunctionInfo{3001, nullptr, "RequestDownloadIdbeLatestIconFile"} //17.0.0+
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class NIM_ECA final : public ServiceFramework<NIM_ECA> {
|
class NIM_ECA final : public ServiceFramework<NIM_ECA> {
|
||||||
public:
|
public:
|
||||||
explicit NIM_ECA(Core::System& system_) : ServiceFramework{system_, "nim:eca"} {
|
explicit NIM_ECA(Core::System& system_) : ServiceFramework{system_, "nim:eca"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &NIM_ECA::CreateServerInterface, "CreateServerInterface"},
|
|
||||||
{1, nullptr, "RefreshDebugAvailability"},
|
|
||||||
{2, nullptr, "ClearDebugResponse"},
|
|
||||||
{3, nullptr, "RegisterDebugResponse"},
|
|
||||||
{4, &NIM_ECA::IsLargeResourceAvailable, "IsLargeResourceAvailable"},
|
|
||||||
{5, &NIM_ECA::CreateServerInterface2, "CreateServerInterface2"} // 17.0.0+
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &NIM_ECA::CreateServerInterface, "CreateServerInterface"},
|
||||||
|
FunctionInfo{1, nullptr, "RefreshDebugAvailability"},
|
||||||
|
FunctionInfo{2, nullptr, "ClearDebugResponse"},
|
||||||
|
FunctionInfo{3, nullptr, "RegisterDebugResponse"},
|
||||||
|
FunctionInfo{4, &NIM_ECA::IsLargeResourceAvailable, "IsLargeResourceAvailable"},
|
||||||
|
FunctionInfo{5, &NIM_ECA::CreateServerInterface2, "CreateServerInterface2"} // 17.0.0+
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -467,41 +457,39 @@ private:
|
|||||||
|
|
||||||
class NIM_SHP final : public ServiceFramework<NIM_SHP> {
|
class NIM_SHP final : public ServiceFramework<NIM_SHP> {
|
||||||
public:
|
public:
|
||||||
explicit NIM_SHP(Core::System& system_) : ServiceFramework{system_, "nim:shp"} {
|
explicit NIM_SHP(Core::System& system_) : ServiceFramework{system_, "nim:shp"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "RequestDeviceAuthenticationToken"},
|
|
||||||
{1, nullptr, "RequestCachedDeviceAuthenticationToken"},
|
|
||||||
{2, nullptr, "RequestEdgeToken"},
|
|
||||||
{3, nullptr, "RequestCachedEdgeToken"},
|
|
||||||
{100, nullptr, "RequestRegisterDeviceAccount"},
|
|
||||||
{101, nullptr, "RequestUnregisterDeviceAccount"},
|
|
||||||
{102, nullptr, "RequestDeviceAccountStatus"},
|
|
||||||
{103, nullptr, "GetDeviceAccountInfo"},
|
|
||||||
{104, nullptr, "RequestDeviceRegistrationInfo"},
|
|
||||||
{105, nullptr, "RequestTransferDeviceAccount"},
|
|
||||||
{106, nullptr, "RequestSyncRegistration"},
|
|
||||||
{107, nullptr, "IsOwnDeviceId"},
|
|
||||||
{200, nullptr, "RequestRegisterNotificationToken"},
|
|
||||||
{300, nullptr, "RequestUnlinkDevice"},
|
|
||||||
{301, nullptr, "RequestUnlinkDeviceIntegrated"},
|
|
||||||
{302, nullptr, "RequestLinkDevice"},
|
|
||||||
{303, nullptr, "HasDeviceLink"},
|
|
||||||
{304, nullptr, "RequestUnlinkDeviceAll"},
|
|
||||||
{305, nullptr, "RequestCreateVirtualAccount"},
|
|
||||||
{306, nullptr, "RequestDeviceLinkStatus"},
|
|
||||||
{400, nullptr, "GetAccountByVirtualAccount"},
|
|
||||||
{401, nullptr, "GetVirtualAccount"},
|
|
||||||
{500, nullptr, "RequestSyncTicketLegacy"},
|
|
||||||
{501, nullptr, "RequestDownloadTicket"},
|
|
||||||
{502, nullptr, "RequestDownloadTicketForPrepurchasedContents"},
|
|
||||||
{503, nullptr, "RequestSyncTicket"},
|
|
||||||
{504, nullptr, "RequestDownloadTicketForPrepurchasedContents2"},
|
|
||||||
{505, nullptr, "RequestDownloadTicketForPrepurchasedContentsForAccount"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "RequestDeviceAuthenticationToken"},
|
||||||
|
FunctionInfo{1, nullptr, "RequestCachedDeviceAuthenticationToken"},
|
||||||
|
FunctionInfo{2, nullptr, "RequestEdgeToken"},
|
||||||
|
FunctionInfo{3, nullptr, "RequestCachedEdgeToken"},
|
||||||
|
FunctionInfo{100, nullptr, "RequestRegisterDeviceAccount"},
|
||||||
|
FunctionInfo{101, nullptr, "RequestUnregisterDeviceAccount"},
|
||||||
|
FunctionInfo{102, nullptr, "RequestDeviceAccountStatus"},
|
||||||
|
FunctionInfo{103, nullptr, "GetDeviceAccountInfo"},
|
||||||
|
FunctionInfo{104, nullptr, "RequestDeviceRegistrationInfo"},
|
||||||
|
FunctionInfo{105, nullptr, "RequestTransferDeviceAccount"},
|
||||||
|
FunctionInfo{106, nullptr, "RequestSyncRegistration"},
|
||||||
|
FunctionInfo{107, nullptr, "IsOwnDeviceId"},
|
||||||
|
FunctionInfo{200, nullptr, "RequestRegisterNotificationToken"},
|
||||||
|
FunctionInfo{300, nullptr, "RequestUnlinkDevice"},
|
||||||
|
FunctionInfo{301, nullptr, "RequestUnlinkDeviceIntegrated"},
|
||||||
|
FunctionInfo{302, nullptr, "RequestLinkDevice"},
|
||||||
|
FunctionInfo{303, nullptr, "HasDeviceLink"},
|
||||||
|
FunctionInfo{304, nullptr, "RequestUnlinkDeviceAll"},
|
||||||
|
FunctionInfo{305, nullptr, "RequestCreateVirtualAccount"},
|
||||||
|
FunctionInfo{306, nullptr, "RequestDeviceLinkStatus"},
|
||||||
|
FunctionInfo{400, nullptr, "GetAccountByVirtualAccount"},
|
||||||
|
FunctionInfo{401, nullptr, "GetVirtualAccount"},
|
||||||
|
FunctionInfo{500, nullptr, "RequestSyncTicketLegacy"},
|
||||||
|
FunctionInfo{501, nullptr, "RequestDownloadTicket"},
|
||||||
|
FunctionInfo{502, nullptr, "RequestDownloadTicketForPrepurchasedContents"},
|
||||||
|
FunctionInfo{503, nullptr, "RequestSyncTicket"},
|
||||||
|
FunctionInfo{504, nullptr, "RequestDownloadTicketForPrepurchasedContents2"},
|
||||||
|
FunctionInfo{505, nullptr, "RequestDownloadTicketForPrepurchasedContentsForAccount"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -512,13 +500,13 @@ public:
|
|||||||
: ServiceFramework{system_, "IEnsureNetworkClockAvailabilityService"},
|
: ServiceFramework{system_, "IEnsureNetworkClockAvailabilityService"},
|
||||||
service_context{system_, "IEnsureNetworkClockAvailabilityService"} {
|
service_context{system_, "IEnsureNetworkClockAvailabilityService"} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &IEnsureNetworkClockAvailabilityService::StartTask, "StartTask"},
|
FunctionInfo{0, &IEnsureNetworkClockAvailabilityService::StartTask, "StartTask"},
|
||||||
{1, &IEnsureNetworkClockAvailabilityService::GetFinishNotificationEvent,
|
FunctionInfo{1, &IEnsureNetworkClockAvailabilityService::GetFinishNotificationEvent,
|
||||||
"GetFinishNotificationEvent"},
|
"GetFinishNotificationEvent"},
|
||||||
{2, &IEnsureNetworkClockAvailabilityService::GetResult, "GetResult"},
|
FunctionInfo{2, &IEnsureNetworkClockAvailabilityService::GetResult, "GetResult"},
|
||||||
{3, &IEnsureNetworkClockAvailabilityService::Cancel, "Cancel"},
|
FunctionInfo{3, &IEnsureNetworkClockAvailabilityService::Cancel, "Cancel"},
|
||||||
{4, &IEnsureNetworkClockAvailabilityService::IsProcessing, "IsProcessing"},
|
FunctionInfo{4, &IEnsureNetworkClockAvailabilityService::IsProcessing, "IsProcessing"},
|
||||||
{5, &IEnsureNetworkClockAvailabilityService::GetServerTime, "GetServerTime"},
|
FunctionInfo{5, &IEnsureNetworkClockAvailabilityService::GetServerTime, "GetServerTime"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
|
|
||||||
@@ -587,16 +575,14 @@ private:
|
|||||||
|
|
||||||
class NTC final : public ServiceFramework<NTC> {
|
class NTC final : public ServiceFramework<NTC> {
|
||||||
public:
|
public:
|
||||||
explicit NTC(Core::System& system_) : ServiceFramework{system_, "ntc"} {
|
explicit NTC(Core::System& system_) : ServiceFramework{system_, "ntc"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &NTC::OpenEnsureNetworkClockAvailabilityService, "OpenEnsureNetworkClockAvailabilityService"},
|
|
||||||
{100, &NTC::SuspendAutonomicTimeCorrection, "SuspendAutonomicTimeCorrection"},
|
|
||||||
{101, &NTC::ResumeAutonomicTimeCorrection, "ResumeAutonomicTimeCorrection"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &NTC::OpenEnsureNetworkClockAvailabilityService, "OpenEnsureNetworkClockAvailabilityService"},
|
||||||
|
FunctionInfo{100, &NTC::SuspendAutonomicTimeCorrection, "SuspendAutonomicTimeCorrection"},
|
||||||
|
FunctionInfo{101, &NTC::ResumeAutonomicTimeCorrection, "ResumeAutonomicTimeCorrection"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -626,14 +612,13 @@ private:
|
|||||||
|
|
||||||
class NIM_ECAS final : public ServiceFramework<NIM_ECAS> {
|
class NIM_ECAS final : public ServiceFramework<NIM_ECAS> {
|
||||||
public:
|
public:
|
||||||
explicit NIM_ECAS(Core::System& system_) : ServiceFramework{system_, "nim:ecas"} {
|
explicit NIM_ECAS(Core::System& system_) : ServiceFramework{system_, "nim:ecas"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "RegisterSpecialClient"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "UnregisterSpecialClient"},
|
FunctionInfo{0, nullptr, "RegisterSpecialClient"},
|
||||||
};
|
FunctionInfo{1, nullptr, "UnregisterSpecialClient"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -19,79 +19,77 @@ class INpnsSystem final : public ServiceFramework<INpnsSystem> {
|
|||||||
public:
|
public:
|
||||||
explicit INpnsSystem(Core::System& system_)
|
explicit INpnsSystem(Core::System& system_)
|
||||||
: ServiceFramework{system_, "npns:s"}, service_context{system, "npns:s"},
|
: ServiceFramework{system_, "npns:s"}, service_context{system, "npns:s"},
|
||||||
get_receive_event{service_context}, get_request_change_state_cancel_event{service_context} {
|
get_receive_event{service_context}, get_request_change_state_cancel_event{service_context} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{1, nullptr, "ListenAll"},
|
|
||||||
{2, C<&INpnsSystem::ListenTo>, "ListenTo"},
|
|
||||||
{3, nullptr, "Receive"},
|
|
||||||
{4, nullptr, "ReceiveRaw"},
|
|
||||||
{5, C<&INpnsSystem::GetReceiveEvent>, "GetReceiveEvent"},
|
|
||||||
{6, nullptr, "ListenUndelivered"},
|
|
||||||
{7, nullptr, "GetStateChangeEvent"},
|
|
||||||
{8, C<&INpnsSystem::ListenToByName>, "ListenToByName"},
|
|
||||||
{11, nullptr, "SubscribeTopic"},
|
|
||||||
{12, nullptr, "UnsubscribeTopic"},
|
|
||||||
{13, nullptr, "QueryIsTopicExist"},
|
|
||||||
{14, nullptr, "SubscribeTopicByAccount"}, // 18.0.0+
|
|
||||||
{15, nullptr, "UnsubscribeTopicByAccount"}, // 18.0.0+
|
|
||||||
{16, nullptr, "DownloadSubscriptionList"}, // 18.0.0+
|
|
||||||
{21, nullptr, "CreateToken"},
|
|
||||||
{22, nullptr, "CreateTokenWithApplicationId"},
|
|
||||||
{23, nullptr, "DestroyToken"},
|
|
||||||
{24, nullptr, "DestroyTokenWithApplicationId"},
|
|
||||||
{25, nullptr, "QueryIsTokenValid"},
|
|
||||||
{26, nullptr, "ListenToMyApplicationId"},
|
|
||||||
{27, nullptr, "DestroyTokenAll"},
|
|
||||||
{28, nullptr, "CreateTokenWithName"}, // 18.0.0+
|
|
||||||
{29, nullptr, "DestroyTokenWithName"}, // 18.0.0+
|
|
||||||
{31, nullptr, "UploadTokenToBaaS"},
|
|
||||||
{32, nullptr, "DestroyTokenForBaaS"},
|
|
||||||
{33, nullptr, "CreateTokenForBaaS"},
|
|
||||||
{34, nullptr, "SetBaaSDeviceAccountIdList"},
|
|
||||||
{35, nullptr, "LinkNsaId"}, // 17.0.0+
|
|
||||||
{36, nullptr, "UnlinkNsaId"}, // 17.0.0+
|
|
||||||
{37, nullptr, "RelinkNsaId"}, // 18.0.0+
|
|
||||||
{40, nullptr, "GetNetworkServiceAccountIdTokenRequestEvent"}, // 17.0.0+
|
|
||||||
{41, nullptr, "TryPopNetworkServiceAccountIdTokenRequestUid"}, // 17.0.0+
|
|
||||||
{42, nullptr, "SetNetworkServiceAccountIdTokenSuccess"}, // 17.0.0+
|
|
||||||
{43, nullptr, "SetNetworkServiceAccountIdTokenFailure"}, // 17.0.0+
|
|
||||||
{44, nullptr, "SetUidList"}, // 17.0.0+
|
|
||||||
{45, nullptr, "PutDigitalTwinKeyValue"}, // 17.0.0+
|
|
||||||
{51, nullptr, "DeleteDigitalTwinKeyValue"}, // 18.0.0+
|
|
||||||
{101, nullptr, "Suspend"},
|
|
||||||
{102, nullptr, "Resume"},
|
|
||||||
{103, C<&INpnsSystem::GetState>, "GetState"},
|
|
||||||
{104, nullptr, "GetStatistics"},
|
|
||||||
{105, nullptr, "GetPlayReportRequestEvent"},
|
|
||||||
{106, C<&INpnsSystem::GetLastNotifiedTime>, "GetLastNotifiedTime"}, // 18.0.0+
|
|
||||||
{107, nullptr, "SetLastNotifiedTime"}, // 18.0.0+
|
|
||||||
{111, nullptr, "GetJid"},
|
|
||||||
{112, nullptr, "CreateJid"},
|
|
||||||
{113, nullptr, "DestroyJid"},
|
|
||||||
{114, nullptr, "AttachJid"},
|
|
||||||
{115, nullptr, "DetachJid"},
|
|
||||||
{120, nullptr, "CreateNotificationReceiver"},
|
|
||||||
{151, nullptr, "GetStateWithHandover"},
|
|
||||||
{152, nullptr, "GetStateChangeEventWithHandover"},
|
|
||||||
{153, nullptr, "GetDropEventWithHandover"},
|
|
||||||
{154, nullptr, "CreateTokenAsync"},
|
|
||||||
{155, nullptr, "CreateTokenAsyncWithApplicationId"},
|
|
||||||
{156, nullptr, "CreateTokenWithNameAsync"}, // 18.0.0+
|
|
||||||
{161, C<&INpnsSystem::GetRequestChangeStateCancelEvent>, "GetRequestChangeStateCancelEvent"}, // 10.0.0+
|
|
||||||
{162, nullptr, "RequestChangeStateForceTimedWithCancelEvent"},
|
|
||||||
{201, nullptr, "RequestChangeStateForceTimed"},
|
|
||||||
{202, nullptr, "RequestChangeStateForceAsync"},
|
|
||||||
{301, nullptr, "GetPassword"}, // 18.0.0+
|
|
||||||
{302, nullptr, "GetAllImmigration"}, // 18.0.0+
|
|
||||||
{303, nullptr, "GetNotificationHistories"}, // 18.0.0+
|
|
||||||
{304, nullptr, "GetPersistentConnectionSummary"}, // 18.0.0+
|
|
||||||
{305, nullptr, "GetDigitalTwinSummary"}, // 18.0.0+
|
|
||||||
{306, nullptr, "GetDigitalTwinValue"}, // 18.0.0+
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{1, nullptr, "ListenAll"},
|
||||||
|
FunctionInfo{2, C<&INpnsSystem::ListenTo>, "ListenTo"},
|
||||||
|
FunctionInfo{3, nullptr, "Receive"},
|
||||||
|
FunctionInfo{4, nullptr, "ReceiveRaw"},
|
||||||
|
FunctionInfo{5, C<&INpnsSystem::GetReceiveEvent>, "GetReceiveEvent"},
|
||||||
|
FunctionInfo{6, nullptr, "ListenUndelivered"},
|
||||||
|
FunctionInfo{7, nullptr, "GetStateChangeEvent"},
|
||||||
|
FunctionInfo{8, C<&INpnsSystem::ListenToByName>, "ListenToByName"},
|
||||||
|
FunctionInfo{11, nullptr, "SubscribeTopic"},
|
||||||
|
FunctionInfo{12, nullptr, "UnsubscribeTopic"},
|
||||||
|
FunctionInfo{13, nullptr, "QueryIsTopicExist"},
|
||||||
|
FunctionInfo{14, nullptr, "SubscribeTopicByAccount"}, // 18.0.0+
|
||||||
|
FunctionInfo{15, nullptr, "UnsubscribeTopicByAccount"}, // 18.0.0+
|
||||||
|
FunctionInfo{16, nullptr, "DownloadSubscriptionList"}, // 18.0.0+
|
||||||
|
FunctionInfo{21, nullptr, "CreateToken"},
|
||||||
|
FunctionInfo{22, nullptr, "CreateTokenWithApplicationId"},
|
||||||
|
FunctionInfo{23, nullptr, "DestroyToken"},
|
||||||
|
FunctionInfo{24, nullptr, "DestroyTokenWithApplicationId"},
|
||||||
|
FunctionInfo{25, nullptr, "QueryIsTokenValid"},
|
||||||
|
FunctionInfo{26, nullptr, "ListenToMyApplicationId"},
|
||||||
|
FunctionInfo{27, nullptr, "DestroyTokenAll"},
|
||||||
|
FunctionInfo{28, nullptr, "CreateTokenWithName"}, // 18.0.0+
|
||||||
|
FunctionInfo{29, nullptr, "DestroyTokenWithName"}, // 18.0.0+
|
||||||
|
FunctionInfo{31, nullptr, "UploadTokenToBaaS"},
|
||||||
|
FunctionInfo{32, nullptr, "DestroyTokenForBaaS"},
|
||||||
|
FunctionInfo{33, nullptr, "CreateTokenForBaaS"},
|
||||||
|
FunctionInfo{34, nullptr, "SetBaaSDeviceAccountIdList"},
|
||||||
|
FunctionInfo{35, nullptr, "LinkNsaId"}, // 17.0.0+
|
||||||
|
FunctionInfo{36, nullptr, "UnlinkNsaId"}, // 17.0.0+
|
||||||
|
FunctionInfo{37, nullptr, "RelinkNsaId"}, // 18.0.0+
|
||||||
|
FunctionInfo{40, nullptr, "GetNetworkServiceAccountIdTokenRequestEvent"}, // 17.0.0+
|
||||||
|
FunctionInfo{41, nullptr, "TryPopNetworkServiceAccountIdTokenRequestUid"}, // 17.0.0+
|
||||||
|
FunctionInfo{42, nullptr, "SetNetworkServiceAccountIdTokenSuccess"}, // 17.0.0+
|
||||||
|
FunctionInfo{43, nullptr, "SetNetworkServiceAccountIdTokenFailure"}, // 17.0.0+
|
||||||
|
FunctionInfo{44, nullptr, "SetUidList"}, // 17.0.0+
|
||||||
|
FunctionInfo{45, nullptr, "PutDigitalTwinKeyValue"}, // 17.0.0+
|
||||||
|
FunctionInfo{51, nullptr, "DeleteDigitalTwinKeyValue"}, // 18.0.0+
|
||||||
|
FunctionInfo{101, nullptr, "Suspend"},
|
||||||
|
FunctionInfo{102, nullptr, "Resume"},
|
||||||
|
FunctionInfo{103, C<&INpnsSystem::GetState>, "GetState"},
|
||||||
|
FunctionInfo{104, nullptr, "GetStatistics"},
|
||||||
|
FunctionInfo{105, nullptr, "GetPlayReportRequestEvent"},
|
||||||
|
FunctionInfo{106, C<&INpnsSystem::GetLastNotifiedTime>, "GetLastNotifiedTime"}, // 18.0.0+
|
||||||
|
FunctionInfo{107, nullptr, "SetLastNotifiedTime"}, // 18.0.0+
|
||||||
|
FunctionInfo{111, nullptr, "GetJid"},
|
||||||
|
FunctionInfo{112, nullptr, "CreateJid"},
|
||||||
|
FunctionInfo{113, nullptr, "DestroyJid"},
|
||||||
|
FunctionInfo{114, nullptr, "AttachJid"},
|
||||||
|
FunctionInfo{115, nullptr, "DetachJid"},
|
||||||
|
FunctionInfo{120, nullptr, "CreateNotificationReceiver"},
|
||||||
|
FunctionInfo{151, nullptr, "GetStateWithHandover"},
|
||||||
|
FunctionInfo{152, nullptr, "GetStateChangeEventWithHandover"},
|
||||||
|
FunctionInfo{153, nullptr, "GetDropEventWithHandover"},
|
||||||
|
FunctionInfo{154, nullptr, "CreateTokenAsync"},
|
||||||
|
FunctionInfo{155, nullptr, "CreateTokenAsyncWithApplicationId"},
|
||||||
|
FunctionInfo{156, nullptr, "CreateTokenWithNameAsync"}, // 18.0.0+
|
||||||
|
FunctionInfo{161, C<&INpnsSystem::GetRequestChangeStateCancelEvent>, "GetRequestChangeStateCancelEvent"}, // 10.0.0+
|
||||||
|
FunctionInfo{162, nullptr, "RequestChangeStateForceTimedWithCancelEvent"},
|
||||||
|
FunctionInfo{201, nullptr, "RequestChangeStateForceTimed"},
|
||||||
|
FunctionInfo{202, nullptr, "RequestChangeStateForceAsync"},
|
||||||
|
FunctionInfo{301, nullptr, "GetPassword"}, // 18.0.0+
|
||||||
|
FunctionInfo{302, nullptr, "GetAllImmigration"}, // 18.0.0+
|
||||||
|
FunctionInfo{303, nullptr, "GetNotificationHistories"}, // 18.0.0+
|
||||||
|
FunctionInfo{304, nullptr, "GetPersistentConnectionSummary"}, // 18.0.0+
|
||||||
|
FunctionInfo{305, nullptr, "GetDigitalTwinSummary"}, // 18.0.0+
|
||||||
|
FunctionInfo{306, nullptr, "GetDigitalTwinValue"} // 18.0.0+
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
~INpnsSystem() override = default;
|
~INpnsSystem() override = default;
|
||||||
@@ -148,34 +146,32 @@ private:
|
|||||||
class INpnsUser final : public ServiceFramework<INpnsUser> {
|
class INpnsUser final : public ServiceFramework<INpnsUser> {
|
||||||
public:
|
public:
|
||||||
explicit INpnsUser(Core::System& system_)
|
explicit INpnsUser(Core::System& system_)
|
||||||
: ServiceFramework{system_, "npns:u"}, service_context{system, "npns:u"}, get_receive_event{service_context} {
|
: ServiceFramework{system_, "npns:u"}, service_context{system, "npns:u"}, get_receive_event{service_context} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{1, nullptr, "ListenAll"},
|
|
||||||
{2, nullptr, "ListenTo"},
|
|
||||||
{3, nullptr, "Receive"},
|
|
||||||
{4, nullptr, "ReceiveRaw"},
|
|
||||||
{5, C<&INpnsUser::GetReceiveEvent>, "GetReceiveEvent"},
|
|
||||||
{7, nullptr, "GetStateChangeEvent"},
|
|
||||||
{8, C<&INpnsUser::ListenToByName>, "ListenToByName"}, // 18.0.0+
|
|
||||||
{21, nullptr, "CreateToken"},
|
|
||||||
{23, nullptr, "DestroyToken"},
|
|
||||||
{25, nullptr, "QueryIsTokenValid"},
|
|
||||||
{26, nullptr, "ListenToMyApplicationId"},
|
|
||||||
{101, nullptr, "Suspend"},
|
|
||||||
{102, nullptr, "Resume"},
|
|
||||||
{103, nullptr, "GetState"},
|
|
||||||
{104, nullptr, "GetStatistics"},
|
|
||||||
{111, nullptr, "GetJid"},
|
|
||||||
{120, nullptr, "CreateNotificationReceiver"},
|
|
||||||
{151, nullptr, "GetStateWithHandover"},
|
|
||||||
{152, nullptr, "GetStateChangeEventWithHandover"},
|
|
||||||
{153, nullptr, "GetDropEventWithHandover"},
|
|
||||||
{154, nullptr, "CreateTokenAsync"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{1, nullptr, "ListenAll"},
|
||||||
|
FunctionInfo{2, nullptr, "ListenTo"},
|
||||||
|
FunctionInfo{3, nullptr, "Receive"},
|
||||||
|
FunctionInfo{4, nullptr, "ReceiveRaw"},
|
||||||
|
FunctionInfo{5, C<&INpnsUser::GetReceiveEvent>, "GetReceiveEvent"},
|
||||||
|
FunctionInfo{7, nullptr, "GetStateChangeEvent"},
|
||||||
|
FunctionInfo{8, C<&INpnsUser::ListenToByName>, "ListenToByName"}, // 18.0.0+
|
||||||
|
FunctionInfo{21, nullptr, "CreateToken"},
|
||||||
|
FunctionInfo{23, nullptr, "DestroyToken"},
|
||||||
|
FunctionInfo{25, nullptr, "QueryIsTokenValid"},
|
||||||
|
FunctionInfo{26, nullptr, "ListenToMyApplicationId"},
|
||||||
|
FunctionInfo{101, nullptr, "Suspend"},
|
||||||
|
FunctionInfo{102, nullptr, "Resume"},
|
||||||
|
FunctionInfo{103, nullptr, "GetState"},
|
||||||
|
FunctionInfo{104, nullptr, "GetStatistics"},
|
||||||
|
FunctionInfo{111, nullptr, "GetJid"},
|
||||||
|
FunctionInfo{120, nullptr, "CreateNotificationReceiver"},
|
||||||
|
FunctionInfo{151, nullptr, "GetStateWithHandover"},
|
||||||
|
FunctionInfo{152, nullptr, "GetStateChangeEventWithHandover"},
|
||||||
|
FunctionInfo{153, nullptr, "GetDropEventWithHandover"},
|
||||||
|
FunctionInfo{154, nullptr, "CreateTokenAsync"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -9,13 +12,13 @@ IFactoryResetInterface::IFactoryResetInterface(Core::System& system_)
|
|||||||
: ServiceFramework{system_, "IFactoryResetInterface"} {
|
: ServiceFramework{system_, "IFactoryResetInterface"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{100, nullptr, "ResetToFactorySettings"},
|
FunctionInfo{100, nullptr, "ResetToFactorySettings"},
|
||||||
{101, nullptr, "ResetToFactorySettingsWithoutUserSaveData"},
|
FunctionInfo{101, nullptr, "ResetToFactorySettingsWithoutUserSaveData"},
|
||||||
{102, nullptr, "ResetToFactorySettingsForRefurbishment"},
|
FunctionInfo{102, nullptr, "ResetToFactorySettingsForRefurbishment"},
|
||||||
{103, nullptr, "ResetToFactorySettingsWithPlatformRegion"},
|
FunctionInfo{103, nullptr, "ResetToFactorySettingsWithPlatformRegion"},
|
||||||
{104, nullptr, "ResetToFactorySettingsWithPlatformRegionAuthentication"},
|
FunctionInfo{104, nullptr, "ResetToFactorySettingsWithPlatformRegionAuthentication"},
|
||||||
{105, nullptr, "RequestResetToFactorySettingsSecurely"},
|
FunctionInfo{105, nullptr, "RequestResetToFactorySettingsSecurely"},
|
||||||
{106, nullptr, "RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely"},
|
FunctionInfo{106, nullptr, "RequestResetToFactorySettingsWithPlatformRegionAuthenticationSecurely"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -19,25 +19,24 @@ namespace Service::NS {
|
|||||||
|
|
||||||
class INotifyService final : public ServiceFramework<INotifyService> {
|
class INotifyService final : public ServiceFramework<INotifyService> {
|
||||||
public:
|
public:
|
||||||
explicit INotifyService(Core::System& system_) : ServiceFramework{system_, "pdm:ntfy"} {
|
explicit INotifyService(Core::System& system_) : ServiceFramework{system_, "pdm:ntfy"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{ 0, nullptr, "NotifyAppletEvent" },
|
return HandlerTableGenerateWithFind(key,
|
||||||
{ 2, nullptr, "NotifyOperationModeChangeEvent" },
|
FunctionInfo{0, nullptr, "NotifyAppletEvent" },
|
||||||
{ 3, nullptr, "NotifyPowerStateChangeEvent" },
|
FunctionInfo{2, nullptr, "NotifyOperationModeChangeEvent" },
|
||||||
{ 4, nullptr, "NotifyClearAllEvent" },
|
FunctionInfo{3, nullptr, "NotifyPowerStateChangeEvent" },
|
||||||
{ 5, nullptr, "NotifyEventForDebug" },
|
FunctionInfo{4, nullptr, "NotifyClearAllEvent" },
|
||||||
{ 6, nullptr, "SuspendUserAccountEventService" },
|
FunctionInfo{5, nullptr, "NotifyEventForDebug" },
|
||||||
{ 7, nullptr, "ResumeUserAccountEventService" },
|
FunctionInfo{6, nullptr, "SuspendUserAccountEventService" },
|
||||||
{ 8, nullptr, "NotifyLibraryAppletEvent" },
|
FunctionInfo{7, nullptr, "ResumeUserAccountEventService" },
|
||||||
{ 9, nullptr, "Cmd9" },
|
FunctionInfo{8, nullptr, "NotifyLibraryAppletEvent" },
|
||||||
{ 20, nullptr, "Cmd20" },
|
FunctionInfo{9, nullptr, "Cmd9" },
|
||||||
{ 30, nullptr, "Cmd30" },
|
FunctionInfo{20, nullptr, "Cmd20" },
|
||||||
{ 100, nullptr, "Cmd100" },
|
FunctionInfo{30, nullptr, "Cmd30" },
|
||||||
{ 101, nullptr, "Cmd101" },
|
FunctionInfo{100, nullptr, "Cmd100" },
|
||||||
};
|
FunctionInfo{101, nullptr, "Cmd101" }
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -45,18 +44,17 @@ class IVulnerabilityManagerInterface final
|
|||||||
: public ServiceFramework<IVulnerabilityManagerInterface> {
|
: public ServiceFramework<IVulnerabilityManagerInterface> {
|
||||||
public:
|
public:
|
||||||
explicit IVulnerabilityManagerInterface(Core::System& system_)
|
explicit IVulnerabilityManagerInterface(Core::System& system_)
|
||||||
: ServiceFramework{system_, "ns:vm"} {
|
: ServiceFramework{system_, "ns:vm"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{1200, D<&IVulnerabilityManagerInterface::NeedsUpdateVulnerability>, "NeedsUpdateVulnerability"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1201, nullptr, "UpdateSafeSystemVersionForDebug"},
|
FunctionInfo{1200, D<&IVulnerabilityManagerInterface::NeedsUpdateVulnerability>, "NeedsUpdateVulnerability"},
|
||||||
{1202, nullptr, "GetSafeSystemVersion"},
|
FunctionInfo{1201, nullptr, "UpdateSafeSystemVersionForDebug"},
|
||||||
{3100, D<&IVulnerabilityManagerInterface::GetSafeSystemVersionCheckInfo>, "GetSafeSystemVersionCheckInfo"},
|
FunctionInfo{1202, nullptr, "GetSafeSystemVersion"},
|
||||||
{3101, nullptr, "RequestUpdateSafeSystemVersionCheckInfo"},
|
FunctionInfo{3100, D<&IVulnerabilityManagerInterface::GetSafeSystemVersionCheckInfo>, "GetSafeSystemVersionCheckInfo"},
|
||||||
{3102, D<&IVulnerabilityManagerInterface::ResetSafeSystemVersionCheckInfo>, "ResetSafeSystemVersionCheckInfo"},
|
FunctionInfo{3101, nullptr, "RequestUpdateSafeSystemVersionCheckInfo"},
|
||||||
};
|
FunctionInfo{3102, D<&IVulnerabilityManagerInterface::ResetSafeSystemVersionCheckInfo>, "ResetSafeSystemVersionCheckInfo"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
~IVulnerabilityManagerInterface() override = default;
|
~IVulnerabilityManagerInterface() override = default;
|
||||||
|
|
||||||
|
|||||||
@@ -38,12 +38,12 @@ IQueryService::IQueryService(Core::System& system_) : ServiceFramework{system_,
|
|||||||
{17, D<&IQueryService::QueryLastPlayTime>, "QueryLastPlayTime"},
|
{17, D<&IQueryService::QueryLastPlayTime>, "QueryLastPlayTime"},
|
||||||
{18, D<&IQueryService::QueryApplicationPlayStatisticsForSystem>, "QueryApplicationPlayStatisticsForSystem"},
|
{18, D<&IQueryService::QueryApplicationPlayStatisticsForSystem>, "QueryApplicationPlayStatisticsForSystem"},
|
||||||
{19, D<&IQueryService::QueryApplicationPlayStatisticsByUserAccountIdForSystem>, "QueryApplicationPlayStatisticsByUserAccountIdForSystem"},
|
{19, D<&IQueryService::QueryApplicationPlayStatisticsByUserAccountIdForSystem>, "QueryApplicationPlayStatisticsByUserAccountIdForSystem"},
|
||||||
{ 30, nullptr, "Cmd30" },
|
FunctionInfo{30, nullptr, "Cmd30" },
|
||||||
{ 31, nullptr, "Cmd31" },
|
FunctionInfo{31, nullptr, "Cmd31" },
|
||||||
{ 100, nullptr, "Cmd100" },
|
FunctionInfo{100, nullptr, "Cmd100" },
|
||||||
{ 110, nullptr, "Cmd110" },
|
FunctionInfo{110, nullptr, "Cmd110" },
|
||||||
{ 118, nullptr, "Cmd118" },
|
FunctionInfo{118, nullptr, "Cmd118" },
|
||||||
{ 119, nullptr, "Cmd119" },
|
FunctionInfo{119, nullptr, "Cmd119" },
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -85,10 +85,10 @@ public:
|
|||||||
, data_size{size}
|
, data_size{size}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&IAsyncValue::GetSize>, "GetSize"},
|
FunctionInfo{0, D<&IAsyncValue::GetSize>, "GetSize"},
|
||||||
{1, D<&IAsyncValue::Get>, "Get"},
|
FunctionInfo{1, D<&IAsyncValue::Get>, "Get"},
|
||||||
{2, D<&IAsyncValue::Cancel>, "Cancel"},
|
FunctionInfo{2, D<&IAsyncValue::Cancel>, "Cancel"},
|
||||||
{3, D<&IAsyncValue::GetErrorContext>, "GetErrorContext"},
|
FunctionInfo{3, D<&IAsyncValue::GetErrorContext>, "GetErrorContext"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
completion_event = service_context.CreateEvent("IAsyncValue:Completion");
|
completion_event = service_context.CreateEvent("IAsyncValue:Completion");
|
||||||
|
|||||||
@@ -52,14 +52,14 @@ public:
|
|||||||
: ServiceFramework{system_, "nvgem:c"}
|
: ServiceFramework{system_, "nvgem:c"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Initialize"},
|
FunctionInfo{0, nullptr, "Initialize"},
|
||||||
{1, nullptr, "GetEventHandle"},
|
FunctionInfo{1, nullptr, "GetEventHandle"},
|
||||||
{2, nullptr, "ControlNotification"},
|
FunctionInfo{2, nullptr, "ControlNotification"},
|
||||||
{3, nullptr, "SetNotificationPerm"},
|
FunctionInfo{3, nullptr, "SetNotificationPerm"},
|
||||||
{4, nullptr, "SetCoreDumpPerm"},
|
FunctionInfo{4, nullptr, "SetCoreDumpPerm"},
|
||||||
{5, nullptr, "GetAruid"},
|
FunctionInfo{5, nullptr, "GetAruid"},
|
||||||
{6, nullptr, "Reset"},
|
FunctionInfo{6, nullptr, "Reset"},
|
||||||
{7, nullptr, "GetAruid2"},
|
FunctionInfo{7, nullptr, "GetAruid2"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -71,11 +71,11 @@ public:
|
|||||||
: ServiceFramework{system_, "nvgem:cd"}
|
: ServiceFramework{system_, "nvgem:cd"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Initialize"},
|
FunctionInfo{0, nullptr, "Initialize"},
|
||||||
{1, nullptr, "GetAruid"},
|
FunctionInfo{1, nullptr, "GetAruid"},
|
||||||
{2, nullptr, "ReadNextBlock"},
|
FunctionInfo{2, nullptr, "ReadNextBlock"},
|
||||||
{3, nullptr, "GetNextBlockSize"},
|
FunctionInfo{3, nullptr, "GetNextBlockSize"},
|
||||||
{4, nullptr, "ReadNextBlock2"},
|
FunctionInfo{4, nullptr, "ReadNextBlock2"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -87,15 +87,15 @@ public:
|
|||||||
: ServiceFramework{system_, "nvdbg:d"}
|
: ServiceFramework{system_, "nvdbg:d"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Open"},
|
FunctionInfo{0, nullptr, "Open"},
|
||||||
{1, nullptr, "Ioctl"},
|
FunctionInfo{1, nullptr, "Ioctl"},
|
||||||
{2, nullptr, "Close"},
|
FunctionInfo{2, nullptr, "Close"},
|
||||||
{4, nullptr, "QueryEvent"},
|
FunctionInfo{4, nullptr, "QueryEvent"},
|
||||||
{9, nullptr, "DumpStatus"},
|
FunctionInfo{9, nullptr, "DumpStatus"},
|
||||||
{10, nullptr, "InitializeDevtools"},
|
FunctionInfo{10, nullptr, "InitializeDevtools"},
|
||||||
{11, nullptr, "Ioctl2"},
|
FunctionInfo{11, nullptr, "Ioctl2"},
|
||||||
{12, nullptr, "Ioctl3"},
|
FunctionInfo{12, nullptr, "Ioctl3"},
|
||||||
{13, nullptr, "SetConfiguration"},
|
FunctionInfo{13, nullptr, "SetConfiguration"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public:
|
|||||||
: ServiceFramework{system_, "spbg:sp"}
|
: ServiceFramework{system_, "spbg:sp"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{ 100, nullptr, "OpenBgAgentController" },
|
FunctionInfo{100, nullptr, "OpenBgAgentController" },
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -10,28 +13,28 @@ IOlscServiceForApplication::IOlscServiceForApplication(Core::System& system_)
|
|||||||
: ServiceFramework{system_, "olsc:u"} {
|
: ServiceFramework{system_, "olsc:u"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&IOlscServiceForApplication::Initialize>, "Initialize"},
|
FunctionInfo{0, D<&IOlscServiceForApplication::Initialize>, "Initialize"},
|
||||||
{10, nullptr, "VerifySaveDataBackupLicenseAsync"},
|
FunctionInfo{10, nullptr, "VerifySaveDataBackupLicenseAsync"},
|
||||||
{13, D<&IOlscServiceForApplication::GetSaveDataBackupSetting>, "GetSaveDataBackupSetting"},
|
FunctionInfo{13, D<&IOlscServiceForApplication::GetSaveDataBackupSetting>, "GetSaveDataBackupSetting"},
|
||||||
{14, D<&IOlscServiceForApplication::SetSaveDataBackupSettingEnabled>, "SetSaveDataBackupSettingEnabled"},
|
FunctionInfo{14, D<&IOlscServiceForApplication::SetSaveDataBackupSettingEnabled>, "SetSaveDataBackupSettingEnabled"},
|
||||||
{15, nullptr, "SetCustomData"},
|
FunctionInfo{15, nullptr, "SetCustomData"},
|
||||||
{16, nullptr, "DeleteSaveDataBackupSetting"},
|
FunctionInfo{16, nullptr, "DeleteSaveDataBackupSetting"},
|
||||||
{18, nullptr, "GetSaveDataBackupInfoCache"},
|
FunctionInfo{18, nullptr, "GetSaveDataBackupInfoCache"},
|
||||||
{19, nullptr, "UpdateSaveDataBackupInfoCacheAsync"},
|
FunctionInfo{19, nullptr, "UpdateSaveDataBackupInfoCacheAsync"},
|
||||||
{22, nullptr, "DeleteSaveDataBackupAsync"},
|
FunctionInfo{22, nullptr, "DeleteSaveDataBackupAsync"},
|
||||||
{25, nullptr, "ListDownloadableSaveDataBackupInfoAsync"},
|
FunctionInfo{25, nullptr, "ListDownloadableSaveDataBackupInfoAsync"},
|
||||||
{26, nullptr, "DownloadSaveDataBackupAsync"},
|
FunctionInfo{26, nullptr, "DownloadSaveDataBackupAsync"},
|
||||||
{27, nullptr, "UploadSaveDataBackupAsync"},
|
FunctionInfo{27, nullptr, "UploadSaveDataBackupAsync"},
|
||||||
{9010, nullptr, "VerifySaveDataBackupLicenseAsyncForDebug"},
|
FunctionInfo{9010, nullptr, "VerifySaveDataBackupLicenseAsyncForDebug"},
|
||||||
{9013, nullptr, "GetSaveDataBackupSettingForDebug"},
|
FunctionInfo{9013, nullptr, "GetSaveDataBackupSettingForDebug"},
|
||||||
{9014, nullptr, "SetSaveDataBackupSettingEnabledForDebug"},
|
FunctionInfo{9014, nullptr, "SetSaveDataBackupSettingEnabledForDebug"},
|
||||||
{9015, nullptr, "SetCustomDataForDebug"},
|
FunctionInfo{9015, nullptr, "SetCustomDataForDebug"},
|
||||||
{9016, nullptr, "DeleteSaveDataBackupSettingForDebug"},
|
FunctionInfo{9016, nullptr, "DeleteSaveDataBackupSettingForDebug"},
|
||||||
{9018, nullptr, "GetSaveDataBackupInfoCacheForDebug"},
|
FunctionInfo{9018, nullptr, "GetSaveDataBackupInfoCacheForDebug"},
|
||||||
{9019, nullptr, "UpdateSaveDataBackupInfoCacheAsyncForDebug"},
|
FunctionInfo{9019, nullptr, "UpdateSaveDataBackupInfoCacheAsyncForDebug"},
|
||||||
{9022, nullptr, "DeleteSaveDataBackupAsyncForDebug"},
|
FunctionInfo{9022, nullptr, "DeleteSaveDataBackupAsyncForDebug"},
|
||||||
{9025, nullptr, "ListDownloadableSaveDataBackupInfoAsyncForDebug"},
|
FunctionInfo{9025, nullptr, "ListDownloadableSaveDataBackupInfoAsyncForDebug"},
|
||||||
{9026, nullptr, "DownloadSaveDataBackupAsyncForDebug"},
|
FunctionInfo{9026, nullptr, "DownloadSaveDataBackupAsyncForDebug"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -15,64 +15,59 @@ namespace Service::PCIe {
|
|||||||
|
|
||||||
class ISession final : public ServiceFramework<ISession> {
|
class ISession final : public ServiceFramework<ISession> {
|
||||||
public:
|
public:
|
||||||
explicit ISession(Core::System& system_) : ServiceFramework{system_, "ISession"} {
|
explicit ISession(Core::System& system_) : ServiceFramework{system_, "ISession"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "QueryFunctions"},
|
|
||||||
{1, nullptr, "AcquireFunction"},
|
|
||||||
{2, nullptr, "ReleaseFunction"},
|
|
||||||
{3, nullptr, "GetFunctionState"},
|
|
||||||
{4, nullptr, "GetBarProfile"},
|
|
||||||
{5, nullptr, "ReadConfig"},
|
|
||||||
{6, nullptr, "WriteConfig"},
|
|
||||||
{7, nullptr, "ReadBarRegion"},
|
|
||||||
{8, nullptr, "WriteBarRegion"},
|
|
||||||
{9, nullptr, "FindCapability"},
|
|
||||||
{10, nullptr, "FindExtendedCapability"},
|
|
||||||
{11, nullptr, "MapDma"},
|
|
||||||
{12, nullptr, "UnmapDma"},
|
|
||||||
{13, nullptr, "UnmapDmaBusAddress"},
|
|
||||||
{14, nullptr, "GetDmaBusAddress"},
|
|
||||||
{15, nullptr, "GetDmaBusAddressRange"},
|
|
||||||
{16, nullptr, "SetDmaEnable"},
|
|
||||||
{17, nullptr, "AcquireIrq"},
|
|
||||||
{18, nullptr, "ReleaseIrq"},
|
|
||||||
{19, nullptr, "SetIrqEnable"},
|
|
||||||
{20, nullptr, "GetIrqEvent"},
|
|
||||||
{21, nullptr, "SetAspmEnable"},
|
|
||||||
{22, nullptr, "SetResetUponResumeEnable"},
|
|
||||||
{23, nullptr, "ResetFunction"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "QueryFunctions"},
|
||||||
|
FunctionInfo{1, nullptr, "AcquireFunction"},
|
||||||
|
FunctionInfo{2, nullptr, "ReleaseFunction"},
|
||||||
|
FunctionInfo{3, nullptr, "GetFunctionState"},
|
||||||
|
FunctionInfo{4, nullptr, "GetBarProfile"},
|
||||||
|
FunctionInfo{5, nullptr, "ReadConfig"},
|
||||||
|
FunctionInfo{6, nullptr, "WriteConfig"},
|
||||||
|
FunctionInfo{7, nullptr, "ReadBarRegion"},
|
||||||
|
FunctionInfo{8, nullptr, "WriteBarRegion"},
|
||||||
|
FunctionInfo{9, nullptr, "FindCapability"},
|
||||||
|
FunctionInfo{10, nullptr, "FindExtendedCapability"},
|
||||||
|
FunctionInfo{11, nullptr, "MapDma"},
|
||||||
|
FunctionInfo{12, nullptr, "UnmapDma"},
|
||||||
|
FunctionInfo{13, nullptr, "UnmapDmaBusAddress"},
|
||||||
|
FunctionInfo{14, nullptr, "GetDmaBusAddress"},
|
||||||
|
FunctionInfo{15, nullptr, "GetDmaBusAddressRange"},
|
||||||
|
FunctionInfo{16, nullptr, "SetDmaEnable"},
|
||||||
|
FunctionInfo{17, nullptr, "AcquireIrq"},
|
||||||
|
FunctionInfo{18, nullptr, "ReleaseIrq"},
|
||||||
|
FunctionInfo{19, nullptr, "SetIrqEnable"},
|
||||||
|
FunctionInfo{20, nullptr, "GetIrqEvent"},
|
||||||
|
FunctionInfo{21, nullptr, "SetAspmEnable"},
|
||||||
|
FunctionInfo{22, nullptr, "SetResetUponResumeEnable"},
|
||||||
|
FunctionInfo{23, nullptr, "ResetFunction"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class PCIE final : public ServiceFramework<PCIE> {
|
class PCIE final : public ServiceFramework<PCIE> {
|
||||||
public:
|
public:
|
||||||
explicit PCIE(Core::System& system_) : ServiceFramework{system_, "pcie"} {
|
explicit PCIE(Core::System& system_) : ServiceFramework{system_, "pcie"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "RegisterClassDriver"},
|
|
||||||
{1, nullptr, "QueryFunctionsUnregistered"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "RegisterClassDriver"},
|
||||||
|
FunctionInfo{1, nullptr, "QueryFunctionsUnregistered"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class PCIE_LOG final : public ServiceFramework<PCIE_LOG> {
|
class PCIE_LOG final : public ServiceFramework<PCIE_LOG> {
|
||||||
public:
|
public:
|
||||||
explicit PCIE_LOG(Core::System& system_) : ServiceFramework{system_, "pcie:log"} {
|
explicit PCIE_LOG(Core::System& system_) : ServiceFramework{system_, "pcie:log"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "GetLoggedState"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "GetLoggedStateEvent"},
|
FunctionInfo{0, nullptr, "GetLoggedState"},
|
||||||
};
|
FunctionInfo{1, nullptr, "GetLoggedStateEvent"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -15,91 +15,86 @@ namespace Service::PCV {
|
|||||||
|
|
||||||
class PCV final : public ServiceFramework<PCV> {
|
class PCV final : public ServiceFramework<PCV> {
|
||||||
public:
|
public:
|
||||||
explicit PCV(Core::System& system_) : ServiceFramework{system_, "pcv"} {
|
explicit PCV(Core::System& system_) : ServiceFramework{system_, "pcv"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "SetPowerEnabled"},
|
|
||||||
{1, nullptr, "SetClockEnabled"},
|
|
||||||
{2, nullptr, "SetClockRate"},
|
|
||||||
{3, nullptr, "GetClockRate"},
|
|
||||||
{4, nullptr, "GetState"},
|
|
||||||
{5, nullptr, "GetPossibleClockRates"},
|
|
||||||
{6, nullptr, "SetMinVClockRate"},
|
|
||||||
{7, nullptr, "SetReset"},
|
|
||||||
{8, nullptr, "SetVoltageEnabled"},
|
|
||||||
{9, nullptr, "GetVoltageEnabled"},
|
|
||||||
{10, nullptr, "GetVoltageRange"},
|
|
||||||
{11, nullptr, "SetVoltageValue"},
|
|
||||||
{12, nullptr, "GetVoltageValue"},
|
|
||||||
{13, nullptr, "GetTemperatureThresholds"},
|
|
||||||
{14, nullptr, "SetTemperature"},
|
|
||||||
{15, nullptr, "Initialize"},
|
|
||||||
{16, nullptr, "IsInitialized"},
|
|
||||||
{17, nullptr, "Finalize"},
|
|
||||||
{18, nullptr, "PowerOn"},
|
|
||||||
{19, nullptr, "PowerOff"},
|
|
||||||
{20, nullptr, "ChangeVoltage"},
|
|
||||||
{21, nullptr, "GetPowerClockInfoEvent"},
|
|
||||||
{22, nullptr, "GetOscillatorClock"},
|
|
||||||
{23, nullptr, "GetDvfsTable"},
|
|
||||||
{24, nullptr, "GetModuleStateTable"},
|
|
||||||
{25, nullptr, "GetPowerDomainStateTable"},
|
|
||||||
{26, nullptr, "GetFuseInfo"},
|
|
||||||
{27, nullptr, "GetDramId"},
|
|
||||||
{28, nullptr, "IsPoweredOn"},
|
|
||||||
{29, nullptr, "GetVoltage"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "SetPowerEnabled"},
|
||||||
|
FunctionInfo{1, nullptr, "SetClockEnabled"},
|
||||||
|
FunctionInfo{2, nullptr, "SetClockRate"},
|
||||||
|
FunctionInfo{3, nullptr, "GetClockRate"},
|
||||||
|
FunctionInfo{4, nullptr, "GetState"},
|
||||||
|
FunctionInfo{5, nullptr, "GetPossibleClockRates"},
|
||||||
|
FunctionInfo{6, nullptr, "SetMinVClockRate"},
|
||||||
|
FunctionInfo{7, nullptr, "SetReset"},
|
||||||
|
FunctionInfo{8, nullptr, "SetVoltageEnabled"},
|
||||||
|
FunctionInfo{9, nullptr, "GetVoltageEnabled"},
|
||||||
|
FunctionInfo{10, nullptr, "GetVoltageRange"},
|
||||||
|
FunctionInfo{11, nullptr, "SetVoltageValue"},
|
||||||
|
FunctionInfo{12, nullptr, "GetVoltageValue"},
|
||||||
|
FunctionInfo{13, nullptr, "GetTemperatureThresholds"},
|
||||||
|
FunctionInfo{14, nullptr, "SetTemperature"},
|
||||||
|
FunctionInfo{15, nullptr, "Initialize"},
|
||||||
|
FunctionInfo{16, nullptr, "IsInitialized"},
|
||||||
|
FunctionInfo{17, nullptr, "Finalize"},
|
||||||
|
FunctionInfo{18, nullptr, "PowerOn"},
|
||||||
|
FunctionInfo{19, nullptr, "PowerOff"},
|
||||||
|
FunctionInfo{20, nullptr, "ChangeVoltage"},
|
||||||
|
FunctionInfo{21, nullptr, "GetPowerClockInfoEvent"},
|
||||||
|
FunctionInfo{22, nullptr, "GetOscillatorClock"},
|
||||||
|
FunctionInfo{23, nullptr, "GetDvfsTable"},
|
||||||
|
FunctionInfo{24, nullptr, "GetModuleStateTable"},
|
||||||
|
FunctionInfo{25, nullptr, "GetPowerDomainStateTable"},
|
||||||
|
FunctionInfo{26, nullptr, "GetFuseInfo"},
|
||||||
|
FunctionInfo{27, nullptr, "GetDramId"},
|
||||||
|
FunctionInfo{28, nullptr, "IsPoweredOn"},
|
||||||
|
FunctionInfo{29, nullptr, "GetVoltage"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class PCV_ARB final : public ServiceFramework<PCV_ARB> {
|
class PCV_ARB final : public ServiceFramework<PCV_ARB> {
|
||||||
public:
|
public:
|
||||||
explicit PCV_ARB(Core::System& system_) : ServiceFramework{system_, "pcv:arb"} {
|
explicit PCV_ARB(Core::System& system_) : ServiceFramework{system_, "pcv:arb"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "ReleaseControl"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, nullptr, "ReleaseControl"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class PCV_IMM final : public ServiceFramework<PCV_IMM> {
|
class PCV_IMM final : public ServiceFramework<PCV_IMM> {
|
||||||
public:
|
public:
|
||||||
explicit PCV_IMM(Core::System& system_) : ServiceFramework{system_, "pcv:imm"} {
|
explicit PCV_IMM(Core::System& system_) : ServiceFramework{system_, "pcv:imm"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "SetClockRate"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, nullptr, "SetClockRate"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IClkrstSession final : public ServiceFramework<IClkrstSession> {
|
class IClkrstSession final : public ServiceFramework<IClkrstSession> {
|
||||||
public:
|
public:
|
||||||
explicit IClkrstSession(Core::System& system_, DeviceCode device_code_)
|
explicit IClkrstSession(Core::System& system_, DeviceCode device_code_)
|
||||||
: ServiceFramework{system_, "IClkrstSession"}, device_code(device_code_) {
|
: ServiceFramework{system_, "IClkrstSession"}, device_code(device_code_) {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "SetClockEnabled"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "SetClockDisabled"},
|
FunctionInfo{0, nullptr, "SetClockEnabled"},
|
||||||
{2, nullptr, "SetResetAsserted"},
|
FunctionInfo{1, nullptr, "SetClockDisabled"},
|
||||||
{3, nullptr, "SetResetDeasserted"},
|
FunctionInfo{2, nullptr, "SetResetAsserted"},
|
||||||
{4, nullptr, "SetPowerEnabled"},
|
FunctionInfo{3, nullptr, "SetResetDeasserted"},
|
||||||
{5, nullptr, "SetPowerDisabled"},
|
FunctionInfo{4, nullptr, "SetPowerEnabled"},
|
||||||
{6, nullptr, "GetState"},
|
FunctionInfo{5, nullptr, "SetPowerDisabled"},
|
||||||
{7, &IClkrstSession::SetClockRate, "SetClockRate"},
|
FunctionInfo{6, nullptr, "GetState"},
|
||||||
{8, &IClkrstSession::GetClockRate, "GetClockRate"},
|
FunctionInfo{7, &IClkrstSession::SetClockRate, "SetClockRate"},
|
||||||
{9, nullptr, "SetMinVClockRate"},
|
FunctionInfo{8, &IClkrstSession::GetClockRate, "GetClockRate"},
|
||||||
{10, nullptr, "GetPossibleClockRates"},
|
FunctionInfo{9, nullptr, "SetMinVClockRate"},
|
||||||
{11, nullptr, "GetDvfsTable"},
|
FunctionInfo{10, nullptr, "GetPossibleClockRates"},
|
||||||
};
|
FunctionInfo{11, nullptr, "GetDvfsTable"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -126,19 +121,17 @@ private:
|
|||||||
|
|
||||||
class CLKRST final : public ServiceFramework<CLKRST> {
|
class CLKRST final : public ServiceFramework<CLKRST> {
|
||||||
public:
|
public:
|
||||||
explicit CLKRST(Core::System& system_, const char* name) : ServiceFramework{system_, name} {
|
explicit CLKRST(Core::System& system_, const char* name) : ServiceFramework{system_, name} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &CLKRST::OpenSession, "OpenSession"},
|
|
||||||
{1, nullptr, "GetTemperatureThresholds"},
|
|
||||||
{2, nullptr, "SetTemperature"},
|
|
||||||
{3, nullptr, "GetModuleStateTable"},
|
|
||||||
{4, nullptr, "GetModuleStateTableEvent"},
|
|
||||||
{5, nullptr, "GetModuleStateTableMaxCount"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &CLKRST::OpenSession, "OpenSession"},
|
||||||
|
FunctionInfo{1, nullptr, "GetTemperatureThresholds"},
|
||||||
|
FunctionInfo{2, nullptr, "SetTemperature"},
|
||||||
|
FunctionInfo{3, nullptr, "GetModuleStateTable"},
|
||||||
|
FunctionInfo{4, nullptr, "GetModuleStateTableEvent"},
|
||||||
|
FunctionInfo{5, nullptr, "GetModuleStateTableMaxCount"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -157,14 +150,12 @@ private:
|
|||||||
|
|
||||||
class CLKRST_A final : public ServiceFramework<CLKRST_A> {
|
class CLKRST_A final : public ServiceFramework<CLKRST_A> {
|
||||||
public:
|
public:
|
||||||
explicit CLKRST_A(Core::System& system_) : ServiceFramework{system_, "clkrst:a"} {
|
explicit CLKRST_A(Core::System& system_) : ServiceFramework{system_, "clkrst:a"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "ReleaseControl"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "ReleaseControl"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ class BootMode final : public ServiceFramework<BootMode> {
|
|||||||
public:
|
public:
|
||||||
explicit BootMode(Core::System& system_) : ServiceFramework{system_, "pm:bm"} {
|
explicit BootMode(Core::System& system_) : ServiceFramework{system_, "pm:bm"} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &BootMode::GetBootMode, "GetBootMode"},
|
FunctionInfo{0, &BootMode::GetBootMode, "GetBootMode"},
|
||||||
{1, &BootMode::SetMaintenanceBoot, "SetMaintenanceBoot"},
|
FunctionInfo{1, &BootMode::SetMaintenanceBoot, "SetMaintenanceBoot"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -78,22 +78,20 @@ private:
|
|||||||
|
|
||||||
class DebugMonitor final : public ServiceFramework<DebugMonitor> {
|
class DebugMonitor final : public ServiceFramework<DebugMonitor> {
|
||||||
public:
|
public:
|
||||||
explicit DebugMonitor(Core::System& system_) : ServiceFramework{system_, "pm:dmnt"} {
|
explicit DebugMonitor(Core::System& system_) : ServiceFramework{system_, "pm:dmnt"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "GetJitDebugProcessIdList"},
|
|
||||||
{1, nullptr, "StartProcess"},
|
|
||||||
{2, &DebugMonitor::GetProcessId, "GetProcessId"},
|
|
||||||
{3, nullptr, "HookToCreateProcess"},
|
|
||||||
{4, &DebugMonitor::GetApplicationProcessId, "GetApplicationProcessId"},
|
|
||||||
{5, nullptr, "HookToCreateApplicationProgress"},
|
|
||||||
{6, nullptr, "ClearHook"},
|
|
||||||
{65000, &DebugMonitor::AtmosphereGetProcessInfo, "AtmosphereGetProcessInfo"},
|
|
||||||
{65001, nullptr, "AtmosphereGetCurrentLimitInfo"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "GetJitDebugProcessIdList"},
|
||||||
|
FunctionInfo{1, nullptr, "StartProcess"},
|
||||||
|
FunctionInfo{2, &DebugMonitor::GetProcessId, "GetProcessId"},
|
||||||
|
FunctionInfo{3, nullptr, "HookToCreateProcess"},
|
||||||
|
FunctionInfo{4, &DebugMonitor::GetApplicationProcessId, "GetApplicationProcessId"},
|
||||||
|
FunctionInfo{5, nullptr, "HookToCreateApplicationProgress"},
|
||||||
|
FunctionInfo{6, nullptr, "ClearHook"},
|
||||||
|
FunctionInfo{65000, &DebugMonitor::AtmosphereGetProcessInfo, "AtmosphereGetProcessInfo"},
|
||||||
|
FunctionInfo{65001, nullptr, "AtmosphereGetCurrentLimitInfo"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -170,10 +168,10 @@ class Info final : public ServiceFramework<Info> {
|
|||||||
public:
|
public:
|
||||||
explicit Info(Core::System& system_) : ServiceFramework{system_, "pm:info"} {
|
explicit Info(Core::System& system_) : ServiceFramework{system_, "pm:info"} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &Info::GetProgramId, "GetProgramId"},
|
FunctionInfo{0, &Info::GetProgramId, "GetProgramId"},
|
||||||
{65000, &Info::AtmosphereGetProcessId, "AtmosphereGetProcessId"},
|
FunctionInfo{65000, &Info::AtmosphereGetProcessId, "AtmosphereGetProcessId"},
|
||||||
{65001, nullptr, "AtmosphereHasLaunchedProgram"},
|
FunctionInfo{65001, nullptr, "AtmosphereHasLaunchedProgram"},
|
||||||
{65002, nullptr, "AtmosphereGetProcessInfo"},
|
FunctionInfo{65002, nullptr, "AtmosphereGetProcessInfo"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -222,23 +220,21 @@ private:
|
|||||||
|
|
||||||
class Shell final : public ServiceFramework<Shell> {
|
class Shell final : public ServiceFramework<Shell> {
|
||||||
public:
|
public:
|
||||||
explicit Shell(Core::System& system_) : ServiceFramework{system_, "pm:shell"} {
|
explicit Shell(Core::System& system_) : ServiceFramework{system_, "pm:shell"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "LaunchProgram"},
|
|
||||||
{1, nullptr, "TerminateProcess"},
|
|
||||||
{2, nullptr, "TerminateProgram"},
|
|
||||||
{3, nullptr, "GetProcessEventHandle"},
|
|
||||||
{4, nullptr, "GetProcessEventInfo"},
|
|
||||||
{5, nullptr, "NotifyBootFinished"},
|
|
||||||
{6, &Shell::GetApplicationProcessIdForShell, "GetApplicationProcessIdForShell"},
|
|
||||||
{7, nullptr, "BoostSystemMemoryResourceLimit"},
|
|
||||||
{8, nullptr, "BoostApplicationThreadResourceLimit"},
|
|
||||||
{9, nullptr, "GetBootFinishedEventHandle"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "LaunchProgram"},
|
||||||
|
FunctionInfo{1, nullptr, "TerminateProcess"},
|
||||||
|
FunctionInfo{2, nullptr, "TerminateProgram"},
|
||||||
|
FunctionInfo{3, nullptr, "GetProcessEventHandle"},
|
||||||
|
FunctionInfo{4, nullptr, "GetProcessEventInfo"},
|
||||||
|
FunctionInfo{5, nullptr, "NotifyBootFinished"},
|
||||||
|
FunctionInfo{6, &Shell::GetApplicationProcessIdForShell, "GetApplicationProcessIdForShell"},
|
||||||
|
FunctionInfo{7, nullptr, "BoostSystemMemoryResourceLimit"},
|
||||||
|
FunctionInfo{8, nullptr, "BoostApplicationThreadResourceLimit"},
|
||||||
|
FunctionInfo{9, nullptr, "GetBootFinishedEventHandle"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -21,45 +21,43 @@ namespace Service::PlayReport {
|
|||||||
|
|
||||||
class PlayReport final : public ServiceFramework<PlayReport> {
|
class PlayReport final : public ServiceFramework<PlayReport> {
|
||||||
public:
|
public:
|
||||||
explicit PlayReport(const char* name, Core::System& system_) : ServiceFramework{system_, name} {
|
explicit PlayReport(const char* name, Core::System& system_) : ServiceFramework{system_, name} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{10100, &PlayReport::SaveReport<Core::Reporter::PlayReportType::Old>, "SaveReportOld"},
|
|
||||||
{10101, &PlayReport::SaveReportWithUser<Core::Reporter::PlayReportType::Old>, "SaveReportWithUserOld"},
|
|
||||||
{10102, &PlayReport::SaveReport<Core::Reporter::PlayReportType::Old2>, "SaveReportOld2"},
|
|
||||||
{10103, &PlayReport::SaveReportWithUser<Core::Reporter::PlayReportType::Old2>, "SaveReportWithUserOld2"},
|
|
||||||
{10104, &PlayReport::SaveReport<Core::Reporter::PlayReportType::Old3>, "SaveReportOld3"},
|
|
||||||
{10105, &PlayReport::SaveReportWithUser<Core::Reporter::PlayReportType::Old3>, "SaveReportWithUserOld3"},
|
|
||||||
{10106, &PlayReport::SaveReport<Core::Reporter::PlayReportType::New>, "SaveReport"},
|
|
||||||
{10107, &PlayReport::SaveReportWithUser<Core::Reporter::PlayReportType::New>, "SaveReportWithUser"},
|
|
||||||
{10200, &PlayReport::RequestImmediateTransmission, "RequestImmediateTransmission"},
|
|
||||||
{10300, &PlayReport::GetTransmissionStatus, "GetTransmissionStatus"},
|
|
||||||
{10400, &PlayReport::GetSystemSessionId, "GetSystemSessionId"},
|
|
||||||
{20100, &PlayReport::SaveSystemReportOld, "SaveSystemReport"},
|
|
||||||
{20101, &PlayReport::SaveSystemReportWithUserOld, "SaveSystemReportWithUser"},
|
|
||||||
{20102, &PlayReport::SaveSystemReport, "SaveSystemReport"},
|
|
||||||
{20103, &PlayReport::SaveSystemReportWithUser, "SaveSystemReportWithUser"},
|
|
||||||
{20200, nullptr, "SetOperationMode"},
|
|
||||||
{30100, nullptr, "ClearStorage"},
|
|
||||||
{30200, nullptr, "ClearStatistics"},
|
|
||||||
{30300, nullptr, "GetStorageUsage"},
|
|
||||||
{30400, nullptr, "GetStatistics"},
|
|
||||||
{30401, nullptr, "GetThroughputHistory"},
|
|
||||||
{30500, nullptr, "GetLastUploadError"},
|
|
||||||
{30600, nullptr, "GetApplicationUploadSummary"},
|
|
||||||
{40100, nullptr, "IsUserAgreementCheckEnabled"},
|
|
||||||
{40101, nullptr, "SetUserAgreementCheckEnabled"},
|
|
||||||
{50100, nullptr, "ReadAllApplicationReportFiles"},
|
|
||||||
{90100, nullptr, "ReadAllReportFiles"},
|
|
||||||
{90101, nullptr, "Unknown90101"},
|
|
||||||
{90102, nullptr, "Unknown90102"},
|
|
||||||
{90200, nullptr, "GetStatistics"},
|
|
||||||
{90201, nullptr, "GetThroughputHistory"},
|
|
||||||
{90300, nullptr, "GetLastUploadError"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{10100, &PlayReport::SaveReport<Core::Reporter::PlayReportType::Old>, "SaveReportOld"},
|
||||||
|
FunctionInfo{10101, &PlayReport::SaveReportWithUser<Core::Reporter::PlayReportType::Old>, "SaveReportWithUserOld"},
|
||||||
|
FunctionInfo{10102, &PlayReport::SaveReport<Core::Reporter::PlayReportType::Old2>, "SaveReportOld2"},
|
||||||
|
FunctionInfo{10103, &PlayReport::SaveReportWithUser<Core::Reporter::PlayReportType::Old2>, "SaveReportWithUserOld2"},
|
||||||
|
FunctionInfo{10104, &PlayReport::SaveReport<Core::Reporter::PlayReportType::Old3>, "SaveReportOld3"},
|
||||||
|
FunctionInfo{10105, &PlayReport::SaveReportWithUser<Core::Reporter::PlayReportType::Old3>, "SaveReportWithUserOld3"},
|
||||||
|
FunctionInfo{10106, &PlayReport::SaveReport<Core::Reporter::PlayReportType::New>, "SaveReport"},
|
||||||
|
FunctionInfo{10107, &PlayReport::SaveReportWithUser<Core::Reporter::PlayReportType::New>, "SaveReportWithUser"},
|
||||||
|
FunctionInfo{10200, &PlayReport::RequestImmediateTransmission, "RequestImmediateTransmission"},
|
||||||
|
FunctionInfo{10300, &PlayReport::GetTransmissionStatus, "GetTransmissionStatus"},
|
||||||
|
FunctionInfo{10400, &PlayReport::GetSystemSessionId, "GetSystemSessionId"},
|
||||||
|
FunctionInfo{20100, &PlayReport::SaveSystemReportOld, "SaveSystemReport"},
|
||||||
|
FunctionInfo{20101, &PlayReport::SaveSystemReportWithUserOld, "SaveSystemReportWithUser"},
|
||||||
|
FunctionInfo{20102, &PlayReport::SaveSystemReport, "SaveSystemReport"},
|
||||||
|
FunctionInfo{20103, &PlayReport::SaveSystemReportWithUser, "SaveSystemReportWithUser"},
|
||||||
|
FunctionInfo{20200, nullptr, "SetOperationMode"},
|
||||||
|
FunctionInfo{30100, nullptr, "ClearStorage"},
|
||||||
|
FunctionInfo{30200, nullptr, "ClearStatistics"},
|
||||||
|
FunctionInfo{30300, nullptr, "GetStorageUsage"},
|
||||||
|
FunctionInfo{30400, nullptr, "GetStatistics"},
|
||||||
|
FunctionInfo{30401, nullptr, "GetThroughputHistory"},
|
||||||
|
FunctionInfo{30500, nullptr, "GetLastUploadError"},
|
||||||
|
FunctionInfo{30600, nullptr, "GetApplicationUploadSummary"},
|
||||||
|
FunctionInfo{40100, nullptr, "IsUserAgreementCheckEnabled"},
|
||||||
|
FunctionInfo{40101, nullptr, "SetUserAgreementCheckEnabled"},
|
||||||
|
FunctionInfo{50100, nullptr, "ReadAllApplicationReportFiles"},
|
||||||
|
FunctionInfo{90100, nullptr, "ReadAllReportFiles"},
|
||||||
|
FunctionInfo{90101, nullptr, "Unknown90101"},
|
||||||
|
FunctionInfo{90102, nullptr, "Unknown90102"},
|
||||||
|
FunctionInfo{90200, nullptr, "GetStatistics"},
|
||||||
|
FunctionInfo{90201, nullptr, "GetThroughputHistory"},
|
||||||
|
FunctionInfo{90300, nullptr, "GetLastUploadError"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -13,11 +13,11 @@ IReceiver::IReceiver(Core::System& system_)
|
|||||||
: ServiceFramework{system_, "IReceiver"}, service_context{system_, "IReceiver"} {
|
: ServiceFramework{system_, "IReceiver"}, service_context{system_, "IReceiver"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&IReceiver::AddSource>, "AddSource"},
|
FunctionInfo{0, D<&IReceiver::AddSource>, "AddSource"},
|
||||||
{1, D<&IReceiver::RemoveSource>, "RemoveSource"},
|
FunctionInfo{1, D<&IReceiver::RemoveSource>, "RemoveSource"},
|
||||||
{2, D<&IReceiver::GetReceiveEventHandle>, "GetReceiveEventHandle"},
|
FunctionInfo{2, D<&IReceiver::GetReceiveEventHandle>, "GetReceiveEventHandle"},
|
||||||
{3, D<&IReceiver::Receive>, "Receive"},
|
FunctionInfo{3, D<&IReceiver::Receive>, "Receive"},
|
||||||
{4, D<&IReceiver::ReceiveWithTick>, "ReceiveWithTick"},
|
FunctionInfo{4, D<&IReceiver::ReceiveWithTick>, "ReceiveWithTick"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
@@ -24,7 +24,7 @@ IReceiverService::~IReceiverService() = default;
|
|||||||
|
|
||||||
Result IReceiverService::OpenReceiver(Out<SharedPointer<IReceiver>> out_receiver) {
|
Result IReceiverService::OpenReceiver(Out<SharedPointer<IReceiver>> out_receiver) {
|
||||||
LOG_DEBUG(Service_PSC, "called");
|
LOG_DEBUG(Service_PSC, "called");
|
||||||
*out_receiver = std::shared_ptr<IReceiver>(new IReceiver(system));
|
*out_receiver = std::make_shared<IReceiver>(system);
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -8,11 +11,11 @@ namespace Service::PSC {
|
|||||||
IPmModule::IPmModule(Core::System& system_) : ServiceFramework{system_, "IPmModule"} {
|
IPmModule::IPmModule(Core::System& system_) : ServiceFramework{system_, "IPmModule"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "Initialize"},
|
FunctionInfo{0, nullptr, "Initialize"},
|
||||||
{1, nullptr, "GetRequest"},
|
FunctionInfo{1, nullptr, "GetRequest"},
|
||||||
{2, nullptr, "Acknowledge"},
|
FunctionInfo{2, nullptr, "Acknowledge"},
|
||||||
{3, nullptr, "Finalize"},
|
FunctionInfo{3, nullptr, "Finalize"},
|
||||||
{4, nullptr, "AcknowledgeEx"},
|
FunctionInfo{4, nullptr, "AcknowledgeEx"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -19,86 +19,81 @@ namespace Service::PSC {
|
|||||||
|
|
||||||
class PSC_L final : public ServiceFramework<PSC_L> {
|
class PSC_L final : public ServiceFramework<PSC_L> {
|
||||||
public:
|
public:
|
||||||
explicit PSC_L(Core::System& system_) : ServiceFramework{system_, "psc:l"} {
|
explicit PSC_L(Core::System& system_) : ServiceFramework{system_, "psc:l"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "Initialize_3"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "Lock"},
|
FunctionInfo{0, nullptr, "Initialize_3"},
|
||||||
{2, nullptr, "Unlock"},
|
FunctionInfo{1, nullptr, "Lock"},
|
||||||
{3, nullptr, "IsLocked"},
|
FunctionInfo{2, nullptr, "Unlock"},
|
||||||
{4, nullptr, "GetRelatedState"},
|
FunctionInfo{3, nullptr, "IsLocked"},
|
||||||
};
|
FunctionInfo{4, nullptr, "GetRelatedState"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class INS_R final : public ServiceFramework<INS_R> {
|
class INS_R final : public ServiceFramework<INS_R> {
|
||||||
public:
|
public:
|
||||||
explicit INS_R(Core::System& system_) : ServiceFramework{system_, "ins:r"} {
|
explicit INS_R(Core::System& system_) : ServiceFramework{system_, "ins:r"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "GetInputSourceState"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "GetTriggerTargetEvent"},
|
FunctionInfo{0, nullptr, "GetInputSourceState"},
|
||||||
};
|
FunctionInfo{1, nullptr, "GetTriggerTargetEvent"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class INS_S final : public ServiceFramework<INS_S> {
|
class INS_S final : public ServiceFramework<INS_S> {
|
||||||
public:
|
public:
|
||||||
explicit INS_S(Core::System& system_) : ServiceFramework{system_, "ins:s"} {
|
explicit INS_S(Core::System& system_) : ServiceFramework{system_, "ins:s"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "GetNotifyEvent"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, nullptr, "GetNotifyEvent"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class HSHL_SYS final : public ServiceFramework<HSHL_SYS> {
|
class HSHL_SYS final : public ServiceFramework<HSHL_SYS> {
|
||||||
public:
|
public:
|
||||||
explicit HSHL_SYS(Core::System& system_) : ServiceFramework{system_, "hshl:sys"} {
|
explicit HSHL_SYS(Core::System& system_) : ServiceFramework{system_, "hshl:sys"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "GetBatteryPercentage"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "GetChargerType"},
|
FunctionInfo{0, nullptr, "GetBatteryPercentage"},
|
||||||
{2, nullptr, "OpenChargeSession"},
|
FunctionInfo{1, nullptr, "GetChargerType"},
|
||||||
{3, nullptr, "GetRawBatteryPercentage"},
|
FunctionInfo{2, nullptr, "OpenChargeSession"},
|
||||||
{4, nullptr, "GetBatteryVoltageLevel"},
|
FunctionInfo{3, nullptr, "GetRawBatteryPercentage"},
|
||||||
{5, nullptr, "OpenThermalSession"},
|
FunctionInfo{4, nullptr, "GetBatteryVoltageLevel"},
|
||||||
{6, nullptr, "GetAbnormalTemperatureSet"},
|
FunctionInfo{5, nullptr, "OpenThermalSession"},
|
||||||
{7, nullptr, "OpenClockSession"},
|
FunctionInfo{6, nullptr, "GetAbnormalTemperatureSet"},
|
||||||
{8, nullptr, "GetClockRate"},
|
FunctionInfo{7, nullptr, "OpenClockSession"},
|
||||||
{9, nullptr, "OpenBridgeSession"},
|
FunctionInfo{8, nullptr, "GetClockRate"},
|
||||||
{10, nullptr, "GetBridgePowerSupply"},
|
FunctionInfo{9, nullptr, "OpenBridgeSession"},
|
||||||
{11, nullptr, "OpenVsysVoltageSession"},
|
FunctionInfo{10, nullptr, "GetBridgePowerSupply"},
|
||||||
{12, nullptr, "GetIsBatteryEnoughForFullAwake"},
|
FunctionInfo{11, nullptr, "OpenVsysVoltageSession"},
|
||||||
{13, nullptr, "GetIsCharging"},
|
FunctionInfo{12, nullptr, "GetIsBatteryEnoughForFullAwake"},
|
||||||
{14, nullptr, "Cmd14"},
|
FunctionInfo{13, nullptr, "GetIsCharging"},
|
||||||
{15, nullptr, "Cmd15"},
|
FunctionInfo{14, nullptr, "Cmd14"},
|
||||||
};
|
FunctionInfo{15, nullptr, "Cmd15"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class HSHL_SET final : public ServiceFramework<HSHL_SET> {
|
class HSHL_SET final : public ServiceFramework<HSHL_SET> {
|
||||||
public:
|
public:
|
||||||
explicit HSHL_SET(Core::System& system_) : ServiceFramework{system_, "hshl:set"} {
|
explicit HSHL_SET(Core::System& system_) : ServiceFramework{system_, "hshl:set"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "OpenChargeSession_2"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "OpenThermalSession_2"},
|
FunctionInfo{0, nullptr, "OpenChargeSession_2"},
|
||||||
{2, nullptr, "SetClockRate"},
|
FunctionInfo{1, nullptr, "OpenThermalSession_2"},
|
||||||
{3, nullptr, "SetBridgePowerSupply"},
|
FunctionInfo{2, nullptr, "SetClockRate"},
|
||||||
{4, nullptr, "Cmd4"},
|
FunctionInfo{3, nullptr, "SetBridgePowerSupply"},
|
||||||
{5, nullptr, "Cmd5"},
|
FunctionInfo{4, nullptr, "Cmd4"},
|
||||||
};
|
FunctionInfo{5, nullptr, "Cmd5"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ IPowerStateRequestHandler::IPowerStateRequestHandler(
|
|||||||
{
|
{
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&IPowerStateRequestHandler::GetPowerStateRequestEventReadableHandle>, "GetPowerStateRequestEventReadableHandle"},
|
FunctionInfo{0, D<&IPowerStateRequestHandler::GetPowerStateRequestEventReadableHandle>, "GetPowerStateRequestEventReadableHandle"},
|
||||||
{1, D<&IPowerStateRequestHandler::GetAndClearPowerStateRequest>, "GetAndClearPowerStateRequest"},
|
FunctionInfo{1, D<&IPowerStateRequestHandler::GetAndClearPowerStateRequest>, "GetAndClearPowerStateRequest"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -44,25 +44,25 @@ StaticService::StaticService(Core::System& system_, StaticServiceSetupInfo setup
|
|||||||
m_time->m_shared_memory} {
|
m_time->m_shared_memory} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&StaticService::GetStandardUserSystemClock>, "GetStandardUserSystemClock"},
|
FunctionInfo{0, D<&StaticService::GetStandardUserSystemClock>, "GetStandardUserSystemClock"},
|
||||||
{1, D<&StaticService::GetStandardNetworkSystemClock>, "GetStandardNetworkSystemClock"},
|
FunctionInfo{1, D<&StaticService::GetStandardNetworkSystemClock>, "GetStandardNetworkSystemClock"},
|
||||||
{2, D<&StaticService::GetStandardSteadyClock>, "GetStandardSteadyClock"},
|
FunctionInfo{2, D<&StaticService::GetStandardSteadyClock>, "GetStandardSteadyClock"},
|
||||||
{3, D<&StaticService::GetTimeZoneService>, "GetTimeZoneService"},
|
FunctionInfo{3, D<&StaticService::GetTimeZoneService>, "GetTimeZoneService"},
|
||||||
{4, D<&StaticService::GetStandardLocalSystemClock>, "GetStandardLocalSystemClock"},
|
FunctionInfo{4, D<&StaticService::GetStandardLocalSystemClock>, "GetStandardLocalSystemClock"},
|
||||||
{5, D<&StaticService::GetEphemeralNetworkSystemClock>, "GetEphemeralNetworkSystemClock"},
|
FunctionInfo{5, D<&StaticService::GetEphemeralNetworkSystemClock>, "GetEphemeralNetworkSystemClock"},
|
||||||
{20, D<&StaticService::GetSharedMemoryNativeHandle>, "GetSharedMemoryNativeHandle"},
|
FunctionInfo{20, D<&StaticService::GetSharedMemoryNativeHandle>, "GetSharedMemoryNativeHandle"},
|
||||||
{50, D<&StaticService::SetStandardSteadyClockInternalOffset>, "SetStandardSteadyClockInternalOffset"},
|
FunctionInfo{50, D<&StaticService::SetStandardSteadyClockInternalOffset>, "SetStandardSteadyClockInternalOffset"},
|
||||||
{51, D<&StaticService::GetStandardSteadyClockRtcValue>, "GetStandardSteadyClockRtcValue"},
|
FunctionInfo{51, D<&StaticService::GetStandardSteadyClockRtcValue>, "GetStandardSteadyClockRtcValue"},
|
||||||
{100, D<&StaticService::IsStandardUserSystemClockAutomaticCorrectionEnabled>, "IsStandardUserSystemClockAutomaticCorrectionEnabled"},
|
FunctionInfo{100, D<&StaticService::IsStandardUserSystemClockAutomaticCorrectionEnabled>, "IsStandardUserSystemClockAutomaticCorrectionEnabled"},
|
||||||
{101, D<&StaticService::SetStandardUserSystemClockAutomaticCorrectionEnabled>, "SetStandardUserSystemClockAutomaticCorrectionEnabled"},
|
FunctionInfo{101, D<&StaticService::SetStandardUserSystemClockAutomaticCorrectionEnabled>, "SetStandardUserSystemClockAutomaticCorrectionEnabled"},
|
||||||
{102, D<&StaticService::GetStandardUserSystemClockInitialYear>, "GetStandardUserSystemClockInitialYear"},
|
FunctionInfo{102, D<&StaticService::GetStandardUserSystemClockInitialYear>, "GetStandardUserSystemClockInitialYear"},
|
||||||
{200, D<&StaticService::IsStandardNetworkSystemClockAccuracySufficient>, "IsStandardNetworkSystemClockAccuracySufficient"},
|
FunctionInfo{200, D<&StaticService::IsStandardNetworkSystemClockAccuracySufficient>, "IsStandardNetworkSystemClockAccuracySufficient"},
|
||||||
{201, D<&StaticService::GetStandardUserSystemClockAutomaticCorrectionUpdatedTime>, "GetStandardUserSystemClockAutomaticCorrectionUpdatedTime"},
|
FunctionInfo{201, D<&StaticService::GetStandardUserSystemClockAutomaticCorrectionUpdatedTime>, "GetStandardUserSystemClockAutomaticCorrectionUpdatedTime"},
|
||||||
{300, D<&StaticService::CalculateMonotonicSystemClockBaseTimePoint>, "CalculateMonotonicSystemClockBaseTimePoint"},
|
FunctionInfo{300, D<&StaticService::CalculateMonotonicSystemClockBaseTimePoint>, "CalculateMonotonicSystemClockBaseTimePoint"},
|
||||||
{400, D<&StaticService::GetClockSnapshot>, "GetClockSnapshot"},
|
FunctionInfo{400, D<&StaticService::GetClockSnapshot>, "GetClockSnapshot"},
|
||||||
{401, D<&StaticService::GetClockSnapshotFromSystemClockContext>, "GetClockSnapshotFromSystemClockContext"},
|
FunctionInfo{401, D<&StaticService::GetClockSnapshotFromSystemClockContext>, "GetClockSnapshotFromSystemClockContext"},
|
||||||
{500, D<&StaticService::CalculateStandardUserSystemClockDifferenceByUser>, "CalculateStandardUserSystemClockDifferenceByUser"},
|
FunctionInfo{500, D<&StaticService::CalculateStandardUserSystemClockDifferenceByUser>, "CalculateStandardUserSystemClockDifferenceByUser"},
|
||||||
{501, D<&StaticService::CalculateSpanBetween>, "CalculateSpanBetween"},
|
FunctionInfo{501, D<&StaticService::CalculateSpanBetween>, "CalculateSpanBetween"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -21,22 +21,21 @@ namespace Service::PTM {
|
|||||||
class IPsmSession final : public ServiceFramework<IPsmSession> {
|
class IPsmSession final : public ServiceFramework<IPsmSession> {
|
||||||
public:
|
public:
|
||||||
explicit IPsmSession(Core::System& system_)
|
explicit IPsmSession(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IPsmSession"}, service_context{system_, "IPsmSession"} {
|
: ServiceFramework{system_, "IPsmSession"}
|
||||||
// clang-format off
|
, service_context{system_, "IPsmSession"} {
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IPsmSession::BindStateChangeEvent, "BindStateChangeEvent"},
|
|
||||||
{1, &IPsmSession::UnbindStateChangeEvent, "UnbindStateChangeEvent"},
|
|
||||||
{2, &IPsmSession::SetChargerTypeChangeEventEnabled, "SetChargerTypeChangeEventEnabled"},
|
|
||||||
{3, &IPsmSession::SetPowerSupplyChangeEventEnabled, "SetPowerSupplyChangeEventEnabled"},
|
|
||||||
{4, &IPsmSession::SetBatteryVoltageStateChangeEventEnabled, "SetBatteryVoltageStateChangeEventEnabled"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
|
|
||||||
state_change_event = service_context.CreateEvent("IPsmSession::state_change_event");
|
state_change_event = service_context.CreateEvent("IPsmSession::state_change_event");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IPsmSession::BindStateChangeEvent, "BindStateChangeEvent"},
|
||||||
|
FunctionInfo{1, &IPsmSession::UnbindStateChangeEvent, "UnbindStateChangeEvent"},
|
||||||
|
FunctionInfo{2, &IPsmSession::SetChargerTypeChangeEventEnabled, "SetChargerTypeChangeEventEnabled"},
|
||||||
|
FunctionInfo{3, &IPsmSession::SetPowerSupplyChangeEventEnabled, "SetPowerSupplyChangeEventEnabled"},
|
||||||
|
FunctionInfo{4, &IPsmSession::SetBatteryVoltageStateChangeEventEnabled, "SetBatteryVoltageStateChangeEventEnabled"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
~IPsmSession() override {
|
~IPsmSession() override {
|
||||||
service_context.CloseEvent(state_change_event);
|
service_context.CloseEvent(state_change_event);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,28 +17,26 @@ namespace Service::PTM {
|
|||||||
class PSM_MANU final : public ServiceFramework<PSM_MANU> {
|
class PSM_MANU final : public ServiceFramework<PSM_MANU> {
|
||||||
public:
|
public:
|
||||||
explicit PSM_MANU(Core::System& system_)
|
explicit PSM_MANU(Core::System& system_)
|
||||||
: ServiceFramework{system_, "psm:manu"} {
|
: ServiceFramework{system_, "psm:manu"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "EnableVdd50StateControl"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "DisableVdd50StateControl"},
|
FunctionInfo{0, nullptr, "EnableVdd50StateControl"},
|
||||||
{2, nullptr, "SetVdd50State"},
|
FunctionInfo{1, nullptr, "DisableVdd50StateControl"},
|
||||||
};
|
FunctionInfo{2, nullptr, "SetVdd50State"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class POWCTL final : public ServiceFramework<POWCTL> {
|
class POWCTL final : public ServiceFramework<POWCTL> {
|
||||||
public:
|
public:
|
||||||
explicit POWCTL(Core::System& system_)
|
explicit POWCTL(Core::System& system_)
|
||||||
: ServiceFramework{system_, "powctl"} {
|
: ServiceFramework{system_, "powctl"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "OpenSession"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, nullptr, "OpenSession"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -19,16 +19,14 @@ enum class Location : u8 {
|
|||||||
|
|
||||||
class ISession : public ServiceFramework<ISession> {
|
class ISession : public ServiceFramework<ISession> {
|
||||||
public:
|
public:
|
||||||
explicit ISession(Core::System& system_) : ServiceFramework{system_, "ISession"} {
|
explicit ISession(Core::System& system_) : ServiceFramework{system_, "ISession"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "GetTemperatureRange"},
|
|
||||||
{2, nullptr, "SetMeasurementMode"},
|
|
||||||
{4, &ISession::GetTemperature, "GetTemperature"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "GetTemperatureRange"},
|
||||||
|
FunctionInfo{2, nullptr, "SetMeasurementMode"},
|
||||||
|
FunctionInfo{4, &ISession::GetTemperature, "GetTemperature"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -505,23 +505,22 @@ private:
|
|||||||
|
|
||||||
class RoInterface : public ServiceFramework<RoInterface> {
|
class RoInterface : public ServiceFramework<RoInterface> {
|
||||||
public:
|
public:
|
||||||
explicit RoInterface(Core::System& system_, const char* name_, std::shared_ptr<RoContext> ro,
|
explicit RoInterface(Core::System& system_, const char* name_, std::shared_ptr<RoContext> ro, NrrKind nrr_kind)
|
||||||
NrrKind nrr_kind)
|
: ServiceFramework{system_, name_}
|
||||||
: ServiceFramework{system_, name_}, m_ro(ro), m_context_id(InvalidContextId),
|
, m_ro(ro)
|
||||||
m_nrr_kind(nrr_kind) {
|
, m_context_id(InvalidContextId)
|
||||||
|
, m_nrr_kind(nrr_kind)
|
||||||
|
{}
|
||||||
|
|
||||||
// clang-format off
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
static const FunctionInfo functions[] = {
|
return HandlerTableGenerateWithFind(key,
|
||||||
{0, C<&RoInterface::MapManualLoadModuleMemory>, "MapManualLoadModuleMemory"},
|
FunctionInfo{0, C<&RoInterface::MapManualLoadModuleMemory>, "MapManualLoadModuleMemory"},
|
||||||
{1, C<&RoInterface::UnmapManualLoadModuleMemory>, "UnmapManualLoadModuleMemory"},
|
FunctionInfo{1, C<&RoInterface::UnmapManualLoadModuleMemory>, "UnmapManualLoadModuleMemory"},
|
||||||
{2, C<&RoInterface::RegisterModuleInfo>, "RegisterModuleInfo"},
|
FunctionInfo{2, C<&RoInterface::RegisterModuleInfo>, "RegisterModuleInfo"},
|
||||||
{3, C<&RoInterface::UnregisterModuleInfo>, "UnregisterModuleInfo"},
|
FunctionInfo{3, C<&RoInterface::UnregisterModuleInfo>, "UnregisterModuleInfo"},
|
||||||
{4, C<&RoInterface::RegisterProcessHandle>, "RegisterProcessHandle"},
|
FunctionInfo{4, C<&RoInterface::RegisterProcessHandle>, "RegisterProcessHandle"},
|
||||||
{10, C<&RoInterface::RegisterProcessModuleInfo>, "RegisterProcessModuleInfo"},
|
FunctionInfo{10, C<&RoInterface::RegisterProcessModuleInfo>, "RegisterProcessModuleInfo"}
|
||||||
};
|
);
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~RoInterface() {
|
~RoInterface() {
|
||||||
@@ -578,7 +577,7 @@ public:
|
|||||||
: ServiceFramework{system_, "ro:dmnt"}
|
: ServiceFramework{system_, "ro:dmnt"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{ 0, nullptr, "GetProcessModuleInfo" },
|
FunctionInfo{0, nullptr, "GetProcessModuleInfo" },
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,22 +47,7 @@ ServiceFrameworkBase::~ServiceFrameworkBase() {
|
|||||||
const auto guard = ServiceFrameworkBase::LockService();
|
const auto guard = ServiceFrameworkBase::LockService();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServiceFrameworkBase::RegisterHandlersBase(const FunctionInfoBase* functions, std::size_t n) {
|
void ServiceFrameworkBase::ReportUnimplementedFunction(HLERequestContext& ctx, const FunctionInfoBase* info) {
|
||||||
// Usually this array is sorted by id already, so hint to insert at the end
|
|
||||||
handlers.reserve(handlers.size() + n);
|
|
||||||
for (std::size_t i = 0; i < n; ++i)
|
|
||||||
handlers.emplace_hint(handlers.cend(), functions[i].expected_header, functions[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ServiceFrameworkBase::RegisterHandlersBaseTipc(const FunctionInfoBase* functions, std::size_t n) {
|
|
||||||
// Usually this array is sorted by id already, so hint to insert at the end
|
|
||||||
handlers_tipc.reserve(handlers_tipc.size() + n);
|
|
||||||
for (std::size_t i = 0; i < n; ++i)
|
|
||||||
handlers_tipc.emplace_hint(handlers_tipc.cend(), functions[i].expected_header, functions[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ServiceFrameworkBase::ReportUnimplementedFunction(HLERequestContext& ctx,
|
|
||||||
const FunctionInfoBase* info) {
|
|
||||||
auto cmd_buf = ctx.CommandBuffer();
|
auto cmd_buf = ctx.CommandBuffer();
|
||||||
std::string function_name = info == nullptr ? "<unknown>" : info->name;
|
std::string function_name = info == nullptr ? "<unknown>" : info->name;
|
||||||
|
|
||||||
@@ -82,16 +67,10 @@ void ServiceFrameworkBase::ReportUnimplementedFunction(HLERequestContext& ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ServiceFrameworkBase::InvokeRequest(HLERequestContext& ctx) {
|
void ServiceFrameworkBase::InvokeRequest(HLERequestContext& ctx) {
|
||||||
const auto command = ctx.GetCommand();
|
const bool is_cmd_read = ctx.GetCommand() == 0;
|
||||||
auto it = handlers.find(command);
|
auto const info = FindRequest(ctx.GetCommand());
|
||||||
const bool is_cmd_read = command == 0;
|
|
||||||
FunctionInfoBase const* info = it == handlers.end() ? nullptr : &it->second;
|
|
||||||
if (info == nullptr || info->handler_callback == nullptr)
|
|
||||||
return ReportUnimplementedFunction(ctx, info);
|
|
||||||
|
|
||||||
LOG_TRACE(Service, "{}", MakeFunctionString(info->name, GetServiceName(), ctx.CommandBuffer()));
|
LOG_TRACE(Service, "{}", MakeFunctionString(info->name, GetServiceName(), ctx.CommandBuffer()));
|
||||||
handler_invoker(this, info->handler_callback, ctx);
|
handler_invoker(this, info->handler_callback, ctx);
|
||||||
|
|
||||||
if (is_i_storage && is_cmd_read) {
|
if (is_i_storage && is_cmd_read) {
|
||||||
const auto* const process = ctx.GetThread().GetOwnerProcess();
|
const auto* const process = ctx.GetThread().GetOwnerProcess();
|
||||||
if (process != nullptr && system.IsNVDECActiveForProcess(process->GetId())) {
|
if (process != nullptr && system.IsNVDECActiveForProcess(process->GetId())) {
|
||||||
@@ -101,11 +80,7 @@ void ServiceFrameworkBase::InvokeRequest(HLERequestContext& ctx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ServiceFrameworkBase::InvokeRequestTipc(HLERequestContext& ctx) {
|
void ServiceFrameworkBase::InvokeRequestTipc(HLERequestContext& ctx) {
|
||||||
auto it = handlers_tipc.find(ctx.GetCommand());
|
auto const info = FindRequestTipc(ctx.GetCommand());
|
||||||
FunctionInfoBase const* info = it == handlers_tipc.end() ? nullptr : &it->second;
|
|
||||||
if (info == nullptr || info->handler_callback == nullptr)
|
|
||||||
return ReportUnimplementedFunction(ctx, info);
|
|
||||||
|
|
||||||
LOG_TRACE(Service, "{}", MakeFunctionString(info->name, GetServiceName(), ctx.CommandBuffer()));
|
LOG_TRACE(Service, "{}", MakeFunctionString(info->name, GetServiceName(), ctx.CommandBuffer()));
|
||||||
handler_invoker(this, info->handler_callback, ctx);
|
handler_invoker(this, info->handler_callback, ctx);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
#include <memory>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
#include <tuple>
|
||||||
|
#include "frozen/map.h"
|
||||||
#include "common/container/unordered_map.h"
|
#include "common/container/unordered_map.h"
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
#include "core/hle/service/hle_ipc.h"
|
#include "core/hle/service/hle_ipc.h"
|
||||||
@@ -77,30 +80,37 @@ protected:
|
|||||||
[[nodiscard]] virtual std::unique_lock<std::mutex> LockService() noexcept {
|
[[nodiscard]] virtual std::unique_lock<std::mutex> LockService() noexcept {
|
||||||
return std::unique_lock{lock_service};
|
return std::unique_lock{lock_service};
|
||||||
}
|
}
|
||||||
private:
|
|
||||||
template <typename T>
|
static constexpr u32 MakeVersionGate(std::tuple<u32, u32, u32> since, std::tuple<u32, u32, u32> until = {0, 0, 0}) {
|
||||||
friend class ServiceFramework;
|
auto const [s_maj, s_min, s_pat] = since;
|
||||||
|
auto const [u_maj, u_min, u_pat] = until;
|
||||||
|
return (u_pat << 0) | (u_min << 4) | (u_maj << 8)
|
||||||
|
| (s_pat << 12) | (s_min << 16) | (s_maj << 20);
|
||||||
|
}
|
||||||
|
|
||||||
struct FunctionInfoBase {
|
struct FunctionInfoBase {
|
||||||
u32 expected_header;
|
u32 expected_header;
|
||||||
HandlerFnP<ServiceFrameworkBase> handler_callback;
|
HandlerFnP<ServiceFrameworkBase> handler_callback;
|
||||||
const char* name;
|
const char* name;
|
||||||
|
u32 version_gating;
|
||||||
};
|
};
|
||||||
|
private:
|
||||||
|
template <typename T>
|
||||||
|
friend class ServiceFramework;
|
||||||
|
|
||||||
using InvokerFn = void(ServiceFrameworkBase* object, HandlerFnP<ServiceFrameworkBase> member,
|
using InvokerFn = void(ServiceFrameworkBase* object, HandlerFnP<ServiceFrameworkBase> member, HLERequestContext& ctx);
|
||||||
HLERequestContext& ctx);
|
|
||||||
|
|
||||||
explicit ServiceFrameworkBase(Core::System& system_, const char* service_name_,
|
explicit ServiceFrameworkBase(Core::System& system_, const char* service_name_, u32 max_sessions_, InvokerFn* handler_invoker_);
|
||||||
u32 max_sessions_, InvokerFn* handler_invoker_);
|
|
||||||
~ServiceFrameworkBase() override;
|
~ServiceFrameworkBase() override;
|
||||||
|
|
||||||
|
virtual FunctionInfoBase const* FindRequest(u32 key) = 0;
|
||||||
|
virtual FunctionInfoBase const* FindRequestTipc(u32 key) = 0;
|
||||||
|
|
||||||
void RegisterHandlersBase(const FunctionInfoBase* functions, std::size_t n);
|
void RegisterHandlersBase(const FunctionInfoBase* functions, std::size_t n);
|
||||||
void RegisterHandlersBaseTipc(const FunctionInfoBase* functions, std::size_t n);
|
void RegisterHandlersBaseTipc(const FunctionInfoBase* functions, std::size_t n);
|
||||||
void ReportUnimplementedFunction(HLERequestContext& ctx, const FunctionInfoBase* info);
|
void ReportUnimplementedFunction(HLERequestContext& ctx, const FunctionInfoBase* info);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
::Common::unordered_map<u32, FunctionInfoBase> handlers;
|
|
||||||
::Common::unordered_map<u32, FunctionInfoBase> handlers_tipc;
|
|
||||||
/// Used to gain exclusive access to the service members, e.g. from CoreTiming thread.
|
/// Used to gain exclusive access to the service members, e.g. from CoreTiming thread.
|
||||||
std::mutex lock_service;
|
std::mutex lock_service;
|
||||||
/// System context that the service operates under.
|
/// System context that the service operates under.
|
||||||
@@ -143,25 +153,60 @@ protected:
|
|||||||
/// @param expected_header_ request header in the command buffer which will trigger dispatch to this handler
|
/// @param expected_header_ request header in the command buffer which will trigger dispatch to this handler
|
||||||
/// @param handler_callback_ member function in this service which will be called to handle the request
|
/// @param handler_callback_ member function in this service which will be called to handle the request
|
||||||
/// @param name_ human-friendly name for the request. Used mostly for logging purposes.
|
/// @param name_ human-friendly name for the request. Used mostly for logging purposes.
|
||||||
FunctionInfoTyped(u32 expected_header_, HandlerFnP<T> handler_callback_, const char* name_)
|
FunctionInfoTyped(u32 expected_header_, HandlerFnP<T> handler_callback_, const char* name_, u32 version_gating_ = 0)
|
||||||
: FunctionInfoBase{expected_header_, HandlerFnP<ServiceFrameworkBase>(handler_callback_), name_} {}
|
: FunctionInfoBase{expected_header_, HandlerFnP<ServiceFrameworkBase>(handler_callback_), name_, version_gating_}
|
||||||
|
{}
|
||||||
};
|
};
|
||||||
using FunctionInfo = FunctionInfoTyped<Self>;
|
using FunctionInfo = FunctionInfoTyped<Self>;
|
||||||
|
|
||||||
/**
|
template<typename ...Ts>
|
||||||
* Initializes the handler with no functions installed.
|
requires (std::same_as<Ts, FunctionInfo> && ...)
|
||||||
*
|
static FunctionInfoBase const* HandlerTableGenerateWithFind(u32 key, Ts... args) {
|
||||||
* @param system_ The system context to construct this service under.
|
static auto const map = frozen::map<u32, FunctionInfo, sizeof...(args)>{
|
||||||
* @param service_name_ Name of the service.
|
{args.expected_header, FunctionInfo(args)}...
|
||||||
* @param max_sessions_ Maximum number of sessions that can be connected to this service at the
|
};
|
||||||
* same time.
|
auto const it = map.find(key);
|
||||||
*/
|
return it != map.end() ? std::addressof(it->second) : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @brief Initializes the handler with no functions installed.
|
||||||
|
/// @param system_ The system context to construct this service under.
|
||||||
|
/// @param service_name_ Name of the service.
|
||||||
|
/// @param max_sessions_ Maximum number of sessions that can be connected to this service at the
|
||||||
|
/// same time.
|
||||||
explicit ServiceFramework(Core::System& system_, const char* service_name_, u32 max_sessions_ = ServerSessionCountMax)
|
explicit ServiceFramework(Core::System& system_, const char* service_name_, u32 max_sessions_ = ServerSessionCountMax)
|
||||||
: ServiceFrameworkBase(system_, service_name_, max_sessions_, Invoker) {}
|
: ServiceFrameworkBase(system_, service_name_, max_sessions_, Invoker)
|
||||||
|
{}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
auto it = handlers.find(key);
|
||||||
|
FunctionInfoBase const* info = it == handlers.end() ? nullptr : &it->second;
|
||||||
|
return !(info == nullptr || info->handler_callback == nullptr) ? info : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequestTipc(u32 key) override {
|
||||||
|
auto it = handlers_tipc.find(key);
|
||||||
|
FunctionInfoBase const* info = it == handlers_tipc.end() ? nullptr : &it->second;
|
||||||
|
return !(info == nullptr || info->handler_callback == nullptr) ? info : nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr void RegisterHandlersBase(const FunctionInfoBase* functions, std::size_t n) {
|
||||||
|
// Usually this array is sorted by id already, so hint to insert at the end
|
||||||
|
handlers.reserve(handlers.size() + n);
|
||||||
|
for (std::size_t i = 0; i < n; ++i)
|
||||||
|
handlers.emplace_hint(handlers.cend(), functions[i].expected_header, functions[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr void RegisterHandlersBaseTipc(const FunctionInfoBase* functions, std::size_t n) {
|
||||||
|
// Usually this array is sorted by id already, so hint to insert at the end
|
||||||
|
handlers_tipc.reserve(handlers_tipc.size() + n);
|
||||||
|
for (std::size_t i = 0; i < n; ++i)
|
||||||
|
handlers_tipc.emplace_hint(handlers_tipc.cend(), functions[i].expected_header, functions[i]);
|
||||||
|
}
|
||||||
|
|
||||||
/// Registers handlers in the service.
|
/// Registers handlers in the service.
|
||||||
template <typename T = Self, std::size_t N>
|
template <typename T = Self, std::size_t N>
|
||||||
void RegisterHandlers(const FunctionInfoTyped<T> (&functions)[N]) {
|
constexpr void RegisterHandlers(const FunctionInfoTyped<T> (&functions)[N]) {
|
||||||
RegisterHandlers(functions, N);
|
RegisterHandlers(functions, N);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,13 +215,13 @@ protected:
|
|||||||
* overload in order to avoid needing to specify the array size.
|
* overload in order to avoid needing to specify the array size.
|
||||||
*/
|
*/
|
||||||
template <typename T = Self>
|
template <typename T = Self>
|
||||||
void RegisterHandlers(const FunctionInfoTyped<T>* functions, std::size_t n) {
|
constexpr void RegisterHandlers(const FunctionInfoTyped<T>* functions, std::size_t n) {
|
||||||
RegisterHandlersBase(functions, n);
|
RegisterHandlersBase(functions, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Registers handlers in the service.
|
/// Registers handlers in the service.
|
||||||
template <typename T = Self, std::size_t N>
|
template <typename T = Self, std::size_t N>
|
||||||
void RegisterHandlersTipc(const FunctionInfoTyped<T> (&functions)[N]) {
|
constexpr void RegisterHandlersTipc(const FunctionInfoTyped<T> (&functions)[N]) {
|
||||||
RegisterHandlersTipc(functions, N);
|
RegisterHandlersTipc(functions, N);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,7 +230,7 @@ protected:
|
|||||||
* overload in order to avoid needing to specify the array size.
|
* overload in order to avoid needing to specify the array size.
|
||||||
*/
|
*/
|
||||||
template <typename T = Self>
|
template <typename T = Self>
|
||||||
void RegisterHandlersTipc(const FunctionInfoTyped<T>* functions, std::size_t n) {
|
constexpr void RegisterHandlersTipc(const FunctionInfoTyped<T>* functions, std::size_t n) {
|
||||||
RegisterHandlersBaseTipc(functions, n);
|
RegisterHandlersBaseTipc(functions, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,6 +262,9 @@ private:
|
|||||||
// Cast back up to our original types and call the member function
|
// Cast back up to our original types and call the member function
|
||||||
(static_cast<Self*>(object)->*HandlerFnP<Self>(member))(ctx);
|
(static_cast<Self*>(object)->*HandlerFnP<Self>(member))(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
::Common::unordered_map<u32, FunctionInfoBase> handlers;
|
||||||
|
::Common::unordered_map<u32, FunctionInfoBase> handlers_tipc;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Service
|
} // namespace Service
|
||||||
|
|||||||
@@ -15,49 +15,46 @@ namespace Service::Sockets {
|
|||||||
class ETHC_C final : public ServiceFramework<ETHC_C> {
|
class ETHC_C final : public ServiceFramework<ETHC_C> {
|
||||||
public:
|
public:
|
||||||
explicit ETHC_C(Core::System& system_)
|
explicit ETHC_C(Core::System& system_)
|
||||||
: ServiceFramework{system_, "ethc:c"} {
|
: ServiceFramework{system_, "ethc:c"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "Initialize"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "Cancel"},
|
FunctionInfo{0, nullptr, "Initialize"},
|
||||||
{2, nullptr, "GetResult"},
|
FunctionInfo{1, nullptr, "Cancel"},
|
||||||
{3, nullptr, "GetMediaList"},
|
FunctionInfo{2, nullptr, "GetResult"},
|
||||||
{4, nullptr, "SetMediaType"},
|
FunctionInfo{3, nullptr, "GetMediaList"},
|
||||||
{5, nullptr, "GetMediaType"},
|
FunctionInfo{4, nullptr, "SetMediaType"},
|
||||||
{6, nullptr, "GetMacAddress"},
|
FunctionInfo{5, nullptr, "GetMediaType"},
|
||||||
};
|
FunctionInfo{6, nullptr, "GetMacAddress"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ETHC_I final : public ServiceFramework<ETHC_I> {
|
class ETHC_I final : public ServiceFramework<ETHC_I> {
|
||||||
public:
|
public:
|
||||||
explicit ETHC_I(Core::System& system_)
|
explicit ETHC_I(Core::System& system_)
|
||||||
: ServiceFramework{system_, "ethc:i"} {
|
: ServiceFramework{system_, "ethc:i"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "GetReadableHandle"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "Cancel"},
|
FunctionInfo{0, nullptr, "GetReadableHandle"},
|
||||||
{2, nullptr, "GetResult"},
|
FunctionInfo{1, nullptr, "Cancel"},
|
||||||
{3, nullptr, "GetInterfaceList"},
|
FunctionInfo{2, nullptr, "GetResult"},
|
||||||
{4, nullptr, "GetInterfaceCount"},
|
FunctionInfo{3, nullptr, "GetInterfaceList"},
|
||||||
};
|
FunctionInfo{4, nullptr, "GetInterfaceCount"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ISfDriverServiceCreator final : public ServiceFramework<ISfDriverServiceCreator> {
|
class ISfDriverServiceCreator final : public ServiceFramework<ISfDriverServiceCreator> {
|
||||||
public:
|
public:
|
||||||
explicit ISfDriverServiceCreator(Core::System& system_)
|
explicit ISfDriverServiceCreator(Core::System& system_)
|
||||||
: ServiceFramework{system_, "eth:nd"} {
|
: ServiceFramework{system_, "eth:nd"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "CreateDriverService"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, nullptr, "CreateDriverService"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ public:
|
|||||||
explicit CSRNG(Core::System& system_, std::shared_ptr<Module> module_)
|
explicit CSRNG(Core::System& system_, std::shared_ptr<Module> module_)
|
||||||
: Interface(system_, std::move(module_), "csrng") {
|
: Interface(system_, std::move(module_), "csrng") {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &CSRNG::GenerateRandomBytes, "GenerateRandomBytes"},
|
FunctionInfo{0, &CSRNG::GenerateRandomBytes, "GenerateRandomBytes"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,59 +74,56 @@ struct SslContextSharedData {
|
|||||||
|
|
||||||
class ISslConnection final : public ServiceFramework<ISslConnection> {
|
class ISslConnection final : public ServiceFramework<ISslConnection> {
|
||||||
public:
|
public:
|
||||||
explicit ISslConnection(Core::System& system_in, SslVersion ssl_version_in,
|
explicit ISslConnection(Core::System& system_in, SslVersion ssl_version_in, std::shared_ptr<SslContextSharedData>& shared_data_in, std::unique_ptr<SSLConnectionBackend>&& backend_in)
|
||||||
std::shared_ptr<SslContextSharedData>& shared_data_in,
|
: ServiceFramework{system_in, "ISslConnection"}
|
||||||
std::unique_ptr<SSLConnectionBackend>&& backend_in)
|
, ssl_version{ssl_version_in}
|
||||||
: ServiceFramework{system_in, "ISslConnection"}, ssl_version{ssl_version_in},
|
, shared_data{shared_data_in}
|
||||||
shared_data{shared_data_in}, backend{std::move(backend_in)} {
|
, backend{std::move(backend_in)} {
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, D<&ISslConnection::SetSocketDescriptor>, "SetSocketDescriptor"},
|
|
||||||
{1, D<&ISslConnection::SetHostName>, "SetHostName"},
|
|
||||||
{2, D<&ISslConnection::SetVerifyOption>, "SetVerifyOption"},
|
|
||||||
{3, D<&ISslConnection::SetIoMode>, "SetIoMode"},
|
|
||||||
{4, D<&ISslConnection::GetSocketDescriptor>, "GetSocketDescriptor"},
|
|
||||||
{5, D<&ISslConnection::GetHostName>, "GetHostName"},
|
|
||||||
{6, nullptr, "GetVerifyOption"},
|
|
||||||
{7, D<&ISslConnection::GetIoMode>, "GetIoMode"},
|
|
||||||
{8, D<&ISslConnection::DoHandshake>, "DoHandshake"},
|
|
||||||
{9, &ISslConnection::DoHandshakeGetServerCert, "DoHandshakeGetServerCert"},
|
|
||||||
{10, D<&ISslConnection::Read>, "Read"},
|
|
||||||
{11, D<&ISslConnection::Write>, "Write"},
|
|
||||||
{12, D<&ISslConnection::Pending>, "Pending"},
|
|
||||||
{13, D<&ISslConnection::Peek>, "Peek"},
|
|
||||||
{14, D<&ISslConnection::Poll>, "Poll"},
|
|
||||||
{15, D<&ISslConnection::GetVerifyCertError>, "GetVerifyCertError"},
|
|
||||||
{16, D<&ISslConnection::GetNeededServerCertBufferSize>, "GetNeededServerCertBufferSize"},
|
|
||||||
{17, D<&ISslConnection::SetSessionCacheMode>, "SetSessionCacheMode"},
|
|
||||||
{18, D<&ISslConnection::GetSessionCacheMode>, "GetSessionCacheMode"},
|
|
||||||
{19, D<&ISslConnection::FlushSessionCache>, "FlushSessionCache"},
|
|
||||||
{20, D<&ISslConnection::SetRenegotiationMode>, "SetRenegotiationMode"},
|
|
||||||
{21, D<&ISslConnection::GetRenegotiationMode>, "GetRenegotiationMode"},
|
|
||||||
{22, D<&ISslConnection::SetOption>, "SetOption"},
|
|
||||||
{23, D<&ISslConnection::GetOption>, "GetOption"},
|
|
||||||
{24, nullptr, "GetVerifyCertErrors"},
|
|
||||||
{25, nullptr, "GetCipherInfo"},
|
|
||||||
{26, D<&ISslConnection::SetNextAlpnProto>, "SetNextAlpnProto"},
|
|
||||||
{27, D<&ISslConnection::GetNextAlpnProto>, "GetNextAlpnProto"},
|
|
||||||
{28, nullptr, "SetDtlsSocketDescriptor"},
|
|
||||||
{29, nullptr, "GetDtlsHandshakeTimeout"},
|
|
||||||
{30, nullptr, "SetPrivateOption"},
|
|
||||||
{31, nullptr, "SetSrtpCiphers"},
|
|
||||||
{32, nullptr, "GetSrtpCipher"},
|
|
||||||
{33, nullptr, "ExportKeyingMaterial"},
|
|
||||||
{34, nullptr, "SetIoTimeout"},
|
|
||||||
{35, nullptr, "GetIoTimeout"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
|
||||||
|
|
||||||
backend->SetVerifyOption(verify_option);
|
backend->SetVerifyOption(verify_option);
|
||||||
|
|
||||||
shared_data->connection_count++;
|
shared_data->connection_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, D<&ISslConnection::SetSocketDescriptor>, "SetSocketDescriptor"},
|
||||||
|
FunctionInfo{1, D<&ISslConnection::SetHostName>, "SetHostName"},
|
||||||
|
FunctionInfo{2, D<&ISslConnection::SetVerifyOption>, "SetVerifyOption"},
|
||||||
|
FunctionInfo{3, D<&ISslConnection::SetIoMode>, "SetIoMode"},
|
||||||
|
FunctionInfo{4, D<&ISslConnection::GetSocketDescriptor>, "GetSocketDescriptor"},
|
||||||
|
FunctionInfo{5, D<&ISslConnection::GetHostName>, "GetHostName"},
|
||||||
|
FunctionInfo{6, nullptr, "GetVerifyOption"},
|
||||||
|
FunctionInfo{7, D<&ISslConnection::GetIoMode>, "GetIoMode"},
|
||||||
|
FunctionInfo{8, D<&ISslConnection::DoHandshake>, "DoHandshake"},
|
||||||
|
FunctionInfo{9, &ISslConnection::DoHandshakeGetServerCert, "DoHandshakeGetServerCert"},
|
||||||
|
FunctionInfo{10, D<&ISslConnection::Read>, "Read"},
|
||||||
|
FunctionInfo{11, D<&ISslConnection::Write>, "Write"},
|
||||||
|
FunctionInfo{12, D<&ISslConnection::Pending>, "Pending"},
|
||||||
|
FunctionInfo{13, D<&ISslConnection::Peek>, "Peek"},
|
||||||
|
FunctionInfo{14, D<&ISslConnection::Poll>, "Poll"},
|
||||||
|
FunctionInfo{15, D<&ISslConnection::GetVerifyCertError>, "GetVerifyCertError"},
|
||||||
|
FunctionInfo{16, D<&ISslConnection::GetNeededServerCertBufferSize>, "GetNeededServerCertBufferSize"},
|
||||||
|
FunctionInfo{17, D<&ISslConnection::SetSessionCacheMode>, "SetSessionCacheMode"},
|
||||||
|
FunctionInfo{18, D<&ISslConnection::GetSessionCacheMode>, "GetSessionCacheMode"},
|
||||||
|
FunctionInfo{19, D<&ISslConnection::FlushSessionCache>, "FlushSessionCache"},
|
||||||
|
FunctionInfo{20, D<&ISslConnection::SetRenegotiationMode>, "SetRenegotiationMode"},
|
||||||
|
FunctionInfo{21, D<&ISslConnection::GetRenegotiationMode>, "GetRenegotiationMode"},
|
||||||
|
FunctionInfo{22, D<&ISslConnection::SetOption>, "SetOption"},
|
||||||
|
FunctionInfo{23, D<&ISslConnection::GetOption>, "GetOption"},
|
||||||
|
FunctionInfo{24, nullptr, "GetVerifyCertErrors"},
|
||||||
|
FunctionInfo{25, nullptr, "GetCipherInfo"},
|
||||||
|
FunctionInfo{26, D<&ISslConnection::SetNextAlpnProto>, "SetNextAlpnProto"},
|
||||||
|
FunctionInfo{27, D<&ISslConnection::GetNextAlpnProto>, "GetNextAlpnProto"},
|
||||||
|
FunctionInfo{28, nullptr, "SetDtlsSocketDescriptor"},
|
||||||
|
FunctionInfo{29, nullptr, "GetDtlsHandshakeTimeout"},
|
||||||
|
FunctionInfo{30, nullptr, "SetPrivateOption"},
|
||||||
|
FunctionInfo{31, nullptr, "SetSrtpCiphers"},
|
||||||
|
FunctionInfo{32, nullptr, "GetSrtpCipher"},
|
||||||
|
FunctionInfo{33, nullptr, "ExportKeyingMaterial"},
|
||||||
|
FunctionInfo{34, nullptr, "SetIoTimeout"},
|
||||||
|
FunctionInfo{35, nullptr, "GetIoTimeout"}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
~ISslConnection() {
|
~ISslConnection() {
|
||||||
shared_data->connection_count--;
|
shared_data->connection_count--;
|
||||||
if (fd_to_close.has_value()) {
|
if (fd_to_close.has_value()) {
|
||||||
@@ -453,20 +450,20 @@ public:
|
|||||||
: ServiceFramework{system_, "ISslContext"}, ssl_version{version},
|
: ServiceFramework{system_, "ISslContext"}, ssl_version{version},
|
||||||
shared_data{std::make_shared<SslContextSharedData>()} {
|
shared_data{std::make_shared<SslContextSharedData>()} {
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, &ISslContext::SetOption, "SetOption"},
|
FunctionInfo{0, &ISslContext::SetOption, "SetOption"},
|
||||||
{1, &ISslContext::GetOption, "GetOption"},
|
FunctionInfo{1, &ISslContext::GetOption, "GetOption"},
|
||||||
{2, &ISslContext::CreateConnection, "CreateConnection"},
|
FunctionInfo{2, &ISslContext::CreateConnection, "CreateConnection"},
|
||||||
{3, &ISslContext::GetConnectionCount, "GetConnectionCount"},
|
FunctionInfo{3, &ISslContext::GetConnectionCount, "GetConnectionCount"},
|
||||||
{4, &ISslContext::ImportServerPki, "ImportServerPki"},
|
FunctionInfo{4, &ISslContext::ImportServerPki, "ImportServerPki"},
|
||||||
{5, &ISslContext::ImportClientPki, "ImportClientPki"},
|
FunctionInfo{5, &ISslContext::ImportClientPki, "ImportClientPki"},
|
||||||
{6, nullptr, "RemoveServerPki"},
|
FunctionInfo{6, nullptr, "RemoveServerPki"},
|
||||||
{7, nullptr, "RemoveClientPki"},
|
FunctionInfo{7, nullptr, "RemoveClientPki"},
|
||||||
{8, D<&ISslContext::RegisterInternalPki>, "RegisterInternalPki"},
|
FunctionInfo{8, D<&ISslContext::RegisterInternalPki>, "RegisterInternalPki"},
|
||||||
{9, nullptr, "AddPolicyOid"},
|
FunctionInfo{9, nullptr, "AddPolicyOid"},
|
||||||
{10, nullptr, "ImportCrl"},
|
FunctionInfo{10, nullptr, "ImportCrl"},
|
||||||
{11, nullptr, "RemoveCrl"},
|
FunctionInfo{11, nullptr, "RemoveCrl"},
|
||||||
{12, nullptr, "ImportClientCertKeyPki"},
|
FunctionInfo{12, nullptr, "ImportClientCertKeyPki"},
|
||||||
{13, nullptr, "GeneratePrivateKeyAndCert"},
|
FunctionInfo{13, nullptr, "GeneratePrivateKeyAndCert"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -566,23 +563,21 @@ private:
|
|||||||
class ISslService final : public ServiceFramework<ISslService> {
|
class ISslService final : public ServiceFramework<ISslService> {
|
||||||
public:
|
public:
|
||||||
explicit ISslService(Core::System& system_)
|
explicit ISslService(Core::System& system_)
|
||||||
: ServiceFramework{system_, "ssl"}, cert_store{system} {
|
: ServiceFramework{system_, "ssl"}, cert_store{system} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &ISslService::CreateContext, "CreateContext"},
|
|
||||||
{1, nullptr, "GetContextCount"},
|
|
||||||
{2, D<&ISslService::GetCertificates>, "GetCertificates"},
|
|
||||||
{3, D<&ISslService::GetCertificateBufSize>, "GetCertificateBufSize"},
|
|
||||||
{4, nullptr, "DebugIoctl"},
|
|
||||||
{5, &ISslService::SetInterfaceVersion, "SetInterfaceVersion"},
|
|
||||||
{6, nullptr, "FlushSessionCache"},
|
|
||||||
{7, nullptr, "SetDebugOption"},
|
|
||||||
{8, nullptr, "GetDebugOption"},
|
|
||||||
{8, nullptr, "ClearTls12FallbackFlag"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &ISslService::CreateContext, "CreateContext"},
|
||||||
|
FunctionInfo{1, nullptr, "GetContextCount"},
|
||||||
|
FunctionInfo{2, D<&ISslService::GetCertificates>, "GetCertificates"},
|
||||||
|
FunctionInfo{3, D<&ISslService::GetCertificateBufSize>, "GetCertificateBufSize"},
|
||||||
|
FunctionInfo{4, nullptr, "DebugIoctl"},
|
||||||
|
FunctionInfo{5, &ISslService::SetInterfaceVersion, "SetInterfaceVersion"},
|
||||||
|
FunctionInfo{6, nullptr, "FlushSessionCache"},
|
||||||
|
FunctionInfo{7, nullptr, "SetDebugOption"},
|
||||||
|
FunctionInfo{8, nullptr, "GetDebugOption"},
|
||||||
|
FunctionInfo{8, nullptr, "ClearTls12FallbackFlag"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -636,20 +631,20 @@ class ISslServiceForSystem final : public ServiceFramework<ISslServiceForSystem>
|
|||||||
explicit ISslServiceForSystem(Core::System& system_) : ServiceFramework{system_, "ssl:s"} {
|
explicit ISslServiceForSystem(Core::System& system_) : ServiceFramework{system_, "ssl:s"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, D<&ISslServiceForSystem::CreateContext>, "CreateContext"},
|
FunctionInfo{0, D<&ISslServiceForSystem::CreateContext>, "CreateContext"},
|
||||||
{1, D<&ISslServiceForSystem::GetContextCount>, "GetContextCount"},
|
FunctionInfo{1, D<&ISslServiceForSystem::GetContextCount>, "GetContextCount"},
|
||||||
{2, D<&ISslServiceForSystem::GetCertificates>, "GetCertificates"},
|
FunctionInfo{2, D<&ISslServiceForSystem::GetCertificates>, "GetCertificates"},
|
||||||
{3, D<&ISslServiceForSystem::GetCertificateBufSize>, "GetCertificateBufSize"},
|
FunctionInfo{3, D<&ISslServiceForSystem::GetCertificateBufSize>, "GetCertificateBufSize"},
|
||||||
{4, D<&ISslServiceForSystem::DebugIoctl>, "DebugIoctl"},
|
FunctionInfo{4, D<&ISslServiceForSystem::DebugIoctl>, "DebugIoctl"},
|
||||||
{5, D<&ISslServiceForSystem::SetInterfaceVersion>, "SetInterfaceVersion"},
|
FunctionInfo{5, D<&ISslServiceForSystem::SetInterfaceVersion>, "SetInterfaceVersion"},
|
||||||
{6, D<&ISslServiceForSystem::FlushSessionCache>, "FlushSessionCache"},
|
FunctionInfo{6, D<&ISslServiceForSystem::FlushSessionCache>, "FlushSessionCache"},
|
||||||
{7, D<&ISslServiceForSystem::SetDebugOption>, "SetDebugOption"},
|
FunctionInfo{7, D<&ISslServiceForSystem::SetDebugOption>, "SetDebugOption"},
|
||||||
{8, D<&ISslServiceForSystem::GetDebugOption>, "GetDebugOption"},
|
FunctionInfo{8, D<&ISslServiceForSystem::GetDebugOption>, "GetDebugOption"},
|
||||||
{9, D<&ISslServiceForSystem::ClearTls12FallbackFlag>, "ClearTls12FallbackFlag"},
|
FunctionInfo{9, D<&ISslServiceForSystem::ClearTls12FallbackFlag>, "ClearTls12FallbackFlag"},
|
||||||
{100, D<&ISslServiceForSystem::CreateContextForSystem>, "CreateContextForSystem"},
|
FunctionInfo{100, D<&ISslServiceForSystem::CreateContextForSystem>, "CreateContextForSystem"},
|
||||||
{101, D<&ISslServiceForSystem::SetThreadCoreMask>, "SetThreadCoreMask"},
|
FunctionInfo{101, D<&ISslServiceForSystem::SetThreadCoreMask>, "SetThreadCoreMask"},
|
||||||
{102, D<&ISslServiceForSystem::GetThreadCoreMask>, "GetThreadCoreMask"},
|
FunctionInfo{102, D<&ISslServiceForSystem::GetThreadCoreMask>, "GetThreadCoreMask"},
|
||||||
{103, D<&ISslServiceForSystem::VerifySignature>, "VerifySignature"}
|
FunctionInfo{103, D<&ISslServiceForSystem::VerifySignature>, "VerifySignature"}
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public:
|
|||||||
: ServiceFramework{system_, "htc:tenv"}
|
: ServiceFramework{system_, "htc:tenv"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{0, nullptr, "GetServiceInterface"},
|
FunctionInfo{0, nullptr, "GetServiceInterface"}
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
+126
-149
@@ -17,137 +17,123 @@ namespace Service::USB {
|
|||||||
|
|
||||||
class IDsInterface final : public ServiceFramework<IDsInterface> {
|
class IDsInterface final : public ServiceFramework<IDsInterface> {
|
||||||
public:
|
public:
|
||||||
explicit IDsInterface(Core::System& system_) : ServiceFramework{system_, "IDsInterface"} {
|
explicit IDsInterface(Core::System& system_) : ServiceFramework{system_, "IDsInterface"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "AddEndpoint"},
|
|
||||||
{1, nullptr, "GetSetupEvent"},
|
|
||||||
{2, nullptr, "GetSetupPacket"},
|
|
||||||
{3, nullptr, "Enable"},
|
|
||||||
{4, nullptr, "Disable"},
|
|
||||||
{5, nullptr, "CtrlIn"},
|
|
||||||
{6, nullptr, "CtrlOut"},
|
|
||||||
{7, nullptr, "GetCtrlInCompletionEvent"},
|
|
||||||
{8, nullptr, "GetCtrlInUrbReport"},
|
|
||||||
{9, nullptr, "GetCtrlOutCompletionEvent"},
|
|
||||||
{10, nullptr, "GetCtrlOutUrbReport"},
|
|
||||||
{11, nullptr, "CtrlStall"},
|
|
||||||
{12, nullptr, "AppendConfigurationData"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "AddEndpoint"},
|
||||||
|
FunctionInfo{1, nullptr, "GetSetupEvent"},
|
||||||
|
FunctionInfo{2, nullptr, "GetSetupPacket"},
|
||||||
|
FunctionInfo{3, nullptr, "Enable"},
|
||||||
|
FunctionInfo{4, nullptr, "Disable"},
|
||||||
|
FunctionInfo{5, nullptr, "CtrlIn"},
|
||||||
|
FunctionInfo{6, nullptr, "CtrlOut"},
|
||||||
|
FunctionInfo{7, nullptr, "GetCtrlInCompletionEvent"},
|
||||||
|
FunctionInfo{8, nullptr, "GetCtrlInUrbReport"},
|
||||||
|
FunctionInfo{9, nullptr, "GetCtrlOutCompletionEvent"},
|
||||||
|
FunctionInfo{10, nullptr, "GetCtrlOutUrbReport"},
|
||||||
|
FunctionInfo{11, nullptr, "CtrlStall"},
|
||||||
|
FunctionInfo{12, nullptr, "AppendConfigurationData"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IDsRootSession final : public ServiceFramework<IDsRootSession> {
|
class IDsRootSession final : public ServiceFramework<IDsRootSession> {
|
||||||
public:
|
public:
|
||||||
explicit IDsRootSession(Core::System& system_) : ServiceFramework{system_, "usb:ds"} {
|
explicit IDsRootSession(Core::System& system_) : ServiceFramework{system_, "usb:ds"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "OpenDsService"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "OpenDsService"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IClientEpSession final : public ServiceFramework<IClientEpSession> {
|
class IClientEpSession final : public ServiceFramework<IClientEpSession> {
|
||||||
public:
|
public:
|
||||||
explicit IClientEpSession(Core::System& system_)
|
explicit IClientEpSession(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IClientEpSession"} {
|
: ServiceFramework{system_, "IClientEpSession"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "ReOpen"},
|
|
||||||
{1, nullptr, "Close"},
|
|
||||||
{2, nullptr, "GetCompletionEvent"},
|
|
||||||
{3, nullptr, "PopulateRing"},
|
|
||||||
{4, nullptr, "PostBufferAsync"},
|
|
||||||
{5, nullptr, "GetXferReport"},
|
|
||||||
{6, nullptr, "PostBufferMultiAsync"},
|
|
||||||
{7, nullptr, "CreateSmmuSpace"},
|
|
||||||
{8, nullptr, "ShareReportRing"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "ReOpen"},
|
||||||
|
FunctionInfo{1, nullptr, "Close"},
|
||||||
|
FunctionInfo{2, nullptr, "GetCompletionEvent"},
|
||||||
|
FunctionInfo{3, nullptr, "PopulateRing"},
|
||||||
|
FunctionInfo{4, nullptr, "PostBufferAsync"},
|
||||||
|
FunctionInfo{5, nullptr, "GetXferReport"},
|
||||||
|
FunctionInfo{6, nullptr, "PostBufferMultiAsync"},
|
||||||
|
FunctionInfo{7, nullptr, "CreateSmmuSpace"},
|
||||||
|
FunctionInfo{8, nullptr, "ShareReportRing"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IClientIfSession final : public ServiceFramework<IClientIfSession> {
|
class IClientIfSession final : public ServiceFramework<IClientIfSession> {
|
||||||
public:
|
public:
|
||||||
explicit IClientIfSession(Core::System& system_)
|
explicit IClientIfSession(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IClientIfSession"} {
|
: ServiceFramework{system_, "IClientIfSession"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "GetStateChangeEvent"},
|
|
||||||
{1, nullptr, "SetInterface"},
|
|
||||||
{2, nullptr, "GetInterface"},
|
|
||||||
{3, nullptr, "GetAlternateInterface"},
|
|
||||||
{4, nullptr, "GetCurrentFrame"},
|
|
||||||
{5, nullptr, "CtrlXferAsync"},
|
|
||||||
{6, nullptr, "GetCtrlXferCompletionEvent"},
|
|
||||||
{7, nullptr, "GetCtrlXferReport"},
|
|
||||||
{8, nullptr, "ResetDevice"},
|
|
||||||
{9, nullptr, "OpenUsbEp"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "GetStateChangeEvent"},
|
||||||
|
FunctionInfo{1, nullptr, "SetInterface"},
|
||||||
|
FunctionInfo{2, nullptr, "GetInterface"},
|
||||||
|
FunctionInfo{3, nullptr, "GetAlternateInterface"},
|
||||||
|
FunctionInfo{4, nullptr, "GetCurrentFrame"},
|
||||||
|
FunctionInfo{5, nullptr, "CtrlXferAsync"},
|
||||||
|
FunctionInfo{6, nullptr, "GetCtrlXferCompletionEvent"},
|
||||||
|
FunctionInfo{7, nullptr, "GetCtrlXferReport"},
|
||||||
|
FunctionInfo{8, nullptr, "ResetDevice"},
|
||||||
|
FunctionInfo{9, nullptr, "OpenUsbEp"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IClientRootSession final : public ServiceFramework<IClientRootSession> {
|
class IClientRootSession final : public ServiceFramework<IClientRootSession> {
|
||||||
public:
|
public:
|
||||||
explicit IClientRootSession(Core::System& system_) : ServiceFramework{system_, "usb:hs"} {
|
explicit IClientRootSession(Core::System& system_) : ServiceFramework{system_, "usb:hs"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "BindClientProcess"},
|
|
||||||
{1, nullptr, "QueryAllInterfaces"},
|
|
||||||
{2, nullptr, "QueryAvailableInterfaces"},
|
|
||||||
{3, nullptr, "QueryAcquiredInterfaces"},
|
|
||||||
{4, nullptr, "CreateInterfaceAvailableEvent"},
|
|
||||||
{5, nullptr, "DestroyInterfaceAvailableEvent"},
|
|
||||||
{6, nullptr, "GetInterfaceStateChangeEvent"},
|
|
||||||
{7, nullptr, "AcquireUsbIf"},
|
|
||||||
{8, nullptr, "SetTestMode"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "BindClientProcess"},
|
||||||
|
FunctionInfo{1, nullptr, "QueryAllInterfaces"},
|
||||||
|
FunctionInfo{2, nullptr, "QueryAvailableInterfaces"},
|
||||||
|
FunctionInfo{3, nullptr, "QueryAcquiredInterfaces"},
|
||||||
|
FunctionInfo{4, nullptr, "CreateInterfaceAvailableEvent"},
|
||||||
|
FunctionInfo{5, nullptr, "DestroyInterfaceAvailableEvent"},
|
||||||
|
FunctionInfo{6, nullptr, "GetInterfaceStateChangeEvent"},
|
||||||
|
FunctionInfo{7, nullptr, "AcquireUsbIf"},
|
||||||
|
FunctionInfo{8, nullptr, "SetTestMode"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IPdSession final : public ServiceFramework<IPdSession> {
|
class IPdSession final : public ServiceFramework<IPdSession> {
|
||||||
public:
|
public:
|
||||||
explicit IPdSession(Core::System& system_) : ServiceFramework{system_, "IPdSession"} {
|
explicit IPdSession(Core::System& system_) : ServiceFramework{system_, "IPdSession"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "BindNoticeEvent"},
|
|
||||||
{1, nullptr, "UnbindNoticeEvent"},
|
|
||||||
{2, nullptr, "GetStatus"},
|
|
||||||
{3, nullptr, "GetNotice"},
|
|
||||||
{4, nullptr, "EnablePowerRequestNotice"},
|
|
||||||
{5, nullptr, "DisablePowerRequestNotice"},
|
|
||||||
{6, nullptr, "ReplyPowerRequest"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "BindNoticeEvent"},
|
||||||
|
FunctionInfo{1, nullptr, "UnbindNoticeEvent"},
|
||||||
|
FunctionInfo{2, nullptr, "GetStatus"},
|
||||||
|
FunctionInfo{3, nullptr, "GetNotice"},
|
||||||
|
FunctionInfo{4, nullptr, "EnablePowerRequestNotice"},
|
||||||
|
FunctionInfo{5, nullptr, "DisablePowerRequestNotice"},
|
||||||
|
FunctionInfo{6, nullptr, "ReplyPowerRequest"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IPdManager final : public ServiceFramework<IPdManager> {
|
class IPdManager final : public ServiceFramework<IPdManager> {
|
||||||
public:
|
public:
|
||||||
explicit IPdManager(Core::System& system_) : ServiceFramework{system_, "usb:pd"} {
|
explicit IPdManager(Core::System& system_) : ServiceFramework{system_, "usb:pd"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IPdManager::OpenSession, "OpenSession"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IPdManager::OpenSession, "OpenSession"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -163,35 +149,31 @@ private:
|
|||||||
class IPdCradleSession final : public ServiceFramework<IPdCradleSession> {
|
class IPdCradleSession final : public ServiceFramework<IPdCradleSession> {
|
||||||
public:
|
public:
|
||||||
explicit IPdCradleSession(Core::System& system_)
|
explicit IPdCradleSession(Core::System& system_)
|
||||||
: ServiceFramework{system_, "IPdCradleSession"} {
|
: ServiceFramework{system_, "IPdCradleSession"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "SetCradleVdo"},
|
|
||||||
{1, nullptr, "GetCradleVdo"},
|
|
||||||
{2, nullptr, "ResetCradleUsbHub"},
|
|
||||||
{3, nullptr, "GetHostPdcFirmwareType"},
|
|
||||||
{4, nullptr, "GetHostPdcFirmwareRevision"},
|
|
||||||
{5, nullptr, "GetHostPdcManufactureId"},
|
|
||||||
{6, nullptr, "GetHostPdcDeviceId"},
|
|
||||||
{7, nullptr, "EnableCradleRecovery"},
|
|
||||||
{8, nullptr, "DisableCradleRecovery"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "SetCradleVdo"},
|
||||||
|
FunctionInfo{1, nullptr, "GetCradleVdo"},
|
||||||
|
FunctionInfo{2, nullptr, "ResetCradleUsbHub"},
|
||||||
|
FunctionInfo{3, nullptr, "GetHostPdcFirmwareType"},
|
||||||
|
FunctionInfo{4, nullptr, "GetHostPdcFirmwareRevision"},
|
||||||
|
FunctionInfo{5, nullptr, "GetHostPdcManufactureId"},
|
||||||
|
FunctionInfo{6, nullptr, "GetHostPdcDeviceId"},
|
||||||
|
FunctionInfo{7, nullptr, "EnableCradleRecovery"},
|
||||||
|
FunctionInfo{8, nullptr, "DisableCradleRecovery"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IPdCradleManager final : public ServiceFramework<IPdCradleManager> {
|
class IPdCradleManager final : public ServiceFramework<IPdCradleManager> {
|
||||||
public:
|
public:
|
||||||
explicit IPdCradleManager(Core::System& system_) : ServiceFramework{system_, "usb:pd:c"} {
|
explicit IPdCradleManager(Core::System& system_) : ServiceFramework{system_, "usb:pd:c"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, &IPdCradleManager::OpenCradleSession, "OpenCradleSession"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, &IPdCradleManager::OpenCradleSession, "OpenCradleSession"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -206,57 +188,52 @@ private:
|
|||||||
|
|
||||||
class IPmMainService final : public ServiceFramework<IPmMainService> {
|
class IPmMainService final : public ServiceFramework<IPmMainService> {
|
||||||
public:
|
public:
|
||||||
explicit IPmMainService(Core::System& system_) : ServiceFramework{system_, "usb:pm"} {
|
explicit IPmMainService(Core::System& system_) : ServiceFramework{system_, "usb:pm"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
|
||||||
{0, nullptr, "GetPowerEvent"},
|
|
||||||
{1, nullptr, "GetPowerState"},
|
|
||||||
{2, nullptr, "GetDataEvent"},
|
|
||||||
{3, nullptr, "GetDataRole"},
|
|
||||||
{4, nullptr, "SetDiagData"},
|
|
||||||
{5, nullptr, "GetDiagData"},
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
RegisterHandlers(functions);
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
|
return HandlerTableGenerateWithFind(key,
|
||||||
|
FunctionInfo{0, nullptr, "GetPowerEvent"},
|
||||||
|
FunctionInfo{1, nullptr, "GetPowerState"},
|
||||||
|
FunctionInfo{2, nullptr, "GetDataEvent"},
|
||||||
|
FunctionInfo{3, nullptr, "GetDataRole"},
|
||||||
|
FunctionInfo{4, nullptr, "SetDiagData"},
|
||||||
|
FunctionInfo{5, nullptr, "GetDiagData"}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IPdManufactureManager final : public ServiceFramework<IPdManufactureManager> {
|
class IPdManufactureManager final : public ServiceFramework<IPdManufactureManager> {
|
||||||
public:
|
public:
|
||||||
explicit IPdManufactureManager(Core::System& system_) : ServiceFramework{system_, "usb:pd:m"} {
|
explicit IPdManufactureManager(Core::System& system_) : ServiceFramework{system_, "usb:pd:m"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "OpenManufactureSession"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
};
|
FunctionInfo{0, nullptr, "OpenManufactureSession"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IQdbManager final : public ServiceFramework<IQdbManager> {
|
class IQdbManager final : public ServiceFramework<IQdbManager> {
|
||||||
public:
|
public:
|
||||||
explicit IQdbManager(Core::System& system_) : ServiceFramework{system_, "usb:qdb"} {
|
explicit IQdbManager(Core::System& system_) : ServiceFramework{system_, "usb:qdb"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "ImportQuirkDevices"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "HasQuirk"},
|
FunctionInfo{0, nullptr, "ImportQuirkDevices"},
|
||||||
};
|
FunctionInfo{1, nullptr, "HasQuirk"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IPmObserverService final : public ServiceFramework<IPmObserverService> {
|
class IPmObserverService final : public ServiceFramework<IPmObserverService> {
|
||||||
public:
|
public:
|
||||||
explicit IPmObserverService(Core::System& system_) : ServiceFramework{system_, "usb:obsv"} {
|
explicit IPmObserverService(Core::System& system_) : ServiceFramework{system_, "usb:obsv"} {}
|
||||||
// clang-format off
|
|
||||||
static const FunctionInfo functions[] = {
|
FunctionInfoBase const* FindRequest(u32 key) override {
|
||||||
{0, nullptr, "GetTopologyChangeEvent"},
|
return HandlerTableGenerateWithFind(key,
|
||||||
{1, nullptr, "GetFlattenedTopology"},
|
FunctionInfo{0, nullptr, "GetTopologyChangeEvent"},
|
||||||
};
|
FunctionInfo{1, nullptr, "GetFlattenedTopology"}
|
||||||
// clang-format on
|
);
|
||||||
RegisterHandlers(functions);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+144
-144
@@ -18,103 +18,103 @@ public:
|
|||||||
: ServiceFramework{system_, "wlan:lcl"}
|
: ServiceFramework{system_, "wlan:lcl"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{ 0, nullptr, "OpenMasterMode" },
|
FunctionInfo{0, nullptr, "OpenMasterMode" },
|
||||||
{ 0, nullptr, "OpenMode_2" },
|
FunctionInfo{0, nullptr, "OpenMode_2" },
|
||||||
{ 1, nullptr, "CloseMasterMode" },
|
FunctionInfo{1, nullptr, "CloseMasterMode" },
|
||||||
{ 1, nullptr, "CloseMode_2" },
|
FunctionInfo{1, nullptr, "CloseMode_2" },
|
||||||
{ 2, nullptr, "OpenClientMode" },
|
FunctionInfo{2, nullptr, "OpenClientMode" },
|
||||||
{ 2, nullptr, "GetMacAddress_2" },
|
FunctionInfo{2, nullptr, "GetMacAddress_2" },
|
||||||
{ 3, nullptr, "CloseClientMode" },
|
FunctionInfo{3, nullptr, "CloseClientMode" },
|
||||||
{ 3, nullptr, "CreateBss" },
|
FunctionInfo{3, nullptr, "CreateBss" },
|
||||||
{ 4, nullptr, "OpenSpectatorMode" },
|
FunctionInfo{4, nullptr, "OpenSpectatorMode" },
|
||||||
{ 4, nullptr, "DestroyBss" },
|
FunctionInfo{4, nullptr, "DestroyBss" },
|
||||||
{ 5, nullptr, "CloseSpectatorMode" },
|
FunctionInfo{5, nullptr, "CloseSpectatorMode" },
|
||||||
{ 5, nullptr, "StartScan_2" },
|
FunctionInfo{5, nullptr, "StartScan_2" },
|
||||||
{ 6, nullptr, "GetMacAddress_2" },
|
FunctionInfo{6, nullptr, "GetMacAddress_2" },
|
||||||
{ 6, nullptr, "StopScan_2" },
|
FunctionInfo{6, nullptr, "StopScan_2" },
|
||||||
{ 7, nullptr, "CreateBss" },
|
FunctionInfo{7, nullptr, "CreateBss" },
|
||||||
{ 7, nullptr, "Connect_2" },
|
FunctionInfo{7, nullptr, "Connect_2" },
|
||||||
{ 8, nullptr, "DestroyBss" },
|
FunctionInfo{8, nullptr, "DestroyBss" },
|
||||||
{ 8, nullptr, "CancelConnect_2" },
|
FunctionInfo{8, nullptr, "CancelConnect_2" },
|
||||||
{ 9, nullptr, "StartScan_2" },
|
FunctionInfo{9, nullptr, "StartScan_2" },
|
||||||
{ 9, nullptr, "Join" },
|
FunctionInfo{9, nullptr, "Join" },
|
||||||
{ 10, nullptr, "StopScan_2" },
|
FunctionInfo{10, nullptr, "StopScan_2" },
|
||||||
{ 10, nullptr, "CancelJoin" },
|
FunctionInfo{10, nullptr, "CancelJoin" },
|
||||||
{ 11, nullptr, "Connect_2" },
|
FunctionInfo{11, nullptr, "Connect_2" },
|
||||||
{ 11, nullptr, "Disconnect_2" },
|
FunctionInfo{11, nullptr, "Disconnect_2" },
|
||||||
{ 12, nullptr, "CancelConnect_2" },
|
FunctionInfo{12, nullptr, "CancelConnect_2" },
|
||||||
{ 12, nullptr, "SetBeaconLostCount" },
|
FunctionInfo{12, nullptr, "SetBeaconLostCount" },
|
||||||
{ 13, nullptr, "Join" },
|
FunctionInfo{13, nullptr, "Join" },
|
||||||
{ 13, nullptr, "GetSystemEvent_2" },
|
FunctionInfo{13, nullptr, "GetSystemEvent_2" },
|
||||||
{ 14, nullptr, "CancelJoin" },
|
FunctionInfo{14, nullptr, "CancelJoin" },
|
||||||
{ 14, nullptr, "GetConnectionStatus_2" },
|
FunctionInfo{14, nullptr, "GetConnectionStatus_2" },
|
||||||
{ 15, nullptr, "Disconnect_2" },
|
FunctionInfo{15, nullptr, "Disconnect_2" },
|
||||||
{ 15, nullptr, "GetClientStatus" },
|
FunctionInfo{15, nullptr, "GetClientStatus" },
|
||||||
{ 16, nullptr, "SetBeaconLostCount" },
|
FunctionInfo{16, nullptr, "SetBeaconLostCount" },
|
||||||
{ 16, nullptr, "GetBssIndicationEvent" },
|
FunctionInfo{16, nullptr, "GetBssIndicationEvent" },
|
||||||
{ 17, nullptr, "GetSystemEvent_2" },
|
FunctionInfo{17, nullptr, "GetSystemEvent_2" },
|
||||||
{ 17, nullptr, "GetBssIndicationInfo" },
|
FunctionInfo{17, nullptr, "GetBssIndicationInfo" },
|
||||||
{ 18, nullptr, "GetConnectionStatus_2" },
|
FunctionInfo{18, nullptr, "GetConnectionStatus_2" },
|
||||||
{ 18, nullptr, "GetState_2" },
|
FunctionInfo{18, nullptr, "GetState_2" },
|
||||||
{ 19, nullptr, "GetClientStatus" },
|
FunctionInfo{19, nullptr, "GetClientStatus" },
|
||||||
{ 19, nullptr, "GetAllowedChannels" },
|
FunctionInfo{19, nullptr, "GetAllowedChannels" },
|
||||||
{ 20, nullptr, "GetBssIndicationEvent" },
|
FunctionInfo{20, nullptr, "GetBssIndicationEvent" },
|
||||||
{ 20, nullptr, "AddIe" },
|
FunctionInfo{20, nullptr, "AddIe" },
|
||||||
{ 21, nullptr, "GetBssIndicationInfo" },
|
FunctionInfo{21, nullptr, "GetBssIndicationInfo" },
|
||||||
{ 21, nullptr, "DeleteIe" },
|
FunctionInfo{21, nullptr, "DeleteIe" },
|
||||||
{ 22, nullptr, "GetState_2" },
|
FunctionInfo{22, nullptr, "GetState_2" },
|
||||||
{ 22, nullptr, "PutFrameRaw" },
|
FunctionInfo{22, nullptr, "PutFrameRaw" },
|
||||||
{ 23, nullptr, "GetAllowedChannels" },
|
FunctionInfo{23, nullptr, "GetAllowedChannels" },
|
||||||
{ 23, nullptr, "CancelGetFrame" },
|
FunctionInfo{23, nullptr, "CancelGetFrame" },
|
||||||
{ 24, nullptr, "AddIe" },
|
FunctionInfo{24, nullptr, "AddIe" },
|
||||||
{ 24, nullptr, "CreateRxEntry" },
|
FunctionInfo{24, nullptr, "CreateRxEntry" },
|
||||||
{ 25, nullptr, "DeleteIe" },
|
FunctionInfo{25, nullptr, "DeleteIe" },
|
||||||
{ 25, nullptr, "DeleteRxEntry" },
|
FunctionInfo{25, nullptr, "DeleteRxEntry" },
|
||||||
{ 26, nullptr, "PutFrameRaw" },
|
FunctionInfo{26, nullptr, "PutFrameRaw" },
|
||||||
{ 26, nullptr, "AddEthertypeToRxEntry" },
|
FunctionInfo{26, nullptr, "AddEthertypeToRxEntry" },
|
||||||
{ 27, nullptr, "CancelGetFrame" },
|
FunctionInfo{27, nullptr, "CancelGetFrame" },
|
||||||
{ 27, nullptr, "DeleteEthertypeFromRxEntry" },
|
FunctionInfo{27, nullptr, "DeleteEthertypeFromRxEntry" },
|
||||||
{ 28, nullptr, "CreateRxEntry" },
|
FunctionInfo{28, nullptr, "CreateRxEntry" },
|
||||||
{ 28, nullptr, "AddMatchingDataToRxEntry" },
|
FunctionInfo{28, nullptr, "AddMatchingDataToRxEntry" },
|
||||||
{ 29, nullptr, "DeleteRxEntry" },
|
FunctionInfo{29, nullptr, "DeleteRxEntry" },
|
||||||
{ 29, nullptr, "RemoveMatchingDataFromRxEntry" },
|
FunctionInfo{29, nullptr, "RemoveMatchingDataFromRxEntry" },
|
||||||
{ 30, nullptr, "AddEthertypeToRxEntry" },
|
FunctionInfo{30, nullptr, "AddEthertypeToRxEntry" },
|
||||||
{ 30, nullptr, "GetScanResult_2" },
|
FunctionInfo{30, nullptr, "GetScanResult_2" },
|
||||||
{ 31, nullptr, "DeleteEthertypeFromRxEntry" },
|
FunctionInfo{31, nullptr, "DeleteEthertypeFromRxEntry" },
|
||||||
{ 31, nullptr, "PutActionFrameOneShot" },
|
FunctionInfo{31, nullptr, "PutActionFrameOneShot" },
|
||||||
{ 32, nullptr, "AddMatchingDataToRxEntry" },
|
FunctionInfo{32, nullptr, "AddMatchingDataToRxEntry" },
|
||||||
{ 32, nullptr, "SetActionFrameWithBeacon" },
|
FunctionInfo{32, nullptr, "SetActionFrameWithBeacon" },
|
||||||
{ 33, nullptr, "RemoveMatchingDataFromRxEntry" },
|
FunctionInfo{33, nullptr, "RemoveMatchingDataFromRxEntry" },
|
||||||
{ 33, nullptr, "CancelActionFrameWithBeacon" },
|
FunctionInfo{33, nullptr, "CancelActionFrameWithBeacon" },
|
||||||
{ 34, nullptr, "GetScanResult_2" },
|
FunctionInfo{34, nullptr, "GetScanResult_2" },
|
||||||
{ 34, nullptr, "CreateRxEntryForActionFrame" },
|
FunctionInfo{34, nullptr, "CreateRxEntryForActionFrame" },
|
||||||
{ 35, nullptr, "PutActionFrameOneShot" },
|
FunctionInfo{35, nullptr, "PutActionFrameOneShot" },
|
||||||
{ 35, nullptr, "DeleteRxEntryForActionFrame" },
|
FunctionInfo{35, nullptr, "DeleteRxEntryForActionFrame" },
|
||||||
{ 36, nullptr, "SetActionFrameWithBeacon" },
|
FunctionInfo{36, nullptr, "SetActionFrameWithBeacon" },
|
||||||
{ 36, nullptr, "AddSubtypeToRxEntryForActionFrame" },
|
FunctionInfo{36, nullptr, "AddSubtypeToRxEntryForActionFrame" },
|
||||||
{ 37, nullptr, "CancelActionFrameWithBeacon" },
|
FunctionInfo{37, nullptr, "CancelActionFrameWithBeacon" },
|
||||||
{ 37, nullptr, "DeleteSubtypeFromRxEntryForActionFrame" },
|
FunctionInfo{37, nullptr, "DeleteSubtypeFromRxEntryForActionFrame" },
|
||||||
{ 38, nullptr, "CreateRxEntryForActionFrame" },
|
FunctionInfo{38, nullptr, "CreateRxEntryForActionFrame" },
|
||||||
{ 38, nullptr, "CancelGetActionFrame" },
|
FunctionInfo{38, nullptr, "CancelGetActionFrame" },
|
||||||
{ 39, nullptr, "DeleteRxEntryForActionFrame" },
|
FunctionInfo{39, nullptr, "DeleteRxEntryForActionFrame" },
|
||||||
{ 39, nullptr, "GetRssi_2" },
|
FunctionInfo{39, nullptr, "GetRssi_2" },
|
||||||
{ 40, nullptr, "AddSubtypeToRxEntryForActionFrame" },
|
FunctionInfo{40, nullptr, "AddSubtypeToRxEntryForActionFrame" },
|
||||||
{ 40, nullptr, "SetMaxAssociationNumber" },
|
FunctionInfo{40, nullptr, "SetMaxAssociationNumber" },
|
||||||
{ 41, nullptr, "DeleteSubtypeFromRxEntryForActionFrame" },
|
FunctionInfo{41, nullptr, "DeleteSubtypeFromRxEntryForActionFrame" },
|
||||||
{ 41, nullptr, "Cmd41" },
|
FunctionInfo{41, nullptr, "Cmd41" },
|
||||||
{ 42, nullptr, "CancelGetActionFrame" },
|
FunctionInfo{42, nullptr, "CancelGetActionFrame" },
|
||||||
{ 42, nullptr, "Cmd42" },
|
FunctionInfo{42, nullptr, "Cmd42" },
|
||||||
{ 43, nullptr, "GetRssi_2" },
|
FunctionInfo{43, nullptr, "GetRssi_2" },
|
||||||
{ 43, nullptr, "Cmd43" },
|
FunctionInfo{43, nullptr, "Cmd43" },
|
||||||
{ 44, nullptr, "SetMaxAssociationNumber" },
|
FunctionInfo{44, nullptr, "SetMaxAssociationNumber" },
|
||||||
{ 45, nullptr, "OpenLcsMasterMode" },
|
FunctionInfo{45, nullptr, "OpenLcsMasterMode" },
|
||||||
{ 46, nullptr, "CloseLcsMasterMode" },
|
FunctionInfo{46, nullptr, "CloseLcsMasterMode" },
|
||||||
{ 47, nullptr, "OpenLcsClientMode" },
|
FunctionInfo{47, nullptr, "OpenLcsClientMode" },
|
||||||
{ 48, nullptr, "CloseLcsClientMode" },
|
FunctionInfo{48, nullptr, "CloseLcsClientMode" },
|
||||||
{ 49, nullptr, "GetChannelStats" },
|
FunctionInfo{49, nullptr, "GetChannelStats" },
|
||||||
{ 50, nullptr, "Cmd50" },
|
FunctionInfo{50, nullptr, "Cmd50" },
|
||||||
{ 51, nullptr, "Cmd51" },
|
FunctionInfo{51, nullptr, "Cmd51" },
|
||||||
{ 52, nullptr, "Cmd52" },
|
FunctionInfo{52, nullptr, "Cmd52" },
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -126,7 +126,7 @@ public:
|
|||||||
: ServiceFramework{system_, "wlan:lg"}
|
: ServiceFramework{system_, "wlan:lg"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{ 0, nullptr, "GetFrameRaw" },
|
FunctionInfo{0, nullptr, "GetFrameRaw" },
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -138,7 +138,7 @@ public:
|
|||||||
: ServiceFramework{system_, "wlan:lga"}
|
: ServiceFramework{system_, "wlan:lga"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{ 0, nullptr, "GetActionFrame" },
|
FunctionInfo{0, nullptr, "GetActionFrame" },
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -150,7 +150,7 @@ public:
|
|||||||
: ServiceFramework{system_, "wlan:sg"}
|
: ServiceFramework{system_, "wlan:sg"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{ 0, nullptr, "GetFrameRaw" },
|
FunctionInfo{0, nullptr, "GetFrameRaw" },
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -162,19 +162,19 @@ public:
|
|||||||
: ServiceFramework{system_, "wlan:soc"}
|
: ServiceFramework{system_, "wlan:soc"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{ 0, nullptr, "PutFrameRaw_2" },
|
FunctionInfo{0, nullptr, "PutFrameRaw_2" },
|
||||||
{ 1, nullptr, "CancelGetFrame_2" },
|
FunctionInfo{1, nullptr, "CancelGetFrame_2" },
|
||||||
{ 2, nullptr, "CreateRxEntry_2" },
|
FunctionInfo{2, nullptr, "CreateRxEntry_2" },
|
||||||
{ 3, nullptr, "DeleteRxEntry_2" },
|
FunctionInfo{3, nullptr, "DeleteRxEntry_2" },
|
||||||
{ 4, nullptr, "AddEthertypeToRxEntry_2" },
|
FunctionInfo{4, nullptr, "AddEthertypeToRxEntry_2" },
|
||||||
{ 5, nullptr, "DeleteEthertypeFromRxEntry_2" },
|
FunctionInfo{5, nullptr, "DeleteEthertypeFromRxEntry_2" },
|
||||||
{ 6, nullptr, "GetMacAddress_3" },
|
FunctionInfo{6, nullptr, "GetMacAddress_3" },
|
||||||
{ 7, nullptr, "SwitchTsfTimerFunction" },
|
FunctionInfo{7, nullptr, "SwitchTsfTimerFunction" },
|
||||||
{ 8, nullptr, "GetDeltaTimeBetweenSystemAndTsf" },
|
FunctionInfo{8, nullptr, "GetDeltaTimeBetweenSystemAndTsf" },
|
||||||
{ 9, nullptr, "RegisterSharedMemory" },
|
FunctionInfo{9, nullptr, "RegisterSharedMemory" },
|
||||||
{ 10, nullptr, "UnregisterSharedMemory" },
|
FunctionInfo{10, nullptr, "UnregisterSharedMemory" },
|
||||||
{ 11, nullptr, "EnableSharedMemory" },
|
FunctionInfo{11, nullptr, "EnableSharedMemory" },
|
||||||
{ 12, nullptr, "SetMulticastFilter" },
|
FunctionInfo{12, nullptr, "SetMulticastFilter" },
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -186,34 +186,34 @@ public:
|
|||||||
: ServiceFramework{system_, "wlan:dtc"}
|
: ServiceFramework{system_, "wlan:dtc"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{ 0, nullptr, "Cmd0" },
|
FunctionInfo{0, nullptr, "Cmd0" },
|
||||||
{ 1, nullptr, "Cmd1" },
|
FunctionInfo{1, nullptr, "Cmd1" },
|
||||||
{ 2, nullptr, "Cmd2" },
|
FunctionInfo{2, nullptr, "Cmd2" },
|
||||||
{ 3, nullptr, "Cmd3" },
|
FunctionInfo{3, nullptr, "Cmd3" },
|
||||||
{ 4, nullptr, "Cmd4" },
|
FunctionInfo{4, nullptr, "Cmd4" },
|
||||||
{ 5, nullptr, "Cmd5" },
|
FunctionInfo{5, nullptr, "Cmd5" },
|
||||||
{ 6, nullptr, "Cmd6" },
|
FunctionInfo{6, nullptr, "Cmd6" },
|
||||||
{ 7, nullptr, "Cmd7" },
|
FunctionInfo{7, nullptr, "Cmd7" },
|
||||||
{ 8, nullptr, "Cmd8" },
|
FunctionInfo{8, nullptr, "Cmd8" },
|
||||||
{ 9, nullptr, "Cmd9" },
|
FunctionInfo{9, nullptr, "Cmd9" },
|
||||||
{ 10, nullptr, "Cmd10" },
|
FunctionInfo{10, nullptr, "Cmd10" },
|
||||||
{ 11, nullptr, "Cmd11" },
|
FunctionInfo{11, nullptr, "Cmd11" },
|
||||||
{ 12, nullptr, "Cmd12" },
|
FunctionInfo{12, nullptr, "Cmd12" },
|
||||||
{ 13, nullptr, "Cmd13" },
|
FunctionInfo{13, nullptr, "Cmd13" },
|
||||||
{ 14, nullptr, "Cmd14" },
|
FunctionInfo{14, nullptr, "Cmd14" },
|
||||||
{ 15, nullptr, "Cmd15" },
|
FunctionInfo{15, nullptr, "Cmd15" },
|
||||||
{ 16, nullptr, "Cmd16" },
|
FunctionInfo{16, nullptr, "Cmd16" },
|
||||||
{ 17, nullptr, "Cmd17" },
|
FunctionInfo{17, nullptr, "Cmd17" },
|
||||||
{ 18, nullptr, "Cmd18" },
|
FunctionInfo{18, nullptr, "Cmd18" },
|
||||||
{ 19, nullptr, "Cmd19" },
|
FunctionInfo{19, nullptr, "Cmd19" },
|
||||||
{ 20, nullptr, "Cmd20" },
|
FunctionInfo{20, nullptr, "Cmd20" },
|
||||||
{ 21, nullptr, "Cmd21" },
|
FunctionInfo{21, nullptr, "Cmd21" },
|
||||||
{ 22, nullptr, "Cmd22" },
|
FunctionInfo{22, nullptr, "Cmd22" },
|
||||||
{ 23, nullptr, "Cmd23" },
|
FunctionInfo{23, nullptr, "Cmd23" },
|
||||||
{ 24, nullptr, "Cmd24" },
|
FunctionInfo{24, nullptr, "Cmd24" },
|
||||||
{ 25, nullptr, "Cmd25" },
|
FunctionInfo{25, nullptr, "Cmd25" },
|
||||||
{ 26, nullptr, "Cmd26" },
|
FunctionInfo{26, nullptr, "Cmd26" },
|
||||||
{ 27, nullptr, "Cmd27" },
|
FunctionInfo{27, nullptr, "Cmd27" },
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -225,8 +225,8 @@ public:
|
|||||||
: ServiceFramework{system_, "wlan:p"}
|
: ServiceFramework{system_, "wlan:p"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{ 0, nullptr, "CreateWirelessCommunicationService" },
|
FunctionInfo{0, nullptr, "CreateWirelessCommunicationService" },
|
||||||
{ 1, nullptr, "CreatePrivateWirelessCommunicationService" },
|
FunctionInfo{1, nullptr, "CreatePrivateWirelessCommunicationService" },
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
@@ -238,7 +238,7 @@ public:
|
|||||||
: ServiceFramework{system_, "wlan:nd"}
|
: ServiceFramework{system_, "wlan:nd"}
|
||||||
{
|
{
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
{ 0, nullptr, "CreateDriverService" },
|
FunctionInfo{0, nullptr, "CreateDriverService" },
|
||||||
};
|
};
|
||||||
RegisterHandlers(functions);
|
RegisterHandlers(functions);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,19 @@ NPad::NPad(Core::HID::HIDCore& hid_core_, KernelHelpers::ServiceContext& service
|
|||||||
AbstractPad{hid_core_.kernel},
|
AbstractPad{hid_core_.kernel},
|
||||||
}}
|
}}
|
||||||
{
|
{
|
||||||
|
for (std::size_t aruid_index = 0; aruid_index < AruidIndexMax; ++aruid_index) {
|
||||||
|
for (std::size_t i = 0; i < controller_data[aruid_index].size(); ++i) {
|
||||||
|
auto& controller = controller_data[aruid_index][i];
|
||||||
|
controller.device = hid_core.GetEmulatedControllerByIndex(i);
|
||||||
|
Core::HID::ControllerUpdateCallback engine_callback{
|
||||||
|
.on_change = [this, i, kernel = &hid_core.kernel](Core::HID::ControllerTriggerType type) {
|
||||||
|
ControllerUpdate(*kernel, type, i);
|
||||||
|
},
|
||||||
|
.is_npad_service = true,
|
||||||
|
};
|
||||||
|
controller.callback_key = controller.device->SetCallback(engine_callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
for (std::size_t i = 0; i < abstracted_pads.size(); ++i) {
|
for (std::size_t i = 0; i < abstracted_pads.size(); ++i) {
|
||||||
abstracted_pads[i].SetNpadId(IndexToNpadIdType(i));
|
abstracted_pads[i].SetNpadId(IndexToNpadIdType(i));
|
||||||
}
|
}
|
||||||
@@ -93,16 +106,6 @@ Result NPad::Activate(u64 aruid) {
|
|||||||
for (std::size_t i = 0; i < controller_data[aruid_index].size(); ++i) {
|
for (std::size_t i = 0; i < controller_data[aruid_index].size(); ++i) {
|
||||||
auto& controller = controller_data[aruid_index][i];
|
auto& controller = controller_data[aruid_index][i];
|
||||||
controller.shared_memory = &data->shared_memory_format->npad.npad_entry[i].internal_state;
|
controller.shared_memory = &data->shared_memory_format->npad.npad_entry[i].internal_state;
|
||||||
controller.device = hid_core.GetEmulatedControllerByIndex(i);
|
|
||||||
if (!controller.callback_key) {
|
|
||||||
Core::HID::ControllerUpdateCallback engine_callback{
|
|
||||||
.on_change = [this, i](Core::HID::ControllerTriggerType type) {
|
|
||||||
ControllerUpdate(hid_core.kernel, type, i);
|
|
||||||
},
|
|
||||||
.is_npad_service = true,
|
|
||||||
};
|
|
||||||
controller.callback_key = controller.device->SetCallback(engine_callback);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prefill controller buffers
|
// Prefill controller buffers
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user