aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIvan Zorin <[email protected]>2024-07-09 12:20:02 +0300
committerGitHub <[email protected]>2024-07-09 19:20:02 +1000
commitc19e88233844f00dedb283276f3a5502ef05162a (patch)
treedc345cb87416c8f70414aeb39276c620ea445ae4
parentac6994a6768e7d3491eadcdd1c5abe3d69db091f (diff)
downloadIronOS-c19e88233844f00dedb283276f3a5502ef05162a.tar.gz
IronOS-c19e88233844f00dedb283276f3a5502ef05162a.zip
Add enum for USB PD modes (#1943)
* Add enum for USB PD modes * Update comments for clarification according to code review
-rw-r--r--source/Core/Drivers/FS2711.cpp2
-rw-r--r--source/Core/Drivers/USBPD.cpp2
-rw-r--r--source/Core/Drivers/Utils.cpp4
-rw-r--r--source/Core/Inc/Settings.h6
-rw-r--r--source/Core/Src/settingsGUI.cpp13
5 files changed, 17 insertions, 10 deletions
diff --git a/source/Core/Drivers/FS2711.cpp b/source/Core/Drivers/FS2711.cpp
index 1aec92e8..35e90898 100644
--- a/source/Core/Drivers/FS2711.cpp
+++ b/source/Core/Drivers/FS2711.cpp
@@ -158,7 +158,7 @@ void FS2711::negotiate() {
// FS2711 uses mV instead of V
const uint16_t vmax = USB_PD_VMAX * 1000;
uint8_t tip_resistance = getTipResistanceX10();
- if (getSettingValue(SettingsOptions::USBPDMode) == 1) {
+ if (getSettingValue(SettingsOptions::USBPDMode) == usbpdMode_t::DEFAULT) {
tip_resistance += 5;
}
diff --git a/source/Core/Drivers/USBPD.cpp b/source/Core/Drivers/USBPD.cpp
index 1f154080..6c21f5ed 100644
--- a/source/Core/Drivers/USBPD.cpp
+++ b/source/Core/Drivers/USBPD.cpp
@@ -136,7 +136,7 @@ bool parseCapabilitiesArray(const uint8_t numCaps, uint8_t *bestIndex, uint16_t
// Fudge of 0.5 ohms to round up a little to account for us always having off periods in PWM
uint8_t tipResistance = getTipResistanceX10();
- if (getSettingValue(SettingsOptions::USBPDMode) == 1) {
+ if (getSettingValue(SettingsOptions::USBPDMode) == usbpdMode_t::DEFAULT) {
tipResistance += 5;
}
#ifdef MODEL_HAS_DCDC
diff --git a/source/Core/Drivers/Utils.cpp b/source/Core/Drivers/Utils.cpp
index b560fd3a..20f8c46f 100644
--- a/source/Core/Drivers/Utils.cpp
+++ b/source/Core/Drivers/Utils.cpp
@@ -23,7 +23,7 @@ int32_t Utils::LinearInterpolate(int32_t x1, int32_t y1, int32_t x2, int32_t y2,
uint16_t Utils::RequiredCurrentForTipAtVoltage(uint16_t voltageX10) {
uint8_t tipResistancex10 = getTipResistanceX10();
- if (getSettingValue(SettingsOptions::USBPDMode) == 1) {
+ if (getSettingValue(SettingsOptions::USBPDMode) == usbpdMode_t::DEFAULT) {
tipResistancex10 += 5;
}
#ifdef MODEL_HAS_DCDC
@@ -34,4 +34,4 @@ uint16_t Utils::RequiredCurrentForTipAtVoltage(uint16_t voltageX10) {
// V/R = I
uint16_t currentX10 = (voltageX10 * 10) / tipResistancex10;
return currentX10;
-} \ No newline at end of file
+}
diff --git a/source/Core/Inc/Settings.h b/source/Core/Inc/Settings.h
index e9bddfaf..e84fbd87 100644
--- a/source/Core/Inc/Settings.h
+++ b/source/Core/Inc/Settings.h
@@ -104,6 +104,12 @@ typedef enum {
INFINITY = 6, // Show boot logo on repeat (if animated) until a button toggled
} logoMode_t;
+typedef enum {
+ DEFAULT = 1, // PPS + EPR + more power request through increasing resistance by 0.5 Ohm to compensate power loss over cable/PCB/etc.
+ SAFE = 2, // PPS + EPR, without requesting more power
+ NO_DYNAMIC = 0, // PPS + EPR disabled, fixed PDO only
+} usbpdMode_t;
+
// Settings wide operations
void saveSettings();
bool loadSettings();
diff --git a/source/Core/Src/settingsGUI.cpp b/source/Core/Src/settingsGUI.cpp
index b9ded285..180b8547 100644
--- a/source/Core/Src/settingsGUI.cpp
+++ b/source/Core/Src/settingsGUI.cpp
@@ -531,19 +531,20 @@ static void displayPDNegTimeout(void) {
static void displayUSBPDMode(void) {
/*
- * PD Mode
- * 0 = Safe mode, no PPS, no EPR
- * 1 = Default mode, tolerant + PPS + EPR
- * 2 = Strict mode + PPS + EPR
+ * Supported PD modes:
+ * DEFAULT, 1 = PPS + EPR + more power request through increasing resistance by 0.5 Ohm to compensate power loss over cable/PCB/etc.
+ * SAFE, 2 = PPS + EPR, without requesting more power
+ * NO_DYNAMIC, 0 = PPS + EPR disabled, fixed PDO only
*/
switch (getSettingValue(SettingsOptions::USBPDMode)) {
- case 1:
+ case usbpdMode_t::DEFAULT:
OLED::print(translatedString(Tr->USBPDModeDefault), FontStyle::SMALL, 255, OLED::getCursorX());
break;
- case 2:
+ case usbpdMode_t::SAFE:
OLED::print(translatedString(Tr->USBPDModeSafe), FontStyle::SMALL, 255, OLED::getCursorX());
break;
+ case usbpdMode_t::NO_DYNAMIC:
default:
OLED::print(translatedString(Tr->USBPDModeNoDynamic), FontStyle::SMALL, 255, OLED::getCursorX());
break;