forked from dvvrd/car-demo
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCopterMotor.cpp
48 lines (40 loc) · 1.04 KB
/
CopterMotor.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
#include "CopterMotor.hpp"
CopterMotor::CopterMotor(int motorMin, int motorMax, const QString& _ctrlPath, const QString& name) :
m_ctrlFile(_ctrlPath),
m_powerMin(motorMin),
m_powerMax(motorMax),
m_power(0),
m_name(name)
{
invoke(0);
}
void CopterMotor::invoke(int _power)
{
QString s;
m_ctrlFile.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Unbuffered|QIODevice::Text);
float powerFactor = (float)(m_powerMax - m_powerMin) / 100;
s.sprintf("%d\n", static_cast<int>(_power * powerFactor + m_powerMin));
m_ctrlFile.write(s.toLatin1());
m_ctrlFile.close();
}
CopterMotor::~CopterMotor()
{
invoke(0);
}
void CopterMotor::emergencyStop()
{
invoke(0);
}
void CopterMotor::setPower(int power)
{
int powerMin = m_settings->value("PowerMin").toInt();
int powerMax = m_settings->value("PowerMax").toInt();
m_power = power;
m_power = qMax(qMin(m_power, powerMax), powerMin);
emit toLog(m_name + "motor power changed: " + QString::number(m_power));
invoke(m_power);
}
void CopterMotor::adjustPower(int adj)
{
setPower(m_power + adj);
}