|
|
|
@ -152,7 +152,7 @@ private:
|
|
|
|
|
if (pin_code[0] == '\0') {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (!restriction_settings.is_free_communication_default_on) {
|
|
|
|
|
if (!settings.is_free_communication_default_on) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
// TODO(ogniK): Check for blacklisted/exempted applications. Return false can happen here
|
|
|
|
@ -168,21 +168,21 @@ private:
|
|
|
|
|
if (pin_code[0] == '\0') {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (!restriction_settings.is_stero_vision_restricted) {
|
|
|
|
|
if (!settings.is_stero_vision_restricted) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SetStereoVisionRestrictionImpl(bool is_restricted) {
|
|
|
|
|
if (restriction_settings.disabled) {
|
|
|
|
|
if (settings.disabled) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (pin_code[0] == '\0') {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
restriction_settings.is_stero_vision_restricted = is_restricted;
|
|
|
|
|
settings.is_stero_vision_restricted = is_restricted;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Initialize(HLERequestContext& ctx) {
|
|
|
|
@ -430,7 +430,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rb.Push(ResultSuccess);
|
|
|
|
|
rb.Push(restriction_settings.is_stero_vision_restricted);
|
|
|
|
|
rb.Push(settings.is_stero_vision_restricted);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ResetConfirmedStereoVisionPermission(HLERequestContext& ctx) {
|
|
|
|
@ -460,22 +460,28 @@ private:
|
|
|
|
|
bool stereo_vision{};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// This is nn::pctl::RestrictionSettings
|
|
|
|
|
struct RestrictionSettings {
|
|
|
|
|
struct ParentalControlSettings {
|
|
|
|
|
bool is_stero_vision_restricted{};
|
|
|
|
|
bool is_free_communication_default_on{};
|
|
|
|
|
bool disabled{};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// This is nn::pctl::RestrictionSettings
|
|
|
|
|
struct RestrictionSettings {
|
|
|
|
|
u8 rating_age;
|
|
|
|
|
bool sns_post_restriction;
|
|
|
|
|
bool free_communication_restriction;
|
|
|
|
|
};
|
|
|
|
|
static_assert(sizeof(RestrictionSettings) == 0x3, "RestrictionSettings has incorrect size.");
|
|
|
|
|
|
|
|
|
|
// This is nn::pctl::PlayTimerSettings
|
|
|
|
|
struct PlayTimerSettings {
|
|
|
|
|
// TODO: RE the actual contents of this struct
|
|
|
|
|
std::array<u8, 0x34> settings;
|
|
|
|
|
std::array<u32, 13> settings;
|
|
|
|
|
};
|
|
|
|
|
static_assert(sizeof(PlayTimerSettings) == 0x34, "PlayTimerSettings has incorrect size.");
|
|
|
|
|
|
|
|
|
|
States states{};
|
|
|
|
|
ParentalControlSettings settings{};
|
|
|
|
|
RestrictionSettings restriction_settings{};
|
|
|
|
|
std::array<char, 8> pin_code{};
|
|
|
|
|
Capability capability{};
|
|
|
|
|