Esempio n. 1
0
void DomainPowerControl_001::throwIfDynamicCapabilitiesAreWrong(const PowerControlDynamicCapsSet& capabilities)
{
    if (capabilities.isEmpty())
    {
        throw dptf_exception("Dynamic caps set is empty.  Impossible if we support power controls.");
    }

    auto controlTypes = capabilities.getControlTypes();
    for (auto controlType = controlTypes.begin(); controlType != controlTypes.end(); controlType++)
    {
        auto capability = capabilities.getCapability(*controlType);
        std::string controlTypeString = PowerControlType::ToString(capability.getPowerControlType());
        if (capability.getMaxPowerLimit() < capability.getMinPowerLimit())
        {
            std::string errorMessage = controlTypeString + " has bad power limit capabilities: max < min.";
            throw dptf_exception(errorMessage);
        }

        if (capability.getMaxTimeWindow() < capability.getMinTimeWindow())
        {
            std::string errorMessage = controlTypeString + " has bad time window capabilities: max < min.";
            throw dptf_exception(errorMessage);
        }

        if (capability.getMaxDutyCycle() < capability.getMinDutyCycle())
        {
            std::string errorMessage = controlTypeString + " has bad duty cycle capabilities: max < min.";
            throw dptf_exception(errorMessage);
        }
    }
}