This page is dedicated to the development of an RTCM3 Navigation data frames (NDF) message for the transport of raw GNSS messages. = Preface = Many users need all the information contained in the data transmission by the satellite in an unmodified form. Lots of receivers and services already support output of raw frames, but there exists no standard. This message tries to solve this situations – a transport format for raw Navigation Data Frames (NDF). This message is in line with lately introduced MSM observation messages. MSM messages are generic and Message Type numbers are reserved for up to 16 GNSS systems. Similarly, NDF data messages are also claimed as generic, i.e. their high level structure is the very same for each GNSS and Signal. Like in case of MSM description, first we describe generic NDF message structure. Then for each available GNSS we specify signals containing binary data and provide recommendations for data framing. A GNSS application can use NDF data as it, or they can be preliminary converted into [e.g. already standardized MT 1019, 1020 etc] ephemeris structures for further processing archiving. = NDF message = == Message header == ||=Data field=||=DF NUMBER=||=DATA TYPE=||=NO. OF BITS=||=NOTES=|| || Message Number || DF002 || uint12 || 12 || 4075 (proprietary number for this purpose) || || Reference Station ID || DF003 || uint12 || 12 || stream identification || || Reserved field || || uint2 || 2 || reserved bits, maybe used to separate different type 4075 message, always 0 for NDF || || Frame Count (FC) || || uint6 || 6 || Number of frame entries to follow || || Frame Entry || || || depends on FC and frame size || frame data according to following table || |||| ||=TOTAL=|| || || 32 + Frames || || The message allows grouping multiple frames into one block. These can be * multiple signals for one satellite, * multiple satellites for one time or, * multiple frames for one signal, * multiple satellite systems. Also combinations of these are possible. For realtime raw frame transport probably bullets one and two or a combination of these is most useful. == Frame Entry == ||=Data field=||=DF NUMBER=||=DATA TYPE=||=NO. OF BITS=||=NOTES=|| || Satellite system || || uint5 || 4 || 0 == GPS, 1 == GLONASS, 2 == Galileo, 3 = SBAS, 4 = QZSS, 5 = BDS || || Satellite number || || uint6 || 6 || Satellite ID, index from MSM satellite mask bit field (0..63, see DF394) || || Signal Type || || uint5 || 5 || Signal type specification, index from MSM signal mask bit field (0..31, see DF395) || || Epoch Time || || uint30 || 30 || Epoch time, specific for the satellite system always 30 bits (see table below) || || Continuous Tracking || || bit(1) || 1 || Tracking this satellite frame data was continous (1 = continous, 0 not continues or unset) || || Frame Data Size (N) || || uint12 || 12 || Number of bits to follow || || Frame Data || || || N || Bit data from satellite (see data section below) || |||| ||=TOTAL=|| || || 48 + N || || Layout of a frame block always follows this structure, so unknown satellite systems or satellites can be skipped in messages with more than one frame. == Epoch Time (accuracy in milli seconds, equal to MSM) == ||=Satellite system=||=DF NUMBER(s)=||=NOTES=|| || GPS || DF004 || in milliseconds (0..604799.999 s) || GLONASS || DF416 (3 bit) + DF034 (27 bit) || Like for MSM, Day of week (0 == Sunday, 6 == Saturday, 7 == unknown) + time of day in ms (0..86400.999 s) || || Galileo || DF248 || equals GPS || || SBAS || || equals GPS || || QZSS || DF428 || equals GPS || || BDS || DF427 || similar to GPS, but with a 14 leap second difference || == Frame Data (implementation recommendation) == While the format general has variable bit length support, to reduce confusion about the data contents the standard should define the bits sizes and data to be transferred for all existing satellite systems. Data should always include checksums and other non-informational parts of the transmission. * GPS * Old Style: 300 bits including the checksums * Inversed bits must be corrected, so the data can be directly read without taking care of this. * Carry bits from previous blocks must be corrected, so the parity of first block does not take any other non-zero bits into account. * Parity inside the 10 blocks need to take previous carry bits into account. * CNAV-Style: 300 bits including the CRC * SBAS * 250 bits including CRC * QZSS * 300 bits for GPS-compatible signals * See GPS for specification * 250 bits for SBAS-compatible signal * See SBS for specification * 2000 bits for LEX signal **Needs to be verified** * Galileo * I/NAV 244 bits * F/NAV 2*120 bits * Beidou: * 300 bits * GLONASS: * 85 bits Data senders need to decide whether data with bad checksum is transferred or not. While generally data with a bad checksum may be discarded, in disturbed environments even such data may be useful. = NDF as ephemeris transport = RTCM3 already has a set of navigational data messages like 1019 (GPS), 1020 (GLONASS) or planned messages like 1044 (QZSS) 1045, 1046 (Galileo). With the additional satellite systems more and more navigation messages become necessary and also the existing system navigation messages are changing and thus additional formats are required. The above message structure allows to use this message also as a replacement or enhancement of existing ephemeris messages simply by filling the message not with the real-time stream, but with all frames necessary to for an ephemeris set (e.g. for GPS C/A this would be subframes 1 to 3). Advantages of this approach: * Receivers already must support the frame format, so data decoding is no longer special for RTCM messages, but can use already existing algorithms * No assumptions are taken about which data is required and which not * Changing data formats are handled easily * Unique structure for all satellite systems and signal types (even private services, ...)