annotate SDL3/SDL_sensor.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 * # CategorySensor
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * SDL sensor management.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 * These APIs grant access to gyros and accelerometers on various platforms.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 * In order to use these functions, SDL_Init() must have been called with the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 * SDL_INIT_SENSOR flag. This causes SDL to scan the system for sensors, and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 * load appropriate drivers.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 #ifndef SDL_sensor_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 #define SDL_sensor_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 #include <SDL3/SDL_error.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 #include <SDL3/SDL_properties.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 /* *INDENT-OFF* */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 /* *INDENT-ON* */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 * The opaque structure used to identify an opened SDL sensor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 typedef struct SDL_Sensor SDL_Sensor;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 * This is a unique ID for a sensor for the time it is connected to the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 * system, and is never reused for the lifetime of the application.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 * The value 0 is an invalid ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 * \since This datatype is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 typedef Uint32 SDL_SensorID;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 * A constant to represent standard gravity for accelerometer sensors.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 * The accelerometer returns the current acceleration in SI meters per second
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 * squared. This measurement includes the force of gravity, so a device at
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 * rest will have an value of SDL_STANDARD_GRAVITY away from the center of the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 * earth, which is a positive Y value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 #define SDL_STANDARD_GRAVITY 9.80665f
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 * The different sensors defined by SDL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 * Additional sensors may be available, using platform dependent semantics.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 * Here are the additional Android sensors:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 * https://developer.android.com/reference/android/hardware/SensorEvent.html#values
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 * Accelerometer sensor notes:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 * The accelerometer returns the current acceleration in SI meters per second
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 * squared. This measurement includes the force of gravity, so a device at
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 * rest will have an value of SDL_STANDARD_GRAVITY away from the center of the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 * earth, which is a positive Y value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 * - `values[0]`: Acceleration on the x axis
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 * - `values[1]`: Acceleration on the y axis
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 * - `values[2]`: Acceleration on the z axis
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 * For phones and tablets held in natural orientation and game controllers
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 * held in front of you, the axes are defined as follows:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 * - -X ... +X : left ... right
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 * - -Y ... +Y : bottom ... top
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 * - -Z ... +Z : farther ... closer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 * The accelerometer axis data is not changed when the device is rotated.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 * Gyroscope sensor notes:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 * The gyroscope returns the current rate of rotation in radians per second.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 * The rotation is positive in the counter-clockwise direction. That is, an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 * observer looking from a positive location on one of the axes would see
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 * positive rotation on that axis when it appeared to be rotating
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 * counter-clockwise.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 * - `values[0]`: Angular speed around the x axis (pitch)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 * - `values[1]`: Angular speed around the y axis (yaw)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 * - `values[2]`: Angular speed around the z axis (roll)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 * For phones and tablets held in natural orientation and game controllers
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 * held in front of you, the axes are defined as follows:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 * - -X ... +X : left ... right
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 * - -Y ... +Y : bottom ... top
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 * - -Z ... +Z : farther ... closer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 * The gyroscope axis data is not changed when the device is rotated.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 * \sa SDL_GetCurrentDisplayOrientation
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 typedef enum SDL_SensorType
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 SDL_SENSOR_ACCEL, /**< Accelerometer */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 SDL_SENSOR_GYRO, /**< Gyroscope */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 SDL_SENSOR_ACCEL_L, /**< Accelerometer for left Joy-Con controller and Wii nunchuk */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 SDL_SENSOR_GYRO_L, /**< Gyroscope for left Joy-Con controller */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 SDL_SENSOR_ACCEL_R, /**< Accelerometer for right Joy-Con controller */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 SDL_SENSOR_GYRO_R, /**< Gyroscope for right Joy-Con controller */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 SDL_SENSOR_COUNT
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 } SDL_SensorType;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 /* Function prototypes */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 * Get a list of currently connected sensors.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 * \param count a pointer filled in with the number of sensors returned, may
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 * be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 * \returns a 0 terminated array of sensor instance IDs or NULL on failure;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 * call SDL_GetError() for more information. This should be freed
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 * with SDL_free() when it is no longer needed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 extern SDL_DECLSPEC SDL_SensorID * SDLCALL SDL_GetSensors(int *count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 * Get the implementation dependent name of a sensor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 * This can be called before any sensors are opened.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 * \param instance_id the sensor instance ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 * \returns the sensor name, or NULL if `instance_id` is not valid.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 extern SDL_DECLSPEC const char * SDLCALL SDL_GetSensorNameForID(SDL_SensorID instance_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 * Get the type of a sensor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 * This can be called before any sensors are opened.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 * \param instance_id the sensor instance ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `instance_id` is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 * not valid.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 extern SDL_DECLSPEC SDL_SensorType SDLCALL SDL_GetSensorTypeForID(SDL_SensorID instance_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 * Get the platform dependent type of a sensor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 * This can be called before any sensors are opened.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 * \param instance_id the sensor instance ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 * \returns the sensor platform dependent type, or -1 if `instance_id` is not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 * valid.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 extern SDL_DECLSPEC int SDLCALL SDL_GetSensorNonPortableTypeForID(SDL_SensorID instance_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 * Open a sensor for use.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 * \param instance_id the sensor instance ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 * \returns an SDL_Sensor object or NULL on failure; call SDL_GetError() for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 * more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 extern SDL_DECLSPEC SDL_Sensor * SDLCALL SDL_OpenSensor(SDL_SensorID instance_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 * Return the SDL_Sensor associated with an instance ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 * \param instance_id the sensor instance ID.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 * \returns an SDL_Sensor object or NULL on failure; call SDL_GetError() for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 * more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219 extern SDL_DECLSPEC SDL_Sensor * SDLCALL SDL_GetSensorFromID(SDL_SensorID instance_id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 * Get the properties associated with a sensor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224 * \param sensor the SDL_Sensor object.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 * \returns a valid property ID on success or 0 on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_GetSensorProperties(SDL_Sensor *sensor);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 * Get the implementation dependent name of a sensor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 * \param sensor the SDL_Sensor object.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236 * \returns the sensor name or NULL on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 extern SDL_DECLSPEC const char * SDLCALL SDL_GetSensorName(SDL_Sensor *sensor);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244 * Get the type of a sensor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246 * \param sensor the SDL_Sensor object to inspect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248 * NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252 extern SDL_DECLSPEC SDL_SensorType SDLCALL SDL_GetSensorType(SDL_Sensor *sensor);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255 * Get the platform dependent type of a sensor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257 * \param sensor the SDL_Sensor object to inspect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258 * \returns the sensor platform dependent type, or -1 if `sensor` is NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 extern SDL_DECLSPEC int SDLCALL SDL_GetSensorNonPortableType(SDL_Sensor *sensor);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
265 * Get the instance ID of a sensor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
266 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
267 * \param sensor the SDL_Sensor object to inspect.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
268 * \returns the sensor instance ID, or 0 on failure; call SDL_GetError() for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
269 * more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
270 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
271 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
272 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
273 extern SDL_DECLSPEC SDL_SensorID SDLCALL SDL_GetSensorID(SDL_Sensor *sensor);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
274
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
275 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
276 * Get the current state of an opened sensor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
277 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
278 * The number of values and interpretation of the data is sensor dependent.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
279 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
280 * \param sensor the SDL_Sensor object to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
281 * \param data a pointer filled with the current sensor state.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
282 * \param num_values the number of values to write to data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
283 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
284 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
285 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
286 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
287 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
288 extern SDL_DECLSPEC bool SDLCALL SDL_GetSensorData(SDL_Sensor *sensor, float *data, int num_values);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
289
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
290 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
291 * Close a sensor previously opened with SDL_OpenSensor().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
292 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
293 * \param sensor the SDL_Sensor object to close.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
294 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
295 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
296 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
297 extern SDL_DECLSPEC void SDLCALL SDL_CloseSensor(SDL_Sensor *sensor);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
298
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
299 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
300 * Update the current state of the open sensors.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
301 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
302 * This is called automatically by the event loop if sensor events are
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
303 * enabled.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
304 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
305 * This needs to be called from the thread that initialized the sensor
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
306 * subsystem.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
307 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
308 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
309 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
310 extern SDL_DECLSPEC void SDLCALL SDL_UpdateSensors(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
311
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
312
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
313 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
314 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
315 /* *INDENT-OFF* */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
316 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
317 /* *INDENT-ON* */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
318 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
319 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
320
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
321 #endif /* SDL_sensor_h_ */