ovr_sdk

annotate LibOVR/Src/Sensors/OVR_DeviceConstants.h @ 0:1b39a1b46319

initial 0.4.4
author John Tsiombikas <nuclear@member.fsf.org>
date Wed, 14 Jan 2015 06:51:16 +0200
parents
children
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