Esempio n. 1
0
        public void SerializeData(Stream stream)
        {
            switch (m_Type)
            {
                case DataType.Enum:
                case DataType.UInt8:
                case DataType.UInt8z:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            GarminFitnessByteRange data = new GarminFitnessByteRange(m_ByteValues[i]);

                            data.Serialize(stream);
                        }
                        break;
                    }
                case DataType.SInt8:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            GarminFitnessSByteRange data = new GarminFitnessSByteRange(m_SByteValues[i]);

                            data.Serialize(stream);
                        }
                        break;
                    }
                case DataType.UInt16:
                case DataType.UInt16z:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            GarminFitnessUInt16Range data = new GarminFitnessUInt16Range(m_UInt16Values[i]);

                            data.Serialize(stream);
                        }
                        break;
                    }
                case DataType.SInt16:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            GarminFitnessInt16Range data = new GarminFitnessInt16Range(m_Int16Values[i]);

                            data.Serialize(stream);
                        }
                        break;
                    }
                case DataType.UInt32:
                case DataType.UInt32z:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            GarminFitnessUInt32Range data = new GarminFitnessUInt32Range(m_UInt32Values[i]);

                            data.Serialize(stream);
                        }
                        break;
                    }
                case DataType.SInt32:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            GarminFitnessInt32Range data = new GarminFitnessInt32Range(m_Int32Values[i]);

                            data.Serialize(stream);
                        }
                        break;
                    }
                case DataType.Float32:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            GarminFitnessFloatRange data = new GarminFitnessFloatRange(m_SingleValues[i]);

                            data.Serialize(stream);
                        }
                        break;
                    }
                case DataType.Float64:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            GarminFitnessDoubleRange data = new GarminFitnessDoubleRange(m_DoubleValues[i]);

                            data.Serialize(stream);
                        }
                        break;
                    }
                case DataType.String:
                    {
                        Byte[] valueStored = new Byte[FieldSize];

                        for(int i = 0; i < valueStored.Length; ++i)
                        {
                            if (i < m_ByteValues.Length)
                            {
                                valueStored[i] = m_ByteValues[i];
                            }
                            else
                            {
                                valueStored[i] = 0;
                            }
                        }
                        stream.Write(valueStored, 0, valueStored.Length);
                        break;
                    }
                case DataType.Byte:
                    {
                        stream.Write(m_ByteValues, 0, m_ByteValues.Length);
                        break;
                    }
                default:
                    {
                        Debug.Assert(false);
                        break;
                    }
            }
        }
Esempio n. 2
0
        public void DeserializeData(Stream stream, bool isLittleEndian)
        {
            switch (m_Type)
            {
                case DataType.Enum:
                case DataType.UInt8:
                case DataType.UInt8z:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            GarminFitnessByteRange data = new GarminFitnessByteRange(0);

                            data.Deserialize(stream, Constants.CurrentVersion);
                            m_ByteValues[i] = data;
                        }
                        break;
                    }
                case DataType.SInt8:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            GarminFitnessSByteRange data = new GarminFitnessSByteRange(0);

                            data.Deserialize(stream, Constants.CurrentVersion);
                            m_SByteValues[i] = data;
                        }
                        break;
                    }
                case DataType.UInt16:
                case DataType.UInt16z:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            Byte[] data = new Byte[sizeof(UInt16)];

                            stream.Read(data, 0, sizeof(UInt16));
                            m_UInt16Values[i] = BitConverter.ToUInt16(data, 0);

                            if (!isLittleEndian)
                            {
                                Byte temp = data[0];
                                data[0] = data[1];
                                data[1] = temp;

                                m_UInt16Values[i] = BitConverter.ToUInt16(data, 0);
                            }
                        }
                        break;
                    }
                case DataType.SInt16:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            Byte[] data = new Byte[sizeof(Int16)];

                            stream.Read(data, 0, sizeof(UInt16));
                            m_Int16Values[i] = BitConverter.ToInt16(data, 0);

                            if (!isLittleEndian)
                            {
                                Byte temp = data[0];
                                data[0] = data[1];
                                data[1] = temp;

                                m_Int16Values[i] = BitConverter.ToInt16(data, 0);
                            }
                        }
                        break;
                    }
                case DataType.UInt32:
                case DataType.UInt32z:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            Byte[] data = new Byte[sizeof(UInt32)];

                            stream.Read(data, 0, sizeof(UInt32));
                            m_UInt32Values[i] = BitConverter.ToUInt32(data, 0);

                            if (!isLittleEndian)
                            {
                                Byte temp = data[0];
                                data[0] = data[3];
                                data[3] = temp;
                                temp = data[1];
                                data[1] = data[2];
                                data[2] = temp;

                                m_UInt32Values[i] = BitConverter.ToUInt32(data, 0);
                            }
                        }
                        break;
                    }
                case DataType.SInt32:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            Byte[] data = new Byte[sizeof(UInt32)];

                            stream.Read(data, 0, sizeof(UInt32));
                            m_Int32Values[i] = BitConverter.ToInt32(data, 0);

                            if (!isLittleEndian)
                            {
                                Byte temp = data[0];
                                data[0] = data[3];
                                data[3] = temp;
                                temp = data[1];
                                data[1] = data[2];
                                data[2] = temp;

                                m_Int32Values[i] = BitConverter.ToInt32(data, 0);
                            }
                        }
                        break;
                    }
                case DataType.Float32:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            Byte[] data = new Byte[sizeof(Single)];

                            stream.Read(data, 0, sizeof(Single));
                            m_SingleValues[i] = BitConverter.ToSingle(data, 0);

                            if (!isLittleEndian)
                            {
                                Byte temp = data[0];
                                data[0] = data[3];
                                data[3] = temp;
                                temp = data[1];
                                data[1] = data[2];
                                data[2] = temp;

                                m_SingleValues[i] = BitConverter.ToSingle(data, 0);
                            }
                        }
                        break;
                    }
                case DataType.Float64:
                    {
                        for (int i = 0; i < ArraySize; ++i)
                        {
                            Byte[] data = new Byte[sizeof(Double)];

                            stream.Read(data, 0, sizeof(Double));
                            m_DoubleValues[i] = BitConverter.ToDouble(data, 0);

                            if (!isLittleEndian)
                            {
                                Byte temp = data[0];
                                data[0] = data[7];
                                data[7] = temp;
                                temp = data[1];
                                data[1] = data[6];
                                data[6] = temp;
                                temp = data[2];
                                data[2] = data[5];
                                data[5] = temp;
                                temp = data[3];
                                data[3] = data[4];
                                data[4] = temp;

                                m_DoubleValues[i] = BitConverter.ToDouble(data, 0);
                            }
                        }
                        break;
                    }
                case DataType.String:
                case DataType.Byte:
                    {
                        stream.Read(m_ByteValues, 0, m_ByteValues.Length);
                        break;
                    }
                default:
                    {
                        Debug.Assert(false);
                        break;
                    }
            }
        }