Protocols via USB (virtual UART)
This chapter as a clean, readable HTML page.
The “Protocols via USB (virtual UART)” chapter of the Interfaces and Protocols, reproduced as a real HTML page. Anything unclear? Open the original PDF of just this chapter (pages 56-85) (also pinned top-left). Hub: all chapters.
‘Marvelmind’ protocol for streaming
All packets described in corresponding section for UART are also available via USB (virtual UART).
Note these data are also available for mini-TX and for mini-RX without ‘UART Cable for Mini-Rx’.
Streaming is terminated for 5 seconds if Marvelmind device receives any request according to this protocol.
Protocol of reading/writing data from/to user device
All packets described in corresponding section for UART are also available via USB (virtual UART).
Note these data are also available for mini-TX and for mini-RX without ‘UART Cable for Mini-Rx’.
NMEA0183 communication protocol
All packets described in corresponding section for UART are also available via USB (virtual UART).
Note these data are also available for mini-TX and for mini-RX without ‘UART Cable for Mini-Rx’.
Streaming is terminated for 5 seconds if Marvelmind device receives any request according to this protocol.
Protocol of data exchange with modem via USB interface
This protocol is used by Dashboard software and Marvelmind API described in next chapter.
Modem connects to USB-host as USB device of CDC class (virtual COM port in Windows, ttyUSB or ttyACM in Linux).
Because real RS-232 is not used in this interface, parameters of serial port set on the host (baudrate, number of bits, parity, etc.) may be any
Data is in binary format
«Network address» of device connected via USB is 0xff
Multibyte numbers are transmitted starting from low byte (little endian format)
Reading the latest coordinates pack (firmware V5.13+)
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 2 | uint16_t | Code of data in packet | 0x4110 |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 2 | uint16_t | CRC-16 (see appendix 1) | 0xc004 |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 1 | uint8_t | Number of bytes of data transmitting | 0x64 |
3 | 100 (0x64) | 100 bytes | Data structure (see lower) | |
103 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Format of data field (100 bytes)
Offset | Size (bytes) | Description |
0 | 96 (6*16) | Six last coordinates structures received by modem (see lower) |
96 | 1 | Byte of flags: Bit 0…1: reserved Bit 2: 1 = user data available (see section 12) Bit 3…7: reserved |
97 | 3 | Reserved |
Format of coordinates structure (16 bytes)
Offset | Size (bytes) | Description |
0 | 1 | Address of device |
1 | 4 | Coordinate X, mm (int32_t) |
5 | 4 | Coordinate Y, mm (int32_t) |
9 | 4 | Coordinate Z, mm (int32_t) |
13 | 1 | Byte of flags: Bit 0: 1 – no relevant coordinates (red mode in dashboard) Bit 1: 1 – temporary mobile beacon on frozen map (blue mode) Bit 2: 1 – beacon is used for hedgehog positioning |
14 | 2 | Reserved (0) |
Reading/writing modem configuration Reading modem configuration (firmware V5.30+)
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 2 | uint16_t | Code of data in packet | 0x5000 |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 2 | uint16_t | CRC-16 (see appendix 1) | 0x0550 |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 1 | uint8_t | Number of bytes of data transmission | 0x30 |
3 | 0x30 | structure | Data structure (see below) | |
0x33 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Writing modem configuration
Warning! To write modem configuration you must read configuration, setup the data fields described in following section, and then write it. Do not change any other bytes in structure, this may degrade the work of modem
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data in packet | 0x5000 |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 1 | uint8_t | Number of bytes of data transmission | 0x30 |
7 | 0x30 | structure | Data structure (see below) | |
0x37 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data | 0x5000 |
4 | 2 | uint16_t | reserved | |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Structure of modem configuration data
Many fields of data structure are not explained. Do not change the fields! They are used for adjustment system from the Dashboard program; unauthorized changing may degrade the work of modem
Offset | Size (bytes) | Type | Description |
0 | 20 | 20 bytes | Not explained |
20 | 1 | int8_t | Temperature of air setting Vt (signed). Temperature is (Vt+23) °С |
21 | 1 | uint8_t | Address of the beacon that should have map coordinates X=0, Y=0 |
22 | 4 | 4 bytes | Not explained |
26 | 1 | uint8_t | Address of the beacon that should have map coordinates X>0,Y=0 |
27 | 1 | uint8_t | Address of the beacon that should have map coordinates with Y>0 |
28 | 1 | uint8_t | Control flags: Bit 0: not explained Bit 1: 1 – enabled filtering of mobile beacons movement Bit 2: not explained Bit 3: 1 – high resolution mode (output coordinates in mm instead cm) Bit 4: not explained Bit 5: 1 = mirroring of all map Bit 6: 1= power save mode (power save works only when all of the submaps are frozen) Bit 7: not explained |
29 | 2 | 2 bytes | Not explained |
31 | 1 | uint8_t | N, determines maximum frequency of retrieving hedgehog coordinates F(N)= 2^(N-1) Hz, N= 0…4, F(5)= 12 Hz, F(6)= 16 Hz, F(7)= 16+ (maximum) |
32 | 16 | 16 bytes | Not explained |
Reading/writing submap configuration
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Reading submap configuration (firmware V5.30+)
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 2 | uint16_t | Code of data in packet | 0x60XX where XX is number of submap |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 1 | uint8_t | Number of bytes of data transmission | 0x50 (80) |
3 | 80 | structure | Data structure (see below) | |
83 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Writing submap configuration (firmware V5.30+)
Warning! To write submap configuration you must read configuration, setup the data fields described in following section, and then write it. Do not change any other bytes in structure, this may degrade the work of modem
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data in packet | 0x60XX where XX is number of submap |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 1 | uint8_t | Number of bytes of data transmission | 0x50 (80) |
7 | 80 | structure | Data structure (see below) | |
87 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data | 0x5000 |
4 | 2 | uint16_t | reserved | |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Structure of submap configuration data
Many fields of data structure are not explained. Do not change the fields! They are used for adjustment system from the Dashboard program; unauthorized changing may degrade the work of modem
Offset | Size (bytes) | Type | Description |
0 | 1 | uint8_t | Address of starting beacon for building submap |
1 | 1 | uint8_t | Control word: Bit 0: 1 – submap is frozen (freeze submap) Bit 1: 1 – beacons are higher than hedgehogs Bit 2…4: not explained Bit 5: 1 – mirroring submap Bit 6…7: not explained |
2 | 1 | uint8_t | Limitation of distances: Bit 0…6: manual limitation distances (if bit 7 = 1) Bit 7: 0 – automatic limitation, 1 = manual |
3 | 13 | 13 bytes | Not explained |
16 | 2 | int16_t | X shift of submap, cm |
18 | 2 | int16_t | Y shift of submap, cm |
20 | 2 | uint16_t | Rotation of submap, centidegrees |
22 | 58 | 58 bytes | Not explained |
Sleeping/waking up devices
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of device | 0x01…0xfe |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data in packet | 0xb006 |
4 | 2 | uint16_t | Access mode | For wake: 0x0002 Others: 0x0001 |
6 | 1 | uint8_t | Number of bytes of data transmission | 0x08 |
7 | 1 | uint8_t | Password, byte 0 | 0x2d |
8 | 1 | uint8_t | Password, byte 1 | 0x94 |
9 | 1 | uint8_t | Password, byte 2 | 0x5e |
10 | 1 | uint8_t | Password, byte 3 | 0x81 |
11 | 1 | uint8_t | Command: 0 – standard sleep 1 – deep sleep (wake only on HW reset) 2 – wake up from standard sleep 3…255 – reserved | 0…2 |
12 | 3 | 3 bytes | reserved | |
15 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame for waking command (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of device | 0x01…0xfe |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data | 0xb006 |
4 | 2 | uint16_t | reserved | |
6 | 2 | uint16_t | CRC-16 (see appendix) |
Format of answer frame for sleeping commands (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of device | 0x01…0xfe |
1 | 1 | uint8_t | Type of packet (modem reply) | 0x7f |
2 | 2 | uint16_t | Code of data | 0xb006 |
4 | 2 | uint16_t | reserved | |
6 | 2 | uint16_t | CRC-16 of bytes 0…5 (see appendix 1) | |
8 | 1 | uint8_t | Address of device | 0x01…0xfe |
9 | 1 | uint8_t | Type of packet | 0x10 |
10 | 2 | uint16_t | Code of data | 0xb006 |
12 | 2 | uint16_t | reserved | |
14 | 2 | uint16_t | CRC-16 for bytes 8…13(see appendix) |
Format of error reply is described in Appendix 2.
Setting address of device
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of device | 0x01…0xfe |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data in packet | 0x0101 |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 1 | uint8_t | Number of bytes of data transmission | 0x02 |
7 | 1 | uint8_t | Code of data item (address) | 0x00 |
8 | 1 | uint8_t | New address of device | |
9 | 2 | uint16_t | CRC-16 (see appendix 1) |
Reading measured raw distances
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
This command is accessible in two modes:
- With code of data 0x4000 – reading last eight distances. Answer frame contains last 8 measured distances from the moment of request
- With code of data 0x4001 – reading all distances frame by frame. Answer frame for every next request contains next 8 saved measured distances. When all table of distances is transmitted, it starts from the beginning
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 2 | uint16_t | Code of data in packet | 0x4000 or 0x4001 |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 1 | uint8_t | Number of bytes of data transmitting | 0x28 |
3 | 40 (0x28) | 40 bytes | Data structure (see lower) | |
43 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Format of data field (40 bytes)
Offset | Size (bytes) | Description |
0 | 32 (8*4) | Eight raw distances structures (see lower) |
32 | 8 | Reserved |
Format of distance structure (4 bytes)
Offset | Size (bytes) | Description |
0 | 1 | Address of ultrasonic receiver |
1 | 1 | Address of ultrasonic transmitter |
2 | 2 | Measured distance between devices, mm (uint16_t) |
Reading beacons’ state (firmware V5.33+)
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of device | 0x01…0xfe |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 2 | uint16_t | Code of data in packet | 0x0003 |
4 | 2 | uint16_t | Access mode | 0x0002 |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of device | 0x01…0xfe |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 1 | uint8_t | Number of bytes of data transmission | 0x20 |
3 | 32 | 32 bytes | Data structure (see lower) | |
35 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Format of data field:
Offset | Size (bytes) | Type | Description |
0 | 4 | uint32_t | Time of work from reset or wake-up (seconds) |
4 | 1 | uint8_t | R, radio RSSI register value (received signal strength indicator). If R>128, RSSI (dBm) = ( (R-256)/2) – 74 If R<=128) RSSI (dBm) = (R/2) – 74 |
5 | 1 | uint8_t | Not explained |
6 | 1 | int8_t | Measured temperature Vt (signed). Temperature is (Vt+23) °С |
7 | 2 | uint16_t | Bit 0…11: power supply voltage, mV Bit 12…13: not explained Bit 14: 1: low power, device will enter sleep after short time Bit 15: 1: very low power, device will enter deep sleep after short time |
9 | 23 | 23 bytes | Not explained |
Marvelmind robots control commands
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Robot control command
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of robot | 0x01…0xfe |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data in packet | 0x1000 |
4 | 2 | uint16_t | Access mode | 0x0001 |
6 | 1 | uint8_t | Number of bytes of data transmission | 0x10 |
7 | 16 (0x10) bytes | uint8_t | Robot control data (see lower) | |
23 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet (modem reply) | 0x7f |
2 | 2 | uint16_t | Code of data | 0x1000 |
4 | 2 | uint16_t | reserved | |
6 | 2 | uint16_t | CRC-16 of bytes 0…5(see appendix 1) | |
8 | 1 | uint8_t | Address of robot | 0x01…0xfe |
9 | 1 | uint8_t | Type of packet (robot reply) | 0x10 |
10 | 2 | uint16_t | Code of data | 0x1000 |
12 | 2 | uint16_t | reserved | |
14 | 2 | uint16_t | CRC-16 of bytes 8…13(see appendix 1) |
Format of error reply is described in Appendix 2.
Format of robot control data:
Offset | Size (bytes) | Type | Description |
0 | 1 | uint8_t | Mode of control: 0 – no control (wait mode) 1 – motors power control 2 – speed control 3 – writing movement program 4 – pause movement program 5 – continue movement after pause |
1 | 1 | uint8_t | Code of operation: 0 – move forward 1 – move backward 2 – rotate clockwise 3 – rotate counterclockwise 4 – pause for given time (for mode 3) 5 – repeat movement program from start (for mode 3) 6 – move to given point by coordinates (for mode 3) 7 – setup movement speed (for mode 3) |
2 | 1 | uint8_t | Control byte 1: For mode 1: power on motors, % For mode 2: speed of movement, % For mode 3: number of the program step (starting from zero) |
3 | 2 | Int16_t | Data for program (mode 3): Code of operation 0 or 1: distance of movement, cm Code of operation 2 or 3: angle of rotation, degrees Code of operation 4: time of pause, ms Code of operation 6: X coordinate of movement target, cm Code of operation 7: speed of movement, % |
5 | 1 | uint8_t | For mode 3: total number of steps in program. |
6 | 2 | int16_t | Additional data for program (mode 3): Code of operation 6: Y coordinate of movement target, cm |
8 | 2 | int16_t | Code of operation 6: Z coordinate of movement target, cm |
10 | 6 | 6 bytes | Reserved (0) |
Some comments for this complicated command.
There are three main modes of robot control specified in byte 0 of robot control structure:
- power control (mode 1)
- speed control (mode 2)
- move by program (mode 3)
Mode 1 and mode 2 are generally used for test purposes. In mode 1 robot moves forward, backward, rotates left or right with selected power on motors. In mode 2 robot makes the same but adjusting power to keep selected speed. The power or speed is set in byte 2 of structure, type of movement – in byte 1.
Mode 4 and mode 5 are special commands for pausing movement during program execution and continuing movement after pause.
The main mode for moving on complex trajectories is mode 3.
It allows to program to robot the sequence of primitive actions, which combination builds the trajectory. Each item of the sequence should be sent by one command of this type. Each command should contain the number of the current step in the byte 2 of robot control structure, and total number of steps in the byte 5.
In the byte 1 of robot control structure the type of primitive movement is specified. Parameters of the primitive movement are specified in fields "data for program" (bytes 3…4) and "additional data for program" (bytes 6…7).
So, the following primitives are available:
- move forward by given distance;
- move backward by given distance;
- rotate clockwise by given angle;
- rotate counterclockwise by given angle;
- pause by given time;
- restart the movement program from first item (for looping movements);
- move to given point (X, Y) in Marvelmind navigation system coordinates;
- change movement speed.
Robot begins execution of the program after receiving the sequence of primitives. After program execution, robot stops. But if the program contains item with code of operation 5 (repeat from start), the program repeats loop which will be executed forever, until receiving stop command or uploading new program.
Stop robot
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of robot | 0x01…0xfe |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data in packet | 0x403 |
4 | 2 | uint16_t | Access mode | 0x0001 |
6 | 1 | uint8_t | Number of bytes of data transmission | 0x04 |
7 | 4 bytes | 4 bytes | Reserved (0) | 0 |
11 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet (modem reply) | 0x7f |
2 | 2 | uint16_t | Code of data | 0x403 |
4 | 2 | uint16_t | reserved | |
6 | 2 | uint16_t | CRC-16 of bytes 0…5 (see appendix 1) | |
8 | 1 | uint8_t | Address of robot | 0x01…0xfe |
9 | 1 | uint8_t | Type of packet (robot reply) | 0x10 |
10 | 2 | uint16_t | Code of data | 0x403 |
12 | 2 | uint16_t | reserved | |
14 | 2 | uint16_t | CRC-16 of bytes 8…13 (see appendix 1) |
Format of error reply is described in Appendix 2.
This command simply terminates execution of any robot movement or program of movements. The robot stops and waits for new commands.
Reading/writing device control settings (firmware V6.01+)
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Reading device control settings
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of device (beacon/modem) | 0x01…0xfe or 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 2 | uint16_t | Code of data in packet | 0x1201 |
4 | 2 | uint16_t | Access mode | 0x0001 |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 if request was sent to modem 0x7f if request was sent to beacon |
2 | 1 | uint8_t | Number of bytes of data transmission | 0x10 |
3 | 16 | structure | Data structure (see section 9.3). Relevant only if request was sent to modem (0xff) | |
11 | 2 | uint16_t | CRC-16 of bytes 0…10 (see appendix 1) | |
following data will be received of the request was sent to beacon | ||||
13 | 1 | uint8_t | Address of device | 0x01…0xfe |
14 | 1 | uint8_t | Type of packet | 0x03 |
15 | 1 | uint8_t | Number of bytes of data transmission | 0x08/0x10 |
16 | 16 | structure | Data structure (see below). | |
32 | 2 | uint16_t | CRC-16 of bytes 12…22 (see appendix 1) | |
Format of error reply is described in Appendix 2.
Write device control settings
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of device (beacon/modem) | 0x01…0xfe or 0xff |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data in packet | 0x1201 |
4 | 2 | uint16_t | Access mode | 0x0001 |
6 | 1 | uint8_t | Number of bytes of data transmission | 0x10 |
7 | 16 | structure | Data structure (see below) | |
23 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 if request was sent to modem 0x7f if request was sent to beacon |
2 | 2 | uint16_t | Code of data | 0x1201 |
4 | 2 | uint16_t | reserved | |
6 | 2 | uint16_t | CRC-16 of bytes 0…5 (see appendix 1) | |
following data will be received of the request was sent to beacon (with address 0x01…0xfe) | ||||
8 | 1 | uint8_t | Address of device | 0x01…0xfe |
9 | 1 | uint8_t | Type of packet | 0x10 |
10 | 2 | uint16_t | Code of data | 0x1201 |
12 | 2 | uint16_t | reserved | |
14 | 2 | uint16_t | CRC-16 of bytes 8…13 (see appendix 1) | |
Format of error reply is described in Appendix 2.
Format of control settings payload data
Offset | Size (bytes) | Type | Description |
0 | 1 | uint8_t | Flags: Bit 0…5: not explained, should be always zero! Bit 6: 0 – stationary beacon mode, 1 – hedgehog mode Bit 7: reserved (0) |
1 | 1 | uint8_t | UART baudrate setting: 0: 500000 bps (default value) 1: 4800 bps 2: 9600 bps 3: 19200 bps 4: 38400 bps 5: 57600 bps 6: 115200 bps 7…255: reserved |
2 | 1 | uint8_t | Reserved (0) |
3 | 1 | uint8_t | Bit 0…3: radio profile: 0: 38.4 kbps 1: 150 kbps 2: 500 kbps 3…7: reserved Bit 4…6: radio band: 0: 433 MHz 1: 868 MHz 2: 915 MHz 3: 315 MHz 4…7: reserved Bit 7: reserved |
4 | 1 | uint8_t | Type of UART/USB output: 0: Marvelmind protocol 1: NMEA0183 |
5 | 1 | uint8_t | Mask of NMEA frames to send in NMEA0183 mode: Bit 0: 1 – send $GPRMC frame Bit 1: 1 – send $GPGGA frame Bit 2: 1 – send $GPVTG frame Bit 3: 1 – send $GPZDA frame Bit 4…7: reserved (0) |
6 | 1 | uint8_t | Number of bytes of user payload data for sending from this hedgehog to modem (0…32) |
7 | 1 | uint8_t | Mask of IMU data for sending to modem in ‘IMU via modem’ mode: Bit 0: IMU fusion location Bit 1: quaternion Bit 2: speed Bit 3: acceleration Bit 4: raw accelerometer Bit 5: raw gyro Bit 6: raw compass Bit 7: 0 = send IMU fusion, 1 = send raw IMU |
8 | 1 | uint8_t | Bit 0…6: interval of streaming telemetry (0 = no stream) Bit 7: reserved (0) |
9 | 1 | uint8_t | Bit 0: use IMU for speed calculation Bit 1…7 – reserved (0) |
10 | 6 | 6 bytes | Reserved (0) |
Warning! If you change radio profile on beacon connected by radio, the radio connection will be lost. If you need to switch the profile, switch the radio profile for all beacons one after another, and then switch radio profile for modem. All beacons should be available on new radio profile after few seconds.
Reading list of devices in network (firmware V6.01+)
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 2 | uint16_t | Code of data in packet | 0x31xx where xx is number of devices group |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 1 | uint8_t | Number of bytes of data transmitting | 0x72 |
3 | 1 | uint8_t | Total number of devices in network (K) | |
4 | 112 | 112 bytes | 0…16 structures of information about device in network, see description lower | |
116 | 1 | uint8_t | Reserved | 0x00 |
117 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Format of data about device in network (7 bytes)
Offset | Size (bytes) | Description |
0 | 1 | Address of device (0x01…0xfe) |
1 | 1 | Major version of firmware |
2 | 1 | Minor version of firmware |
3 | 1 | Bit 0…5: Type of device: 10: Wheel robot 12: Crawler robot 22: Beacon HW V4.5 23: Beacon HW V4.5 (hedgehog mode) 24: Modem (HW V4.5/4.9) 30: Beacon HW V4.9 31: Beacon HW V4.9 (hedgehog mode) 32: Mini-RX beacon 36: Mini TX beacon (HW V5.07) 37: Industrial-TX beacon 41: Industrial-RX beacon 42: Super-Beacon 43: Super-Beacon (hedgehog mode) 44: Industrial Super-Beacon 45: Industrial Super-Beacon (hedgehog mode) Bit 6: 1 -more than one device with this address exist Bit 7: 1 – sleeping mode |
4 | 1 | Second minor version of firmware |
Reading version of firmware
Supported hardware:
Super-Beacon: supported
Industrial Super-Beacon: supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): supported
Mini-TX: supported
Mini-TX-2: supported
Modem HW4.9: supported
Beacon HW4.9: supported
Beacon HW4.5: supported
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of device | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 2 | uint16_t | Code of data in packet | 0xfe00 |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 1 | uint8_t | Number of bytes of data transmitting | 0x08 |
3 | 1 | uint8_t | Minor version of firmware | |
4 | 1 | uint8_t | Major version of firmware | |
5 | 3 | 3 bytes | Reserved | |
8 | 1 | uint8_t | Device type ID | |
9 | 2 | uint16_t | Reserved | |
11 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Reading user data
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 2 | uint16_t | Code of data in packet | 0x0004 |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x03 |
2 | 1 | uint8_t | Number of bytes of data transmitting | 0x84 |
3 | 1 | uint8_t | Total user data size | |
4 | 3 | 3 bytes | Reserved (0) | |
7 | 128 | uint8_t | User data from hedgehogs | |
135 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
User data from hedgehogs is the sequence of records with following structure:
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of hedgehog | H |
1 | 1 | uint8_t | Number of bytes of user data from hedgehog | M |
2 | M | uint8_t | M bytes of data from hedgehog H |
Writing manual device location
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of beacon | 0x01…0xfe |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data in packet | 0x5003 |
4 | 2 | uint16_t | Access mode | 0x0002 |
6 | 1 | uint8_t | Number of bytes of data transmission | 0x20 |
7 | 32 | structure | Data structure (see below) | |
39 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data | 0x5003 |
4 | 2 | uint16_t | reserved | |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Format of data structure:
Offset | Size (bytes) | Type | Description | Value |
0 | 4 | int32_t | X coordinate, mm | |
4 | 4 | int32_t | Y coordinate, mm | |
8 | 4 | int32_t | Z coordinate, mm | |
12 | 1 | uint8_t | Not explained | 0xff |
13 | 4 | int32_t | Not explained | 0 |
17 | 4 | int32_t | Not explained | 0 |
21 | 4 | int32_t | Not explained | 0 |
25 | 1 | uint8_t | Not explained | 0x02 |
26 | 6 | 6 bytes | Reserved | 0 |
Writing manual distance between beacons
Supported hardware:
Super-Beacon: not supported
Industrial Super-Beacon: not supported
Modem HW5.1: supported
Super-Modem: supported
Mini-RX (Badge, Helmet, etc.): not supported
Mini-TX: not supported
Mini-TX-2: not supported
Modem HW4.9: supported
Beacon HW4.9: not supported
Beacon HW4.5: not supported
Format of request frame (from host to modem)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data in packet | 0x4003 |
4 | 2 | uint16_t | Access mode | 0x0000 |
6 | 1 | uint8_t | Number of bytes of data transmission | 0x10 |
7 | 16 | structure | Data structure (see below) | |
23 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of answer frame (from modem to host)
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of modem | 0xff |
1 | 1 | uint8_t | Type of packet | 0x10 |
2 | 2 | uint16_t | Code of data | 0x4003 |
4 | 2 | uint16_t | reserved | |
6 | 2 | uint16_t | CRC-16 (see appendix 1) |
Format of error reply is described in Appendix 2.
Format of data structure:
Offset | Size (bytes) | Type | Description | Value |
0 | 1 | uint8_t | Address of first beacon | |
1 | 1 | uint8_t | Address of second beacon | |
2 | 4 | uint32_t | Distance between beacons, mm | |
6 | 10 | 10 bytes | Reserved | 0 |