# Overview

The file_version field (param.records.file_version field) uniquely identifies the file type. The following table shows the mapping.

1 basic_load_fmcw.m snow, kuband (Leuschen/Ledford based, 2009 Greenland P3 to 2011 Antarctica DC8, couple of segments in 2012 Greenland P3)
2 basic_load_fmcw2.m snow2, kuband2 (NI based, seconds field is written to from the GUI software, 2012 Greenland P3, 2012 Antarctica DC8)
3 basic_load_fmcw3.m snow3, kuband3 (NI based, DDC enabled, seconds from hardware serial read and stored as BCD, 2013 Greenland P3)
4 basic_load_fmcw2.m snow2, kuband2 (NI based, no DDC, limited use, seconds from hardware serial read and stored as ASCII string instead of BCD, spring 2021 Alaska SO, 2018 Alaska SO, two segments of 2013 Greenland P3)
5 basic_load_fmcw3.m snow3, kuband3, kaband3 (NI based, second version of DDC code, 2013 Antarctica P3/2013 Antarctica Basler to 2016 Antarctica DC8)
6 basic_load_fmcw4.m snow4, kuband4 (NI based, Spring 2015 NRL version of DDC code, multichannel)
7 basic_load.m snow5 (NI based, AWI version of DDC code, multichannel, multiwaveform). Note this is a standard file type loaded by basic_load.m
401 basic_load_mcords.m mcords (Leuschen/Ledford based, 2009 Antarctica DC8 to 2010 Antarctica DC8)
402 basic_load_mcords2.m mcords2 (NI based, XML files unreliable, 2011 Greenland P3 to 2012 Antarctica DC8)
403 basic_load_mcords3.m mcords3 (NI based, header fields changed, 2013 Greenland P3 to 2019 Greenland P3, XML files correct 2014 Antarctica DC8 and later unreliable before that)
404 basic_load_mcords4.m mcords4 (NI based, introduced 2013 Antarctica Basler, wideband, XML files complete)
405 basic_load_acords.m acords (Akins based, 2003 Greenland P3, low/high gain)
406 basic_load_acords.m acords v2 (Akins based, 2004 Antarctica P3-chile and 2005 Greenland TO, low/high gain, 4-channel option)
407 basic_load_mcords5.m mcords5 (NI based, introduced 2015 Greenland C130/Polar6, AWI version, wideband, XML files complete, DDC)
408 basic_load_fmcw.m mcords5 (NI based, introduced 2015 Greenland C130/Polar6, wideband, XML files complete, No DDC)
409 basic_load_icards.m icards (?/Akins Linux PCI card based, introduced 1993 Greenland P3)
410 basic_load_mcrds.m mcrds (Akins based, introduced 2006 Greenland P3, multichannel/waveforms)
411 +hfrds package hfrds (Leuschen eval board based, 2013 Antarctica G1XB???, 2016 Greenland G1XB)
413 +utua_rds package rds (NI based, UT/UA HF sounder, 2018 Alaska SO).
414 load rds (NI based, BAS sounder, 2017 Antarctica TObas).

1 Arena files must be run through run_preprocess to remove the network packet headers before basic_load_arena.m will work.

# File version 1: snow/kuband

IEEE big endian format. Presums are assumed to be 4. Bit shifts are assumed to be 0. start_idx is assumed to be 0.

Field Byte Offset Type Description
EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset.
seconds 16 uint32 Seconds of day field. Pulled from NMEA $GPGGA UTC time in software and then increments by one for each 1 PPS pulse that is read in. If there are errors in the PPS signal (e.g. ringing), then the seconds field can be incorrect. fraction 20 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. data 32 uint16*Nt Nt uint16 real samples. Note that the only way to determine Nt is to find the frame syncs and use the byte offset between the frame syncs to determine the number of samples, Nt. # File version 2: snow2/kuband2 IEEE big endian format. Field Byte Offset Type Description Frame sync 0 uint32 0xBADA55E5 EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. seconds 8 uint32 Seconds of day field. Pulled from NMEA$GPGGA UTC time in software and then increments by one for each 1 PPS pulse that is read in. If there are errors in the PPS signal (e.g. ringing), then the seconds field can be incorrect.
fraction 12 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits.
comp_time_sod 16 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader.
NA 24 uint64 Notes indicate a second UTC time SOD field, but it is not used. The loader does not load.
wf index 32 uint8 Waveform index. This field is zero-indexed.
num_wfs 33 uint8 Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1.
presums 34 uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data.
bit_shifts 35 int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts.
start_index 36 uint16 Sample index that recording begins on (this sample is recorded).
stop_index 38 uint16 Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = stop_index - start_index.
data 40 int16*Nt Nt int16 real samples.

