Standardize on unconnected pin being -1

This commit is contained in:
Theo Arends 2021-02-14 13:06:19 +01:00
parent 7cb17713d7
commit e6bff6bf9e
20 changed files with 49 additions and 81 deletions

View File

@ -1320,8 +1320,8 @@ void DumpConvertTable(void) {
*/ */
#endif // ESP8266 #endif // ESP8266
uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index = 0); int ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index = 0);
uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index) { int ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index) {
uint16_t real_gpio = gpio << 5; uint16_t real_gpio = gpio << 5;
uint16_t mask = 0xFFE0; uint16_t mask = 0xFFE0;
if (index < GPIO_ANY) { if (index < GPIO_ANY) {
@ -1333,12 +1333,12 @@ uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index) {
return i; // Pin number configured for gpio return i; // Pin number configured for gpio
} }
} }
return 99; // No pin used for gpio return -1; // No pin used for gpio
} }
bool PinUsed(uint32_t gpio, uint32_t index = 0); bool PinUsed(uint32_t gpio, uint32_t index = 0);
bool PinUsed(uint32_t gpio, uint32_t index) { bool PinUsed(uint32_t gpio, uint32_t index) {
return (Pin(gpio, index) < 99); return (Pin(gpio, index) > -1);
} }
uint32_t GetPin(uint32_t lpin) { uint32_t GetPin(uint32_t lpin) {
@ -1569,7 +1569,7 @@ bool ValidSpiPinUsed(uint32_t gpio) {
// ESP8266: If SPI pin selected chk if it's not one of the three Hardware SPI pins (12..14) // ESP8266: If SPI pin selected chk if it's not one of the three Hardware SPI pins (12..14)
bool result = false; bool result = false;
if (PinUsed(gpio)) { if (PinUsed(gpio)) {
uint32_t pin = Pin(gpio); int pin = Pin(gpio);
result = ((pin < 12) || (pin > 14)); result = ((pin < 12) || (pin > 14));
} }
return result; return result;

View File

@ -407,12 +407,12 @@ void SetLedPowerAll(uint32_t state)
void SetLedLink(uint32_t state) void SetLedLink(uint32_t state)
{ {
uint32_t led_pin = Pin(GPIO_LEDLNK); int led_pin = Pin(GPIO_LEDLNK);
uint32_t led_inv = TasmotaGlobal.ledlnk_inverted; uint32_t led_inv = TasmotaGlobal.ledlnk_inverted;
if (99 == led_pin) { // Legacy - LED1 is status if (-1 == led_pin) { // Legacy - LED1 is status
SetLedPowerIdx(0, state); SetLedPowerIdx(0, state);
} }
else if (led_pin < 99) { else if (led_pin > -1) {
if (state) { state = 1; } if (state) { state = 1; }
digitalWrite(led_pin, (led_inv) ? !state : state); digitalWrite(led_pin, (led_inv) ? !state : state);
} }

View File

@ -1516,8 +1516,8 @@ void ZigbeeGlowPermitJoinLight(void) {
} }
// change the led state // change the led state
uint32_t led_pin = Pin(GPIO_LEDLNK); int led_pin = Pin(GPIO_LEDLNK);
if (led_pin < 99) { if (led_pin > -1) {
analogWrite(led_pin, TasmotaGlobal.ledlnk_inverted ? 1023 - led_power : led_power); analogWrite(led_pin, TasmotaGlobal.ledlnk_inverted ? 1023 - led_power : led_power);
} }
} }

View File

@ -54,8 +54,8 @@ struct JAROLIFT_DEVICE {
uint64_t pack = 0; // Contains data to send. uint64_t pack = 0; // Contains data to send.
int count = 0; int count = 0;
uint32_t serial = 0x0; uint32_t serial = 0x0;
uint8_t port_tx; int8_t port_tx;
uint8_t port_rx; int8_t port_rx;
} jaroliftDevice; } jaroliftDevice;
void CmdSet(void) void CmdSet(void)

View File

