diff --git a/sonoff/settings.h b/sonoff/settings.h index c2def2466..835710c63 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -154,11 +154,11 @@ typedef union { typedef union { uint8_t data; struct { - uint8_t pinmode : 3; // Pin mode (1 through 5) + uint8_t pinmode : 3; // Pin mode (1 through 6) uint8_t pullup : 1; // Enable internal weak pull-up resistor uint8_t saved_state : 1; // Save output state, if used. - uint8_t b5 : 1; - uint8_t b6 : 1; + uint8_t int_event_enable : 1; // Enable interrupt to cause immediate event transmit + uint8_t int_tele_enable : 1; // Enable interrupt to cause immediate telemetry transmit uint8_t b7 : 1; }; } Mcp230xxCfg; diff --git a/sonoff/xsns_29_mcp230xx.ino b/sonoff/xsns_29_mcp230xx.ino index 04e61ff58..c6c96f2fe 100644 --- a/sonoff/xsns_29_mcp230xx.ino +++ b/sonoff/xsns_29_mcp230xx.ino @@ -271,14 +271,14 @@ void MCP230xx_SetOutPin(uint8_t pin,uint8_t pinstate) { } } else { portpins &= ~(1 << pin+pinadd-(port*8)),portpins ^= (1 << pin-(port*8)); - } -} else { - if (pinstate < 2) { - if (pinstate) portpins |= (1 << pin-(port*8)); else portpins &= ~(1 << pin-(port*8)); + } + } else { + if (pinstate < 2) { + if (pinstate) portpins |= (1 << pin-(port*8)); else portpins &= ~(1 << pin-(port*8)); } else { - portpins ^= (1 << pin-(port*8)); -} -} + portpins ^= (1 << pin-(port*8)); + } + } I2cWrite8(mcp230xx_address, MCP230xx_GPIO + port, portpins); if (Settings.flag.save_state) { // Firmware configured to save last known state in settings Settings.mcp230xx_config[pin].saved_state=portpins>>(pin-(port*8))&1; @@ -297,8 +297,8 @@ void MCP230xx_Reset(uint8_t pinmode) { Settings.mcp230xx_config[pinx].pinmode=pinmode; Settings.mcp230xx_config[pinx].pullup=pullup; Settings.mcp230xx_config[pinx].saved_state=0; - Settings.mcp230xx_config[pinx].b5=0; - Settings.mcp230xx_config[pinx].b6=0; + Settings.mcp230xx_config[pinx].int_event_enable=0; + Settings.mcp230xx_config[pinx].int_tele_enable=0; Settings.mcp230xx_config[pinx].b7=0; } MCP230xx_ApplySettings();