Due to a hardware hack, there are always two waveforms in each EPRI, but really these two waveforms should have been associated with individual records since they come from the same source. Because of this, when this file is loaded, these two waveforms are summed together during loading so that there is only one waveform after loading and the number of presums is doubled.

# File version 3: snow3/kuband3

IEEE big endian format.

Field Byte Offset Type Description
EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset.
seconds 8 uint32 Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. fraction 12 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. counter 16 uint64 Counter operating at fparam.clk. This counter is starts at zero and is never reset. comp_time_sod 24 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. presums 34 uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done. bit_shifts 35 int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. start_index 36 uint16 Sample index that recording begins on (this sample is recorded). stop_index 38 uint16 Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = floor((stop-start)/DDC_dec)). DC_offset 40 int16 DC offset to cancel out ADC offset before entering DDC. Generally this field is not needed. NCO_freq 42 uint16 Numerically controlled oscillator (NCO). This parameter is the step size in a sine look up table with 32768 elements. For example, when the NCO equals one, it will take 32768 clock cycles to go through one clock cycle. nyquist_zone 44 uint8 ADC external filter select (Nyquist zone select) DDC_dec 45 uint8 Indicates the amount of decimation. A value of N means decimation by 2^(N+1). When this field is loaded, one is always added to it so that the a value of N means decimation by 2^N to match the other file formats. The possible decimation values supported by the hardware are 4, 8, 16, and 32. complex 47 uint8 This field is inverted. If 0, then the data is complex. If 1, then the data is real and the DDC is disabled. When this field is loaded it is inverted so that a 1 means complex/DDC data. data 48 int16*Nt Nt int16 real samples or Nt int16 complex samples. Sample order is real0, imag0, real1, imag1, etc. Certain selections of start/stop index sometimes add an extra sample (a bug in the hardware). # File version 4: snow2/kuband2 alternate IEEE big endian format. Field Byte Offset Type Description Frame sync 0 uint32 0xBADA55E5 EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. seconds 8 uint64 Seconds of day field. Pulled from NMEA$GPGGA UTC time using hardware UART, character string "00HHMMSS" in ASCII format. First two bytes are always zero. The last two bytes are a 2 character ASCII seconds of minute string. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect.
fraction 16 uint64 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count and generally never wrap around because it is 64 bits.
counter 24 uint64 Counter operating at fparam.clk. This counter is starts at zero and is never reset.
presums 34 uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done.
bit_shifts 35 int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts.
start_index 36 uint16 Sample index that recording begins on (this sample is recorded).
stop_index 38 uint16 Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = stop_index - start_index.
data 40 int16*Nt Nt int16 real samples.

# File version 5: snow3/kuband3

IEEE big endian format. Second version of DDC code.

