|
|
@@ -120,12 +120,13 @@ private:
|
|
|
state = State::Initialized;
|
|
|
}
|
|
|
|
|
|
- void GetState(Kernel::HLERequestContext& ctx) {
|
|
|
- LOG_DEBUG(Service_NFC, "called");
|
|
|
+ void Finalize(Kernel::HLERequestContext& ctx) {
|
|
|
+ LOG_DEBUG(Service_NFP, "called");
|
|
|
|
|
|
- IPC::ResponseBuilder rb{ctx, 3, 0};
|
|
|
+ device_state = DeviceState::Finalized;
|
|
|
+
|
|
|
+ IPC::ResponseBuilder rb{ctx, 2};
|
|
|
rb.Push(ResultSuccess);
|
|
|
- rb.PushRaw<u32>(static_cast<u32>(state));
|
|
|
}
|
|
|
|
|
|
void ListDevices(Kernel::HLERequestContext& ctx) {
|
|
|
@@ -140,35 +141,14 @@ private:
|
|
|
rb.Push<u32>(1);
|
|
|
}
|
|
|
|
|
|
- void GetNpadId(Kernel::HLERequestContext& ctx) {
|
|
|
- IPC::RequestParser rp{ctx};
|
|
|
- const u64 dev_handle = rp.Pop<u64>();
|
|
|
- LOG_DEBUG(Service_NFP, "called, dev_handle=0x{:X}", dev_handle);
|
|
|
-
|
|
|
- IPC::ResponseBuilder rb{ctx, 3};
|
|
|
- rb.Push(ResultSuccess);
|
|
|
- rb.Push<u32>(npad_id);
|
|
|
- }
|
|
|
-
|
|
|
- void AttachActivateEvent(Kernel::HLERequestContext& ctx) {
|
|
|
- IPC::RequestParser rp{ctx};
|
|
|
- const u64 dev_handle = rp.Pop<u64>();
|
|
|
- LOG_DEBUG(Service_NFP, "called, dev_handle=0x{:X}", dev_handle);
|
|
|
-
|
|
|
- IPC::ResponseBuilder rb{ctx, 2, 1};
|
|
|
- rb.Push(ResultSuccess);
|
|
|
- rb.PushCopyObjects(nfp_interface.GetNFCEvent());
|
|
|
- has_attached_handle = true;
|
|
|
- }
|
|
|
-
|
|
|
- void AttachDeactivateEvent(Kernel::HLERequestContext& ctx) {
|
|
|
- IPC::RequestParser rp{ctx};
|
|
|
- const u64 dev_handle = rp.Pop<u64>();
|
|
|
- LOG_DEBUG(Service_NFP, "called, dev_handle=0x{:X}", dev_handle);
|
|
|
+ void StartDetection(Kernel::HLERequestContext& ctx) {
|
|
|
+ LOG_DEBUG(Service_NFP, "called");
|
|
|
|
|
|
- IPC::ResponseBuilder rb{ctx, 2, 1};
|
|
|
+ if (device_state == DeviceState::Initialized || device_state == DeviceState::TagRemoved) {
|
|
|
+ device_state = DeviceState::SearchingForTag;
|
|
|
+ }
|
|
|
+ IPC::ResponseBuilder rb{ctx, 2};
|
|
|
rb.Push(ResultSuccess);
|
|
|
- rb.PushCopyObjects(deactivate_event->GetReadableEvent());
|
|
|
}
|
|
|
|
|
|
void StopDetection(Kernel::HLERequestContext& ctx) {
|
|
|
@@ -191,22 +171,37 @@ private:
|
|
|
rb.Push(ResultSuccess);
|
|
|
}
|
|
|
|
|
|
- void GetDeviceState(Kernel::HLERequestContext& ctx) {
|
|
|
+ void Mount(Kernel::HLERequestContext& ctx) {
|
|
|
LOG_DEBUG(Service_NFP, "called");
|
|
|
|
|
|
- IPC::ResponseBuilder rb{ctx, 3};
|
|
|
+ device_state = DeviceState::TagNearby;
|
|
|
+ IPC::ResponseBuilder rb{ctx, 2};
|
|
|
rb.Push(ResultSuccess);
|
|
|
- rb.Push<u32>(static_cast<u32>(device_state));
|
|
|
}
|
|
|
|
|
|
- void StartDetection(Kernel::HLERequestContext& ctx) {
|
|
|
+ void Unmount(Kernel::HLERequestContext& ctx) {
|
|
|
LOG_DEBUG(Service_NFP, "called");
|
|
|
|
|
|
- if (device_state == DeviceState::Initialized || device_state == DeviceState::TagRemoved) {
|
|
|
- device_state = DeviceState::SearchingForTag;
|
|
|
- }
|
|
|
+ device_state = DeviceState::TagFound;
|
|
|
+
|
|
|
+ IPC::ResponseBuilder rb{ctx, 2};
|
|
|
+ rb.Push(ResultSuccess);
|
|
|
+ }
|
|
|
+
|
|
|
+ void OpenApplicationArea(Kernel::HLERequestContext& ctx) {
|
|
|
+ LOG_WARNING(Service_NFP, "(STUBBED) called");
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
|
+ rb.Push(ErrCodes::ERR_NO_APPLICATION_AREA);
|
|
|
+ }
|
|
|
+
|
|
|
+ void GetApplicationArea(Kernel::HLERequestContext& ctx) {
|
|
|
+ LOG_WARNING(Service_NFP, "(STUBBED) called");
|
|
|
+
|
|
|
+ // TODO(ogniK): Pull application area from amiibo
|
|
|
+
|
|
|
+ IPC::ResponseBuilder rb{ctx, 3};
|
|
|
rb.Push(ResultSuccess);
|
|
|
+ rb.PushRaw<u32>(0); // This is from the GetCommonInfo stub
|
|
|
}
|
|
|
|
|
|
void GetTagInfo(Kernel::HLERequestContext& ctx) {
|
|
|
@@ -226,75 +221,82 @@ private:
|
|
|
rb.Push(ResultSuccess);
|
|
|
}
|
|
|
|
|
|
- void Mount(Kernel::HLERequestContext& ctx) {
|
|
|
- LOG_DEBUG(Service_NFP, "called");
|
|
|
-
|
|
|
- device_state = DeviceState::TagNearby;
|
|
|
- IPC::ResponseBuilder rb{ctx, 2};
|
|
|
- rb.Push(ResultSuccess);
|
|
|
- }
|
|
|
+ void GetRegisterInfo(Kernel::HLERequestContext& ctx) {
|
|
|
+ LOG_WARNING(Service_NFP, "(STUBBED) called");
|
|
|
|
|
|
- void GetModelInfo(Kernel::HLERequestContext& ctx) {
|
|
|
- LOG_DEBUG(Service_NFP, "called");
|
|
|
+ // TODO(ogniK): Pull Mii and owner data from amiibo
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
|
- const auto& amiibo = nfp_interface.GetAmiiboBuffer();
|
|
|
- ctx.WriteBuffer(amiibo.model_info);
|
|
|
rb.Push(ResultSuccess);
|
|
|
}
|
|
|
|
|
|
- void Unmount(Kernel::HLERequestContext& ctx) {
|
|
|
- LOG_DEBUG(Service_NFP, "called");
|
|
|
+ void GetCommonInfo(Kernel::HLERequestContext& ctx) {
|
|
|
+ LOG_WARNING(Service_NFP, "(STUBBED) called");
|
|
|
|
|
|
- device_state = DeviceState::TagFound;
|
|
|
+ // TODO(ogniK): Pull common information from amiibo
|
|
|
+
|
|
|
+ CommonInfo common_info{};
|
|
|
+ common_info.application_area_size = 0;
|
|
|
+ ctx.WriteBuffer(common_info);
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
|
rb.Push(ResultSuccess);
|
|
|
}
|
|
|
|
|
|
- void Finalize(Kernel::HLERequestContext& ctx) {
|
|
|
+ void GetModelInfo(Kernel::HLERequestContext& ctx) {
|
|
|
LOG_DEBUG(Service_NFP, "called");
|
|
|
|
|
|
- device_state = DeviceState::Finalized;
|
|
|
-
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
|
+ const auto& amiibo = nfp_interface.GetAmiiboBuffer();
|
|
|
+ ctx.WriteBuffer(amiibo.model_info);
|
|
|
rb.Push(ResultSuccess);
|
|
|
}
|
|
|
|
|
|
- void AttachAvailabilityChangeEvent(Kernel::HLERequestContext& ctx) {
|
|
|
- LOG_WARNING(Service_NFP, "(STUBBED) called");
|
|
|
+ void AttachActivateEvent(Kernel::HLERequestContext& ctx) {
|
|
|
+ IPC::RequestParser rp{ctx};
|
|
|
+ const u64 dev_handle = rp.Pop<u64>();
|
|
|
+ LOG_DEBUG(Service_NFP, "called, dev_handle=0x{:X}", dev_handle);
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 1};
|
|
|
rb.Push(ResultSuccess);
|
|
|
- rb.PushCopyObjects(availability_change_event->GetReadableEvent());
|
|
|
+ rb.PushCopyObjects(nfp_interface.GetNFCEvent());
|
|
|
+ has_attached_handle = true;
|
|
|
}
|
|
|
|
|
|
- void GetRegisterInfo(Kernel::HLERequestContext& ctx) {
|
|
|
- LOG_WARNING(Service_NFP, "(STUBBED) called");
|
|
|
-
|
|
|
- // TODO(ogniK): Pull Mii and owner data from amiibo
|
|
|
+ void AttachDeactivateEvent(Kernel::HLERequestContext& ctx) {
|
|
|
+ IPC::RequestParser rp{ctx};
|
|
|
+ const u64 dev_handle = rp.Pop<u64>();
|
|
|
+ LOG_DEBUG(Service_NFP, "called, dev_handle=0x{:X}", dev_handle);
|
|
|
|
|
|
- IPC::ResponseBuilder rb{ctx, 2};
|
|
|
+ IPC::ResponseBuilder rb{ctx, 2, 1};
|
|
|
rb.Push(ResultSuccess);
|
|
|
+ rb.PushCopyObjects(deactivate_event.GetReadableEvent());
|
|
|
}
|
|
|
|
|
|
- void GetCommonInfo(Kernel::HLERequestContext& ctx) {
|
|
|
- LOG_WARNING(Service_NFP, "(STUBBED) called");
|
|
|
+ void GetState(Kernel::HLERequestContext& ctx) {
|
|
|
+ LOG_DEBUG(Service_NFC, "called");
|
|
|
|
|
|
- // TODO(ogniK): Pull common information from amiibo
|
|
|
+ IPC::ResponseBuilder rb{ctx, 3, 0};
|
|
|
+ rb.Push(ResultSuccess);
|
|
|
+ rb.PushRaw<u32>(static_cast<u32>(state));
|
|
|
+ }
|
|
|
|
|
|
- CommonInfo common_info{};
|
|
|
- common_info.application_area_size = 0;
|
|
|
- ctx.WriteBuffer(common_info);
|
|
|
+ void GetDeviceState(Kernel::HLERequestContext& ctx) {
|
|
|
+ LOG_DEBUG(Service_NFP, "called");
|
|
|
|
|
|
- IPC::ResponseBuilder rb{ctx, 2};
|
|
|
+ IPC::ResponseBuilder rb{ctx, 3};
|
|
|
rb.Push(ResultSuccess);
|
|
|
+ rb.Push<u32>(static_cast<u32>(device_state));
|
|
|
}
|
|
|
|
|
|
- void OpenApplicationArea(Kernel::HLERequestContext& ctx) {
|
|
|
- LOG_WARNING(Service_NFP, "(STUBBED) called");
|
|
|
- IPC::ResponseBuilder rb{ctx, 2};
|
|
|
- rb.Push(ErrCodes::ERR_NO_APPLICATION_AREA);
|
|
|
+ void GetNpadId(Kernel::HLERequestContext& ctx) {
|
|
|
+ IPC::RequestParser rp{ctx};
|
|
|
+ const u64 dev_handle = rp.Pop<u64>();
|
|
|
+ LOG_DEBUG(Service_NFP, "called, dev_handle=0x{:X}", dev_handle);
|
|
|
+
|
|
|
+ IPC::ResponseBuilder rb{ctx, 3};
|
|
|
+ rb.Push(ResultSuccess);
|
|
|
+ rb.Push<u32>(npad_id);
|
|
|
}
|
|
|
|
|
|
void GetApplicationAreaSize(Kernel::HLERequestContext& ctx) {
|
|
|
@@ -305,14 +307,12 @@ private:
|
|
|
rb.PushRaw<u32>(0); // This is from the GetCommonInfo stub
|
|
|
}
|
|
|
|
|
|
- void GetApplicationArea(Kernel::HLERequestContext& ctx) {
|
|
|
+ void AttachAvailabilityChangeEvent(Kernel::HLERequestContext& ctx) {
|
|
|
LOG_WARNING(Service_NFP, "(STUBBED) called");
|
|
|
|
|
|
- // TODO(ogniK): Pull application area from amiibo
|
|
|
-
|
|
|
- IPC::ResponseBuilder rb{ctx, 3};
|
|
|
+ IPC::ResponseBuilder rb{ctx, 2, 1};
|
|
|
rb.Push(ResultSuccess);
|
|
|
- rb.PushRaw<u32>(0); // This is from the GetCommonInfo stub
|
|
|
+ rb.PushCopyObjects(availability_change_event.GetReadableEvent());
|
|
|
}
|
|
|
|
|
|
Module::Interface& nfp_interface;
|