Sample data EasyParse format

In EasyParse format (calbin00), dataset-1 contains only sample data, comprising sample sets recorded in chronological order. The format of an individual sample set is also quite different from that of Standard format. Every sample set includes a timestamp, and values are already converted to the physical values of the required parameters according to the logger's calibration, with correction or compensation already applied as necessary. They are also stored in a different numeric format, with error codes still accommodated when required. Refer to the following sections for more details.

The logger can also store derived channels such as depth or salinity, which have no corresponding 'raw' value in the Standard data format.

These characteristics make the data easier for host software to interpret:

  1. All stored items are sample sets, with the size fixed for a given logger deployment; 8 bytes for a timestamp, plus 4 bytes for each channel stored.
  2. Host software does not need to do any calculation or need to know the logger's calibration data; final values are stored directly by the logger.
  3. Derived channels are already included.


Sample timing

Sample sets are individually time-stamped; while this consumes memory, it does also mean that timing information is always available for snippets of downloaded data.

Each timestamp is a 64-bit (8-byte) unsigned integer, representing the number of milliseconds elapsed since 1970-Jan-01 00:00:00. This is a format commonly used by Unix-based computer systems, in which leap years are correctly accounted for, but each day is assumed to contain exactly 86400 seconds; there is no allowance for leap seconds or other obscure adjustments. The logger takes no account of time zones or daylight savings adjustments.

If a sample set is the result of an average or a bin, the timestamp reflects the timestamp of the first measurement of the average or bin.

Normal reading values

Each individual reading of the sample data is stored as a 32-bit (4-byte) floating point number in IEEE-754 single precision format. Both measured and derived channels are included in the sample set, with channels ordered as expected according to the results of the channel command. The values are the final computed output for each channel, including all necessary corrections and cross compensations. If an error occurs on an individual channel in a sample set, that channel will be reported as an IEEE-754 'NaN' (Not a Number): see below for more details. 

Error Codes

Under some conditions an error may occur on one channel while data from the other channels is perfectly acceptable. Rather than generating a time-stamped event if this happens, the individual reading is replaced by an error code. 

In EasyParse format, an error code is stored as an IEEE-754 'NaN' (Not a Number), which is compatible with the floating point format of the sample readings, without being a valid value. An error code indicates a problem with that particular reading from the channel in question; other readings in the same sample set may be fine, as may other readings from the same channel in different sample sets.

IEEE-754 provides for multiple NaN values, and this feature is used to encode the nature of the error, although it is acknowledged that host software taking advantage of the simplicity of the EasyParse format will probably not delve into this level of diagnostic detail. The general format is (0xFF800000 + <EC>), where 0xFF800000 is the base value of an IEEE-754 NaN, and <EC> is the error code. The values of <EC> correspond, where possible and appropriate, to the error numbers also used in Standard data storage format.


Error #Hex CodeDescription
-0xFF800001internal computation failure (eg. divide-by-zero)
-0xFF800002unable to compute value, channel not calibrated



00xFF810000generic, unknown or unexpected error
10xFF810001EOC bit unexpectedly set in ADC output
20xFF810002DMY bit unexpectedly set in ADC output
30xFF810003internal addressing error
40xFF810004too much data for internal transfer
50xFF810005access to internal bus denied
60xFF810006timeout sending internal command
70xFF810007timeout receiving internal response
80xFF810008generic failure to interpret response
90xFF810009no sample was started
100xFF81000Asample acquisition still in progress
110xFF81000Bsample process failed
120xFF81000Cno valid samples to average
130xFF81000Dinternal response unexpectedly short
140xFF81000Esupporting channel value not valid, or unknown equation
150xFF81000F(reserved)
160xFF810010channel value is outside reasonable range
170xFF810011channel value is below minimum measurable limit
180xFF810012channel value is above maximum measurable limit
190xFF810013sensor output not received within timeout
200xFF810014unable to parse sensor output
210xFF810015channel is not correctly calibrated
220xFF810016floating point value is badly formed
230xFF810017channel not logged