Exemple #1
0
        protected int ReadInt(int offset, VDType.VDTypeCode c)
        {
            switch (c)
            {
            case VDType.VDTypeCode.int8:
                return(d[offset]);

            case VDType.VDTypeCode.sint8:
                return((sbyte)d[offset]);

            case VDType.VDTypeCode.sint16_LSB:
            case VDType.VDTypeCode.sint16_LSB_MSB:
                return(BitConverter.ToInt16(d, offset));

            case VDType.VDTypeCode.sint32_LSB:
            case VDType.VDTypeCode.sint32_LSB_MSB:
                return(BitConverter.ToInt32(d, offset));

            case VDType.VDTypeCode.int16_LSB:
            case VDType.VDTypeCode.int16_LSB_MSB:
                return(BitConverter.ToUInt16(d, offset));

            case VDType.VDTypeCode.int32_LSB:
            case VDType.VDTypeCode.int32_LSB_MSB:
                return((int)BitConverter.ToUInt32(d, offset));

            default:
                throw new NotImplementedException();
            }
        }
Exemple #2
0
        protected void AddIntEntry(string tag, VDType.VDTypeCode c)
        {
            int len = 0;

            switch (c)
            {
            case VDType.VDTypeCode.int8:
            case VDType.VDTypeCode.sint8:
                len = 1;
                break;

            case VDType.VDTypeCode.int16_LSB:
            case VDType.VDTypeCode.int16_MSB:
            case VDType.VDTypeCode.sint16_LSB:
            case VDType.VDTypeCode.sint16_MSB:
                len = 2;
                break;

            case VDType.VDTypeCode.int32_LSB:
            case VDType.VDTypeCode.int32_MSB:
            case VDType.VDTypeCode.sint32_LSB:
            case VDType.VDTypeCode.sint32_MSB:
            case VDType.VDTypeCode.int16_LSB_MSB:
            case VDType.VDTypeCode.sint16_LSB_MSB:
                len = 4;
                break;

            case VDType.VDTypeCode.int32_LSB_MSB:
            case VDType.VDTypeCode.sint32_LSB_MSB:
                len = 8;
                break;

            default:
                throw new NotSupportedException();
            }

            var e = new VDType {
                Offset = cur_entry, Code = c, Length = len
            };

            entries[tag] = e;
            cur_entry   += len;
        }
Exemple #3
0
        protected void WriteInt(int offset, VDType.VDTypeCode c, int v)
        {
            switch (c)
            {
            case VDType.VDTypeCode.int8:
            case VDType.VDTypeCode.sint8:
                d[offset] = (byte)(v & 0xff);
                break;

            case VDType.VDTypeCode.int16_LSB:
            case VDType.VDTypeCode.sint16_LSB:
                d[offset]     = (byte)(v & 0xff);
                d[offset + 1] = (byte)((v >> 8) & 0xff);
                break;

            case VDType.VDTypeCode.int32_LSB:
            case VDType.VDTypeCode.sint32_LSB:
                d[offset]     = (byte)(v & 0xff);
                d[offset + 1] = (byte)((v >> 8) & 0xff);
                d[offset + 2] = (byte)((v >> 16) & 0xff);
                d[offset + 3] = (byte)((v >> 24) & 0xff);
                break;

            case VDType.VDTypeCode.int16_MSB:
            case VDType.VDTypeCode.sint16_MSB:
                d[offset]     = (byte)((v >> 8) & 0xff);
                d[offset + 1] = (byte)(v & 0xff);
                break;

            case VDType.VDTypeCode.int32_MSB:
            case VDType.VDTypeCode.sint32_MSB:
                d[offset]     = (byte)((v >> 24) & 0xff);
                d[offset + 1] = (byte)((v >> 16) & 0xff);
                d[offset + 2] = (byte)((v >> 8) & 0xff);
                d[offset + 3] = (byte)(v & 0xff);
                break;

            case VDType.VDTypeCode.int16_LSB_MSB:
            case VDType.VDTypeCode.sint16_LSB_MSB:
                d[offset]     = (byte)(v & 0xff);
                d[offset + 1] = (byte)((v >> 8) & 0xff);
                d[offset + 2] = (byte)((v >> 8) & 0xff);
                d[offset + 3] = (byte)(v & 0xff);
                break;

            case VDType.VDTypeCode.int32_LSB_MSB:
            case VDType.VDTypeCode.sint32_LSB_MSB:
                d[offset]     = (byte)(v & 0xff);
                d[offset + 1] = (byte)((v >> 8) & 0xff);
                d[offset + 2] = (byte)((v >> 16) & 0xff);
                d[offset + 3] = (byte)((v >> 24) & 0xff);
                d[offset + 4] = (byte)((v >> 24) & 0xff);
                d[offset + 5] = (byte)((v >> 16) & 0xff);
                d[offset + 6] = (byte)((v >> 8) & 0xff);
                d[offset + 7] = (byte)(v & 0xff);
                break;

            default:
                throw new NotImplementedException();
            }
        }
Exemple #4
0
 protected void AddIntEntry(string tag, VDType.VDTypeCode c, int default_val)
 {
     AddIntEntry(tag, c);
     WriteInt(tag, default_val);
 }