Atlas - testsensor.c
Home / ext / SDL2 / test Lines: 10 | Size: 3423 bytes [Download] [Show on GitHub] [Search similar files] [Raw] [Raw (proxy)][FILE BEGIN]1/* 2 Copyright (C) 1997-2018 Sam Lantinga <[email protected]> 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 17static 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 37static 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 58int 59main(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} 118[FILE END](C) 2025 0x4248 (C) 2025 4248 Media and 4248 Systems, All part of 0x4248 See LICENCE files for more information. Not all files are by 0x4248 always check Licencing.