@ -204,8 +204,8 @@ uint32_t WcSetup(int32_t fsiz) {
config.pin_href = Pin(GPIO_WEBCAM_HREF); // HREF_GPIO_NUM; config.pin_href = Pin(GPIO_WEBCAM_HREF); // HREF_GPIO_NUM;
config.pin_sscb_sda = Pin(GPIO_WEBCAM_SIOD); // SIOD_GPIO_NUM; config.pin_sscb_sda = Pin(GPIO_WEBCAM_SIOD); // SIOD_GPIO_NUM;
config.pin_sscb_scl = Pin(GPIO_WEBCAM_SIOC); // SIOC_GPIO_NUM; config.pin_sscb_scl = Pin(GPIO_WEBCAM_SIOC); // SIOC_GPIO_NUM;
config.pin_pwdn = (PinUsed(GPIO_WEBCAM_PWDN)) ? Pin(GPIO_WEBCAM_PWDN) : -1; // PWDN_GPIO_NUM; config.pin_pwdn = Pin(GPIO_WEBCAM_PWDN); // PWDN_GPIO_NUM;
config.pin_reset = (PinUsed(GPIO_WEBCAM_RESET)) ? Pin(GPIO_WEBCAM_RESET) : -1; // RESET_GPIO_NUM; config.pin_reset = Pin(GPIO_WEBCAM_RESET); // RESET_GPIO_NUM;
AddLog(LOG_LEVEL_DEBUG, PSTR("CAM: User template")); AddLog(LOG_LEVEL_DEBUG, PSTR("CAM: User template"));
} else { } else {

View File

@ -133,7 +133,7 @@ void EthernetInit(void) {
WiFi.onEvent(EthernetEvent); WiFi.onEvent(EthernetEvent);
int eth_power = (PinUsed(GPIO_ETH_PHY_POWER)) ? Pin(GPIO_ETH_PHY_POWER) : -1; int eth_power = Pin(GPIO_ETH_PHY_POWER);
int eth_mdc = Pin(GPIO_ETH_PHY_MDC); int eth_mdc = Pin(GPIO_ETH_PHY_MDC);
int eth_mdio = Pin(GPIO_ETH_PHY_MDIO); int eth_mdio = Pin(GPIO_ETH_PHY_MDIO);
if (!ETH.begin(Settings.eth_address, eth_power, eth_mdc, eth_mdio, (eth_phy_type_t)Settings.eth_type, (eth_clock_mode_t)Settings.eth_clk_mode)) { if (!ETH.begin(Settings.eth_address, eth_power, eth_mdc, eth_mdio, (eth_phy_type_t)Settings.eth_type, (eth_clock_mode_t)Settings.eth_clk_mode)) {

View File

@ -70,11 +70,6 @@ void SSD1306InitDriver(void)
Settings.display_height = 64; Settings.display_height = 64;
} }
uint8_t reset_pin = -1;
if (PinUsed(GPIO_OLED_RESET)) {
reset_pin = Pin(GPIO_OLED_RESET);
}
// allocate screen buffer // allocate screen buffer
if (buffer) { free(buffer); } if (buffer) { free(buffer); }
buffer = (unsigned char*)calloc((Settings.display_width * Settings.display_height) / 8,1); buffer = (unsigned char*)calloc((Settings.display_width * Settings.display_height) / 8,1);
@ -82,8 +77,8 @@ void SSD1306InitDriver(void)
// init renderer // init renderer
// oled1306 = new Adafruit_SSD1306(SSD1306_LCDWIDTH,SSD1306_LCDHEIGHT); // oled1306 = new Adafruit_SSD1306(SSD1306_LCDWIDTH,SSD1306_LCDHEIGHT);
oled1306 = new Adafruit_SSD1306(Settings.display_width, Settings.display_height, &Wire, reset_pin); oled1306 = new Adafruit_SSD1306(Settings.display_width, Settings.display_height, &Wire, Pin(GPIO_OLED_RESET));
oled1306->begin(SSD1306_SWITCHCAPVCC, Settings.display_address[0], reset_pin >= 0); oled1306->begin(SSD1306_SWITCHCAPVCC, Settings.display_address[0], Pin(GPIO_OLED_RESET) >= 0);
renderer = oled1306; renderer = oled1306;
renderer->DisplayInit(DISPLAY_INIT_MODE, Settings.display_size, Settings.display_rotate, Settings.display_font); renderer->DisplayInit(DISPLAY_INIT_MODE, Settings.display_size, Settings.display_rotate, Settings.display_font);
renderer->setTextColor(1,0); renderer->setTextColor(1,0);

View File

@ -70,28 +70,16 @@ void ILI9341_InitDriver()
#else #else
// There are displays without CS // There are displays without CS
int8_t spi_cs_pin = -1;
if (PinUsed(GPIO_ILI9341_CS)) {
spi_cs_pin = Pin(GPIO_ILI9341_CS);
}
int8_t backlight_pin = -1;
if (PinUsed(GPIO_BACKLIGHT)) {
backlight_pin = Pin(GPIO_BACKLIGHT);
}
int8_t oled_reset_pin = -1;
if (PinUsed(GPIO_OLED_RESET)) {
oled_reset_pin = Pin(GPIO_OLED_RESET);
}
// check for special case with 2 SPI busses (ESP32 bitcoin) // check for special case with 2 SPI busses (ESP32 bitcoin)
if (TasmotaGlobal.soft_spi_enabled) { if (TasmotaGlobal.soft_spi_enabled) {
// Init renderer, may use hardware spi, however we use SSPI defintion because SD card uses SPI definition (2 spi busses) // Init renderer, may use hardware spi, however we use SSPI defintion because SD card uses SPI definition (2 spi busses)
if (PinUsed(GPIO_SSPI_MOSI) && PinUsed(GPIO_SSPI_MISO) && PinUsed(GPIO_SSPI_SCLK)) { if (PinUsed(GPIO_SSPI_MOSI) && PinUsed(GPIO_SSPI_MISO) && PinUsed(GPIO_SSPI_SCLK)) {
ili9341_2 = new ILI9341_2(spi_cs_pin, Pin(GPIO_SSPI_MOSI), Pin(GPIO_SSPI_MISO), Pin(GPIO_SSPI_SCLK), oled_reset_pin, Pin(GPIO_ILI9341_DC), backlight_pin, 2); ili9341_2 = new ILI9341_2(Pin(GPIO_ILI9341_CS), Pin(GPIO_SSPI_MOSI), Pin(GPIO_SSPI_MISO), Pin(GPIO_SSPI_SCLK), Pin(GPIO_OLED_RESET), Pin(GPIO_ILI9341_DC), Pin(GPIO_BACKLIGHT), 2);
} }
} else if (TasmotaGlobal.spi_enabled) { } else if (TasmotaGlobal.spi_enabled) {
if (PinUsed(GPIO_ILI9341_DC)) { if (PinUsed(GPIO_ILI9341_DC)) {
ili9341_2 = new ILI9341_2(spi_cs_pin, Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_MISO), Pin(GPIO_SPI_CLK), oled_reset_pin, Pin(GPIO_ILI9341_DC), backlight_pin, 1); ili9341_2 = new ILI9341_2(Pin(GPIO_ILI9341_CS), Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_MISO), Pin(GPIO_SPI_CLK), Pin(GPIO_OLED_RESET), Pin(GPIO_ILI9341_DC), Pin(GPIO_BACKLIGHT), 1);
} }
} }
#endif // USE_M5STACK_CORE2 #endif // USE_M5STACK_CORE2

