Browse Source

Re-order register page variables to match the order registers are defined in the protocol header.

sbg
px4dev 12 years ago
parent
commit
981477c785
  1. 2
      apps/px4io/protocol.h
  2. 108
      apps/px4io/registers.c

2
apps/px4io/protocol.h

@ -109,7 +109,7 @@
#define PX4IO_P_STATUS_ALARMS_SERVO_CURRENT (1 << 2) /* servo current limit was exceeded */ #define PX4IO_P_STATUS_ALARMS_SERVO_CURRENT (1 << 2) /* servo current limit was exceeded */
#define PX4IO_P_STATUS_ALARMS_ACC_CURRENT (1 << 3) /* accessory current limit was exceeded */ #define PX4IO_P_STATUS_ALARMS_ACC_CURRENT (1 << 3) /* 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_FMU_LOST (1 << 4) /* timed out waiting for controls from FMU */
#define PX4IO_P_STATUS_ALARMS_RC_LOST (1 << 5) #define PX4IO_P_STATUS_ALARMS_RC_LOST (1 << 5) /* timed out waiting for RC input */
#define PX4IO_P_STATUS_VBATT 4 /* battery voltage in mV */ #define PX4IO_P_STATUS_VBATT 4 /* battery voltage in mV */
#define PX4IO_P_STATUS_IBATT 5 /* battery current in cA */ #define PX4IO_P_STATUS_IBATT 5 /* battery current in cA */

108
apps/px4io/registers.c

