Esempio n. 1
0
        public void FillFromNetworkBuffer(ref Byte[] buffer)
        {
            int offset = 24;

            num_image_slices   = NetworkReaderHelper.ReadInt32(ref buffer, offset);
            image_slice_format = NetworkReaderHelper.ReadInt32(ref buffer, offset + 4);
        }
Esempio n. 2
0
        public void FillFromNetworkBuffer(ref Byte[] buffer)
        {
            int offset = 2080;

            exposure             = NetworkReaderHelper.ReadInt32(ref buffer, offset);
            exposure_time        = NetworkReaderHelper.ReadFloat(ref buffer, offset + 4);
            gain                 = NetworkReaderHelper.ReadFloat(ref buffer, offset + 8);
            pitch_angle          = NetworkReaderHelper.ReadFloat(ref buffer, offset + 12);
            pitch_angle_estimate = NetworkReaderHelper.ReadFloat(ref buffer, offset + 16);
        }
Esempio n. 3
0
        public void FillFromNetworkBuffer(ref Byte[] buffer, int i)
        {
            int offset = 1076 + i * 132;

            len = NetworkReaderHelper.ReadInt32(ref buffer, offset);
            for (int x = 0; x < PSMoveSharpConstants.numButtons; x++)
            {
                button[x] = NetworkReaderHelper.ReadUint16(ref buffer, offset + 4 + x * 2);
            }
        }
        protected void ReceiveCallback(IAsyncResult ar)
        {
            UdpClient  u = (UdpClient)((UdpState)(ar.AsyncState)).u;
            IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;

            Byte[] buffer = null;

            try
            {
                buffer = u.EndReceive(ar, ref e);
            }
            catch (System.ObjectDisposedException)
            {
                _reading = false;
                return;
            }
            catch (System.Net.Sockets.SocketException)
            {
                _reading = false;
                return;
            }

            int  packet_length = NetworkReaderHelper.ReadInt32(ref buffer, 12);
            int  magic         = NetworkReaderHelper.ReadInt32(ref buffer, 0);
            int  code          = NetworkReaderHelper.ReadInt32(ref buffer, 8);
            uint packet_index  = NetworkReaderHelper.ReadUint32(ref buffer, 16);

            if (code == 1)
            {
                _latest_state.packet_index = NetworkReaderHelper.ReadUint32(ref buffer, 16);
                _latest_state.serverConfig.FillFromNetworkBuffer(ref buffer);
                for (int i = 0; i < PSMoveSharpState.PSMoveSharpNumMoveControllers; i++)
                {
                    _latest_state.gemStatus[i].FillFromNetworkBuffer(ref buffer, i);
                    _latest_state.gemStates[i].FillFromNetworkBuffer(ref buffer, i);
                    _latest_state.imageStates[i].FillFromNetworkBuffer(ref buffer, i);
                    _latest_state.pointerStates[i].FillFromNetworkBuffer(ref buffer, i);
                    _latest_state.sphereStates[i].FillFromNetworkBuffer(ref buffer, i);
                    _latest_state.positionPointerStates[i].FillFromNetworkBuffer(ref buffer, i);
                }
                _latest_state.navInfo.FillFromNetworkBuffer(ref buffer);
                for (int i = 0; i < PSMoveSharpNavInfo.PSMoveSharpNumNavControllers; i++)
                {
                    _latest_state.padData[i].FillFromNetworkBuffer(ref buffer, i);
                }

                if (_state_update_delegate != null)
                {
                    _state_update_delegate(_latest_state);
                }

                // fire delegate here
            }
            _reading = false;
        }
