JSF File Data Description 0004824 - Rev - 1.20
JSF File Data Description 0004824 - Rev - 1.20
EdgeTech
4 Little Brook Road
West Wareham, MA 02576
The information, figures, and specifications in this manual are proprietary and are issued in strict
confidence on condition that they not be copied, reprinted, or disclosed to a third party, either wholly or
in part, without the prior, written consent of EdgeTech. Any reproduction of EdgeTech supplied software
or file sharing is strictly prohibited.
CUSTOMER SERVICE
Customer service personnel at EdgeTech are always eager to hear from users of our products. Your
feedback is welcome, and is a valuable source of information which we use to continually improve these
products. We encourage you to contact EdgeTech Customer Service to offer any suggestions or to
request technical support:
E-mail: [email protected]
24-Hour Emergency
Technical Support Line: (508) 942-8043
License Statement
The JSF File Format Description is not covered by any license. It is being provided to you to facilitate
reading and processing the JSF files produced by EdgeTech’s sonar products and systems. This
document is the property of EdgeTech and is being provided with limited rights to its use.
Limitation of Liability
In no event will EdgeTech be liable for any damages, claims, or costs whatsoever arising from this
agreement and/or your use of this document, or any component thereof, including and without
limitation: any consequential, indirect, incidental damages; or any lost profits or lost savings, even if a
representative has been advised of the possibility of such loss, damages, claims, or costs; or for any
claim by any third party. EdgeTech reserves the right to update the documentation without notice at any
time.
Distribution
EdgeTech does not grant the right to give away, sell, license, re-package, or otherwise distribute any
portion of this document without the written permission of EdgeTech, Inc.
Revision History
REV DESCRIPTION DATE APPROVAL
1.20 Updated to include latest messages and reformatted 03/08/2016 LB
for easier reading
WARRANTY DISCLAIMER
EdgeTech provides this document to you without any express or implied warranties of any kind,
including, but not limited to: any implied warranties of merchantability or fitness for a particular
purpose. EdgeTech makes no representations or warranties of any kind with respect to any support
services it may render to you.
EdgeTech does not warrant that the document will meet your requirements, or that the document
contains no defects or errors. You assume full responsibility for the selection, possession, performance,
and proper installation and use of this document for verifying the results obtained therefrom.
EdgeTech is under no obligation to provide any support under this license agreement, including
upgrades or future versions of the document, or any portions thereof, to developer, end user, or to any
other party.
vi
TABLE OF CONTENTS
2.4.6 Message Type 2091: Situation Comprehensive Message (Version 2) ................................. 2-23
2.4.7 Message Type 2100: Cable Counter Data Message ............................................................. 2-25
2.4.8 Message Type 2101: Kilometer of Pipe Data ....................................................................... 2-25
2.4.9 Message Type 2111: Container Timestamp Message .......................................................... 2-26
viii
LIST OF FIGURES
Figure 1-1: Utility Showing Typical Messages Contained within a JSF File ................................................ 1-1
Figure 1-2: Example C Code for Reading a JSF File .................................................................................... 1-2
LIST OF TABLES
1.0 OVERVIEW
EdgeTech’s native file format is stored to a binary file with the extension *.JSF. The JSF file has been in
use for over 10 years and is recorded by default by most EdgeTech topsides running the Discover and
JStar acquisition programs.
This document describes the most common messages found in EdgeTech’s JSF files and is not intended
to be a complete description of all messages contained within. This document should also be used in
conjunction with the JSFdefs.h header file to properly read, store, and process JSF files.
Figure 1-1: Utility Showing Typical Messages Contained within a JSF File
1-2 1.0 OVERVIEW
The JSF file is made up of several types of messages, each beginning with a 16-byte header indicating the
type of data to follow and its size. This section describes the message header along with some of the
potential messages contained within a single JSF file.
EdgeTech strongly recommends that if high positional or situational accuracy is required, the individual
sensor messages should be processed instead (see sub-section2.4 AUXILIARY MESSAGES). Otherwise, this
may be the only message that needs to be interpreted in a JSF file if the level of accuracy is sufficient.
The Validity Flag field (byte 30-31) indicates which auxiliary fields are populated. By convention, if a
value is not present, the field is set to 0.
A Sonar Data Message consists of a 240 byte header followed by the actual acoustic sample data. This
240-byte header is described in the table below.
22 – 27 Reserved 3 x INT16
28 – 29 ID Code (always 1) INT16
1 = Seismic Data
NOTE: Values greater than 255 indicate that the data to follow
is compressed and must be decompressed prior to use. For
more detail refer to the JSF Decompression Description for
more information.
36 – 37 Distance from Antenna to Tow point in Centimeters INT16
Sonar Aft is Positive
2-6 2.0 FILE FORMAT DEFINITION
NOTE: For protocol versions 0xA and above, the MSB1 field
should include the MSBs (Most Significant Bits) needed to
determine the number of samples.
See bits 8-11 in bytes 16-17. Field MSB1 for MSBs for
large sample sizes.
116 – 119 Sampling Interval in Nanoseconds UINT32
NOTE: For protocol versions 0xB and above, see the LSBs field
should include the fractional component needed to determine
the sample interval.
See bits 0-7 in bytes 18-19. Field LSB1 for LSBs for increased
precision.
120 – 121 Gain Factor of ADC UINT16
122 – 123 User Transmit Level Setting (0 – 100%). INT16
124 – 125 Reserved – Do Not Use INT16
126 – 127 Transmit Pulse Starting Frequency in daHz (decaHertz, units of UINT16
10Hz).
NOTE: For protocol versions 0xA and above, the MSB1 field
should include the MSBs (Most Significant Bits) needed to
determine the starting frequency of transmit pulse.
See Bits 0-3 in byte 16-17. Field MSB1 for MSBs for
large transmit pulse.
128 – 129 Transmit Pulse Ending Frequency in daHz (decaHertz, UINT16
units of 10Hz).
NOTE: For protocol versions 0xA and above, the MSB1 field
should include the MSBs (Most Significant Bits) needed to
determine the starting frequency of transmit pulse.
See bits 4-7 in byte 16-17. Field MSB1 for MSBs for
large transmit pulse.
130 – 131 Sweep Length in Milliseconds. UINT16
See bytes 18-19 for LSBs (Least Significant Bits), LSB2 bits 4 -
13 contain the microsecond portion (0 - 999). LSB2 part was
added in protocol version 0xD, and was previously 0.
132 – 135 Pressure in Milli PSI (1 unit = 1/1000 PSI) INT32
See Validity Flag (bytes 30-31)
136 – 139 Depth in Millimeters (if not = 0) INT32
See Validity Flag (bytes 30-31).
2-8 2.0 FILE FORMAT DEFINITION
NOTE: For all data types EXCEPT RAW (Data Format = 2) this is
the sampling frequency of the data. For RAW data, this is one-
half the sample frequency of the data (FS/2). All values are
modulo 65536. Use this in conjunction with the Sample Interval
(Bytes 114-115) to calculate correct sample rate.
142 – 143 Outgoing Pulse Identifier UINT16
144 – 147 Altitude in Millimeters INT32
A zero implies not filled. See Validity Flag (Bytes 30-31)
148 – 151 Sound Speed in Meters per Second. FLOAT
See Validity Flag (Byte 30-31).
152 – 155 Mixer Frequency in Hertz FLOAT
For single pulses systems this should be close to the
center frequency.
For multi pulse systems this should be the approximate
center frequency of the span of all the pulses.
The trace data is transmitted as 16 bit integers in block floating point format per message. This saves
bandwidth and storage space while preserving dynamic range. The weighting factor MUST be applied to
each of the 16 bit integer values to restore the original floating point value.
Each of the data samples then needs to be scaled by the weighting factor, N, according to the equation
below:
The following Compass Heading, Pitch and Roll fields contain useful information about the attitude of
the sonar.
The following Position Fix Hour, Position Fix Minutes, and Position Fix Seconds fields (bytes 186-193)
contain the time of the last position fix. If bit 13 is set (i.e. position interpolated) in Validity Flag (byte
30-31), this will be the same as the CPU and ping time.
NOTE: the NAV time is the time of the latitude and longitude fix.
188 – 189 Position Fix Minutes (0 – 59) INT16
NOTE: the NAV time is the time of the latitude and longitude fix.
190 – 191 Position Fix Seconds (0 – 59) INT16
NOTE: the NAV time is the time of the latitude and longitude fix.
192 – 193 Course in Degrees (0 to 359.9) INT16
Starting with protocol version 0x0C two digits of fractional degrees
are stored in LSB1. Fractional portion in LSBs (Least Significant Bits).
See bytes 18 – 19.
194 – 195 Speed – in Tenths of a Knot INT16
Starting with protocol version 0x0C one additional digit of fractional
knot (1/100) is stored in LSB2. For an additional fractional digit, see
LSB2 (bytes 20 -21).
196 – 197 Position Fix Day (1 – 366) INT16
198 – 199 Position Fix Year INT16
Sonar trace data follows the 240-byte header and consists of 16 bit integer values. The number of
integers to be read can be found by multiplying the number of samples in the trace (bytes 114-115) by
the number of integers per sample for the data type used (1 or 2). Furthermore, doubling this yields the
byte size of the data section. This should exactly match the preceding Message Header byte count (bytes
12 –15) less the header size of 240.
Side Scan Data Messages (Type 82) are never stored by EdgeTech’s Discover Acquisition Program, and
are only encountered in data stored by Sonar. Data recorded by Sonar are almost always recorded in a
compressed format, rendering it unusable without further processing. Please refer to the JSF
Decompression Description for more information.
A Side Scan Data Message (Type 82) is similar to a Sonar Data Message (Type 80) as it contains the exact
same acoustic data. Originally the Side Scan Data Message (Type 82) was intended for Side Scan data
only but it’s been used to store Sub-Bottom data as well. The system configuration determines which
type of data is actually present. Each Side Scan Data Message has an 80 byte header, the content of
which is defined below. As with Sonar Data Messages, unused fields should be set to 0.
Sonar trace data follows the 80-byte header and consists of 16 bit integer values. The number of
integers to be read can be found by multiplying the number of samples in the trace (bytes 12-15) by the
number of integers per sample for the data type used (1 or 2).
Furthermore, doubling this yields the byte size of the data section. This should exactly match the
preceding 16 byte Message Header byte count (bytes 12 –15) less the header size of 80.
2-16 2.0 FILE FORMAT DEFINITION
The size of the System Information Message is subject to change, as more detailed information may be
added in future versions of the software. The byte count in the message header should be used to
determine the total size of the structure and jump over to the next message in the file.
148 – 155 Double float: X Angular rate in Degrees per Second, Port Up is FLOAT64
Positive
156 – 163 Double float: Y Angular rate in Degrees per Second, Bow Up is FLOAT64
Positive
164 – 171 Double float: Z Angular rate in Degrees per Second, Starboard is FLOAT64
Positive
172 – 179 Double float: XX, Forward, Acceleration in Meters per Second FLOAT64
Squared
180 – 187 Double float: Y, Starboard, Acceleration in Meters per Second FLOAT64
Squared
188 – 195 Double float: Z, Downward, Acceleration in Meters per Second FLOAT64
Squared
196 – 203 Double float: Latitude Standard Deviation in Meters FLOAT64
204 – 211 Double float: Longitude Standard Deviation in Meters FLOAT64
212 – 219 Double float: Depth Standard Deviation in Meters FLOAT64
220 – 227 Double float: Heading Standard Deviation in Degrees FLOAT64
228 – 235 Double float: Pitch Standard Deviation in Degrees FLOAT64
236 – 243 Double float: Roll Standard Deviation in Degrees FLOAT64
244 – 275 Reserved 16 x UINT16