ULS Blitz Types and Description
ULSDC-PBDS031025 · version 1.0.1 · issued November 3, 2025
The numbered PDF is the controlled copy: download it from the portal.
Overview
The protocol used by devices for configuration is proprietary and is described in other documents. However, the protocol implements the possibility of transmitting messages (Blitz messages) that can be used by the user to control the device and obtain information. These messages are universal, and the format describes the data that is transmitted by various devices in our system connected to a single network.
Use CMD=6 to send Blitz messages.
In this document, the CAN protocol is specified. RS485 is used to implement custom protocols that can be defined in the future.
ULS-DECONET CAN Bus Protocol Frame Format
flowchart LR A[Sender Device] --> B[GLOBAL] B --> C[CMD = 6] C --> D[ID] D --> E[dsn_lid] E --> F[msg_id] F --> G[Blitz Payload data <= 8 bytes] G --> H[Receiver Device]
The CAN protocol uses the following frame structure:
| Field | Description |
|---|---|
| GLOBAL | Flag used to send packets over several local networks |
| CMD | Command field (Use CMD=6 to send Blitz messages) |
| ID | Packet sender ID (local id src_lid for local packets and device id for global packets src_did) |
| dsn_lid | Destination local ID address |
| msg_id | Message ID used to identify Blitz packet types |
Table: CAN Protocol Frame Fields
Status Bit Definitions
Most messages include a status byte with the following bit definitions:
| Bit | Flag | Description |
|---|---|---|
| 0 | ULS_STATUS_RX_CARRIER_OK | IR signal detected |
| 1 | ULS_STATUS_RX_SQ_OK | Signal quality OK |
| 2 | ULS_STATUS_RX_POS_OK | Position estimated |
| 3 | ULS_STATUS_RX_VEL_OK | Velocity estimated |
| 4 | ULS_STATUS_RX_GU_IMU_OK | Ground Unit IMU OK |
| 5 | ULS_STATUS_RX_MRX_OK | MRX message received (secondary receiver) |
| 6 | ULS_STATUS_RX_MRXDATA_OK | MRX Yaw and Distance calculated OK |
Table: Status Bit Definitions
Message list by device
Message Types
XCG1 Raw Measurement (0x0010)
Message ID: ULS_BLITZ_MSG_ID_XCG1_RX_RAW_MEASURMENT (0x0010)
Structure: __uls_blitz_xcg1_rx_raw_measurmet
| Field | Type | Description |
|---|---|---|
| status | uint8_t | Status bits (see Status Bit Definitions above) |
| d | uint8_t | Distance in 10 cm increments |
| aX | int16_t | Angular information X-axis, proportional [-30000 = -30°, +30000 = +30°] |
| aY | int16_t | Angular information Y-axis, proportional [-30000 = -30°, +30000 = +30°] |
| oF | int8_t | Sensor offset Forward in cm |
| oR | int8_t | Sensor offset Right in cm |
Table: XCG1 Raw Measurement Message Structure Usage: Legacy raw measurement data. Message generated by receiver each time it decode signal from transmitter. Client can capture this frame to get receivers raw data. Do not send this type of message to Bus.
Senders list (this message are generated by):
- ULSDV-XC-RX-G1 - ULS-XCopter receiver (generation 1).
- ULSDV-XC-RX-G2 - ULS-XCopter-G2 receiver (generation 2).
- ULSDV-XS-RXM - ULS-XSpot master receiver.
- ULSDV-XS-RXS - ULS-XSpot slave receiver.
- ULSDV-HL-RXM - ULS-Heli master receiver.
- ULSDV-HL-RXS - ULS-Heli slave receiver.
- ULSDV-PC-RX - ULS-ProCopter receiver.
Receivers list (this message is consumed by):
- Ground control stations (for monitoring)
- Debug/diagnostic tools
- Data logging systems
Raw Measurement (0x0011)
Message ID: ULS_BLITZ_MSG_ID_RX_RAW_MEASURMENT (0x0011)
Structure: __uls_blitz_msg_rx_raw_measurmet
| Field | Type | Description |
|---|---|---|
| status | uint8_t | Status bits (see Status Bit Definitions above) |
| counter | uint8_t | Message counter for tracking |
| aX | int16_t | Angular information X-axis [-180° to +180°] |
| aY | int16_t | Angular information Y-axis [-180° to +180°] |
| distance | uint16_t | Distance measurement |
Table: Raw Measurement Message Structure Angular Conversion Formula:
degrees = (value_int16 * 180.0f) / 32767.0f
Usage: Measurement data generated by receiver each time when signal from transmitter decoded.
Senders list (this message are generated by):
- ULSDV-XC-RX-G1 - ULS-XCopter receiver (generation 1).
- ULSDV-XC-RX-G2 - ULS-XCopter-G2 receiver (generation 2).
- ULSDV-XS-RXM - ULS-XSpot master receiver.
- ULSDV-XS-RXS - ULS-XSpot slave receiver.
- ULSDV-HL-RXM - ULS-Heli master receiver.
- ULSDV-HL-RXS - ULS-Heli slave receiver.
- ULSDV-PC-RX - ULS-ProCopter receiver.
Receivers list (this message is consumed by):
- Autopilot systems (Ardupilot, PX4)
- Ground control stations
- External navigation computers
- Data logging systems
Position in TX Frame (0x0012)
Message ID: ULS_BLITZ_MSG_ID_RX_POS_IN_TX_FRAME (0x0012)
Structure: __uls_blitz_msg_rx_pos_in_tx_frame
| Field | Type | Description |
|---|---|---|
| status | uint8_t | Status bits (see Status Bit Definitions above) |
| counter | uint8_t | Message counter for tracking |
| posX | int16_t | Position X-coordinate in transmitter frame (cm) |
| posY | int16_t | Position Y-coordinate in transmitter frame (cm) |
| posZ | int16_t | Position Z-coordinate in transmitter frame (cm) |
Table: Position in TX Frame Message Structure Usage: 3D position data relative to the transmitter coordinate system. Generated by receiver after calculating position from raw measurements.
Senders list (this message is generated by):
- ULSDV-XC-RX-G1 - ULS-XCopter receiver (generation 1).
- ULSDV-XC-RX-G2 - ULS-XCopter-G2 receiver (generation 2).
- ULSDV-XS-RXM - ULS-XSpot master receiver.
- ULSDV-XS-RXS - ULS-XSpot slave receiver.
- ULSDV-HL-RXM - ULS-Heli master receiver.
- ULSDV-HL-RXS - ULS-Heli slave receiver.
- ULSDV-PC-RX - ULS-ProCopter receiver.
Receivers list (this message is consumed by):
- Autopilot systems (Ardupilot, PX4)
- Ground control stations
- External navigation computers
MRX Information (0x0013)
Message ID: ULS_BLITZ_MSG_ID_RX_MRX (0x0013)
Structure: __uls_blitz_msg_rx_mrx
| Field | Type | Description |
|---|---|---|
| status | uint8_t | Status bits (see Status Bit Definitions above) |
| counter | uint8_t | Message counter for tracking |
| yaw | int16_t | Yaw angle [-180° to +180°] |
| distance | uint16_t | Distance measurement in cm |
Table: MRX Information Message Structure Usage: Multi-receiver (MRX) information for secondary receiver data. Generated when multiple receivers calculate relative orientation.
Senders list (this message is generated by):
- ULSDV-XS-RXM - ULS-XSpot master receiver (when paired with slaves).
- ULSDV-HL-RXM - ULS-Heli master receiver (when paired with slaves).
Receivers list (this message is consumed by):
- Autopilot systems (for yaw correction)
- External navigation computers
- Ground control stations
DACS Information (0x0014)
Message ID: ULS_BLITZ_MSG_ID_RX_DACS (0x0014)
Structure: __uls_blitz_msg_rx_dacs
| Field | Type | Description |
|---|---|---|
| status | uint8_t | Status bits (see Status Bit Definitions above) |
| counter | uint8_t | Message counter for tracking |
| yaw | int16_t | Yaw angle [-180° to +180°] |
| distance | uint16_t | Distance measurement |
| yawContinuous | int16_t | Continuous yaw angle ±32768° |
Table: DACS Information Message Structure Usage: DACS (Directional Angle Calculation System) data with continuous yaw tracking. Advanced multi-receiver mode with unwrapped yaw angle.
Senders list (this message is generated by):
- ULSDV-XS-RXM - ULS-XSpot master receiver (DACS mode).
- ULSDV-HL-RXM - ULS-Heli master receiver (DACS mode).
Receivers list (this message is consumed by):
- Autopilot systems (for continuous yaw tracking)
- External navigation computers
- Ground control stations
Ground IMU Measurement (0x0020)
Message ID: ULS_BLITZ_MSG_ID_GIMU_MEASUREMENT (0x0020)
Structure: __uls_blitz_msg_gimu_data
| Field | Type | Description |
|---|---|---|
| status | uint8_t | Status bits (see Status Bit Definitions above) |
| counter | uint8_t | Message counter for tracking |
| roll | int16_t | Roll angle [-180° to +180°] |
| pitch | int16_t | Pitch angle [-180° to +180°] |
| yaw | int16_t | Yaw angle [-180° to +180°] |
Table: Ground IMU Measurement Message Structure Angular Conversion Formula:
degrees = (value_int16 * 180.0f) / 32767.0f
Usage: Ground unit IMU (Inertial Measurement Unit) orientation data. Provides transmitter orientation for coordinate system transformation.
Senders list (this message is generated by):
- ULSDV-XC-TX-G1 - ULS-XCopter transmitter (generation 1).
- ULSDV-XC-TX-G2 - ULS-XCopter-G2 transmitter (generation 2).
- ULSDV-XS-TX - ULS-XSpot transmitter.
- ULSDV-HL-TX - ULS-Heli transmitter.
- ULSDV-PC-TX - ULS-ProCopter transmitter.
Receivers list (this message is consumed by):
- Ground control stations (for transmitter monitoring)
IMU Override (0x0030)
Message ID: ULS_BLITZ_MSG_ID_XX_TXC_IMU_OVERRIDE (0x0030)
Structure: __uls_blitz_msg_xx_txc_imu_override
| Field | Type | Description |
|---|---|---|
| control | uint8_t | Control bits (see Control Bits below) |
| counter | uint8_t | Message counter for tracking |
| roll | int16_t | Override roll angle [-180° to +180°] |
| pitch | int16_t | Override pitch angle [-180° to +180°] |
| yaw | int16_t | Override yaw angle [-180° to +180°] |
Table: IMU Override Message Structure Control Bits:
| Bit | Description |
|---|---|
| 0 | SET Roll - Enable roll angle override |
| 1 | SET Pitch - Enable pitch angle override |
| 2 | SET Yaw - Enable yaw angle override |
| 3-7 | Reserved |
Table: IMU Override Control Bits Angular Conversion Formula:
degrees = (value_int16 * 180.0f) / 32767.0f
Usage: Override IMU data on ground unit for external orientation control. Allows external IMU/compass to replace internal sensors.
Senders list (this message is sent by):
- External control PC/computer
- Autopilot systems (for transmitter orientation override)
- Ground control stations
Receivers list (this message is consumed by):
- ULSDV-XC-TX-G2 - ULS-XCopter-G2 transmitter (generation 2).
- ULSDV-XS-TX - ULS-XSpot transmitter.
- ULSDV-HL-TX - ULS-Heli transmitter.
- ULSDV-PC-TX - ULS-ProCopter transmitter.
Magnetometer Override (0x0031)
Message ID: ULS_BLITZ_MSG_ID_XX_TXC_MAG_OVERRIDE (0x0031)
Structure: __uls_blitz_msg_xx_txc_mag_override
| Field | Type | Description |
|---|---|---|
| control | uint8_t | Control bits (see Control Bits below) |
| counter | uint8_t | Message counter for tracking |
| mx | int16_t | Magnetic field X-component |
| my | int16_t | Magnetic field Y-component |
| mz | int16_t | Magnetic field Z-component |
Table: Magnetometer Override Message Structure Control Bits:
| Bit | Description |
|---|---|
| 0 | SET override - Enable magnetometer override |
| 1-7 | Reserved |
Table: Magnetometer Override Control Bits Magnetic Field Conversion Formula:
mag_value = (value_int16 * 1.0f) / 32767.0f
Usage: Override magnetometer data on ground unit for external compass control. Allows external magnetometer to replace internal compass.
Senders list (this message is sent by):
- External control PC/computer
- Autopilot systems (for compass override)
- Ground control stations
- External magnetometer systems
Receivers list (this message is consumed by):
- ULSDV-XC-TX-G2 - ULS-XCopter-G2 transmitter (generation 2).
- ULSDV-XS-TX - ULS-XSpot transmitter.
- ULSDV-HL-TX - ULS-Heli transmitter.
- ULSDV-PC-TX - ULS-ProCopter transmitter.
Implementation Notes
Packed Structures: All structures use
__attribute__((packed))to ensure no padding bytes are added by the compiler.Endianness: The protocol assumes little-endian byte order for multi-byte fields.
Message Counters: Most messages include a counter field for packet ordering and loss detection.
Angular Precision: Angular measurements use 16-bit signed integers with specific scaling factors for different ranges.
Distance Units: Distance measurements may use different units (cm, 10cm increments) depending on the message type.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve this page !
Sorry to hear that. Please tell us how we can improve it !