Paparazzi UAS  v5.15_devel-109-gee85905
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
protocol.h File Reference
#include "std.h"
+ Include dependency graph for protocol.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  px4io_mixdata
 As-needed mixer data upload. More...
 
struct  IOPacket
 

Macros

#define __STDC_FORMAT_MACROS
 
#define REG_TO_SIGNED(_reg)   ((int16_t)(_reg))
 
#define SIGNED_TO_REG(_signed)   ((uint16_t)(_signed))
 
#define REG_TO_FLOAT(_reg)   ((float)REG_TO_SIGNED(_reg) / 10000.0f)
 
#define FLOAT_TO_REG(_float)   SIGNED_TO_REG((int16_t)((_float) * 10000.0f))
 
#define PX4IO_PROTOCOL_VERSION   4
 
#define PX4IO_PROTOCOL_MAX_CONTROL_COUNT   8
 The protocol does not support more than set here, individual units might support less - see PX4IO_P_CONFIG_CONTROL_COUNT. More...
 
#define PX4IO_PAGE_CONFIG   0
 
#define PX4IO_P_CONFIG_PROTOCOL_VERSION   0 /* PX4IO_PROTOCOL_VERSION */
 
#define PX4IO_P_CONFIG_HARDWARE_VERSION   1 /* magic numbers TBD */
 
#define PX4IO_P_CONFIG_BOOTLOADER_VERSION   2 /* get this how? */
 
#define PX4IO_P_CONFIG_MAX_TRANSFER   3 /* maximum I2C transfer size */
 
#define PX4IO_P_CONFIG_CONTROL_COUNT   4 /* hardcoded max control count supported */
 
#define PX4IO_P_CONFIG_ACTUATOR_COUNT   5 /* hardcoded max actuator output count */
 
#define PX4IO_P_CONFIG_RC_INPUT_COUNT   6 /* hardcoded max R/C input count supported */
 
#define PX4IO_P_CONFIG_ADC_INPUT_COUNT   7 /* hardcoded max ADC inputs */
 
#define PX4IO_P_CONFIG_RELAY_COUNT   8 /* hardcoded # of relay outputs */
 
#define PX4IO_P_CONFIG_CONTROL_GROUP_COUNT   8
 hardcoded # of control groups More...
 
#define PX4IO_PAGE_STATUS   1
 
#define PX4IO_P_STATUS_FREEMEM   0
 
#define PX4IO_P_STATUS_CPULOAD   1
 
#define PX4IO_P_STATUS_FLAGS   2 /* monitoring flags */
 
#define PX4IO_P_STATUS_FLAGS_OUTPUTS_ARMED   (1 << 0) /* arm-ok and locally armed */
 
#define PX4IO_P_STATUS_FLAGS_OVERRIDE   (1 << 1) /* in manual override */
 
#define PX4IO_P_STATUS_FLAGS_RC_OK   (1 << 2) /* RC input is valid */
 
#define PX4IO_P_STATUS_FLAGS_RC_PPM   (1 << 3) /* PPM input is valid */
 
#define PX4IO_P_STATUS_FLAGS_RC_DSM   (1 << 4) /* DSM input is valid */
 
#define PX4IO_P_STATUS_FLAGS_RC_SBUS   (1 << 5) /* SBUS input is valid */
 
#define PX4IO_P_STATUS_FLAGS_FMU_OK   (1 << 6) /* controls from FMU are valid */
 
#define PX4IO_P_STATUS_FLAGS_RAW_PWM   (1 << 7) /* raw PWM from FMU is bypassing the mixer */
 
#define PX4IO_P_STATUS_FLAGS_MIXER_OK   (1 << 8) /* mixer is OK */
 
#define PX4IO_P_STATUS_FLAGS_ARM_SYNC   (1 << 9) /* the arming state between IO and FMU is in sync */
 
#define PX4IO_P_STATUS_FLAGS_INIT_OK   (1 << 10) /* initialisation of the IO completed without error */
 
#define PX4IO_P_STATUS_FLAGS_FAILSAFE   (1 << 11) /* failsafe is active */
 
#define PX4IO_P_STATUS_FLAGS_SAFETY_OFF   (1 << 12) /* safety is off */
 
#define PX4IO_P_STATUS_FLAGS_FMU_INITIALIZED   (1 << 13) /* FMU was initialized and OK once */
 
#define PX4IO_P_STATUS_FLAGS_RC_ST24   (1 << 14) /* ST24 input is valid */
 
#define PX4IO_P_STATUS_FLAGS_RC_SUMD   (1 << 15) /* SUMD input is valid */
 
#define PX4IO_P_STATUS_ALARMS   3 /* alarm flags - alarms latch, write 1 to a bit to clear it */
 
#define PX4IO_P_STATUS_ALARMS_VBATT_LOW   (1 << 0) /* [1] VBatt is very close to regulator dropout */
 
#define PX4IO_P_STATUS_ALARMS_TEMPERATURE   (1 << 1) /* board temperature is high */
 
#define PX4IO_P_STATUS_ALARMS_SERVO_CURRENT   (1 << 2) /* [1] servo current limit was exceeded */
 
#define PX4IO_P_STATUS_ALARMS_ACC_CURRENT   (1 << 3) /* [1] accessory current limit was exceeded */
 
#define PX4IO_P_STATUS_ALARMS_FMU_LOST   (1 << 4) /* timed out waiting for controls from FMU */
 
#define PX4IO_P_STATUS_ALARMS_RC_LOST   (1 << 5) /* timed out waiting for RC input */
 
