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
|