View File

@ -65,7 +65,7 @@ void ILI9488_InitDriver(void) {
fg_color = ILI9488_WHITE; fg_color = ILI9488_WHITE;
bg_color = ILI9488_BLACK; bg_color = ILI9488_BLACK;
uint8_t bppin = BACKPLANE_PIN; int8_t bppin = BACKPLANE_PIN;
if (PinUsed(GPIO_BACKLIGHT)) { if (PinUsed(GPIO_BACKLIGHT)) {
bppin = Pin(GPIO_BACKLIGHT); bppin = Pin(GPIO_BACKLIGHT);
} }

View File

@ -86,22 +86,12 @@ void ST7789_InitDriver(void) {
bppin = Pin(GPIO_BACKLIGHT); bppin = Pin(GPIO_BACKLIGHT);
} }
int8_t reset = -1;
if (PinUsed(GPIO_OLED_RESET)) {
reset = Pin(GPIO_OLED_RESET);
}
int8_t cs = -1;
if (PinUsed(GPIO_ST7789_CS)) {
cs = Pin(GPIO_ST7789_CS);
}
// init renderer, may use hardware spi // init renderer, may use hardware spi
if (TasmotaGlobal.soft_spi_enabled) { if (TasmotaGlobal.soft_spi_enabled) {
st7789 = new Arduino_ST7789(Pin(GPIO_ST7789_DC), reset, Pin(GPIO_SSPI_MOSI), Pin(GPIO_SSPI_SCLK), cs, bppin); st7789 = new Arduino_ST7789(Pin(GPIO_ST7789_DC), Pin(GPIO_OLED_RESET), Pin(GPIO_SSPI_MOSI), Pin(GPIO_SSPI_SCLK), Pin(GPIO_ST7789_CS), bppin);
} }
else if (TasmotaGlobal.spi_enabled) { else if (TasmotaGlobal.spi_enabled) {
st7789 = new Arduino_ST7789(Pin(GPIO_ST7789_DC), reset, cs, bppin); st7789 = new Arduino_ST7789(Pin(GPIO_ST7789_DC), Pin(GPIO_OLED_RESET), Pin(GPIO_ST7789_CS), bppin);
} }
st7789->init(Settings.display_width,Settings.display_height); st7789->init(Settings.display_width,Settings.display_height);