#define PX4IO_P_STATUS_ALARMS_PWM_ERROR   (1 << 6) /* PWM configuration or output was bad */
 
#define PX4IO_P_STATUS_ALARMS_VSERVO_FAULT   (1 << 7) /* [2] VServo was out of the valid range (2.5 - 5.5 V) */
 
#define PX4IO_P_STATUS_VBATT   4 /* [1] battery voltage in mV */
 
#define PX4IO_P_STATUS_IBATT   5 /* [1] battery current (raw ADC) */
 
#define PX4IO_P_STATUS_VSERVO   6 /* [2] servo rail voltage in mV */
 
#define PX4IO_P_STATUS_VRSSI   7 /* [2] RSSI voltage */
 
#define PX4IO_P_STATUS_PRSSI   8 /* [2] RSSI PWM value */
 
#define PX4IO_P_STATUS_MIXER   9 /* mixer actuator limit flags */
 
#define PX4IO_P_STATUS_MIXER_LOWER_LIMIT   (1 << 0)
 at least one actuator output has reached lower limit More...
 
#define PX4IO_P_STATUS_MIXER_UPPER_LIMIT   (1 << 1)
 at least one actuator output has reached upper limit More...
 
#define PX4IO_P_STATUS_MIXER_YAW_LIMIT   (1 << 2)
 yaw control is limited because it causes output clipping More...
 
#define PX4IO_PAGE_ACTUATORS   2 /* 0..CONFIG_ACTUATOR_COUNT-1 */
 
#define PX4IO_PAGE_SERVOS   3 /* 0..CONFIG_ACTUATOR_COUNT-1 */
 
#define PX4IO_PAGE_RAW_RC_INPUT   4
 
#define PX4IO_P_RAW_RC_COUNT   0 /* number of valid channels */
 
#define PX4IO_P_RAW_RC_FLAGS   1 /* RC detail status flags */
 
#define PX4IO_P_RAW_RC_FLAGS_FRAME_DROP   (1 << 0) /* single frame drop */
 
#define PX4IO_P_RAW_RC_FLAGS_FAILSAFE   (1 << 1) /* receiver is in failsafe mode */
 
#define PX4IO_P_RAW_RC_FLAGS_RC_DSM11   (1 << 2) /* DSM decoding is 11 bit mode */
 
#define PX4IO_P_RAW_RC_FLAGS_MAPPING_OK   (1 << 3) /* Channel mapping is ok */
 
#define PX4IO_P_RAW_RC_FLAGS_RC_OK   (1 << 4) /* RC reception ok */
 
#define PX4IO_P_RAW_RC_NRSSI   2 /* [2] Normalized RSSI value, 0: no reception, 255: perfect reception */
 
#define PX4IO_P_RAW_RC_DATA   3 /* [1] + [2] Details about the RC source (PPM frame length, Spektrum protocol type) */
 
#define PX4IO_P_RAW_FRAME_COUNT   4 /* Number of total received frames (wrapping counter) */
 
#define PX4IO_P_RAW_LOST_FRAME_COUNT   5 /* Number of total dropped frames (wrapping counter) */
 
#define PX4IO_P_RAW_RC_BASE   6 /* CONFIG_RC_INPUT_COUNT channels from here */
 
#define PX4IO_PAGE_RC_INPUT   5
 
#define PX4IO_P_RC_VALID   0 /* bitmask of valid controls */
 
#define PX4IO_P_RC_BASE   1 /* CONFIG_RC_INPUT_COUNT controls from here */
 
#define PX4IO_PAGE_RAW_ADC_INPUT   6 /* 0..CONFIG_ADC_INPUT_COUNT-1 */
 
#define PX4IO_PAGE_PWM_INFO   7
 
#define PX4IO_RATE_MAP_BASE   0 /* 0..CONFIG_ACTUATOR_COUNT bitmaps of PWM rate groups */
 
#define PX4IO_PAGE_SETUP   50
 
#define PX4IO_P_SETUP_FEATURES   0
 
#define PX4IO_P_SETUP_FEATURES_SBUS1_OUT   (1 << 0)
 enable S.Bus v1 output More...
 
#define PX4IO_P_SETUP_FEATURES_SBUS2_OUT   (1 << 1)
 enable S.Bus v2 output More...
 
#define PX4IO_P_SETUP_FEATURES_PWM_RSSI   (1 << 2)
 enable PWM RSSI parsing More...
 
#define PX4IO_P_SETUP_FEATURES_ADC_RSSI   (1 << 3)
 enable ADC RSSI parsing More...
 
#define PX4IO_P_SETUP_ARMING   1 /* arming controls */
 
#define PX4IO_P_SETUP_ARMING_IO_ARM_OK   (1 << 0) /* OK to arm the IO side */
 
#define PX4IO_P_SETUP_ARMING_FMU_ARMED   (1 << 1) /* FMU is already armed */
 
#define PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE_OK   (1 << 2) /* OK to switch to manual override via override RC channel */
 
#define PX4IO_P_SETUP_ARMING_FAILSAFE_CUSTOM   (1 << 3) /* use custom failsafe values, not 0 values of mixer */
 
#define PX4IO_P_SETUP_ARMING_INAIR_RESTART_OK   (1 << 4) /* OK to try in-air restart */
 
#define PX4IO_P_SETUP_ARMING_ALWAYS_PWM_ENABLE   (1 << 5) /* Output of PWM right after startup enabled to help ESCs initialize and prevent them from beeping */
 
