diff --git a/src/BufferExecute.cpp b/src/BufferExecute.cpp index e7511293..8e847417 100644 --- a/src/BufferExecute.cpp +++ b/src/BufferExecute.cpp @@ -179,8 +179,8 @@ void csvCmdExecute(String& cmdStr) { if (moduleInfo.key == order) { SerialPrint("I", "Debug moduleInfo.parameters", buf); - if (moduleInfo.type == "Sensor") { - myLineParsing.update(); + if (moduleInfo.type == "Sensor") { + myLineParsing.update(); //v3dev: пока используем мостик для совместимости версий, предполагается, что настройки сразу будут в JSON String interval = myLineParsing.gint(); String pin = myLineParsing.gpin(); String index = myLineParsing.gindex(); diff --git a/src/Modules/Sensors/IoTSensorDallasTemp.cpp b/src/Modules/Sensors/IoTSensorDallasTemp.cpp index 7b4bc8f1..4cf48fcc 100644 --- a/src/Modules/Sensors/IoTSensorDallasTemp.cpp +++ b/src/Modules/Sensors/IoTSensorDallasTemp.cpp @@ -10,7 +10,7 @@ extern std::vector iotModules; //v3dev: вектор ссылок базового класса IoTModule - интерфейсы для общения со всеми поддерживаемыми системой модулями -#define IOTSENSORKEY "dallas-temp" +#define IOTDALLASTEMPKEY "dallas-temp" class IoTSensorDallas: public IoTSensor { private: @@ -26,7 +26,7 @@ class IoTSensorDallas: public IoTSensor { public: //аналог setup() из Arduino IoTSensorDallas(String parameters) { - init(jsonReadInt(parameters, "int"), IOTSENSORKEY); //передаем часть базовых параметров в конструктор базового класса для обеспечения работы его методов + init(jsonReadInt(parameters, "int"), IOTDALLASTEMPKEY); //передаем часть базовых параметров в конструктор базового класса для обеспечения работы его методов _pin = jsonReadInt(parameters, "pin"); _index = jsonReadInt(parameters, "index"); _addr = jsonReadStr(parameters, "addr"); @@ -61,32 +61,18 @@ class IoTSensorDallas: public IoTSensor { } }; - -// void dallas() { -// myLineParsing.update(); -// String interval = myLineParsing.gint(); -// String pin = myLineParsing.gpin(); -// String index = myLineParsing.gindex(); -// String key = myLineParsing.gkey(); -// String addr = myLineParsing.gaddr(); -// myLineParsing.clear(); - -// static bool firstTime = true; -// if (firstTime) mySensorDallas2 = new MySensorDallasVector(); -// firstTime = false; -// } - - +//технический класс для взаимодействия с ядром, меняются только названия class IoTModuleDallasTemp: public IoTModule { + //обязательный метод для инициализации экземпляра датчика, вызывается при чтении конфигурации. Нужно учитывать, что некоторые датчики могут обеспечивать + //несколько измерений, для каждого будет отдельный вызов. void* initInstance(String parameters) { - SerialPrint("I", "Debug", "Вызывается initInstance из IoTModuleDallasTemp"); - return new IoTSensorDallas(parameters); }; + //обязательный метод для отправки информации о модуле, ModuleInfo getInfo() { ModuleInfo MI; - MI.key = IOTSENSORKEY; + MI.key = IOTDALLASTEMPKEY; MI.name = "Датчик температуры Ds18b20"; MI.parameters = "{\"addr\": \"\", \"int\": \"10\", \"pin\": \"18\", \"index\": \"0\"}"; MI.type = "Sensor"; @@ -94,9 +80,8 @@ class IoTModuleDallasTemp: public IoTModule { }; }; - +//точка входа в модуль для заполнения вектора, требуется только изменить имя и прописать в файле api.cpp void getApiIoTSensorDallasTemp() { - SerialPrint("I", "Debug", "call getApiIoTSensorDallasTemp"); iotModules.push_back(new IoTModuleDallasTemp()); return; } \ No newline at end of file diff --git a/src/Modules/api.cpp b/src/Modules/api.cpp index 40f157bb..978f172e 100644 --- a/src/Modules/api.cpp +++ b/src/Modules/api.cpp @@ -1,7 +1,9 @@ #include "Utils/SerialPrint.h" +//объявляем функцию для добавления модуля в вектор void getApiIoTSensorDallasTemp(); -int InitModulesApi() { - SerialPrint("I", "Debug", "call InitModulesApi"); +//формируем вектор модулей путем вызова из каждого модуля специальной функции +//в дальнейшем предполагается отключать вызов, если модуль не участвует в сборке +void InitModulesApi() { getApiIoTSensorDallasTemp(); } \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 71607039..c017cd1c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -43,7 +43,7 @@ std::vector iotModules; //v3dev: вектор ссылок базового класса IoTModule - интерфейсы для общения со всеми поддерживаемыми системой модулями std::vector iotSensors; //v3dev: вектор ссылок базового класса IoTSensor - список всех запущенных сенсоров -int InitModulesApi(); //v3dev: инициализация модуля при первом вызове . +void InitModulesApi(); //v3dev: инициализация модуля при первом вызове . void not_async_actions();