2019-04-09 09:33:52 -03:00
|
|
|
#include "arm.h"
|
2017-06-20 00:23:49 +02:00
|
|
|
#include "power.h"
|
|
|
|
#include "i2c.h"
|
2017-08-08 09:40:09 -03:00
|
|
|
#include "pxi.h"
|
|
|
|
|
2019-06-07 17:13:42 -03:00
|
|
|
u32 SetScreenBrightness(int level) {
|
|
|
|
u32 arg;
|
|
|
|
|
|
|
|
if (level != BRIGHTNESS_AUTOMATIC) {
|
|
|
|
arg = clamp(level, BRIGHTNESS_MIN, BRIGHTNESS_MAX);
|
|
|
|
} else {
|
|
|
|
arg = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
return PXI_DoCMD(PXI_BRIGHTNESS, &arg, 1);
|
|
|
|
}
|
|
|
|
|
2017-09-16 16:46:30 +02:00
|
|
|
u32 GetBatteryPercent() {
|
|
|
|
u8 battery = 0;
|
|
|
|
I2C_readRegBuf(I2C_DEV_MCU, 0x0B, &battery, 1);
|
|
|
|
return battery;
|
|
|
|
}
|
|
|
|
|
2017-09-18 19:57:43 +02:00
|
|
|
bool IsCharging() {
|
|
|
|
u8 flags = 0;
|
|
|
|
I2C_readRegBuf(I2C_DEV_MCU, 0x0F, &flags, 1);
|
|
|
|
return flags & (1<<4);
|
|
|
|
}
|
|
|
|
|
2017-06-20 00:23:49 +02:00
|
|
|
void Reboot() {
|
2017-07-11 20:55:53 +02:00
|
|
|
I2C_writeReg(I2C_DEV_MCU, 0x22, 1 << 0); // poweroff LCD to prevent MCU hangs
|
2019-04-11 18:16:20 -03:00
|
|
|
ARM_WbDC();
|
|
|
|
ARM_DSB();
|
2019-04-08 17:38:38 -03:00
|
|
|
I2C_writeReg(I2C_DEV_MCU, 0x20, 1 << 2);
|
|
|
|
while(true);
|
2017-06-20 00:23:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void PowerOff()
|
|
|
|
{
|
2017-07-11 20:55:53 +02:00
|
|
|
I2C_writeReg(I2C_DEV_MCU, 0x22, 1 << 0); // poweroff LCD to prevent MCU hangs
|
2019-04-11 18:16:20 -03:00
|
|
|
ARM_WbDC();
|
|
|
|
ARM_DSB();
|
2019-04-08 17:38:38 -03:00
|
|
|
I2C_writeReg(I2C_DEV_MCU, 0x20, 1 << 0);
|
|
|
|
while(true);
|
2017-06-20 00:23:49 +02:00
|
|
|
}
|