Algorithms

Any parameters not listed in this section can be assumed to be reported as-is from their respective input data streams and without need of further processing.

GOES Decoding

Low Resolution 16-Bit Binary Format

Floating point numbers will usually be sent in the 16-bit binary format. In order to transmit the data in the first place, each triplet IMFV2.83 must be encoded in NESS-BINARY bytes (NESSbytes). NESS-BINARY breaks each pair of source bytes (word) into 3 NESSbytes. If the bits of the source word are B15-B0 with B15 the most significant, then these are placed right-justified in NESSbytes as follows: B15-B12 are in the first NESSbyte, B11-B6 are in the second NESSbyte and B5-B0 are in the third NESSbyte. Within NESSbytes, bit 6 is always set to 1 and bit 7 is set for odd parity. In the first NESSbyte, bits 5 and 4 are filled by sign extension, i.e. they take the same value as bit 3. As an example, consider the example of DRf .

  1. Extract B15 - B12 from first NESSbyte

    D ==> 0100 0100
           ||||
           0100
                

  2. Extract B11 - B6 from second NESSbyte

    R ==> 0101 0010
        || ||||
        01 0010
                

  3. Extract B5 - B0 from third NESSbyte

    f ==> 0110 0110
        || ||||
        10 0110
                

  4. Synthesize into 2-byte word

    DRf ==> 0100 010010 100110
        0100 0100 1010 0110
                

  5. Extract the sign bit (B15), 1 being negative

    0100 0100 1010 0110
    |
    0 ==> positive
                

  6. Extract the exponent (B13-14)

    0100 0100 1010 0110
     ||
     10 ==> decimal 2, multiplicative factor of 10-2
                

  7. Extract the number (B0-12)

    0100 0100 1010 0110
       | |||| |||| ||||
       0 0100 1010 0110
    
    0010010100110 ==> 1190
                

  8. Synthesize

    x = 1190 / 100 * (+1) = 11.90
                

High Resolution 18-Bit Binary Format

Doppler and optics data may be transmitted in 18 bit high resolution format via GOES, consult Appendix F in SAT HDR GOES High Data Rate GOES Transmitter. These datums must be treated as integers; there is no provision for floating point data. The 6th bit in each triplet byte is always 1, the 7th bit is the parity bit. The 17th bit of the 18-bit number denotes the sign. As an example, consider the decoding of the ASCII triplet Æõ_ These translate into a byte numeric sequence of 198 245 95 or

198 245 95 ==> 1100 0110  1111 0101  0101 1111
        

  1. Drop first two bits of each byte.

    byte 3   byte 2   byte 1
    1100 0110  1111 0101  0101 1111
      |      |      |
      |      |      |
      V      V      V
      00 0110  11 0101  01 1111
    
                  

  2. Combine into one word.

    000110 110101 011111 ==> 00 0110 1101 0101 1111 
                  

  3. Check bit 17, here it is zero, so the number is positive.

    00 0110 1101 0101 1111  ==> 27999