49 #include <board_config.h> 53 #include <pwm_limit/pwm_limit.h> 59 #define perf_alloc(a,b) NULL 64 #define PX4IO_BL_VERSION 3 65 #define PX4IO_SERVO_COUNT 8 66 #define PX4IO_CONTROL_CHANNELS 8 67 #define PX4IO_CONTROL_GROUPS 4 68 #define PX4IO_RC_INPUT_CHANNELS 18 69 #define PX4IO_RC_MAPPED_CONTROL_CHANNELS 8 77 # define debug(fmt, args...) syslog(LOG_DEBUG,fmt "\n", ##args) 79 # define debug(fmt, args...) do {} while(0) 91 extern uint16_t r_page_adc[];
107 #define r_status_flags r_page_status[PX4IO_P_STATUS_FLAGS] 108 #define r_status_alarms r_page_status[PX4IO_P_STATUS_ALARMS] 110 #define r_raw_rc_count r_page_raw_rc_input[PX4IO_P_RAW_RC_COUNT] 111 #define r_raw_rc_values (&r_page_raw_rc_input[PX4IO_P_RAW_RC_BASE]) 112 #define r_raw_rc_flags r_page_raw_rc_input[PX4IO_P_RAW_RC_FLAGS] 113 #define r_rc_valid r_page_rc_input[PX4IO_P_RC_VALID] 114 #define r_rc_values (&r_page_rc_input[PX4IO_P_RC_BASE]) 115 #define r_mixer_limits r_page_status[PX4IO_P_STATUS_MIXER] 117 #define r_setup_features r_page_setup[PX4IO_P_SETUP_FEATURES] 118 #define r_setup_arming r_page_setup[PX4IO_P_SETUP_ARMING] 119 #define r_setup_pwm_rates r_page_setup[PX4IO_P_SETUP_PWM_RATES] 120 #define r_setup_pwm_defaultrate r_page_setup[PX4IO_P_SETUP_PWM_DEFAULTRATE] 121 #define r_setup_pwm_altrate r_page_setup[PX4IO_P_SETUP_PWM_ALTRATE] 122 #define r_setup_rc_thr_failsafe r_page_setup[PX4IO_P_SETUP_RC_THR_FAILSAFE_US] 124 #define r_setup_pwm_reverse r_page_setup[PX4IO_P_SETUP_PWM_REVERSE] 126 #define r_setup_trim_roll r_page_setup[PX4IO_P_SETUP_TRIM_ROLL] 127 #define r_setup_trim_pitch r_page_setup[PX4IO_P_SETUP_TRIM_PITCH] 128 #define r_setup_trim_yaw r_page_setup[PX4IO_P_SETUP_TRIM_YAW] 129 #define r_setup_scale_roll r_page_setup[PX4IO_P_SETUP_SCALE_ROLL] 130 #define r_setup_scale_pitch r_page_setup[PX4IO_P_SETUP_SCALE_PITCH] 131 #define r_setup_scale_yaw r_page_setup[PX4IO_P_SETUP_SCALE_YAW] 132 #define r_setup_sbus_rate r_page_setup[PX4IO_P_SETUP_SBUS_RATE] 133 #define r_setup_thr_fac r_page_setup[PX4IO_P_SETUP_THR_MDL_FAC] 134 #define r_setup_slew_max r_page_setup[PX4IO_P_SETUP_MOTOR_SLEW_MAX] 135 #define r_setup_airmode r_page_setup[PX4IO_P_SETUP_AIRMODE] 137 #define r_control_values (&r_page_controls[0]) 144 volatile uint64_t rc_channels_timestamp_received;
145 volatile uint64_t rc_channels_timestamp_valid;
156 extern bool update_mc_thrust_param;
157 extern bool update_trims;
167 #define LED_BLUE(_s) px4_arch_gpiowrite(GPIO_LED1, !(_s)) 168 #define LED_AMBER(_s) px4_arch_gpiowrite(GPIO_LED2, !(_s)) 169 #define LED_SAFETY(_s) px4_arch_gpiowrite(GPIO_LED3, !(_s)) 170 #define LED_RING(_s) px4_arch_gpiowrite(GPIO_LED4, (_s)) 173 # define PX4IO_RELAY_CHANNELS 0 174 # define ENABLE_SBUS_OUT(_s) px4_arch_gpiowrite(GPIO_SBUS_OENABLE, !(_s)) 176 # define VDD_SERVO_FAULT (!px4_arch_gpioread(GPIO_SERVO_FAULT_DETECT)) 178 # define PX4IO_ADC_CHANNEL_COUNT 2 179 # define ADC_VSERVO 4 182 #define BUTTON_SAFETY px4_arch_gpioread(GPIO_BTN_SAFETY) 184 #define CONTROL_PAGE_INDEX(_group, _channel) (_group * PX4IO_CONTROL_CHANNELS + _channel) 186 #define PX4_CRITICAL_SECTION(cmd) { irqstate_t flags = px4_enter_critical_section(); cmd; px4_leave_critical_section(flags); } 188 #define PX4_ATOMIC_MODIFY_OR(target, modification) { if ((target | (modification)) != target) { PX4_CRITICAL_SECTION(target |= (modification)); } } 190 #define PX4_ATOMIC_MODIFY_CLEAR(target, modification) { if ((target & ~(modification)) != target) { PX4_CRITICAL_SECTION(target &= ~(modification)); } } 192 #define PX4_ATOMIC_MODIFY_AND(target, modification) { if ((target & (modification)) != target) { PX4_CRITICAL_SECTION(target &= (modification)); } } 197 extern void mixer_tick(
void);
198 extern int mixer_handle_text_create_mixer(
void);
199 extern int mixer_handle_text(
const void *
buffer,
size_t length);
201 extern void mixer_set_failsafe(
void);
207 extern void failsafe_led_init(
void);
213 extern void interface_tick(
void);
218 extern int registers_set(uint8_t page, uint8_t offset,
const uint16_t *values,
unsigned num_values);
219 extern int registers_get(uint8_t page, uint8_t offset, uint16_t **values,
unsigned *num_values);
225 extern uint16_t adc_measure(
unsigned channel);
233 extern void controls_tick(
void);
239 extern void isr_debug(uint8_t level,
const char *fmt, ...);
volatile uint16_t r_page_setup[]
PAGE 100.
Definition: registers.c:155
Configuration flags used in code.
void schedule_reboot(uint32_t time_delta_usec)
schedule a reboot
Definition: px4io.c:225
PX4IO interface protocol.
void controls_init(void)
R/C receiver handling.
Definition: controls.c:173
uint16_t r_page_servo_control_max[]
PAGE 107.
Definition: registers.c:254
int adc_init(void)
Sensors/misc inputs.
Definition: adc.c:82
volatile uint8_t debug_level
global debug level for isr_debug()
void safety_init(void)
Safety switch/LED.
Definition: safety.c:84
uint16_t r_page_controls[]
PAGE 101.
Definition: registers.c:211
uint16_t r_page_servo_disarmed[]
PAGE 109.
Definition: registers.c:270
void interface_init(void)
FMU communications.
Definition: i2c.c:99
uint16_t r_page_servo_control_min[]
PAGE 106.
Definition: registers.c:246
uint16_t r_page_rc_input_config[]
PAGE 103.
Definition: registers.c:222
uint16_t r_page_servos[]
PAGE 3.
Definition: registers.c:108
Definition: video_device.h:50
uint16_t r_page_actuators[]
PAGE 2.
Definition: registers.c:101
uint16_t r_page_rc_input[]
PAGE 5.
Definition: registers.c:130
int16_t r_page_servo_control_trim[]
PAGE 108.
Definition: registers.c:262
volatile uint16_t r_page_status[]
PAGE 1.
Definition: registers.c:85
uint16_t r_page_direct_pwm[]
PAGE 8.
Definition: registers.c:148
uint16_t r_page_raw_rc_input[]
PAGE 4.
Definition: registers.c:115
int registers_set(uint8_t page, uint8_t offset, const uint16_t *values, unsigned num_values)
Register space.
Definition: registers.c:273
uint16_t r_page_servo_failsafe[]
PAGE 105.
Definition: registers.c:238
Definition: pwm_limit.h:67
volatile uint64_t fmu_data_received_time
Last FMU receive time, in microseconds since system boot.
Definition: px4io.h:150
void isr_debug(uint8_t level, const char *fmt,...)
send a debug message to the console
Definition: px4io.c:99