From 9fa3ec05c29090871d55182a4474b45a25c8900f Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Wed, 29 Jul 2020 21:38:39 +0200 Subject: [PATCH] class --- include/Class/Item.h | 3 ++- include/Class/button.h | 34 ++++++++++++++++++++++++++++++++++ src/Cmd.cpp | 7 ++++++- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 include/Class/button.h diff --git a/include/Class/Item.h b/include/Class/Item.h index 753ef9d5..dce3fe18 100644 --- a/include/Class/Item.h +++ b/include/Class/Item.h @@ -5,7 +5,8 @@ #include "Global.h" class Item { - private: + + protected: String type; String key; String file; diff --git a/include/Class/button.h b/include/Class/button.h new file mode 100644 index 00000000..6d806754 --- /dev/null +++ b/include/Class/button.h @@ -0,0 +1,34 @@ +#pragma once + +#include + +#include "Class/Item.h" +#include "Global.h" + +class Button : public Item { + public: + + void pinModeSet(int pinf) { + if (pin != "") { + pinMode(pinf, OUTPUT); + } + } + + void pinStateSet(int pinf, int statef) { + if (state != "") { + digitalWrite(pinf, statef); + jsonWriteInt(configLiveJson, key, statef); + MqttClient::publishStatus(key, String(statef)); + } + } + + void pinStateSetInv(int pinf, int statef) { + if (inv != "" && state != "") { + digitalWrite(pinf, !statef); + jsonWriteInt(configLiveJson, key, !statef); + MqttClient::publishStatus(key, String(!statef)); + } + } +}; + +extern Button* myButton; \ No newline at end of file diff --git a/src/Cmd.cpp b/src/Cmd.cpp index e646f2bc..eafbde15 100644 --- a/src/Cmd.cpp +++ b/src/Cmd.cpp @@ -1,6 +1,7 @@ #include "Cmd.h" #include "Class/Item.h" +#include "Class/Button.h" #include "Global.h" #include "Module/Terminal.h" #include "Servo/Servos.h" @@ -112,10 +113,13 @@ void button() { String pin = myItem->gpin(); String inv = myItem->ginv(); String state = myItem->gstate(); - myItem->clear(); + sCmd.addCommand(key.c_str(), buttonSet); + + myItem->pinModeSet(pin.toInt); + if (pin != "") { pinMode(pin.toInt(), OUTPUT); jsonWriteInt(configOptionJson, key + "_pin", pin.toInt()); @@ -132,6 +136,7 @@ void button() { jsonWriteStr(configLiveJson, key, state); MqttClient::publishStatus(key, state); } + myItem->clear(); } void buttonSet() {