-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathlinuxffbrumbleeffect.cpp
More file actions
47 lines (37 loc) · 1.21 KB
/
linuxffbrumbleeffect.cpp
File metadata and controls
47 lines (37 loc) · 1.21 KB
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
#include "linuxffbrumbleeffect.h"
LinuxFFBRumbleEffect::LinuxFFBRumbleEffect() :
LinuxFFBEffect(FFBEffectTypes::RUMBLE)
{
}
struct ff_effect* LinuxFFBRumbleEffect::createFFStruct()
{
struct ff_effect* eff = LinuxFFBEffect::createFFStruct(m_params);
eff->type = FF_RUMBLE;
eff->u.rumble.strong_magnitude = m_params->strongMagnitude;
eff->u.rumble.weak_magnitude = m_params->weakMagnitude;
return eff;
}
bool LinuxFFBRumbleEffect::setParameters(const std::shared_ptr<FFBEffectParameters> params)
{
try {
return setParameters(std::dynamic_pointer_cast<FFBRumbleEffectParameters>(params));
} catch (std::bad_cast& ex) {
reportError("Invalid effect parameters object " + QString(ex.what()));
return false;
}
}
bool LinuxFFBRumbleEffect::setParameters(const std::shared_ptr<FFBRumbleEffectParameters> params)
{
if (!checkGenericParameters(params))
return false;
if (!checkBoundsInclusive(params->strongMagnitude, 0, 0xFFFF)) {
reportError("Strong magnitude must be within <0; 65535>");
return false;
}
if (!checkBoundsInclusive(params->weakMagnitude, 0, 0xFFFF)) {
reportError("Weak magnitude must be within <0; 65535>");
return false;
}
m_params = params;
return true;
}