diff options
author | german77 <juangerman-13@hotmail.com> | 2022-05-07 22:28:51 +0200 |
---|---|---|
committer | Narr the Reg <juangerman-13@hotmail.com> | 2022-05-09 17:28:04 +0200 |
commit | cc6a4bedfc01ef251cf9caf362997a1821fd1ffa (patch) | |
tree | 10fa1408c999dcc9bd5da6ed64a15712440438bc /src/core/hle/service/glue/notif.h | |
parent | Merge pull request #8300 from Morph1984/resultval-range (diff) | |
download | yuzu-cc6a4bedfc01ef251cf9caf362997a1821fd1ffa.tar yuzu-cc6a4bedfc01ef251cf9caf362997a1821fd1ffa.tar.gz yuzu-cc6a4bedfc01ef251cf9caf362997a1821fd1ffa.tar.bz2 yuzu-cc6a4bedfc01ef251cf9caf362997a1821fd1ffa.tar.lz yuzu-cc6a4bedfc01ef251cf9caf362997a1821fd1ffa.tar.xz yuzu-cc6a4bedfc01ef251cf9caf362997a1821fd1ffa.tar.zst yuzu-cc6a4bedfc01ef251cf9caf362997a1821fd1ffa.zip |
Diffstat (limited to 'src/core/hle/service/glue/notif.h')
-rw-r--r-- | src/core/hle/service/glue/notif.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/core/hle/service/glue/notif.h b/src/core/hle/service/glue/notif.h index 7310d7f72..4467e1f35 100644 --- a/src/core/hle/service/glue/notif.h +++ b/src/core/hle/service/glue/notif.h @@ -3,6 +3,10 @@ #pragma once +#include <array> +#include <vector> + +#include "common/uuid.h" #include "core/hle/service/service.h" namespace Core { @@ -17,8 +21,52 @@ public: ~NOTIF_A() override; private: + static constexpr std::size_t max_alarms = 8; + + // This is nn::notification::AlarmSettingId + using AlarmSettingId = u16; + static_assert(sizeof(AlarmSettingId) == 0x2, "AlarmSettingId is an invalid size"); + + using ApplicationParameter = std::array<u8, 0x400>; + static_assert(sizeof(ApplicationParameter) == 0x400, "ApplicationParameter is an invalid size"); + + struct DailyAlarmSetting { + s8 hour; + s8 minute; + }; + static_assert(sizeof(DailyAlarmSetting) == 0x2, "DailyAlarmSetting is an invalid size"); + + struct WeeklyScheduleAlarmSetting { + INSERT_PADDING_BYTES(0xA); + std::array<DailyAlarmSetting, 0x7> day_of_week; + }; + static_assert(sizeof(WeeklyScheduleAlarmSetting) == 0x18, + "WeeklyScheduleAlarmSetting is an invalid size"); + + // This is nn::notification::AlarmSetting + struct AlarmSetting { + AlarmSettingId alarm_setting_id; + u8 kind; + u8 muted; + INSERT_PADDING_BYTES(0x4); + Common::UUID account_id; + u64 application_id; + INSERT_PADDING_BYTES(0x8); + WeeklyScheduleAlarmSetting schedule; + }; + static_assert(sizeof(AlarmSetting) == 0x40, "AlarmSetting is an invalid size"); + + void RegisterAlarmSetting(Kernel::HLERequestContext& ctx); + void UpdateAlarmSetting(Kernel::HLERequestContext& ctx); void ListAlarmSettings(Kernel::HLERequestContext& ctx); + void LoadApplicationParameter(Kernel::HLERequestContext& ctx); + void DeleteAlarmSetting(Kernel::HLERequestContext& ctx); void Initialize(Kernel::HLERequestContext& ctx); + + std::vector<AlarmSetting>::iterator GetAlarmFromId(AlarmSettingId alarm_setting_id); + + std::vector<AlarmSetting> alarms{}; + AlarmSettingId last_alarm_setting_id{}; }; } // namespace Service::Glue |