Skip to main content
Skip table of contents

NOV_B messages

Format:

This protocol uses the following frame format:

#

Offset

Field

Type

Unit

Example

Description

-

0

sync1

uint8_t

-

0xaa

Sync byte 1 (always 0xaa)

-

1

sync2

uint8_t

-

0x44

Sync byte 2 (always 0x44)

-

2

sync3

uint8_t

-

0x12

Sync byte 3 (always 0x12)

-

3

header_len

uint8_t

bytes

28

Length of the header (always 28)

-

4

msg_id

uint16_t

-

1234

Message ID (defines the structure of the payload)

-

6

msg_type

uint8_t

-

-

Bitfield:

0

-

msg_source

bits 4…0

-

0

Measurement source, where applicable: 0 = GNSS1, 1 = GNSS2

-

-

reserved0

bits 7…5

-

-

Reserved, ignore

-

7

reserved1

uint8_t

-

-

Reserved, ignore

-

8

payload_len

uint16_t

bytes

20

Total size in bytes of all payload fields

-

10

reserved2

uint16_t

-

-

Reserved, ignore

-

12

reserved3

uint8_t

-

-

Reserved, ignore

1

13

time_status

uint8_t

-

0xb4

Time (gps_wno and gps_tow) validity, 0xb4 = time known, otherwise unknown/invalid

2

14

gps_wno

uint16_t

-

0

GPS week number

3

16

gps_tow

int32_t

ms

0

GPS time of week

-

20

reserved4

uint32_t

-

-

Reserved, ignore

-

24

reserved5

uint16_t

-

-

Reserved, ignore

-

26

reserved6

uint16_t

-

-

Reserved, ignore

4…

28

any type

-

-

Any number of payload fields

-

x

checksum

uint32_t

-

CRC32 checksum (see below)

An alternative “short header” format is available for some cases:

#

Offset

Field

Type

Unit

Example

Description

-

0

sync1

uint8_t

-

0xaa

Sync byte 1 (always 0xaa)

-

1

sync2

uint8_t

-

0x44

Sync byte 2 (always 0x44)

-

2

sync3

uint8_t

-

0x13

Sync byte 3 (always 0x13)

-

3

payload_len

uint8_t

bytes

20

Total size in bytes of all payload fields

-

4

msg_id

uint16_t

-

2269

Message ID

1

6

gps_wno

uint16_t

-

0

Week number

2

8

gps_tow

int32_t

ms

0

Time of week

3…

12

any type

-

-

Any number of payload fields

-

x

checksum

uint32_t

-

CRC32 checksum (same as for normal header)

Notes:

  • All fields are little endian

  • Signed fields are 2’s complement

  • Possible integer types are: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t

  • Possible float types are: float (32 bits) and double (64 bits), as per IEEE 754

Cyclic Redundancy Check (CRC):

The user must calculate a checksum at the end of a data package for the Vision-RTK 2's wheelspeed interface to verify the integrity of the message. We use cyclic redundancy check (CRC) as our error-detecting code to achieve this. The CRC allows the detection of possible errors introduced during the transmission or storage of the message. The user can determine whether the data has been altered by comparing the computed checksum with the original checksum (previously computed and stored with the data).

For the NOV_B message, the checksum is a 32 bit cyclic redundancy check (CRC) with the polynomial 0x04c11db7. You can use the following script to generate the CRC:

CODE
// Generated using https://github.com/madler/crcany.git with the following parameters:
// width=32 poly=0x04c11db7 init=0x00000000 refin=true refout=false xorout=0x00000000 check=0x00000000 residue=0x000000 name="NOVB-32"
static const uint32_t sCrcNovb32[256] =
{
    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
    0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
    0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
    0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
    0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
    0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
    0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
    0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
    0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
    0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
    0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
    0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
    0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
    0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
    0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
    0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
    0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
    0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
    0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
    0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
    0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
    0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
    0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
    0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
    0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
    0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
    0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
    0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
    0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
    0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
    0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
    0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
    0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
    0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
    0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
    0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
    0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
    0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
    0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
};

uint32_t crcNovb32(const uint8_t *data, const int len)
{
    uint32_t crc = 0;
    for (int ix = 0; ix < len; ix++)
    {
        crc = (crc >> 8) ^ sCrcNovb32[(crc ^ data[ix]) & 0xff];
    }
    return crc;
}

The following CRC tables were generated using the following repository and catalog: 'https://github.com/madler/crcany.git ', 'https://reveng.sourceforge.io/crc-catalogue/all.htm '. The polynomials were extracted from 'http://users.ece.cmu.edu/~koopman/crc/crc32.html '.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.