33#define INT32_MIN (-2147483647-1)
37#define INT32_MAX (2147483647)
40#if defined MOTOR_MIXING_MIN_MOTOR || defined MOTOR_MIXING_MAX_MOTOR
41#error MIN_MOTOR and MAX_MOTOR have to be set via neutral/max of the respective servo
43#define MOTOR_MIXING_MIN_MOTOR 0
44#define MOTOR_MIXING_MAX_MOTOR MAX_PPRZ
46#ifndef MOTOR_MIXING_STOP_MOTOR
47#define MOTOR_MIXING_STOP_MOTOR -MAX_PPRZ
50#ifndef MOTOR_MIXING_TRIM_ROLL
51#define MOTOR_MIXING_TRIM_ROLL 0
54#ifndef MOTOR_MIXING_TRIM_PITCH
55#define MOTOR_MIXING_TRIM_PITCH 0
58#ifndef MOTOR_MIXING_TRIM_YAW
59#define MOTOR_MIXING_TRIM_YAW 0
68#ifndef MOTOR_MIXING_MAX_SATURATION_OFFSET
69#define MOTOR_MIXING_MAX_SATURATION_OFFSET MAX_PPRZ/10
72#ifndef MOTOR_MIXING_MIN_MOTOR_STARTUP
73#define MOTOR_MIXING_MIN_MOTOR_STARTUP MOTOR_MIXING_MIN_MOTOR
76#if defined (MOTOR_MIXING_MAX_NEGATIVE_MOTOR_STEP) || defined (MOTOR_MIXING_MAX_POSITIVE_MOTOR_STEP)
77#define MOTOR_MIXING_USE_MAX_MOTOR_STEP_BINDING
79#ifndef MOTOR_MIXING_MAX_NEGATIVE_MOTOR_STEP
80#define MOTOR_MIXING_MAX_NEGATIVE_MOTOR_STEP INT32_MIN
123#if PERIODIC_TELEMETRY
146#ifdef MOTOR_MIXING_USE_MAX_MOTOR_STEP_BINDING
149 static uint8_t initialized = 0;
151 if (initialized == 1) {
172#ifdef MOTOR_MIXING_STARTUP_DELAY
static const float offset[]
static void offset_commands(int32_t offset)
static const int32_t pitch_coef[MOTOR_MIXING_NB_MOTOR]
static const int32_t yaw_coef[MOTOR_MIXING_NB_MOTOR]
static void bound_commands_step(void)
#define MOTOR_MIXING_TRIM_YAW
#define MOTOR_MIXING_TRIM_ROLL
void motor_mixing_run_spinup(uint32_t counter, uint32_t max_counter)
struct MotorMixing motor_mixing
#define MOTOR_MIXING_MIN_MOTOR
static void send_motor_mixing(struct transport_tx *trans, struct link_device *dev)
#define MOTOR_MIXING_MIN_MOTOR_STARTUP
#define MOTOR_MIXING_MAX_SATURATION_OFFSET
Maximum offset in case of saturation.
static const int32_t thrust_coef[MOTOR_MIXING_NB_MOTOR]
void motor_mixing_run(bool motors_on, bool override_on, pprz_t in_cmd[])
void motor_mixing_init(void)
#define MOTOR_MIXING_MAX_MOTOR
#define MOTOR_MIXING_STOP_MOTOR
static const int32_t roll_coef[MOTOR_MIXING_NB_MOTOR]
#define MOTOR_MIXING_TRIM_PITCH
static void bound_commands(void)
int32_t override_value[MOTOR_MIXING_NB_MOTOR]
int32_t trim[MOTOR_MIXING_NB_MOTOR]
int32_t commands[MOTOR_MIXING_NB_MOTOR]
bool override_enabled[MOTOR_MIXING_NB_MOTOR]
#define MOTOR_MIXING_NB_MOTOR
#define MOTOR_MIXING_THRUST_COEF
#define MOTOR_MIXING_YAW_COEF
#define MOTOR_MIXING_ROLL_COEF
#define MOTOR_MIXING_PITCH_COEF
#define MOTOR_MIXING_SCALE
static const struct usb_device_descriptor dev
int8_t register_periodic_telemetry(struct periodic_telemetry *_pt, uint8_t _id, telemetry_cb _cb)
Register a telemetry callback function.
Periodic telemetry system header (includes downlink utility and generated code).
#define DefaultPeriodic
Set default periodic telemetry.
int int32_t
Typedef defining 32 bit int 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.