Esempio n. 5
0
        protected void ReceiveCallback(IAsyncResult ar)
        {
            UdpClient  u = (UdpClient)((UdpState)(ar.AsyncState)).u;
            IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;

            Byte[] buffer = null;

            try
            {
                buffer = u.EndReceive(ar, ref e);
            }
            catch (System.ObjectDisposedException)
            {
                _reading = false;
                return;
            }
            catch (System.Net.Sockets.SocketException)
            {
                _reading = false;
                return;
            }
            _rwl.AcquireWriterLock(-1);

            int  packet_length = NetworkReaderHelper.ReadInt32(ref buffer, 12);
            int  magic         = NetworkReaderHelper.ReadInt32(ref buffer, 0);
            int  code          = NetworkReaderHelper.ReadInt32(ref buffer, 8);
            uint packet_index  = NetworkReaderHelper.ReadUint32(ref buffer, 16);

            //UnityEngine.Debug.Log(code);
            if (code == 1)
            {
                _latest_state.packet_index = NetworkReaderHelper.ReadUint32(ref buffer, 16);
                _latest_state.serverConfig.FillFromNetworkBuffer(ref buffer);
                for (int i = 0; i < PSMoveSharpState.PSMoveSharpNumMoveControllers; i++)
                {
                    _latest_state.gemStatus[i].FillFromNetworkBuffer(ref buffer, i);
                    _latest_state.gemStates[i].FillFromNetworkBuffer(ref buffer, i);
                    _latest_state.imageStates[i].FillFromNetworkBuffer(ref buffer, i);
                    _latest_state.pointerStates[i].FillFromNetworkBuffer(ref buffer, i);
                    _latest_state.sphereStates[i].FillFromNetworkBuffer(ref buffer, i);
                    _latest_state.positionPointerStates[i].FillFromNetworkBuffer(ref buffer, i);
                }
                _latest_state.navInfo.FillFromNetworkBuffer(ref buffer);
                for (int i = 0; i < PSMoveSharpNavInfo.PSMoveSharpNumNavControllers; i++)
                {
                    _latest_state.padData[i].FillFromNetworkBuffer(ref buffer, i);
                }
            }
            else if (code == 2)
            {
                byte[] slice      = new byte[packet_length - 3];
                int    slice_num  = NetworkReaderHelper.ReadByte(ref buffer, 20);
                int    num_slices = NetworkReaderHelper.ReadByte(ref buffer, 21);
                int    format     = NetworkReaderHelper.ReadByte(ref buffer, 22);
                int    row_height = 480 / num_slices;
                int    row_start  = row_height * slice_num;
                Array.Copy(buffer, 23, slice, 0, packet_length - 3);

                /*
                 * System.IO.MemoryStream jpeg_stream = new System.IO.MemoryStream(jpeg_data);
                 * System.Drawing.Image slice = null;
                 * try
                 * {
                 * slice = Image.FromStream(jpeg_stream);
                 *      testByte = jpeg_data;
                 * }
                 * catch
                 * {
                 * // server sent a bad frame
                 * }
                 */
                if (slice != null)
                {
                    _latest_camera_frame_state.ProcessPacket((int)packet_index, slice, row_start, row_height);
                    //_latest_camera_frame_state.BlitSliceOntoFullImage(slice, row_start, row_height);
                }
            }
            else if (code == 3)
            {
                PSMoveSharpState camera_state = new PSMoveSharpState();
                camera_state.packet_index = NetworkReaderHelper.ReadUint32(ref buffer, 16);
                camera_state.serverConfig.FillFromNetworkBuffer(ref buffer);
                for (int i = 0; i < PSMoveSharpState.PSMoveSharpNumMoveControllers; i++)
                {
                    camera_state.gemStatus[i].FillFromNetworkBuffer(ref buffer, i);
                    camera_state.gemStates[i].FillFromNetworkBuffer(ref buffer, i);
                    camera_state.imageStates[i].FillFromNetworkBuffer(ref buffer, i);
                    camera_state.pointerStates[i].FillFromNetworkBuffer(ref buffer, i);
                    camera_state.sphereStates[i].FillFromNetworkBuffer(ref buffer, i);
                    camera_state.positionPointerStates[i].FillFromNetworkBuffer(ref buffer, i);
                }
                camera_state.navInfo.FillFromNetworkBuffer(ref buffer);
                for (int i = 0; i < PSMoveSharpNavInfo.PSMoveSharpNumNavControllers; i++)
                {
                    camera_state.padData[i].FillFromNetworkBuffer(ref buffer, i);
                }

                _latest_camera_frame_state.ProcessStatePacket((int)packet_index, camera_state);
            }

            _rwl.ReleaseWriterLock();
            _reading = false;
        }