Refactor LedPwm code

This commit is contained in:
Theo Arends 2020-05-23 13:04:17 +02:00
parent 00b2ce961f
commit dc9ce42888
4 changed files with 31 additions and 42 deletions

View File

@ -295,6 +295,9 @@
#define D_CMND_LEDPOWER "LedPower"
#define D_CMND_LEDSTATE "LedState"
#define D_CMND_LEDMASK "LedMask"
#define D_CMND_LEDPWMOFF "LedPwmOff"
#define D_CMND_LEDPWMON "LedPwmOn"
#define D_CMND_LEDPWMMODE "LedPwmMode"
#define D_CMND_WIFIPOWER "WifiPower"
#define D_CMND_SPEEDUNIT "SpeedUnit"
#define D_CMND_I2CSCAN "I2CScan"
@ -587,11 +590,6 @@
// Commands xsns_02_analog.ino
#define D_CMND_ADCPARAM "AdcParam"
// Commands led pwm settings
#define D_CMND_SETLEDPWMOFF "LedPwmOff"
#define D_CMND_SETLEDPWMON "LedPwmOn"
#define D_CMND_SETLEDPWMMODE "LedPwmMode"
// xsns_70_veml6075.ino
#define D_JSON_UVA_INTENSITY "UvaIntensity"
#define D_JSON_UVB_INTENSITY "UvbItensity"

View File

@ -515,9 +515,7 @@ struct {
uint8_t ot_hot_water_setpoint; // E8C
uint8_t ot_boiler_setpoint; // E8D
uint8_t ot_flags; // E8E
uint8_t free_e8f[1]; // E8F
uint8_t ledpwm_mask; // F8F
uint16_t dimmer_hw_min; // E90
uint16_t dimmer_hw_max; // E92
uint32_t deepsleep; // E94
@ -569,11 +567,10 @@ struct {
uint16_t windmeter_pulse_debounce; // F3A
int16_t windmeter_speed_factor; // F3C
uint8_t windmeter_tele_pchange; // F3E
uint8_t ledpwm_mask; // F3F
uint8_t ledpwm_on; // F40
uint8_t ledpwm_off; // F41
uint8_t free_f42[118]; // F42 - Decrement if adding new Setting variables just above and below
uint8_t ledpwm_on; // F3F
uint8_t ledpwm_off; // F40
uint8_t free_f42[119]; // F41 - Decrement if adding new Setting variables just above and below
// Only 32 bit boundary variables below
uint16_t pulse_counter_debounce_low; // FB8

View File

@ -765,6 +765,9 @@ void SettingsDefaultSet2(void)
Settings.blinkcount = APP_BLINKCOUNT;
Settings.ledstate = APP_LEDSTATE;
Settings.ledmask = APP_LEDMASK;
// Settings.ledpwm_off = 0;
Settings.ledpwm_on = 255;
// Settings.ledpwm_mask = 0;
Settings.pulse_timer[0] = APP_PULSETIME;
// for (uint32_t i = 1; i < MAX_PULSETIMERS; i++) { Settings.pulse_timer[i] = 0; }
@ -1055,11 +1058,6 @@ void SettingsDefaultSet2(void)
Settings.flag2 = flag2;
Settings.flag3 = flag3;
Settings.flag4 = flag4;
// Led PWM
Settings.ledpwm_off = 0;
Settings.ledpwm_on = 255;
Settings.ledpwm_mask = 0;
}
/********************************************************************************************/
@ -1405,7 +1403,6 @@ void SettingsDelta(void)
Settings.config_version = 1; // ESP32
#endif // ESP32
}
if (Settings.version < 0x08020006) {
#ifdef ESP32
Settings.module = WEMOS;
@ -1416,18 +1413,13 @@ void SettingsDelta(void)
if (Settings.rules[1][0] == 0) { Settings.rules[1][1] = 0; }
if (Settings.rules[2][0] == 0) { Settings.rules[2][1] = 0; }
}
// ledpwm
if (Settings.version < 0x08030001) {
if (Settings.version < 0x08030002) {
SettingsUpdateText(SET_DEVICENAME, SettingsText(SET_FRIENDLYNAME1));
Settings.ledpwm_off = 0;
Settings.ledpwm_on = 255;
Settings.ledpwm_mask = 0;
}
if (Settings.version < 0x08030002) {
SettingsUpdateText(SET_DEVICENAME, SettingsText(SET_FRIENDLYNAME1));
}
Settings.version = VERSION;
SettingsSave(1);
}