#define PX4IO_P_SETUP_ARMING_RC_HANDLING_DISABLED   (1 << 6) /* Disable the IO-internal evaluation of the RC */
 
#define PX4IO_P_SETUP_ARMING_LOCKDOWN   (1 << 7) /* If set, the system operates normally, but won't actuate any servos */
 
#define PX4IO_P_SETUP_ARMING_FORCE_FAILSAFE   (1 << 8) /* If set, the system will always output the failsafe values */
 
#define PX4IO_P_SETUP_ARMING_TERMINATION_FAILSAFE   (1 << 9) /* If set, the system will never return from a failsafe, but remain in failsafe once triggered. */
 
#define PX4IO_P_SETUP_ARMING_OVERRIDE_IMMEDIATE   (1 << 10) /* If set then on FMU failure override is immediate. Othewise it waits for the mode switch to go past the override thrshold */
 
#define PX4IO_P_SETUP_PWM_RATES   2 /* bitmask, 0 = low rate, 1 = high rate */
 
#define PX4IO_P_SETUP_PWM_DEFAULTRATE   3 /* 'low' PWM frame output rate in Hz */
 
#define PX4IO_P_SETUP_PWM_ALTRATE   4 /* 'high' PWM frame output rate in Hz */
 
#define PX4IO_P_SETUP_RELAYS_PAD   5
 
#define PX4IO_P_SETUP_VBATT_SCALE   6 /* hardware rev [1] battery voltage correction factor (float) */
 
#define PX4IO_P_SETUP_VSERVO_SCALE   6 /* hardware rev [2] servo voltage correction factor (float) */
 
#define PX4IO_P_SETUP_DSM   7 /* DSM bind state */
 
#define PX4IO_P_SETUP_SET_DEBUG   9 /* debug level for IO board */
 
#define PX4IO_P_SETUP_REBOOT_BL   10 /* reboot IO into bootloader */
 
#define PX4IO_REBOOT_BL_MAGIC   14662 /* required argument for reboot (random) */
 
#define PX4IO_P_SETUP_CRC   11 /* get CRC of IO firmware */
 
#define PX4IO_P_SETUP_FORCE_SAFETY_OFF
 
#define PX4IO_P_SETUP_RC_THR_FAILSAFE_US   13
 the throttle failsafe pulse length in microseconds More...
 
#define PX4IO_P_SETUP_FORCE_SAFETY_ON   14 /* force safety switch into 'disarmed' (PWM disabled state) */
 
#define PX4IO_FORCE_SAFETY_MAGIC   22027 /* required argument for force safety (random) */
 
#define PX4IO_P_SETUP_PWM_REVERSE   15
 Bitmask to reverse PWM channels 1-8. More...
 
#define PX4IO_P_SETUP_TRIM_ROLL   16
 Roll trim, in actuator units. More...
 
#define PX4IO_P_SETUP_TRIM_PITCH   17
 Pitch trim, in actuator units. More...
 
#define PX4IO_P_SETUP_TRIM_YAW   18
 Yaw trim, in actuator units. More...
 
#define PX4IO_PAGE_CONTROLS   51
 actuator control groups, one after the other, 8 wide More...
 
#define PX4IO_P_CONTROLS_GROUP_0   (PX4IO_PROTOCOL_MAX_CONTROL_COUNT * 0)
 0..PX4IO_PROTOCOL_MAX_CONTROL_COUNT - 1 More...
 
#define PX4IO_P_CONTROLS_GROUP_1   (PX4IO_PROTOCOL_MAX_CONTROL_COUNT * 1)
 0..PX4IO_PROTOCOL_MAX_CONTROL_COUNT - 1 More...
 
#define PX4IO_P_CONTROLS_GROUP_2   (PX4IO_PROTOCOL_MAX_CONTROL_COUNT * 2)
 0..PX4IO_PROTOCOL_MAX_CONTROL_COUNT - 1 More...
 
#define PX4IO_P_CONTROLS_GROUP_3   (PX4IO_PROTOCOL_MAX_CONTROL_COUNT * 3)
 0..PX4IO_PROTOCOL_MAX_CONTROL_COUNT - 1 More...
 
#define PX4IO_P_CONTROLS_GROUP_VALID   64
 
#define PX4IO_P_CONTROLS_GROUP_VALID_GROUP0   (1 << 0)
 group 0 is valid / received More...
 
#define PX4IO_P_CONTROLS_GROUP_VALID_GROUP1   (1 << 1)
 group 1 is valid / received More...
 
#define PX4IO_P_CONTROLS_GROUP_VALID_GROUP2   (1 << 2)
 group 2 is valid / received More...
 
#define PX4IO_P_CONTROLS_GROUP_VALID_GROUP3   (1 << 3)
 group 3 is valid / received More...
 
#define PX4IO_PAGE_MIXERLOAD   52
 
#define PX4IO_PAGE_RC_CONFIG   53
 R/C input configuration. More...
 
#define PX4IO_P_RC_CONFIG_MIN   0
 lowest input value More...
 
#define PX4IO_P_RC_CONFIG_CENTER   1
 center input value More...
 
#define PX4IO_P_RC_CONFIG_MAX   2
 highest input value More...
 
#define PX4IO_P_RC_CONFIG_DEADZONE   3
 band around center that is ignored More...
 
#define PX4IO_P_RC_CONFIG_ASSIGNMENT   4
 mapped input value More...
 
#define PX4IO_P_RC_CONFIG_ASSIGNMENT_MODESWITCH   100
 magic value for mode switch More...
 
