コード例 #1
0
 internal void Initialize(Header header)
 {
     DataIndex = new DataIndex {
         IndexInData = -1
     };
     ProcessHeader(header.BaseHeaderDefinition);
     ProcessHeader(header);
 }
コード例 #2
0
ファイル: Header.cs プロジェクト: jimzrt/hyper
        private void ProcessHeader(DataIndex dataIndex, string paramName)
        {
            dataIndex.IndexInData = BaseHeaderDefinition.Length;
            foreach (var item in Param)
            {
                if (item.Bits % 8 == 0)
                {
                    var bytesCount = (byte)(item.Bits / 8);
                    if (item.Size > 0)
                    {
                        bytesCount = (byte)(bytesCount * item.Size);
                    }
                    dataIndex.OffsetInData = 0x00;
                    dataIndex.MaskInData   = 0xFF;

                    if (item.Param1 != null && item.Param1.Count > 0)
                    {
                        foreach (var prm1 in item.Param1)
                        {
                            dataIndex.MaskInData = Tools.GetMaskFromBits(prm1.Bits, dataIndex.OffsetInData);
                            string[] tokens = paramName.Split('.');
                            if (tokens.Length == 2)
                            {
                                if (tokens[0] == item.Name && tokens[1] == prm1.Name)
                                {
                                    return;
                                }
                            }
                            dataIndex.OffsetInData += prm1.Bits;
                        }
                    }
                    else
                    {
                        if (item.Name == paramName)
                        {
                            return;
                        }
                    }
                    dataIndex.IndexInData = dataIndex.IndexInData + bytesCount;
                }
            }
        }