ovr_sdk

annotate LibOVR/Src/Service/Service_NetClient.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 : Service_NetClient.h
nuclear@0 4 Content : Client for service interface
nuclear@0 5 Created : June 12, 2014
nuclear@0 6 Authors : Michael Antonov, Kevin Jenkins, Chris Taylor
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_Service_NetClient_h
nuclear@0 28 #define OVR_Service_NetClient_h
nuclear@0 29
nuclear@0 30 #include "../Net/OVR_NetworkTypes.h"
nuclear@0 31 #include "Service_NetSessionCommon.h"
nuclear@0 32 #include "../Kernel/OVR_System.h"
nuclear@0 33 #include "../OVR_CAPI.h"
nuclear@0 34 #include "../Util/Util_Render_Stereo.h"
nuclear@0 35
nuclear@0 36 namespace OVR { namespace Service {
nuclear@0 37
nuclear@0 38 using namespace OVR::Net;
nuclear@0 39
nuclear@0 40
nuclear@0 41 //-------------------------------------------------------------------------------------
nuclear@0 42 // NetClient
nuclear@0 43
nuclear@0 44 class NetClient : public NetSessionCommon,
nuclear@0 45 public Net::Plugins::NetworkPlugin,
nuclear@0 46 public SystemSingletonBase<NetClient>
nuclear@0 47 {
nuclear@0 48 OVR_DECLARE_SINGLETON(NetClient);
nuclear@0 49 virtual void OnThreadDestroy();
nuclear@0 50
nuclear@0 51 // Status
nuclear@0 52 bool LatencyTesterAvailable;
nuclear@0 53 int HMDCount;
nuclear@0 54 bool EdgeTriggeredHMDCount;
nuclear@0 55
nuclear@0 56 virtual void OnReceive(Net::ReceivePayload* pPayload, Net::ListenerReceiveResult* lrrOut);
nuclear@0 57 virtual void OnDisconnected(Net::Connection* conn);
nuclear@0 58 virtual void OnConnected(Net::Connection* conn);
nuclear@0 59
nuclear@0 60 virtual int Run();
nuclear@0 61
nuclear@0 62 public:
nuclear@0 63 bool Connect(bool blocking);
nuclear@0 64 bool IsConnected(bool attemptReconnect, bool blockOnReconnect);
nuclear@0 65 void Disconnect();
nuclear@0 66
nuclear@0 67 void GetLocalProtocolVersion(int& major, int& minor, int& patch);
nuclear@0 68 // This function may fail if it is not connected
nuclear@0 69 bool GetRemoteProtocolVersion(int& major, int& minor, int& patch);
nuclear@0 70
nuclear@0 71 void SetLastError(String str);
nuclear@0 72
nuclear@0 73 public:
nuclear@0 74 // Persistent key-value storage
nuclear@0 75 const char* GetStringValue(VirtualHmdId hmd, const char* key, const char* default_val);
nuclear@0 76 bool GetBoolValue(VirtualHmdId hmd, const char* key, bool default_val);
nuclear@0 77 int GetIntValue(VirtualHmdId hmd, const char* key, int default_val);
nuclear@0 78 double GetNumberValue(VirtualHmdId hmd, const char* key, double default_val);
nuclear@0 79 int GetNumberValues(VirtualHmdId hmd, const char* key, double* values, int num_vals);
nuclear@0 80
nuclear@0 81 bool SetStringValue(VirtualHmdId hmd, const char* key, const char* val);
nuclear@0 82 bool SetBoolValue(VirtualHmdId hmd, const char* key, bool val);
nuclear@0 83 bool SetIntValue(VirtualHmdId hmd, const char* key, int val);
nuclear@0 84 bool SetNumberValue(VirtualHmdId hmd, const char* key, double val);
nuclear@0 85 bool SetNumberValues(VirtualHmdId hmd, const char* key, const double* vals, int num_vals);
nuclear@0 86
nuclear@0 87 bool GetDriverMode(bool& driverInstalled, bool& compatMode, bool& hideDK1Mode);
nuclear@0 88 bool SetDriverMode(bool compatMode, bool hideDK1Mode);
nuclear@0 89
nuclear@0 90 int Hmd_Detect();
nuclear@0 91 bool Hmd_Create(int index, HMDNetworkInfo* netInfo);
nuclear@0 92 void Hmd_Release(VirtualHmdId hmd);
nuclear@0 93
nuclear@0 94 // Last string is cached locally.
nuclear@0 95 const char* Hmd_GetLastError(VirtualHmdId hmd);
nuclear@0 96
nuclear@0 97 // TBD: Replace with a function to return internal, original HMDInfo?
nuclear@0 98
nuclear@0 99 // Fills in description about HMD; this is the same as filled in by ovrHmd_Create.
nuclear@0 100 // The actual descriptor is a par
nuclear@0 101 bool Hmd_GetHmdInfo(VirtualHmdId hmd, HMDInfo* hmdInfo);
nuclear@0 102
nuclear@0 103 //-------------------------------------------------------------------------------------
nuclear@0 104 unsigned int Hmd_GetEnabledCaps(VirtualHmdId hmd);
nuclear@0 105 // Returns new caps after modification
nuclear@0 106 unsigned int Hmd_SetEnabledCaps(VirtualHmdId hmd, unsigned int hmdCaps);
nuclear@0 107
nuclear@0 108 // Updates driver render target
nuclear@0 109 bool Hmd_AttachToWindow(VirtualHmdId hmd, void* hWindow);
nuclear@0 110
nuclear@0 111 //-------------------------------------------------------------------------------------
nuclear@0 112 // *** Tracking Setup
nuclear@0 113
nuclear@0 114 bool Hmd_ConfigureTracking(VirtualHmdId hmd, unsigned supportedCaps, unsigned requiredCaps);
nuclear@0 115 void Hmd_ResetTracking(VirtualHmdId hmd);
nuclear@0 116
nuclear@0 117 // TBD: Camera frames
nuclear@0 118 bool LatencyUtil_ProcessInputs(double startTestSeconds, unsigned char rgbColorOut[3]);
nuclear@0 119 const char* LatencyUtil_GetResultsString();
nuclear@0 120
nuclear@0 121 bool ShutdownServer();
nuclear@0 122
nuclear@0 123 protected:
nuclear@0 124 String Hmd_GetLastError_Str;
nuclear@0 125 String LatencyUtil_GetResultsString_Str;
nuclear@0 126 String ProfileGetValue1_Str, ProfileGetValue3_Str;
nuclear@0 127
nuclear@0 128 protected:
nuclear@0 129 //// Push Notifications:
nuclear@0 130
nuclear@0 131 void registerRPC();
nuclear@0 132
nuclear@0 133 ObserverScope<Net::Plugins::RPCSlot> InitialServerStateScope;
nuclear@0 134 void InitialServerState_1(BitStream* userData, ReceivePayload* pPayload);
nuclear@0 135
nuclear@0 136 ObserverScope<Net::Plugins::RPCSlot> LatencyTesterAvailableScope;
nuclear@0 137 void LatencyTesterAvailable_1(BitStream* userData, ReceivePayload* pPayload);
nuclear@0 138
nuclear@0 139 ObserverScope<Net::Plugins::RPCSlot> DefaultLogOutputScope;
nuclear@0 140 void DefaultLogOutput_1(BitStream* userData, ReceivePayload* pPayload);
nuclear@0 141
nuclear@0 142 ObserverScope<Net::Plugins::RPCSlot> HMDCountUpdateScope;
nuclear@0 143 void HMDCountUpdate_1(BitStream* userData, ReceivePayload* pPayload);
nuclear@0 144 };
nuclear@0 145
nuclear@0 146
nuclear@0 147 }} // namespace OVR::Service
nuclear@0 148
nuclear@0 149 #endif // OVR_Service_NetClient_h