View File

@ -27,7 +27,7 @@ const char kTasmotaCommands[] PROGMEM = "|" // No prefix
D_CMND_SERIALDELIMITER "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" D_CMND_WIFICONFIG "|"
D_CMND_DEVICENAME "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_INTERLOCK "|" D_CMND_TELEPERIOD "|" D_CMND_RESET "|" D_CMND_TIME "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|"
D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_LEDMASK "|" D_CMND_WIFIPOWER "|" D_CMND_TEMPOFFSET "|" D_CMND_HUMOFFSET "|"
D_CMND_SPEEDUNIT "|" D_CMND_GLOBAL_TEMP "|" D_CMND_GLOBAL_HUM "|" D_CMND_SETLEDPWMON "|" D_CMND_SETLEDPWMOFF "|" D_CMND_SETLEDPWMMODE "|"
D_CMND_SPEEDUNIT "|" D_CMND_GLOBAL_TEMP "|" D_CMND_GLOBAL_HUM "|" D_CMND_LEDPWMON "|" D_CMND_LEDPWMOFF "|" D_CMND_LEDPWMMODE "|"
#ifdef USE_I2C
D_CMND_I2CSCAN "|" D_CMND_I2CDRIVER "|"
#endif
@ -50,7 +50,7 @@ void (* const TasmotaCommand[])(void) PROGMEM = {
&CmndSerialDelimiter, &CmndIpAddress, &CmndNtpServer, &CmndAp, &CmndSsid, &CmndPassword, &CmndHostname, &CmndWifiConfig,
&CmndDevicename, &CmndFriendlyname, &CmndSwitchMode, &CmndInterlock, &CmndTeleperiod, &CmndReset, &CmndTime, &CmndTimezone, &CmndTimeStd,
&CmndTimeDst, &CmndAltitude, &CmndLedPower, &CmndLedState, &CmndLedMask, &CmndWifiPower, &CmndTempOffset, &CmndHumOffset,
&CmndSpeedUnit, &CmndGlobalTemp, &CmndGlobalHum, &CmndSetLedPwmOn, &CmndSetLedPwmOff, &CmndSetLedPwmMode,
&CmndSpeedUnit, &CmndGlobalTemp, &CmndGlobalHum, &CmndLedPwmOn, &CmndLedPwmOff, &CmndLedPwmMode,
#ifdef USE_I2C
&CmndI2cScan, CmndI2cDriver,
#endif
@ -1891,37 +1891,39 @@ void CmndDriver(void)
XdrvCall(FUNC_COMMAND_DRIVER);
}
void CmndSetLedPwmOff(void)
void CmndLedPwmOff(void)
{
if (XdrvMailbox.data_len > 0) {
if (XdrvMailbox.payload < 0) {
Settings.ledpwm_off = 0;
} else if (XdrvMailbox.payload > 255) {
Settings.ledpwm_off = 255;
if (XdrvMailbox.payload < 0) {
Settings.ledpwm_off = 0;
}
else if (XdrvMailbox.payload > 255) {
Settings.ledpwm_off = 255;
} else {
Settings.ledpwm_off = XdrvMailbox.payload;
}
UpdateLedPowerAll();
UpdateLedPowerAll();
}
ResponseCmndNumber(Settings.ledpwm_off);
}
void CmndSetLedPwmOn(void)
void CmndLedPwmOn(void)
{
if (XdrvMailbox.data_len > 0) {
if (XdrvMailbox.payload < 0) {
Settings.ledpwm_on = 0;
} else if (XdrvMailbox.payload > 255) {
Settings.ledpwm_on = 255;
} else {
Settings.ledpwm_on = XdrvMailbox.payload;
Settings.ledpwm_on = 0;
}
UpdateLedPowerAll();
else if (XdrvMailbox.payload > 255) {
Settings.ledpwm_on = 255;
} else {
Settings.ledpwm_on = XdrvMailbox.payload;
}
UpdateLedPowerAll();
}
ResponseCmndNumber(Settings.ledpwm_on);
}
void CmndSetLedPwmMode(void)
void CmndLedPwmMode(void)
{
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_LEDS)) {
if (!PinUsed(GPIO_LEDLNK)) { XdrvMailbox.index = 1; }