internal void Initialize(Header header) { DataIndex = new DataIndex { IndexInData = -1 }; ProcessHeader(header.BaseHeaderDefinition); ProcessHeader(header); }
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; } } }