Исправляем баг с работой IoTGpio на индексах 3 и 4

This commit is contained in:
2023-04-30 11:57:01 +03:00
parent 58bba94f01
commit 80b40373dd
5 changed files with 27 additions and 27 deletions

View File

@@ -6,12 +6,12 @@ class IoTGpio {
IoTGpio(int pins); IoTGpio(int pins);
~IoTGpio(); ~IoTGpio();
virtual void pinMode(uint8_t pin, uint8_t mode); virtual void pinMode(int pin, uint8_t mode);
virtual void digitalWrite(uint8_t pin, uint8_t val); virtual void digitalWrite(int pin, uint8_t val);
virtual int digitalRead(uint8_t pin); virtual int digitalRead(int pin);
virtual int analogRead(uint8_t pin); virtual int analogRead(int pin);
virtual void analogWrite(uint8_t pin, int val); virtual void analogWrite(int pin, int val);
virtual void digitalInvert(uint8_t pin); virtual void digitalInvert(int pin);
int index; int index;
void regDriver(IoTGpio* newDriver); void regDriver(IoTGpio* newDriver);

View File

@@ -10,32 +10,32 @@ IoTGpio::~IoTGpio(){
} }
void IoTGpio::pinMode(uint8_t pin, uint8_t mode) { void IoTGpio::pinMode(int pin, uint8_t mode) {
int pinH = pin/100; int pinH = pin/100;
if (_drivers[pinH]) _drivers[pinH]->pinMode(pin - pinH*100, mode); if (_drivers[pinH]) _drivers[pinH]->pinMode(pin - pinH*100, mode);
else ::pinMode(pin, mode); else ::pinMode(pin, mode);
} }
void IoTGpio::digitalWrite(uint8_t pin, uint8_t val) { void IoTGpio::digitalWrite(int pin, uint8_t val) {
int pinH = pin/100; int pinH = pin/100;
if (_drivers[pinH]) _drivers[pinH]->digitalWrite(pin - pinH*100, val); if (_drivers[pinH]) _drivers[pinH]->digitalWrite(pin - pinH*100, val);
else ::digitalWrite(pin, val); else ::digitalWrite(pin, val);
} }
int IoTGpio::digitalRead(uint8_t pin) { int IoTGpio::digitalRead(int pin) {
int pinH = pin/100; int pinH = pin/100;
if (_drivers[pinH]) return _drivers[pinH]->digitalRead(pin - pinH*100); if (_drivers[pinH]) return _drivers[pinH]->digitalRead(pin - pinH*100);
else return ::digitalRead(pin); else return ::digitalRead(pin);
} }
int IoTGpio::analogRead(uint8_t pin) { int IoTGpio::analogRead(int pin) {
int pinH = pin/100; int pinH = pin/100;
if (_drivers[pinH]) return _drivers[pinH]->analogRead(pin - pinH*100); if (_drivers[pinH]) return _drivers[pinH]->analogRead(pin - pinH*100);
else return ::analogRead(pin); else return ::analogRead(pin);
} }
void IoTGpio::analogWrite(uint8_t pin, int val) { void IoTGpio::analogWrite(int pin, int val) {
int pinH = pin/100; int pinH = pin/100;
if (_drivers[pinH]) _drivers[pinH]->analogWrite(pin - pinH*100, val); if (_drivers[pinH]) _drivers[pinH]->analogWrite(pin - pinH*100, val);
else { else {
@@ -48,7 +48,7 @@ void IoTGpio::analogWrite(uint8_t pin, int val) {
} }
} }
void IoTGpio::digitalInvert(uint8_t pin) { void IoTGpio::digitalInvert(int pin) {
int pinH = pin/100; int pinH = pin/100;
if (_drivers[pinH]) _drivers[pinH]->digitalInvert(pin - pinH*100); if (_drivers[pinH]) _drivers[pinH]->digitalInvert(pin - pinH*100);
else ::digitalWrite(pin, 1 - ::digitalRead(pin)); else ::digitalWrite(pin, 1 - ::digitalRead(pin));

View File

@@ -14,19 +14,19 @@ class Mcp23008Driver : public IoTGpio {
} }
} }
void pinMode(uint8_t pin, uint8_t mode) { void pinMode(int pin, uint8_t mode) {
_mcp.pinMode(pin, mode); _mcp.pinMode(pin, mode);
} }
void digitalWrite(uint8_t pin, uint8_t val) { void digitalWrite(int pin, uint8_t val) {
_mcp.digitalWrite(pin, val); _mcp.digitalWrite(pin, val);
} }
int digitalRead(uint8_t pin) { int digitalRead(int pin) {
return _mcp.digitalRead(pin); return _mcp.digitalRead(pin);
} }
void digitalInvert(uint8_t pin) { void digitalInvert(int pin) {
_mcp.digitalWrite(pin, 1 - _mcp.digitalRead(pin)); _mcp.digitalWrite(pin, 1 - _mcp.digitalRead(pin));
} }

