Cheetah Software  1.0
GamepadCommand.h
Go to the documentation of this file.
1 
5 #ifndef PROJECT_GAMEPADCOMMAND_H
6 #define PROJECT_GAMEPADCOMMAND_H
7 
8 #include "Utilities/utilities.h"
9 #include "cppTypes.h"
10 #include "gamepad_lcmt.hpp"
11 
14 
17 
20 
21  void zero() {
22  leftBumper = false;
23  rightBumper = false;
24  leftTriggerButton = false;
25  rightTriggerButton = false;
26  back = false;
27  start = false;
28  a = false;
29  b = false;
30  x = false;
31  y = false;
32  leftStickButton = false;
33  rightStickButton = false;
34 
35  leftTriggerAnalog = 0;
36  rightTriggerAnalog = 0;
37  leftStickAnalog = Vec2<float>::Zero();
38  rightStickAnalog = Vec2<float>::Zero();
39  }
40 
41  void set(const gamepad_lcmt* lcmt) {
42  leftBumper = lcmt->leftBumper;
43  rightBumper = lcmt->rightBumper;
44  leftTriggerButton = lcmt->leftTriggerButton;
45  rightTriggerButton = lcmt->rightTriggerButton;
46  back = lcmt->back;
47  start = lcmt->start;
48  a = lcmt->a;
49  x = lcmt->x;
50  b = lcmt->b;
51  y = lcmt->y;
52  leftStickButton = lcmt->leftStickButton;
53  rightStickButton = lcmt->rightStickButton;
54  leftTriggerAnalog = lcmt->leftTriggerAnalog;
55  rightTriggerAnalog = lcmt->rightTriggerAnalog;
56  for (int i = 0; i < 2; i++) {
57  leftStickAnalog[i] = lcmt->leftStickAnalog[i];
58  rightStickAnalog[i] = lcmt->rightStickAnalog[i];
59  }
60  }
61 
62  void get(gamepad_lcmt* lcmt) {
63  lcmt->leftBumper = leftBumper;
64  lcmt->rightBumper = rightBumper;
65  lcmt->leftTriggerButton = leftTriggerButton;
66  lcmt->rightTriggerButton = rightTriggerButton;
67  lcmt->back = back;
68  lcmt->start = start;
69  lcmt->a = a;
70  lcmt->x = x;
71  lcmt->b = b;
72  lcmt->y = y;
73  lcmt->leftStickButton = leftStickButton;
74  lcmt->rightStickButton = rightStickButton;
75  lcmt->leftTriggerAnalog = leftTriggerAnalog;
76  lcmt->rightTriggerAnalog = rightTriggerAnalog;
77  for (int i = 0; i < 2; i++) {
78  lcmt->leftStickAnalog[i] = leftStickAnalog[i];
79  lcmt->rightStickAnalog[i] = rightStickAnalog[i];
80  }
81  }
82 
87  void applyDeadband(float f) {
88  eigenDeadband(leftStickAnalog, f);
89  eigenDeadband(rightStickAnalog, f);
90  leftTriggerAnalog = deadband(leftTriggerAnalog, f);
91  rightTriggerAnalog = deadband(rightTriggerAnalog, f);
92  }
93 
94  std::string toString() {
95  std::string result =
96  "Result:\nleftBumper: " + boolToString(leftBumper) + "\n" +
97  "rightBumper: " + boolToString(rightBumper) + "\n" +
98  "leftTriggerButton: " + boolToString(leftTriggerButton) + "\n" +
99  "rightTriggerButton: " + boolToString(rightTriggerButton) + "\n" +
100  "back: " + boolToString(back) + "\n" + "start: " + boolToString(start) +
101  "\n" + "a: " + boolToString(a) + "\n" + "b: " + boolToString(b) + "\n" +
102  "x: " + boolToString(x) + "\n" + "y: " + boolToString(y) + "\n" +
103  "leftStickButton: " + boolToString(leftStickButton) + "\n" +
104  "rightStickButton: " + boolToString(rightStickButton) + "\n" +
105  "leftTriggerAnalog: " + std::to_string(leftTriggerAnalog) + "\n" +
106  "rightTriggerAnalog: " + std::to_string(rightTriggerAnalog) + "\n" +
107  "leftStickAnalog: " + eigenToString(leftStickAnalog) + "\n" +
108  "rightStickAnalog: " + eigenToString(rightStickAnalog) + "\n";
109  return result;
110  }
111 };
112 
113 #endif // PROJECT_DRIVERCOMMAND_H
void applyDeadband(float f)
Vec2< float > rightStickAnalog
std::string eigenToString(Eigen::MatrixBase< T > &value)
Definition: utilities.h:148
typename Eigen::Matrix< T, 2, 1 > Vec2
Definition: cppTypes.h:22
Vec2< float > leftStickAnalog
float rightTriggerAnalog
T deadband(T x, T range)
Definition: utilities.h:46
void eigenDeadband(Eigen::MatrixBase< T > &v, typename T::Scalar band)
Definition: utilities.h:52
std::string toString()
float leftTriggerAnalog
static std::string boolToString(bool b)
Definition: utilities.h:154
MX f(const MX &x, const MX &u)