Function bodies 879 total
GetIdischargeData method · cpp · L247-L254 (8 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
uint16_t AXP192::GetIdischargeData(void) {
uint16_t idischarge = 0;
uint8_t buf[2];
ReadBuff(0x7C, 2, buf);
idischarge = (buf[0] << 5) + buf[1];
return idischarge;
}GetTempData method · cpp · L255-L262 (8 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
uint16_t AXP192::GetTempData(void) {
uint16_t temp = 0;
uint8_t buf[2];
ReadBuff(0x5e, 2, buf);
temp = ((buf[0] << 4) + buf[1]);
return temp;
}GetPowerbatData method · cpp · L263-L270 (8 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
uint32_t AXP192::GetPowerbatData(void) {
uint32_t power = 0;
uint8_t buf[3];
ReadBuff(0x70, 2, buf);
power = (buf[0] << 16) + (buf[1] << 8) + buf[2];
return power;
}GetVapsData method · cpp · L271-L278 (8 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
uint16_t AXP192::GetVapsData(void) {
uint16_t vaps = 0;
uint8_t buf[2];
ReadBuff(0x7e, 2, buf);
vaps = ((buf[0] << 4) + buf[1]);
return vaps;
}SetSleep method · cpp · L279-L285 (7 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
void AXP192::SetSleep(void) {
Write1Byte(0x31, Read8bit(0x31) | (1 << 3));
Write1Byte(0x90, 0x00); // GPIO0 voltage 0
Write1Byte(0x12, 0x09); // CDC1, LDO3
Write1Byte(0x12, Read8bit(0x12) & 0xA1); // Disable all outputs but DCDC1
}WakeUpDisplayAfterLightSleep method · cpp · L286-L292 (7 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
void AXP192::WakeUpDisplayAfterLightSleep(void) {
// LDO2 is LCD Backlight
// LDO3 is LCD Power
// Enable Ext, LDO3, LDO2, DCDC1
Write1Byte(0x12, Read8bit(0x12) | 0x4D);
}GetWarningLeve method · cpp · L293-L301 (9 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
uint8_t AXP192::GetWarningLeve(void) {
Wire1.beginTransmission(0x34);
Wire1.write(0x47);
Wire1.endTransmission();
Wire1.requestFrom(0x34, 1);
uint8_t buf = Wire1.read();
return (buf & 0x01);
}Powered by Repobility — scan your code at https://repobility.com
DeepSleep method · cpp · L304-L313 (10 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
void AXP192::DeepSleep(uint64_t time_in_us) {
SetSleep();
if (time_in_us > 0) {
esp_sleep_enable_timer_wakeup(time_in_us);
} else {
esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_TIMER);
}
(time_in_us == 0) ? esp_deep_sleep_start() : esp_deep_sleep(time_in_us);
}LightSleep method · cpp · L314-L325 (12 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
void AXP192::LightSleep(uint64_t time_in_us) {
SetSleep();
if (time_in_us > 0) {
esp_sleep_enable_timer_wakeup(time_in_us);
} else {
esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_TIMER);
}
esp_light_sleep_start();
WakeUpDisplayAfterLightSleep();
}GetBtnPress method · cpp · L328-L334 (7 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
uint8_t AXP192::GetBtnPress() {
uint8_t state = Read8bit(0x46);
if (state) {
Write1Byte(0x46, 0x03);
}
return state;
}GetWarningLevel method · cpp · L335-L338 (4 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
uint8_t AXP192::GetWarningLevel(void) {
return Read8bit(0x47) & 0x01;
}GetBatVoltage method · cpp · L339-L344 (6 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetBatVoltage() {
float ADCLSB = 1.1 / 1000.0;
uint16_t ReData = Read12Bit(0x78);
return ReData * ADCLSB;
}GetBatCurrent method · cpp · L345-L351 (7 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetBatCurrent() {
float ADCLSB = 0.5;
uint16_t CurrentIn = Read13Bit(0x7A);
uint16_t CurrentOut = Read13Bit(0x7C);
return (CurrentIn - CurrentOut) * ADCLSB;
}GetVinVoltage method · cpp · L352-L357 (6 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetVinVoltage() {
float ADCLSB = 1.7 / 1000.0;
uint16_t ReData = Read12Bit(0x56);
return ReData * ADCLSB;
}GetVinCurrent method · cpp · L358-L363 (6 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetVinCurrent() {
float ADCLSB = 0.625;
uint16_t ReData = Read12Bit(0x58);
return ReData * ADCLSB;
}Repobility analyzer · published findings · https://repobility.com
GetVBusVoltage method · cpp · L364-L369 (6 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetVBusVoltage() {
float ADCLSB = 1.7 / 1000.0;
uint16_t ReData = Read12Bit(0x5A);
return ReData * ADCLSB;
}GetVBusCurrent method · cpp · L370-L375 (6 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetVBusCurrent() {
float ADCLSB = 0.375;
uint16_t ReData = Read12Bit(0x5C);
return ReData * ADCLSB;
}GetTempInAXP192 method · cpp · L376-L382 (7 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetTempInAXP192() {
float ADCLSB = 0.1;
const float OFFSET_DEG_C = -144.7;
uint16_t ReData = Read12Bit(0x5E);
return OFFSET_DEG_C + ReData * ADCLSB;
}GetBatPower method · cpp · L383-L389 (7 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetBatPower() {
float VoltageLSB = 1.1;
float CurrentLCS = 0.5;
uint32_t ReData = Read24bit(0x70);
return VoltageLSB * CurrentLCS * ReData / 1000.0;
}GetBatChargeCurrent method · cpp · L390-L395 (6 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetBatChargeCurrent() {
float ADCLSB = 0.5;
uint16_t ReData = Read12Bit(0x7A);
return ReData * ADCLSB;
}GetAPSVoltage method · cpp · L396-L400 (5 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetAPSVoltage() {
float ADCLSB = 1.4 / 1000.0;
uint16_t ReData = Read12Bit(0x7E);
return ReData * ADCLSB;
}GetBatCoulombInput method · cpp · L401-L405 (5 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetBatCoulombInput() {
uint32_t ReData = Read32bit(0xB0);
return ReData * 65536 * 0.5 / 3600 / 25.0;
}GetBatCoulombOut method · cpp · L406-L410 (5 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
float AXP192::GetBatCoulombOut() {
uint32_t ReData = Read32bit(0xB4);
return ReData * 65536 * 0.5 / 3600 / 25.0;
}Repobility · MCP-ready · https://repobility.com
SetCoulombClear method · cpp · L411-L414 (4 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
void AXP192::SetCoulombClear() {
Write1Byte(0xB8, 0x20);
}SetLDO2 method · cpp · L415-L423 (9 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
void AXP192::SetLDO2(bool State) {
uint8_t buf = Read8bit(0x12);
if (State == true)
buf = (1 << 2) | buf;
else
buf = ~(1 << 2) & buf;
Write1Byte(0x12, buf);
}PowerOff method · cpp · L426-L428 (3 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
void AXP192::PowerOff() {
Write1Byte(0x32, Read8bit(0x32) | 0x80); // MSB for Power Off
}SetPeripherialsPower method · cpp · L429-L437 (9 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.cpp
void AXP192::SetPeripherialsPower(uint8_t state) {
if (!state)
Write1Byte(0x10, Read8bit(0x10) & 0XFB);
else if (state)
Write1Byte(0x10, Read8bit(0x10) | 0X04);
// uint8_t data;
// Set EXTEN to enable 5v boost
}AXP192 class · c · L11-L80 (70 LOC)firmware/boards/m5stickcplus_11/lib/AXP192.h
class AXP192 {
public:
AXP192();
void begin(void);
void ScreenBreath(int brightness);
void ScreenSwitch(bool state);
bool GetBatState();
void EnableCoulombcounter(void);
void DisableCoulombcounter(void);
void StopCoulombcounter(void);
void ClearCoulombcounter(void);
uint32_t GetCoulombchargeData(void);
uint32_t GetCoulombdischargeData(void);
float GetCoulombData(void);
uint16_t GetVbatData(void) __attribute__((deprecated));
uint16_t GetIchargeData(void) __attribute__((deprecated));
uint16_t GetIdischargeData(void) __attribute__((deprecated));
uint16_t GetTempData(void) __attribute__((deprecated));
uint32_t GetPowerbatData(void) __attribute__((deprecated));
uint16_t GetVinData(void) __attribute__((deprecated));
uint16_t GetIinData(void) __attribute__((deprecated));
uint16_t GetVusbinData(void) __attribute__((deprecated));
uint16_t GetIusbinData(void) __attribute__((deprecated));
uint16_t GetVacreateInstance method · cpp · L22-L42 (21 LOC)firmware/boards/m5stickcplus_2/core/Device.cpp
Device* Device::createInstance() {
pinMode(BTN_UP, INPUT);
pinMode(BTN_A, INPUT);
pinMode(BTN_B, INPUT);
// Power hold — keep device alive when USB disconnected
pinMode(PWR_HOLD_PIN, OUTPUT);
digitalWrite(PWR_HOLD_PIN, HIGH);
// Internal I2C for BM8563 RTC
Wire1.begin(INTERNAL_SDA, INTERNAL_SCL);
// PWM backlight
display.initBacklight();
storageLFS.begin();
return new Device(display, power, &navigation, nullptr,
nullptr, &storageLFS, nullptr, &speaker);
}applyNavMode method · cpp · L43-L51 (9 LOC)firmware/boards/m5stickcplus_2/core/Device.cpp
void Device::applyNavMode() {
String mode = Config.get(APP_CONFIG_NAV_MODE, APP_CONFIG_NAV_MODE_DEFAULT);
if (mode == "encoder") {
switchNavigation(&encoderNavigation);
} else {
switchNavigation(&navigation);
}
}boardHook method · cpp · L52-L67 (16 LOC)firmware/boards/m5stickcplus_2/core/Device.cpp
void Device::boardHook() {
// 3s hold on BTN_A resets nav mode to default
static unsigned long _btnAHeld = 0;
if (digitalRead(BTN_A) == LOW) {
if (_btnAHeld == 0) _btnAHeld = millis();
else if (millis() - _btnAHeld >= 3000) {
Config.set(APP_CONFIG_NAV_MODE, APP_CONFIG_NAV_MODE_DEFAULT);
Config.save(Storage);
applyNavMode();
_btnAHeld = 0;
}
} else {
_btnAHeld = 0;
}
}Repobility · open methodology · https://repobility.com/research/
DisplayImpl class · c · L10-L31 (22 LOC)firmware/boards/m5stickcplus_2/core/Display.h
class DisplayImpl : public IDisplay
{
public:
void initBacklight()
{
ledcSetup(LCD_BL_CH, 1000, 8);
ledcAttachPin(LCD_BL, LCD_BL_CH);
ledcWrite(LCD_BL_CH, 255);
}
void setBrightness(uint8_t pct) override
{
if (pct > 100) pct = 100;
if (pct == 0) {
ledcWrite(LCD_BL_CH, 0);
} else {
uint8_t duty = BL_MIN_DUTY + ((255 - BL_MIN_DUTY) * pct / 100);
ledcWrite(LCD_BL_CH, duty);
}
}
};initBacklight method · c · L13-L19 (7 LOC)firmware/boards/m5stickcplus_2/core/Display.h
public:
void initBacklight()
{
ledcSetup(LCD_BL_CH, 1000, 8);
ledcAttachPin(LCD_BL, LCD_BL_CH);
ledcWrite(LCD_BL_CH, 255);
}setBrightness method · c · L20-L30 (11 LOC)firmware/boards/m5stickcplus_2/core/Display.h
void setBrightness(uint8_t pct) override
{
if (pct > 100) pct = 100;
if (pct == 0) {
ledcWrite(LCD_BL_CH, 0);
} else {
uint8_t duty = BL_MIN_DUTY + ((255 - BL_MIN_DUTY) * pct / 100);
ledcWrite(LCD_BL_CH, duty);
}
}EncoderNavigation class · c · L13-L74 (62 LOC)firmware/boards/m5stickcplus_2/core/EncoderNavigation.h
class EncoderNavigation : public INavigation
{
public:
void begin() override
{
encoder.begin();
}
void update() override
{
// BTN_A short press (< 3 s) = back; 3 s hold is handled in Device::boardHook()
bool btnA = (digitalRead(BTN_A) == LOW);
if (btnA && !_btnAWasLow) {
_btnAStart = millis();
_btnAWasLow = true;
} else if (!btnA && _btnAWasLow) {
if (millis() - _btnAStart < 3000) _emitBack = true;
_btnAWasLow = false;
}
if (_emitBack) { _emitBack = false; updateState(DIR_BACK); return; }
// BTN_UP release = left
bool btnUp = (digitalRead(BTN_UP) == LOW);
if (btnUp && !_btnUpWasLow) {
_btnUpWasLow = true;
} else if (!btnUp && _btnUpWasLow) {
_emitLeft = true;
_btnUpWasLow = false;
}
if (_emitLeft) { _emitLeft = false; updateState(DIR_LEFT); return; }
// BTN_B release = right
bool btnB = (digitalRead(BTN_B) == LOW);
if (btnB && !_btnBWasLow) {
_btnBWasLow = tbegin method · c · L16-L20 (5 LOC)firmware/boards/m5stickcplus_2/core/EncoderNavigation.h
public:
void begin() override
{
encoder.begin();
}update method · c · L21-L64 (44 LOC)firmware/boards/m5stickcplus_2/core/EncoderNavigation.h
void update() override
{
// BTN_A short press (< 3 s) = back; 3 s hold is handled in Device::boardHook()
bool btnA = (digitalRead(BTN_A) == LOW);
if (btnA && !_btnAWasLow) {
_btnAStart = millis();
_btnAWasLow = true;
} else if (!btnA && _btnAWasLow) {
if (millis() - _btnAStart < 3000) _emitBack = true;
_btnAWasLow = false;
}
if (_emitBack) { _emitBack = false; updateState(DIR_BACK); return; }
// BTN_UP release = left
bool btnUp = (digitalRead(BTN_UP) == LOW);
if (btnUp && !_btnUpWasLow) {
_btnUpWasLow = true;
} else if (!btnUp && _btnUpWasLow) {
_emitLeft = true;
_btnUpWasLow = false;
}
if (_emitLeft) { _emitLeft = false; updateState(DIR_LEFT); return; }
// BTN_B release = right
bool btnB = (digitalRead(BTN_B) == LOW);
if (btnB && !_btnBWasLow) {
_btnBWasLow = true;
} else if (!btnB && _btnBWasLow) {
_emitRight = true;
_btnBWasLow = false;
}
ifNavigationImpl class · c · L9-L26 (18 LOC)firmware/boards/m5stickcplus_2/core/Navigation.h
class NavigationImpl : public INavigation
{
public:
void begin() override {}
void update() override
{
const bool btnUp = (digitalRead(BTN_UP) == LOW);
const bool btnSel = (digitalRead(BTN_A) == LOW);
const bool btnDn = (digitalRead(BTN_B) == LOW);
if (btnSel) updateState(DIR_PRESS);
else if (btnUp) updateState(DIR_UP);
else if (btnDn) updateState(DIR_DOWN);
else updateState(DIR_NONE);
}
};update method · c · L14-L25 (12 LOC)firmware/boards/m5stickcplus_2/core/Navigation.h
void update() override
{
const bool btnUp = (digitalRead(BTN_UP) == LOW);
const bool btnSel = (digitalRead(BTN_A) == LOW);
const bool btnDn = (digitalRead(BTN_B) == LOW);
if (btnSel) updateState(DIR_PRESS);
else if (btnUp) updateState(DIR_UP);
else if (btnDn) updateState(DIR_DOWN);
else updateState(DIR_NONE);
}Powered by Repobility — scan your code at https://repobility.com
PowerImpl class · c · L10-L46 (37 LOC)firmware/boards/m5stickcplus_2/core/Power.h
class PowerImpl : public IPower
{
public:
void begin() override
{
// Keep device alive when USB disconnected
pinMode(PWR_HOLD_PIN, OUTPUT);
digitalWrite(PWR_HOLD_PIN, HIGH);
// Battery ADC
pinMode(BAT_ADC_PIN, INPUT);
analogReadMilliVolts(BAT_ADC_PIN); // warm up ADC calibration
}
uint8_t getBatteryPercentage() override
{
float mv = (float)analogReadMilliVolts(BAT_ADC_PIN) * 2.0f; // voltage divider x2
float pct = (mv - 3300.0f) / (4150.0f - 3300.0f) * 100.0f;
if (pct < 0.0f) pct = 0.0f;
if (pct > 100.0f) pct = 100.0f;
return (uint8_t)pct;
}
void powerOff() override
{
digitalWrite(PWR_HOLD_PIN, LOW);
esp_sleep_enable_ext0_wakeup((gpio_num_t)BTN_UP, LOW);
esp_deep_sleep_start();
}
bool isCharging() override
{
// No charger IC detection on Plus 2
return false;
}
};begin method · c · L13-L23 (11 LOC)firmware/boards/m5stickcplus_2/core/Power.h
public:
void begin() override
{
// Keep device alive when USB disconnected
pinMode(PWR_HOLD_PIN, OUTPUT);
digitalWrite(PWR_HOLD_PIN, HIGH);
// Battery ADC
pinMode(BAT_ADC_PIN, INPUT);
analogReadMilliVolts(BAT_ADC_PIN); // warm up ADC calibration
}getBatteryPercentage method · c · L24-L32 (9 LOC)firmware/boards/m5stickcplus_2/core/Power.h
uint8_t getBatteryPercentage() override
{
float mv = (float)analogReadMilliVolts(BAT_ADC_PIN) * 2.0f; // voltage divider x2
float pct = (mv - 3300.0f) / (4150.0f - 3300.0f) * 100.0f;
if (pct < 0.0f) pct = 0.0f;
if (pct > 100.0f) pct = 100.0f;
return (uint8_t)pct;
}powerOff method · c · L33-L39 (7 LOC)firmware/boards/m5stickcplus_2/core/Power.h
void powerOff() override
{
digitalWrite(PWR_HOLD_PIN, LOW);
esp_sleep_enable_ext0_wakeup((gpio_num_t)BTN_UP, LOW);
esp_deep_sleep_start();
}isCharging method · c · L40-L45 (6 LOC)firmware/boards/m5stickcplus_2/core/Power.h
bool isCharging() override
{
// No charger IC detection on Plus 2
return false;
}SpeakerBuzzer class · c · L14-L138 (125 LOC)firmware/boards/m5stickcplus_2/core/Speaker.h
class SpeakerBuzzer : public ISpeaker {
public:
void begin() override {
ledcSetup(_ch, 1000, 8);
ledcAttachPin(SPK_PIN, _ch);
ledcWrite(_ch, 0);
setVolume(Config.get(APP_CONFIG_VOLUME, APP_CONFIG_VOLUME_DEFAULT).toInt());
}
void tone(uint16_t freq, uint32_t durationMs) override {
_stopTask();
_freq = freq;
_duration = durationMs;
xTaskCreate(_toneTask, "spkbzz", 1024, this, 2, &_taskHandle);
}
void noTone() override {
_stopTask();
ledcWrite(_ch, 0);
}
void setVolume(uint8_t vol) override {
(void)vol;
_duty = 128;
}
void beep() override {
if (!Config.get(APP_CONFIG_NAV_SOUND, APP_CONFIG_NAV_SOUND_DEFAULT).toInt()) return;
if (_taskHandle) return;
playRandomTone();
}
void playRandomTone(int semitoneShift = 0, uint32_t durationMs = 150) override {
static constexpr int scale[] = {60, 62, 64, 65, 67, 69, 71};
int midi = scale[random(0, 7)] + semitoneShift;
uint16_t freq = (uint16_t)(begin method · c · L16-L22 (7 LOC)firmware/boards/m5stickcplus_2/core/Speaker.h
public:
void begin() override {
ledcSetup(_ch, 1000, 8);
ledcAttachPin(SPK_PIN, _ch);
ledcWrite(_ch, 0);
setVolume(Config.get(APP_CONFIG_VOLUME, APP_CONFIG_VOLUME_DEFAULT).toInt());
}tone method · c · L23-L29 (7 LOC)firmware/boards/m5stickcplus_2/core/Speaker.h
void tone(uint16_t freq, uint32_t durationMs) override {
_stopTask();
_freq = freq;
_duration = durationMs;
xTaskCreate(_toneTask, "spkbzz", 1024, this, 2, &_taskHandle);
}Repobility analyzer · published findings · https://repobility.com
noTone method · c · L30-L34 (5 LOC)firmware/boards/m5stickcplus_2/core/Speaker.h
void noTone() override {
_stopTask();
ledcWrite(_ch, 0);
}setVolume method · c · L35-L39 (5 LOC)firmware/boards/m5stickcplus_2/core/Speaker.h
void setVolume(uint8_t vol) override {
(void)vol;
_duty = 128;
}beep method · c · L40-L45 (6 LOC)firmware/boards/m5stickcplus_2/core/Speaker.h
void beep() override {
if (!Config.get(APP_CONFIG_NAV_SOUND, APP_CONFIG_NAV_SOUND_DEFAULT).toInt()) return;
if (_taskHandle) return;
playRandomTone();
}