22const uint8_t INPUT_REPORT_ID = 0x31;
23const uint8_t OUTPUT_REPORT_ID = 0x31;
24const uint8_t OUTPUT_REPORT_TAG = 0x10;
25const uint8_t CALIBRATION_DATA_FEATURE_REPORT_ID = 0x05;
26const uint8_t CALIBRATION_DATA_PART_ID_1 = 0;
27const uint8_t CALIBRATION_DATA_PART_ID_2 = 0x81;
29const uint8_t INPUT_REPORT_CRC32_SEED = 0xa1;
30const uint8_t OUTPUT_REPORT_CRC32_SEED = 0xa2;
31const uint8_t FEATURE_REPORT_CRC32_SEED = 0xa3;
58const uint8_t CHARGE_STATE_DISCHARGING = 0x00;
59const uint8_t CHARGE_STATE_CHARGING = 0x01;
60const uint8_t CHARGE_STATE_FULL = 0x02;
61const uint8_t CHARGE_STATE_ABNORMAL_VOLTAGE = 0x0A;
62const uint8_t CHARGE_STATE_ABNORMAL_TEMP = 0x0B;
63const uint8_t CHARGE_STATE_CHARGING_ERROR = 0x0F;
65#define INPUT_REPORT_LENGTH 78
75 uint8_t trigger_value;
76 uint8_t trigger_proximity;
77 uint8_t squeeze_proximity;
87 uint8_t battery_state;
89 __le32 host_timestamp;
90 __le32 device_timestamp;
94 uint8_t crc_failure_count;
98static_assert(
sizeof(
struct pssense_input_report) == INPUT_REPORT_LENGTH,
"Incorrect input report struct length");
100#define OUTPUT_REPORT_LENGTH 78
109 uint8_t feedback_flags;
111 uint8_t vibration_amplitude;
113 uint8_t trigger_feedback_mode;
115 __le32 host_timestamp;
116 uint8_t unknown3[19];
121static_assert(
sizeof(
struct pssense_output_report) == OUTPUT_REPORT_LENGTH,
"Incorrect output report struct length");
123#define FEATURE_REPORT_LENGTH 64
124#define CALIBRATION_DATA_LENGTH 116
133 uint8_t data[CALIBRATION_DATA_LENGTH / 2];
136static_assert(
sizeof(
struct pssense_feature_report) == FEATURE_REPORT_LENGTH,
"Incorrect feature report struct length");
#define MATH_GRAVITY_M_S2
Standard gravity acceleration constant.
Definition m_api.h:53
C interface to math library.
const uint8_t VIBRATE_MODE_CLASSIC_RUMBLE
Emulates a legacy vibration motor.
Definition pssense_protocol.h:45
const double PSSENSE_ACCEL_SCALE
Accelerometer read value range is +-32768 and covers +-8 g.
Definition pssense_protocol.h:36
const uint8_t TRIGGER_FEEDBACK_MODE_CATCH
A single point of resistance at the beginning of the trigger, right before the click flag is activate...
Definition pssense_protocol.h:56
const uint8_t VIBRATE_ENABLE_BITS
Flag bits to enable setting vibration in an output report.
Definition pssense_protocol.h:39
const uint8_t TRIGGER_FEEDBACK_ENABLE_BITS
Flag bits to enable setting trigger feedback in an output report.
Definition pssense_protocol.h:50
const uint8_t TRIGGER_FEEDBACK_MODE_CONSTANT
Constant resistance throughout the trigger movement.
Definition pssense_protocol.h:54
const double PSSENSE_GYRO_SCALE_DEG
Gyro read value range is +-32768.
Definition pssense_protocol.h:34
const uint8_t VIBRATE_MODE_LOW_60HZ
Pure 60Hz vibration.
Definition pssense_protocol.h:43
const uint8_t VIBRATE_MODE_DIET_RUMBLE
Softer rumble emulation, like an engine running.
Definition pssense_protocol.h:47
const uint8_t TRIGGER_FEEDBACK_MODE_NONE
Clear the trigger feedback setting.
Definition pssense_protocol.h:52
const uint8_t VIBRATE_MODE_HIGH_120HZ
Pure 120Hz vibration.
Definition pssense_protocol.h:41
HID output report data packet.
Definition pssense_protocol.h:130
HID output report data packet.
Definition pssense_protocol.h:105
Endian-specific byte order defines.