rev |
line source |
nuclear@0
|
1 /************************************************************************************
|
nuclear@0
|
2
|
nuclear@0
|
3 Filename : OVR_DeviceConstants.h
|
nuclear@0
|
4 Content : Device constants
|
nuclear@0
|
5 Created : February 5, 2013
|
nuclear@0
|
6 Authors : Lee Cooper
|
nuclear@0
|
7
|
nuclear@0
|
8 Copyright : Copyright 2014 Oculus VR, LLC All Rights reserved.
|
nuclear@0
|
9
|
nuclear@0
|
10 Licensed under the Oculus VR Rift SDK License Version 3.2 (the "License");
|
nuclear@0
|
11 you may not use the Oculus VR Rift SDK except in compliance with the License,
|
nuclear@0
|
12 which is provided at the time of installation or download, or which
|
nuclear@0
|
13 otherwise accompanies this software in either electronic or hard copy form.
|
nuclear@0
|
14
|
nuclear@0
|
15 You may obtain a copy of the License at
|
nuclear@0
|
16
|
nuclear@0
|
17 http://www.oculusvr.com/licenses/LICENSE-3.2
|
nuclear@0
|
18
|
nuclear@0
|
19 Unless required by applicable law or agreed to in writing, the Oculus VR SDK
|
nuclear@0
|
20 distributed under the License is distributed on an "AS IS" BASIS,
|
nuclear@0
|
21 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
nuclear@0
|
22 See the License for the specific language governing permissions and
|
nuclear@0
|
23 limitations under the License.
|
nuclear@0
|
24
|
nuclear@0
|
25 *************************************************************************************/
|
nuclear@0
|
26
|
nuclear@0
|
27 #ifndef OVR_DeviceConstants_h
|
nuclear@0
|
28 #define OVR_DeviceConstants_h
|
nuclear@0
|
29
|
nuclear@0
|
30 #include "../Kernel/OVR_Math.h"
|
nuclear@0
|
31
|
nuclear@0
|
32 // CAPI forward declarations.
|
nuclear@0
|
33 struct ovrSensorData_;
|
nuclear@0
|
34 typedef struct ovrSensorData_ ovrSensorData;
|
nuclear@0
|
35
|
nuclear@0
|
36 namespace OVR {
|
nuclear@0
|
37
|
nuclear@0
|
38
|
nuclear@0
|
39 //-------------------------------------------------------------------------------------
|
nuclear@0
|
40 // Different device types supported by OVR; this type is reported by DeviceBase::GetType.
|
nuclear@0
|
41 //
|
nuclear@0
|
42 enum DeviceType
|
nuclear@0
|
43 {
|
nuclear@0
|
44 Device_None,
|
nuclear@0
|
45 Device_Manager,
|
nuclear@0
|
46 Device_Sensor,
|
nuclear@0
|
47 Device_LatencyTester,
|
nuclear@0
|
48 Device_BootLoader,
|
nuclear@0
|
49 Device_All = 0xFF // Set for enumeration only, to enumerate all device types.
|
nuclear@0
|
50 };
|
nuclear@0
|
51
|
nuclear@0
|
52
|
nuclear@0
|
53
|
nuclear@0
|
54 //-------------------------------------------------------------------------------------
|
nuclear@0
|
55 // Different lens distortion types supported by devices.
|
nuclear@0
|
56 //
|
nuclear@0
|
57 enum DistortionEqnType
|
nuclear@0
|
58 {
|
nuclear@0
|
59 Distortion_No_Override = -1,
|
nuclear@0
|
60 // These two are leagcy and deprecated.
|
nuclear@0
|
61 Distortion_Poly4 = 0, // scale = (K0 + K1*r^2 + K2*r^4 + K3*r^6)
|
nuclear@0
|
62 Distortion_RecipPoly4 = 1, // scale = 1/(K0 + K1*r^2 + K2*r^4 + K3*r^6)
|
nuclear@0
|
63
|
nuclear@0
|
64 // CatmullRom10 is the preferred distortion format.
|
nuclear@0
|
65 Distortion_CatmullRom10 = 2, // scale = Catmull-Rom spline through points (1.0, K[1]...K[9])
|
nuclear@0
|
66
|
nuclear@0
|
67 Distortion_LAST // For ease of enumeration.
|
nuclear@0
|
68 };
|
nuclear@0
|
69
|
nuclear@0
|
70
|
nuclear@0
|
71 //-------------------------------------------------------------------------------------
|
nuclear@0
|
72 // HMD types.
|
nuclear@0
|
73 //
|
nuclear@0
|
74 enum HmdTypeEnum
|
nuclear@0
|
75 {
|
nuclear@0
|
76 HmdType_None,
|
nuclear@0
|
77
|
nuclear@0
|
78 HmdType_DKProto, // First duct-tape model, never sold.
|
nuclear@0
|
79 HmdType_DK1, // DevKit1 - on sale to developers.
|
nuclear@0
|
80 HmdType_DKHDProto, // DKHD - shown at various shows, never sold.
|
nuclear@0
|
81 HmdType_DKHD2Proto, // DKHD2, 5.85-inch panel, never sold.
|
nuclear@0
|
82 HmdType_DKHDProto566Mi, // DKHD, 5.66-inch panel, never sold.
|
nuclear@0
|
83 HmdType_CrystalCoveProto, // Crystal Cove, 5.66-inch panel, shown at shows but never sold.
|
nuclear@0
|
84 HmdType_DK2,
|
nuclear@0
|
85
|
nuclear@0
|
86 // Reminder - this header file is public - codenames only!
|
nuclear@0
|
87
|
nuclear@0
|
88 HmdType_Unknown, // Used for unnamed HW lab experiments.
|
nuclear@0
|
89
|
nuclear@0
|
90 HmdType_LAST
|
nuclear@0
|
91 };
|
nuclear@0
|
92
|
nuclear@0
|
93
|
nuclear@0
|
94 //-------------------------------------------------------------------------------------
|
nuclear@0
|
95 // HMD shutter types.
|
nuclear@0
|
96 //
|
nuclear@0
|
97 enum HmdShutterTypeEnum
|
nuclear@0
|
98 {
|
nuclear@0
|
99 HmdShutter_Global,
|
nuclear@0
|
100 HmdShutter_RollingTopToBottom,
|
nuclear@0
|
101 HmdShutter_RollingLeftToRight,
|
nuclear@0
|
102 HmdShutter_RollingRightToLeft,
|
nuclear@0
|
103 // TODO:
|
nuclear@0
|
104 // color-sequential e.g. LCOS?
|
nuclear@0
|
105 // alternate eyes?
|
nuclear@0
|
106 // alternate columns?
|
nuclear@0
|
107 // outside-in?
|
nuclear@0
|
108
|
nuclear@0
|
109 HmdShutter_LAST
|
nuclear@0
|
110 };
|
nuclear@0
|
111
|
nuclear@0
|
112
|
nuclear@0
|
113
|
nuclear@0
|
114 //-------------------------------------------------------------------------------------
|
nuclear@0
|
115 // For headsets that use eye cups
|
nuclear@0
|
116 //
|
nuclear@0
|
117 enum EyeCupType
|
nuclear@0
|
118 {
|
nuclear@0
|
119 // Public lenses
|
nuclear@0
|
120 EyeCup_DK1A = 0,
|
nuclear@0
|
121 EyeCup_DK1B = 1,
|
nuclear@0
|
122 EyeCup_DK1C = 2,
|
nuclear@0
|
123
|
nuclear@0
|
124 EyeCup_DK2A = 3,
|
nuclear@0
|
125
|
nuclear@0
|
126 // Internal R&D codenames.
|
nuclear@0
|
127 // Reminder - this header file is public - codenames only!
|
nuclear@0
|
128 EyeCup_DKHD2A,
|
nuclear@0
|
129 EyeCup_OrangeA,
|
nuclear@0
|
130 EyeCup_RedA,
|
nuclear@0
|
131 EyeCup_PinkA,
|
nuclear@0
|
132 EyeCup_BlueA,
|
nuclear@0
|
133 EyeCup_Delilah1A,
|
nuclear@0
|
134 EyeCup_Delilah2A,
|
nuclear@0
|
135 EyeCup_JamesA,
|
nuclear@0
|
136 EyeCup_SunMandalaA,
|
nuclear@0
|
137
|
nuclear@0
|
138 EyeCup_LAST
|
nuclear@0
|
139 };
|
nuclear@0
|
140
|
nuclear@0
|
141
|
nuclear@0
|
142 //-----------------------------------------------------------------------------
|
nuclear@0
|
143 // BodyFrameState
|
nuclear@0
|
144 //
|
nuclear@0
|
145 #pragma pack(push, 8)
|
nuclear@0
|
146
|
nuclear@0
|
147 class SensorDataType
|
nuclear@0
|
148 {
|
nuclear@0
|
149 public:
|
nuclear@0
|
150
|
nuclear@0
|
151 SensorDataType() : Temperature(0.0f), AbsoluteTimeSeconds(0.0) { }
|
nuclear@0
|
152
|
nuclear@0
|
153 // C-interop support
|
nuclear@0
|
154 SensorDataType(const ovrSensorData& s);
|
nuclear@0
|
155 operator ovrSensorData () const;
|
nuclear@0
|
156
|
nuclear@0
|
157 Vector3f Acceleration; // in m/s^2
|
nuclear@0
|
158 Vector3f RotationRate; // in rad/s
|
nuclear@0
|
159 Vector3f MagneticField; // in Gauss
|
nuclear@0
|
160
|
nuclear@0
|
161 float Temperature; // in degrees Celsius
|
nuclear@0
|
162
|
nuclear@0
|
163 // The absolute time from the host computers perspective that the message should be
|
nuclear@0
|
164 // interpreted as. This is based on incoming timestamp and processed by a filter
|
nuclear@0
|
165 // that syncs the clocks while attempting to keep the distance between messages
|
nuclear@0
|
166 // device clock matching.
|
nuclear@0
|
167 //
|
nuclear@0
|
168 // Integration should use TimeDelta, but prediction into the future should derive
|
nuclear@0
|
169 // the delta time from PredictToSeconds - AbsoluteTimeSeconds.
|
nuclear@0
|
170 //
|
nuclear@0
|
171 // This value will generally be <= the return from a call to ovr_GetTimeInSeconds(),
|
nuclear@0
|
172 // but could be greater by under 1 ms due to system time update interrupt delays.
|
nuclear@0
|
173 //
|
nuclear@0
|
174 double AbsoluteTimeSeconds;
|
nuclear@0
|
175 };
|
nuclear@0
|
176
|
nuclear@0
|
177 static_assert((sizeof(SensorDataType) == 3*sizeof(Vector3f) + sizeof(float) + sizeof(double)), "sizeof(SensorDataType) failure");
|
nuclear@0
|
178
|
nuclear@0
|
179 #pragma pack(pop)
|
nuclear@0
|
180
|
nuclear@0
|
181
|
nuclear@0
|
182 } // namespace OVR
|
nuclear@0
|
183
|
nuclear@0
|
184 #endif
|