supla-device
Loading...
Searching...
No Matches
internal_pin_output.h
1// SPDX-FileCopyrightText: AC SOFTWARE SP. Z O.O.
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#ifndef SRC_SUPLA_CONTROL_INTERNAL_PIN_OUTPUT_H_
5#define SRC_SUPLA_CONTROL_INTERNAL_PIN_OUTPUT_H_
6
7#include <supla/io.h>
8
9#include "../action_handler.h"
10#include "../element.h"
11#include "../local_action.h"
12#include "output_interface.h"
13
14#define STATE_ON_INIT_OFF 0
15#define STATE_ON_INIT_ON 1
16
17namespace Supla {
18
19namespace Io {
20class Base;
21}
22
23namespace Control {
25 public ActionHandler,
26 public LocalAction,
27 public OutputInterface {
28 public:
29 explicit InternalPinOutput(Supla::Io::IoPin outPin);
30 explicit InternalPinOutput(Supla::Io::IoPin outPin, bool highIsOn);
32 int pin,
33 bool highIsOn = true);
34 explicit InternalPinOutput(int pin, bool highIsOn = true);
35
36 virtual InternalPinOutput &setDefaultStateOn();
37 virtual InternalPinOutput &setDefaultStateOff();
38 virtual InternalPinOutput &setDurationMs(_supla_int_t duration);
39
40 virtual uint8_t pinOnValue();
41 virtual uint8_t pinOffValue();
42 virtual void turnOn(_supla_int_t duration = 0);
43 virtual void turnOff(_supla_int_t duration = 0);
44 virtual bool isOn();
45 virtual void toggle(_supla_int_t duration = 0);
46
47 void handleAction(int event, int action) override;
48
49 void onInit() override;
50 void iterateAlways() override;
51
52 int getOutputValue() const override;
53 void setOutputValue(int value) override;
54 bool isOnOffOnly() const override;
55
56 protected:
57 Supla::Io::IoPin outPin;
58 int8_t lastOutputValue = 0;
59 int8_t stateOnInit = STATE_ON_INIT_OFF;
60 uint32_t durationMs = 0;
61 uint32_t storedTurnOnDurationMs = 0;
62 uint32_t durationTimestamp = 0;
63};
64
65}; // namespace Control
66}; // namespace Supla
67
68#endif // SRC_SUPLA_CONTROL_INTERNAL_PIN_OUTPUT_H_
Definition action_handler.h:8
Definition internal_pin_output.h:27
void onInit() override
Third method called on element in SuplaDevice.begin()
Definition internal_pin_output.cpp:106
void iterateAlways() override
Method called on each SuplaDevice iteration.
Definition internal_pin_output.cpp:122
Definition output_interface.h:11
Base class for all elements of SuplaDevice.
Definition element.h:27
Definition io.h:23
Definition local_action.h:42
Definition io_pin.h:14