diff --git a/workspace/TS100/Core/BSP/Miniware/Model_Config.h b/workspace/TS100/Core/BSP/Miniware/Model_Config.h index d2732c6a..f7beb79e 100644 --- a/workspace/TS100/Core/BSP/Miniware/Model_Config.h +++ b/workspace/TS100/Core/BSP/Miniware/Model_Config.h @@ -18,6 +18,7 @@ #endif #ifdef MODEL_TS100 +#define POW_DC #define ACCEL_MMA #define ACCEL_LIS #define TEMP_TMP36 diff --git a/workspace/TS100/Core/BSP/Pine64/Model_Config.h b/workspace/TS100/Core/BSP/Pine64/Model_Config.h index 2c6a0c84..c4675a40 100644 --- a/workspace/TS100/Core/BSP/Pine64/Model_Config.h +++ b/workspace/TS100/Core/BSP/Pine64/Model_Config.h @@ -18,6 +18,8 @@ #ifdef MODEL_Pinecil #define POW_PD #define POW_QC +#define POW_DC +#define POW_QC_20V #define TEMP_TMP36 #define ACCEL_BMA #define HALL_SENSOR diff --git a/workspace/TS100/Core/BSP/Pine64/QC_GPIO.cpp b/workspace/TS100/Core/BSP/Pine64/QC_GPIO.cpp index 6194add0..1866995b 100644 --- a/workspace/TS100/Core/BSP/Pine64/QC_GPIO.cpp +++ b/workspace/TS100/Core/BSP/Pine64/QC_GPIO.cpp @@ -53,6 +53,13 @@ uint8_t QC_DM_PulledDown() { #endif void QC_resync() { #ifdef POW_QC - seekQC((systemSettings.cutoutSetting) ? 120 : 90, systemSettings.voltageDiv); // Run the QC seek again if we have drifted too much + uint8_t targetvoltage = 90; + if (systemSettings.QCIdealVoltage == 1) { + targetvoltage = 120; + } else if (systemSettings.QCIdealVoltage == 2) { + targetvoltage = 200; + } + + seekQC(targetvoltage, systemSettings.voltageDiv); // Run the QC seek again if we have drifted too much #endif } diff --git a/workspace/TS100/Core/Inc/Settings.h b/workspace/TS100/Core/Inc/Settings.h index eea506f2..e9ca84e9 100644 --- a/workspace/TS100/Core/Inc/Settings.h +++ b/workspace/TS100/Core/Inc/Settings.h @@ -19,35 +19,35 @@ * This struct must be a multiple of 2 bytes as it is saved / restored from * flash in uint16_t chunks */ -typedef struct -{ +typedef struct { uint8_t version; // Used to track if a reset is needed on firmware upgrade - uint16_t SolderingTemp; // current set point for the iron - uint16_t SleepTemp; // temp to drop to in sleep - uint8_t SleepTime; // minutes timeout to sleep - uint8_t cutoutSetting; // The voltage we cut out at for under voltage OR Power level for TS80 - uint8_t OrientationMode : 2; // If true we want to invert the display for lefties - uint8_t sensitivity : 4; // Sensitivity of accelerometer (5 bits) - uint8_t autoStartMode : 2; // Should the unit automatically jump straight - // into soldering mode when power is applied - uint8_t ShutdownTime; // Time until unit shuts down if left alone + uint16_t SolderingTemp; // current set point for the iron + uint16_t SleepTemp; // temp to drop to in sleep + uint8_t SleepTime; // minutes timeout to sleep + uint8_t minDCVoltageCells; // The voltage we cut out at for under voltage when powered by DC jack + uint8_t QCIdealVoltage; // Desired QC3.0 voltage (9,12,20V) + uint8_t OrientationMode :2; // Selects between Auto,Right and left handed layouts + uint8_t sensitivity :4; // Sensitivity of accelerometer (5 bits) + uint8_t autoStartMode :2; // Should the unit automatically jump straight + // into soldering mode when power is applied + uint8_t ShutdownTime; // Time until unit shuts down if left alone - uint8_t coolingTempBlink : 1; // Should the temperature blink on the cool - // down screen until its <50C - uint8_t detailedIDLE : 1; // Detailed idle screen - uint8_t detailedSoldering : 1; // Detailed soldering screens + uint8_t coolingTempBlink :1; // Should the temperature blink on the cool + // down screen until its <50C + uint8_t detailedIDLE :1; // Detailed idle screen + uint8_t detailedSoldering :1; // Detailed soldering screens #ifdef ENABLED_FAHRENHEIT_SUPPORT - uint8_t temperatureInF : 1; // Should the temp be in F or C (true is F) + uint8_t temperatureInF : 1; // Should the temp be in F or C (true is F) #endif - uint8_t descriptionScrollSpeed : 1; // Description scroll speed - uint8_t lockingMode : 2; // Store the locking mode - uint8_t KeepAwakePulse; // Keep Awake pulse power in 0.1 watts (10 = 1Watt) + uint8_t descriptionScrollSpeed :1; // Description scroll speed + uint8_t lockingMode :2; // Store the locking mode + uint8_t KeepAwakePulse; // Keep Awake pulse power in 0.1 watts (10 = 1Watt) - uint16_t voltageDiv; // Voltage divisor factor - uint16_t BoostTemp; // Boost mode set point for the iron - uint16_t CalibrationOffset; // This stores the temperature offset for this tip - // in the iron. + uint16_t voltageDiv; // Voltage divisor factor + uint16_t BoostTemp; // Boost mode set point for the iron + uint16_t CalibrationOffset; // This stores the temperature offset for this tip + // in the iron. uint8_t powerLimit; // Maximum power iron allowed to output @@ -68,7 +68,7 @@ extern volatile systemSettingsType systemSettings; void saveSettings(); bool restoreSettings(); -uint8_t lookupVoltageLevel(uint8_t level); +uint8_t lookupVoltageLevel(); uint16_t lookupHallEffectThreshold(); void resetSettings(); diff --git a/workspace/TS100/Core/Src/Settings.cpp b/workspace/TS100/Core/Src/Settings.cpp index 79996669..581a3f40 100644 --- a/workspace/TS100/Core/Src/Settings.cpp +++ b/workspace/TS100/Core/Src/Settings.cpp @@ -42,11 +42,11 @@ bool restoreSettings() { * 3=5S * 4=6S */ -uint8_t lookupVoltageLevel(uint8_t level) { - if (level == 0) +uint8_t lookupVoltageLevel() { + if (systemSettings.minDCVoltageCells == 0) return 90; // 9V since iron does not function effectively below this else - return (level * 33) + (33 * 2); + return (systemSettings.minDCVoltageCells * 33) + (33 * 2); } void resetSettings() { memset((void*) &systemSettings, 0, sizeof(systemSettingsType)); @@ -54,9 +54,9 @@ void resetSettings() { systemSettings.SleepTime = SLEEP_TIME; // How many seconds/minutes we wait until going // to sleep - default 1 min systemSettings.SolderingTemp = SOLDERING_TEMP; // Default soldering temp is 320.0 C - systemSettings.cutoutSetting = CUT_OUT_SETTING; // default to no cut-off voltage (or 18W for TS80) - systemSettings.version = - SETTINGSVERSION; // Store the version number to allow for easier upgrades + systemSettings.minDCVoltageCells = CUT_OUT_SETTING; // default to no cut-off voltage + systemSettings.QCIdealVoltage = 0; // Default to 9V for QC3.0 Voltage + systemSettings.version = SETTINGSVERSION; // Store the version number to allow for easier upgrades systemSettings.detailedSoldering = DETAILED_SOLDERING; // Detailed soldering screen systemSettings.detailedIDLE = DETAILED_IDLE; // Detailed idle screen (off for first time users) systemSettings.OrientationMode = ORIENTATION_MODE; // Default to automatic @@ -78,7 +78,7 @@ void resetSettings() { systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // systemSettings.KeepAwakePulse = POWER_PULSE_DEFAULT; systemSettings.TipGain = TIP_GAIN; - systemSettings.hallEffectSensitivity=1; + systemSettings.hallEffectSensitivity = 1; saveSettings(); // Save defaults } diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index a0abf503..f8e2656a 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -17,12 +17,13 @@ void gui_Menu(const menuitem *menu); -#ifdef MODEL_TS100 +#ifdef POW_DC static bool settings_setInputVRange(void); static void settings_displayInputVRange(void); -#else -static bool settings_setInputPRange(void); -static void settings_displayInputPRange(void); +#endif +#ifdef POW_QC +static bool settings_setQCInputV(void); +static void settings_displayQCInputV(void); #endif static bool settings_setSleepTemp(void); static void settings_displaySleepTemp(void); @@ -121,7 +122,7 @@ static bool settings_enterAdvancedMenu(void); * Reset Settings * */ -const menuitem rootSettingsMenu[]{ +const menuitem rootSettingsMenu[] { /* * Power Source * Soldering Menu @@ -130,33 +131,33 @@ const menuitem rootSettingsMenu[]{ * Advanced Menu * Exit */ -#ifdef MODEL_TS100 - {(const char *)SettingsDescriptions[0], settings_setInputVRange, - settings_displayInputVRange}, /*Voltage input*/ -#else - {(const char *)SettingsDescriptions[19], settings_setInputPRange, settings_displayInputPRange}, /*Voltage input*/ +#ifdef POW_DC + { (const char *) SettingsDescriptions[0], settings_setInputVRange, settings_displayInputVRange }, /*Voltage input*/ #endif - {(const char *)NULL, settings_enterSolderingMenu, settings_displaySolderingMenu}, /*Soldering*/ - {(const char *)NULL, settings_enterPowerMenu, settings_displayPowerMenu}, /*Sleep Options Menu*/ - {(const char *)NULL, settings_enterUIMenu, settings_displayUIMenu}, /*UI Menu*/ - {(const char *)NULL, settings_enterAdvancedMenu, settings_displayAdvancedMenu}, /*Advanced Menu*/ - {NULL, NULL, NULL} // end of menu marker. DO NOT REMOVE +#ifdef POW_QC + { (const char *) SettingsDescriptions[19], settings_setQCInputV, settings_displayQCInputV }, /*Voltage input*/ +#endif + { (const char *) NULL, settings_enterSolderingMenu, settings_displaySolderingMenu }, /*Soldering*/ + { (const char *) NULL, settings_enterPowerMenu, settings_displayPowerMenu }, /*Sleep Options Menu*/ + { (const char *) NULL, settings_enterUIMenu, settings_displayUIMenu }, /*UI Menu*/ + { (const char *) NULL, settings_enterAdvancedMenu, settings_displayAdvancedMenu }, /*Advanced Menu*/ + { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; const menuitem solderingMenu[] = { - /* +/* * Boost Mode Enabled * Boost Mode Temp * Auto Start * Temp change short step * Temp change long step */ - {(const char *)SettingsDescriptions[8], settings_setBoostTemp, settings_displayBoostTemp}, /*Boost Temp*/ - {(const char *)SettingsDescriptions[9], settings_setAutomaticStartMode, settings_displayAutomaticStartMode}, /*Auto start*/ - {(const char *)SettingsDescriptions[22], settings_setTempChangeShortStep, settings_displayTempChangeShortStep}, /*Temp change short step*/ - {(const char *)SettingsDescriptions[23], settings_setTempChangeLongStep, settings_displayTempChangeLongStep}, /*Temp change long step*/ - {(const char *)SettingsDescriptions[26], settings_setLockingMode, settings_displayLockingMode}, /*Locking Mode*/ - {NULL, NULL, NULL} // end of menu marker. DO NOT REMOVE +{ (const char *) SettingsDescriptions[8], settings_setBoostTemp, settings_displayBoostTemp }, /*Boost Temp*/ +{ (const char *) SettingsDescriptions[9], settings_setAutomaticStartMode, settings_displayAutomaticStartMode }, /*Auto start*/ +{ (const char *) SettingsDescriptions[22], settings_setTempChangeShortStep, settings_displayTempChangeShortStep }, /*Temp change short step*/ +{ (const char *) SettingsDescriptions[23], settings_setTempChangeLongStep, settings_displayTempChangeLongStep }, /*Temp change long step*/ +{ (const char *) SettingsDescriptions[26], settings_setLockingMode, settings_displayLockingMode }, /*Locking Mode*/ +{ NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; const menuitem UIMenu[] = { /* @@ -168,34 +169,34 @@ const menuitem UIMenu[] = { * Reverse Temp change buttons + - */ #ifdef ENABLED_FAHRENHEIT_SUPPORT - {(const char *)SettingsDescriptions[5], settings_setTempF, - settings_displayTempF}, /* Temperature units*/ + { (const char *)SettingsDescriptions[5], settings_setTempF, + settings_displayTempF}, /* Temperature units*/ #endif - {(const char *)SettingsDescriptions[7], settings_setDisplayRotation, settings_displayDisplayRotation}, /*Display Rotation*/ - {(const char *)SettingsDescriptions[10], settings_setCoolingBlinkEnabled, settings_displayCoolingBlinkEnabled}, /*Cooling blink warning*/ - {(const char *)SettingsDescriptions[15], settings_setScrollSpeed, settings_displayScrollSpeed}, /*Scroll Speed for descriptions*/ - {(const char *)SettingsDescriptions[21], settings_setReverseButtonTempChangeEnabled, settings_displayReverseButtonTempChangeEnabled}, /* Reverse Temp change buttons + - */ - {NULL, NULL, NULL} // end of menu marker. DO NOT REMOVE + { (const char *) SettingsDescriptions[7], settings_setDisplayRotation, settings_displayDisplayRotation }, /*Display Rotation*/ + { (const char *) SettingsDescriptions[10], settings_setCoolingBlinkEnabled, settings_displayCoolingBlinkEnabled }, /*Cooling blink warning*/ + { (const char *) SettingsDescriptions[15], settings_setScrollSpeed, settings_displayScrollSpeed }, /*Scroll Speed for descriptions*/ + { (const char *) SettingsDescriptions[21], settings_setReverseButtonTempChangeEnabled, settings_displayReverseButtonTempChangeEnabled }, /* Reverse Temp change buttons + - */ + { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; const menuitem PowerMenu[] = { - /* +/* * Sleep Temp * Sleep Time * Shutdown Time * Motion Sensitivity */ - {(const char *)SettingsDescriptions[1], settings_setSleepTemp, settings_displaySleepTemp}, /*Sleep Temp*/ - {(const char *)SettingsDescriptions[2], settings_setSleepTime, settings_displaySleepTime}, /*Sleep Time*/ - {(const char *)SettingsDescriptions[3], settings_setShutdownTime, settings_displayShutdownTime}, /*Shutdown Time*/ - {(const char *)SettingsDescriptions[4], settings_setSensitivity, settings_displaySensitivity}, /* Motion Sensitivity*/ +{ (const char *) SettingsDescriptions[1], settings_setSleepTemp, settings_displaySleepTemp }, /*Sleep Temp*/ +{ (const char *) SettingsDescriptions[2], settings_setSleepTime, settings_displaySleepTime }, /*Sleep Time*/ +{ (const char *) SettingsDescriptions[3], settings_setShutdownTime, settings_displayShutdownTime }, /*Shutdown Time*/ +{ (const char *) SettingsDescriptions[4], settings_setSensitivity, settings_displaySensitivity }, /* Motion Sensitivity*/ #ifdef HALL_SENSOR - {(const char *)SettingsDescriptions[26], settings_setHallEffect, settings_displayHallEffect}, /* HallEffect Sensitivity*/ + { (const char *) SettingsDescriptions[26], settings_setHallEffect, settings_displayHallEffect }, /* HallEffect Sensitivity*/ #endif - {NULL, NULL, NULL} // end of menu marker. DO NOT REMOVE + { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; const menuitem advancedMenu[] = { - /* +/* * Power limit * Detailed IDLE * Detailed Soldering @@ -204,19 +205,18 @@ const menuitem advancedMenu[] = { * Reset Settings * Power Pulse */ - {(const char *)SettingsDescriptions[20], settings_setPowerLimit, settings_displayPowerLimit}, /*Power limit*/ - {(const char *)SettingsDescriptions[6], settings_setAdvancedIDLEScreens, settings_displayAdvancedIDLEScreens}, /* Advanced idle screen*/ - {(const char *)SettingsDescriptions[14], settings_setAdvancedSolderingScreens, settings_displayAdvancedSolderingScreens}, /* Advanced soldering screen*/ - {(const char *)SettingsDescriptions[12], settings_setResetSettings, settings_displayResetSettings}, /*Resets settings*/ - {(const char *)SettingsDescriptions[11], settings_setCalibrate, settings_displayCalibrate}, /*Calibrate tip*/ - {(const char *)SettingsDescriptions[13], settings_setCalibrateVIN, settings_displayCalibrateVIN}, /*Voltage input cal*/ - {(const char *)SettingsDescriptions[24], settings_setPowerPulse, settings_displayPowerPulse}, /*Power Pulse adjustment */ - {(const char *)SettingsDescriptions[25], settings_setTipGain, settings_displayTipGain}, /*TipGain*/ - {NULL, NULL, NULL} // end of menu marker. DO NOT REMOVE +{ (const char *) SettingsDescriptions[20], settings_setPowerLimit, settings_displayPowerLimit }, /*Power limit*/ +{ (const char *) SettingsDescriptions[6], settings_setAdvancedIDLEScreens, settings_displayAdvancedIDLEScreens }, /* Advanced idle screen*/ +{ (const char *) SettingsDescriptions[14], settings_setAdvancedSolderingScreens, settings_displayAdvancedSolderingScreens }, /* Advanced soldering screen*/ +{ (const char *) SettingsDescriptions[12], settings_setResetSettings, settings_displayResetSettings }, /*Resets settings*/ +{ (const char *) SettingsDescriptions[11], settings_setCalibrate, settings_displayCalibrate }, /*Calibrate tip*/ +{ (const char *) SettingsDescriptions[13], settings_setCalibrateVIN, settings_displayCalibrateVIN }, /*Voltage input cal*/ +{ (const char *) SettingsDescriptions[24], settings_setPowerPulse, settings_displayPowerPulse }, /*Power Pulse adjustment */ +{ (const char *) SettingsDescriptions[25], settings_setTipGain, settings_displayTipGain }, /*TipGain*/ +{ NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; -static void printShortDescriptionDoubleLine(uint32_t shortDescIndex) -{ +static void printShortDescriptionDoubleLine(uint32_t shortDescIndex) { OLED::setFont(1); OLED::setCharCursor(0, 0); OLED::print(SettingsShortNames[shortDescIndex][0]); @@ -231,8 +231,7 @@ static void printShortDescriptionDoubleLine(uint32_t shortDescIndex) * @param cursorCharPosition Custom cursor char position to set after printing * description. */ -static void printShortDescription(uint32_t shortDescIndex, uint16_t cursorCharPosition) -{ +static void printShortDescription(uint32_t shortDescIndex, uint16_t cursorCharPosition) { // print short description (default single line, explicit double line) printShortDescriptionDoubleLine(shortDescIndex); @@ -243,8 +242,7 @@ static void printShortDescription(uint32_t shortDescIndex, uint16_t cursorCharPo OLED::setCursor(OLED::getCursorX() - 2, 0); } -static int userConfirmation(const char *message) -{ +static int userConfirmation(const char *message) { uint16_t messageWidth = FONT_12_WIDTH * (strlen(message) + 7); uint32_t messageStart = xTaskGetTickCount(); @@ -253,13 +251,11 @@ static int userConfirmation(const char *message) int16_t lastOffset = -1; bool lcdRefresh = true; - for (;;) - { + for (;;) { int16_t messageOffset = ((xTaskGetTickCount() - messageStart) / (systemSettings.descriptionScrollSpeed == 1 ? 10 : 20)); messageOffset %= messageWidth; // Roll around at the end - if (lastOffset != messageOffset) - { + if (lastOffset != messageOffset) { OLED::clearScreen(); //^ Rolling offset based on time @@ -270,8 +266,7 @@ static int userConfirmation(const char *message) } ButtonState buttons = getButtonState(); - switch (buttons) - { + switch (buttons) { case BUTTON_F_SHORT: // User confirmed return 1; @@ -286,8 +281,7 @@ static int userConfirmation(const char *message) return 0; } - if (lcdRefresh) - { + if (lcdRefresh) { OLED::refresh(); osDelay(40); lcdRefresh = false; @@ -295,43 +289,39 @@ static int userConfirmation(const char *message) } return 0; } -#ifdef MODEL_TS100 -static bool settings_setInputVRange(void) -{ - systemSettings.cutoutSetting = (systemSettings.cutoutSetting + 1) % 5; - if (systemSettings.cutoutSetting) - systemSettings.powerLimit = 0; // disable power limit if switching to a lipo power source - return systemSettings.cutoutSetting == 4; +#ifdef POW_DC +static bool settings_setInputVRange(void) { + systemSettings.minDCVoltageCells = (systemSettings.minDCVoltageCells + 1) % 5; + return systemSettings.minDCVoltageCells == 4; } -static void settings_displayInputVRange(void) -{ +static void settings_displayInputVRange(void) { printShortDescription(0, 6); - if (systemSettings.cutoutSetting) - { - OLED::printNumber(2 + systemSettings.cutoutSetting, 1); + if (systemSettings.minDCVoltageCells) { + OLED::printNumber(2 + systemSettings.minDCVoltageCells, 1); OLED::print(SymbolCellCount); - } - else - { + } else { OLED::print(SymbolDC); } } +#endif +#ifdef POW_QC +static bool settings_setQCInputV(void) { +#ifdef POW_QC_20V + systemSettings.QCIdealVoltage = (systemSettings.QCIdealVoltage + 1) % 3; + return systemSettings.QCIdealVoltage == 2; #else -static bool settings_setInputPRange(void) -{ - systemSettings.cutoutSetting = (systemSettings.cutoutSetting + 1) % 2; - return false; + systemSettings.QCIdealVoltage = (systemSettings.QCIdealVoltage + 1) % 2; + return systemSettings.QCIdealVoltage == 1; +#endif } -static void settings_displayInputPRange(void) -{ +static void settings_displayQCInputV(void) { printShortDescription(0, 5); - //0 = 9V, 1=12V (Fixed Voltages, these imply 1.5A limits) - // These are only used in QC3.0 modes - switch (systemSettings.cutoutSetting) - { + //0 = 9V, 1=12V, 2=20V (Fixed Voltages) + // These are only used in QC modes + switch (systemSettings.QCIdealVoltage) { case 0: OLED::printNumber(9, 2); OLED::print(SymbolVolts); @@ -340,21 +330,24 @@ static void settings_displayInputPRange(void) OLED::printNumber(12, 2); OLED::print(SymbolVolts); break; + case 2: + OLED::printNumber(20, 2); + OLED::print(SymbolVolts); + break; default: break; } } #endif -static bool settings_setSleepTemp(void) -{ +static bool settings_setSleepTemp(void) { // If in C, 10 deg, if in F 20 deg #ifdef ENABLED_FAHRENHEIT_SUPPORT if (systemSettings.temperatureInF) { systemSettings.SleepTemp += 20; if (systemSettings.SleepTemp > 580) - systemSettings.SleepTemp = 60; + systemSettings.SleepTemp = 60; return systemSettings.SleepTemp == 580; } else @@ -367,17 +360,14 @@ static bool settings_setSleepTemp(void) } } -static void settings_displaySleepTemp(void) -{ +static void settings_displaySleepTemp(void) { printShortDescription(1, 5); OLED::printNumber(systemSettings.SleepTemp, 3); } -static bool settings_setSleepTime(void) -{ +static bool settings_setSleepTime(void) { systemSettings.SleepTime++; // Go up 1 minute at a time - if (systemSettings.SleepTime >= 16) - { + if (systemSettings.SleepTime >= 16) { systemSettings.SleepTime = 0; // can't set time over 10 mins } // Remember that ^ is the time of no movement @@ -386,30 +376,22 @@ static bool settings_setSleepTime(void) return systemSettings.SleepTime == 15; } -static void settings_displaySleepTime(void) -{ +static void settings_displaySleepTime(void) { printShortDescription(2, 5); - if (systemSettings.SleepTime == 0) - { + if (systemSettings.SleepTime == 0) { OLED::print(OffString); - } - else if (systemSettings.SleepTime < 6) - { + } else if (systemSettings.SleepTime < 6) { OLED::printNumber(systemSettings.SleepTime * 10, 2); OLED::print(SymbolSeconds); - } - else - { + } else { OLED::printNumber(systemSettings.SleepTime - 5, 2); OLED::print(SymbolMinutes); } } -static bool settings_setShutdownTime(void) -{ +static bool settings_setShutdownTime(void) { systemSettings.ShutdownTime++; - if (systemSettings.ShutdownTime > 60) - { + if (systemSettings.ShutdownTime > 60) { systemSettings.ShutdownTime = 0; // wrap to off } if (PCBVersion == 3) @@ -417,15 +399,11 @@ static bool settings_setShutdownTime(void) return systemSettings.ShutdownTime == 60; } -static void settings_displayShutdownTime(void) -{ +static void settings_displayShutdownTime(void) { printShortDescription(3, 5); - if (systemSettings.ShutdownTime == 0) - { + if (systemSettings.ShutdownTime == 0) { OLED::print(OffString); - } - else - { + } else { OLED::printNumber(systemSettings.ShutdownTime, 2); OLED::print(SymbolMinutes); } @@ -440,7 +418,7 @@ static bool settings_setTempF(void) // C to F == F= ( (C*9) +160)/5 systemSettings.BoostTemp = ((systemSettings.BoostTemp * 9) + 160) / 5; systemSettings.SolderingTemp = - ((systemSettings.SolderingTemp * 9) + 160) / 5; + ((systemSettings.SolderingTemp * 9) + 160) / 5; systemSettings.SleepTemp = ((systemSettings.SleepTemp * 9) + 160) / 5; } else @@ -469,69 +447,57 @@ static void settings_displayTempF(void) } #endif -static bool settings_setSensitivity(void) -{ +static bool settings_setSensitivity(void) { systemSettings.sensitivity++; systemSettings.sensitivity = systemSettings.sensitivity % 10; return systemSettings.sensitivity == 9; } -static void settings_displaySensitivity(void) -{ +static void settings_displaySensitivity(void) { printShortDescription(4, 7); OLED::printNumber(systemSettings.sensitivity, 1, false); } -static bool settings_setAdvancedSolderingScreens(void) -{ +static bool settings_setAdvancedSolderingScreens(void) { systemSettings.detailedSoldering = !systemSettings.detailedSoldering; return false; } -static void settings_displayAdvancedSolderingScreens(void) -{ +static void settings_displayAdvancedSolderingScreens(void) { printShortDescription(14, 7); OLED::drawCheckbox(systemSettings.detailedSoldering); } -static bool settings_setAdvancedIDLEScreens(void) -{ +static bool settings_setAdvancedIDLEScreens(void) { systemSettings.detailedIDLE = !systemSettings.detailedIDLE; return false; } -static void settings_displayAdvancedIDLEScreens(void) -{ +static void settings_displayAdvancedIDLEScreens(void) { printShortDescription(6, 7); OLED::drawCheckbox(systemSettings.detailedIDLE); } -static bool settings_setPowerLimit(void) -{ +static bool settings_setPowerLimit(void) { systemSettings.powerLimit += POWER_LIMIT_STEPS; if (systemSettings.powerLimit > MAX_POWER_LIMIT) systemSettings.powerLimit = 0; return systemSettings.powerLimit + POWER_LIMIT_STEPS > MAX_POWER_LIMIT; } -static void settings_displayPowerLimit(void) -{ +static void settings_displayPowerLimit(void) { printShortDescription(20, 5); - if (systemSettings.powerLimit == 0) - { + if (systemSettings.powerLimit == 0) { OLED::print(OffString); - } - else - { + } else { OLED::printNumber(systemSettings.powerLimit, 2); OLED::print(SymbolWatts); } } -static bool settings_setScrollSpeed(void) -{ +static bool settings_setScrollSpeed(void) { if (systemSettings.descriptionScrollSpeed == 0) systemSettings.descriptionScrollSpeed = 1; else @@ -539,18 +505,15 @@ static bool settings_setScrollSpeed(void) return false; } -static void settings_displayScrollSpeed(void) -{ +static void settings_displayScrollSpeed(void) { printShortDescription(15, 7); OLED::print((systemSettings.descriptionScrollSpeed) ? SettingFastChar : SettingSlowChar); } -static bool settings_setDisplayRotation(void) -{ +static bool settings_setDisplayRotation(void) { systemSettings.OrientationMode++; systemSettings.OrientationMode = systemSettings.OrientationMode % 3; - switch (systemSettings.OrientationMode) - { + switch (systemSettings.OrientationMode) { case 0: OLED::setRotation(false); break; @@ -566,12 +529,10 @@ static bool settings_setDisplayRotation(void) return systemSettings.OrientationMode == 2; } -static void settings_displayDisplayRotation(void) -{ +static void settings_displayDisplayRotation(void) { printShortDescription(7, 7); - switch (systemSettings.OrientationMode) - { + switch (systemSettings.OrientationMode) { case 0: OLED::print(SettingRightChar); break; @@ -587,8 +548,7 @@ static void settings_displayDisplayRotation(void) } } -static bool settings_setBoostTemp(void) -{ +static bool settings_setBoostTemp(void) { #ifdef ENABLED_FAHRENHEIT_SUPPORT if (systemSettings.temperatureInF) { @@ -610,48 +570,37 @@ static bool settings_setBoostTemp(void) else #endif { - if (systemSettings.BoostTemp == 0) - { + if (systemSettings.BoostTemp == 0) { systemSettings.BoostTemp = 250; // loop back at 250 - } - else - { + } else { systemSettings.BoostTemp += 10; // Go up 10C at a time } - if (systemSettings.BoostTemp > 450) - { + if (systemSettings.BoostTemp > 450) { systemSettings.BoostTemp = 0; //Go to off state } return systemSettings.BoostTemp == 450; } } -static void settings_displayBoostTemp(void) -{ +static void settings_displayBoostTemp(void) { printShortDescription(8, 5); - if (systemSettings.BoostTemp) - { + if (systemSettings.BoostTemp) { OLED::printNumber(systemSettings.BoostTemp, 3); - } - else - { + } else { OLED::print(OffString); } } -static bool settings_setAutomaticStartMode(void) -{ +static bool settings_setAutomaticStartMode(void) { systemSettings.autoStartMode++; systemSettings.autoStartMode %= 4; return systemSettings.autoStartMode == 3; } -static void settings_displayAutomaticStartMode(void) -{ +static void settings_displayAutomaticStartMode(void) { printShortDescription(9, 7); - switch (systemSettings.autoStartMode) - { + switch (systemSettings.autoStartMode) { case 0: OLED::print(SettingStartNoneChar); break; @@ -670,27 +619,24 @@ static void settings_displayAutomaticStartMode(void) } } -static bool settings_setLockingMode(void) -{ +static bool settings_setLockingMode(void) { systemSettings.lockingMode++; systemSettings.lockingMode %= 3; return systemSettings.lockingMode == 2; } -static void settings_displayLockingMode(void) -{ +static void settings_displayLockingMode(void) { printShortDescription(26, 7); - switch (systemSettings.lockingMode) - { + switch (systemSettings.lockingMode) { case 0: - OLED::print(SettingLockDisableChar); + OLED::print (SettingLockDisableChar); break; case 1: - OLED::print(SettingLockBoostChar); + OLED::print (SettingLockBoostChar); break; case 2: - OLED::print(SettingLockFullChar); + OLED::print (SettingLockFullChar); break; default: OLED::print(SettingLockDisableChar); @@ -698,23 +644,19 @@ static void settings_displayLockingMode(void) } } -static bool settings_setCoolingBlinkEnabled(void) -{ +static bool settings_setCoolingBlinkEnabled(void) { systemSettings.coolingTempBlink = !systemSettings.coolingTempBlink; return false; } -static void settings_displayCoolingBlinkEnabled(void) -{ +static void settings_displayCoolingBlinkEnabled(void) { printShortDescription(10, 7); OLED::drawCheckbox(systemSettings.coolingTempBlink); } -static bool settings_setResetSettings(void) -{ - if (userConfirmation(SettingsResetWarning)) - { +static bool settings_setResetSettings(void) { + if (userConfirmation(SettingsResetWarning)) { resetSettings(); OLED::setFont(0); @@ -727,23 +669,19 @@ static bool settings_setResetSettings(void) return false; } -static void settings_displayResetSettings(void) -{ +static void settings_displayResetSettings(void) { printShortDescription(12, 7); } -static void setTipOffset() -{ +static void setTipOffset() { systemSettings.CalibrationOffset = 0; // If the thermo-couple at the end of the tip, and the handle are at // equilibrium, then the output should be zero, as there is no temperature // differential. - while (systemSettings.CalibrationOffset == 0) - { + while (systemSettings.CalibrationOffset == 0) { uint32_t offset = 0; - for (uint8_t i = 0; i < 16; i++) - { + for (uint8_t i = 0; i < 16; i++) { offset += getTipRawTemp(1); // cycle through the filter a fair bit to ensure we're stable. OLED::clearScreen(); @@ -766,11 +704,9 @@ static void setTipOffset() //Provide the user the option to tune their own tip if custom is selected //If not only do single point tuning as per usual -static bool settings_setCalibrate(void) -{ +static bool settings_setCalibrate(void) { - if (userConfirmation(SettingsCalibrationWarning)) - { + if (userConfirmation(SettingsCalibrationWarning)) { // User confirmed // So we now perform the actual calculation setTipOffset(); @@ -778,20 +714,17 @@ static bool settings_setCalibrate(void) return false; } -static void settings_displayCalibrate(void) -{ +static void settings_displayCalibrate(void) { printShortDescription(11, 5); } -static bool settings_setCalibrateVIN(void) -{ +static bool settings_setCalibrateVIN(void) { // Jump to the voltage calibration subscreen OLED::setFont(0); OLED::clearScreen(); OLED::setCursor(0, 0); - for (;;) - { + for (;;) { OLED::setCursor(0, 0); OLED::printNumber(getInputVoltageX10(systemSettings.voltageDiv, 0) / 10, 2); OLED::print(SymbolDot); @@ -799,8 +732,7 @@ static bool settings_setCalibrateVIN(void) OLED::print(SymbolVolts); ButtonState buttons = getButtonState(); - switch (buttons) - { + switch (buttons) { case BUTTON_F_SHORT: systemSettings.voltageDiv++; break; @@ -837,12 +769,9 @@ static bool settings_setCalibrateVIN(void) systemSettings.voltageDiv = 900; } #else - if (systemSettings.voltageDiv < 360) - { + if (systemSettings.voltageDiv < 360) { systemSettings.voltageDiv = 360; - } - else if (systemSettings.voltageDiv > 520) - { + } else if (systemSettings.voltageDiv > 520) { systemSettings.voltageDiv = 520; } #endif @@ -850,21 +779,18 @@ static bool settings_setCalibrateVIN(void) return false; } -static bool settings_setTipGain(void) -{ +static bool settings_setTipGain(void) { OLED::setFont(0); OLED::clearScreen(); - for (;;) - { + for (;;) { OLED::setCursor(0, 0); OLED::printNumber(systemSettings.TipGain / 10, 2); OLED::print(SymbolDot); OLED::printNumber(systemSettings.TipGain % 10, 1); ButtonState buttons = getButtonState(); - switch (buttons) - { + switch (buttons) { case BUTTON_F_SHORT: systemSettings.TipGain -= 1; break; @@ -887,94 +813,75 @@ static bool settings_setTipGain(void) osDelay(40); // Cap to sensible values - if (systemSettings.TipGain < 150) - { + if (systemSettings.TipGain < 150) { systemSettings.TipGain = 150; - } - else if (systemSettings.TipGain > 300) - { + } else if (systemSettings.TipGain > 300) { systemSettings.TipGain = 300; } } return false; } -static void settings_displayTipGain(void) -{ +static void settings_displayTipGain(void) { printShortDescription(25, 5); } -static bool settings_setReverseButtonTempChangeEnabled(void) -{ +static bool settings_setReverseButtonTempChangeEnabled(void) { systemSettings.ReverseButtonTempChangeEnabled = !systemSettings.ReverseButtonTempChangeEnabled; return false; } -static void settings_displayReverseButtonTempChangeEnabled(void) -{ +static void settings_displayReverseButtonTempChangeEnabled(void) { printShortDescription(21, 7); OLED::drawCheckbox(systemSettings.ReverseButtonTempChangeEnabled); } -static bool settings_setTempChangeShortStep(void) -{ +static bool settings_setTempChangeShortStep(void) { systemSettings.TempChangeShortStep += TEMP_CHANGE_SHORT_STEP; - if (systemSettings.TempChangeShortStep > TEMP_CHANGE_SHORT_STEP_MAX) - { + if (systemSettings.TempChangeShortStep > TEMP_CHANGE_SHORT_STEP_MAX) { systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // loop back at TEMP_CHANGE_SHORT_STEP_MAX } return systemSettings.TempChangeShortStep == TEMP_CHANGE_SHORT_STEP_MAX; } -static void settings_displayTempChangeShortStep(void) -{ +static void settings_displayTempChangeShortStep(void) { printShortDescription(22, 6); OLED::printNumber(systemSettings.TempChangeShortStep, 2); } -static bool settings_setTempChangeLongStep(void) -{ +static bool settings_setTempChangeLongStep(void) { systemSettings.TempChangeLongStep += TEMP_CHANGE_LONG_STEP; - if (systemSettings.TempChangeLongStep > TEMP_CHANGE_LONG_STEP_MAX) - { + if (systemSettings.TempChangeLongStep > TEMP_CHANGE_LONG_STEP_MAX) { systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // loop back at TEMP_CHANGE_LONG_STEP_MAX } return systemSettings.TempChangeLongStep == TEMP_CHANGE_LONG_STEP_MAX; } -static void settings_displayTempChangeLongStep(void) -{ +static void settings_displayTempChangeLongStep(void) { printShortDescription(23, 6); OLED::printNumber(systemSettings.TempChangeLongStep, 2); } -static bool settings_setPowerPulse(void) -{ +static bool settings_setPowerPulse(void) { systemSettings.KeepAwakePulse += POWER_PULSE_INCREMENT; systemSettings.KeepAwakePulse %= POWER_PULSE_MAX; return systemSettings.KeepAwakePulse == POWER_PULSE_MAX - 1; } -static void settings_displayPowerPulse(void) -{ +static void settings_displayPowerPulse(void) { printShortDescription(24, 5); - if (systemSettings.KeepAwakePulse) - { + if (systemSettings.KeepAwakePulse) { OLED::printNumber(systemSettings.KeepAwakePulse / 10, 1); OLED::print(SymbolDot); OLED::printNumber(systemSettings.KeepAwakePulse % 10, 1); - } - else - { + } else { OLED::print(OffString); } } #ifdef HALL_SENSOR -static void settings_displayHallEffect(void) -{ +static void settings_displayHallEffect(void) { printShortDescription(26, 7); - switch (systemSettings.hallEffectSensitivity) - { + switch (systemSettings.hallEffectSensitivity) { case 1: OLED::print(SettingSensitivityLow); break; @@ -990,8 +897,7 @@ static void settings_displayHallEffect(void) break; } } -static bool settings_setHallEffect(void) -{ +static bool settings_setHallEffect(void) { //To keep life simpler for now, we have a few preset sensitivity levels // Off, Low, Medium, High systemSettings.hallEffectSensitivity++; @@ -999,8 +905,7 @@ static bool settings_setHallEffect(void) return systemSettings.hallEffectSensitivity == 3; } #endif -static void displayMenu(size_t index) -{ +static void displayMenu(size_t index) { // Call into the menu OLED::setFont(1); OLED::setCursor(0, 0); @@ -1012,49 +917,39 @@ static void displayMenu(size_t index) OLED::drawArea(96 - 16 - 2, 0, 16, 16, (&SettingsMenuIcons[(16 * 2) * index])); } -static void settings_displayCalibrateVIN(void) -{ +static void settings_displayCalibrateVIN(void) { printShortDescription(13, 5); } -static void settings_displaySolderingMenu(void) -{ +static void settings_displaySolderingMenu(void) { displayMenu(0); } -static bool settings_enterSolderingMenu(void) -{ +static bool settings_enterSolderingMenu(void) { gui_Menu(solderingMenu); return false; } -static void settings_displayPowerMenu(void) -{ +static void settings_displayPowerMenu(void) { displayMenu(1); } -static bool settings_enterPowerMenu(void) -{ +static bool settings_enterPowerMenu(void) { gui_Menu(PowerMenu); return false; } -static void settings_displayUIMenu(void) -{ +static void settings_displayUIMenu(void) { displayMenu(2); } -static bool settings_enterUIMenu(void) -{ +static bool settings_enterUIMenu(void) { gui_Menu(UIMenu); return false; } -static void settings_displayAdvancedMenu(void) -{ +static void settings_displayAdvancedMenu(void) { displayMenu(3); } -static bool settings_enterAdvancedMenu(void) -{ +static bool settings_enterAdvancedMenu(void) { gui_Menu(advancedMenu); return false; } -void gui_Menu(const menuitem *menu) -{ +void gui_Menu(const menuitem *menu) { // Draw the settings menu and provide iteration support etc uint8_t currentScreen = 0; uint32_t autoRepeatTimer = 0; @@ -1070,14 +965,12 @@ void gui_Menu(const menuitem *menu) bool scrollBlink = false; bool lastValue = false; - for (uint8_t i = 0; menu[i].draw != NULL; i++) - { + for (uint8_t i = 0; menu[i].draw != NULL; i++) { scrollContentSize += 1; } // Animated menu opening. - if (menu[currentScreen].draw != NULL) - { + if (menu[currentScreen].draw != NULL) { // This menu is drawn in a secondary framebuffer. // Then we play a transition from the current primary // framebuffer to the new buffer. @@ -1091,14 +984,12 @@ void gui_Menu(const menuitem *menu) OLED::transitionSecondaryFramebuffer(true); } - while ((menu[currentScreen].draw != NULL) && earlyExit == false) - { + while ((menu[currentScreen].draw != NULL) && earlyExit == false) { OLED::setFont(0); OLED::setCursor(0, 0); // If the user has hesitated for >=3 seconds, show the long text // Otherwise "draw" the option - if ((xTaskGetTickCount() - lastButtonTime < 3000) || menu[currentScreen].description == NULL) - { + if ((xTaskGetTickCount() - lastButtonTime < 3000) || menu[currentScreen].description == NULL) { OLED::clearScreen(); menu[currentScreen].draw(); uint8_t indicatorHeight = OLED_HEIGHT / scrollContentSize; @@ -1109,19 +1000,16 @@ void gui_Menu(const menuitem *menu) OLED::drawScrollIndicator(position, indicatorHeight); lastOffset = -1; lcdRefresh = true; - } - else - { + } else { // Draw description if (descriptionStart == 0) descriptionStart = xTaskGetTickCount(); // lower the value - higher the speed int16_t descriptionWidth = - FONT_12_WIDTH * (strlen(menu[currentScreen].description) + 7); + FONT_12_WIDTH * (strlen(menu[currentScreen].description) + 7); int16_t descriptionOffset = ((xTaskGetTickCount() - descriptionStart) / (systemSettings.descriptionScrollSpeed == 1 ? 10 : 20)); descriptionOffset %= descriptionWidth; // Roll around at the end - if (lastOffset != descriptionOffset) - { + if (lastOffset != descriptionOffset) { OLED::clearScreen(); OLED::setCursor((OLED_WIDTH - descriptionOffset), 0); OLED::print(menu[currentScreen].description); @@ -1132,29 +1020,24 @@ void gui_Menu(const menuitem *menu) ButtonState buttons = getButtonState(); - if (buttons != lastButtonState) - { + if (buttons != lastButtonState) { autoRepeatAcceleration = 0; lastButtonState = buttons; } - switch (buttons) - { + switch (buttons) { case BUTTON_BOTH: earlyExit = true; // will make us exit next loop descriptionStart = 0; break; case BUTTON_F_SHORT: // increment - if (descriptionStart == 0) - { - if (menu[currentScreen].incrementHandler != NULL) - { + if (descriptionStart == 0) { + if (menu[currentScreen].incrementHandler != NULL) { enterGUIMenu = false; lastValue = menu[currentScreen].incrementHandler(); - if (enterGUIMenu) - { + if (enterGUIMenu) { OLED::useSecondaryFramebuffer(true); OLED::setFont(0); OLED::setCursor(0, 0); @@ -1164,28 +1047,22 @@ void gui_Menu(const menuitem *menu) OLED::transitionSecondaryFramebuffer(false); } enterGUIMenu = true; - } - else - { + } else { earlyExit = true; } - } - else + } else descriptionStart = 0; break; case BUTTON_B_SHORT: - if (descriptionStart == 0) - { + if (descriptionStart == 0) { currentScreen++; lastValue = false; - } - else + } else descriptionStart = 0; break; case BUTTON_F_LONG: - if ((int)(xTaskGetTickCount() - autoRepeatTimer + autoRepeatAcceleration) > - PRESS_ACCEL_INTERVAL_MAX) - { + if ((int) (xTaskGetTickCount() - autoRepeatTimer + autoRepeatAcceleration) > + PRESS_ACCEL_INTERVAL_MAX) { if ((lastValue = menu[currentScreen].incrementHandler())) autoRepeatTimer = 1000; else @@ -1200,8 +1077,7 @@ void gui_Menu(const menuitem *menu) break; case BUTTON_B_LONG: if (xTaskGetTickCount() - autoRepeatTimer + autoRepeatAcceleration > - PRESS_ACCEL_INTERVAL_MAX) - { + PRESS_ACCEL_INTERVAL_MAX) { currentScreen++; autoRepeatTimer = xTaskGetTickCount(); descriptionStart = 0; @@ -1215,20 +1091,17 @@ void gui_Menu(const menuitem *menu) } if ((PRESS_ACCEL_INTERVAL_MAX - autoRepeatAcceleration) < - PRESS_ACCEL_INTERVAL_MIN) - { + PRESS_ACCEL_INTERVAL_MIN) { autoRepeatAcceleration = - PRESS_ACCEL_INTERVAL_MAX - PRESS_ACCEL_INTERVAL_MIN; + PRESS_ACCEL_INTERVAL_MAX - PRESS_ACCEL_INTERVAL_MIN; } - if (lcdRefresh) - { + if (lcdRefresh) { OLED::refresh(); // update the LCD osDelay(40); lcdRefresh = false; } - if ((xTaskGetTickCount() - lastButtonTime) > (1000 * 30)) - { + if ((xTaskGetTickCount() - lastButtonTime) > (1000 * 30)) { // If user has not pressed any buttons in 30 seconds, exit back a menu layer // This will trickle the user back to the main screen eventually earlyExit = true; @@ -1237,8 +1110,7 @@ void gui_Menu(const menuitem *menu) } } -void enterSettingsMenu() -{ +void enterSettingsMenu() { gui_Menu(rootSettingsMenu); // Call the root menu saveSettings(); } diff --git a/workspace/TS100/configuration.h b/workspace/TS100/configuration.h index a60d3c77..eac4a58c 100644 --- a/workspace/TS100/configuration.h +++ b/workspace/TS100/configuration.h @@ -87,7 +87,7 @@ #define DETAILED_SOLDERING 0 // 0: Disable 1: Enable - Default 0 #define DETAILED_IDLE 0 // 0: Disable 1: Enable - Default 0 -#define CUT_OUT_SETTING 0 // default to no cut-off voltage (or 18W for TS80) +#define CUT_OUT_SETTING 0 // default to no cut-off voltage #define TEMPERATURE_INF 0 // default to 0 #define DESCRIPTION_SCROLL_SPEED 0 // 0: Slow 1: Fast - default to slow