mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 14:12:16 +03:00
Исправляем баг с работой IoTGpio на индексах 3 и 4
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user