Monado OpenXR Runtime
Loading...
Searching...
No Matches
pssense_protocol.h File Reference

PlayStation Sense controller prober and driver code. More...

#include "xrt/xrt_byte_order.h"
#include "math/m_api.h"
Include dependency graph for pssense_protocol.h:

Go to the source code of this file.

Data Structures

struct  pssense_input_report
 HID input report data packet. More...
 
struct  pssense_output_adaptive_trigger_settings
 
struct  pssense_led_settings
 
struct  pssense_output_settings
 
struct  pssense_ps5_output_report
 HID output report data packet matching the PS5 layout, with PCM haptics. More...
 
struct  pssense_feature_report
 HID output report data packet. More...
 

Macros

#define NS_TO_IMU_TICKS(ns)   (((uint64_t)(ns) * 3) / 1000)
 
#define IMU_TICKS_TO_NS(ticks)   (((uint64_t)(ticks) * 1000) / 3)
 
#define PCM_SAMPLE_RATE   3000
 
#define PCM_HAPTIC_BUF_SIZE   32
 
#define CALIBRATION_DATA_PART_ID_1   0
 
#define CALIBRATION_DATA_PART_ID_2   0x81
 
#define INPUT_REPORT_LENGTH   78
 
#define PS5_OUTPUT_REPORT_LENGTH   78
 
#define OUTPUT_SETTINGS_ENABLE_VIBRATION_BITS    (PSSENSE_OUTPUT_SETTINGS_FLAG1_UNK0 | PSSENSE_OUTPUT_SETTINGS_FLAG1_RUMBLE_EMULATION)
 
#define OUTPUT_SETTINGS_VIBRATE_MODE_HIGH_120HZ   0x00
 
#define OUTPUT_SETTINGS_VIBRATE_MODE_LOW_60HZ   (PSSENSE_OUTPUT_SETTINGS_FLAG1_UNK5)
 
#define OUTPUT_SETTINGS_VIBRATE_MODE_CLASSIC_RUMBLE   (PSSENSE_OUTPUT_SETTINGS_FLAG1_UNK6)
 
#define OUTPUT_SETTINGS_VIBRATE_MODE_DIET_RUMBLE    (PSSENSE_OUTPUT_SETTINGS_FLAG1_UNK5 | PSSENSE_OUTPUT_SETTINGS_FLAG1_UNK6)
 
#define FEATURE_REPORT_LENGTH   64
 
#define CALIBRATION_DATA_LENGTH   116
 

Enumerations

enum  pssense_output_settings_flag1 {
  PSSENSE_OUTPUT_SETTINGS_FLAG1_UNK0 = 1 << 0 , PSSENSE_OUTPUT_SETTINGS_FLAG1_RUMBLE_EMULATION = 1 << 1 , PSSENSE_OUTPUT_SETTINGS_FLAG1_ADAPTIVE_TRIGGER_ENABLE = 1 << 2 , PSSENSE_OUTPUT_SETTINGS_FLAG1_INTENSITY_INCREASE_SET_ENABLE = 1 << 3 ,
  PSSENSE_OUTPUT_SETTINGS_FLAG1_INTENSITY_REDUCTION_SET_ENABLE = 1 << 4 , PSSENSE_OUTPUT_SETTINGS_FLAG1_UNK5 = 1 << 5 , PSSENSE_OUTPUT_SETTINGS_FLAG1_UNK6 = 1 << 6 , PSSENSE_OUTPUT_SETTINGS_FLAG1_UNK7 = 1 << 7
}
 
enum  pssense_output_settings_flag2 {
  PSSENSE_OUTPUT_SETTINGS_FLAG2_UNK0 = 1 << 0 , PSSENSE_OUTPUT_SETTINGS_FLAG2_UNK1 = 1 << 1 , PSSENSE_OUTPUT_SETTINGS_FLAG2_STATUS_LED_SET_ENABLE = 1 << 2 , PSSENSE_OUTPUT_SETTINGS_FLAG2_UNK3 = 1 << 3 ,
  PSSENSE_OUTPUT_SETTINGS_FLAG2_UNK4 = 1 << 4 , PSSENSE_OUTPUT_SETTINGS_FLAG2_UNK5 = 1 << 5 , PSSENSE_OUTPUT_SETTINGS_FLAG2_UNK6 = 1 << 6 , PSSENSE_OUTPUT_SETTINGS_FLAG2_UNK7 = 1 << 7
}
 