#define PX4IO_P_RC_CONFIG_OPTIONS   5
 channel options bitmask More...
 
#define PX4IO_P_RC_CONFIG_OPTIONS_ENABLED   (1 << 0)
 
#define PX4IO_P_RC_CONFIG_OPTIONS_REVERSE   (1 << 1)
 
#define PX4IO_P_RC_CONFIG_STRIDE   6
 spacing between channel config data More...
 
#define PX4IO_PAGE_DIRECT_PWM   54
 0..CONFIG_ACTUATOR_COUNT-1 More...
 
#define PX4IO_PAGE_FAILSAFE_PWM   55
 0..CONFIG_ACTUATOR_COUNT-1 More...
 
#define PX4IO_PAGE_SENSORS   56
 Sensors connected to PX4IO. More...
 
#define PX4IO_P_SENSORS_ALTITUDE   0
 Altitude of an external sensor (HoTT or S.BUS2) More...
 
#define PX4IO_PAGE_TEST   127
 
#define PX4IO_P_TEST_LED   0
 set the amber LED on/off More...
 
#define PX4IO_PAGE_CONTROL_MIN_PWM   106
 0..CONFIG_ACTUATOR_COUNT-1 More...
 
#define PX4IO_PAGE_CONTROL_MAX_PWM   107
 0..CONFIG_ACTUATOR_COUNT-1 More...
 
#define PX4IO_PAGE_DISARMED_PWM   108 /* 0..CONFIG_ACTUATOR_COUNT-1 */
 
#define F2I_MIXER_MAGIC   0x6d74
 
#define F2I_MIXER_ACTION_RESET   0
 
#define F2I_MIXER_ACTION_APPEND   1
 
#define PKT_MAX_REGS   32
 Serial protocol encapsulation. More...
 
#define PKT_CODE_READ   0x00 /* FMU->IO read transaction */
 
#define PKT_CODE_WRITE   0x40 /* FMU->IO write transaction */
 
#define PKT_CODE_SUCCESS   0x00 /* IO->FMU success reply */
 
#define PKT_CODE_CORRUPT   0x40 /* IO->FMU bad packet reply */
 
#define PKT_CODE_ERROR   0x80 /* IO->FMU register op error reply */
 
#define PKT_CODE_MASK   0xc0
 
#define PKT_COUNT_MASK   0x3f
 
#define PKT_COUNT(_p)   ((_p).count_code & PKT_COUNT_MASK)
 
#define PKT_CODE(_p)   ((_p).count_code & PKT_CODE_MASK)
 
#define PKT_SIZE(_p)   ((size_t)((uint8_t *)&((_p).regs[PKT_COUNT(_p)]) - ((uint8_t *)&(_p))))
 

Enumerations

enum  {
  dsm_bind_power_down = 0, dsm_bind_power_up, dsm_bind_set_rx_out, dsm_bind_send_pulses,
  dsm_bind_reinit_uart
}
 

Functions

static uint8_t crc_packet (struct IOPacket *pkt)
 

Variables

static const uint8_t crc8_tab [256]
 

Data Structure Documentation

struct px4io_mixdata

As-needed mixer data upload.

This message adds text to the mixer text buffer; the text buffer is drained as the definitions are consumed.

Definition at line 301 of file protocol.h.

Data Fields
uint8_t action
uint16_t f2i_mixer_magic
char text[0]
struct IOPacket

Definition at line 320 of file protocol.h.

Data Fields
uint8_t count_code
uint8_t crc
uint8_t offset
uint8_t page
uint16_t regs[PKT_MAX_REGS]

Macro Definition Documentation

#define __STDC_FORMAT_MACROS

Definition at line 36 of file protocol.h.

#define F2I_MIXER_ACTION_APPEND   1

Definition at line 307 of file protocol.h.

#define F2I_MIXER_ACTION_RESET   0

Definition at line 306 of file protocol.h.

#define F2I_MIXER_MAGIC   0x6d74

Definition at line 303 of file protocol.h.

#define FLOAT_TO_REG (   _float)    SIGNED_TO_REG((int16_t)((_float) * 10000.0f))

Definition at line 78 of file protocol.h.

#define PKT_CODE (   _p)    ((_p).count_code & PKT_CODE_MASK)

Definition at line 339 of file protocol.h.

#define PKT_CODE_CORRUPT   0x40 /* IO->FMU bad packet reply */

Definition at line 332 of file protocol.h.

#define PKT_CODE_ERROR   0x80 /* IO->FMU register op error reply */

Definition at line 333 of file protocol.h.

#define PKT_CODE_MASK   0xc0

Definition at line 335 of file protocol.h.

#define PKT_CODE_READ   0x00 /* FMU->IO read transaction */

Definition at line 329 of file protocol.h.

#define PKT_CODE_SUCCESS   0x00 /* IO->FMU success reply */

Definition at line 331 of file protocol.h.

Referenced by px4flash_event().

#define PKT_CODE_WRITE   0x40 /* FMU->IO write transaction */

Definition at line 330 of file protocol.h.

#define PKT_COUNT (   _p)    ((_p).count_code & PKT_COUNT_MASK)

Definition at line 338 of file protocol.h.

Referenced by crc_packet().

#define PKT_COUNT_MASK   0x3f

Definition at line 336 of file protocol.h.

#define PKT_MAX_REGS   32

Serial protocol encapsulation.

Definition at line 317 of file protocol.h.

