Difference between revisions of "Messages Format"

From PaparazziUAV
Jump to navigation Jump to search
 
(5 intermediate revisions by the same user not shown)
Line 12: Line 12:


  PPRZ-message: ABCxxxxxxxDE
  PPRZ-message: ABCxxxxxxxDE
byte:    |  value:
     A PPRZ_STX (0x99)
     0        PPRZ_STX (0x99)
     B LENGTH (PPRZ_STX->PPRZ_CHECKSUM_B)
     1        LENGTH (PPRZ_STX->PPRZ_CHECKSUM_B)
     C PPRZ_DATA
     2       SENDER_ID
       0 SENDER_ID
    3       MSG_ID
       1 MSG_ID
    4..(N-2) MSG_PAYLOAD (messages.xml)
      2 MSG_PAYLOAD
     N-1      PPRZ_CHECKSUM_A (sum[B->C])
      . DATA (messages.xml)
     N        PPRZ_CHECKSUM_B (sum[ck_a])
     D PPRZ_CHECKSUM_A (sum[B->C])
     E PPRZ_CHECKSUM_B (sum[ck_a])


===Pprzlink v2.0===
===Pprzlink v2.0===
Line 35: Line 36:
       4 MSG_PAYLOAD
       4 MSG_PAYLOAD
       . DATA (messages.xml)
       . DATA (messages.xml)
    D PPRZ_CHECKSUM_A (sum[B->C])
    E PPRZ_CHECKSUM_B (sum[ck_a])
==Secure Paparazzi (S-PPRZ) for serial and transparent modem communication==   
The overhead is 16 bytes (4 bytes of counter, 16 bytes of tag), plus the necessary key exchange at the beginning of communication.
===S-Pprzlink v1.0===
PPRZ-message: ABCxxxxxxxDE
byte:      |    value:
    0            PPRZ_STX (0x99)
    1            LENGTH (PPRZ_STX->PPRZ_CHECKSUM_B)
    2-5          COUNTER (4 bytes)
    6            encrypted SENDER_ID
    7            encrypted MSG_ID
    8..(N-16)    encrypted MSG_PAYLOAD (messages.xml)
    (N-15)..(N-2) TAG (16 bytes)
    N-1          PPRZ_CHECKSUM_A (sum[B->C])
    N            PPRZ_CHECKSUM_B (sum[ck_a])
{|border="1"  cellspacing="0" style="text-align:center" cellpadding="2%" width="70%"
|+'''S-Pprzlink v1.0'''
!width="7%"|''byte''!!width="10%"|''Value''!!width="10%"|''Type''
|-
|0||PPRZ_STX (0x99)||style="background:orange; color:black"|Header
|-
|1||length N (PPRZ_STX->checksum B)||style="background:orange; color:black"|Header
|-
|2||counter LSB 1 ||style="background:green; color:white"|Authenticated data
|-
|3||counter LSB 2 ||style="background:green; color:white"|Authenticated data
|-
|4||counter LSB 3 ||style="background:green; color:white"|Authenticated data
|-
|5||counter LSB 4 ||style="background:green; color:white"|Authenticated data
|-
|6|| sender ID ||style="background:yellow; color:black"|Encrypted payload
|-
|7|| message ID ||style="background:yellow; color:black"|Encrypted payload
|-
|8..(N-16)|| (optional) message payload (0-234 bytes) ||style="background:yellow; color:black"|Encrypted payload
|-
|(N-15)..(N-2)|| tag (16 bytes) ||style="background:blue; color:white"|Authentication tag
|-
|N-1||checksum A||style="background:orange; color:black"|Header
|-
|N||checksum B||style="background:orange; color:black"|Header
|}
===S-Pprzlink v2.0===
In this case we decrypt only packets with matching DESTINATION (or broadcast), to avoid decrypting unwanted data.
PPRZ-message: ABCxxxxxxxDE
    A PPRZ_STX (0x99)
    B LENGTH (A->E)
    C PPRZ_DATA
      0 SOURCE (~sender_ID)
      1 DESTINATION (can be a broadcast ID)
      2-5 COUNTER (4 bytes)
      // ciphertext start
      6 CLASS/COMPONENT
        bits 0-3: 16 class ID available
        bits 4-7: 16 component ID available
      7 MSG_ID
      8 MSG_PAYLOAD
      . DATA (messages.xml)
      // ciphertext end
      8-19 TAG (12 bytes)
     D PPRZ_CHECKSUM_A (sum[B->C])
     D PPRZ_CHECKSUM_A (sum[B->C])
     E PPRZ_CHECKSUM_B (sum[ck_a])
     E PPRZ_CHECKSUM_B (sum[ck_a])

Latest revision as of 19:25, 17 March 2018

Introduction

Messages Format and how to use them

For the message definitions see http://docs.paparazziuav.org/latest/paparazzi_messages.html

Types

Paparazzi "PPRZ" standard message for direct serial connection

Pprzlink v1.0

PPRZ-message: ABCxxxxxxxDE
    A PPRZ_STX (0x99)
    B LENGTH (PPRZ_STX->PPRZ_CHECKSUM_B)
    C PPRZ_DATA
      0 SENDER_ID
      1 MSG_ID
      2 MSG_PAYLOAD
      . DATA (messages.xml)
    D PPRZ_CHECKSUM_A (sum[B->C])
    E PPRZ_CHECKSUM_B (sum[ck_a])

Pprzlink v2.0

Note that there is currently no explicit way to recognize whether the protocol is v1.0 or 2.0 so it has to be known before the communication.

PPRZ-message: ABCxxxxxxxDE
    A PPRZ_STX (0x99)
    B LENGTH (A->E)
    C PPRZ_DATA
      0 SOURCE (~sender_ID)
      1 DESTINATION (can be a broadcast ID)
      2 CLASS/COMPONENT
        bits 0-3: 16 class ID available
        bits 4-7: 16 component ID available
      3 MSG_ID
      4 MSG_PAYLOAD
      . DATA (messages.xml)
    D PPRZ_CHECKSUM_A (sum[B->C])
    E PPRZ_CHECKSUM_B (sum[ck_a])

XBee API format

XBee-message: ABCDxxxxxxxE
    A XBEE_START (0x7E)
    B LENGTH_MSB (D->D)
    C LENGTH_LSB
    D XBEE_PAYLOAD
      0 XBEE_TX16 (0x01) / XBEE_RX16 (0x81)
      1 FRAME_ID (0)     / SRC_ID_MSB
      2 DEST_ID_MSB      / SRC_ID_LSB
      3 DEST_ID_LSB      / XBEE_RSSI
      4 TX16_OPTIONS (0) / RX16_OPTIONS
      5 PPRZ_DATA
        0 SENDER_ID
        1 MSG_ID
        2 MSG_PAYLOAD
        . DATA (messages.xml)
    E XBEE_CHECKSUM (sum[D->D])

   ID is AC_ID for aircraft, 0x100 for ground station

Telemetry storage format for data logger

TLM-message: ABCDEFGHxxxxxxxI
    A PPRZ_STX (0x99)
    B LENGTH (H->H)
    C SOURCE (0=uart0, 1=uart1, 2=i2c0, ...)
    D TIMESTAMP_LSB (100 microsecond raster)
    E TIMESTAMP
    F TIMESTAMP
    G TIMESTAMP_MSB
    H PPRZ_DATA
      0 SENDER_ID
      1 MSG_ID
      2 MSG_PAYLOAD
      . DATA (messages.xml)
    I CHECKSUM (sum[B->H])