From b8f16f3538fac8d4434905d531885b9862706bd0 Mon Sep 17 00:00:00 2001 From: german77 Date: Sun, 28 Jan 2024 19:19:21 -0600 Subject: service: hid: Implement home, capture and sleep buttons --- .../resources/system_buttons/sleep_button.cpp | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/hid_core/resources/system_buttons/sleep_button.cpp') diff --git a/src/hid_core/resources/system_buttons/sleep_button.cpp b/src/hid_core/resources/system_buttons/sleep_button.cpp index 22adf501f..159663246 100644 --- a/src/hid_core/resources/system_buttons/sleep_button.cpp +++ b/src/hid_core/resources/system_buttons/sleep_button.cpp @@ -17,10 +17,6 @@ void SleepButton::OnInit() {} void SleepButton::OnRelease() {} void SleepButton::OnUpdate(const Core::Timing::CoreTiming& core_timing) { - if (!smart_update) { - return; - } - std::scoped_lock shared_lock{*shared_mutex}; const u64 aruid = applet_resource->GetActiveAruid(); auto* data = applet_resource->GetAruidData(aruid); @@ -29,11 +25,20 @@ void SleepButton::OnUpdate(const Core::Timing::CoreTiming& core_timing) { return; } - auto& header = data->shared_memory_format->capture_button.header; - header.timestamp = core_timing.GetGlobalTimeNs().count(); - header.total_entry_count = 17; - header.entry_count = 0; - header.last_entry_index = 0; + auto& shared_memory = data->shared_memory_format->sleep_button; + + if (!IsControllerActivated()) { + shared_memory.sleep_lifo.buffer_count = 0; + shared_memory.sleep_lifo.buffer_tail = 0; + return; + } + + const auto& last_entry = shared_memory.sleep_lifo.ReadCurrentEntry().state; + next_state.sampling_number = last_entry.sampling_number + 1; + + next_state.buttons.raw = 0; + + shared_memory.sleep_lifo.WriteNextEntry(next_state); } } // namespace Service::HID -- cgit v1.2.3