View File

@ -61,17 +61,12 @@ void SSD1331_InitDriver() {
fg_color = SSD1331_WHITE; fg_color = SSD1331_WHITE;
bg_color = SSD1331_BLACK; bg_color = SSD1331_BLACK;
int8_t reset = -1;
if (PinUsed(GPIO_OLED_RESET)) {
reset = Pin(GPIO_OLED_RESET);
}
// init renderer // init renderer
if (TasmotaGlobal.soft_spi_enabled) { if (TasmotaGlobal.soft_spi_enabled) {
ssd1331 = new Adafruit_SSD1331(Pin(GPIO_SSD1331_CS), Pin(GPIO_SSD1331_DC), Pin(GPIO_SSPI_MOSI), Pin(GPIO_SSPI_SCLK), reset); ssd1331 = new Adafruit_SSD1331(Pin(GPIO_SSD1331_CS), Pin(GPIO_SSD1331_DC), Pin(GPIO_SSPI_MOSI), Pin(GPIO_SSPI_SCLK), Pin(GPIO_OLED_RESET));
} }
else if (TasmotaGlobal.spi_enabled) { else if (TasmotaGlobal.spi_enabled) {
ssd1331 = new Adafruit_SSD1331(&SPI, Pin(GPIO_SSD1331_CS), Pin(GPIO_SSD1331_DC), reset); ssd1331 = new Adafruit_SSD1331(&SPI, Pin(GPIO_SSD1331_CS), Pin(GPIO_SSD1331_DC), Pin(GPIO_OLED_RESET));
} }
delay(100); delay(100);

View File

@ -26,8 +26,8 @@
#define XLGT_02 2 #define XLGT_02 2
struct MY92X1 { struct MY92X1 {
uint8_t pdi_pin = 0; int8_t pdi_pin = 0;
uint8_t pdcki_pin = 0; int8_t pdcki_pin = 0;
uint8_t model = 0; uint8_t model = 0;
} My92x1; } My92x1;

View File

@ -31,9 +31,9 @@
#define D_LOG_SM16716 "SM16716: " #define D_LOG_SM16716 "SM16716: "
struct SM16716 { struct SM16716 {
uint8_t pin_clk = 0; int8_t pin_clk = 0;
uint8_t pin_dat = 0; int8_t pin_dat = 0;
uint8_t pin_sel = 0; int8_t pin_sel = 0;
bool enabled = false; bool enabled = false;
} Sm16716; } Sm16716;
@ -62,7 +62,7 @@ void SM16716_SendByte(uint8_t v)
void SM16716_Update(uint8_t duty_r, uint8_t duty_g, uint8_t duty_b) void SM16716_Update(uint8_t duty_r, uint8_t duty_g, uint8_t duty_b)
{ {
if (Sm16716.pin_sel < 99) { if (Sm16716.pin_sel > -1) {
bool should_enable = (duty_r | duty_g | duty_b); bool should_enable = (duty_r | duty_g | duty_b);
if (!Sm16716.enabled && should_enable) { if (!Sm16716.enabled && should_enable) {
DEBUG_DRIVER_LOG(PSTR(D_LOG_SM16716 "turning color on")); DEBUG_DRIVER_LOG(PSTR(D_LOG_SM16716 "turning color on"));
@ -104,7 +104,7 @@ bool SM16716_ModuleSelected(void)
Sm16716.pin_dat = Pin(GPIO_SM16716_DAT); Sm16716.pin_dat = Pin(GPIO_SM16716_DAT);
Sm16716.pin_sel = Pin(GPIO_SM16716_SEL); Sm16716.pin_sel = Pin(GPIO_SM16716_SEL);
DEBUG_DRIVER_LOG(PSTR(D_LOG_SM16716 "ModuleSelected; clk_pin=%d, dat_pin=%d)"), Sm16716.pin_clk, Sm16716.pin_dat); DEBUG_DRIVER_LOG(PSTR(D_LOG_SM16716 "ModuleSelected; clk_pin=%d, dat_pin=%d)"), Sm16716.pin_clk, Sm16716.pin_dat);
return (Sm16716.pin_clk < 99) && (Sm16716.pin_dat < 99); return (Sm16716.pin_clk > -1) && (Sm16716.pin_dat > -1);
} }
*/ */
@ -165,7 +165,7 @@ void Sm16716ModuleSelected(void)
pinMode(Sm16716.pin_dat, OUTPUT); pinMode(Sm16716.pin_dat, OUTPUT);
digitalWrite(Sm16716.pin_dat, LOW); digitalWrite(Sm16716.pin_dat, LOW);
if (Sm16716.pin_sel < 99) { if (Sm16716.pin_sel > -1) {
pinMode(Sm16716.pin_sel, OUTPUT); pinMode(Sm16716.pin_sel, OUTPUT);
digitalWrite(Sm16716.pin_sel, LOW); digitalWrite(Sm16716.pin_sel, LOW);
// no need to call SM16716_Init here, it will be called after sel goes HIGH // no need to call SM16716_Init here, it will be called after sel goes HIGH

View File

@ -456,12 +456,12 @@ void TInfoInit(void)
} }
if (PinUsed(GPIO_TELEINFO_RX)) { if (PinUsed(GPIO_TELEINFO_RX)) {
uint8_t rx_pin = Pin(GPIO_TELEINFO_RX); int8_t rx_pin = Pin(GPIO_TELEINFO_RX);
AddLog(LOG_LEVEL_INFO, PSTR("TIC: RX on GPIO%d, baudrate %d"), rx_pin, baudrate); AddLog(LOG_LEVEL_INFO, PSTR("TIC: RX on GPIO%d, baudrate %d"), rx_pin, baudrate);
// Enable Teleinfo pin used, control it // Enable Teleinfo pin used, control it
if (PinUsed(GPIO_TELEINFO_ENABLE)) { if (PinUsed(GPIO_TELEINFO_ENABLE)) {
uint8_t en_pin = Pin(GPIO_TELEINFO_ENABLE); int8_t en_pin = Pin(GPIO_TELEINFO_ENABLE);
pinMode(en_pin, OUTPUT); pinMode(en_pin, OUTPUT);
digitalWrite(en_pin, HIGH); digitalWrite(en_pin, HIGH);
AddLog(LOG_LEVEL_INFO, PSTR("TIC: Enable with GPIO%d"), en_pin); AddLog(LOG_LEVEL_INFO, PSTR("TIC: Enable with GPIO%d"), en_pin);

View File

@ -54,8 +54,8 @@ struct DS18X20STRUCT {
float temperature; float temperature;
} ds18x20_sensor[DS18X20_MAX_SENSORS]; } ds18x20_sensor[DS18X20_MAX_SENSORS];
uint8_t ds18x20_sensors = 0; uint8_t ds18x20_sensors = 0;
uint8_t ds18x20_pin = 0; // Shelly GPIO3 input only int8_t ds18x20_pin = 0; // Shelly GPIO3 input only
uint8_t ds18x20_pin_out = 0; // Shelly GPIO00 output only int8_t ds18x20_pin_out = 0; // Shelly GPIO00 output only
bool ds18x20_dual_mode = false; // Single pin mode bool ds18x20_dual_mode = false; // Single pin mode
char ds18x20_types[17]; char ds18x20_types[17];
#ifdef W1_PARASITE_POWER #ifdef W1_PARASITE_POWER

View File

@ -39,7 +39,7 @@ bool dht_active = true; // DHT configured
bool dht_dual_mode = false; // Single pin mode bool dht_dual_mode = false; // Single pin mode
struct DHTSTRUCT { struct DHTSTRUCT {
uint8_t pin; int8_t pin;
uint8_t type; uint8_t type;
uint8_t lastresult; uint8_t lastresult;
char stype[12]; char stype[12];

View File

@ -37,8 +37,8 @@ enum {
SHT1X_CMD_SOFT_RESET = B00011110 SHT1X_CMD_SOFT_RESET = B00011110
}; };
uint8_t sht_sda_pin; int8_t sht_sda_pin;
uint8_t sht_scl_pin; int8_t sht_scl_pin;
uint8_t sht_type = 0; uint8_t sht_type = 0;
char sht_types[] = "SHT1X"; char sht_types[] = "SHT1X";
uint8_t sht_valid = 0; uint8_t sht_valid = 0;

View File

@ -33,9 +33,9 @@
#define TM1638_CLOCK_DELAY 1 // uSec #define TM1638_CLOCK_DELAY 1 // uSec
uint8_t tm1638_type = 1; uint8_t tm1638_type = 1;
uint8_t tm1638_clock_pin = 0; int8_t tm1638_clock_pin = 0;
uint8_t tm1638_data_pin = 0; int8_t tm1638_data_pin = 0;
uint8_t tm1638_strobe_pin = 0; int8_t tm1638_strobe_pin = 0;
uint8_t tm1638_displays = 8; uint8_t tm1638_displays = 8;
uint8_t tm1638_active_display = 1; uint8_t tm1638_active_display = 1;
uint8_t tm1638_intensity = 0; uint8_t tm1638_intensity = 0;

View File

@ -78,8 +78,8 @@ struct HX {
uint8_t calibrate_step = HX_CAL_END; uint8_t calibrate_step = HX_CAL_END;
uint8_t calibrate_timer = 0; uint8_t calibrate_timer = 0;
uint8_t calibrate_msg = 0; uint8_t calibrate_msg = 0;
uint8_t pin_sck; int8_t pin_sck;
uint8_t pin_dout; int8_t pin_dout;
bool tare_flg = false; bool tare_flg = false;
bool weight_changed = false; bool weight_changed = false;
uint16_t weight_delta = 4; uint16_t weight_delta = 4;

View File

@ -39,8 +39,8 @@
#define MGC3130_I2C_ADDR 0x42 #define MGC3130_I2C_ADDR 0x42
uint8_t MGC3130_xfer = 0; int8_t MGC3130_xfer = 0;
uint8_t MGC3130_reset = 0; int8_t MGC3130_reset = 0;
bool MGC3130_type = false; bool MGC3130_type = false;
char MGC3130stype[] = "MGC3130"; char MGC3130stype[] = "MGC3130";