GamepadDeviceLinux.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * Copyright (C) 2012 Zan Dobersek <zandobersek@gmail.com>
  3. *
  4. * Redistribution and use in source and binary forms, with or without
  5. * modification, are permitted provided that the following conditions are met:
  6. *
  7. * 1. Redistributions of source code must retain the above copyright
  8. * notice, this list of conditions and the following disclaimer.
  9. * 2. Redistributions in binary form must reproduce the above copyright
  10. * notice, this list of conditions and the following disclaimer in the
  11. * documentation and/or other materials provided with the distribution.
  12. *
  13. * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
  14. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  15. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  16. * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
  17. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  18. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  19. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  20. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  21. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  22. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  23. * DAMAGE.
  24. */
  25. #ifndef GamepadDeviceLinux_h
  26. #define GamepadDeviceLinux_h
  27. #if ENABLE(GAMEPAD)
  28. #include <linux/joystick.h>
  29. #include <wtf/Vector.h>
  30. #include <wtf/text/WTFString.h>
  31. namespace WebCore {
  32. class GamepadDeviceLinux {
  33. public:
  34. bool connected() { return m_connected; };
  35. String id() { return m_deviceName; }
  36. unsigned long long timestamp() { return m_lastTimestamp; }
  37. unsigned axesCount() { return m_axes.size(); }
  38. float* axesData() { return m_axes.data(); }
  39. unsigned buttonsCount() { return m_buttons.size(); }
  40. float* buttonsData() { return m_buttons.data(); }
  41. protected:
  42. GamepadDeviceLinux(String deviceFile);
  43. ~GamepadDeviceLinux();
  44. void updateForEvent(struct js_event);
  45. int m_fileDescriptor;
  46. private:
  47. float normalizeAxisValue(short value);
  48. float normalizeButtonValue(short value);
  49. bool m_connected;
  50. String m_deviceName;
  51. unsigned long long m_lastTimestamp;
  52. Vector<float> m_axes;
  53. Vector<float> m_buttons;
  54. };
  55. } // namespace WebCore
  56. #endif // ENABLE(GAMEPAD)
  57. #endif // GamepadDeviceLinux_h