internal static IdentificationSection BuildFrom(BufferedBinaryReader reader) { // section 1 octet 1-4 (length of section) var length = reader.ReadUInt32(); var section = reader.ReadUInt8(); if (section != (int)SectionCode.IdentificationSection) { return(null); } // Center octet 6-7 var centerCode = reader.ReadUInt16(); // Center octet 8-9 var subCenterCode = reader.ReadUInt16(); // Parameter master table octet 10 var masterTableVersion = reader.ReadUInt8(); // Parameter local table octet 11 var localTableVersion = reader.ReadUInt8(); // significanceOfRT octet 12 var significanceOfRt = reader.ReadUInt8(); // octets 13-19 (base time of forecast) var refTime = reader.ReadDateTime(); var productStatusCode = reader.ReadUInt8(); var productTypeCode = reader.ReadUInt8(); return(new IdentificationSection( length, section, centerCode, subCenterCode, masterTableVersion, localTableVersion, significanceOfRt, refTime, productStatusCode, productTypeCode)); }
internal ProductDefinition0008( BufferedBinaryReader reader, Discipline discipline) : base(reader, discipline) { OverallTimeIntervalEnd = reader.ReadDateTime(); RegisterContent(ProductDefinitionContent.OverallTimeIntervalEnd, () => OverallTimeIntervalEnd); // 42 TimeRangeNumber = reader.ReadUInt8(); // 43-46 MissingDataValuesTotalNumber = reader.ReadUInt32(); //47 StatisticalProcess = reader.ReadUInt8(); //48 StatisticalProcessingTimeIncrementType = reader.ReadUInt8(); //49 StatisticalProcessingTimeRangeUnit = (TimeRangeUnit)reader.ReadUInt8(); //50-53 StatisticalProcessingTimeRangeLength = reader.ReadUInt32(); var timeRange = CalculateTimeRangeFrom(StatisticalProcessingTimeRangeUnit, StatisticalProcessingTimeRangeLength); if (timeRange.HasValue) { RegisterContent(ProductDefinitionContent.StatisticalProcessingTimeRange, () => timeRange.Value); } //54 SuccessiveFieldsIncrementUnit = (TimeRangeUnit)reader.ReadUInt8(); //55-58 SuccessiveFieldsTimeIncrement = reader.ReadUInt32(); var successiveFieldsTimeIncrement = CalculateTimeRangeFrom(SuccessiveFieldsIncrementUnit, SuccessiveFieldsTimeIncrement); if (successiveFieldsTimeIncrement.HasValue) { RegisterContent(ProductDefinitionContent.StatisticalProcessingTimeRange, () => successiveFieldsTimeIncrement.Value); } }