# Wakeup Manager **Detailed Description** This section contains APIs related to wakeup event monitoring and management. - *group* Telematics\_power\_wakeup\_manager - Enums - enum WakeupType - Wakeup initiator. *Values:* - enumerator UNKNOWN - Source of wakeup could not be determined. - enumerator QMI - A QMI transaction caused the wakeup - enumerator WOW - A Wake on Wireless LAN (WoW) packet caused the wakeup. - enum WowWakeupCategory - Classifies the Wake on Wireless LAN (WoW) event that triggered the device wakeup. *Values:* - enumerator UNSPECIFIED - The reason the device woke up could not be identified. - enumerator WLAN\_PROTOCOL - The device woke up due to a Wi-Fi protocol event, such as a change in connection state. - enumerator OFFLOAD - The device woke up because a background networking task could not complete on its own and needed the host to step in, such as a keepalive failure or a DHCP renewal. - enumerator PATTERN\_FILTER - The device woke up because an incoming packet matched a configured filter rule. - enumerator MAGIC\_PACKET - The device woke up upon receiving a Wake-on-LAN magic packet from another device on the network. - enumerator SYSTEM - The device woke up due to an internal condition unrelated to network traffic, such as a thermal change, power failure, or a fatal error condition. - enum WakeupIndicationsType - Enum of all the possible indications invoked by a wakeup listener. *Values:* - enumerator DEFAULT - Register to receive service status change notifications - [telux::common::IServiceStatusListener::onServiceStatusChange](https://docs.qualcomm.com/doc/80-PF458-10/topic/class_a00050.html#a00050_1ac61541d5b486809fbadfad455522c785) - enumerator QMI\_WAKEUP - Register to receive QMI wakeup notifications - [telux::power::IWakeupListener::onWakeup](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00592_1aabc70ea47f67cc468cc437a5293b0810) with WakeupType::QMI - enumerator WOW\_WAKEUP - Register to receive Wake-on-WLAN wakeup notifications - [telux::power::IWakeupListener::onWakeup](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00592_1aabc70ea47f67cc468cc437a5293b0810) with WakeupType::WOW Variables - const WakeupIndications ALL\_WAKEUP\_INDICATIONS = {0xFFFFFFFFu} - Convenience constant to register for all wakeup indications. Passing this to [IWakeupManager::registerListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00593_1ac0c45ab7980f73ece6ba207ead7f8676) or [IWakeupManager::deRegisterListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00593_1ab40265b3047f6607e76573b385feabed) covers all currently defined [WakeupIndicationsType](https://docs.qualcomm.com/doc/80-PF458-10/topic/enum_a00057_1ga3c86e0842814ff6f1be52662a741e9dd.html#a00057_1ga3c86e0842814ff6f1be52662a741e9dd) values as well as any added in future. - struct QmiWakeupInfo - Details of the QMI message. Public Members - uint32\_t serviceId - QMI service identifier. - uint32\_t sourceNodeId - QMI source node identifier. Represents the node from which the message originated. - uint32\_t destinationNodeId - QMI destination node identifier. Represents the node to which message will be delivered. - bool isMsgIdValid - True, if the msgId field is set and has a valid value for this transaction otherwise false. - uint32\_t msgId - QMI message identifier. - bool isPIDValid - True, if the pid field is set and has a valid value for this transaction otherwise false. - pid\_t pid - Linux process ID (PID) of the process which received this message. - bool isProcessNameValid - True, if the processName field is set and has a valid value for this transaction otherwise false. - std::string processName - Name of the Linux process (upto 16 characters) who received this message. - struct WowWakeupInfo - Details of the Wake on Wireless LAN (WoW) packet that caused the wakeup. When the subsystem running the Power Manager service is woken by a WoW packet, this structure carries the relevant information about the triggering packet. Public Members - uint64\_t timestamp = 0 - Timestamp of the WoW wakeup event. - std::string interfaceName = "" - Name of the WLAN interface on which the WoW packet was received. - std::string macAddress = "" - MAC address of the WoW packet that triggered the wakeup. - [WowWakeupCategory](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux5power17WowWakeupCategoryE) wakeupCategory = [WowWakeupCategory](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux5power17WowWakeupCategoryE)::[UNSPECIFIED](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux5power17WowWakeupCategory11UNSPECIFIEDE) - Category of the WoW event that triggered the wakeup. See also [WowWakeupCategory](https://docs.qualcomm.com/doc/80-PF458-10/topic/enum_a00057_1ga7d43d74ce76f7fe4bf11cf301b46be66.html#a00057_1ga7d43d74ce76f7fe4bf11cf301b46be66) for the list of possible values. - std::string pbmBuffer = "" - Pattern Byte Mask (PBM) data of the WoW packet that triggered the wakeup. Valid only when wakeupCategory is WowWakeupCategory::PATTERN\_FILTER. - struct WakeupInfo - Details of the activity that caused system wakeup. Deprecated Use [WakeupEventInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00590) instead. Public Members - [QmiWakeupInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00587.html#_CPPv4N5telux5power13QmiWakeupInfoE) qmiWakeupInfo - Details of the QMI message. - [WakeupType](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux5power10WakeupTypeE) wakeupType - Wakeup initiator. - struct WakeupEventInfo - Details of the activity that caused system wakeup. Uses a tagged union to carry only the relevant wakeup-specific data based on the [type](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00590_1a48179809748a06f9f32eb016ff55cd15) field: - WakeupType::QMI → access qmi - WakeupType::WOW → access wow - WakeupType::UNKNOWN → neither union member is valid Public Functions - explicit WakeupEventInfo([WakeupType](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux5power10WakeupTypeE) wakeupType) - Constructs a [WakeupEventInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00590) and initialises the union member that corresponds to `wakeupType`. - Parameters: - **wakeupType** – **[in]** The wakeup initiator type. - ~WakeupEventInfo() - Destroys the active union member. - WakeupEventInfo(const [WakeupEventInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00590.html#_CPPv4N5telux5power15WakeupEventInfo15WakeupEventInfoERK15WakeupEventInfo) &other) - - [WakeupEventInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00590.html#_CPPv4N5telux5power15WakeupEventInfoE) &operator=(const [WakeupEventInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00590.html#_CPPv4N5telux5power15WakeupEventInfoE) &other) - - WakeupEventInfo([WakeupEventInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00590.html#_CPPv4N5telux5power15WakeupEventInfo15WakeupEventInfoERR15WakeupEventInfo) &&other) noexcept - - [WakeupEventInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00590.html#_CPPv4N5telux5power15WakeupEventInfoE) &operator=([WakeupEventInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00590.html#_CPPv4N5telux5power15WakeupEventInfoE) &&other) noexcept - Public Members - [WakeupType](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux5power10WakeupTypeE) type - Wakeup initiator type. Determines which union member is active. - union [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[power](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux5powerE)::[WakeupEventInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00590.html#_CPPv4N5telux5power15WakeupEventInfoE)::[anonymous] [anonymous] - - class WakeupIndications : public std::bitset<32> - Bitset representing the list of wakeup indications selected by the client. Extends std::bitset<32> with overloads that accept [WakeupIndicationsType](https://docs.qualcomm.com/doc/80-PF458-10/topic/enum_a00057_1ga3c86e0842814ff6f1be52662a741e9dd.html#a00057_1ga3c86e0842814ff6f1be52662a741e9dd) directly so callers do not need explicit casts. Public Functions - inline [WakeupIndications](https://docs.qualcomm.com/doc/80-PF458-10/topic/class_a00591.html#_CPPv4N5telux5power17WakeupIndicationsE) &set([WakeupIndicationsType](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux5power21WakeupIndicationsTypeE) t) noexcept - - inline bool test([WakeupIndicationsType](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux5power21WakeupIndicationsTypeE) t) const - - class IWakeupListener : public [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[IServiceStatusListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/class_a00050.html#_CPPv4N5telux6common22IServiceStatusListenerE) - Receives notification whenever the subsystem is woken up due to QMI communication or Wake-on-WLAN (WoW) events. Public Functions - inline virtual void onWakeup(const [WakeupEventInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00590.html#_CPPv4N5telux5power15WakeupEventInfoE) &wakeupInfo) - Invoked whenever the system is woken up and provides the details of the activity that caused wakeup. On platforms with access control enabled, caller needs to have TELUX\_POWER\_WAKEUP\_INFO permission to invoke this API successfully. - Parameters: - **wakeupInfo** – **[in]** details of the activity that caused the wake up - inline virtual void onWakeup([WakeupInfo](https://docs.qualcomm.com/doc/80-PF458-10/topic/struct_a00589.html#_CPPv4N5telux5power10WakeupInfoE) wakeupInfo) - Invoked whenever the system is woken up and provides the details of the activity that caused wakeup. On platforms with access control enabled, caller needs to have TELUX\_POWER\_WAKEUP\_INFO permission to invoke this API successfully. Deprecated Use [IWakeupListener::onWakeup(const WakeupEventInfo &wakeupInfo)](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00592_1aabc70ea47f67cc468cc437a5293b0810) instead. [telux::power::IWakeupListener::onWakeup](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00592_1aabc70ea47f67cc468cc437a5293b0810) - Parameters: - **wakeupInfo** – **[in]** details of the activity that caused the wake up - inline virtual ~IWakeupListener() - Destructor for IWakeUpListener. - class IWakeupManager - [IWakeupManager](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00593) is used to monitor application processor wakeup due to QMI communication or Wake on Wireless LAN (WoW) events. Public Functions - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common9ErrorCodeE) registerListener(std::weak\_ptr<[IWakeupListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/class_a00592.html#_CPPv4N5telux5power15IWakeupListenerE)> listener, [WakeupIndications](https://docs.qualcomm.com/doc/80-PF458-10/topic/class_a00591.html#_CPPv4N5telux5power17WakeupIndicationsE) indicationList = [ALL\_WAKEUP\_INDICATIONS](https://docs.qualcomm.com/doc/80-PF458-10/topic/variable_a00057_1ga2f50e31cb05deeb9a7ffa94315ad4e6b.html#_CPPv4N5telux5power22ALL_WAKEUP_INDICATIONSE)) = 0 - Registers the given listener for specific events in the Wakeup Manager like service status change or wakeup. Note Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility. - Parameters: - - **listener** – **[in]** Pointer to [IWakeupListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00592) object that processes the notifications - **indicationList** – **[in]** Optional list of specific indications to register for. If not provided, registers for all indications ([ALL\_WAKEUP\_INDICATIONS](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00057_1ga2f50e31cb05deeb9a7ffa94315ad4e6b)). [WakeupIndicationsType](https://docs.qualcomm.com/doc/80-PF458-10/topic/enum_a00057_1ga3c86e0842814ff6f1be52662a741e9dd.html#a00057_1ga3c86e0842814ff6f1be52662a741e9dd) - Returns: - telux::common::ErrorCode::SUCCESS if the listener is registered, otherwise, an appropriate error code - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ErrorCode](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common9ErrorCodeE) deRegisterListener(std::weak\_ptr<[IWakeupListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/class_a00592.html#_CPPv4N5telux5power15IWakeupListenerE)> listener, [WakeupIndications](https://docs.qualcomm.com/doc/80-PF458-10/topic/class_a00591.html#_CPPv4N5telux5power17WakeupIndicationsE) indicationList = [ALL\_WAKEUP\_INDICATIONS](https://docs.qualcomm.com/doc/80-PF458-10/topic/variable_a00057_1ga2f50e31cb05deeb9a7ffa94315ad4e6b.html#_CPPv4N5telux5power22ALL_WAKEUP_INDICATIONSE)) = 0 - Deregisters the given listener from the list of indications provided via [WakeupIndicationsType](https://docs.qualcomm.com/doc/80-PF458-10/topic/enum_a00057_1ga3c86e0842814ff6f1be52662a741e9dd.html#a00057_1ga3c86e0842814ff6f1be52662a741e9dd). If not provided, deregisters from all indications ([ALL\_WAKEUP\_INDICATIONS](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00057_1ga2f50e31cb05deeb9a7ffa94315ad4e6b)). For example - if a client registers for both WakeupIndicationsType::QMI\_WAKEUP and WakeupIndicationsType::WOW\_WAKEUP indications, and during deregistration only provides WakeupIndicationsType::QMI\_WAKEUP in the indication list, the listener will be deregistered from QMI\_WAKEUP but will remain registered for WOW\_WAKEUP. Note Eval: This is a new API and is being evaluated. It is subject to change and could break backwards compatibility. - Parameters: - - **listener** – **[in]** Pointer to [IWakeupListener](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00592) object to deregister - **indicationList** – **[in]** Optional list of specific indications to deregister from. If not provided, deregisters from all indications ([ALL\_WAKEUP\_INDICATIONS](https://docs.qualcomm.com/doc/80-PF458-10/topic/wakeup_manager.html#a00057_1ga2f50e31cb05deeb9a7ffa94315ad4e6b)). - Returns: - telux::common::ErrorCode::SUCCESS if the listener is deregistered, otherwise, an appropriate error code - virtual [telux](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv45telux)::[common](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6commonE)::[ServiceStatus](https://docs.qualcomm.com/doc/80-PF458-10/topic/common.html#_CPPv4N5telux6common13ServiceStatusE) getServiceStatus() = 0 - Gets the wakeup manager’s service status. - Returns: - [telux::common::ServiceStatus::SERVICE\_AVAILABLE](https://docs.qualcomm.com/doc/80-PF458-10/topic/enum_a00062_1ga22f72b0f4dcf2e9569df17174c8d0dfc.html#a00062_1gga22f72b0f4dcf2e9569df17174c8d0dfcafcbb111f642c075be2582dcb12622ee8) if the service is ready for use, [telux::common::ServiceStatus::SERVICE\_UNAVAILABLE](https://docs.qualcomm.com/doc/80-PF458-10/topic/enum_a00062_1ga22f72b0f4dcf2e9569df17174c8d0dfc.html#a00062_1gga22f72b0f4dcf2e9569df17174c8d0dfcabe9852895a462e44f9529379538517cc) if the service is temporarily unavailable (possibly undergoing initialization), [telux::common::ServiceStatus::SERVICE\_FAILED](https://docs.qualcomm.com/doc/80-PF458-10/topic/enum_a00062_1ga22f72b0f4dcf2e9569df17174c8d0dfc.html#a00062_1gga22f72b0f4dcf2e9569df17174c8d0dfca209f41c5ed23fea99ebfa03068db90ae) if the service needs re-initialization - inline virtual ~IWakeupManager() - Performs cleanup and destroys the IWakeUpManager instance. - telux::power::WakeupEventInfo.\_\_unnamed\_\_ - Union of wakeup-specific details. Only the member corresponding to type is valid and properly constructed. Public Members - QmiWakeupInfo qmi - Valid when type is WakeupType::QMI. - WowWakeupInfo wow - Valid when type is WakeupType::WOW. Last Published: Aug 05, 2026 [Previous Topic telux::power::ITcuActivityManager](https://docs.qualcomm.com/bundle/publicresource/80-PF458-10/topics/tcu_activity_manager.md) [Next Topic Security](https://docs.qualcomm.com/bundle/publicresource/80-PF458-10/topics/security.md)