mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 11:59:12 +03:00
Шлифуем клаас прослойку доступа к gpio
This commit is contained in:
@@ -3,23 +3,19 @@
|
|||||||
|
|
||||||
class IoTGpio {
|
class IoTGpio {
|
||||||
public:
|
public:
|
||||||
IoTGpio();
|
IoTGpio(int pins);
|
||||||
~IoTGpio();
|
~IoTGpio();
|
||||||
|
|
||||||
void pinMode(uint8_t pin, uint8_t mode);
|
void pinMode(uint8_t pin, uint8_t mode);
|
||||||
void digitalWrite(uint8_t pin, uint8_t val);
|
void digitalWrite(uint8_t pin, uint8_t val);
|
||||||
int digitalRead(uint8_t pin);
|
int digitalRead(uint8_t pin);
|
||||||
int analogRead(uint8_t pin);
|
int analogRead(uint8_t pin);
|
||||||
void analogReference(uint8_t mode);
|
|
||||||
void analogWrite(uint8_t pin, int val);
|
void analogWrite(uint8_t pin, int val);
|
||||||
void analogWriteFreq(uint32_t freq);
|
|
||||||
void analogWriteRange(uint32_t range);
|
|
||||||
|
|
||||||
|
int pinNums; // база для определения диапазона номеров пинов. pinNums + используемый
|
||||||
void regDriver(IoTGpio* newDriver);
|
void regDriver(IoTGpio* newDriver);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
IoTGpio* _ext1; //ссылка на объект доступа к портам свыше 100
|
IoTGpio* _drivers[5]; //ссылки на объекты доступа к портам более 100, 200, 300, 400. Нулевой элемент используется как маркер - и возвращается nullptr при обращении
|
||||||
IoTGpio* _ext2; //200
|
|
||||||
IoTGpio* _ext3; //300
|
|
||||||
IoTGpio* _ext4; //400
|
|
||||||
};
|
};
|
||||||
@@ -29,7 +29,7 @@ WebSocketsServer standWebSocket = WebSocketsServer(81);
|
|||||||
/*********************************************************************************************************************
|
/*********************************************************************************************************************
|
||||||
***********************************************глобальные переменные**************************************************
|
***********************************************глобальные переменные**************************************************
|
||||||
**********************************************************************************************************************/
|
**********************************************************************************************************************/
|
||||||
IoTGpio IoTgpio = {};
|
IoTGpio IoTgpio(0);
|
||||||
|
|
||||||
String settingsFlashJson = "{}"; //переменная в которой хранятся все настройки, находится в оперативной памяти и синхронизированна с flash памятью
|
String settingsFlashJson = "{}"; //переменная в которой хранятся все настройки, находится в оперативной памяти и синхронизированна с flash памятью
|
||||||
String errorsHeapJson = "{}"; //переменная в которой хранятся все ошибки, находится в оперативной памяти только
|
String errorsHeapJson = "{}"; //переменная в которой хранятся все ошибки, находится в оперативной памяти только
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
#include "classes/IoTGpio.h"
|
#include "classes/IoTGpio.h"
|
||||||
|
|
||||||
|
|
||||||
IoTGpio::IoTGpio(){
|
IoTGpio::IoTGpio(int pins) { // инициируем стартовым числом диапазона доступных пинов для создаваемого экземпляра 0 - системный, далее 100, 200, 300, 400 или иной
|
||||||
_ext1 = _ext2 = _ext3 = _ext4 = nullptr;
|
pinNums = pins;
|
||||||
|
_drivers[0] = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
IoTGpio::~IoTGpio(){
|
IoTGpio::~IoTGpio(){
|
||||||
@@ -11,42 +12,32 @@ IoTGpio::~IoTGpio(){
|
|||||||
|
|
||||||
|
|
||||||
void IoTGpio::pinMode(uint8_t pin, uint8_t mode) {
|
void IoTGpio::pinMode(uint8_t pin, uint8_t mode) {
|
||||||
::pinMode(pin, mode);
|
if (_drivers[pin/100]) _drivers[pin/100]->pinMode(pin, mode);
|
||||||
|
else ::pinMode(pin, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IoTGpio::digitalWrite(uint8_t pin, uint8_t val) {
|
void IoTGpio::digitalWrite(uint8_t pin, uint8_t val) {
|
||||||
::digitalWrite(pin, val);
|
if (_drivers[pin/100]) _drivers[pin/100]->digitalWrite(pin, val);
|
||||||
|
else ::digitalWrite(pin, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
int IoTGpio::digitalRead(uint8_t pin) {
|
int IoTGpio::digitalRead(uint8_t pin) {
|
||||||
return ::digitalRead(pin);
|
if (_drivers[pin/100]) return _drivers[pin/100]->digitalRead(pin);
|
||||||
|
else return ::digitalRead(pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int IoTGpio::analogRead(uint8_t pin) {
|
int IoTGpio::analogRead(uint8_t pin) {
|
||||||
return ::analogRead(pin);
|
if (_drivers[pin/100]) return _drivers[pin/100]->analogRead(pin);
|
||||||
}
|
else return ::analogRead(pin);
|
||||||
|
|
||||||
void IoTGpio::analogReference(uint8_t mode) {
|
|
||||||
::analogReference(mode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IoTGpio::analogWrite(uint8_t pin, int val) {
|
void IoTGpio::analogWrite(uint8_t pin, int val) {
|
||||||
::analogWrite(pin, val);
|
if (_drivers[pin/100]) _drivers[pin/100]->analogWrite(pin, val);
|
||||||
}
|
else ::analogWrite(pin, val);
|
||||||
|
|
||||||
void IoTGpio::analogWriteFreq(uint32_t freq) {
|
|
||||||
::analogWriteFreq(freq);
|
|
||||||
}
|
|
||||||
|
|
||||||
void IoTGpio::analogWriteRange(uint32_t range) {
|
|
||||||
::analogWriteRange(range);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void IoTGpio::regDriver(IoTGpio* newDriver) {
|
void IoTGpio::regDriver(IoTGpio* newDriver) {
|
||||||
|
_drivers[newDriver->pinNums/100] = newDriver;
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user