Hi,
I've tried to create a draft of blockette 1002 structure that is based
on the mseed3 strawman and proposals.
General notes:
* Variable length "stream ID" would allow to extend the length of
individual fields in the future as needed and even add additional fields
such as deployment ID. It is assumed that the general NSLC concept
remains, though (eg., a "stream ID" would not be a number or a URL). The
fields are to be formatted the same way as opaque header fields (see
also blockette 2000).
* CRC-32 is near the beginning of the blockette, so it is at a fixed
position (relative to the beginning of blockette) and 32-bit aligned (if
that would make a difference).
Note Field name Type Length Mask or Flags
1 Blockette type (1002) B 2
2 Next blockette's byte number B 2
3 CRC-32 B 4
4 Data version B 1
5 Extended quality indicator A 1
6 Length of extended stream ID B 1
7 Extended stream ID fields V V
a Extended network code [UN]
b Extended station code [UN]
c Extended location code [UN]
d Extended channel code [UN]
8 Length of optional headers B 2
9 Optional header fields V V
Notes for fields:
1. UWORD: Blockette type (1002): Data Extension 2
2. UWORD: Byte number of next blockette. (Calculate this as the byte
offset from the beginning of the logical record - including the fixed
section of the data header; use 0 if no more blockettes will follow.)
3. ULONG: CRC-32 value of the record. Consider using CRC-32 as defined
by Quanterra, Inc., alternatively the variant of CRC-32 as defined and
used in RFC 1952 (GZIP format). CRC must be calculated over the entire
record, with the CRC bytes assumed to be zero for purposes of the
calculation.
4. BYTE: Data version. Start with version 1 and increase for later versions.
5. CHAR: Extended quality indicator. Defined values: D (unknown), R
(Raw), Q (Quality controlled), M (merged/modified), U (User modified).
If the quality indicator in the fixed header is not D, then the extended
quality indicator must be equal to the quality indicator in the fixed
header. For compatibility with miniSEED 2.3, it is recommended to always
use quality indicator D in the fixed header. (D is the only allowed
value in miniSEED 2.3, defined as "data header indicator".)
6. BYTE: Length of extended stream ID.
7. VAR: Extended stream ID. Each field is a variable length ASCII
string, terminated by the character ‘~’ (ASCII 126).
7a. Extended network code. A code that uniquely identifies the network
operator responsible for the data. This identifier is assigned by the
FDSN. Cannot be empty. For network codes up to 2 letters, the extended
network code must be equal to the network code in the fixed header
(excluding the padding). For 3-letter and longer network codes, the
network code in the fixed header must be set to '99'.
7b. Extended station code. For station codes up to 5 letters, the
extended station code must be equal to the station code in the fixed
header (excluding the padding).
7c. Extended location code. For location codes up to 2 letters, the
extended location code must be equal to the location ID in the fixed
header (excluding the padding).
7d. Extended channel code. For 3-letter (standard) channel codes, the
extended channel code must be equal to the channel code in the fixed header.
8. UWORD: Total length of optional header fields in bytes.
9. VAR: Optional header fields. Each optional header field is a variable
length string, terminated by the character ‘~’ (ASCII 126). Each header
may contain any data except for the terminating character. It is
strongly recommended that optional headers contain printable text.
Regards,
Andres.