#define PKT_SIZE (   _p)    ((size_t)((uint8_t *)&((_p).regs[PKT_COUNT(_p)]) - ((uint8_t *)&(_p))))

Definition at line 340 of file protocol.h.

#define PX4IO_FORCE_SAFETY_MAGIC   22027 /* required argument for force safety (random) */

Definition at line 235 of file protocol.h.

#define PX4IO_P_CONFIG_ACTUATOR_COUNT   5 /* hardcoded max actuator output count */

Definition at line 92 of file protocol.h.

#define PX4IO_P_CONFIG_ADC_INPUT_COUNT   7 /* hardcoded max ADC inputs */

Definition at line 94 of file protocol.h.

#define PX4IO_P_CONFIG_BOOTLOADER_VERSION   2 /* get this how? */

Definition at line 89 of file protocol.h.

#define PX4IO_P_CONFIG_CONTROL_COUNT   4 /* hardcoded max control count supported */

Definition at line 91 of file protocol.h.

#define PX4IO_P_CONFIG_CONTROL_GROUP_COUNT   8

hardcoded # of control groups

Definition at line 96 of file protocol.h.

#define PX4IO_P_CONFIG_HARDWARE_VERSION   1 /* magic numbers TBD */

Definition at line 88 of file protocol.h.

#define PX4IO_P_CONFIG_MAX_TRANSFER   3 /* maximum I2C transfer size */

Definition at line 90 of file protocol.h.

#define PX4IO_P_CONFIG_PROTOCOL_VERSION   0 /* PX4IO_PROTOCOL_VERSION */

Definition at line 87 of file protocol.h.

#define PX4IO_P_CONFIG_RC_INPUT_COUNT   6 /* hardcoded max R/C input count supported */

Definition at line 93 of file protocol.h.

#define PX4IO_P_CONFIG_RELAY_COUNT   8 /* hardcoded # of relay outputs */

Definition at line 95 of file protocol.h.

#define PX4IO_P_CONTROLS_GROUP_0   (PX4IO_PROTOCOL_MAX_CONTROL_COUNT * 0)

0..PX4IO_PROTOCOL_MAX_CONTROL_COUNT - 1

Definition at line 244 of file protocol.h.

#define PX4IO_P_CONTROLS_GROUP_1   (PX4IO_PROTOCOL_MAX_CONTROL_COUNT * 1)

0..PX4IO_PROTOCOL_MAX_CONTROL_COUNT - 1

Definition at line 245 of file protocol.h.

#define PX4IO_P_CONTROLS_GROUP_2   (PX4IO_PROTOCOL_MAX_CONTROL_COUNT * 2)

0..PX4IO_PROTOCOL_MAX_CONTROL_COUNT - 1

Definition at line 246 of file protocol.h.

#define PX4IO_P_CONTROLS_GROUP_3   (PX4IO_PROTOCOL_MAX_CONTROL_COUNT * 3)

0..PX4IO_PROTOCOL_MAX_CONTROL_COUNT - 1

Definition at line 247 of file protocol.h.

#define PX4IO_P_CONTROLS_GROUP_VALID   64

Definition at line 249 of file protocol.h.

#define PX4IO_P_CONTROLS_GROUP_VALID_GROUP0   (1 << 0)

group 0 is valid / received

Definition at line 250 of file protocol.h.

#define PX4IO_P_CONTROLS_GROUP_VALID_GROUP1   (1 << 1)

group 1 is valid / received

Definition at line 251 of file protocol.h.

#define PX4IO_P_CONTROLS_GROUP_VALID_GROUP2   (1 << 2)

group 2 is valid / received

Definition at line 252 of file protocol.h.

#define PX4IO_P_CONTROLS_GROUP_VALID_GROUP3   (1 << 3)

group 3 is valid / received

Definition at line 253 of file protocol.h.

#define PX4IO_P_RAW_FRAME_COUNT   4 /* Number of total received frames (wrapping counter) */

Definition at line 160 of file protocol.h.

#define PX4IO_P_RAW_LOST_FRAME_COUNT   5 /* Number of total dropped frames (wrapping counter) */

Definition at line 161 of file protocol.h.

#define PX4IO_P_RAW_RC_BASE   6 /* CONFIG_RC_INPUT_COUNT channels from here */

Definition at line 162 of file protocol.h.

#define PX4IO_P_RAW_RC_COUNT   0 /* number of valid channels */

Definition at line 150 of file protocol.h.

#define PX4IO_P_RAW_RC_DATA   3 /* [1] + [2] Details about the RC source (PPM frame length, Spektrum protocol type) */

Definition at line 159 of file protocol.h.

#define PX4IO_P_RAW_RC_FLAGS   1 /* RC detail status flags */

Definition at line 151 of file protocol.h.

#define PX4IO_P_RAW_RC_FLAGS_FAILSAFE   (1 << 1) /* receiver is in failsafe mode */

Definition at line 153 of file protocol.h.

#define PX4IO_P_RAW_RC_FLAGS_FRAME_DROP   (1 << 0) /* single frame drop */

Definition at line 152 of file protocol.h.

#define PX4IO_P_RAW_RC_FLAGS_MAPPING_OK   (1 << 3) /* Channel mapping is ok */

Definition at line 155 of file protocol.h.

#define PX4IO_P_RAW_RC_FLAGS_RC_DSM11   (1 << 2) /* DSM decoding is 11 bit mode */

Definition at line 154 of file protocol.h.

#define PX4IO_P_RAW_RC_FLAGS_RC_OK   (1 << 4) /* RC reception ok */

