-
Notifications
You must be signed in to change notification settings - Fork 0
/
isolatedBox_actuator.cpp
155 lines (134 loc) · 3.58 KB
/
isolatedBox_actuator.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*****************************************************************//**
* \file isolatedBox_actuator.cpp
* \brief: Class to manage a generic PWM
* for PID actuation
* This class is merely a "template" framework class
*
* \author F.Morani
* \date May 2023
***********************************************************************/
#include "isolatedBox_actuator.h"
#ifdef ISO_PRINT_DEBUG
#include "isolatedBox_printdebug.h"
#endif // ISO_PRINT_DEBUG
#include <cstdio>
IsoActuator::IsoActuator()
{
#ifdef ISO_PRINT_DEBUG
ISO_printDebug::printDebug("Initializing PWM Controller");
#endif // ISO_PRINT_DEBUG
m_pwmState = DISABLED;
m_dutyCycle = 0;
m_frequency = 0;
m_intensity = 0;
}
IsoActuator::~IsoActuator() {}
bool IsoActuator::init()
{
bool success = false;
/// <summary>
/// Pseudo Code
/// Create s/w Driver for PWM device
/// bool pwmCreate(PWM_IO _io, float _initValue, int _range);
/// Apply defualt value for duty cycle and frequency
/// </summary>
/// <returns></returns>
if ((setFrequency(ISO_PWM_FREQUENCY_DEF) == true) &&
(setDutyCycle(ISO_PWM_DUTY_CYCLE_DEF) == true)) {
m_pwmState = ENABLED;
m_dutyCycle = 0;
m_frequency = 0;
m_intensity = 0;
/// bool pwmWrite(PWM_IO _io, float _intensity); /// m_intensity
success = true;
}
return success;
}
void IsoActuator::operator!() { m_pwmState = DISABLED; }
void IsoActuator::operator++()
{
if (m_intensity < ISO_PWM_INTENSITY_MAX_VALUE)
{
++m_intensity;
/// <summary>
/// Apply intensity
/// bool pwmWrite(PWM_IO _io, float _intensity); /// m_intensity
/// </summary>
}
}
void IsoActuator::operator+=(const uint8_t value)
{
if (m_intensity + value <= ISO_PWM_INTENSITY_MAX_VALUE)
{
m_intensity += value;
/// <summary>
/// Apply intensity
/// bool pwmWrite(PWM_IO _io, float _intensity); /// m_intensity
/// </summary>
}
}
void IsoActuator::operator--()
{
if (m_intensity > 0)
{
--m_intensity;
/// <summary>
/// Apply intensity
/// bool pwmWrite(PWM_IO _io, float _intensity); /// m_intensity
/// </summary>
}
}
void IsoActuator::operator-=(const uint8_t value)
{
if (m_intensity > 0)
{
m_intensity -= value;
/// <summary>
/// Apply intensity
/// bool pwmWrite(PWM_IO _io, float _intensity); /// m_intensity
/// </summary>
}
}
bool IsoActuator::setIntensity(const uint8_t value)
{
if (value <= ISO_PWM_INTENSITY_MAX_VALUE && value >= 0)
{
m_intensity = value;
/// <summary>
/// Apply intensity
/// bool pwmWrite(PWM_IO _io, float _intensity); /// m_intensity
/// </summary>
/// return true;
}
else return false;
}
uint8_t IsoActuator::getIntensity() const { return m_intensity; }
bool IsoActuator::setFrequency(const uint32_t value)
{
if (value < ISO_PWM_FREQUENCY_MAX && value > ISO_PWM_FREQUENCY_MIN)
{
m_frequency = value;
return true;
}
else
{
return false;
}
}
uint32_t IsoActuator::getFrequency() const { return m_frequency; }
bool IsoActuator::setDutyCycle(const uint8_t value)
{
if (value < ISO_PWM_DUTY_CYCLE_MAX && value > ISO_PWM_DUTY_CYCLE_MIN)
{
m_dutyCycle = value;
return true;
}
else {
return false;
}
}
uint8_t IsoActuator::getDutyCycle() const { return m_dutyCycle; }
EquipmentState IsoActuator::getPwmState()
{
return m_pwmState;
}