Add macro to enable tip types for supported hardware only

This commit is contained in:
Ivan Zorin
2024-12-23 21:13:44 +03:00
parent 71a1e2a367
commit 0a63b6b5df
6 changed files with 38 additions and 4 deletions

View File

@@ -379,6 +379,8 @@ uint8_t preStartChecksDone() {
#endif #endif
} }
#ifdef TIP_TYPE_SUPPORT
// new version for models supporting tips of different length/resistance
uint8_t getTipResistanceX10() { uint8_t getTipResistanceX10() {
#ifdef TIP_RESISTANCE_SENSE_Pin #ifdef TIP_RESISTANCE_SENSE_Pin
// Return tip resistance in x10 ohms // Return tip resistance in x10 ohms
@@ -388,7 +390,6 @@ uint8_t getTipResistanceX10() {
return lastTipResistance; // Auto mode return lastTipResistance; // Auto mode
} }
return user_selected_tip; return user_selected_tip;
#else #else
uint8_t user_selected_tip = getUserSelectedTipResistance(); uint8_t user_selected_tip = getUserSelectedTipResistance();
if (user_selected_tip == 0) { if (user_selected_tip == 0) {
@@ -397,6 +398,18 @@ uint8_t getTipResistanceX10() {
return user_selected_tip; return user_selected_tip;
#endif #endif
} }
#else /* no tip type support: legacy version */
uint8_t getTipResistanceX10() {
#ifdef TIP_RESISTANCE_SENSE_Pin
// Return tip resistance in x10 ohms
// We can measure this using the op-amp
return lastTipResistance;
#else
return TIP_RESISTANCE;
#endif
}
#endif /* TIP_TYPE_SUPPORT */
#ifdef TIP_RESISTANCE_SENSE_Pin #ifdef TIP_RESISTANCE_SENSE_Pin
bool isTipShorted() { return tipShorted; } bool isTipShorted() { return tipShorted; }
#else #else

View File

@@ -218,6 +218,7 @@
#define TEMP_NTC 1 #define TEMP_NTC 1
#define ACCEL_I2CBB1 1 #define ACCEL_I2CBB1 1
#define POW_EPR 1 #define POW_EPR 1
#define TIP_TYPE_SUPPORT 1 // Support for tips of different types, i.e. resistance
#define AUTO_TIP_SELECTION 1 // Can auto-select the tip #define AUTO_TIP_SELECTION 1 // Can auto-select the tip
#define TIPTYPE_T12 1 // Can manually pick a T12 tip #define TIPTYPE_T12 1 // Can manually pick a T12 tip
#define HAS_POWER_DEBUG_MENU #define HAS_POWER_DEBUG_MENU

View File

@@ -154,6 +154,7 @@
#define POW_EPR 1 #define POW_EPR 1
#define ENABLE_QC2 1 #define ENABLE_QC2 1
#define MAG_SLEEP_SUPPORT 1 #define MAG_SLEEP_SUPPORT 1
#define TIP_TYPE_SUPPORT 1 // Support for tips of different types, i.e. resistance
#define AUTO_TIP_SELECTION 1 // Can auto-select the tip #define AUTO_TIP_SELECTION 1 // Can auto-select the tip
#define TIPTYPE_T12 1 // Can manually pick a T12 tip #define TIPTYPE_T12 1 // Can manually pick a T12 tip
#define DEVICE_HAS_VALIDATION_SUPPORT #define DEVICE_HAS_VALIDATION_SUPPORT

View File

@@ -123,6 +123,7 @@ typedef enum {
* Some devices allow multiple types of tips to be fitted, this allows selecting them or overriding the logic * Some devices allow multiple types of tips to be fitted, this allows selecting them or overriding the logic
* The first type will be the default (gets value of 0) * The first type will be the default (gets value of 0)
*/ */
#ifdef TIP_TYPE_SUPPORT
typedef enum { typedef enum {
#ifdef AUTO_TIP_SELECTION #ifdef AUTO_TIP_SELECTION
TIP_TYPE_AUTO, // If the hardware supports automatic detection TIP_TYPE_AUTO, // If the hardware supports automatic detection
@@ -143,6 +144,9 @@ typedef enum {
TIP_TYPE_MAX, // Max value marker TIP_TYPE_MAX, // Max value marker
} tipType_t; } tipType_t;
uint8_t getUserSelectedTipResistance(); // returns the resistance matching the selected tip type or 0 for auto uint8_t getUserSelectedTipResistance(); // returns the resistance matching the selected tip type or 0 for auto
#else
typedef enum { TIP_TYPE_MAX = 0 } tipType_t;
#endif /* TIP_TYPE_SUPPORT */
// Settings wide operations // Settings wide operations
void saveSettings(); void saveSettings();
@@ -162,5 +166,7 @@ void setSettingValue(const enum SettingsOptions option, const uint16_t newValue)
// Special access helpers, to reduce logic duplication // Special access helpers, to reduce logic duplication
uint8_t lookupVoltageLevel(); uint8_t lookupVoltageLevel();
uint16_t lookupHallEffectThreshold(); uint16_t lookupHallEffectThreshold();
#ifdef TIP_TYPE_SUPPORT
const char *lookupTipName(); // Get the name string for the current soldering tip const char *lookupTipName(); // Get the name string for the current soldering tip
#endif /* TIP_TYPE_SUPPORT */
#endif /* SETTINGS_H_ */ #endif /* SETTINGS_H_ */

View File

@@ -298,6 +298,7 @@ uint8_t lookupVoltageLevel() {
} }
} }
#ifdef TIP_TYPE_SUPPORT
const char *lookupTipName() { const char *lookupTipName() {
// Get the name string for the current soldering tip // Get the name string for the current soldering tip
tipType_t value = (tipType_t)getSettingValue(SettingsOptions::SolderingTipType); tipType_t value = (tipType_t)getSettingValue(SettingsOptions::SolderingTipType);
@@ -334,7 +335,10 @@ const char *lookupTipName() {
break; break;
} }
} }
#endif /* TIP_TYPE_SUPPORT */
// Returns the resistance for the current tip selected by the user or 0 for auto // Returns the resistance for the current tip selected by the user or 0 for auto
#ifdef TIP_TYPE_SUPPORT
uint8_t getUserSelectedTipResistance() { uint8_t getUserSelectedTipResistance() {
tipType_t value = (tipType_t)getSettingValue(SettingsOptions::SolderingTipType); tipType_t value = (tipType_t)getSettingValue(SettingsOptions::SolderingTipType);
@@ -370,3 +374,4 @@ uint8_t getUserSelectedTipResistance() {
break; break;
} }
} }
#endif /* TIP_TYPE_SUPPORT */

