SDL  2.0
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 
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 
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",
80 
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) {
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 }
SDL.h
SDL_GetError
#define SDL_GetError
Definition: SDL_dynapi_overrides.h:113
SDL_SENSOR_UNKNOWN
@ SDL_SENSOR_UNKNOWN
Definition: SDL_sensor.h:72
SDL_PollEvent
#define SDL_PollEvent
Definition: SDL_dynapi_overrides.h:122
NULL
#define NULL
Definition: begin_code.h:164
SDL_KEYUP
@ SDL_KEYUP
Definition: SDL_events.h:97
SDL_SensorGetType
#define SDL_SensorGetType
Definition: SDL_dynapi_overrides.h:691
SDL_MOUSEBUTTONUP
@ SDL_MOUSEBUTTONUP
Definition: SDL_events.h:107
SDL_WINDOW_FULLSCREEN_DESKTOP
@ SDL_WINDOW_FULLSCREEN_DESKTOP
Definition: SDL_video.h:111
SDL_CreateWindow
#define SDL_CreateWindow
Definition: SDL_dynapi_overrides.h:514
HandleSensorEvent
static void HandleSensorEvent(SDL_SensorEvent *event)
Definition: testsensor.c:37
SDL_SensorFromInstanceID
#define SDL_SensorFromInstanceID
Definition: SDL_dynapi_overrides.h:689
SDL_SENSOR_GYRO
@ SDL_SENSOR_GYRO
Definition: SDL_sensor.h:74
SDL_INIT_SENSOR
#define SDL_INIT_SENSOR
Definition: SDL.h:84
SDL_SensorType
SDL_SensorType
Definition: SDL_sensor.h:70
event
struct _cl_event * event
Definition: SDL_opengl_glext.h:2649
done
int done
Definition: checkkeys.c:28
SDL_SensorOpen
#define SDL_SensorOpen
Definition: SDL_dynapi_overrides.h:688
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:31
SDL_SENSORUPDATE
@ SDL_SENSORUPDATE
Definition: SDL_events.h:151
SDL_SensorEvent
Sensor event structure (event.sensor.*)
Definition: SDL_events.h:499
SDL_QUIT
@ SDL_QUIT
Definition: SDL_events.h:60
SDL_SensorGetDeviceInstanceID
#define SDL_SensorGetDeviceInstanceID
Definition: SDL_dynapi_overrides.h:687
SDL_Quit
#define SDL_Quit
Definition: SDL_dynapi_overrides.h:58
SDL_TRUE
@ SDL_TRUE
Definition: SDL_stdinc.h:164
SDL_SENSOR_INVALID
@ SDL_SENSOR_INVALID
Definition: SDL_sensor.h:71
SDL_SensorGetDeviceNonPortableType
#define SDL_SensorGetDeviceNonPortableType
Definition: SDL_dynapi_overrides.h:686
SDL_SensorGetDeviceName
#define SDL_SensorGetDeviceName
Definition: SDL_dynapi_overrides.h:684
SDL_snprintf
#define SDL_snprintf
Definition: SDL_dynapi_overrides.h:40
SDL_bool
SDL_bool
Definition: SDL_stdinc.h:162
main
int main(int argc, char **argv)
Definition: testsensor.c:59
SDL_Event
General event structure.
Definition: SDL_events.h:558
SDL_SENSOR_ACCEL
@ SDL_SENSOR_ACCEL
Definition: SDL_sensor.h:73
SDL_NumSensors
#define SDL_NumSensors
Definition: SDL_dynapi_overrides.h:683
SDL_FALSE
@ SDL_FALSE
Definition: SDL_stdinc.h:163
SDL_Init
#define SDL_Init
Definition: SDL_dynapi_overrides.h:54
GetSensorTypeString
static const char * GetSensorTypeString(SDL_SensorType type)
Definition: testsensor.c:17
type
GLuint GLuint GLsizei GLenum type
Definition: SDL_opengl.h:1571
i
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50
SDL_SensorGetDeviceType
#define SDL_SensorGetDeviceType
Definition: SDL_dynapi_overrides.h:685