diff --git a/resourceschedule/background_process_manager/background_process_manager.ndk.json b/resourceschedule/background_process_manager/background_process_manager.ndk.json index db04aecf143c3582923491dfbe5a6468b58cf7c5..c2ac2e36407459c58fbdbbb8cea374ee03e73c15 100644 --- a/resourceschedule/background_process_manager/background_process_manager.ndk.json +++ b/resourceschedule/background_process_manager/background_process_manager.ndk.json @@ -6,5 +6,13 @@ { "first_introduced": "17", "name": "OH_BackgroundProcessManager_ResetProcessPriority" + }, + { + "first_introduced": "20", + "name": "OH_BackgroundProcessManager_SetPowerSaveMode" + }, + { + "first_introduced": "20", + "name": "OH_BackgroundProcessManager_IsPowerSaveMode" } ] \ No newline at end of file diff --git a/resourceschedule/background_process_manager/include/background_process_manager.h b/resourceschedule/background_process_manager/include/background_process_manager.h index b2049aaadfe5d7b15eebffdaf9a8f7137a5819fc..15dc73954a04222c2f05056401e2d1754310067d 100644 --- a/resourceschedule/background_process_manager/include/background_process_manager.h +++ b/resourceschedule/background_process_manager/include/background_process_manager.h @@ -59,6 +59,24 @@ typedef enum BackgroundProcessManager_ProcessPriority { PROCESS_INACTIVE = 2, } BackgroundProcessManager_ProcessPriority; +/** + * @brief Description the status of the power saving mode. + * + * @since 20 + */ +typedef enum BackgroundProcessManager_PowerSaveMode { + /** + * @brief Means the process request not to entry power saving mode + * This setting may be overridden by settings in Task Manager + */ + EFFICIENCY_MODE = 1, + + /** + * @brief Means the process operating mode follows the system and may entry power saving mode + */ + DEFAULT_MODE = 2, +} BackgroundProcessManager_PowerSaveMode; + /** * @brief Enum for BackgroundProcessManager error code. * @@ -70,17 +88,45 @@ typedef enum BackgroundProcessManager_ErrorCode { */ ERR_BACKGROUND_PROCESS_MANAGER_SUCCESS = 0, + /** + * @error Permission denied. + */ + ERR_BACKGROUND_PROCESS_MANAGER_PERMISSION_DENIED = 201, + /** * @error invalid parameter. Possible causes: * 1. priority is out of range. */ ERR_BACKGROUND_PROCESS_MANAGER_INVALID_PARAM = 401, + /** + * @error Capability not supported. + */ + ERR_BACKGROUND_PROCESS_MANAGER_CAPABILITY_NOT_SUPPORTED = 801, + /** * @error remote error. Possible causes: * 1. remote is not work. */ ERR_BACKGROUND_PROCESS_MANAGER_REMOTE_ERROR = 31800001, + + /** + * @error Parameter error. Possible causes: + * 1. Mandatory parameters are left unspecified; + * 2. Incorrect parameter types; + * 3. PowerSaveMode status is out of range. + */ + ERR_BACKGROUND_PROCESS_MANAGER_PARAMETER_ERROR = 31800002, + + /** + * @error Setup erro. This setting is overridden by setting in Task Manager. + */ + ERR_BACKGROUND_PROCESS_MANAGER_SETUP_ERROR = 31800003, + + /** + * @error The setting failed due to system scheduling reasons. + */ + ERR_BACKGROUND_PROCESS_MANAGER_SYSTEM_SCHEDULING = 31800004, } BackgroundProcessManager_ErrorCode; /** @@ -103,6 +149,33 @@ int OH_BackgroundProcessManager_SetProcessPriority(int pid, BackgroundProcessMan * @since 17 */ int OH_BackgroundProcessManager_ResetProcessPriority(int pid); + +/** + * @brief Set the power saving mode of process. The setting may fail due to user setting + * reasons or system scheduling reasons. + * @param pid Indicates the pid of the power saving mode to be set. + * @param powerSaveMode Indicates the power saving mode that needs to be set. + * For details, please refer to BackgroundProcessManager_PowerSaveMode + * @return {@link ERR_BACKGROUND_PROCESS_MANAGER_SUCCESS} 0 - Success. + * @return {@link ERR_BACKGROUND_PROCESS_MANAGER_PERMISSION_DENIED} 201 - Permission denied. + * @return {@link ERR_BACKGROUND_PROCESS_MANAGER_CAPABILITY_NOT_SUPPORTED} 801 - Capability not supported. + * @return {@link ERR_BACKGROUND_PROCESS_MANAGER_PARAMETER_ERROR} 31800002 - Parameter error. + * @return {@link ERR_BACKGROUND_PROCESS_MANAGER_SETUP_ERROR} 31800003 - Setup error. + * @since 20 + */ +int OH_BackgroundProcessManager_SetPowerSaveMode(int pid, BackgroundProcessManager_PowerSaveMode powerSaveMode); + +/** + * @brief Check is the process is in power saving mode. + * + * @param pid Indicates the process to be checked is the pid of the power saving mode. + * @return {@link ERR_BACKGROUND_PROCESS_MANAGER_SUCCESS} 0 - Success. + * @return {@link ERR_BACKGROUND_PROCESS_MANAGER_PERMISSION_DENIED} 201 - Permission denied. + * @return {@link ERR_BACKGROUND_PROCESS_MANAGER_CAPABILITY_NOT_SUPPORTED} 801 - Capability not supported. + * @return {@link ERR_BACKGROUND_PROCESS_MANAGER_PARAMETER_ERROR} 31800002 - Parameter error. + * @since 20 + */ +int OH_BackgroundProcessManager_IsPowerSaveMode(int pid); #ifdef __cplusplus }; #endif