mirror of
https://git.citron-emu.org/citron/emulator
synced 2025-12-21 03:23:34 +00:00
Merge branch 'npns-add-new-functions-services' into 'master'
feat(service/npns): Add NPNS stubs and interfaces from documentation See merge request citron/rewrite!15
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2025 citron Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -24,10 +25,15 @@ public:
|
|||||||
{4, nullptr, "ReceiveRaw"},
|
{4, nullptr, "ReceiveRaw"},
|
||||||
{5, C<&INpnsSystem::GetReceiveEvent>, "GetReceiveEvent"},
|
{5, C<&INpnsSystem::GetReceiveEvent>, "GetReceiveEvent"},
|
||||||
{6, nullptr, "ListenUndelivered"},
|
{6, nullptr, "ListenUndelivered"},
|
||||||
{7, nullptr, "GetStateChangeEVent"},
|
{7, nullptr, "GetStateChangeEvent"},
|
||||||
|
{8, nullptr, "ListenToByName"},
|
||||||
{11, nullptr, "SubscribeTopic"},
|
{11, nullptr, "SubscribeTopic"},
|
||||||
{12, nullptr, "UnsubscribeTopic"},
|
{12, nullptr, "UnsubscribeTopic"},
|
||||||
{13, nullptr, "QueryIsTopicExist"},
|
{13, nullptr, "QueryIsTopicExist"},
|
||||||
|
{14, nullptr, "SubscribeTopicByAccount"},
|
||||||
|
{15, nullptr, "UnsubscribeTopicByAccount"},
|
||||||
|
{16, nullptr, "DownloadSubscriptionList"},
|
||||||
|
{17, nullptr, "UnknownCmd17"},
|
||||||
{21, nullptr, "CreateToken"},
|
{21, nullptr, "CreateToken"},
|
||||||
{22, nullptr, "CreateTokenWithApplicationId"},
|
{22, nullptr, "CreateTokenWithApplicationId"},
|
||||||
{23, nullptr, "DestroyToken"},
|
{23, nullptr, "DestroyToken"},
|
||||||
@@ -35,30 +41,64 @@ public:
|
|||||||
{25, nullptr, "QueryIsTokenValid"},
|
{25, nullptr, "QueryIsTokenValid"},
|
||||||
{26, nullptr, "ListenToMyApplicationId"},
|
{26, nullptr, "ListenToMyApplicationId"},
|
||||||
{27, nullptr, "DestroyTokenAll"},
|
{27, nullptr, "DestroyTokenAll"},
|
||||||
|
{28, nullptr, "CreateTokenWithName"},
|
||||||
|
{29, nullptr, "DestroyTokenWithName"},
|
||||||
{31, nullptr, "UploadTokenToBaaS"},
|
{31, nullptr, "UploadTokenToBaaS"},
|
||||||
{32, nullptr, "DestroyTokenForBaaS"},
|
{32, nullptr, "DestroyTokenForBaaS"},
|
||||||
{33, nullptr, "CreateTokenForBaaS"},
|
{33, nullptr, "CreateTokenForBaaS"},
|
||||||
{34, nullptr, "SetBaaSDeviceAccountIdList"},
|
{34, nullptr, "SetBaaSDeviceAccountIdList"},
|
||||||
|
{35, nullptr, "LinkNsaId"},
|
||||||
|
{36, nullptr, "UnlinkNsaId"},
|
||||||
|
{37, nullptr, "RelinkNsaId"},
|
||||||
|
{40, nullptr, "GetNetworkServiceAccountIdTokenRequestEvent"},
|
||||||
|
{41, nullptr, "TryPopNetworkServiceAccountIdTokenRequestUid"},
|
||||||
|
{42, nullptr, "SetNetworkServiceAccountIdTokenSuccess"},
|
||||||
|
{43, nullptr, "SetNetworkServiceAccountIdTokenFailure"},
|
||||||
|
{44, nullptr, "SetUidList"},
|
||||||
|
{45, nullptr, "PutDigitalTwinKeyValue"},
|
||||||
|
{51, nullptr, "DeleteDigitalTwinKeyValue"},
|
||||||
|
{52, nullptr, "UnknownCmd52"},
|
||||||
|
{53, nullptr, "UnknownCmd53"},
|
||||||
|
{60, nullptr, "UnknownCmd60"},
|
||||||
|
{61, nullptr, "UnknownCmd61"},
|
||||||
|
{70, nullptr, "UnknownCmd70"},
|
||||||
{101, nullptr, "Suspend"},
|
{101, nullptr, "Suspend"},
|
||||||
{102, nullptr, "Resume"},
|
{102, nullptr, "Resume"},
|
||||||
{103, nullptr, "GetState"},
|
{103, nullptr, "GetState"},
|
||||||
{104, nullptr, "GetStatistics"},
|
{104, nullptr, "GetStatistics"},
|
||||||
{105, nullptr, "GetPlayReportRequestEvent"},
|
{105, nullptr, "GetPlayReportRequestEvent"},
|
||||||
|
{106, nullptr, "GetLastNotifiedTime"},
|
||||||
|
{107, nullptr, "SetLastNotifiedTime"},
|
||||||
{111, nullptr, "GetJid"},
|
{111, nullptr, "GetJid"},
|
||||||
{112, nullptr, "CreateJid"},
|
{112, nullptr, "CreateJid"},
|
||||||
{113, nullptr, "DestroyJid"},
|
{113, nullptr, "DestroyJid"},
|
||||||
{114, nullptr, "AttachJid"},
|
{114, nullptr, "AttachJid"},
|
||||||
{115, nullptr, "DetachJid"},
|
{115, nullptr, "DetachJid"},
|
||||||
{120, nullptr, "CreateNotificationReceiver"},
|
{120, nullptr, "CreateNotificationReceiver"},
|
||||||
|
{141, nullptr, "UnknownCmd141"},
|
||||||
|
{142, nullptr, "UnknownCmd142"},
|
||||||
|
{143, nullptr, "UnknownCmd143"},
|
||||||
|
{144, nullptr, "UnknownCmd144"},
|
||||||
|
{145, nullptr, "UnknownCmd145"},
|
||||||
|
{146, nullptr, "UnknownCmd146"},
|
||||||
|
{147, nullptr, "UnknownCmd147"},
|
||||||
{151, nullptr, "GetStateWithHandover"},
|
{151, nullptr, "GetStateWithHandover"},
|
||||||
{152, nullptr, "GetStateChangeEventWithHandover"},
|
{152, nullptr, "GetStateChangeEventWithHandover"},
|
||||||
{153, nullptr, "GetDropEventWithHandover"},
|
{153, nullptr, "GetDropEventWithHandover"},
|
||||||
{154, nullptr, "CreateTokenAsync"},
|
{154, nullptr, "CreateTokenAsync"},
|
||||||
{155, nullptr, "CreateTokenAsyncWithApplicationId"},
|
{155, nullptr, "CreateTokenAsyncWithApplicationId"},
|
||||||
|
{156, nullptr, "CreateTokenWithNameAsync"},
|
||||||
{161, nullptr, "GetRequestChangeStateCancelEvent"},
|
{161, nullptr, "GetRequestChangeStateCancelEvent"},
|
||||||
{162, nullptr, "RequestChangeStateForceTimedWithCancelEvent"},
|
{162, nullptr, "RequestChangeStateForceTimedWithCancelEvent"},
|
||||||
{201, nullptr, "RequestChangeStateForceTimed"},
|
{201, nullptr, "RequestChangeStateForceTimed"},
|
||||||
{202, nullptr, "RequestChangeStateForceAsync"},
|
{202, nullptr, "RequestChangeStateForceAsync"},
|
||||||
|
{203, nullptr, "UnknownCmd203"},
|
||||||
|
{301, nullptr, "GetPassword"},
|
||||||
|
{302, nullptr, "GetAllImmigration"},
|
||||||
|
{303, nullptr, "GetNotificationHistories"},
|
||||||
|
{304, nullptr, "GetPersistentConnectionSummary"},
|
||||||
|
{305, nullptr, "GetDigitalTwinSummary"},
|
||||||
|
{306, nullptr, "GetDigitalTwinValue"},
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
@@ -98,7 +138,8 @@ public:
|
|||||||
{3, nullptr, "Receive"},
|
{3, nullptr, "Receive"},
|
||||||
{4, nullptr, "ReceiveRaw"},
|
{4, nullptr, "ReceiveRaw"},
|
||||||
{5, nullptr, "GetReceiveEvent"},
|
{5, nullptr, "GetReceiveEvent"},
|
||||||
{7, nullptr, "GetStateChangeEVent"},
|
{7, nullptr, "GetStateChangeEvent"},
|
||||||
|
{8, nullptr, "ListenToByName"},
|
||||||
{21, nullptr, "CreateToken"},
|
{21, nullptr, "CreateToken"},
|
||||||
{23, nullptr, "DestroyToken"},
|
{23, nullptr, "DestroyToken"},
|
||||||
{25, nullptr, "QueryIsTokenValid"},
|
{25, nullptr, "QueryIsTokenValid"},
|
||||||
@@ -120,6 +161,53 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class INotificationReceiver : public ServiceFramework<INotificationReceiver> {
|
||||||
|
public:
|
||||||
|
explicit INotificationReceiver(Core::System& system_, const char* name)
|
||||||
|
: ServiceFramework{system_, name} {
|
||||||
|
// TODO: Implement functions based on documentation
|
||||||
|
// Cmd 1: ListenTo
|
||||||
|
// Cmd 2: ListenToMyApplicationId
|
||||||
|
// Cmd 3: Receive
|
||||||
|
// Cmd 4: GetReceiveEvent
|
||||||
|
// Cmd 5: [18.0.0+] ListenToByName
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class ICreateTokenAsyncContext : public ServiceFramework<ICreateTokenAsyncContext> {
|
||||||
|
public:
|
||||||
|
explicit ICreateTokenAsyncContext(Core::System& system_, const char* name)
|
||||||
|
: ServiceFramework{system_, name} {
|
||||||
|
// TODO: Implement functions based on documentation
|
||||||
|
// Cmd 1: GetFinishEvent
|
||||||
|
// Cmd 2: Cancel
|
||||||
|
// Cmd 3: GetResult
|
||||||
|
// Cmd 10: GetToken
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class ISubscriptionUpdateNotifier : public ServiceFramework<ISubscriptionUpdateNotifier> {
|
||||||
|
public:
|
||||||
|
explicit ISubscriptionUpdateNotifier(Core::System& system_, const char* name)
|
||||||
|
: ServiceFramework{system_, name} {
|
||||||
|
// TODO: Implement functions based on documentation
|
||||||
|
// Cmd 1: (No name)
|
||||||
|
// Cmd 2: (No name)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class IFuture : public ServiceFramework<IFuture> {
|
||||||
|
public:
|
||||||
|
explicit IFuture(Core::System& system_, const char* name)
|
||||||
|
: ServiceFramework{system_, name} {
|
||||||
|
// TODO: Implement functions based on documentation
|
||||||
|
// Cmd 1: (No name)
|
||||||
|
// Cmd 2: (No name)
|
||||||
|
// Cmd 3: (No name)
|
||||||
|
// Cmd 10: (No name)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void LoopProcess(Core::System& system) {
|
void LoopProcess(Core::System& system) {
|
||||||
auto server_manager = std::make_unique<ServerManager>(system);
|
auto server_manager = std::make_unique<ServerManager>(system);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user