AntiMicroX
joyaccelerometersensor.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 
18 #pragma once
19 
20 #include "joysensor.h"
21 
22 class SetJoystick;
23 
28 {
29  public:
30  explicit JoyAccelerometerSensor(double rate, int originset, SetJoystick *parent_set, QObject *parent);
31  virtual ~JoyAccelerometerSensor();
32 
33  virtual float getXCoordinate() const override;
34  virtual float getYCoordinate() const override;
35  virtual float getZCoordinate() const override;
36  virtual QString sensorTypeName() const override;
37 
38  virtual void getCalibration(double *offsetX, double *offsetY, double *offsetZ) const override;
39  virtual void setCalibration(double offsetX, double offsetY, double offsetZ) override;
40 
41  public slots:
42  virtual void reset() override;
43 
44  protected:
45  static const double SHOCK_DETECT_THRESHOLD;
46  static const double SHOCK_SUPPRESS_FACTOR;
47  static const double SHOCK_TAU;
48 
49  virtual void populateButtons() override;
51  virtual void applyCalibration() override;
52 
53  double m_rate;
56  double m_calibration_matrix[3][3];
57 };
JoySensor::m_pending_value
float m_pending_value[3]
Definition: joysensor.h:146
JoyAccelerometerSensor::reset
virtual void reset() override
Resets internal variables back to default.
Definition: joyaccelerometersensor.cpp:113
JoyAccelerometerSensor::getXCoordinate
virtual float getXCoordinate() const override
Get the value for the corresponding X axis.
Definition: joyaccelerometersensor.cpp:45
JoyAccelerometerSensor::populateButtons
virtual void populateButtons() override
Initializes the JoySensorButton objects for this sensor.
Definition: joyaccelerometersensor.cpp:125
joyaccelerometerbutton.h
globalvariables.h
joysensor.h
JoyAccelerometerSensor::SHOCK_SUPPRESS_FACTOR
static const double SHOCK_SUPPRESS_FACTOR
Definition: joyaccelerometersensor.h:46
JoyAccelerometerSensor::sensorTypeName
virtual QString sensorTypeName() const override
Get the translated sensor type name.
Definition: joyaccelerometersensor.cpp:63
JoySensor::m_calibrated
bool m_calibrated
Definition: joysensor.h:147
JoyAccelerometerSensor::getYCoordinate
virtual float getYCoordinate() const override
Get the value for the corresponding Y axis.
Definition: joyaccelerometersensor.cpp:51
SetJoystick
A set of mapped events which can by switched by a controller event. Contains controller input objects...
Definition: setjoystick.h:39
JoySensor::m_dead_zone
double m_dead_zone
Definition: joysensor.h:136
JoySensor::calculatePitch
double calculatePitch() const
Calculate the pitch angle (in degrees) corresponding to the current position of controller.
Definition: joysensor.cpp:425
PT1Filter::process
double process(double value)
Processes a new sample.
Definition: pt1filter.cpp:36
SENSOR_LEFT
@ SENSOR_LEFT
Definition: joysensordirection.h:30
JoyAccelerometerSensor::SHOCK_DETECT_THRESHOLD
static const double SHOCK_DETECT_THRESHOLD
Definition: joyaccelerometersensor.h:45
JoySensor::m_calibration_value
double m_calibration_value[3]
Definition: joysensor.h:148
JoyAccelerometerSensor::applyCalibration
virtual void applyCalibration() override
Applies calibration to queued input values.
Definition: joyaccelerometersensor.cpp:222
JoySensor::reset
virtual void reset()
Resets internal variables back to default.
Definition: joysensor.cpp:578
PT1Filter::reset
void reset()
Resets the filter state to default.
Definition: pt1filter.cpp:45
SENSOR_CENTERED
@ SENSOR_CENTERED
Definition: joysensordirection.h:29
JoyAccelerometerSensor::m_rate
double m_rate
Definition: joyaccelerometersensor.h:53
SENSOR_LEFT_UP
@ SENSOR_LEFT_UP
Definition: joysensordirection.h:37
joyaccelerometersensor.h
JoySensor::m_max_zone
double m_max_zone
Definition: joysensor.h:138
JoyAccelerometerSensor::getCalibration
virtual void getCalibration(double *offsetX, double *offsetY, double *offsetZ) const override
Reads the calibration values of the sensor.
Definition: joyaccelerometersensor.cpp:71
JoySensor::calculateRoll
double calculateRoll() const
Calculate the roll angle (in degrees) corresponding to the current position of controller.
Definition: joysensor.cpp:455
JoyAccelerometerSensor::JoyAccelerometerSensor
JoyAccelerometerSensor(double rate, int originset, SetJoystick *parent_set, QObject *parent)
Definition: joyaccelerometersensor.cpp:30
JoyAccelerometerSensor::~JoyAccelerometerSensor
virtual ~JoyAccelerometerSensor()
Definition: joyaccelerometersensor.cpp:39
SENSOR_DOWN
@ SENSOR_DOWN
Definition: joysensordirection.h:33
JoyAccelerometerSensor::getZCoordinate
virtual float getZCoordinate() const override
Get the value for the corresponding Z axis.
Definition: joyaccelerometersensor.cpp:57
JoySensorButton
Represents a sensor mapping in a SetJoystick.
Definition: joysensorbutton.h:30
SENSOR_RIGHT_DOWN
@ SENSOR_RIGHT_DOWN
Definition: joysensordirection.h:42
JoyAccelerometerSensor::m_shock_filter
PT1Filter m_shock_filter
Definition: joyaccelerometersensor.h:54
JoyAccelerometerSensor::setCalibration
virtual void setCalibration(double offsetX, double offsetY, double offsetZ) override
Sets the sensor calibration values and sets the calibration flag.
Definition: joyaccelerometersensor.cpp:88
JoySensor::m_originset
int m_originset
Definition: joysensor.h:152
PT1Filter::FALLBACK_RATE
static const double FALLBACK_RATE
Definition: pt1filter.h:38
SENSOR_RIGHT_UP
@ SENSOR_RIGHT_UP
Definition: joysensordirection.h:41
JoyAccelerometerSensor::SHOCK_TAU
static const double SHOCK_TAU
Definition: joyaccelerometersensor.h:47
GlobalVariables::JoySensor::ACCEL_MAX
static const double ACCEL_MAX
Definition: globalvariables.h:230
SENSOR_UP
@ SENSOR_UP
Definition: joysensordirection.h:32
JoySensorDirection
JoySensorDirection
A bitfield style enum which encodes all possible three dimensional sensor directions....
Definition: joysensordirection.h:27
JoyAccelerometerSensor
Represents an accelerometer sensor.
Definition: joyaccelerometersensor.h:27
JoySensor
Represents one sensor in a SetJoystick and its connections to other parts of the application....
Definition: joysensor.h:39
SENSOR_RIGHT
@ SENSOR_RIGHT
Definition: joysensordirection.h:31
PT1Filter
Implementation of a first order lag or PT1 filter. Can be used for example to smooth noisy values a b...
Definition: pt1filter.h:25
SENSOR_LEFT_DOWN
@ SENSOR_LEFT_DOWN
Definition: joysensordirection.h:38
JoySensor::m_buttons
QHash< JoySensorDirection, JoySensorButton * > m_buttons
Definition: joysensor.h:158
JoySensor::m_current_value
float m_current_value[3]
Definition: joysensor.h:145
JoyAccelerometerButton
Represents an accelerometer mapping in a SetJoystick.
Definition: joyaccelerometerbutton.h:24
JoyAccelerometerSensor::m_shock_suppress_count
size_t m_shock_suppress_count
Definition: joyaccelerometersensor.h:55
JoySensor::m_diagonal_range
double m_diagonal_range
Definition: joysensor.h:137
JoyAccelerometerSensor::m_calibration_matrix
double m_calibration_matrix[3][3]
Definition: joyaccelerometersensor.h:56
SENSOR_BWD
@ SENSOR_BWD
Definition: joysensordirection.h:35
JoySensor::getParentSet
SetJoystick * getParentSet() const
Get pointer to the set that a sensor belongs to.
Definition: joysensor.cpp:774
JoySensor::degToRad
static double degToRad(double value)
Utility function which converts a given value from degree to radians.
Definition: joysensor.cpp:524
ACCELEROMETER
@ ACCELEROMETER
Definition: joysensortype.h:25
JoyAccelerometerSensor::calculateSensorDirection
virtual JoySensorDirection calculateSensorDirection() override
Find the direction zone of the current sensor position.
Definition: joyaccelerometersensor.cpp:166