AntiMicroX
haptictriggerps5.h
Go to the documentation of this file.
1 /* antimicrox Gamepad to KB+M event mapper
2  * Copyright (C) 2022 Max Maisel <max.maisel@posteo.de>
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8 
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13 
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 #pragma once
18 
19 #include <QObject>
20 #include <QString>
21 #include <SDL2/SDL_gamecontroller.h>
22 #include <stdint.h>
23 
24 #include "haptictriggermodeps5.h"
25 
26 struct TriggerEffectMsgPs5;
27 
33 class HapticTriggerPs5 : QObject
34 {
35  public:
36  explicit HapticTriggerPs5(QObject *parent, HapticTriggerModePs5 mode = HAPTIC_TRIGGER_NONE, int strength = 0,
37  int start = 0, int end = 0, int frequency = 0);
38 
41  bool set_effect(int strength, int start, int end, int frequency = 0);
42 
43  static void send(SDL_GameController *controller, const HapticTriggerPs5 &left, const HapticTriggerPs5 &right);
44  static HapticTriggerModePs5 from_string(const QString &mode);
45  static QString to_string(HapticTriggerModePs5 mode);
46 
47  private:
48  enum
49  {
55 
59  };
60 
66  enum
67  {
72  };
73 
76  int m_start;
77  int m_end;
79 
80  void to_message(TriggerEffectMsgPs5 &effect) const;
81 };
HapticTriggerPs5::HapticTriggerPs5
HapticTriggerPs5(QObject *parent, HapticTriggerModePs5 mode=HAPTIC_TRIGGER_NONE, int strength=0, int start=0, int end=0, int frequency=0)
Definition: haptictriggerps5.cpp:229
HapticTriggerPs5::EFFECT_MODE_VIBRATION
@ EFFECT_MODE_VIBRATION
Definition: haptictriggerps5.h:71
HapticTriggerPs5::m_frequency
int m_frequency
Definition: haptictriggerps5.h:78
EffectMessagePs5::led_green
u8 led_green
Definition: haptictriggerps5.cpp:224
EffectMessagePs5::speaker_volume
u8 speaker_volume
Definition: haptictriggerps5.cpp:210
haptictriggermodeps5.h
EffectMessagePs5::enable_bits
u16 enable_bits
Definition: haptictriggerps5.cpp:206
HapticTriggerPs5::MICROPHONE_LIGHT_SOLID
@ MICROPHONE_LIGHT_SOLID
Definition: haptictriggerps5.h:57
HapticTriggerPs5::m_end
int m_end
Definition: haptictriggerps5.h:77
EffectRigidPs5::build_gradient
void build_gradient(int strength)
Builds a rigid gradient effect message. This effect starts with a strength of zero and slowly increas...
Definition: haptictriggerps5.cpp:92
EffectVibrationPs5
Effect message for a vibration trigger effect.
Definition: haptictriggerps5.cpp:147
EffectMessagePs5::headphone_volume
u8 headphone_volume
Definition: haptictriggerps5.cpp:209
EffectMessagePs5::audio_enable_bits
u8 audio_enable_bits
Definition: haptictriggerps5.cpp:212
HapticTriggerPs5::from_string
static HapticTriggerModePs5 from_string(const QString &mode)
Converts a HapticTriggerModePs5 from string representation.
Definition: haptictriggerps5.cpp:336
TriggerEffectMsgPs5::vibration
EffectVibrationPs5 vibration
Definition: haptictriggerps5.cpp:197
HAPTIC_TRIGGER_CLICK
@ HAPTIC_TRIGGER_CLICK
Definition: haptictriggermodeps5.h:25
EffectRigidPs5::build
void build(int strength)
Builds a rigid effect message.
Definition: haptictriggerps5.cpp:75
HapticTriggerPs5::m_start
int m_start
Definition: haptictriggerps5.h:76
EffectMessagePs5::left_trigger_effect
TriggerEffectMsgPs5 left_trigger_effect
Definition: haptictriggerps5.cpp:216
HapticTriggerPs5::EFFECT_LEFT_EN
@ EFFECT_LEFT_EN
Definition: haptictriggerps5.h:50
EffectMessagePs5::mic_light_mode
u8 mic_light_mode
Definition: haptictriggerps5.cpp:213
TriggerEffectMsgPs5::mode
u8 mode
Definition: haptictriggerps5.cpp:191
EffectMessagePs5::rumble_left
u8 rumble_left
Definition: haptictriggerps5.cpp:208
EffectVibrationPs5::frequency
u8 frequency
Frequeny in Hz.
Definition: haptictriggerps5.cpp:157
HapticTriggerPs5::to_string
static QString to_string(HapticTriggerModePs5 mode)
Returns string representation of a HapticTriggerModePs5 object.
Definition: haptictriggerps5.cpp:361
HapticTriggerPs5::m_strength
int m_strength
Definition: haptictriggerps5.h:75
EffectMessagePs5::led_bBlue
u8 led_bBlue
Definition: haptictriggerps5.cpp:225
HapticTriggerPs5::EFFECT_MODE_NONE
@ EFFECT_MODE_NONE
Definition: haptictriggerps5.h:68
EffectMessagePs5::microphone_volume
u8 microphone_volume
Definition: haptictriggerps5.cpp:211
TriggerEffectMsgPs5::none
EffectNonePs5 none
Definition: haptictriggerps5.cpp:194
EffectMessagePs5::_reserved1
u8 _reserved1[6]
Definition: haptictriggerps5.cpp:217
HapticTriggerPs5::send
static void send(SDL_GameController *controller, const HapticTriggerPs5 &left, const HapticTriggerPs5 &right)
Creates an low level message from two HapticTriggerPs5 objects and send them to the controller.
Definition: haptictriggerps5.cpp:287
HapticTriggerPs5::EFFECT_MODE_CLICK
@ EFFECT_MODE_CLICK
Definition: haptictriggerps5.h:69
EffectClickPs5::start_stop_zone
u16 start_stop_zone
Definition: haptictriggerps5.cpp:117
EffectRigidPs5::force_zones
u32 force_zones
Definition: haptictriggerps5.cpp:68
HapticTriggerPs5::MICROPHONE_LIGHT_PULSE
@ MICROPHONE_LIGHT_PULSE
Definition: haptictriggerps5.h:58
EffectVibrationPs5::_padding1
u16 _padding1
Definition: haptictriggerps5.cpp:155
TriggerEffectMsgPs5::click
EffectClickPs5 click
Definition: haptictriggerps5.cpp:196
haptictriggerps5.h
HapticTriggerPs5::MICROPHONE_LIGHT_OFF
@ MICROPHONE_LIGHT_OFF
Definition: haptictriggerps5.h:56
EffectMessagePs5::led_red
u8 led_red
Definition: haptictriggerps5.cpp:223
EffectNonePs5
Effect message for no trigger effect.
Definition: haptictriggerps5.cpp:51
EffectMessagePs5::_reverved2
u8 _reverved2[2]
Definition: haptictriggerps5.cpp:219
u16tole
constexpr u16 u16tole(u16 x)
Definition: haptictriggerps5.cpp:26
TriggerEffectMsgPs5
Effect message for a single trigger.
Definition: haptictriggerps5.cpp:189
HapticTriggerPs5::to_message
void to_message(TriggerEffectMsgPs5 &effect) const
Low level function to write one HapticTriggerPs5 effect into a PS5 controller message.
Definition: haptictriggerps5.cpp:306
EffectVibrationPs5::active_zones
u16 active_zones
Definition: haptictriggerps5.cpp:151
EffectRigidPs5::_padding
u32 _padding
Definition: haptictriggerps5.cpp:69
HAPTIC_TRIGGER_RIGID
@ HAPTIC_TRIGGER_RIGID
Definition: haptictriggermodeps5.h:26
HAPTIC_TRIGGER_RIGID_GRADIENT
@ HAPTIC_TRIGGER_RIGID_GRADIENT
Definition: haptictriggermodeps5.h:27
u32tole
constexpr u32 u32tole(u32 x)
Definition: haptictriggerps5.cpp:37
HapticTriggerPs5::MICROPHONE_LIGHT_EN
@ MICROPHONE_LIGHT_EN
Definition: haptictriggerps5.h:54
EffectVibrationPs5::build
void build(int start, int end, int strength, int freq)
Builds a vibration effect message.
Definition: haptictriggerps5.cpp:169
EffectRigidPs5::active_zones
u16 active_zones
Definition: haptictriggerps5.cpp:65
EffectMessagePs5::led_flags
u8 led_flags
Definition: haptictriggerps5.cpp:218
EffectClickPs5
Effect message for a click trigger effect.
Definition: haptictriggerps5.cpp:113
HAPTIC_TRIGGER_NONE
@ HAPTIC_TRIGGER_NONE
Definition: haptictriggermodeps5.h:24
HapticTriggerPs5::LEGACY_RUMBLE_LEFT_EN
@ LEGACY_RUMBLE_LEFT_EN
Definition: haptictriggerps5.h:52
HapticTriggerModePs5
HapticTriggerModePs5
Enum of the supported haptic trigger effect for a PS5 controller.
Definition: haptictriggermodeps5.h:22
EffectMessagePs5::pad_lights
u8 pad_lights
Definition: haptictriggerps5.cpp:222
EffectNonePs5::_padding
u8 _padding[10]
Definition: haptictriggerps5.cpp:53
u8
uint8_t u8
Definition: haptictriggerps5.cpp:22
EffectMessagePs5::audio_mute_bits
u8 audio_mute_bits
Definition: haptictriggerps5.cpp:214
EffectNonePs5::build
void build()
Definition: haptictriggerps5.cpp:55
u16
uint16_t u16
Definition: haptictriggerps5.cpp:23
EffectClickPs5::_padding
u8 _padding[7]
Definition: haptictriggerps5.cpp:120
EffectClickPs5::build
void build(int start, int end, int strength)
Builds a click effect message.
Definition: haptictriggerps5.cpp:133
EffectMessagePs5::led_animation
u8 led_animation
Definition: haptictriggerps5.cpp:220
EffectVibrationPs5::_padding2
u8 _padding2
Definition: haptictriggerps5.cpp:158
HapticTriggerPs5::set_effect
bool set_effect(int strength, int start, int end, int frequency=0)
Changes the haptic feedback effect.
Definition: haptictriggerps5.cpp:265
EffectClickPs5::force
u8 force
Strength of the feedback force. Value between 0 and 7.
Definition: haptictriggerps5.cpp:119
HapticTriggerPs5::get_mode
HapticTriggerModePs5 get_mode() const
Returns the current haptic feedback effect mode.
Definition: haptictriggerps5.cpp:243
HapticTriggerPs5::LEGACY_RUMBLE_RIGHT_EN
@ LEGACY_RUMBLE_RIGHT_EN
Definition: haptictriggerps5.h:53
HapticTriggerPs5::EFFECT_RIGHT_EN
@ EFFECT_RIGHT_EN
Definition: haptictriggerps5.h:51
TriggerEffectMsgPs5::rigid
EffectRigidPs5 rigid
Definition: haptictriggerps5.cpp:195
EffectMessagePs5
Binary representation of a PS5 controller haptic feedback message.
Definition: haptictriggerps5.cpp:204
HapticTriggerPs5::m_mode
HapticTriggerModePs5 m_mode
Definition: haptictriggerps5.h:74
EffectRigidPs5
Effect message for a rigid trigger effect.
Definition: haptictriggerps5.cpp:61
HapticTriggerPs5::set_effect_mode
bool set_effect_mode(HapticTriggerModePs5 mode)
Changes the haptic feedback mode to the given type.
Definition: haptictriggerps5.cpp:250
HAPTIC_TRIGGER_VIBRATION
@ HAPTIC_TRIGGER_VIBRATION
Definition: haptictriggermodeps5.h:28
EffectVibrationPs5::amplitude_zones
u32 amplitude_zones
Definition: haptictriggerps5.cpp:154
HapticTriggerPs5
Represents a single haptic trigger effect on a PS5 controller. See https://gist.github....
Definition: haptictriggerps5.h:33
EffectMessagePs5::led_brightness
u8 led_brightness
Definition: haptictriggerps5.cpp:221
u32
uint32_t u32
Definition: haptictriggerps5.cpp:24
EffectMessagePs5::rumble_right
u8 rumble_right
Definition: haptictriggerps5.cpp:207
EffectMessagePs5::right_trigger_effect
TriggerEffectMsgPs5 right_trigger_effect
Definition: haptictriggerps5.cpp:215
HapticTriggerPs5::EFFECT_MODE_RIGID
@ EFFECT_MODE_RIGID
Definition: haptictriggerps5.h:70