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"}, |         {65, nullptr, "ReportUserIsActive"}, | ||||||
|         {66, nullptr, "GetCurrentIlluminance"}, |         {66, nullptr, "GetCurrentIlluminance"}, | ||||||
|         {67, nullptr, "IsIlluminanceAvailable"}, |         {67, nullptr, "IsIlluminanceAvailable"}, | ||||||
|         {68, nullptr, "SetAutoSleepDisabled"}, |         {68, &ISelfController::SetAutoSleepDisabled, "SetAutoSleepDisabled"}, | ||||||
|         {69, nullptr, "IsAutoSleepDisabled"}, |         {69, nullptr, "IsAutoSleepDisabled"}, | ||||||
|         {70, nullptr, "ReportMultimediaError"}, |         {70, nullptr, "ReportMultimediaError"}, | ||||||
|         {71, nullptr, "GetCurrentIlluminanceEx"}, |         {71, nullptr, "GetCurrentIlluminanceEx"}, | ||||||
| @@ -454,6 +454,26 @@ void ISelfController::GetIdleTimeDetectionExtension(Kernel::HLERequestContext& c | |||||||
|     rb.Push<u32>(idle_time_detection_extension); |     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) { | void ISelfController::GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx) { | ||||||
|     LOG_DEBUG(Service_AM, "called."); |     LOG_DEBUG(Service_AM, "called."); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -133,6 +133,7 @@ private: | |||||||
|     void SetHandlesRequestToDisplay(Kernel::HLERequestContext& ctx); |     void SetHandlesRequestToDisplay(Kernel::HLERequestContext& ctx); | ||||||
|     void SetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx); |     void SetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx); | ||||||
|     void GetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx); |     void GetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx); | ||||||
|  |     void SetAutoSleepDisabled(Kernel::HLERequestContext& ctx); | ||||||
|     void GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx); |     void GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx); | ||||||
|     void GetAccumulatedSuspendedTickChangedEvent(Kernel::HLERequestContext& ctx); |     void GetAccumulatedSuspendedTickChangedEvent(Kernel::HLERequestContext& ctx); | ||||||
|  |  | ||||||
| @@ -142,6 +143,7 @@ private: | |||||||
|  |  | ||||||
|     u32 idle_time_detection_extension = 0; |     u32 idle_time_detection_extension = 0; | ||||||
|     u64 num_fatal_sections_entered = 0; |     u64 num_fatal_sections_entered = 0; | ||||||
|  |     bool is_auto_sleep_disabled = false; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> { | class ICommonStateGetter final : public ServiceFramework<ICommonStateGetter> { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user