Field Byte Offset Type Description
EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset.
seconds 8 uint32 Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. fraction 12 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. counter 16 uint64 Counter operating at fparam.clk. This counter is starts at zero and is never reset. comp_time_sod 24 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. wf index 32 uint8 Waveform index num_wfs 33 uint8 Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. presums 34 uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done. bit_shifts 35 int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. start_index 36 uint16 Sample index that recording begins on (this sample is recorded). stop_index 38 uint16 Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = floor((stop-start)/DDC_dec)). DC_offset 40 int16 DC offset to cancel out ADC offset before entering DDC. Generally this field is not needed. NCO_freq 42 uint16 Numerically controlled oscillator (NCO). This parameter is the step size in a sine look up table with 32768 elements. For example, when the NCO equals one, it will take 32768 clock cycles to go through one clock cycle. nyquist_zone 44 uint8 ADC external filter select (Nyquist zone select) DDC_dec 45 uint8 Indicates the amount of decimation. A value of N means decimation by 2^N. The possible decimation values supported by the hardware are 2, 4, 8, 16. complex 47 uint8 This field is inverted. If 0, then the data is complex. If 1, then the data is real and the DDC is disabled. When this field is loaded it is inverted so that a 1 means complex/DDC data. data 48 int16*Nt Nt int16 real samples or Nt int16 complex samples. Sample order is real0, imag0, real1, imag1, etc. Certain selections of start/stop index sometimes add an extra sample (a bug in the hardware). # File version 6: snow4/kuband4 IEEE big endian format. NRL Snow Radar. Record boundaries are ambiguous. If switch is toggling between nadir and side-looking, then one record (EPRI) should include both the nadir and side-looking waveforms in a single record. However, a different EPRI and time stamp is assigned to the nadir and side-looking waveforms. Therefore two record headers get saved with every record. For synchronization, the second record is removed and the EPRI field is divided by 2. Field Byte Offset Type Description Frame sync 0 uint32 0xBADA55E5 EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. seconds 8 uint32 Seconds of day field. Pulled from NMEA$GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect.
fraction 12 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits.
counter 16 uint64 Counter operating at fparam.clk. This counter is starts at zero and is never reset.
comp_time_sod 24 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader.
delay 32 uint16 The delay of the reference signal. One (1) delay is equal to 8ns.
presums 34 uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done.
bit_shifts 35 int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts.
start_index 36 uint16 Sample index that recording begins on (this sample is recorded).
stop_index 38 uint16 Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = stop_index - start_index.
DC_offset 40 int16 DC offset to cancel out ADC offset before entering DDC. Generally this field is not needed.
NCO_freq 42 uint16 Numerically controlled oscillator (NCO). This parameter is the step size in a sine look up table with 32768 elements. For example, when the NCO equals one, it will take 32768 clock cycles to go through one clock cycle.
switch 44 uint8 Indicates the switch setting. For the only system using this file format, 1 = nadir and 0 = side looking.
DDC_dec 45 uint8 Indicates the amount of decimation. A value of N means decimation by 2^N. The possible decimation values supported by the hardware are 2, 4, 8, 16.
complex 47 uint8 This field is inverted. If 0, then the data is complex. If 1, then the data is real and the DDC is disabled. When this field is loaded it is inverted so that a 1 means complex/DDC data.
data 40 int16*Nt Nt int16 real samples or Nt int16 complex samples. Sample order is real0, imag0, real1, imag1, etc. Certain selections of start/stop index sometimes add an extra sample (a bug in the hardware).

# File version 7: snow5/kuband5

IEEE big endian format. AWI Snow Radar.

Field Byte Offset Type Description
Frame sync 0 uint32 0x1ACFFC1D
EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset.
seconds 8 uint32 Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. fraction 12 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. counter 16 uint64 Counter operating at fparam.clk. This counter is starts at zero and is never reset. file_version 24 uint16 This field is hard coded to 7. switch 26 uint8 State of TTL line for this waveform. Use of the switch is season dependent. For AWI snow radar, 0: V transmit polarization, 1: H transmit polarization. num_wfs 27 uint8 Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. presums 34 uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done. bit_shifts 35 int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. start_index 36 uint16 Sample index that recording begins on (this sample is recorded). stop_index 38 uint16 Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = floor((stop-start)/DDC_dec)). DC_offset 40 int16 DC offset to cancel out ADC offset before entering DDC. Generally this field is not needed. NCO_freq 42 uint16 Numerically controlled oscillator (NCO). This parameter is the step size in a sine look up table with 32768 elements. For example, when the NCO equals one, it will take 32768 clock cycles to go through one clock cycle. nyquist_zone 44 uint8 ADC external filter select (Nyquist zone select) DDC_dec 45 uint8 Indicates the amount of decimation. A value of N means decimation by 2^N. The possible decimation values supported by the hardware are 2, 4, 8, 16. complex 47 uint8 This field is inverted. If 0, then the data is complex. If 1, then the data is real and the DDC is disabled. When this field is loaded it is inverted so that a 1 means complex/DDC data. data 48 int16*Nt Nt int16 real samples or Nt int16 complex samples. Sample order is real0, imag0, real1, imag1, etc. Certain selections of start/stop index sometimes add an extra sample (a bug in the hardware). # File version 8, 11: snow8, data_v11 File version 8 is Agilent AWG based snow radar. File version 11 is Minisnow for 2019 and later. IEEE big endian format. Field Byte Offset Type Description Frame sync 0 uint32 File version 8: 0xBADA55E5 File version 11: 0x1ACFFC1D for the first waveform and 0x00000000 for the remaining waveforms. EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. seconds 8 uint32 Seconds of day field. Pulled from NMEA$GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect.
fraction 12 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits.
counter 16 uint64 Counter operating at fparam.clk. This counter is starts at zero and is never reset.
file_version 24 uint16 For file version 8, this field is always zero even though it should be 8. For file version 11, it is always 11.
num_wfs 27 uint8 Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms.
multifield 33 uint8 Multiple fields in one. See explanation below.
presums 34 uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done.
bit_shifts 35 int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts.
start_index 36 uint16 Sample index that recording begins on (this sample is recorded).
stop_index 38 uint16 Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = floor((stop-start)/DDC_dec)).
waveform_ID 40 char8*8 File version 8: Keysight waveform generator waveform ID. The informal waveform ID was OIB_FMCW for the deramp reference being the same as the transmit signal. For time offsets between the reference and transmit signal, the format is “SSSSSNNN” with “S” representing an ASCII space (32 or 0x20) and “NNN” representing three ASCII numbers 0-9 and a delay of NN.N s. For example “ 090” is a 9 us delay.

