public void RequestTrackerState()
        {
            TrackerGetRequest gr = new TrackerGetRequest();

            gr.Values = new[]
            {
                Protocol.TRACKER_TRACKERSTATE,
                Protocol.TRACKER_FRAMERATE
            };

            Request(JsonConvert.SerializeObject(gr));
        }
        public Object[] RequestFrame()
        {
            TrackerGetRequest tgr = new TrackerGetRequest();

            tgr.Values = new String[] {
                Protocol.TRACKER_FRAME
            };

            Request(tgr);

            return(tgr.AsyncLock);
        }
        public void RequestTrackerState()
        {
            TrackerGetRequest tgr = new TrackerGetRequest();

            tgr.Values = new[]
            {
                Protocol.TRACKER_TRACKERSTATE,
                Protocol.TRACKER_FRAMERATE
            };

            Request(tgr);
        }
        public void RequestCalibrationStates()
        {
            TrackerGetRequest gr = new TrackerGetRequest();

            gr.Values = new[]
            {
                Protocol.TRACKER_ISCALIBRATED,
                Protocol.TRACKER_ISCALIBRATING,
                Protocol.TRACKER_CALIBRATIONRESULT
            };

            Request(JsonConvert.SerializeObject(gr));
        }
        public void RequestCalibrationStates()
        {
            TrackerGetRequest tgr = new TrackerGetRequest();

            tgr.Values = new[]
            {
                Protocol.TRACKER_IS_CALIBRATED,
                Protocol.TRACKER_IS_CALIBRATING,
                Protocol.TRACKER_CALIBRATION_RESULT
            };

            Request(tgr);
        }
        public void RequestScreenStates()
        {
            TrackerGetRequest gr = new TrackerGetRequest();

            gr.Values = new[]
            {
                Protocol.TRACKER_SCREEN_INDEX,
                Protocol.TRACKER_SCREEN_RESOLUTION_WIDTH,
                Protocol.TRACKER_SCREEN_RESOLUTION_HEIGHT,
                Protocol.TRACKER_SCREEN_PHYSICAL_WIDTH,
                Protocol.TRACKER_SCREEN_PHYSICAL_HEIGHT
            };

            Request(JsonConvert.SerializeObject(gr));
        }
        public void RequestScreenStates()
        {
            TrackerGetRequest tgr = new TrackerGetRequest();

            tgr.Values = new[]
            {
                Protocol.TRACKER_SCREEN_INDEX,
                Protocol.TRACKER_SCREEN_RESOLUTION_WIDTH,
                Protocol.TRACKER_SCREEN_RESOLUTION_HEIGHT,
                Protocol.TRACKER_SCREEN_PHYSICAL_WIDTH,
                Protocol.TRACKER_SCREEN_PHYSICAL_HEIGHT
            };

            Request(tgr);
        }
        public void RequestAllStates()
        {
            TrackerGetRequest gr = new TrackerGetRequest();

            gr.Values = new[]
            {
                Protocol.TRACKER_HEARTBEATINTERVAL,
                Protocol.TRACKER_ISCALIBRATED,
                Protocol.TRACKER_ISCALIBRATING,
                Protocol.TRACKER_TRACKERSTATE,
                Protocol.TRACKER_SCREEN_INDEX,
                Protocol.TRACKER_SCREEN_RESOLUTION_WIDTH,
                Protocol.TRACKER_SCREEN_RESOLUTION_HEIGHT,
                Protocol.TRACKER_SCREEN_PHYSICAL_WIDTH,
                Protocol.TRACKER_SCREEN_PHYSICAL_HEIGHT,
                Protocol.TRACKER_CALIBRATIONRESULT,
                Protocol.TRACKER_FRAMERATE,
                Protocol.TRACKER_VERSION,
                Protocol.TRACKER_MODE_PUSH
            };

            Request(JsonConvert.SerializeObject(gr));
        }
        public virtual Object[] RequestAllStates()
        {
            TrackerGetRequest tgr = new TrackerGetRequest();

            tgr.Values = new[]
            {
                Protocol.TRACKER_IS_CALIBRATED,
                Protocol.TRACKER_IS_CALIBRATING,
                Protocol.TRACKER_TRACKERSTATE,
                Protocol.TRACKER_SCREEN_INDEX,
                Protocol.TRACKER_SCREEN_RESOLUTION_WIDTH,
                Protocol.TRACKER_SCREEN_RESOLUTION_HEIGHT,
                Protocol.TRACKER_SCREEN_PHYSICAL_WIDTH,
                Protocol.TRACKER_SCREEN_PHYSICAL_HEIGHT,
                Protocol.TRACKER_CALIBRATION_RESULT,
                Protocol.TRACKER_FRAMERATE,
                Protocol.TRACKER_VERSION,
            };

            Request(tgr);

            return(tgr.AsyncLock);
        }
        public void RequestTrackerState()
        {
            TrackerGetRequest tgr = new TrackerGetRequest();

            tgr.Values = new[]
            {
                Protocol.TRACKER_TRACKERSTATE,
                Protocol.TRACKER_FRAMERATE
            };

            Request(tgr);
        }
        public void RequestScreenStates()
        {
            TrackerGetRequest tgr = new TrackerGetRequest();

            tgr.Values = new[]
            {
                Protocol.TRACKER_SCREEN_INDEX,
                Protocol.TRACKER_SCREEN_RESOLUTION_WIDTH,
                Protocol.TRACKER_SCREEN_RESOLUTION_HEIGHT,
                Protocol.TRACKER_SCREEN_PHYSICAL_WIDTH,
                Protocol.TRACKER_SCREEN_PHYSICAL_HEIGHT
            };

            Request(tgr);
        }
        public Object[] RequestFrame()
        {
            TrackerGetRequest tgr = new TrackerGetRequest();

            tgr.Values = new String[] {
                Protocol.TRACKER_FRAME
            };

            Request(tgr);

            return tgr.AsyncLock;
        }
        public void RequestCalibrationStates()
        {
            TrackerGetRequest tgr = new TrackerGetRequest();

            tgr.Values = new[]
            {
                Protocol.TRACKER_IS_CALIBRATED,
                Protocol.TRACKER_IS_CALIBRATING,
                Protocol.TRACKER_CALIBRATION_RESULT
            };

            Request(tgr);
        }
        public virtual Object[] RequestAllStates()
        {
            TrackerGetRequest tgr = new TrackerGetRequest();

            tgr.Values = new[]
            {
                Protocol.TRACKER_IS_CALIBRATED,
                Protocol.TRACKER_IS_CALIBRATING,
                Protocol.TRACKER_TRACKERSTATE,
                Protocol.TRACKER_SCREEN_INDEX,
                Protocol.TRACKER_SCREEN_RESOLUTION_WIDTH,
                Protocol.TRACKER_SCREEN_RESOLUTION_HEIGHT,
                Protocol.TRACKER_SCREEN_PHYSICAL_WIDTH,
                Protocol.TRACKER_SCREEN_PHYSICAL_HEIGHT,
                Protocol.TRACKER_CALIBRATION_RESULT,
                Protocol.TRACKER_FRAMERATE,
                Protocol.TRACKER_VERSION,
            };

            Request(tgr);

            return tgr.AsyncLock;
        }