58 lines
2.0 KiB
C++
58 lines
2.0 KiB
C++
#include "HUB238.hpp"
|
|
#include "OperatingModes.h"
|
|
#if POW_PD_EXT == 1
|
|
#ifdef HAS_POWER_DEBUG_MENU
|
|
OperatingMode showPDDebug(const ButtonState buttons, guiContext *cxt) {
|
|
// Print out the USB-PD state
|
|
// Basically this is like the Debug menu, but instead we want to print out the PD status
|
|
uint8_t screen = 0;
|
|
ButtonState b;
|
|
for (;;) {
|
|
OLED::clearScreen(); // Ensure the buffer starts clean
|
|
OLED::setCursor(0, 0); // Position the cursor at the 0,0 (top left)
|
|
OLED::print(SmallSymbolPDDebug, FontStyle::SMALL); // Print Title
|
|
OLED::setCursor(0, 8); // second line
|
|
if (screen > 6) {
|
|
screen = 0;
|
|
}
|
|
if (screen == 0) {
|
|
// Print the PD Debug state
|
|
OLED::print(SmallSymbolState, FontStyle::SMALL);
|
|
OLED::print(SmallSymbolSpace, FontStyle::SMALL);
|
|
uint16_t temp = hub238_debug_state();
|
|
OLED::drawHex(temp, FontStyle::SMALL, 4);
|
|
OLED::print(SmallSymbolSpace, FontStyle::SMALL);
|
|
// Print current selected specs
|
|
temp = hub238_source_voltage();
|
|
OLED::printNumber(temp, 2, FontStyle::SMALL, true);
|
|
OLED::print(SmallSymbolSpace, FontStyle::SMALL);
|
|
|
|
} else {
|
|
|
|
// Print out the Proposed power options one by one
|
|
const uint8_t voltages[] = {5, 9, 12, 15, 18, 20};
|
|
uint16_t voltage = voltages[screen - 1];
|
|
uint16_t currentx100 = hub238_getVoltagePDOCurrent(voltage);
|
|
OLED::printNumber(voltage, 2, FontStyle::SMALL, true);
|
|
OLED::print(SmallSymbolSpace, FontStyle::SMALL);
|
|
|
|
OLED::printNumber(currentx100 / 100, 1, FontStyle::SMALL, true);
|
|
OLED::print(SmallSymbolDot, FontStyle::SMALL);
|
|
OLED::printNumber(currentx100 % 100, 2, FontStyle::SMALL, true);
|
|
}
|
|
|
|
OLED::refresh();
|
|
b = getButtonState();
|
|
if (b == BUTTON_B_SHORT) {
|
|
return OperatingMode::InitialisationDone;
|
|
} else if (b == BUTTON_F_SHORT) {
|
|
screen++;
|
|
}
|
|
|
|
GUIDelay();
|
|
}
|
|
return OperatingMode::UsbPDDebug;
|
|
}
|
|
#endif
|
|
#endif
|