File version 11: Reserved (always zero).

## Multifield bit description

Bits Name Description
7:5 reserved MSB, always zero.
4 complex_flag Binary value. 1 indicates complex data. 0 indicates real data.
1:0 nyquist_zone LSB, Nyquist zone select (usually controls an external ADC filter), b'00 is 0 to fs/2, b'01 is fs/2 to f_s, b'10 is f_s to 3fs/2, b'11 is 3fs/2 to 2f_s.

# File version 401: mcords

Custom digital system.

IEEE big endian format.

Field Byte Offset Type Description
radar_ID 4 uint32 Radar ID. Each copy of the radar is assigned a unique ID which is written to this field. This field is not loaded by the loader.
seconds 8 uint32 Seconds of day field. Pulled from NMEA $GPGGA UTC time in software and then increments by one for each 1 PPS pulse that is read in. If there are errors in the PPS signal (e.g. ringing), then the seconds field can be incorrect. fraction 12 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. EPRI 16 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. num_wf 20 uint32 Number of waveforms. Valid range is 1 to 16. NA 24 uint32 Reserved NA 28 uint32 Reserved wf 32 64 bits*16 Waveform fields. data 160 uint16*Nt*num_wf Samples are not interleaved. Waveform 1 comes first, then waveform 2, and so on. Up to 16 waveforms. Each waveform is Nt uint16 real samples. ## wf Fields Each wf field has 8 bytes. There are 16 wf fields. Field Byte Offset Type Description num_sam 0 uint32 Number of samples. Only bits 13:0 are used. The rest are always zero. Multifield 4 uint32 Multiple fields in one. See explanation below. ### Multifield bit description Bits Name Description 31:29 reserved MSB, always zero. 28:24 bit_shifts Number of logical right bit shifts performed after presumming. 23:10 start_index Sample index that recording begins on (this sample is recorded). 9:0 presums Number of presums minus 1. If this field is N, then there were N+1 presums. The loader adds one to this field so that a value of N means N presums were done. # File version 402: mcords2 NI digital system. IEEE big endian format. Field Byte Offset Type Description Frame sync 0 uint32 0xBADA55E5 EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. seconds 8 uint32 Seconds of day field. Pulled from NMEA$GPGGA UTC time in software and then increments by one for each 1 PPS pulse that is read in. If there are errors in the PPS signal (e.g. ringing), then the seconds field can be incorrect.
fraction 12 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits.
comp_time_sod 16 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader.
NA 24 uint64 Notes indicate a second UTC time SOD field, but it is not used.
wf index 32+WF uint8 Waveform index. This field is zero-indexed.
num_wfs 33+WF uint8 Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1.
presums 34+WF uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data.
bit_shifts 35+WF int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts.
start_index 36+WF uint16 Sample index that recording begins on (this sample is recorded).
stop_index 38+WF uint16 Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = stop_index - start_index.

WF is the waveform offset. For waveform 0 this is always WF = 0. Subsequent waveforms are appended in sequence to the file and their byte offset in each record is determined by the cumulative sum of the previous waveforms.

