Unreviewed, rolling out r170244.
[WebKit-https.git] / Source / WebCore / platform / linux / GamepadDeviceLinux.h
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
26 #ifndef GamepadDeviceLinux_h
27 #define GamepadDeviceLinux_h
28
29 #if ENABLE(GAMEPAD)
30
31 #include <linux/joystick.h>
32 #include <wtf/Vector.h>
33 #include <wtf/text/WTFString.h>
34
35 namespace WebCore {
36
37 class GamepadDeviceLinux {
38 public:
39     bool connected() { return m_connected; };
40
41     String id() { return m_deviceName; }
42     unsigned long long timestamp() { return m_lastTimestamp; }
43
44     unsigned axesCount() { return m_axes.size(); }
45     float* axesData() { return m_axes.data(); }
46
47     unsigned buttonsCount() { return m_buttons.size(); }
48     float* buttonsData() { return m_buttons.data(); }
49
50 protected:
51     GamepadDeviceLinux(String deviceFile);
52     ~GamepadDeviceLinux();
53
54     void updateForEvent(struct js_event);
55     int m_fileDescriptor;
56
57 private:
58     float normalizeAxisValue(short value);
59     float normalizeButtonValue(short value);
60
61     bool m_connected;
62     String m_deviceName;
63     unsigned long long m_lastTimestamp;
64
65     Vector<float> m_axes;
66     Vector<float> m_buttons;
67 };
68
69 } // namespace WebCore
70
71 #endif // ENABLE(GAMEPAD)
72
73 #endif // GamepadDeviceLinux_h