View File

@@ -116,8 +116,10 @@ static bool showHallEffect(void);
#endif /* HALL_SENSOR */ #endif /* HALL_SENSOR */
// Tip type selection // Tip type selection
#ifdef TIP_TYPE_SUPPORT
static void displaySolderingTipType(void); static void displaySolderingTipType(void);
static bool showSolderingTipType(void); static bool showSolderingTipType(void);
#endif /* TIP_TYPE_SUPPORT */
// Menu functions // Menu functions
@@ -267,12 +269,12 @@ const menuitem powerMenu[] = {
const menuitem solderingMenu[] = { const menuitem solderingMenu[] = {
/* /*
* Tip Type
* Boost Mode Temp * Boost Mode Temp
* Auto Start * Auto Start
* Temp Change Short Step * Temp Change Short Step
* Temp Change Long Step * Temp Change Long Step
* Locking Mode * Locking Mode
* Tip Type
* Profile Phases * Profile Phases
* Profile Preheat Temperature * Profile Preheat Temperature
* Profile Preheat Max Temperature Change Per Second * Profile Preheat Max Temperature Change Per Second
@@ -288,8 +290,6 @@ const menuitem solderingMenu[] = {
* Profile Phase 5 Duration (s) * Profile Phase 5 Duration (s)
* Profile Cooldown Max Temperature Change Per Second * Profile Cooldown Max Temperature Change Per Second
*/ */
/* Tip Type */
{SETTINGS_DESC(SettingsItemIndex::SolderingTipType), nullptr, displaySolderingTipType, showSolderingTipType, SettingsOptions::SolderingTipType, SettingsItemIndex::SolderingTipType, 5},
/* Boost Temp */ /* Boost Temp */
{SETTINGS_DESC(SettingsItemIndex::BoostTemperature), setBoostTemp, displayBoostTemp, nullptr, SettingsOptions::BoostTemp, SettingsItemIndex::BoostTemperature, 5}, {SETTINGS_DESC(SettingsItemIndex::BoostTemperature), setBoostTemp, displayBoostTemp, nullptr, SettingsOptions::BoostTemp, SettingsItemIndex::BoostTemperature, 5},
/* Auto start */ /* Auto start */
@@ -300,6 +300,10 @@ const menuitem solderingMenu[] = {
{SETTINGS_DESC(SettingsItemIndex::TempChangeLongStep), nullptr, displayTempChangeLongStep, nullptr, SettingsOptions::TempChangeLongStep, SettingsItemIndex::TempChangeLongStep, 6}, {SETTINGS_DESC(SettingsItemIndex::TempChangeLongStep), nullptr, displayTempChangeLongStep, nullptr, SettingsOptions::TempChangeLongStep, SettingsItemIndex::TempChangeLongStep, 6},
/* Locking Mode */ /* Locking Mode */
{SETTINGS_DESC(SettingsItemIndex::LockingMode), nullptr, displayLockingMode, nullptr, SettingsOptions::LockingMode, SettingsItemIndex::LockingMode, 7}, {SETTINGS_DESC(SettingsItemIndex::LockingMode), nullptr, displayLockingMode, nullptr, SettingsOptions::LockingMode, SettingsItemIndex::LockingMode, 7},
#ifdef TIP_TYPE_SUPPORT
/* Tip Type */
{SETTINGS_DESC(SettingsItemIndex::SolderingTipType), nullptr, displaySolderingTipType, showSolderingTipType, SettingsOptions::SolderingTipType, SettingsItemIndex::SolderingTipType, 5},
#endif /* TIP_TYPE_SUPPORT */
#ifdef PROFILE_SUPPORT #ifdef PROFILE_SUPPORT
/* Profile Phases */ /* Profile Phases */
{SETTINGS_DESC(SettingsItemIndex::ProfilePhases), nullptr, displayProfilePhases, nullptr, SettingsOptions::ProfilePhases, SettingsItemIndex::ProfilePhases, 7}, {SETTINGS_DESC(SettingsItemIndex::ProfilePhases), nullptr, displayProfilePhases, nullptr, SettingsOptions::ProfilePhases, SettingsItemIndex::ProfilePhases, 7},
@@ -763,12 +767,16 @@ static void displayHallEffectSleepTime(void) {
} }
} }
#endif /* HALL_SENSOR */ #endif /* HALL_SENSOR */
#ifdef TIP_TYPE_SUPPORT
static void displaySolderingTipType(void) { static void displaySolderingTipType(void) {
// TODO wrapping X value // TODO wrapping X value
OLED::print(lookupTipName(), FontStyle::SMALL, 255, OLED::getCursorX()); OLED::print(lookupTipName(), FontStyle::SMALL, 255, OLED::getCursorX());
} }
// If there is no detection, and no options, max is 0 // If there is no detection, and no options, max is 0
static bool showSolderingTipType(void) { return tipType_t::TIP_TYPE_MAX != 0; } static bool showSolderingTipType(void) { return tipType_t::TIP_TYPE_MAX != 0; }
#endif /* TIP_TYPE_SUPPORT */
static void setTempF(const enum SettingsOptions option) { static void setTempF(const enum SettingsOptions option) {
uint16_t Temp = getSettingValue(option); uint16_t Temp = getSettingValue(option);
if (getSettingValue(SettingsOptions::TemperatureInF)) { if (getSettingValue(SettingsOptions::TemperatureInF)) {