AlexaClientSDK  3.0.0
A cross-platform, modular SDK for interacting with the Alexa Voice Service
Classes | Public Member Functions | Static Public Member Functions | List of all members
alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager Class Reference

#include <AggregatedPowerResourceManager.h>

Inheritance diagram for alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager:
Inheritance graph
[legend]
Collaboration diagram for alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager:
Collaboration graph
[legend]

Public Member Functions

virtual ~AggregatedPowerResourceManager ()
 Destructor. More...
 
PowerResourceManagerInterface Legacy Methods
void acquirePowerResource (const std::string &component, const PowerResourceLevel level=PowerResourceLevel::STANDBY_MED) override
 
void releasePowerResource (const std::string &component) override
 
bool isPowerResourceAcquired (const std::string &component) override
 
std::shared_ptr< avsCommon::sdkInterfaces::PowerResourceManagerInterface::PowerResourceIdcreate (const std::string &resourceId, bool isRefCounted=true, const PowerResourceLevel level=PowerResourceLevel::STANDBY_MED) override
 
bool acquire (const std::shared_ptr< avsCommon::sdkInterfaces::PowerResourceManagerInterface::PowerResourceId > &id, const std::chrono::milliseconds autoReleaseTimeout=std::chrono::milliseconds::zero()) override
 
bool release (const std::shared_ptr< avsCommon::sdkInterfaces::PowerResourceManagerInterface::PowerResourceId > &id) override
 
bool close (const std::shared_ptr< avsCommon::sdkInterfaces::PowerResourceManagerInterface::PowerResourceId > &id) override
 
- Public Member Functions inherited from alexaClientSDK::avsCommon::sdkInterfaces::PowerResourceManagerInterface
virtual ~PowerResourceManagerInterface ()=default
 
virtual std::chrono::milliseconds getTimeSinceLastResumeMS ()
 
virtual std::chrono::milliseconds getTimeSinceLastPartialMS (const std::string &component, PartialStateBitSet &resourceFlags, PartialStateBitSet partialState=PowerResourceTypeFlag::TYPE_ALL_FLAG)
 
virtual bool acquire (const std::shared_ptr< PowerResourceId > &id, const std::chrono::milliseconds autoReleaseTimeout=std::chrono::milliseconds::zero())=0
 
virtual bool release (const std::shared_ptr< PowerResourceId > &id)=0
 
virtual bool close (const std::shared_ptr< PowerResourceId > &id)=0
 

Static Public Member Functions

static std::shared_ptr< AggregatedPowerResourceManagercreate (std::shared_ptr< avsCommon::sdkInterfaces::PowerResourceManagerInterface > powerResourceManager)
 

Additional Inherited Members

- Public Types inherited from alexaClientSDK::avsCommon::sdkInterfaces::PowerResourceManagerInterface
enum  PowerResourceLevel {
  PowerResourceLevel::STANDBY_LOW = 0, PowerResourceLevel::STANDBY_MED, PowerResourceLevel::STANDBY_HIGH, PowerResourceLevel::ACTIVE_LOW,
  PowerResourceLevel::ACTIVE_MED, PowerResourceLevel::ACTIVE_HIGH
}
 
enum  PowerResourceTypeIndex {
  TYPE_CPU = 0, TYPE_DDR, TYPE_STORAGE, TYPE_NETWORK,
  TYPE_RESERVED_ONE, TYPE_RESERVED_TWO, NUM_OF_TYPES
}
 
enum  PowerResourceTypeFlag {
  TYPE_ALL_FLAG = 0, TYPE_CPU_FLAG = 1 << PowerResourceTypeIndex::TYPE_CPU, TYPE_DDR_FLAG = 1 << PowerResourceTypeIndex::TYPE_DDR, TYPE_STORAGE_FLAG = 1 << PowerResourceTypeIndex::TYPE_STORAGE,
  TYPE_NETWORK_FLAG = 1 << PowerResourceTypeIndex::TYPE_NETWORK, TYPE_RESERVED_ONE_FLAG = 1 << PowerResourceTypeIndex::TYPE_RESERVED_ONE, TYPE_RESERVED_TWO_FLAG = 1 << PowerResourceTypeIndex::TYPE_RESERVED_TWO
}
 
