From d9aa15eb243bc1b40892c9fcfcbb0e9ef66cfa63 Mon Sep 17 00:00:00 2001
From: Ac_K <Acoustik666@gmail.com>
Date: Wed, 24 Aug 2022 23:41:13 +0200
Subject: [PATCH] pctl: Implement EndFreeCommunication

This PR Implement `EndFreeCommunication` (checked by RE). Nothing more.

Closes #2420
---
 .../IParentalControlService.cs                     | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/Ryujinx.HLE/HOS/Services/Pctl/ParentalControlServiceFactory/IParentalControlService.cs b/Ryujinx.HLE/HOS/Services/Pctl/ParentalControlServiceFactory/IParentalControlService.cs
index 1ccf0fb423..e0017808d9 100644
--- a/Ryujinx.HLE/HOS/Services/Pctl/ParentalControlServiceFactory/IParentalControlService.cs
+++ b/Ryujinx.HLE/HOS/Services/Pctl/ParentalControlServiceFactory/IParentalControlService.cs
@@ -14,11 +14,14 @@ namespace Ryujinx.HLE.HOS.Services.Pctl.ParentalControlServiceFactory
         private ParentalControlFlagValue _parentalControlFlag;
         private int[]                    _ratingAge;
 
+#pragma warning disable CS0414
         // TODO: Find where they are set.
         private bool _restrictionEnabled                  = false;
         private bool _featuresRestriction                 = false;
+        private bool _freeCommunicationEnabled            = false;
         private bool _stereoVisionRestrictionConfigurable = true;
         private bool _stereoVisionRestriction             = false;
+#pragma warning restore CS0414
 
         public IParentalControlService(ServiceCtx context, ulong pid, bool withInitialize, int permissionFlag)
         {
@@ -88,13 +91,22 @@ namespace Ryujinx.HLE.HOS.Services.Pctl.ParentalControlServiceFactory
                 return ResultCode.FreeCommunicationDisabled;
             }
 
-            // NOTE: This sets an internal field to true. Usage have to be determined.
+            _freeCommunicationEnabled = true;
 
             Logger.Stub?.PrintStub(LogClass.ServicePctl);
 
             return ResultCode.Success;
         }
 
+        [CommandHipc(1017)] // 10.0.0+
+        // EndFreeCommunication()
+        public ResultCode EndFreeCommunication(ServiceCtx context)
+        {
+            _freeCommunicationEnabled = false;
+
+            return ResultCode.Success;
+        }
+
         [CommandHipc(1013)] // 4.0.0+
         // ConfirmStereoVisionPermission()
         public ResultCode ConfirmStereoVisionPermission(ServiceCtx context)