ESP8266_swiss_army_board/src/app/PowerManager.cpp

53 lines
887 B
C++

#include "PowerManager.h"
PowerManager::PowerManager()
{
}
PowerManager::~PowerManager()
{
}
PowerManager::PowerInfo PowerManager::getPowerInfo(const uint16_t nbOfMeasures) const
{
uint16_t batteryMeasures(0), temp(0);
unsigned char i(0);
int checkLevel(0);
PowerInfo p;
for(;i < nbOfMeasures;i++)
{
temp = analogRead(ADC);
batteryMeasures += temp;
}
batteryMeasures /= nbOfMeasures;
if(batteryMeasures <= USB_THRESHOLD)
{
p.powerType = USB;
p.level = 0;
}
else
{
p.powerType = BATTERY;
checkLevel = ((double)(batteryMeasures-BATT_EMPTY)*100.0/(double)BATT_DIFF);
if(checkLevel > 100)
p.level = 100;
else if (checkLevel < 0)
p.level = 0;
else
p.level = checkLevel;
}
return p;
}
bool PowerManager::setCpuFreq(uint8_t frequency)
{
return system_update_cpu_freq(frequency);
}