View File

@@ -14,19 +14,19 @@ class Mcp23017Driver : public IoTGpio {
} }
} }
void pinMode(uint8_t pin, uint8_t mode) { void pinMode(int pin, uint8_t mode) {
_mcp.pinMode(pin, mode); _mcp.pinMode(pin, mode);
} }
void digitalWrite(uint8_t pin, uint8_t val) { void digitalWrite(int pin, uint8_t val) {
_mcp.digitalWrite(pin, val); _mcp.digitalWrite(pin, val);
} }
int digitalRead(uint8_t pin) { int digitalRead(int pin) {
return _mcp.digitalRead(pin); return _mcp.digitalRead(pin);
} }
void digitalInvert(uint8_t pin) { void digitalInvert(int pin) {
_mcp.digitalWrite(pin, 1 - _mcp.digitalRead(pin)); _mcp.digitalWrite(pin, 1 - _mcp.digitalRead(pin));
} }

View File

@@ -30,7 +30,7 @@ class Adafruit_PCF8574_mod {
return _readbuf; return _readbuf;
} }
bool digitalWrite(uint8_t pinnum, bool val) { bool digitalWrite(int pinnum, bool val) {
if (val) { if (val) {
_writebuf |= 1 << pinnum; _writebuf |= 1 << pinnum;
} else { } else {
@@ -39,7 +39,7 @@ class Adafruit_PCF8574_mod {
return i2c_dev->write(&_writebuf, 1); return i2c_dev->write(&_writebuf, 1);
} }
bool pinMode(uint8_t pinnum, uint8_t val) { bool pinMode(int pinnum, uint8_t val) {
if ((val == INPUT) || (val == INPUT_PULLUP)) { if ((val == INPUT) || (val == INPUT_PULLUP)) {
_writebuf |= 1 << pinnum; _writebuf |= 1 << pinnum;
} else { } else {
@@ -48,7 +48,7 @@ class Adafruit_PCF8574_mod {
return i2c_dev->write(&_writebuf, 1); return i2c_dev->write(&_writebuf, 1);
} }
bool digitalRead(uint8_t pinnum) { bool digitalRead(int pinnum) {
i2c_dev->read(&_readbuf, 1); i2c_dev->read(&_readbuf, 1);
return (_readbuf >> pinnum) & 0x1; return (_readbuf >> pinnum) & 0x1;
} }
@@ -70,19 +70,19 @@ class Pcf8574Driver : public IoTGpio {
} }
} }
void pinMode(uint8_t pin, uint8_t mode) { void pinMode(int pin, uint8_t mode) {
_pcf.pinMode(pin, mode); _pcf.pinMode(pin, mode);
} }
void digitalWrite(uint8_t pin, uint8_t val) { void digitalWrite(int pin, uint8_t val) {
_pcf.digitalWrite(pin, val); _pcf.digitalWrite(pin, val);
} }
int digitalRead(uint8_t pin) { int digitalRead(int pin) {
return _pcf.digitalRead(pin); return _pcf.digitalRead(pin);
} }
void digitalInvert(uint8_t pin) { void digitalInvert(int pin) {
_pcf.digitalWrite(pin, 1 - _pcf.digitalRead(pin)); _pcf.digitalWrite(pin, 1 - _pcf.digitalRead(pin));
} }