Definition at line 156 of file protocol.h.

#define PX4IO_P_RAW_RC_NRSSI   2 /* [2] Normalized RSSI value, 0: no reception, 255: perfect reception */

Definition at line 158 of file protocol.h.

#define PX4IO_P_RC_BASE   1 /* CONFIG_RC_INPUT_COUNT controls from here */

Definition at line 167 of file protocol.h.

#define PX4IO_P_RC_CONFIG_ASSIGNMENT   4

mapped input value

Definition at line 264 of file protocol.h.

#define PX4IO_P_RC_CONFIG_ASSIGNMENT_MODESWITCH   100

magic value for mode switch

Definition at line 265 of file protocol.h.

#define PX4IO_P_RC_CONFIG_CENTER   1

center input value

Definition at line 261 of file protocol.h.

#define PX4IO_P_RC_CONFIG_DEADZONE   3

band around center that is ignored

Definition at line 263 of file protocol.h.

#define PX4IO_P_RC_CONFIG_MAX   2

highest input value

Definition at line 262 of file protocol.h.

#define PX4IO_P_RC_CONFIG_MIN   0

lowest input value

Definition at line 260 of file protocol.h.

#define PX4IO_P_RC_CONFIG_OPTIONS   5

channel options bitmask

Definition at line 266 of file protocol.h.

#define PX4IO_P_RC_CONFIG_OPTIONS_ENABLED   (1 << 0)

Definition at line 267 of file protocol.h.

#define PX4IO_P_RC_CONFIG_OPTIONS_REVERSE   (1 << 1)

Definition at line 268 of file protocol.h.

#define PX4IO_P_RC_CONFIG_STRIDE   6

spacing between channel config data

Definition at line 269 of file protocol.h.

#define PX4IO_P_RC_VALID   0 /* bitmask of valid controls */

Definition at line 166 of file protocol.h.

#define PX4IO_P_SENSORS_ALTITUDE   0

Altitude of an external sensor (HoTT or S.BUS2)

Definition at line 279 of file protocol.h.

#define PX4IO_P_SETUP_ARMING   1 /* arming controls */

Definition at line 184 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_ALWAYS_PWM_ENABLE   (1 << 5) /* Output of PWM right after startup enabled to help ESCs initialize and prevent them from beeping */

Definition at line 190 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_FAILSAFE_CUSTOM   (1 << 3) /* use custom failsafe values, not 0 values of mixer */

Definition at line 188 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_FMU_ARMED   (1 << 1) /* FMU is already armed */

Definition at line 186 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_FORCE_FAILSAFE   (1 << 8) /* If set, the system will always output the failsafe values */

Definition at line 193 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_INAIR_RESTART_OK   (1 << 4) /* OK to try in-air restart */

Definition at line 189 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_IO_ARM_OK   (1 << 0) /* OK to arm the IO side */

Definition at line 185 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_LOCKDOWN   (1 << 7) /* If set, the system operates normally, but won't actuate any servos */

Definition at line 192 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE_OK   (1 << 2) /* OK to switch to manual override via override RC channel */

Definition at line 187 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_OVERRIDE_IMMEDIATE   (1 << 10) /* If set then on FMU failure override is immediate. Othewise it waits for the mode switch to go past the override thrshold */

Definition at line 195 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_RC_HANDLING_DISABLED   (1 << 6) /* Disable the IO-internal evaluation of the RC */

Definition at line 191 of file protocol.h.

#define PX4IO_P_SETUP_ARMING_TERMINATION_FAILSAFE   (1 << 9) /* If set, the system will never return from a failsafe, but remain in failsafe once triggered. */

Definition at line 194 of file protocol.h.

#define PX4IO_P_SETUP_CRC   11 /* get CRC of IO firmware */

Definition at line 227 of file protocol.h.

#define PX4IO_P_SETUP_DSM   7 /* DSM bind state */

Definition at line 213 of file protocol.h.

#define PX4IO_P_SETUP_FEATURES   0

Definition at line 178 of file protocol.h.

#define PX4IO_P_SETUP_FEATURES_ADC_RSSI   (1 << 3)

enable ADC RSSI parsing

Definition at line 182 of file protocol.h.

#define PX4IO_P_SETUP_FEATURES_PWM_RSSI   (1 << 2)

enable PWM RSSI parsing

Definition at line 181 of file protocol.h.

#define PX4IO_P_SETUP_FEATURES_SBUS1_OUT   (1 << 0)

enable S.Bus v1 output

Definition at line 179 of file protocol.h.

#define PX4IO_P_SETUP_FEATURES_SBUS2_OUT   (1 << 1)

enable S.Bus v2 output

Definition at line 180 of file protocol.h.

#define PX4IO_P_SETUP_FORCE_SAFETY_OFF
Value:
12 /* force safety switch into
'armed' (PWM enabled) state - this is a non-data write and
hence index 12 can safely be used. */

Definition at line 229 of file protocol.h.

#define PX4IO_P_SETUP_FORCE_SAFETY_ON   14 /* force safety switch into 'disarmed' (PWM disabled state) */

Definition at line 234 of file protocol.h.

#define PX4IO_P_SETUP_PWM_ALTRATE   4 /* 'high' PWM frame output rate in Hz */

Definition at line 199 of file protocol.h.

#define PX4IO_P_SETUP_PWM_DEFAULTRATE   3 /* 'low' PWM frame output rate in Hz */

Definition at line 198 of file protocol.h.

