From 2c4953b024991354c0648ce2a332f5f428a373a8 Mon Sep 17 00:00:00 2001 From: Lauszus Date: Sun, 24 Jan 2021 14:52:00 +0000 Subject: [PATCH] deploy: 8758b2fc25177a3699f0707806a6c57decabf36c --- _p_s4_b_t_8h_source.html | 6 +++--- _p_s4_u_s_b_8h_source.html | 2 +- _p_s5_parser_8h_source.html | 4 ++-- _x_b_o_x_o_n_e_s_b_t_8h_source.html | 7 +++---- class_p_s4_b_t.html | 4 ++-- class_p_s5_b_t-members.html | 2 +- class_p_s5_b_t.html | 4 ++-- class_p_s5_parser-members.html | 2 +- class_p_s5_parser.html | 10 +++++----- class_p_s5_u_s_b-members.html | 2 +- class_p_s5_u_s_b.html | 4 ++-- class_x_b_o_x_o_n_e_s_b_t.html | 4 ++-- functions_func_g.html | 2 +- functions_g.html | 2 +- search/all_7.js | 2 +- search/functions_6.js | 2 +- 16 files changed, 29 insertions(+), 30 deletions(-) diff --git a/_p_s4_b_t_8h_source.html b/_p_s4_b_t_8h_source.html index 79748b19..74121431 100644 --- a/_p_s4_b_t_8h_source.html +++ b/_p_s4_b_t_8h_source.html @@ -63,7 +63,7 @@ $(function() {
PS4BT.h
-Go to the documentation of this file.
1 /* Copyright (C) 2014 Kristian Lauszus, TKJ Electronics. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Lauszus, TKJ Electronics
14  Web : http://www.tkjelectronics.com
15  e-mail : kristianl@tkjelectronics.com
16  */
17 
18 #ifndef _ps4bt_h_
19 #define _ps4bt_h_
20 
21 #include "BTHID.h"
22 #include "PS4Parser.h"
23 
28 class PS4BT : public BTHID, public PS4Parser {
29 public:
36  PS4BT(BTD *p, bool pair = false, const char *pin = "0000") :
37  BTHID(p, pair, pin) {
39  };
40 
45  bool connected() {
46  return BTHID::connected;
47  };
48 
49 protected:
56  virtual void ParseBTHIDData(uint8_t len, uint8_t *buf) {
57  PS4Parser::Parse(len, buf);
58  };
59 
65  virtual void OnInitBTHID() {
67  enable_sixaxis(); // Make the controller send out the entire output report
68  if (pFuncOnInit)
69  pFuncOnInit(); // Call the user function
70  else
71  setLed(Blue);
72  };
73 
75  virtual void ResetBTHID() {
77  };
81  virtual void sendOutputReport(PS4Output *output) { // Source: https://github.com/chrippa/ds4drv
82  uint8_t buf[79];
83  memset(buf, 0, sizeof(buf));
84 
85  buf[0] = 0x52; // HID BT Set_report (0x50) | Report Type (Output 0x02)
86  buf[1] = 0x11; // Report ID
87  buf[2] = 0x80;
88  buf[4]= 0xFF;
89 
90  buf[7] = output->smallRumble; // Small Rumble
91  buf[8] = output->bigRumble; // Big rumble
92 
93  buf[9] = output->r; // Red
94  buf[10] = output->g; // Green
95  buf[11] = output->b; // Blue
96 
97  buf[12] = output->flashOn; // Time to flash bright (255 = 2.5 seconds)
98  buf[13] = output->flashOff; // Time to flash dark (255 = 2.5 seconds)
99 
100  output->reportChanged = false;
101 
102  // The PS4 console actually set the four last bytes to a CRC32 checksum, but it seems like it is actually not needed
103 
104  HID_Command(buf, sizeof(buf));
105  };
108 private:
109  void enable_sixaxis() { // Command used to make the PS4 controller send out the entire output report
110  uint8_t buf[2];
111  buf[0] = 0x43; // HID BT Get_report (0x40) | Report Type (Feature 0x03)
112  buf[1] = 0x02; // Report ID
113 
114  HID_Command(buf, 2);
115  };
116 
117  void HID_Command(uint8_t *data, uint8_t nbytes) {
118  pBtd->L2CAP_Command(hci_handle, data, nbytes, control_scid[0], control_scid[1]);
119  };
120 };
121 #endif
void Reset()
Definition: PS4Parser.cpp:130
+Go to the documentation of this file.
1 /* Copyright (C) 2014 Kristian Lauszus, TKJ Electronics. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Lauszus, TKJ Electronics
14  Web : http://www.tkjelectronics.com
15  e-mail : kristianl@tkjelectronics.com
16  */
17 
18 #ifndef _ps4bt_h_
19 #define _ps4bt_h_
20 
21 #include "BTHID.h"
22 #include "PS4Parser.h"
23 
28 class PS4BT : public BTHID, public PS4Parser {
29 public:
36  PS4BT(BTD *p, bool pair = false, const char *pin = "0000") :
37  BTHID(p, pair, pin) {
39  };
40 
45  bool connected() {
46  return BTHID::connected;
47  };
48 
49 protected:
56  virtual void ParseBTHIDData(uint8_t len, uint8_t *buf) {
57  PS4Parser::Parse(len, buf);
58  };
59 
65  virtual void OnInitBTHID() {
67  enable_sixaxis(); // Make the controller send out the entire output report
68  if (!pFuncOnInit)
69  setLed(Blue); // Only call this is a user function has not been set
70  };
71 
73  virtual void ResetBTHID() {
75  };
79  virtual void sendOutputReport(PS4Output *output) { // Source: https://github.com/chrippa/ds4drv
80  uint8_t buf[79];
81  memset(buf, 0, sizeof(buf));
82 
83  buf[0] = 0x52; // HID BT Set_report (0x50) | Report Type (Output 0x02)
84  buf[1] = 0x11; // Report ID
85  buf[2] = 0x80;
86  buf[4]= 0xFF;
87 
88  buf[7] = output->smallRumble; // Small Rumble
89  buf[8] = output->bigRumble; // Big rumble
90 
91  buf[9] = output->r; // Red
92  buf[10] = output->g; // Green
93  buf[11] = output->b; // Blue
94 
95  buf[12] = output->flashOn; // Time to flash bright (255 = 2.5 seconds)
96  buf[13] = output->flashOff; // Time to flash dark (255 = 2.5 seconds)
97 
98  output->reportChanged = false;
99 
100  // The PS4 console actually set the four last bytes to a CRC32 checksum, but it seems like it is actually not needed
101 
102  HID_Command(buf, sizeof(buf));
103  };
106 private:
107  void enable_sixaxis() { // Command used to make the PS4 controller send out the entire output report
108  uint8_t buf[2];
109  buf[0] = 0x43; // HID BT Get_report (0x40) | Report Type (Feature 0x03)
110  buf[1] = 0x02; // Report ID
111 
112  HID_Command(buf, 2);
113  };
114 
115  void HID_Command(uint8_t *data, uint8_t nbytes) {
116  pBtd->L2CAP_Command(hci_handle, data, nbytes, control_scid[0], control_scid[1]);
117  };
118 };
119 #endif
void Reset()
Definition: PS4Parser.cpp:130
Definition: BTD.h:221
uint8_t b
Definition: PS4Parser.h:118
void setLed(uint8_t r, uint8_t g, uint8_t b)
Definition: PS4Parser.h:320
@@ -84,9 +84,9 @@ $(function() {
uint8_t smallRumble
Definition: PS4Parser.h:117
-
virtual void sendOutputReport(PS4Output *output)
Definition: PS4BT.h:81
+
virtual void sendOutputReport(PS4Output *output)
Definition: PS4BT.h:79
BTD * pBtd
Definition: BTD.h:646
-
virtual void ResetBTHID()
Definition: PS4BT.h:75
+
virtual void ResetBTHID()
Definition: PS4BT.h:73
PS4BT(BTD *p, bool pair=false, const char *pin="0000")
Definition: PS4BT.h:36
uint16_t hci_handle
Definition: BTD.h:649
diff --git a/_p_s4_u_s_b_8h_source.html b/_p_s4_u_s_b_8h_source.html index 0a4e615a..3242a143 100644 --- a/_p_s4_u_s_b_8h_source.html +++ b/_p_s4_u_s_b_8h_source.html @@ -63,7 +63,7 @@ $(function() {
PS4USB.h
-Go to the documentation of this file.
1 /* Copyright (C) 2014 Kristian Lauszus, TKJ Electronics. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Lauszus, TKJ Electronics
14  Web : http://www.tkjelectronics.com
15  e-mail : kristianl@tkjelectronics.com
16  */
17 
18 #ifndef _ps4usb_h_
19 #define _ps4usb_h_
20 
21 #include "hiduniversal.h"
22 #include "PS4Parser.h"
23 
24 #define PS4_VID 0x054C // Sony Corporation
25 #define PS4_PID 0x05C4 // PS4 Controller
26 #define PS4_PID_SLIM 0x09CC // PS4 Slim Controller
27 
32 class PS4USB : public HIDUniversal, public PS4Parser {
33 public:
38  PS4USB(USB *p) :
39  HIDUniversal(p) {
41  };
42 
47  bool connected() {
48  return HIDUniversal::isReady() && HIDUniversal::VID == PS4_VID && (HIDUniversal::PID == PS4_PID || HIDUniversal::PID == PS4_PID_SLIM);
49  };
50 
55  void attachOnInit(void (*funcOnInit)(void)) {
56  pFuncOnInit = funcOnInit;
57  };
58 
59 protected:
68  virtual void ParseHIDData(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf) {
70  PS4Parser::Parse(len, buf);
71  };
72 
78  virtual uint8_t OnInitSuccessful() {
81  if (pFuncOnInit)
82  pFuncOnInit(); // Call the user function
83  else
84  setLed(Blue);
85  };
86  return 0;
87  };
91  virtual void sendOutputReport(PS4Output *output) { // Source: https://github.com/chrippa/ds4drv
92  uint8_t buf[32];
93  memset(buf, 0, sizeof(buf));
94 
95  buf[0] = 0x05; // Report ID
96  buf[1]= 0xFF;
97 
98  buf[4] = output->smallRumble; // Small Rumble
99  buf[5] = output->bigRumble; // Big rumble
100 
101  buf[6] = output->r; // Red
102  buf[7] = output->g; // Green
103  buf[8] = output->b; // Blue
104 
105  buf[9] = output->flashOn; // Time to flash bright (255 = 2.5 seconds)
106  buf[10] = output->flashOff; // Time to flash dark (255 = 2.5 seconds)
107 
108  output->reportChanged = false;
109 
110  // The PS4 console actually set the four last bytes to a CRC32 checksum, but it seems like it is actually not needed
111 
112  pUsb->outTransfer(bAddress, epInfo[epInterruptOutIndex].epAddr, sizeof(buf), buf);
113  };
123  virtual bool VIDPIDOK(uint16_t vid, uint16_t pid) {
124  return (vid == PS4_VID && (pid == PS4_PID || HIDUniversal::PID == PS4_PID_SLIM));
125  };
128 private:
129  void (*pFuncOnInit)(void); // Pointer to function called in onInit()
130 };
131 #endif
virtual bool VIDPIDOK(uint16_t vid, uint16_t pid)
Definition: PS4USB.h:123
+Go to the documentation of this file.
1 /* Copyright (C) 2014 Kristian Lauszus, TKJ Electronics. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Lauszus, TKJ Electronics
14  Web : http://www.tkjelectronics.com
15  e-mail : kristianl@tkjelectronics.com
16  */
17 
18 #ifndef _ps4usb_h_
19 #define _ps4usb_h_
20 
21 #include "hiduniversal.h"
22 #include "PS4Parser.h"
23 
24 #define PS4_VID 0x054C // Sony Corporation
25 #define PS4_PID 0x05C4 // PS4 Controller
26 #define PS4_PID_SLIM 0x09CC // PS4 Slim Controller
27 
32 class PS4USB : public HIDUniversal, public PS4Parser {
33 public:
38  PS4USB(USB *p) :
39  HIDUniversal(p) {
41  };
42 
47  bool connected() {
48  return HIDUniversal::isReady() && HIDUniversal::VID == PS4_VID && (HIDUniversal::PID == PS4_PID || HIDUniversal::PID == PS4_PID_SLIM);
49  };
50 
55  void attachOnInit(void (*funcOnInit)(void)) {
56  pFuncOnInit = funcOnInit;
57  };
58 
59 protected:
68  virtual void ParseHIDData(USBHID *hid __attribute__((unused)), bool is_rpt_id __attribute__((unused)), uint8_t len, uint8_t *buf) {
70  PS4Parser::Parse(len, buf);
71  };
72 
78  virtual uint8_t OnInitSuccessful() {
81  if (pFuncOnInit)
82  pFuncOnInit(); // Call the user function
83  else
84  setLed(Blue);
85  };
86  return 0;
87  };
91  virtual void sendOutputReport(PS4Output *output) { // Source: https://github.com/chrippa/ds4drv
92  uint8_t buf[32];
93  memset(buf, 0, sizeof(buf));
94 
95  buf[0] = 0x05; // Report ID
96  buf[1]= 0xFF;
97 
98  buf[4] = output->smallRumble; // Small Rumble
99  buf[5] = output->bigRumble; // Big rumble
100 
101  buf[6] = output->r; // Red
102  buf[7] = output->g; // Green
103  buf[8] = output->b; // Blue
104 
105  buf[9] = output->flashOn; // Time to flash bright (255 = 2.5 seconds)
106  buf[10] = output->flashOff; // Time to flash dark (255 = 2.5 seconds)
107 
108  output->reportChanged = false;
109 
110  // The PS4 console actually set the four last bytes to a CRC32 checksum, but it seems like it is actually not needed
111 
112  pUsb->outTransfer(bAddress, epInfo[epInterruptOutIndex].epAddr, sizeof(buf), buf);
113  };
123  virtual bool VIDPIDOK(uint16_t vid, uint16_t pid) {
124  return (vid == PS4_VID && (pid == PS4_PID || HIDUniversal::PID == PS4_PID_SLIM));
125  };
128 private:
129  void (*pFuncOnInit)(void); // Pointer to function called in onInit()
130 };
131 #endif
virtual bool VIDPIDOK(uint16_t vid, uint16_t pid)
Definition: PS4USB.h:123
Definition: usbhid.h:143
void Reset()
Definition: PS4Parser.cpp:130
USB * pUsb
Definition: usbhid.h:145
diff --git a/_p_s5_parser_8h_source.html b/_p_s5_parser_8h_source.html index 0b92f0e4..254d0cbf 100644 --- a/_p_s5_parser_8h_source.html +++ b/_p_s5_parser_8h_source.html @@ -63,8 +63,7 @@ $(function() {
PS5Parser.h
-Go to the documentation of this file.
1 /* Copyright (C) 2021 Kristian Sloth Lauszus. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Sloth Lauszus
14  Web : https://lauszus.com
15  e-mail : lauszus@gmail.com
16 
17  Thanks to Joseph Duchesne for the initial code.
18  Based on Ludwig Füchsl's https://github.com/Ohjurot/DualSense-Windows PS5 port
19  and the series of patches found here: https://patchwork.kernel.org/project/linux-input/cover/20201219062336.72568-1-roderick@gaikai.com/
20  */
21 
22 #ifndef _ps5parser_h_
23 #define _ps5parser_h_
24 
25 #include "Usb.h"
26 #include "controllerEnums.h"
27 #include "PS5Trigger.h"
28 
30 const uint8_t PS5_BUTTONS[] PROGMEM = {
31  UP, // UP
32  RIGHT, // RIGHT
33  DOWN, // DOWN
34  LEFT, // LEFT
35 
36  0x0C, // CREATE
37  0x0D, // OPTIONS
38  0x0E, // L3
39  0x0F, // R3
40 
41  0x0A, // L2
42  0x0B, // R2
43  0x08, // L1
44  0x09, // R1
45 
46  0x07, // TRIANGLE
47  0x06, // CIRCLE
48  0x05, // CROSS
49  0x04, // SQUARE
50 
51  0x10, // PS
52  0x11, // TOUCHPAD
53  0x12, // MICROPHONE
54 };
55 
56 union PS5Buttons {
57  struct {
58  uint8_t dpad : 4;
59  uint8_t square : 1;
60  uint8_t cross : 1;
61  uint8_t circle : 1;
62  uint8_t triangle : 1;
63 
64  uint8_t l1 : 1;
65  uint8_t r1 : 1;
66  uint8_t l2 : 1;
67  uint8_t r2 : 1;
68  uint8_t create : 1;
69  uint8_t menu : 1;
70  uint8_t l3 : 1;
71  uint8_t r3 : 1;
72 
73  uint8_t ps : 1;
74  uint8_t touchpad : 1;
75  uint8_t mic : 1;
76  uint8_t dummy : 5;
77  } __attribute__((packed));
78  uint32_t val : 24;
79 } __attribute__((packed));
80 
81 struct ps5TouchpadXY {
82  struct {
83  uint8_t counter : 7; // Increments every time a finger is touching the touchpad
84  uint8_t touching : 1; // The top bit is cleared if the finger is touching the touchpad
85  uint16_t x : 12;
86  uint16_t y : 12;
87  } __attribute__((packed)) finger[2]; // 0 = first finger, 1 = second finger
88 } __attribute__((packed));
89 
90 union PS5Status {
91  struct {
92  // first byte
93  uint8_t headphone : 1;
94  uint8_t dummy : 2; // Seems to change when a jack is plugged in. First bit stays on when a mic is plugged in.
95  uint8_t usb : 1; // charging
96  uint8_t dummy2: 4;
97 
98  // second byte
99  uint8_t mic : 1;
100  uint8_t dummy3 : 3;
101  } __attribute__((packed));
102  uint16_t val;
103 } __attribute__((packed));
104 
105 struct PS5Data {
106  /* Button and joystick values */
107  uint8_t hatValue[4]; // 0-3 bytes
108  uint8_t trigger[2]; // 4-5
109 
110  uint8_t sequence_number; // 6
111 
112  PS5Buttons btn; // 7-9
113 
114  uint8_t reserved[5]; // 0xA-0xD
115 
116  /* Gyro and accelerometer values */
117  int16_t gyroX, gyroZ, gyroY; // 0x0F - 0x14
118  int16_t accX, accZ, accY; // 0x15-0x1A
120 
121  uint8_t reserved2;
122 
123  // 0x20 - 0x23 touchpad point 1
124  // 0x24 - 0x27 touchpad point 2
126 
127 #if 0 // The status byte depends on if it's sent via USB or Bluetooth, so is not parsed for now
128  uint8_t reserved3; // 0x28
129 
130  uint8_t rightTriggerFeedback; // 0x29
131  uint8_t leftTriggerFeedback; // 0x2A
132  uint8_t reserved4[10]; // 0x2B - 0x34
133 
134  // status bytes 0x35-0x36
135  PS5Status status;
136 #endif
137 } __attribute__((packed));
138 
139 struct PS5Output {
140  uint8_t bigRumble, smallRumble; // Rumble
141  uint8_t microphoneLed;
142  uint8_t disableLeds;
143  uint8_t playerLeds;
144  uint8_t r, g, b; // RGB for lightbar
145  bool reportChanged; // The data is send when data is received from the controller
146 } __attribute__((packed));
147 
149 class PS5Parser {
150 public:
152  PS5Parser() : leftTrigger(), rightTrigger() {
153  Reset();
154  };
155 
157  PS5Trigger leftTrigger, rightTrigger;
158 
170  bool getButtonPress(ButtonEnum b);
171  bool getButtonClick(ButtonEnum b);
181  uint8_t getAnalogButton(ButtonEnum b);
182 
188  uint8_t getAnalogHat(AnalogHatEnum a);
189 
194  uint16_t getX(uint8_t finger = 0) {
195  return ps5Data.xy.finger[finger].x;
196  };
197 
203  uint16_t getY(uint8_t finger = 0) {
204  return ps5Data.xy.finger[finger].y;
205  };
206 
212  bool isTouching(uint8_t finger = 0) {
213  return !(ps5Data.xy.finger[finger].touching); // The bit is cleared when a finger is touching the touchpad
214  };
215 
221  uint8_t getTouchCounter(uint8_t finger = 00) {
222  return ps5Data.xy.finger[finger].counter;
223  };
224 
230  float getAngle(AngleEnum a) {
231  if (a == Pitch)
232  return (atan2f(-ps5Data.accY, -ps5Data.accZ) + PI) * RAD_TO_DEG;
233  else
234  return (atan2f(ps5Data.accX, -ps5Data.accZ) + PI) * RAD_TO_DEG;
235  };
236 
242  int16_t getSensor(SensorEnum s) {
243  switch(s) {
244  case gX:
245  return ps5Data.gyroX;
246  case gY:
247  return ps5Data.gyroY;
248  case gZ:
249  return ps5Data.gyroZ;
250  case aX:
251  return ps5Data.accX;
252  case aY:
253  return ps5Data.accY;
254  case aZ:
255  return ps5Data.accZ;
256  default:
257  return 0;
258  }
259  };
260 
261 #if 0 // Seems to only be available via Bluetooth, so have been disabled for now
262 
266  uint8_t getBatteryLevel() {
267  return ps5Data.status.battery;
268  };
269 #endif
270 
271 #if 0 // These are only valid via USB, so have been commented out for now
272 
276  bool getUsbStatus() {
277  return ps5Data.status.usb;
278  };
279 
284  bool getAudioStatus() {
285  return ps5Data.status.headphone;
286  };
287 
292  bool getMicStatus() {
293  return ps5Data.status.mic;
294  };
295 #endif
296 
298  void setAllOff() {
299  setRumbleOff();
300  setLedOff();
301  };
302 
304  void setRumbleOff() {
305  setRumbleOn(0, 0);
306  };
307 
312  void setRumbleOn(RumbleEnum mode) {
313  if (mode == RumbleLow)
314  setRumbleOn(0x00, 0xFF);
315  else
316  setRumbleOn(0xFF, 0x00);
317  };
318 
324  void setRumbleOn(uint8_t bigRumble, uint8_t smallRumble) {
325  ps5Output.bigRumble = bigRumble;
326  ps5Output.smallRumble = smallRumble;
327  ps5Output.reportChanged = true;
328  };
329 
331  void setLedOff() {
332  setLed(0, 0, 0);
333  };
334 
339  void setLed(uint8_t r, uint8_t g, uint8_t b) {
340  ps5Output.r = r;
341  ps5Output.g = g;
342  ps5Output.b = b;
343  ps5Output.reportChanged = true;
344  };
345 
350  void setLed(ColorsEnum color) {
351  setLed((uint8_t)(color >> 16), (uint8_t)(color >> 8), (uint8_t)(color));
352  };
353 
356  setPlayerLed(0);
357  }
358 
363  void setPlayerLed(uint8_t mask) {
364  ps5Output.playerLeds = mask;
365  ps5Output.reportChanged = true;
366  }
367 
369  void setMicLedOff() {
370  setMicLed(0);
371  }
372 
377  void setMicLed(bool on) {
378  ps5Output.microphoneLed = on ? 1 : 0;
379  ps5Output.reportChanged = true;
380  }
381 
383  uint16_t getMessageCounter(){
384  return message_counter;
385  }
386 
387 protected:
393  void Parse(uint8_t len, uint8_t *buf);
394 
396  void Reset();
397 
402  virtual void sendOutputReport(PS5Output *output) = 0;
403 
404 
405 private:
406  bool checkDpad(ButtonEnum b); // Used to check PS5 DPAD buttons
407 
408  PS5Data ps5Data;
409  PS5Buttons oldButtonState, buttonClickState;
410  PS5Output ps5Output;
411  uint8_t oldDpad;
412  uint16_t message_counter = 0;
413 };
414 #endif
uint8_t getTouchCounter(uint8_t finger=00)
Definition: PS5Parser.h:221
- +Go to the documentation of this file.
1 /* Copyright (C) 2021 Kristian Sloth Lauszus. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Sloth Lauszus
14  Web : https://lauszus.com
15  e-mail : lauszus@gmail.com
16 
17  Thanks to Joseph Duchesne for the initial code.
18  Based on Ludwig Füchsl's https://github.com/Ohjurot/DualSense-Windows PS5 port
19  and the series of patches found here: https://patchwork.kernel.org/project/linux-input/cover/20201219062336.72568-1-roderick@gaikai.com/
20  */
21 
22 #ifndef _ps5parser_h_
23 #define _ps5parser_h_
24 
25 #include "Usb.h"
26 #include "controllerEnums.h"
27 #include "PS5Trigger.h"
28 
30 const uint8_t PS5_BUTTONS[] PROGMEM = {
31  UP, // UP
32  RIGHT, // RIGHT
33  DOWN, // DOWN
34  LEFT, // LEFT
35 
36  0x0C, // CREATE
37  0x0D, // OPTIONS
38  0x0E, // L3
39  0x0F, // R3
40 
41  0x0A, // L2
42  0x0B, // R2
43  0x08, // L1
44  0x09, // R1
45 
46  0x07, // TRIANGLE
47  0x06, // CIRCLE
48  0x05, // CROSS
49  0x04, // SQUARE
50 
51  0x10, // PS
52  0x11, // TOUCHPAD
53  0x12, // MICROPHONE
54 };
55 
56 union PS5Buttons {
57  struct {
58  uint8_t dpad : 4;
59  uint8_t square : 1;
60  uint8_t cross : 1;
61  uint8_t circle : 1;
62  uint8_t triangle : 1;
63 
64  uint8_t l1 : 1;
65  uint8_t r1 : 1;
66  uint8_t l2 : 1;
67  uint8_t r2 : 1;
68  uint8_t create : 1;
69  uint8_t menu : 1;
70  uint8_t l3 : 1;
71  uint8_t r3 : 1;
72 
73  uint8_t ps : 1;
74  uint8_t touchpad : 1;
75  uint8_t mic : 1;
76  uint8_t dummy : 5;
77  } __attribute__((packed));
78  uint32_t val : 24;
79 } __attribute__((packed));
80 
81 struct ps5TouchpadXY {
82  struct {
83  uint8_t counter : 7; // Increments every time a finger is touching the touchpad
84  uint8_t touching : 1; // The top bit is cleared if the finger is touching the touchpad
85  uint16_t x : 12;
86  uint16_t y : 12;
87  } __attribute__((packed)) finger[2]; // 0 = first finger, 1 = second finger
88 } __attribute__((packed));
89 
90 union PS5Status {
91  struct {
92  // first byte
93  uint8_t headphone : 1;
94  uint8_t dummy : 2; // Seems to change when a jack is plugged in. First bit stays on when a mic is plugged in.
95  uint8_t usb : 1; // charging
96  uint8_t dummy2: 4;
97 
98  // second byte
99  uint8_t mic : 1;
100  uint8_t dummy3 : 3;
101  } __attribute__((packed));
102  uint16_t val;
103 } __attribute__((packed));
104 
105 struct PS5Data {
106  /* Button and joystick values */
107  uint8_t hatValue[4]; // 0-3 bytes
108  uint8_t trigger[2]; // 4-5
109 
110  uint8_t sequence_number; // 6
111 
112  PS5Buttons btn; // 7-9
113 
114  uint8_t reserved[5]; // 0xA-0xD
115 
116  /* Gyro and accelerometer values */
117  int16_t gyroX, gyroZ, gyroY; // 0x0F - 0x14
118  int16_t accX, accZ, accY; // 0x15-0x1A
120 
121  uint8_t reserved2;
122 
123  // 0x20 - 0x23 touchpad point 1
124  // 0x24 - 0x27 touchpad point 2
126 
127 #if 0 // The status byte depends on if it's sent via USB or Bluetooth, so is not parsed for now
128  uint8_t reserved3; // 0x28
129 
130  uint8_t rightTriggerFeedback; // 0x29
131  uint8_t leftTriggerFeedback; // 0x2A
132  uint8_t reserved4[10]; // 0x2B - 0x34
133 
134  // status bytes 0x35-0x36
135  PS5Status status;
136 #endif
137 } __attribute__((packed));
138 
139 struct PS5Output {
140  uint8_t bigRumble, smallRumble; // Rumble
141  uint8_t microphoneLed;
142  uint8_t disableLeds;
143  uint8_t playerLeds;
144  uint8_t r, g, b; // RGB for lightbar
145  bool reportChanged; // The data is send when data is received from the controller
146 } __attribute__((packed));
147 
149 class PS5Parser {
150 public:
152  PS5Parser() : leftTrigger(), rightTrigger() {
153  Reset();
154  };
155 
157  PS5Trigger leftTrigger, rightTrigger;
158 
170  bool getButtonPress(ButtonEnum b);
171  bool getButtonClick(ButtonEnum b);
181  uint8_t getAnalogButton(ButtonEnum b);
182 
188  uint8_t getAnalogHat(AnalogHatEnum a);
189 
194  uint16_t getX(uint8_t finger = 0) {
195  return ps5Data.xy.finger[finger].x;
196  };
197 
203  uint16_t getY(uint8_t finger = 0) {
204  return ps5Data.xy.finger[finger].y;
205  };
206 
212  bool isTouching(uint8_t finger = 0) {
213  return !(ps5Data.xy.finger[finger].touching); // The bit is cleared when a finger is touching the touchpad
214  };
215 
221  uint8_t getTouchCounter(uint8_t finger = 0) {
222  return ps5Data.xy.finger[finger].counter;
223  };
224 
230  float getAngle(AngleEnum a) {
231  if (a == Pitch)
232  return (atan2f(-ps5Data.accY, -ps5Data.accZ) + PI) * RAD_TO_DEG;
233  else
234  return (atan2f(ps5Data.accX, -ps5Data.accZ) + PI) * RAD_TO_DEG;
235  };
236 
242  int16_t getSensor(SensorEnum s) {
243  switch(s) {
244  case gX:
245  return ps5Data.gyroX;
246  case gY:
247  return ps5Data.gyroY;
248  case gZ:
249  return ps5Data.gyroZ;
250  case aX:
251  return ps5Data.accX;
252  case aY:
253  return ps5Data.accY;
254  case aZ:
255  return ps5Data.accZ;
256  default:
257  return 0;
258  }
259  };
260 
261 #if 0 // Seems to only be available via Bluetooth, so have been disabled for now
262 
266  uint8_t getBatteryLevel() {
267  return ps5Data.status.battery;
268  };
269 #endif
270 
271 #if 0 // These are only valid via USB, so have been commented out for now
272 
276  bool getUsbStatus() {
277  return ps5Data.status.usb;
278  };
279 
284  bool getAudioStatus() {
285  return ps5Data.status.headphone;
286  };
287 
292  bool getMicStatus() {
293  return ps5Data.status.mic;
294  };
295 #endif
296 
298  void setAllOff() {
299  setRumbleOff();
300  setLedOff();
301  };
302 
304  void setRumbleOff() {
305  setRumbleOn(0, 0);
306  };
307 
312  void setRumbleOn(RumbleEnum mode) {
313  if (mode == RumbleLow)
314  setRumbleOn(0x00, 0xFF);
315  else
316  setRumbleOn(0xFF, 0x00);
317  };
318 
324  void setRumbleOn(uint8_t bigRumble, uint8_t smallRumble) {
325  ps5Output.bigRumble = bigRumble;
326  ps5Output.smallRumble = smallRumble;
327  ps5Output.reportChanged = true;
328  };
329 
331  void setLedOff() {
332  setLed(0, 0, 0);
333  };
334 
339  void setLed(uint8_t r, uint8_t g, uint8_t b) {
340  ps5Output.r = r;
341  ps5Output.g = g;
342  ps5Output.b = b;
343  ps5Output.reportChanged = true;
344  };
345 
350  void setLed(ColorsEnum color) {
351  setLed((uint8_t)(color >> 16), (uint8_t)(color >> 8), (uint8_t)(color));
352  };
353 
356  setPlayerLed(0);
357  }
358 
363  void setPlayerLed(uint8_t mask) {
364  ps5Output.playerLeds = mask;
365  ps5Output.reportChanged = true;
366  }
367 
369  void setMicLedOff() {
370  setMicLed(0);
371  }
372 
377  void setMicLed(bool on) {
378  ps5Output.microphoneLed = on ? 1 : 0;
379  ps5Output.reportChanged = true;
380  }
381 
383  uint16_t getMessageCounter(){
384  return message_counter;
385  }
386 
387 protected:
393  void Parse(uint8_t len, uint8_t *buf);
394 
396  void Reset();
397 
402  virtual void sendOutputReport(PS5Output *output) = 0;
403 
404 
405 private:
406  bool checkDpad(ButtonEnum b); // Used to check PS5 DPAD buttons
407 
408  PS5Data ps5Data;
409  PS5Buttons oldButtonState, buttonClickState;
410  PS5Output ps5Output;
411  uint8_t oldDpad;
412  uint16_t message_counter = 0;
413 };
414 #endif
uint8_t cross
Definition: PS5Parser.h:60
uint16_t getX(uint8_t finger=0)
Definition: PS5Parser.h:194
@@ -104,6 +103,7 @@ $(function() {
uint8_t headphone
Definition: PS5Parser.h:93
uint8_t touchpad
Definition: PS5Parser.h:74
PS5Buttons btn
Definition: PS5Parser.h:112
+
uint8_t getTouchCounter(uint8_t finger=0)
Definition: PS5Parser.h:221
uint8_t l1
Definition: PS5Parser.h:64
const uint8_t PS5_BUTTONS[]
Definition: PS5Parser.h:30
uint8_t square
Definition: PS5Parser.h:59
diff --git a/_x_b_o_x_o_n_e_s_b_t_8h_source.html b/_x_b_o_x_o_n_e_s_b_t_8h_source.html index d5152247..2d22ce99 100644 --- a/_x_b_o_x_o_n_e_s_b_t_8h_source.html +++ b/_x_b_o_x_o_n_e_s_b_t_8h_source.html @@ -63,21 +63,20 @@ $(function() {
XBOXONESBT.h
-Go to the documentation of this file.
1 /* Copyright (C) 2020 Kristian Sloth Lauszus. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Sloth Lauszus
14  Web : https://lauszus.com
15  e-mail : lauszus@gmail.com
16  */
17 
18 #ifndef _xboxonesbt_h_
19 #define _xboxonesbt_h_
20 
21 #include "BTHID.h"
22 #include "XBOXONESParser.h"
23 
28 class XBOXONESBT : public BTHID, public XBOXONESParser {
29 public:
35  XBOXONESBT(BTD *p, bool pair = false) :
36  BTHID(p, pair) {
38  pBtd->useSimplePairing = true; // The Xbox One S controller only works via simple pairing
39  };
40 
45  bool connected() {
46  return BTHID::connected;
47  };
48 
49 protected:
56  virtual void ParseBTHIDData(uint8_t len, uint8_t *buf) {
57  XBOXONESParser::Parse(len, buf);
58  };
59 
65  virtual void OnInitBTHID() {
67  if (pFuncOnInit)
68  pFuncOnInit(); // Call the user function
69  };
70 
72  virtual void ResetBTHID() {
74  };
78  virtual void sendOutputReport(uint8_t *data, uint8_t nbytes) {
79  // See: https://lore.kernel.org/patchwork/patch/973394/
80  uint8_t buf[nbytes + 2];
81  buf[0] = 0xA2; // HID BT DATA (0xA0) | Report Type (Output 0x02)
82  buf[1] = 0x03; // Report ID
83  memcpy(buf + 2, data, nbytes);
84 
85  // Send the Bluetooth DATA output report on the interrupt channel
86  pBtd->L2CAP_Command(hci_handle, buf, sizeof(buf), interrupt_scid[0], interrupt_scid[1]);
87  };
89 };
90 #endif
bool useSimplePairing
Definition: BTD.h:531
+Go to the documentation of this file.
1 /* Copyright (C) 2020 Kristian Sloth Lauszus. All rights reserved.
2 
3  This software may be distributed and modified under the terms of the GNU
4  General Public License version 2 (GPL2) as published by the Free Software
5  Foundation and appearing in the file GPL2.TXT included in the packaging of
6  this file. Please note that GPL2 Section 2[b] requires that all works based
7  on this software must also be made publicly available under the terms of
8  the GPL2 ("Copyleft").
9 
10  Contact information
11  -------------------
12 
13  Kristian Sloth Lauszus
14  Web : https://lauszus.com
15  e-mail : lauszus@gmail.com
16  */
17 
18 #ifndef _xboxonesbt_h_
19 #define _xboxonesbt_h_
20 
21 #include "BTHID.h"
22 #include "XBOXONESParser.h"
23 
28 class XBOXONESBT : public BTHID, public XBOXONESParser {
29 public:
35  XBOXONESBT(BTD *p, bool pair = false) :
36  BTHID(p, pair) {
38  pBtd->useSimplePairing = true; // The Xbox One S controller only works via simple pairing
39  };
40 
45  bool connected() {
46  return BTHID::connected;
47  };
48 
49 protected:
56  virtual void ParseBTHIDData(uint8_t len, uint8_t *buf) {
57  XBOXONESParser::Parse(len, buf);
58  };
59 
65  virtual void OnInitBTHID() {
67  };
68 
70  virtual void ResetBTHID() {
72  };
76  virtual void sendOutputReport(uint8_t *data, uint8_t nbytes) {
77  // See: https://lore.kernel.org/patchwork/patch/973394/
78  uint8_t buf[nbytes + 2];
79  buf[0] = 0xA2; // HID BT DATA (0xA0) | Report Type (Output 0x02)
80  buf[1] = 0x03; // Report ID
81  memcpy(buf + 2, data, nbytes);
82 
83  // Send the Bluetooth DATA output report on the interrupt channel
84  pBtd->L2CAP_Command(hci_handle, buf, sizeof(buf), interrupt_scid[0], interrupt_scid[1]);
85  };
87 };
88 #endif
bool useSimplePairing
Definition: BTD.h:531
Definition: BTD.h:221
virtual void ParseBTHIDData(uint8_t len, uint8_t *buf)
Definition: XBOXONESBT.h:56
uint8_t interrupt_scid[2]
Definition: BTHID.h:149
bool connected
Definition: BTHID.h:88
-
virtual void sendOutputReport(uint8_t *data, uint8_t nbytes)
Definition: XBOXONESBT.h:78
-
virtual void ResetBTHID()
Definition: XBOXONESBT.h:72
+
virtual void sendOutputReport(uint8_t *data, uint8_t nbytes)
Definition: XBOXONESBT.h:76
+
virtual void ResetBTHID()
Definition: XBOXONESBT.h:70
void Parse(uint8_t len, uint8_t *buf)
XBOXONESBT(BTD *p, bool pair=false)
Definition: XBOXONESBT.h:35
-
void(* pFuncOnInit)(void)
Definition: BTD.h:643
BTD * pBtd
Definition: BTD.h:646
bool connected()
Definition: XBOXONESBT.h:45
uint16_t hci_handle
Definition: BTD.h:649
diff --git a/class_p_s4_b_t.html b/class_p_s4_b_t.html index a4890637..b96a2eca 100644 --- a/class_p_s4_b_t.html +++ b/class_p_s4_b_t.html @@ -418,7 +418,7 @@ Additional Inherited Members

Reimplemented from BTHID.

-

Definition at line 75 of file PS4BT.h.

+

Definition at line 73 of file PS4BT.h.

@@ -454,7 +454,7 @@ Additional Inherited Members

Implements PS4Parser.

-

Definition at line 81 of file PS4BT.h.

+

Definition at line 79 of file PS4BT.h.

diff --git a/class_p_s5_b_t-members.html b/class_p_s5_b_t-members.html index 0cd2614c..6ddc098c 100644 --- a/class_p_s5_b_t-members.html +++ b/class_p_s5_b_t-members.html @@ -83,7 +83,7 @@ $(function() { getMessageCounter()PS5Parserinline GetReportParser(uint8_t id)BTHIDinline getSensor(SensorEnum s)PS5Parserinline - getTouchCounter(uint8_t finger=00)PS5Parserinline + getTouchCounter(uint8_t finger=0)PS5Parserinline getX(uint8_t finger=0)PS5Parserinline getY(uint8_t finger=0)PS5Parserinline hci_handleBluetoothServiceprotected diff --git a/class_p_s5_b_t.html b/class_p_s5_b_t.html index 46c4366e..884b0764 100644 --- a/class_p_s5_b_t.html +++ b/class_p_s5_b_t.html @@ -141,8 +141,8 @@ Public Member Functions   bool isTouching (uint8_t finger=0)   -uint8_t getTouchCounter (uint8_t finger=00) -  +uint8_t getTouchCounter (uint8_t finger=0) +  float getAngle (AngleEnum a)   int16_t getSensor (SensorEnum s) diff --git a/class_p_s5_parser-members.html b/class_p_s5_parser-members.html index a6abaa46..867649b5 100644 --- a/class_p_s5_parser-members.html +++ b/class_p_s5_parser-members.html @@ -73,7 +73,7 @@ $(function() { getButtonPress(ButtonEnum b)PS5Parser getMessageCounter()PS5Parserinline getSensor(SensorEnum s)PS5Parserinline - getTouchCounter(uint8_t finger=00)PS5Parserinline + getTouchCounter(uint8_t finger=0)PS5Parserinline getX(uint8_t finger=0)PS5Parserinline getY(uint8_t finger=0)PS5Parserinline isTouching(uint8_t finger=0)PS5Parserinline diff --git a/class_p_s5_parser.html b/class_p_s5_parser.html index 22e44088..51b4416d 100644 --- a/class_p_s5_parser.html +++ b/class_p_s5_parser.html @@ -115,8 +115,8 @@ PS5 Controller functions   bool isTouching (uint8_t finger=0)   -uint8_t getTouchCounter (uint8_t finger=00) -  +uint8_t getTouchCounter (uint8_t finger=0) +  float getAngle (AngleEnum a)   int16_t getSensor (SensorEnum s) @@ -402,8 +402,8 @@ PS5 Controller functions
- -

◆ getTouchCounter()

+ +

◆ getTouchCounter()

@@ -415,7 +415,7 @@ PS5 Controller functions uint8_t PS5Parser::getTouchCounter ( uint8_t  - finger = 00) + finger = 0) diff --git a/class_p_s5_u_s_b-members.html b/class_p_s5_u_s_b-members.html index 8b39ccb5..f007f9f5 100644 --- a/class_p_s5_u_s_b-members.html +++ b/class_p_s5_u_s_b-members.html @@ -99,7 +99,7 @@ $(function() { GetReportDescr(uint16_t wIndex, USBReadParser *parser=NULL)USBHID GetReportParser(uint8_t id)HIDCompositeprotectedvirtual getSensor(SensorEnum s)PS5Parserinline - getTouchCounter(uint8_t finger=00)PS5Parserinline + getTouchCounter(uint8_t finger=0)PS5Parserinline GetUsb()USBHIDinline getX(uint8_t finger=0)PS5Parserinline getY(uint8_t finger=0)PS5Parserinline diff --git a/class_p_s5_u_s_b.html b/class_p_s5_u_s_b.html index f2258d2a..796b9f02 100644 --- a/class_p_s5_u_s_b.html +++ b/class_p_s5_u_s_b.html @@ -180,8 +180,8 @@ Public Member Functions   bool isTouching (uint8_t finger=0)   -uint8_t getTouchCounter (uint8_t finger=00) -  +uint8_t getTouchCounter (uint8_t finger=0) +  float getAngle (AngleEnum a)   int16_t getSensor (SensorEnum s) diff --git a/class_x_b_o_x_o_n_e_s_b_t.html b/class_x_b_o_x_o_n_e_s_b_t.html index 3b430fbc..b10b0848 100644 --- a/class_x_b_o_x_o_n_e_s_b_t.html +++ b/class_x_b_o_x_o_n_e_s_b_t.html @@ -377,7 +377,7 @@ Additional Inherited Members

Reimplemented from BTHID.

-

Definition at line 72 of file XBOXONESBT.h.

+

Definition at line 70 of file XBOXONESBT.h.

@@ -424,7 +424,7 @@ Additional Inherited Members

Implements XBOXONESParser.

-

Definition at line 78 of file XBOXONESBT.h.

+

Definition at line 76 of file XBOXONESBT.h.

diff --git a/functions_func_g.html b/functions_func_g.html index 491e89e5..65c8fd37 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -313,7 +313,7 @@ $(function() {
  • getTouchCounter() : PS4Parser -, PS5Parser +, PS5Parser
  • GetUsb() : USBHID diff --git a/functions_g.html b/functions_g.html index c3556b48..ed82cc37 100644 --- a/functions_g.html +++ b/functions_g.html @@ -341,7 +341,7 @@ $(function() {
  • getTouchCounter() : PS4Parser -, PS5Parser +, PS5Parser
  • GetUsb() : USBHID diff --git a/search/all_7.js b/search/all_7.js index 0ac9750d..ddf64459 100644 --- a/search/all_7.js +++ b/search/all_7.js @@ -78,7 +78,7 @@ var searchData= ['getsymkeysup',['getSymKeysUp',['../class_keyboard_report_parser.html#a2df76a06fee8df45a3d0850459887427',1,'KeyboardReportParser']]], ['gettemperature',['getTemperature',['../class_p_s3_b_t.html#ab4f49b61167df001d13b68c7699651b4',1,'PS3BT']]], ['gettotalweight',['getTotalWeight',['../class_w_i_i.html#a966e34bb434984de59706384c8efc1f1',1,'WII']]], - ['gettouchcounter',['getTouchCounter',['../class_p_s4_parser.html#a0b3de008ae8aaa057c571081b1b64e88',1,'PS4Parser::getTouchCounter()'],['../class_p_s5_parser.html#ae539ebc70cdb0abcfc8b1a8c1ba6f819',1,'PS5Parser::getTouchCounter()']]], + ['gettouchcounter',['getTouchCounter',['../class_p_s4_parser.html#a0b3de008ae8aaa057c571081b1b64e88',1,'PS4Parser::getTouchCounter()'],['../class_p_s5_parser.html#ad71e6f6cd11f55e688ab40aa5e1e2934',1,'PS5Parser::getTouchCounter()']]], ['getusb',['GetUsb',['../class_u_s_b_h_i_d.html#ad90bc410a083495a4ddefc2000f67dbd',1,'USBHID']]], ['getusbdeviceptr',['GetUsbDevicePtr',['../class_address_pool.html#aa92d7e8f0f515340ae2dc1679b627056',1,'AddressPool::GetUsbDevicePtr()'],['../class_address_pool_impl.html#aa3e12dda249ef6acbb27592fc8fe1cba',1,'AddressPoolImpl::GetUsbDevicePtr()']]], ['getusbstatus',['getUsbStatus',['../class_p_s4_parser.html#ac5eb7f8b6059fdf3b406244d8ebe4000',1,'PS4Parser']]], diff --git a/search/functions_6.js b/search/functions_6.js index 445412e8..420906ce 100644 --- a/search/functions_6.js +++ b/search/functions_6.js @@ -64,7 +64,7 @@ var searchData= ['getsymkeysup',['getSymKeysUp',['../class_keyboard_report_parser.html#a2df76a06fee8df45a3d0850459887427',1,'KeyboardReportParser']]], ['gettemperature',['getTemperature',['../class_p_s3_b_t.html#ab4f49b61167df001d13b68c7699651b4',1,'PS3BT']]], ['gettotalweight',['getTotalWeight',['../class_w_i_i.html#a966e34bb434984de59706384c8efc1f1',1,'WII']]], - ['gettouchcounter',['getTouchCounter',['../class_p_s4_parser.html#a0b3de008ae8aaa057c571081b1b64e88',1,'PS4Parser::getTouchCounter()'],['../class_p_s5_parser.html#ae539ebc70cdb0abcfc8b1a8c1ba6f819',1,'PS5Parser::getTouchCounter()']]], + ['gettouchcounter',['getTouchCounter',['../class_p_s4_parser.html#a0b3de008ae8aaa057c571081b1b64e88',1,'PS4Parser::getTouchCounter()'],['../class_p_s5_parser.html#ad71e6f6cd11f55e688ab40aa5e1e2934',1,'PS5Parser::getTouchCounter()']]], ['getusb',['GetUsb',['../class_u_s_b_h_i_d.html#ad90bc410a083495a4ddefc2000f67dbd',1,'USBHID']]], ['getusbdeviceptr',['GetUsbDevicePtr',['../class_address_pool.html#aa92d7e8f0f515340ae2dc1679b627056',1,'AddressPool::GetUsbDevicePtr()'],['../class_address_pool_impl.html#aa3e12dda249ef6acbb27592fc8fe1cba',1,'AddressPoolImpl::GetUsbDevicePtr()']]], ['getusbstatus',['getUsbStatus',['../class_p_s4_parser.html#ac5eb7f8b6059fdf3b406244d8ebe4000',1,'PS4Parser']]],