# File version 403: mcords3

NI digital system. Version 2 format for RDS.

IEEE big endian format.

Field Byte Offset Type Description
EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset.
seconds 8 uint32 Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. fraction 12 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. counter 16 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. comp_time_sod 24 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. wf index 32+WF uint8 Waveform index. This field is zero-indexed. num_wfs 33+WF uint8 Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1. presums 34+WF uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data. bit_shifts 35+WF int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. start_index 36+WF uint16 Sample index that recording begins on (this sample is recorded). stop_index 38+WF uint16 Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = stop_index - start_index. data 40+WF int16*Nt*num_adc Nt int16 real samples for num_adc ADC inputs. num_adc is always 4 for this data format. Samples are interleaved for each ADC. The order is real0_adc0, real0_adc1, real0_adc2, real0_adc3, real1_adc0, real1_adc1, real1_adc2, real1_adc3, real2_adc0, etc. WF is the waveform offset. For waveform 0 this is always WF = 0. Subsequent waveforms are appended in sequence to the file and their byte offset in each record is determined by the cumulative sum of the previous waveforms. # File version 404: mcords4 NI digital system. Wideband system deployed only for 2013 Antarctica Basler. IEEE big endian format. Field Byte Offset Type Description Frame sync 0 uint32 0x1ACFFC1D EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. NA 8 uint32 Shows FPGA firmware version used for data storage. The format of version tag in decimal display format is: YYYY-MM-DD-VV, e.g. 2013081401, means the FPGA firmware is version 01 generated on 08/14/2013. This is not loaded by the loader. NA 12 uint32 This filed is reserved for tagging the measurement type of the data. Current measurement code is: 1. Normal measurement 2. Noise measurement 3. Calibration This is not loaded by the loader. seconds 16 uint32 Seconds of day field. Pulled from NMEA$GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect.
fraction 20 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits.
counter 24 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader.
comp_time_sod 32 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader.
wf index 40+WF uint8 Waveform index. This field is zero-indexed.
num_wfs 41+WF uint8 Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1.
presums 42+WF uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data.
bit_shifts 43+WF int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts.
start_index 44+WF uint16 Sample index that recording begins on (this sample is recorded).
stop_index 46+WF uint16 Sample index that recording stops on (this sample is not recorded). Number of samples in recorded waveform is Nt = 4*(stop_index - start_index).
data 48+WF int16*Nt Nt int16 real samples.

WF is the waveform offset. For waveform 0 this is always WF = 0. Subsequent waveforms are appended in sequence to the file and their byte offset in each record is determined by the cumulative sum of the previous waveforms.

# File version 407,408: mcords5

NI digital system. AWI UWB system.

There is a bug in the header format for file version 408. For file version 408, every 8 bytes, there are 8 zeros inserted. Therefore this table is shown separately from 407.

IEEE big endian format.

## File version 407

Field Byte Offset Type Description
Frame sync 0 uint32 0x1ACFFC1D
EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset.
NA 8 uint16 Shows FPGA firmware version used for data storage. The format of version tag in decimal display format is noted as: YMMDD (but this is not possible since this is 20 bits). This field is not loaded by the loader.
DDC_dec 10 uint16 The digital down converter (DDC) decimation. DDC_dec == 0 means no decimation and no DDC. DDC_dec== 1 means decimation by 4. DDC_dec == 2 means decimation by 8. The loader converts this to the actual decimation so that DDC_dec 0, 4, or 8. The complex flag is set to 1 when DDC is enabled.
NA 12 uint32 This filed is reserved for tagging the measurement type of the data. Current measurement code is:
1. Normal measurement
2. Noise measurement
3. Calibration

