blob: dcc357f65340c84d341bdd8f2f23bc5aae2346fe (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "core/hle/service/kernel_helpers.h"
#include "core/hle/service/pctl/pctl_types.h"
#include "core/hle/service/service.h"
namespace Service::PCTL {
class IParentalControlService final : public ServiceFramework<IParentalControlService> {
public:
explicit IParentalControlService(Core::System& system_, Capability capability_);
~IParentalControlService() override;
private:
bool CheckFreeCommunicationPermissionImpl() const;
bool ConfirmStereoVisionPermissionImpl() const;
void SetStereoVisionRestrictionImpl(bool is_restricted);
void Initialize(HLERequestContext& ctx);
void CheckFreeCommunicationPermission(HLERequestContext& ctx);
void ConfirmSnsPostPermission(HLERequestContext& ctx);
void IsRestrictionTemporaryUnlocked(HLERequestContext& ctx);
void ConfirmStereoVisionPermission(HLERequestContext& ctx);
void EndFreeCommunication(HLERequestContext& ctx);
void IsFreeCommunicationAvailable(HLERequestContext& ctx);
void IsRestrictionEnabled(HLERequestContext& ctx);
void GetSafetyLevel(HLERequestContext& ctx);
void GetCurrentSettings(HLERequestContext& ctx);
void GetFreeCommunicationApplicationListCount(HLERequestContext& ctx);
void ConfirmStereoVisionRestrictionConfigurable(HLERequestContext& ctx);
void IsStereoVisionPermitted(HLERequestContext& ctx);
void IsPairingActive(HLERequestContext& ctx);
void GetSynchronizationEvent(HLERequestContext& ctx);
void GetPlayTimerSettings(HLERequestContext& ctx);
void GetPlayTimerEventToRequestSuspension(HLERequestContext& ctx);
void IsPlayTimerAlarmDisabled(HLERequestContext& ctx);
void GetUnlinkedEvent(HLERequestContext& ctx);
void SetStereoVisionRestriction(HLERequestContext& ctx);
void GetStereoVisionRestriction(HLERequestContext& ctx);
void ResetConfirmedStereoVisionPermission(HLERequestContext& ctx);
struct States {
u64 current_tid{};
ApplicationInfo application_info{};
u64 tid_from_event{};
bool launch_time_valid{};
bool is_suspended{};
bool temporary_unlocked{};
bool free_communication{};
bool stereo_vision{};
};
struct ParentalControlSettings {
bool is_stero_vision_restricted{};
bool is_free_communication_default_on{};
bool disabled{};
};
States states{};
ParentalControlSettings settings{};
RestrictionSettings restriction_settings{};
std::array<char, 8> pin_code{};
Capability capability{};
Kernel::KEvent* synchronization_event;
Kernel::KEvent* unlinked_event;
Kernel::KEvent* request_suspension_event;
KernelHelpers::ServiceContext service_context;
};
} // namespace Service::PCTL
|