oculus1

diff libovr/Src/OVR_DeviceMessages.h @ 1:e2f9e4603129

added LibOVR and started a simple vr wrapper.
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 14 Sep 2013 16:14:59 +0300
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/libovr/Src/OVR_DeviceMessages.h	Sat Sep 14 16:14:59 2013 +0300
     1.3 @@ -0,0 +1,162 @@
     1.4 +/************************************************************************************
     1.5 +
     1.6 +PublicHeader:   OVR.h
     1.7 +Filename    :   OVR_DeviceMessages.h
     1.8 +Content     :   Definition of messages generated by devices
     1.9 +Created     :   February 5, 2013
    1.10 +Authors     :   Lee Cooper
    1.11 +
    1.12 +Copyright   :   Copyright 2013 Oculus VR, Inc. All Rights reserved.
    1.13 +
    1.14 +Use of this software is subject to the terms of the Oculus license
    1.15 +agreement provided at the time of installation or download, or which
    1.16 +otherwise accompanies this software in either electronic or hard copy form.
    1.17 +
    1.18 +*************************************************************************************/
    1.19 +
    1.20 +#ifndef OVR_DeviceMessages_h
    1.21 +#define OVR_DeviceMessages_h
    1.22 +
    1.23 +#include "OVR_DeviceConstants.h"
    1.24 +#include "OVR_DeviceHandle.h"
    1.25 +
    1.26 +#include "Kernel/OVR_Math.h"
    1.27 +#include "Kernel/OVR_Array.h"
    1.28 +#include "Kernel/OVR_Color.h"
    1.29 +
    1.30 +namespace OVR {
    1.31 +
    1.32 +class DeviceBase;
    1.33 +class DeviceHandle;
    1.34 +
    1.35 +
    1.36 +#define OVR_MESSAGETYPE(devName, msgIndex)   ((Device_##devName << 8) | msgIndex)
    1.37 +
    1.38 +// MessageType identifies the structure of the Message class; based on the message,
    1.39 +// casting can be used to obtain the exact value.
    1.40 +enum MessageType
    1.41 +{
    1.42 +    // Used for unassigned message types.
    1.43 +    Message_None            = 0,
    1.44 +
    1.45 +    // Device Manager Messages
    1.46 +    Message_DeviceAdded             = OVR_MESSAGETYPE(Manager, 0),  // A new device is detected by manager.
    1.47 +    Message_DeviceRemoved           = OVR_MESSAGETYPE(Manager, 1),  // Existing device has been plugged/unplugged.
    1.48 +    // Sensor Messages
    1.49 +    Message_BodyFrame               = OVR_MESSAGETYPE(Sensor, 0),   // Emitted by sensor at regular intervals.
    1.50 +    // Latency Tester Messages
    1.51 +    Message_LatencyTestSamples          = OVR_MESSAGETYPE(LatencyTester, 0),
    1.52 +    Message_LatencyTestColorDetected    = OVR_MESSAGETYPE(LatencyTester, 1),
    1.53 +    Message_LatencyTestStarted          = OVR_MESSAGETYPE(LatencyTester, 2),
    1.54 +    Message_LatencyTestButton           = OVR_MESSAGETYPE(LatencyTester, 3),
    1.55 +
    1.56 +};
    1.57 +
    1.58 +//-------------------------------------------------------------------------------------
    1.59 +// Base class for all messages.
    1.60 +class Message
    1.61 +{
    1.62 +public:
    1.63 +    Message(MessageType type = Message_None,
    1.64 +            DeviceBase* pdev = 0) : Type(type), pDevice(pdev)
    1.65 +    { }
    1.66 +
    1.67 +    MessageType Type;    // What kind of message this is.
    1.68 +    DeviceBase* pDevice; // Device that emitted the message.
    1.69 +};
    1.70 +
    1.71 +
    1.72 +// Sensor BodyFrame notification.
    1.73 +// Sensor uses Right-Handed coordinate system to return results, with the following
    1.74 +// axis definitions:
    1.75 +//  - Y Up positive
    1.76 +//  - X Right Positive
    1.77 +//  - Z Back Positive
    1.78 +// Rotations a counter-clockwise (CCW) while looking in the negative direction
    1.79 +// of the axis. This means they are interpreted as follows:
    1.80 +//  - Roll is rotation around Z, counter-clockwise (tilting left) in XY plane.
    1.81 +//  - Yaw is rotation around Y, positive for turning left.
    1.82 +//  - Pitch is rotation around X, positive for pitching up.
    1.83 +
    1.84 +class MessageBodyFrame : public Message
    1.85 +{
    1.86 +public:
    1.87 +    MessageBodyFrame(DeviceBase* dev)
    1.88 +        : Message(Message_BodyFrame, dev), Temperature(0.0f), TimeDelta(0.0f)
    1.89 +    {
    1.90 +    }
    1.91 +
    1.92 +    Vector3f Acceleration;   // Acceleration in m/s^2.
    1.93 +    Vector3f RotationRate;   // Angular velocity in rad/s^2.
    1.94 +    Vector3f MagneticField;  // Magnetic field strength in Gauss.
    1.95 +    float    Temperature;    // Temperature reading on sensor surface, in degrees Celsius.
    1.96 +    float    TimeDelta;      // Time passed since last Body Frame, in seconds.
    1.97 +};
    1.98 +
    1.99 +// Sent when we receive a device status changes (e.g.:
   1.100 +// Message_DeviceAdded, Message_DeviceRemoved).
   1.101 +class MessageDeviceStatus : public Message
   1.102 +{
   1.103 +public:
   1.104 +	MessageDeviceStatus(MessageType type, DeviceBase* dev, const DeviceHandle &hdev)
   1.105 +		: Message(type, dev), Handle(hdev) { }
   1.106 +
   1.107 +	DeviceHandle Handle;
   1.108 +};
   1.109 +
   1.110 +//-------------------------------------------------------------------------------------
   1.111 +// ***** Latency Tester
   1.112 +
   1.113 +// Sent when we receive Latency Tester samples.
   1.114 +class MessageLatencyTestSamples : public Message
   1.115 +{
   1.116 +public:
   1.117 +    MessageLatencyTestSamples(DeviceBase* dev)
   1.118 +        : Message(Message_LatencyTestSamples, dev)
   1.119 +    {
   1.120 +    }
   1.121 +
   1.122 +    Array<Color>     Samples;
   1.123 +};
   1.124 +
   1.125 +// Sent when a Latency Tester 'color detected' event occurs.
   1.126 +class MessageLatencyTestColorDetected : public Message
   1.127 +{
   1.128 +public:
   1.129 +    MessageLatencyTestColorDetected(DeviceBase* dev)
   1.130 +        : Message(Message_LatencyTestColorDetected, dev)
   1.131 +    {
   1.132 +    }
   1.133 +
   1.134 +    UInt16      Elapsed;
   1.135 +    Color       DetectedValue;
   1.136 +    Color       TargetValue;
   1.137 +};
   1.138 +
   1.139 +// Sent when a Latency Tester 'change color' event occurs.
   1.140 +class MessageLatencyTestStarted : public Message
   1.141 +{
   1.142 +public:
   1.143 +    MessageLatencyTestStarted(DeviceBase* dev)
   1.144 +        : Message(Message_LatencyTestStarted, dev)
   1.145 +    {
   1.146 +    }
   1.147 +
   1.148 +    Color    TargetValue;
   1.149 +};
   1.150 +
   1.151 +// Sent when a Latency Tester 'button' event occurs.
   1.152 +class MessageLatencyTestButton : public Message
   1.153 +{
   1.154 +public:
   1.155 +    MessageLatencyTestButton(DeviceBase* dev)
   1.156 +        : Message(Message_LatencyTestButton, dev)
   1.157 +    {
   1.158 +    }
   1.159 +
   1.160 +};
   1.161 +
   1.162 +
   1.163 +} // namespace OVR
   1.164 +
   1.165 +#endif