enum  pssense_adaptive_trigger_mode {
  TRIGGER_FEEDBACK_MODE_OFF = 0x05 , TRIGGER_FEEDBACK_MODE_SIMPLE_FEEDBACK = 0x01 , TRIGGER_FEEDBACK_MODE_SIMPLE_WEAPON = 0x02 , TRIGGER_FEEDBACK_MODE_SIMPLE_VIBRATION = 0x06 ,
  TRIGGER_FEEDBACK_MODE_LIMITED_FEEDBACK = 0x11 , TRIGGER_FEEDBACK_MODE_LIMITED_WEAPON = 0x12 , TRIGGER_FEEDBACK_MODE_FEEDBACK = 0x21 , TRIGGER_FEEDBACK_MODE_SLOPE_FEEDBACK = 0x22 ,
  TRIGGER_FEEDBACK_MODE_WEAPON = 0x25 , TRIGGER_FEEDBACK_MODE_VIBRATION = 0x26 , TRIGGER_FEEDBACK_MODE_GALLOPING = 0x23 , TRIGGER_FEEDBACK_MODE_MACHINE = 0x27
}
 
enum  pssense_led_sync_phase {
  LED_SYNC_PHASE_INIT = 0 , LED_SYNC_PHASE_PRESCAN = 1 , LED_SYNC_PHASE_BROAD = 2 , LED_SYNC_PHASE_BG = 3 ,
  LED_SYNC_PHASE_STABLE = 4 , LED_SYNC_PHASE_LED_ALL_OFF = 5 , LED_SYNC_PHASE_LED_ALL_ON = 6 , LED_SYNC_PHASE_DEBUG = 7
}
 

Variables

const uint8_t INPUT_REPORT_ID = 0x31
 
const uint8_t OUTPUT_REPORT_ID = 0x31
 
const uint8_t OUTPUT_REPORT_TAG = 0x10
 
const uint8_t CALIBRATION_DATA_FEATURE_REPORT_ID = 0x05
 
const uint8_t INPUT_REPORT_CRC32_SEED = 0xa1
 
const uint8_t OUTPUT_REPORT_CRC32_SEED = 0xa2
 
const uint8_t FEATURE_REPORT_CRC32_SEED = 0xa3
 
const double PSSENSE_GYRO_SCALE_DEG = 180.0 / 1024
 Gyro read value range is +-32768.
 
const double PSSENSE_ACCEL_SCALE = MATH_GRAVITY_M_S2 / 4096
 Accelerometer read value range is +-32768 and covers +-8 g.
 
const uint8_t CHARGE_STATE_DISCHARGING = 0x00
 
const uint8_t CHARGE_STATE_CHARGING = 0x01
 
const uint8_t CHARGE_STATE_FULL = 0x02
 
const uint8_t CHARGE_STATE_ABNORMAL_VOLTAGE = 0x0A
 
const uint8_t CHARGE_STATE_ABNORMAL_TEMP = 0x0B
 
const uint8_t CHARGE_STATE_CHARGING_ERROR = 0x0F
 

Detailed Description

PlayStation Sense controller prober and driver code.

Author
Jarett Millard jaret.nosp@m.t.mi.nosp@m.llard.nosp@m.@gma.nosp@m.il.co.nosp@m.m
Beyley Cardellio ep1cm.nosp@m.1n10.nosp@m.n123@.nosp@m.gmai.nosp@m.l.com

Enumeration Type Documentation

◆ pssense_output_settings_flag2

Enumerator
PSSENSE_OUTPUT_SETTINGS_FLAG2_STATUS_LED_SET_ENABLE 

Used to mark whether to read the status LED enable bool or not.

Variable Documentation

◆ PSSENSE_ACCEL_SCALE

const double PSSENSE_ACCEL_SCALE = MATH_GRAVITY_M_S2 / 4096

Accelerometer read value range is +-32768 and covers +-8 g.

◆ PSSENSE_GYRO_SCALE_DEG

const double PSSENSE_GYRO_SCALE_DEG = 180.0 / 1024

Gyro read value range is +-32768.