32 #define PKT_MAX_REGS 22
33 #define IOMCU_MAX_CHANNELS 16
76 #define PAGE_REG_SETUP_FEATURES 0
77 #define P_SETUP_FEATURES_SBUS1_OUT 1
78 #define P_SETUP_FEATURES_SBUS2_OUT 2
79 #define P_SETUP_FEATURES_PWM_RSSI 4
80 #define P_SETUP_FEATURES_ADC_RSSI 8
81 #define P_SETUP_FEATURES_ONESHOT 16
82 #define P_SETUP_FEATURES_BRUSHED 32
84 #define PAGE_REG_SETUP_ARMING 1
85 #define P_SETUP_ARMING_IO_ARM_OK (1<<0)
86 #define P_SETUP_ARMING_FMU_ARMED (1<<1)
87 #define P_SETUP_ARMING_RC_HANDLING_DISABLED (1<<6)
88 #define P_SETUP_ARMING_SAFETY_DISABLE_ON (1 << 11)
89 #define P_SETUP_ARMING_SAFETY_DISABLE_OFF (1 << 12)
91 #define PAGE_REG_SETUP_PWM_RATE_MASK 2
92 #define PAGE_REG_SETUP_DEFAULTRATE 3
93 #define PAGE_REG_SETUP_ALTRATE 4
94 #define PAGE_REG_SETUP_REBOOT_BL 10
95 #define PAGE_REG_SETUP_CRC 11
96 #define PAGE_REG_SETUP_SBUS_RATE 19
97 #define PAGE_REG_SETUP_IGNORE_SAFETY 20
98 #define PAGE_REG_SETUP_HEATER_DUTY_CYCLE 21
99 #define PAGE_REG_SETUP_DSM_BIND 22
100 #define PAGE_REG_SETUP_RC_PROTOCOLS 23
103 #define PAGE_CONFIG_PROTOCOL_VERSION 0
104 #define PAGE_CONFIG_PROTOCOL_VERSION2 1
105 #define IOMCU_PROTOCOL_VERSION 4
106 #define IOMCU_PROTOCOL_VERSION2 10
109 #define REBOOT_BL_MAGIC 14662
111 #define PAGE_REG_SETUP_FORCE_SAFETY_OFF 12
112 #define PAGE_REG_SETUP_FORCE_SAFETY_ON 14
113 #define FORCE_SAFETY_MAGIC 22027
185 0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31,
186 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65,
187 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9,
188 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd,
189 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1,
190 0xb4, 0xb3, 0xba, 0xbd, 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2,
191 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea, 0xb7, 0xb0, 0xb9, 0xbe,
192 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a,
193 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, 0x1f, 0x18, 0x11, 0x16,
194 0x03, 0x04, 0x0d, 0x0a, 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42,
195 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a, 0x89, 0x8e, 0x87, 0x80,
196 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4,
197 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6, 0xcf, 0xc8,
198 0xdd, 0xda, 0xd3, 0xd4, 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c,
199 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, 0x19, 0x1e, 0x17, 0x10,
200 0x05, 0x02, 0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34,
201 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f,
202 0x6a, 0x6d, 0x64, 0x63, 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b,
203 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, 0xae, 0xa9, 0xa0, 0xa7,
204 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83,
205 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef,
206 0xfa, 0xfd, 0xf4, 0xf3
254 (INTERMCU_LINK).device.put_buffer(&(INTERMCU_LINK), 0, (
uint8_t *)&pkt, pkt_size);
static const float offset[]
uint16_t protocol_version2
uint16_t pwm[IOMCU_MAX_CHANNELS]
static const uint8_t crc8_table[]
void iomcu_set_heater_duty_cycle(uint8_t duty_cycle)
Set the IO MCU heater duty cycle.
uint16_t servo_trim[IOMCU_MAX_CHANNELS]
uint16_t protocol_version
static void iomcu_write_registers(uint8_t page, uint8_t offset, uint8_t count, const uint16_t *regs)
Write registers to the IO MCU.
uint8_t rc_reversed[IOMCU_MAX_CHANNELS]
uint8_t throttle_is_angle
#define PAGE_REG_SETUP_HEATER_DUTY_CYCLE
uint8_t servo_function[IOMCU_MAX_CHANNELS]
#define IOMCU_MAX_CHANNELS
static uint8_t crc_crc8(const uint8_t *p, uint8_t len)
uint8_t servo_reversed[IOMCU_MAX_CHANNELS]
uint16_t servo_max[IOMCU_MAX_CHANNELS]
uint16_t servo_min[IOMCU_MAX_CHANNELS]
static void iomcu_write_register(uint8_t page, uint8_t offset, uint16_t v)
Write a single register to the IO MCU.
Driver to communicate with the ardupilot IO MCU.
uint16_t regs[PKT_MAX_REGS]
arch independent UART (Universal Asynchronous Receiver/Transmitter) API
unsigned short uint16_t
Typedef defining 16 bit unsigned short type.
unsigned int uint32_t
Typedef defining 32 bit unsigned int type.
short int16_t
Typedef defining 16 bit short type.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.
signed char int8_t
Typedef defining 8 bit char type.