using PartialStateBitSet = std::bitset< PowerResourceTypeIndex::NUM_OF_TYPES >
 

Detailed Description

An AVS SDK implementation of PowerResourceManagerInterface which aggregates calls to the application provided PowerResourceManagerInterface. This implementation creates a PowerResourceManagerInterface::PowerResourceId for each PowerResourceLevel, and maps acquire/release/etc calls down to each level-aggregated PowerResourceId.

This reduces the number of resources that are created from the perspective of the application provided PowerResourceManagerInterface. Additionally, it allows optimizations (such as deduping calls to reference counted resources) to be more effective.

To reduce latency associated with create/close, aggregated PowerResourceIds are not closed dynamically, and will persist for the lifetime of the AggregatedPowerResourceManager.

This class does not aggregate the acquirePowerResource/releasePowerResource related APIs.

Constructor & Destructor Documentation

◆ ~AggregatedPowerResourceManager()

virtual alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager::~AggregatedPowerResourceManager ( )
virtual

Destructor.

Member Function Documentation

◆ acquire()

bool alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager::acquire ( const std::shared_ptr< avsCommon::sdkInterfaces::PowerResourceManagerInterface::PowerResourceId > &  id,
const std::chrono::milliseconds  autoReleaseTimeout = std::chrono::milliseconds::zero() 
)
override

◆ acquirePowerResource()

void alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager::acquirePowerResource ( const std::string &  component,
const PowerResourceLevel  level = PowerResourceLevel::STANDBY_MED 
)
overridevirtual

Acquire a power resource for the component.

Parameters
componentcomponent name.
levelpower resource level.

Implements alexaClientSDK::avsCommon::sdkInterfaces::PowerResourceManagerInterface.

◆ close()

bool alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager::close ( const std::shared_ptr< avsCommon::sdkInterfaces::PowerResourceManagerInterface::PowerResourceId > &  id)
override

◆ create() [1/2]

static std::shared_ptr<AggregatedPowerResourceManager> alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager::create ( std::shared_ptr< avsCommon::sdkInterfaces::PowerResourceManagerInterface powerResourceManager)
static

Create an instance of this class.

Parameters
powerResourceManagerThe application provided PowerResourceManagerInterface.
Returns
An instance if successful, else nullptr.

◆ create() [2/2]

std::shared_ptr<avsCommon::sdkInterfaces::PowerResourceManagerInterface::PowerResourceId> alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager::create ( const std::string &  resourceId,
bool  isRefCounted = true,
const PowerResourceLevel  level = PowerResourceLevel::STANDBY_MED 
)
overridevirtual

Create a power resource keyed by the unique string resourceId.

Parameters
resourceIdmentions what the resource is for.
isRefCountedwhether refcounting is enabled for this resource
levelpower resource level.
Returns
shared pointer of type PowerResourceId representing the resource

Implements alexaClientSDK::avsCommon::sdkInterfaces::PowerResourceManagerInterface.

◆ isPowerResourceAcquired()

bool alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager::isPowerResourceAcquired ( const std::string &  component)
overridevirtual

Checks whether a power resource had been acquired or not.

Parameters
componentcomponent name.
Returns
true if the power resource had been acquired, otherwise return false.

Implements alexaClientSDK::avsCommon::sdkInterfaces::PowerResourceManagerInterface.

◆ release()

bool alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager::release ( const std::shared_ptr< avsCommon::sdkInterfaces::PowerResourceManagerInterface::PowerResourceId > &  id)
override

◆ releasePowerResource()

void alexaClientSDK::avsCommon::utils::power::AggregatedPowerResourceManager::releasePowerResource ( const std::string &  component)
overridevirtual

Release the acquired power resource of the specified component.

Parameters
componentcomponent name.

Implements alexaClientSDK::avsCommon::sdkInterfaces::PowerResourceManagerInterface.


The documentation for this class was generated from the following file:

AlexaClientSDK 3.0.0 - Copyright 2016-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License, Version 2.0