service/am: Implement SetAutoSleepDisabled
Provides a basic implementation of SetAutoSleepDisabled. Until idle handling is implemented, this is about the best we can do. In the meantime, provide a rough documenting of specifics that occur when this function is called on actual hardware.
This commit is contained in:
		| @@ -266,7 +266,7 @@ ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger | ||||
|         {65, nullptr, "ReportUserIsActive"}, | ||||
|         {66, nullptr, "GetCurrentIlluminance"}, | ||||
|         {67, nullptr, "IsIlluminanceAvailable"}, | ||||
|         {68, nullptr, "SetAutoSleepDisabled"}, | ||||
|         {68, &ISelfController::SetAutoSleepDisabled, "SetAutoSleepDisabled"}, | ||||
|         {69, nullptr, "IsAutoSleepDisabled"}, | ||||
|         {70, nullptr, "ReportMultimediaError"}, | ||||
|         {71, nullptr, "GetCurrentIlluminanceEx"}, | ||||
| @@ -454,6 +454,26 @@ void ISelfController::GetIdleTimeDetectionExtension(Kernel::HLERequestContext& c | ||||
|     rb.Push<u32>(idle_time_detection_extension); | ||||
| } | ||||
|  | ||||
| void ISelfController::SetAutoSleepDisabled(Kernel::HLERequestContext& ctx) { | ||||
|     IPC::RequestParser rp{ctx}; | ||||
|     is_auto_sleep_disabled = rp.Pop<bool>(); | ||||
|  | ||||
|     // On the system itself, if the previous state of is_auto_sleep_disabled | ||||
|     // differed from the current value passed in, it'd signify the internal | ||||
|     // window manager to update (and also increment some statistics like update counts) | ||||
|     // | ||||
|     // It'd also indicate this change to an idle handling context. | ||||
|     // | ||||
|     // However, given we're emulating this behavior, most of this can be ignored | ||||
|     // and it's sufficient to simply set the member variable for querying via | ||||
|     // IsAutoSleepDisabled(). | ||||
|  | ||||
|     LOG_DEBUG(Service_AM, "called. is_auto_sleep_disabled={}", is_auto_sleep_disabled); | ||||
|  | ||||
|     IPC::ResponseBuilder rb{ctx, 2}; | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
| } | ||||
|  | ||||
| void ISelfController::GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx) { | ||||
|     LOG_DEBUG(Service_AM, "called."); | ||||
|  | ||||
|   | ||||
| @@ -133,6 +133,7 @@ private: | ||||
|     void SetHandlesRequestToDisplay(Kernel::HLERequestContext& ctx); | ||||
|     void SetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx); | ||||
|     void GetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx); | ||||
|     void SetAutoSleepDisabled(Kernel::HLERequestContext& ctx); | ||||
|     void GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx); | ||||
|     void GetAccumulatedSuspendedTickChangedEvent(Kernel::HLERequestContext& ctx); | ||||
|  | ||||
| @@ -142,6 +143,7 @@ private: | ||||
|  | ||||
|     u32 idle_time_detection_extension = 0; | ||||
|     u64 num_fatal_sections_entered = 0; | ||||
|     bool is_auto_sleep_disabled = false; | ||||
| }; | ||||
|  | ||||
| class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user