seconds 16 uint32 Seconds of day field. Pulled from NMEA $GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect. fraction 20 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits. counter 24 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. comp_time_sod 32 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader. wf index 40+WF uint8 Waveform index. This field is zero-indexed. num_wfs 41+WF uint8 Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1. presums 42+WF uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data. bit_shifts 43+WF int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts. start_index 44+WF uint16 Sample index that recording begins on (this sample is recorded). Nt 46+WF uint16 Number of samples recorded after record start, the actual length of the data need to be adjusted according to the DDC_dec field: • DDC_dec==1 or direct sampling: Actual data length = 8 * Record length • DDC_dec==4: Actual data length = 4 * Record length • DDC_dec==8: Actual data length = 2 * Record length data 48+WF int16*Nt Nt int16 real samples packed depending on the DDC mode. For DDC_dec==8, the samples are packed in order and interleaved I and Q. For DDC_dec==4, the samples are packed real0, real1, imag0, imag1, real2, real3, imag2, imag3, real4, etc. For DDC_dec==1, the samples are packed data0, data2, data4, data6, data1, data3, data5, data7, and then repeats with the next 8 samples data8, data10, data12, data14, data9, data11, etc. WF is the waveform offset. For waveform 0 this is always WF = 0. Subsequent waveforms are appended in sequence to the file and their byte offset in each record is determined by the cumulative sum of the previous waveforms. ## File version 408 Field Byte Offset Type Description Frame sync 0 uint32 0x1ACFFC1D EPRI 4 uint32 Pulse number. Starts at zero when radar is turned on and increments by one for each PRI sequence. Does not reset to 0 unless hardware is reset. NA 16 uint16 Shows FPGA firmware version used for data storage. The format of version tag in decimal display format is noted as: YMMDD (but this is not possible since this is 20 bits). This field is not loaded by the loader. DDC_dec 18 uint16 The digital down converter (DDC) decimation. DDC_dec == 0 means no decimation and no DDC. DDC_dec== 1 means decimation by 4. DDC_dec == 2 means decimation by 8. The loader converts this to the actual decimation so that DDC_dec 0, 4, or 8. The complex flag is set to 1 when DDC is enabled. NA 20 uint32 This filed is reserved for tagging the measurement type of the data. Current measurement code is: 1. Normal measurement 2. Noise measurement 3. Calibration This is not loaded by the loader. seconds 32 uint32 Seconds of day field. Pulled from NMEA$GPGGA UTC time using hardware UART, character string "SSMMHH00" in binary coded decimal (BCD) format. If there are errors in the NMEA string received by the UART, then the seconds field can be incorrect.
fraction 36 uint32 Counter operating at fparam.clk. This counter is reset to zero after each PPS signal. If there is a missing PPS signal, then this signal will count until it wraps due to only having 32 bits.
counter 48 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader.
comp_time_sod 64 uint64 Computer time in milliseconds of day. May not be set in which case it is zero. This field is not loaded by the loader.
wf index 80+WF uint8 Waveform index. This field is zero-indexed.
num_wfs 81+WF uint8 Number of waveforms minus 1. A value of N in this field, means that there are N+1 waveforms. Note that this field is hard coded to 1 meaning that there are two waveforms in each record. Due to a hardware hack, these two waveforms actually represent the same data stream. These two waveforms are always loaded together and summed so that effectively there is just one waveform. Therefore the loader always returns num_wfs == 1.
presums 82+WF uint8 Number of presums minus 1. A value of N in this field, means that N+1 presums were done. Note that this is always doubled after loading because of the hardware hack which is solved by adding the two waveforms together which effectively doubles the number of presums for the loaded data.
bit_shifts 83+WF int8 Number of left bit shifts. A negative number means that many right bit shifts. This field is negated when read in so that positive bit shifts means right bit shifts.
start_index 84+WF uint16 Sample index that recording begins on (this sample is recorded).
Nt 86+WF uint16 Number of samples recorded after record start, the actual length of the data need to be adjusted according to the DDC_dec field:
• DDC_dec==1 or direct sampling: Actual data length = 8 * Record length
• DDC_dec==4: Actual data length = 4 * Record length
• DDC_dec==8: Actual data length = 2 * Record length
data 96+WF int16*Nt Nt int16 real samples packed depending on the DDC mode. For DDC_dec==8, the samples are packed in order and interleaved I and Q. For DDC_dec==4, the samples are packed real0, real1, imag0, imag1, real2, real3, imag2, imag3, real4, etc. For DDC_dec==1, the samples are packed data0, data2, data4, data6, data1, data3, data5, data7, and then repeats with the next 8 samples data8, data10, data12, data14, data9, data11, etc.

WF is the waveform offset. For waveform 0 this is always WF = 0. Subsequent waveforms are appended in sequence to the file and their byte offset in each record is determined by the cumulative sum of the previous waveforms.