#define PX4IO_P_SETUP_PWM_RATES   2 /* bitmask, 0 = low rate, 1 = high rate */

Definition at line 197 of file protocol.h.

#define PX4IO_P_SETUP_PWM_REVERSE   15

Bitmask to reverse PWM channels 1-8.

Definition at line 237 of file protocol.h.

#define PX4IO_P_SETUP_RC_THR_FAILSAFE_US   13

the throttle failsafe pulse length in microseconds

Definition at line 232 of file protocol.h.

#define PX4IO_P_SETUP_REBOOT_BL   10 /* reboot IO into bootloader */

Definition at line 224 of file protocol.h.

Referenced by px4flash_event().

#define PX4IO_P_SETUP_RELAYS_PAD   5

Definition at line 208 of file protocol.h.

#define PX4IO_P_SETUP_SET_DEBUG   9 /* debug level for IO board */

Definition at line 222 of file protocol.h.

#define PX4IO_P_SETUP_TRIM_PITCH   17

Pitch trim, in actuator units.

Definition at line 239 of file protocol.h.

#define PX4IO_P_SETUP_TRIM_ROLL   16

Roll trim, in actuator units.

Definition at line 238 of file protocol.h.

#define PX4IO_P_SETUP_TRIM_YAW   18

Yaw trim, in actuator units.

Definition at line 240 of file protocol.h.

#define PX4IO_P_SETUP_VBATT_SCALE   6 /* hardware rev [1] battery voltage correction factor (float) */

Definition at line 211 of file protocol.h.

#define PX4IO_P_SETUP_VSERVO_SCALE   6 /* hardware rev [2] servo voltage correction factor (float) */

Definition at line 212 of file protocol.h.

#define PX4IO_P_STATUS_ALARMS   3 /* alarm flags - alarms latch, write 1 to a bit to clear it */

Definition at line 121 of file protocol.h.

#define PX4IO_P_STATUS_ALARMS_ACC_CURRENT   (1 << 3) /* [1] accessory current limit was exceeded */

Definition at line 125 of file protocol.h.

#define PX4IO_P_STATUS_ALARMS_FMU_LOST   (1 << 4) /* timed out waiting for controls from FMU */

Definition at line 126 of file protocol.h.

#define PX4IO_P_STATUS_ALARMS_PWM_ERROR   (1 << 6) /* PWM configuration or output was bad */

Definition at line 128 of file protocol.h.

#define PX4IO_P_STATUS_ALARMS_RC_LOST   (1 << 5) /* timed out waiting for RC input */

Definition at line 127 of file protocol.h.

#define PX4IO_P_STATUS_ALARMS_SERVO_CURRENT   (1 << 2) /* [1] servo current limit was exceeded */

Definition at line 124 of file protocol.h.

#define PX4IO_P_STATUS_ALARMS_TEMPERATURE   (1 << 1) /* board temperature is high */

Definition at line 123 of file protocol.h.

#define PX4IO_P_STATUS_ALARMS_VBATT_LOW   (1 << 0) /* [1] VBatt is very close to regulator dropout */

Definition at line 122 of file protocol.h.

#define PX4IO_P_STATUS_ALARMS_VSERVO_FAULT   (1 << 7) /* [2] VServo was out of the valid range (2.5 - 5.5 V) */

Definition at line 129 of file protocol.h.

#define PX4IO_P_STATUS_CPULOAD   1

Definition at line 101 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS   2 /* monitoring flags */

Definition at line 103 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_ARM_SYNC   (1 << 9) /* the arming state between IO and FMU is in sync */

Definition at line 113 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_FAILSAFE   (1 << 11) /* failsafe is active */

Definition at line 115 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_FMU_INITIALIZED   (1 << 13) /* FMU was initialized and OK once */

Definition at line 117 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_FMU_OK   (1 << 6) /* controls from FMU are valid */

Definition at line 110 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_INIT_OK   (1 << 10) /* initialisation of the IO completed without error */

Definition at line 114 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_MIXER_OK   (1 << 8) /* mixer is OK */

Definition at line 112 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_OUTPUTS_ARMED   (1 << 0) /* arm-ok and locally armed */

Definition at line 104 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_OVERRIDE   (1 << 1) /* in manual override */

Definition at line 105 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_RAW_PWM   (1 << 7) /* raw PWM from FMU is bypassing the mixer */

Definition at line 111 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_RC_DSM   (1 << 4) /* DSM input is valid */

Definition at line 108 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_RC_OK   (1 << 2) /* RC input is valid */

Definition at line 106 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_RC_PPM   (1 << 3) /* PPM input is valid */

Definition at line 107 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_RC_SBUS   (1 << 5) /* SBUS input is valid */

Definition at line 109 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_RC_ST24   (1 << 14) /* ST24 input is valid */

Definition at line 118 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_RC_SUMD   (1 << 15) /* SUMD input is valid */

Definition at line 119 of file protocol.h.

#define PX4IO_P_STATUS_FLAGS_SAFETY_OFF   (1 << 12) /* safety is off */

Definition at line 116 of file protocol.h.

#define PX4IO_P_STATUS_FREEMEM   0

Definition at line 100 of file protocol.h.

#define PX4IO_P_STATUS_IBATT   5 /* [1] battery current (raw ADC) */

Definition at line 132 of file protocol.h.

#define PX4IO_P_STATUS_MIXER   9 /* mixer actuator limit flags */

Definition at line 137 of file protocol.h.

#define PX4IO_P_STATUS_MIXER_LOWER_LIMIT   (1 << 0)

