SDL  2.0
testsensor.c File Reference
#include "SDL.h"
+ Include dependency graph for testsensor.c:

Go to the source code of this file.

Functions

static const char * GetSensorTypeString (SDL_SensorType type)
static void HandleSensorEvent (SDL_SensorEvent *event)
int main (int argc, char **argv)

Function Documentation

static const char* GetSensorTypeString ( SDL_SensorType  type)
static

Definition at line 17 of file testsensor.c.

References SDL_SENSOR_ACCEL, SDL_SENSOR_GYRO, SDL_SENSOR_INVALID, SDL_SENSOR_UNKNOWN, and SDL_snprintf.

Referenced by HandleSensorEvent(), and main().

{
static char unknown_type[64];
switch (type)
{
return "SDL_SENSOR_INVALID";
return "SDL_SENSOR_UNKNOWN";
return "SDL_SENSOR_ACCEL";
return "SDL_SENSOR_GYRO";
default:
SDL_snprintf(unknown_type, sizeof(unknown_type), "UNKNOWN (%d)", type);
return unknown_type;
}
}
static void HandleSensorEvent ( SDL_SensorEvent event)
static

Definition at line 37 of file testsensor.c.

References SDL_SensorEvent::data, GetSensorTypeString(), SDL_Log, SDL_SENSOR_ACCEL, SDL_SENSOR_GYRO, SDL_SensorFromInstanceID, SDL_SensorGetType, and SDL_SensorEvent::which.

Referenced by main().

{
SDL_Sensor *sensor = SDL_SensorFromInstanceID(event->which);
if (!sensor) {
SDL_Log("Couldn't get sensor for sensor event\n");
return;
}
switch (SDL_SensorGetType(sensor)) {
SDL_Log("Accelerometer update: %.2f, %.2f, %.2f\n", event->data[0], event->data[1], event->data[2]);
break;
SDL_Log("Gyro update: %.2f, %.2f, %.2f\n", event->data[0], event->data[1], event->data[2]);
break;
default:
SDL_Log("Sensor update for sensor type %s\n", GetSensorTypeString(SDL_SensorGetType(sensor)));
break;
}
}
int main ( int  argc,
char **  argv 
)

Definition at line 59 of file testsensor.c.

References done, GetSensorTypeString(), HandleSensorEvent(), i, NULL, SDL_CreateWindow, SDL_FALSE, SDL_GetError, SDL_Init, SDL_INIT_SENSOR, SDL_KEYUP, SDL_Log, SDL_MOUSEBUTTONUP, SDL_NumSensors, SDL_PollEvent, SDL_Quit, SDL_QUIT, SDL_SENSOR_UNKNOWN, SDL_SensorGetDeviceInstanceID, SDL_SensorGetDeviceName, SDL_SensorGetDeviceNonPortableType, SDL_SensorGetDeviceType, SDL_SensorOpen, SDL_SENSORUPDATE, SDL_TRUE, SDL_WINDOW_FULLSCREEN_DESKTOP, SDL_Event::sensor, and SDL_Event::type.

{
int i;
int num_sensors, num_opened;
/* Load the SDL library */
SDL_Log("Couldn't initialize SDL: %s\n", SDL_GetError());
return (1);
}
num_sensors = SDL_NumSensors();
num_opened = 0;
SDL_Log("There are %d sensors available\n", num_sensors);
for (i = 0; i < num_sensors; ++i) {
SDL_Log("Sensor %d: %s, type %s, platform type %d\n",
SDL_Sensor *sensor = SDL_SensorOpen(i);
if (sensor == NULL) {
SDL_Log("Couldn't open sensor %d: %s\n", SDL_SensorGetDeviceInstanceID(i), SDL_GetError());
} else {
++num_opened;
}
}
}
SDL_Log("Opened %d sensors\n", num_opened);
if (num_opened > 0) {
SDL_CreateWindow("Sensor Test", 0, 0, 0, 0, SDL_WINDOW_FULLSCREEN_DESKTOP);
while (!done) {
while (SDL_PollEvent(&event) > 0) {
switch (event.type) {
break;
case SDL_KEYUP:
case SDL_QUIT:
done = SDL_TRUE;
break;
default:
break;
}
}
}
}
return (0);
}