
  {
    "SchemaVersion":"2.8.0",
    "Comment":"GENERATED FILE - DO NOT EDIT. Generated by keel from the YAML database in database/; edit database/pgns/*.yaml and run 'make generated'. See https://github.com/canboat/canboat for the full source code",
    "CreatorCode":"Canboat NMEA2000 Analyzer",
    "License":"Apache License Version 2.0",
    "Version":"9.2.0",
    "Copyright":"CANboat version v9.2.0\n\n(C) 2009-2026, Kees Verruijt, Harlingen, The Netherlands.\nFor more information see https://github.com/canboat/canboat\n\nThis file is part of CANboat.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n\n",
    "Protocol":"quick",
    "PhysicalQuantities":[
    {
        "Name":"ELECTRICAL_CURRENT",
      "Description":"Electrical current",
      "URL":"https://en.wikipedia.org/wiki/Electric_current",
      "UnitDescription":"Ampere",
      "Unit":"A"
      },
    {
        "Name":"ELECTRICAL_CHARGE",
      "Description":"Electrical charge",
      "URL":"https://en.wikipedia.org/wiki/Electric_charge",
      "UnitDescription":"Coulomb",
      "Unit":"C"
      },
    {
        "Name":"ELECTRICAL_ENERGY",
      "Description":"Electrical energy",
      "Comment":"The amount of electricity used or stored. The base unit used in NMEA 2000 is the Kilo Watt Hour (kWh) which is equivalent to 3.6e6 J (Joules).",
      "URL":"https://en.wikipedia.org/wiki/Electrical_energy",
      "UnitDescription":"Kilo Watt Hour",
      "Unit":"kWh"
      },
    {
        "Name":"ELECTRICAL_POWER",
      "Description":"Electrical power",
      "Comment":"The amount of energy transferred or converted per unit time.",
      "URL":"https://en.wikipedia.org/wiki/Electrical_power",
      "UnitDescription":"Watt",
      "Unit":"W"
      },
    {
        "Name":"ELECTRICAL_APPARENT_POWER",
      "Description":"AC apparent power",
      "Comment":"The amount of power transferred where the current and voltage are in phase.",
      "URL":"https://en.wikipedia.org/wiki/Volt-ampere",
      "UnitDescription":"Volt Ampere",
      "Unit":"VA"
      },
    {
        "Name":"ELECTRICAL_REACTIVE_POWER",
      "Description":"AC reactive power",
      "Comment":"The amount of power transferred where the current and voltage are not in phase.",
      "URL":"https://en.wikipedia.org/wiki/Volt-ampere#Reactive",
      "UnitDescription":"Volt Ampere Reactive",
      "Unit":"VAR"
      },
    {
        "Name":"POTENTIAL_DIFFERENCE",
      "Description":"Potential difference",
      "URL":"https://en.wikipedia.org/wiki/Voltage",
      "UnitDescription":"Volt",
      "Unit":"V"
      },
    {
        "Name":"POWER_FACTOR",
      "Description":"Power Factor",
      "Comment":"Used in AC circuits only, the ratio of the real power absorbed by the load to the apparent power flowing in the circuit. If less than one, the voltage and current are not in phase.",
      "URL":"https://en.wikipedia.org/wiki/Power_factor",
      "UnitDescription":"Cos(Phi)",
      "Unit":"Cos Phi"
      },
    {
        "Name":"LENGTH",
      "Description":"Length",
      "Comment":"The physical size in one dimension of an object.",
      "URL":"https://en.wikipedia.org/wiki/Length",
      "UnitDescription":"Meter",
      "Unit":"m"
      },
    {
        "Name":"DISTANCE",
      "Description":"Distance",
      "Comment":"The amount of separation between two objects.",
      "URL":"https://en.wikipedia.org/wiki/Distance",
      "UnitDescription":"meter",
      "Unit":"m"
      },
    {
        "Name":"SPEED",
      "Description":"Speed",
      "Comment":"The velocity, or length per unit of time.",
      "URL":"https://en.wikipedia.org/wiki/Speed",
      "UnitDescription":"meter per second",
      "Unit":"m/s"
      },
    {
        "Name":"ANGLE",
      "Description":"Angle",
      "Comment":"All standardized PGNs seen so far all use radians, but some manufacturer specific PGNs use degrees (deg).",
      "URL":"https://en.wikipedia.org/wiki/Angle",
      "UnitDescription":"radian",
      "Unit":"rad"
      },
    {
        "Name":"ANGULAR_VELOCITY",
      "Description":"Angular velocity",
      "Comment":"The speed at which a measured angle changes",
      "URL":"https://en.wikipedia.org/wiki/Angular_velocity",
      "UnitDescription":"radians per second",
      "Unit":"rad/s"
      },
    {
        "Name":"VOLUME",
      "Description":"Volume",
      "Comment":"A measure of occupied three-dimensional space.",
      "URL":"https://en.wikipedia.org/wiki/Volume",
      "UnitDescription":"liter",
      "Unit":"L"
      },
    {
        "Name":"VOLUMETRIC_FLOW",
      "Description":"Volumetric flow",
      "Comment":"The volume of fluid which passes per unit time.",
      "URL":"https://en.wikipedia.org/wiki/Volumetric_flow_rate",
      "UnitDescription":"liter per hour",
      "Unit":"L/h"
      },
    {
        "Name":"MAGNETIC_FIELD",
      "Description":"Magnetic field",
      "URL":"https://en.wikipedia.org/wiki/Magnetic_field",
      "UnitDescription":"Tesla",
      "Unit":"T"
      },
    {
        "Name":"FREQUENCY",
      "Description":"Frequency",
      "URL":"https://en.wikipedia.org/wiki/Radio_frequency",
      "UnitDescription":"Hertz",
      "Unit":"Hz"
      },
    {
        "Name":"DATE",
      "Description":"Date",
      "Comment":"A calendar date is a reference to a particular day in time, in NMEA 2000 expressed as the number of days since 1970-01-01 (UNIX epoch).",
      "URL":"https://en.wikipedia.org/wiki/Calendar_date",
      "UnitDescription":"days",
      "Unit":"d"
      },
    {
        "Name":"TIME",
      "Description":"Time",
      "Comment":"Time is what clocks measure. We use time to place events in sequence one after the other, and we use time to compare how long events last. Absolute times in NMEA2000 are expressed as seconds since midnight(in an undefined timezone)",
      "URL":"https://en.wikipedia.org/wiki/Time",
      "UnitDescription":"Second",
      "Unit":"s"
      },
    {
        "Name":"DURATION",
      "Description":"Duration of an event or interval between two points in time",
      "UnitDescription":"Second",
      "Unit":"s"
      },
    {
        "Name":"GEOGRAPHICAL_LATITUDE",
      "Description":"Geographical latitude",
      "Comment":"Combined with a geographical longitude the two fields form a unique point on earth, when height is disregarded.",
      "URL":"https://en.wikipedia.org/wiki/Geographic_coordinate_system",
      "UnitDescription":"degree",
      "Unit":"deg"
      },
    {
        "Name":"GEOGRAPHICAL_LONGITUDE",
      "Description":"Geographical longitude",
      "Comment":"Combined with a geographical latitude the two fields form a unique point on earth, when height is disregarded.",
      "URL":"https://en.wikipedia.org/wiki/Geographic_coordinate_system",
      "UnitDescription":"degree",
      "Unit":"deg"
      },
    {
        "Name":"TEMPERATURE",
      "Description":"Temperature",
      "URL":"https://en.wikipedia.org/wiki/Temperature",
      "UnitDescription":"Kelvin",
      "Unit":"K"
      },
    {
        "Name":"PRESSURE",
      "Description":"Pressure",
      "URL":"https://en.wikipedia.org/wiki/Pressure",
      "UnitDescription":"Pascal",
      "Unit":"Pa"
      },
    {
        "Name":"PRESSURE_RATE",
      "Description":"Pressure rate",
      "Comment":"How the pressure changes over time.",
      "URL":"https://en.wikipedia.org/wiki/Pressure",
      "UnitDescription":"Pascal per hour",
      "Unit":"Pa/hr"
      },
    {
        "Name":"CONCENTRATION",
      "Description":"Concentration of one substance in another, in this marine context usually the amount of salts in water",
      "URL":"https://www.engineeringtoolbox.com/water-salinity-d_1251.html",
      "UnitDescription":"parts per million",
      "Unit":"ppm"
      },
    {
        "Name":"DIMENSIONLESS_RATIO",
      "Description":"Dimensionless ratio",
      "Comment":"A ratio of two quantities with the same dimension, yielding a unitless number. Includes percentages, eccentricity (m/m), clock drift (s/s), and similar.",
      "URL":"https://en.wikipedia.org/wiki/Dimensionless_quantity",
      "UnitDescription":"ratio",
      "Unit":"ratio"
      },
    {
        "Name":"SQUARE_ROOT_LENGTH",
      "Description":"Square root of length",
      "Comment":"Used in GPS/GNSS almanac data for the square root of the semi-major axis of satellite orbits.",
      "URL":"https://en.wikipedia.org/wiki/Semi-major_and_semi-minor_axes",
      "UnitDescription":"sqrt(m)",
      "Unit":"sqrt(m)"
      },
    {
        "Name":"SIGNAL_STRENGTH",
      "Description":"Signal strength expressed in dB with respect to 1 uV/m",
      "URL":"https://en.wikipedia.org/wiki/Signal_strength_in_telecommunications",
      "UnitDescription":"decibel",
      "Unit":"dB"
      },
    {
        "Name":"SIGNAL_TO_NOISE_RATIO",
      "Description":"Signal-to-noise ratio",
      "URL":"https://en.wikipedia.org/wiki/Signal-to-noise_ratio",
      "UnitDescription":"decibel",
      "Unit":"dB"
      }
    ],
    "FieldTypes":[
    {
        "Name":"NUMBER",
      "Description":"Number",
      "EncodingDescription":"Binary numbers are little endian. Number fields that are at least two bits in length use the highest positive value to represent unknown. Number fields with at least 7 as maximum (3 bits unsigned, 4 bits signed) use the highest value minus one as an error indicator. This is likely also true for numbers where 3 is the maximum value, but there are few fields that have this length -- certainly as a number, there are a lot of lookup fields of two bits length.  For signed numbers the maximum values are the maximum positive value and that minus 1, not the all-ones bit encoding which is the maximum negative value.",
      "URL":"https://en.wikipedia.org/wiki/Binary_number",
      "Sentinels":"TopOfRange"
      },
    {
        "Name":"FLOAT",
      "Description":"32 bit IEEE-754 floating point number",
      "URL":"https://en.wikipedia.org/wiki/IEEE_754",
      "Bits":32,
      "Signed":true,
      "Sentinels":"NaN"
      },
    {
        "Name":"DECIMAL",
      "Description":"An unsigned numeric value where each byte holds the binary value of two decimal digits (0..99)",
      "EncodingDescription":"Each byte contains the binary value of two decimal digits, so 1234 is represented by 2 bytes containing 0x0c (=12) and 0x22 (=34). This is NOT BCD. A value with an odd number of digits is padded with a trailing zero, e.g. the 9-digit MMSI 512000953 is encoded as 5120009530 (5 bytes), as a DSC call sends it (ITU-R M.585); a trailing zero is taken as that padding and dropped, so it decodes as 512000953, the same as an MMSI field. The leading zeros of a group (0MIDXXXXX) or coast station (00MIDXXXX) MMSI are part of it and stay. A decoder must not drop the trailing zero when the field has TrailingZeroIsDigitField and TrailingZeroIsDigitValue and the field with that order holds that value, as the last digit is then part of the value. PGN 129808's DSC Message Address does this for a call to a geographical area (DSC Format 102), whose ten digits all count. A byte that is not a digit pair (above 99), or a field the packet ends inside, makes the whole value not available.",
      "Signed":false,
      "Sentinels":"None"
      },
    {
        "Name":"LOOKUP",
      "Description":"Number value where each value encodes for a distinct meaning",
      "EncodingDescription":"Each lookup has a LookupEnumeration defining what the possible values mean",
      "Comment":"For almost all lookups the list of values is known with some precision, but it is quite possible that a value occurs that has no corresponding textual explanation. Generally the same special values for Error (max value - 1) and Unknown (max value) that are used for plain numbers are also valid for lookups, but some lookups define a lookup key/value pair for the maximum possible value in that field. In fact, recent additions to PGNs such as alerts have two bit lookup fields that specify four actual valid values. This makes it impossible to send an unknown value for these fields. ",
      "Signed":false,
      "Sentinels":"TopOfRange"
      },
    {
        "Name":"INDIRECT_LOOKUP",
      "Description":"Number value where each value encodes for a distinct meaning but the meaning also depends on the value in another field",
      "EncodingDescription":"Each lookup has a LookupIndirectEnumeration defining what the possible values mean",
      "Comment":"For almost all lookups the list of values is known with some precision, but it is quite possible that a value occurs that has no corresponding textual explanation.",
      "Signed":false,
      "Sentinels":"TopOfRange"
      },
    {
        "Name":"BITLOOKUP",
      "Description":"Number value where each bit value encodes for a distinct meaning",
      "EncodingDescription":"Each LookupBit has a LookupBitEnumeration defining what the possible values mean. A bitfield can have any combination of bits set.",
      "Comment":"For almost all lookups the list of values is known with some precision, but it is quite possible that a value occurs that has no corresponding textual explanation.",
      "Sentinels":"None"
      },
    {
        "Name":"DYNAMIC_FIELD_KEY",
      "Description":"Number value where each value encodes for a distinct meaning including a fieldtype of the next variable field; generally followed by an optional DYNAMIC_FIELD_LENGTH and a DYNAMIC_FIELD_VALUE field; when there is no DYNAMIC_FIELD_LENGTH field the length is contained in the lookup table",
      "EncodingDescription":"Each lookup has a LookupFieldTypeEnumeration defining what the possible values mean",
      "Comment":"These values have been determined by reverse engineering, given the known values it is anticipated that there are unknown enumeration values and some known values have incorrect datatypes",
      "Signed":false,
      "Sentinels":"TopOfRange"
      },
    {
        "Name":"DYNAMIC_FIELD_LENGTH",
      "Description":"Number value that indicates the length of the following DYNAMIC_FIELD_VALUE field",
      "Signed":false,
      "Sentinels":"TopOfRange"
      },
    {
        "Name":"DYNAMIC_FIELD_VALUE",
      "Description":"Variable field whose type and length is dynamic",
      "EncodingDescription":"The type definition of the field is defined by an earlier LookupFieldTypeEnumeration field. The length is defined by the preceding length field or the length determined by the lookup value.",
      "Sentinels":"Variable"
      },
    {
        "Name":"TIME",
      "Description":"Time",
      "URL":"https://en.wikipedia.org/wiki/Time",
      "Unit":"s",
      "Sentinels":"TopOfRange"
      },
    {
        "Name":"DURATION",
      "Description":"Duration",
      "Unit":"s",
      "Sentinels":"TopOfRange"
      },
    {
        "Name":"DATE",
      "Description":"Date",
      "EncodingDescription":"The date, in days since 1 January 1970.",
      "URL":"https://en.wikipedia.org/wiki/Calendar_date",
      "Bits":16,
      "Unit":"d",
      "Signed":false,
      "Sentinels":"TopOfRange"
      },
    {
        "Name":"PGN",
      "Description":"Parameter Group Number",
      "EncodingDescription":"A 24 bit number referring to a PGN",
      "Sentinels":"None"
      },
    {
        "Name":"ISO_NAME",
      "Description":"ISO NAME field",
      "EncodingDescription":"A 64 bit field containing the ISO name, e.g. all fields produced by PGN 60928. Use the definition of PGN 60928 to explain the subfields.",
      "Bits":64,
      "Signed":false,
      "Sentinels":"None"
      },
    {
        "Name":"STRING_FIX",
      "Description":"A fixed length string containing single byte codepoints.",
      "EncodingDescription":"This always takes up as many bytes as defined in the field definition. Three end-of-string characters are seen: 0xff (255), the standard NMEA 2000 \"Unknown\" value. '@', the standard AIS \"Unknown\" value for strings. 0x00, the standard C end-of-string marker. It is encouraged to stop the string at the first such character (and not make it part of the string). An empty string can be considered to make the entire field \"Unknown\".",
      "Comment":"The character encoding is not defined by NMEA 2000. Bytes below 0x80 are ASCII, but above that devices differ, so CANboat decodes the content as UTF-8 when the bytes form well-formed UTF-8 and as ISO 8859-1 (Latin-1) otherwise. See the STRING_LAU comment for the observations behind this.",
      "Sentinels":"EmptyString"
      },
    {
        "Name":"STRING_LZ",
      "Description":"A varying length string containing single byte codepoints encoded with a length byte and terminating zero.",
      "EncodingDescription":"The length of the string is determined by a starting length byte. It also contains a terminating zero byte. The length byte includes neither the zero byte or itself, and it counts bytes rather than characters, so a multi-byte character contributes more than one. For the character encoding see the comment.",
      "Comment":"This type of string is found only in SonicHub and Fusion brand specific PGNs. SonicHub is no longer produced. The use of the Fusion specific PGNs is no longer very prevalent now that there are generic PGNs for audio/media devices. Fusion devices have been observed sending UTF-8 here, including characters that ISO 8859-1 cannot represent at all (see samples/fusion-130820-utf8.raw). CANboat decodes the content as UTF-8 when the bytes form well-formed UTF-8 and as ISO 8859-1 (Latin-1) otherwise.",
      "VariableSize":true,
      "Sentinels":"EmptyString"
      },
    {
        "Name":"STRING_LAU",
      "Description":"A varying length string containing double or single byte codepoints encoded with a length byte.",
      "EncodingDescription":"The length of the string is determined by a starting length byte. This count includes the length and type bytes, so any empty string contains count 2. The 2nd byte contains 0 for UNICODE (UTF-16) or 1 for ASCII. In practice the ASCII encoding is not restricted to 7-bit ASCII; bytes above 0x7f do occur, and what they mean depends on the sending device. See the comment.",
      "Comment":"Observed on a single bus: a Fusion sends UTF-8 under control byte 1 (bytes C5 AB for U+016B, see samples/fusion-126998-utf8.raw) while a B&G sends ISO 8859-1 (byte E6 for U+00E6, see samples/bandg-129285-latin1.raw) -- the same field type under the same control byte. The encoding therefore follows from neither the field type nor the control byte, and CANboat decodes the content as UTF-8 when the bytes form well-formed UTF-8 and as ISO 8859-1 (Latin-1) otherwise. The two devices also frame the field differently: the B&G appends a zero byte and counts it in the length, the Fusion does neither. Control byte 0 has so far only been seen on fields that were empty.",
      "VariableSize":true,
      "Sentinels":"EmptyString"
      },
    {
        "Name":"BINARY",
      "Description":"Binary field",
      "EncodingDescription":"Unspecified content consisting of any number of bits.",
      "Sentinels":"None"
      },
    {
        "Name":"RESERVED",
      "Description":"Reserved field",
      "EncodingDescription":"All reserved bits shall be 1",
      "Comment":"NMEA reserved for future expansion and/or to align next data on byte boundary",
      "Sentinels":"None"
      },
    {
        "Name":"SPARE",
      "Description":"Spare field",
      "EncodingDescription":"All spare bits shall be 0",
      "Comment":"This is like a reserved field but originates from other sources where unused fields shall be 0, like the AIS ITU-1371 standard.",
      "Sentinels":"None"
      },
    {
        "Name":"MMSI",
      "Description":"MMSI",
      "EncodingDescription":"The MMSI is encoded as a 32 bit number, but is always printed as a 9 digit number and should be considered as a string. The first three or four digits are special, see the USCG link for a detailed explanation. The top three 32-bit values are reserved, as for any number (see below); in addition 0 is not a valid MMSI (no station holds MID 000) and devices send it for \"none\", so 0 is also treated as not available.",
      "URL":"https://navcen.uscg.gov/maritime-mobile-service-identity",
      "Bits":32,
      "Signed":false,
      "Sentinels":"TopOfRange"
      },
    {
        "Name":"VARIABLE",
      "Description":"Variable",
      "EncodingDescription":"The definition of the field is that of the reference PGN and reference field, this is totally variable.",
      "VariableSize":true,
      "Sentinels":"None"
      },
    {
        "Name":"FIELD_INDEX",
      "Description":"Field Index",
      "EncodingDescription":"Index of the specified field in the PGN referenced.",
      "Bits":8,
      "Signed":false,
      "Sentinels":"TopOfRange"
      },
    {
        "Name":"ADDRESS",
      "Description":"NMEA 2000 / J1939 network address",
      "EncodingDescription":"One byte holding the bus address of a device. Every value is meaningful, so there are no top-of-range sentinels -- 0..253 are claimable device addresses, 254 is the null address (a device that has not claimed, or cannot claim, an address) and 255 is the global address, meaning broadcast / all devices.",
      "URL":"https://en.wikipedia.org/wiki/SAE_J1939",
      "Bits":8,
      "Signed":false,
      "Sentinels":"None"
      }
    ],
    "MissingEnumerations":[
      {
        "Name":"Fields",
        "Value":"The list of fields is incomplete; some fields maybe be missing or their attributes may be incorrect"
      },
      {
        "Name":"FieldLengths",
        "Value":"The length of one or more fields is likely incorrect"
      },
      {
        "Name":"Resolution",
        "Value":"The resolution of one or more fields is likely incorrect"
      },
      {
        "Name":"Lookups",
        "Value":"One or more of the lookup fields contain missing or incorrect values"
      },
      {
        "Name":"SampleData",
        "Value":"The PGN has not been seen in any logfiles yet"
      },
      {
        "Name":"Interval",
        "Value":"The default transmission interval is not known"
      },
      {
        "Name":"MissingCompanyFields",
        "Value":"The manufacturer specific PGN seems to not contain the mandatory Company and Industry fields; this is likely a bug or at least incompatibility in the device"
      }
    ],
    "LookupEnumerations":[
      {
        "Name":"ACTISENSE_OPERATING_MODE",
        "MaxValue":65535,
        "EnumValues":[
          {"Name":"Undefined", "Value":0},
          {"Name":"NGT Transfer Normal Mode", "Value":1},
          {"Name":"NGT Transfer Rx All Mode", "Value":2},
          {"Name":"NGT Transfer Raw Mode", "Value":3},
          {"Name":"NGW Convert Normal Mode", "Value":4},
          {"Name":"CAN Packet Mode", "Value":5},
          {"Name":"CAN Packet ASCII Mode", "Value":6},
          {"Name":"Buffer Mode 1", "Value":16},
          {"Name":"Buffer Mode 2", "Value":17},
          {"Name":"Buffer Mode 3", "Value":18},
          {"Name":"Autoswitch Direct Mode", "Value":19},
          {"Name":"Autoswitch Smart Mode", "Value":20},
          {"Name":"Combine Slow Mode", "Value":21},
          {"Name":"Combine Fast Mode", "Value":22},
          {"Name":"Test Mode 1", "Value":23},
          {"Name":"NSI Mode 1", "Value":24},
          {"Name":"IEC 61162-450 Mode 1", "Value":25},
          {"Name":"Normal", "Value":512},
          {"Name":"Predefined Mode 1", "Value":40000},
          {"Name":"Predefined Mode 2", "Value":40001}
        ]
      },
      {
        "Name":"CERTIFICATION_LEVEL",
        "MaxValue":255,
        "EnumValues":[
          {"Name":"Level A", "Value":0},
          {"Name":"Level B", "Value":1}
        ]
      },
      {
        "Name":"QUICK_CHAIN_UNITS",
        "MaxValue":65535,
        "EnumValues":[
          {"Name":"Feet", "Value":2}
        ]
      }
    ],
    "LookupIndirectEnumerations":[
    ],
    "LookupBitEnumerations":[
    ],
    "LookupFieldTypeEnumerations":[
    ],
    "PGNs":[
      
      {
        "PGN":0,
        "Id":"standardCanFrame",
        "Description":"11-bit CAN frame",
        "Explanation":"An 11-bit CAN identifier with no definition. An 11-bit identifier is only a message type and carries no manufacturer, so nothing says which device or protocol sent it; its payload is shown as is.",
        "Type":"Single",
        "Complete":true,
        "Fallback":true,
        "FieldCount":1,
        "Length":8,
        "TransmissionIrregular":true,
        "Fields":[
          {
            "Order":1,
            "Id":"data",
            "Name":"Data",
            "BitLength":64,
            "BitOffset":0,
            "BitStart":0,
            "Resolution":1,
            "FieldType":"BINARY"
          }
        ]
      },
      {
        "PGN":1728,
        "Id":"quickUnknown6c0",
        "Description":"Quick: Unknown 0x6C0",
        "Explanation":"Sent by a Quick windlass alongside Chain Count (0x6C1). Its payload did not change in the one capture we have, so what it carries is not known.",
        "Type":"Single",
        "Complete":false,
        "Missing":["Fields","FieldLengths","Resolution","Interval"
        ],
        "FieldCount":2,
        "Length":8,
        "Fields":[
          {
            "Order":1,
            "Id":"talkerId",
            "Name":"Talker ID",
            "Description":"The same 16 bits start every Quick message from a device; see Chain Count",
            "BitLength":16,
            "BitOffset":0,
            "BitStart":0,
            "Resolution":1,
            "Signed":false,
            "RangeMin":0,
            "RangeMax":65532,
            "UnknownValue":65535,
            "OutOfRangeValue":65534,
            "ReservedValue":65533,
            "FieldType":"NUMBER"
          },
          {
            "Order":2,
            "Id":"data",
            "Name":"Data",
            "BitLength":48,
            "BitOffset":16,
            "BitStart":0,
            "Resolution":1,
            "FieldType":"BINARY"
          }
        ]
      },
      {
        "PGN":1729,
        "Id":"quickChainCount",
        "Description":"Quick: Chain Count",
        "Explanation":"A Quick windlass's chain counter, about twice a second.",
        "Type":"Single",
        "Complete":false,
        "Missing":["Resolution","Lookups","Interval"
        ],
        "FieldCount":3,
        "Length":8,
        "Fields":[
          {
            "Order":1,
            "Id":"talkerId",
            "Name":"Talker ID",
            "Description":"The same 16 bits start every Quick message from a device",
            "BitLength":16,
            "BitOffset":0,
            "BitStart":0,
            "Resolution":1,
            "Signed":false,
            "RangeMin":0,
            "RangeMax":65532,
            "UnknownValue":65535,
            "OutOfRangeValue":65534,
            "ReservedValue":65533,
            "FieldType":"NUMBER"
          },
          {
            "Order":2,
            "Id":"chainCounter",
            "Name":"Chain Counter",
            "Description":"Chain paid out, counted in the unit that Units names",
            "BitLength":32,
            "BitOffset":16,
            "BitStart":0,
            "Resolution":1,
            "Signed":false,
            "RangeMin":0,
            "RangeMax":4294967292,
            "UnknownValue":4294967295,
            "OutOfRangeValue":4294967294,
            "ReservedValue":4294967293,
            "FieldType":"NUMBER"
          },
          {
            "Order":3,
            "Id":"units",
            "Name":"Units",
            "Description":"The unit Chain Counter counts in",
            "BitLength":16,
            "BitOffset":48,
            "BitStart":0,
            "Resolution":1,
            "Signed":false,
            "RangeMin":0,
            "RangeMax":65532,
            "UnknownValue":65535,
            "OutOfRangeValue":65534,
            "ReservedValue":65533,
            "FieldType":"LOOKUP",
            "LookupEnumeration":"QUICK_CHAIN_UNITS"
          }
        ]
      },
      {
        "PGN":1730,
        "Id":"quickUnknown6c2",
        "Description":"Quick: Unknown 0x6C2",
        "Explanation":"Sent by a Quick windlass alongside Chain Count (0x6C1). Its payload did not change in the one capture we have, so what it carries is not known.",
        "Type":"Single",
        "Complete":false,
        "Missing":["Fields","FieldLengths","Resolution","Interval"
        ],
        "FieldCount":2,
        "Length":8,
        "Fields":[
          {
            "Order":1,
            "Id":"talkerId",
            "Name":"Talker ID",
            "Description":"The same 16 bits start every Quick message from a device; see Chain Count",
            "BitLength":16,
            "BitOffset":0,
            "BitStart":0,
            "Resolution":1,
            "Signed":false,
            "RangeMin":0,
            "RangeMax":65532,
            "UnknownValue":65535,
            "OutOfRangeValue":65534,
            "ReservedValue":65533,
            "FieldType":"NUMBER"
          },
          {
            "Order":2,
            "Id":"data",
            "Name":"Data",
            "BitLength":48,
            "BitOffset":16,
            "BitStart":0,
            "Resolution":1,
            "FieldType":"BINARY"
          }
        ]
      },
      {
        "PGN":1731,
        "Id":"quickUnknown6c3",
        "Description":"Quick: Unknown 0x6C3",
        "Explanation":"Sent by a Quick windlass alongside Chain Count (0x6C1). Its payload did not change in the one capture we have, so what it carries is not known.",
        "Type":"Single",
        "Complete":false,
        "Missing":["Fields","FieldLengths","Resolution","Interval"
        ],
        "FieldCount":2,
        "Length":8,
        "Fields":[
          {
            "Order":1,
            "Id":"talkerId",
            "Name":"Talker ID",
            "Description":"The same 16 bits start every Quick message from a device; see Chain Count",
            "BitLength":16,
            "BitOffset":0,
            "BitStart":0,
            "Resolution":1,
            "Signed":false,
            "RangeMin":0,
            "RangeMax":65532,
            "UnknownValue":65535,
            "OutOfRangeValue":65534,
            "ReservedValue":65533,
            "FieldType":"NUMBER"
          },
          {
            "Order":2,
            "Id":"data",
            "Name":"Data",
            "BitLength":48,
            "BitOffset":16,
            "BitStart":0,
            "Resolution":1,
            "FieldType":"BINARY"
          }
        ]
      }
    ]
  }