at least one actuator output has reached lower limit

Definition at line 138 of file protocol.h.

#define PX4IO_P_STATUS_MIXER_UPPER_LIMIT   (1 << 1)

at least one actuator output has reached upper limit

Definition at line 139 of file protocol.h.

#define PX4IO_P_STATUS_MIXER_YAW_LIMIT   (1 << 2)

yaw control is limited because it causes output clipping

Definition at line 140 of file protocol.h.

#define PX4IO_P_STATUS_PRSSI   8 /* [2] RSSI PWM value */

Definition at line 135 of file protocol.h.

#define PX4IO_P_STATUS_VBATT   4 /* [1] battery voltage in mV */

Definition at line 131 of file protocol.h.

#define PX4IO_P_STATUS_VRSSI   7 /* [2] RSSI voltage */

Definition at line 134 of file protocol.h.

#define PX4IO_P_STATUS_VSERVO   6 /* [2] servo rail voltage in mV */

Definition at line 133 of file protocol.h.

#define PX4IO_P_TEST_LED   0

set the amber LED on/off

Definition at line 283 of file protocol.h.

#define PX4IO_PAGE_ACTUATORS   2 /* 0..CONFIG_ACTUATOR_COUNT-1 */

Definition at line 143 of file protocol.h.

#define PX4IO_PAGE_CONFIG   0

Definition at line 86 of file protocol.h.

#define PX4IO_PAGE_CONTROL_MAX_PWM   107

0..CONFIG_ACTUATOR_COUNT-1

Definition at line 289 of file protocol.h.

#define PX4IO_PAGE_CONTROL_MIN_PWM   106

0..CONFIG_ACTUATOR_COUNT-1

Definition at line 286 of file protocol.h.

#define PX4IO_PAGE_CONTROLS   51

actuator control groups, one after the other, 8 wide

Definition at line 243 of file protocol.h.

#define PX4IO_PAGE_DIRECT_PWM   54

0..CONFIG_ACTUATOR_COUNT-1

Definition at line 272 of file protocol.h.

#define PX4IO_PAGE_DISARMED_PWM   108 /* 0..CONFIG_ACTUATOR_COUNT-1 */

Definition at line 292 of file protocol.h.

#define PX4IO_PAGE_FAILSAFE_PWM   55

0..CONFIG_ACTUATOR_COUNT-1

Definition at line 275 of file protocol.h.

#define PX4IO_PAGE_MIXERLOAD   52

Definition at line 256 of file protocol.h.

#define PX4IO_PAGE_PWM_INFO   7

Definition at line 173 of file protocol.h.

#define PX4IO_PAGE_RAW_ADC_INPUT   6 /* 0..CONFIG_ADC_INPUT_COUNT-1 */

Definition at line 170 of file protocol.h.

#define PX4IO_PAGE_RAW_RC_INPUT   4

Definition at line 149 of file protocol.h.

#define PX4IO_PAGE_RC_CONFIG   53

R/C input configuration.

Definition at line 259 of file protocol.h.

#define PX4IO_PAGE_RC_INPUT   5

Definition at line 165 of file protocol.h.

#define PX4IO_PAGE_SENSORS   56

Sensors connected to PX4IO.

Definition at line 278 of file protocol.h.

#define PX4IO_PAGE_SERVOS   3 /* 0..CONFIG_ACTUATOR_COUNT-1 */

Definition at line 146 of file protocol.h.

#define PX4IO_PAGE_SETUP   50

Definition at line 177 of file protocol.h.

Referenced by px4flash_event().

#define PX4IO_PAGE_STATUS   1

Definition at line 99 of file protocol.h.

#define PX4IO_PAGE_TEST   127

Definition at line 282 of file protocol.h.

#define PX4IO_PROTOCOL_MAX_CONTROL_COUNT   8

The protocol does not support more than set here, individual units might support less - see PX4IO_P_CONFIG_CONTROL_COUNT.

Definition at line 83 of file protocol.h.

#define PX4IO_PROTOCOL_VERSION   4

Definition at line 80 of file protocol.h.

#define PX4IO_RATE_MAP_BASE   0 /* 0..CONFIG_ACTUATOR_COUNT bitmaps of PWM rate groups */

Definition at line 174 of file protocol.h.

#define PX4IO_REBOOT_BL_MAGIC   14662 /* required argument for reboot (random) */

Definition at line 225 of file protocol.h.

Referenced by px4flash_event().

#define REG_TO_FLOAT (   _reg)    ((float)REG_TO_SIGNED(_reg) / 10000.0f)

Definition at line 77 of file protocol.h.

#define REG_TO_SIGNED (   _reg)    ((int16_t)(_reg))

Definition at line 74 of file protocol.h.

#define SIGNED_TO_REG (   _signed)    ((uint16_t)(_signed))

Definition at line 75 of file protocol.h.

Enumeration Type Documentation

anonymous enum
Enumerator
dsm_bind_power_down 
dsm_bind_power_up 
dsm_bind_set_rx_out 
dsm_bind_send_pulses 
dsm_bind_reinit_uart 

Definition at line 214 of file protocol.h.

Function Documentation

static uint8_t crc_packet ( struct IOPacket pkt)
static

Definition at line 379 of file protocol.h.

References crc8_tab, p, PKT_COUNT, and IOPacket::regs.

Referenced by px4flash_event().

+ Here is the caller graph for this function:

Variable Documentation

const uint8_t crc8_tab[256]
static

Definition at line 342 of file protocol.h.

Referenced by crc_packet().