@ -50,33 +50,8 @@
static int registers_set_one(uint8_t page, uint8_t offset, uint16_t value); static int registers_set_one(uint8_t page, uint8_t offset, uint16_t value);
/** /**
* Setup registers * PAGE 0
*/ *
volatile uint16_t r_page_setup[] =
{
[PX4IO_P_SETUP_FEATURES] = 0,
[PX4IO_P_SETUP_ARMING] = 0,
[PX4IO_P_SETUP_PWM_RATES] = 0,
[PX4IO_P_SETUP_PWM_LOWRATE] = 50,
[PX4IO_P_SETUP_PWM_HIGHRATE] = 200,
[PX4IO_P_SETUP_RELAYS] = 0,
[PX4IO_P_SETUP_VBATT_SCALE] = 10000,
[PX4IO_P_SETUP_IBATT_SCALE] = 0,
[PX4IO_P_SETUP_IBATT_BIAS] = 0
};
#define PX4IO_P_SETUP_FEATURES_VALID (PX4IO_P_FEAT_ARMING_MANUAL_OVERRIDE_OK)
#define PX4IO_P_SETUP_ARMING_VALID (PX4IO_P_SETUP_ARMING_ARM_OK | \
PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE)
#define PX4IO_P_SETUP_RATES_VALID ((1 << IO_SERVO_COUNT) - 1)
#define PX4IO_P_SETUP_RELAYS_VALID ((1 << PX4IO_RELAY_CHANNELS) - 1)
/**
* Control values from the FMU.
*/
volatile uint16_t r_page_controls[PX4IO_CONTROL_CHANNELS];
/**
* Static configuration parameters. * Static configuration parameters.
*/ */
static const uint16_t r_page_config[] = { static const uint16_t r_page_config[] = {
@ -92,6 +67,8 @@ static const uint16_t r_page_config[] = {
}; };
/** /**
* PAGE 1
*
* Status values. * Status values.
*/ */
uint16_t r_page_status[] = { uint16_t r_page_status[] = {
@ -104,26 +81,33 @@ uint16_t r_page_status[] = {
}; };
/** /**
* ADC input buffer. * PAGE 2
*/ *
uint16_t r_page_adc[ADC_CHANNEL_COUNT];
/**
* Post-mixed actuator values. * Post-mixed actuator values.
*/ */
uint16_t r_page_actuators[IO_SERVO_COUNT]; uint16_t r_page_actuators[IO_SERVO_COUNT];
/** /**
* PAGE 3
*
* Servo PWM values * Servo PWM values
*/ */
uint16_t r_page_servos[IO_SERVO_COUNT]; uint16_t r_page_servos[IO_SERVO_COUNT];
/** /**
* Servo PWM values * PAGE 4
*
* Raw RC input
*/ */
uint16_t r_page_servo_failsafe[IO_SERVO_COUNT]; uint16_t r_page_raw_rc_input[] =
{
[PX4IO_P_RAW_RC_COUNT] = 0,
[PX4IO_P_RAW_RC_BASE ... (PX4IO_P_RAW_RC_BASE + MAX_CONTROL_CHANNELS)] = 0
};
/** /**
* PAGE 5
*
* Scaled/routed RC input * Scaled/routed RC input
*/ */
uint16_t r_page_rc_input[] = { uint16_t r_page_rc_input[] = {
@ -132,25 +116,71 @@ uint16_t r_page_rc_input[] = {
}; };
/** /**
* Raw RC input * PAGE 6
*
* Raw ADC input.
*/ */
uint16_t r_page_raw_rc_input[] = uint16_t r_page_adc[ADC_CHANNEL_COUNT];
/**
* PAGE 100
*
* Setup registers
*/
volatile uint16_t r_page_setup[] =
{ {
[PX4IO_P_RAW_RC_COUNT] = 0, [PX4IO_P_SETUP_FEATURES] = 0,
[PX4IO_P_RAW_RC_BASE ... (PX4IO_P_RAW_RC_BASE + MAX_CONTROL_CHANNELS)] = 0 [PX4IO_P_SETUP_ARMING] = 0,
[PX4IO_P_SETUP_PWM_RATES] = 0,
[PX4IO_P_SETUP_PWM_LOWRATE] = 50,
[PX4IO_P_SETUP_PWM_HIGHRATE] = 200,
[PX4IO_P_SETUP_RELAYS] = 0,
[PX4IO_P_SETUP_VBATT_SCALE] = 10000,
[PX4IO_P_SETUP_IBATT_SCALE] = 0,
[PX4IO_P_SETUP_IBATT_BIAS] = 0
}; };
#define PX4IO_P_SETUP_FEATURES_VALID (PX4IO_P_FEAT_ARMING_MANUAL_OVERRIDE_OK)
#define PX4IO_P_SETUP_ARMING_VALID (PX4IO_P_SETUP_ARMING_ARM_OK | \
PX4IO_P_SETUP_ARMING_MANUAL_OVERRIDE)
#define PX4IO_P_SETUP_RATES_VALID ((1 << IO_SERVO_COUNT) - 1)
#define PX4IO_P_SETUP_RELAYS_VALID ((1 << PX4IO_RELAY_CHANNELS) - 1)
/**
* PAGE 101
*
* Control values from the FMU.
*/
volatile uint16_t r_page_controls[PX4IO_CONTROL_CHANNELS];
/*
* PAGE 102 does not have a buffer.
*/
/** /**
* PAGE 103
*
* R/C channel input configuration. * R/C channel input configuration.
*/ */
uint16_t r_page_rc_input_config[MAX_CONTROL_CHANNELS * PX4IO_P_RC_CONFIG_STRIDE]; uint16_t r_page_rc_input_config[MAX_CONTROL_CHANNELS * PX4IO_P_RC_CONFIG_STRIDE];
/* valid options excluding ENABLE */
#define PX4IO_P_RC_CONFIG_OPTIONS_VALID PX4IO_P_RC_CONFIG_OPTIONS_REVERSE #define PX4IO_P_RC_CONFIG_OPTIONS_VALID PX4IO_P_RC_CONFIG_OPTIONS_REVERSE
/*
* PAGE 104 uses r_page_servos.
*/
/**
* PAGE 105
*
* Failsafe servo PWM values
*/
uint16_t r_page_servo_failsafe[IO_SERVO_COUNT];
void void
registers_set(uint8_t page, uint8_t offset, const uint16_t *values, unsigned num_values) registers_set(uint8_t page, uint8_t offset, const uint16_t *values, unsigned num_values)
{ {
system_state.fmu_data_received_time = hrt_absolute_time();
switch (page) { switch (page) {

Loading…
Cancel
Save