supla-device
Toggle main menu visibility
Loading...
Searching...
No Matches
src
supla
io.h
1
/*
2
Copyright (C) AC SOFTWARE SP. Z O.O.
3
4
This program is free software; you can redistribute it and/or
5
modify it under the terms of the GNU General Public License
6
as published by the Free Software Foundation; either version 2
7
of the License, or (at your option) any later version.
8
This program is distributed in the hope that it will be useful,
9
but WITHOUT ANY WARRANTY; without even the implied warranty of
10
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
GNU General Public License for more details.
12
You should have received a copy of the GNU General Public License
13
along with this program; if not, write to the Free Software
14
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
15
*/
16
17
#ifndef SRC_SUPLA_IO_H_
18
#define SRC_SUPLA_IO_H_
19
20
#include <stdint.h>
21
22
#include "definitions.h"
23
#include "io/io_pin.h"
24
25
namespace
Supla {
26
// This class can be used to override digitalRead and digitalWrite methods.
27
// If you want to add custom behavior i.e. during read/write from some
28
// digital pin, you can inherit from Supla::Io::Base class, implement your
29
// own customDigitalRead and customDigitalWrite methods and create instance
30
// of this class. It will automatically register and SuplaDevice will use it.
31
//
32
// Example use: implement some additional logic, when relay state is
33
// changed.
34
namespace
Io {
35
36
class
Base {
37
public
:
38
Base();
39
virtual
~Base();
40
virtual
bool
isReady()
const
;
41
42
virtual
void
customPinMode(
int
channelNumber, uint8_t pin, uint8_t mode);
43
virtual
int
customDigitalRead(
int
channelNumber, uint8_t pin);
44
virtual
unsigned
int
customPulseIn(
int
channelNumber,
45
uint8_t pin,
46
uint8_t value,
47
uint64_t timeoutMicro);
48
virtual
void
customDigitalWrite(
int
channelNumber, uint8_t pin, uint8_t val);
49
virtual
void
customAnalogWrite(
int
channelNumber, uint8_t pin,
int
val);
50
virtual
void
customSetPwmResolutionBits(uint8_t pin,
51
uint8_t resolutionBits);
52
virtual
void
customConfigureAnalogOutput(
int
channelNumber,
53
uint8_t pin,
54
bool
outputInvert =
false
);
55
virtual
void
customSetPwmFrequency(uint16_t pwmFrequency);
56
virtual
uint8_t customDefaultPwmResolutionBits(uint8_t pin)
const
;
57
virtual
bool
customCanSetPwmResolutionBits(uint8_t pin)
const
;
58
virtual
uint8_t customPwmResolutionBits(uint8_t pin)
const
;
59
virtual
uint32_t customPwmMaxValue(uint8_t pin)
const
;
60
virtual
uint16_t customPwmFrequency()
const
;
61
virtual
int
customAnalogRead(
int
channelNumber, uint8_t pin);
62
virtual
void
customAttachInterrupt(uint8_t pin,
void
(*func)(
void
),
int
mode);
63
virtual
void
customDetachInterrupt(uint8_t pin);
64
virtual
uint8_t customPinToInterrupt(uint8_t pin);
65
66
private
:
67
mutable
uint8_t pwmResolutionBitsValue;
68
mutable
uint16_t pwmFrequencyHzValue;
69
};
70
71
void
pinMode(uint8_t pin, uint8_t mode,
Supla::Io::Base
*io =
nullptr
);
72
int
digitalRead(uint8_t pin,
Supla::Io::Base
*io =
nullptr
);
73
void
digitalWrite(uint8_t pin,
74
uint8_t val,
75
Supla::Io::Base
*io =
nullptr
);
76
void
analogWrite(uint8_t pin,
77
int
value,
78
Supla::Io::Base
*io =
nullptr
);
79
int
analogRead(uint8_t pin,
Supla::Io::Base
*io =
nullptr
);
80
unsigned
int
pulseIn(uint8_t pin,
81
uint8_t value,
82
uint64_t timeoutMicro,
83
Supla::Io::Base
*io =
nullptr
);
84
85
void
pinMode(
int
channelNumber,
86
uint8_t pin,
87
uint8_t mode,
88
Supla::Io::Base
*io =
nullptr
);
89
int
digitalRead(
int
channelNumber,
90
uint8_t pin,
91
Supla::Io::Base
*io =
nullptr
);
92
void
digitalWrite(
int
channelNumber,
93
uint8_t pin,
94
uint8_t val,
95
Supla::Io::Base
*io =
nullptr
);
96
void
analogWrite(
int
channelNumber,
97
uint8_t pin,
98
int
value,
99
Supla::Io::Base
*io =
nullptr
);
100
int
analogRead(
int
channelNumber,
101
uint8_t pin,
102
Supla::Io::Base
*io =
nullptr
);
103
unsigned
int
pulseIn(
int
channelNumber,
104
uint8_t pin,
105
uint8_t value,
106
uint64_t timeoutMicro,
107
Supla::Io::Base
*io =
nullptr
);
108
109
void
attachInterrupt(uint8_t pin,
110
void
(*func)(
void
),
111
int
mode,
112
Io::Base
*io =
nullptr
);
113
void
detachInterrupt(uint8_t pin,
Io::Base
*io =
nullptr
);
114
uint8_t pinToInterrupt(uint8_t pin,
Io::Base
*io =
nullptr
);
115
116
void
setPwmFrequency(uint8_t pin,
117
uint16_t pwmFrequency,
118
Io::Base
*io =
nullptr
);
119
void
setPwmResolutionBits(uint8_t pin,
120
uint8_t resolutionBits,
121
Io::Base
*io =
nullptr
);
122
uint8_t defaultPwmResolutionBits(uint8_t pin,
Io::Base
*io =
nullptr
);
123
bool
canSetPwmResolutionBits(uint8_t pin,
Io::Base
*io =
nullptr
);
124
uint8_t pwmResolutionBits(uint8_t pin,
Io::Base
*io =
nullptr
);
125
uint32_t pwmMaxValue(uint8_t pin,
Io::Base
*io =
nullptr
);
126
uint8_t pwmResolutionBits(
Io::Base
*io =
nullptr
);
127
uint32_t pwmMaxValue(
Io::Base
*io =
nullptr
);
128
uint16_t pwmFrequency(
Io::Base
*io =
nullptr
);
129
}
// namespace Io
130
};
// namespace Supla
131
132
#endif
// SRC_SUPLA_IO_H_
Supla::Io::Base
Definition
io.h:36
Generated by
1.17.0