ULS Blitz Types and Description

Interface Documentation ULSDC-PBDS031025, version 1.0.1

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:

FieldDescription
GLOBALFlag used to send packets over several local networks
CMDCommand field (Use CMD=6 to send Blitz messages)
IDPacket sender ID (local id src_lid for local packets and device id for global packets src_did)
dsn_lidDestination local ID address
msg_idMessage 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:

BitFlagDescription
0ULS_STATUS_RX_CARRIER_OKIR signal detected
1ULS_STATUS_RX_SQ_OKSignal quality OK
2ULS_STATUS_RX_POS_OKPosition estimated
3ULS_STATUS_RX_VEL_OKVelocity estimated
4ULS_STATUS_RX_GU_IMU_OKGround Unit IMU OK
5ULS_STATUS_RX_MRX_OKMRX message received (secondary receiver)
6ULS_STATUS_RX_MRXDATA_OKMRX 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

FieldTypeDescription
statusuint8_tStatus bits (see Status Bit Definitions above)
duint8_tDistance in 10 cm increments
aXint16_tAngular information X-axis, proportional [-30000 = -30°, +30000 = +30°]
aYint16_tAngular information Y-axis, proportional [-30000 = -30°, +30000 = +30°]
oFint8_tSensor offset Forward in cm
oRint8_tSensor 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

FieldTypeDescription
statusuint8_tStatus bits (see Status Bit Definitions above)
counteruint8_tMessage counter for tracking
aXint16_tAngular information X-axis [-180° to +180°]
aYint16_tAngular information Y-axis [-180° to +180°]
distanceuint16_tDistance 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

FieldTypeDescription
statusuint8_tStatus bits (see Status Bit Definitions above)
counteruint8_tMessage counter for tracking
posXint16_tPosition X-coordinate in transmitter frame (cm)
posYint16_tPosition Y-coordinate in transmitter frame (cm)
posZint16_tPosition 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

FieldTypeDescription
statusuint8_tStatus bits (see Status Bit Definitions above)
counteruint8_tMessage counter for tracking
yawint16_tYaw angle [-180° to +180°]
distanceuint16_tDistance 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

FieldTypeDescription
statusuint8_tStatus bits (see Status Bit Definitions above)
counteruint8_tMessage counter for tracking
yawint16_tYaw angle [-180° to +180°]
distanceuint16_tDistance measurement
yawContinuousint16_tContinuous 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

FieldTypeDescription
statusuint8_tStatus bits (see Status Bit Definitions above)
counteruint8_tMessage counter for tracking
rollint16_tRoll angle [-180° to +180°]
pitchint16_tPitch angle [-180° to +180°]
yawint16_tYaw 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

FieldTypeDescription
controluint8_tControl bits (see Control Bits below)
counteruint8_tMessage counter for tracking
rollint16_tOverride roll angle [-180° to +180°]
pitchint16_tOverride pitch angle [-180° to +180°]
yawint16_tOverride yaw angle [-180° to +180°]

Table: IMU Override Message Structure Control Bits:

BitDescription
0SET Roll - Enable roll angle override
1SET Pitch - Enable pitch angle override
2SET Yaw - Enable yaw angle override
3-7Reserved

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

FieldTypeDescription
controluint8_tControl bits (see Control Bits below)
counteruint8_tMessage counter for tracking
mxint16_tMagnetic field X-component
myint16_tMagnetic field Y-component
mzint16_tMagnetic field Z-component

Table: Magnetometer Override Message Structure Control Bits:

BitDescription
0SET override - Enable magnetometer override
1-7Reserved

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

  1. Packed Structures: All structures use __attribute__((packed)) to ensure no padding bytes are added by the compiler.

  2. Endianness: The protocol assumes little-endian byte order for multi-byte fields.

  3. Message Counters: Most messages include a counter field for packet ordering and loss detection.

  4. Angular Precision: Angular measurements use 16-bit signed integers with specific scaling factors for different ranges.

  5. Distance Units: Distance measurements may use different units (cm, 10cm increments) depending on the message type.