Пример #1
0
        public static RawSensorData Create(RawSensorDataType _type, UInt32 _timestamp, byte[] dataArray, RawSensorSensitivity sensitivitiy)
        {
            if (_type == RawSensorDataType.None)
            {
                return(null);
            }
            List <Point3> pointsInProcess  = new List <Point3>();
            string        pointSensitivity = _type == RawSensorDataType.Device ? RawSensorSensitivity.kDeviceAccelerometer : RawSensorSensitivity.kIMUGyro;
            int           pointsDataOffset = 0;
            int           pointsDataLength = 6;

            while (pointsDataOffset < dataArray.Length)
            {
                if (pointsDataOffset + pointsDataLength - 1 < dataArray.Length)
                {
                    double sens  = sensitivitiy.getSensitivity(pointSensitivity);
                    Point3 point = Point3.Create(dataArray.Skip(pointsDataOffset).Take(pointsDataLength).ToArray(), sens);
                    if (point != null)
                    {
                        pointsInProcess.Add(point);
                    }
                    else
                    {
                        return(null);
                    }
                    pointsDataOffset += pointsDataLength;
                    if (_type == RawSensorDataType.IMU)
                    {
                        pointSensitivity = RawSensorSensitivity.kIMUAccelerometer;
                    }
                }
                else
                {
                    return(null);
                }
            }

            if (_type == RawSensorDataType.IMU)
            {
                if (pointsInProcess.Count != 2)
                {
                    return(null);
                }
            }
            else if (_type == RawSensorDataType.Device)
            {
                if (pointsInProcess.Count != 5)
                {
                    return(null);
                }
            }

            return(new RawSensorData(_type, _timestamp, pointsInProcess.ToArray()));
        }