SDL
2.0
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
testsensor.c
Go to the documentation of this file.
1
/*
2
Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
3
4
This software is provided 'as-is', without any express or implied
5
warranty. In no event will the authors be held liable for any damages
6
arising from the use of this software.
7
8
Permission is granted to anyone to use this software for any purpose,
9
including commercial applications, and to alter it and redistribute it
10
freely.
11
*/
12
13
/* Simple test of the SDL sensor code */
14
15
#include "
SDL.h
"
16
17
static
const
char
*
GetSensorTypeString
(
SDL_SensorType
type
)
18
{
19
static
char
unknown_type[64];
20
21
switch
(type)
22
{
23
case
SDL_SENSOR_INVALID
:
24
return
"SDL_SENSOR_INVALID"
;
25
case
SDL_SENSOR_UNKNOWN
:
26
return
"SDL_SENSOR_UNKNOWN"
;
27
case
SDL_SENSOR_ACCEL
:
28
return
"SDL_SENSOR_ACCEL"
;
29
case
SDL_SENSOR_GYRO
:
30
return
"SDL_SENSOR_GYRO"
;
31
default
:
32
SDL_snprintf
(unknown_type,
sizeof
(unknown_type),
"UNKNOWN (%d)"
, type);
33
return
unknown_type;
34
}
35
}
36
37
static
void
HandleSensorEvent
(
SDL_SensorEvent
*
event
)
38
{
39
SDL_Sensor *sensor =
SDL_SensorFromInstanceID
(event->
which
);
40
if
(!sensor) {
41
SDL_Log
(
"Couldn't get sensor for sensor event\n"
);
42
return
;
43
}
44
45
switch
(
SDL_SensorGetType
(sensor)) {
46
case
SDL_SENSOR_ACCEL
:
47
SDL_Log
(
"Accelerometer update: %.2f, %.2f, %.2f\n"
, event->
data
[0], event->
data
[1], event->
data
[2]);
48
break
;
49
case
SDL_SENSOR_GYRO
:
50
SDL_Log
(
"Gyro update: %.2f, %.2f, %.2f\n"
, event->
data
[0], event->
data
[1], event->
data
[2]);
51
break
;
52
default
:
53
SDL_Log
(
"Sensor update for sensor type %s\n"
,
GetSensorTypeString
(
SDL_SensorGetType
(sensor)));
54
break
;
55
}
56
}
57
58
int
59
main
(
int
argc,
char
**argv)
60
{
61
int
i
;
62
int
num_sensors, num_opened;
63
64
/* Load the SDL library */
65
if
(
SDL_Init
(
SDL_INIT_SENSOR
) < 0) {
66
SDL_Log
(
"Couldn't initialize SDL: %s\n"
,
SDL_GetError
());
67
return
(1);
68
}
69
70
num_sensors =
SDL_NumSensors
();
71
num_opened = 0;
72
73
SDL_Log
(
"There are %d sensors available\n"
, num_sensors);
74
for
(i = 0; i < num_sensors; ++
i
) {
75
SDL_Log
(
"Sensor %d: %s, type %s, platform type %d\n"
,
76
SDL_SensorGetDeviceInstanceID
(i),
77
SDL_SensorGetDeviceName
(i),
78
GetSensorTypeString
(
SDL_SensorGetDeviceType
(i)),
79
SDL_SensorGetDeviceNonPortableType
(i));
80
81
if
(
SDL_SensorGetDeviceType
(i) !=
SDL_SENSOR_UNKNOWN
) {
82
SDL_Sensor *sensor =
SDL_SensorOpen
(i);
83
if
(sensor ==
NULL
) {
84
SDL_Log
(
"Couldn't open sensor %d: %s\n"
,
SDL_SensorGetDeviceInstanceID
(i),
SDL_GetError
());
85
}
else
{
86
++num_opened;
87
}
88
}
89
}
90
SDL_Log
(
"Opened %d sensors\n"
, num_opened);
91
92
if
(num_opened > 0) {
93
SDL_bool
done
=
SDL_FALSE
;
94
SDL_Event
event
;
95
96
SDL_CreateWindow
(
"Sensor Test"
, 0, 0, 0, 0,
SDL_WINDOW_FULLSCREEN_DESKTOP
);
97
while
(!done) {
98
while
(
SDL_PollEvent
(&event) > 0) {
99
switch
(event.
type
) {
100
case
SDL_SENSORUPDATE
:
101
HandleSensorEvent
(&event.
sensor
);
102
break
;
103
case
SDL_MOUSEBUTTONUP
:
104
case
SDL_KEYUP
:
105
case
SDL_QUIT
:
106
done =
SDL_TRUE
;
107
break
;
108
default
:
109
break
;
110
}
111
}
112
}
113
}
114
115
SDL_Quit
();
116
return
(0);
117
}
test
testsensor.c
Generated on Sun Jun 26 2022 23:07:20 for SDL by
1.8.1.2