Add wasm tacle-bench targets

This commit is contained in:
2026-06-12 20:06:22 +02:00
parent 30daa8a00c
commit 08c2e9c13d
1122 changed files with 520422 additions and 0 deletions

View File

@ -0,0 +1,116 @@
/* This file has been generated from conf/airframes/twinstar3.xml */
/* Please DO NOT EDIT */
#ifndef AIRFRAME_H
#define AIRFRAME_H
#define AIRFRAME_NAME "Twinstar trois"
#define CTL_BRD_V1_2_1 1
#define ADC_CHANNEL_IR1 1
#define ADC_CHANNEL_IR2 2
#define NB_SERVO 6
#define SERVO_MOTOR_LEFT 3
#define SERVO_MOTOR_LEFT_TRAVEL 0.833333333333
#define SERVOS_NEUTRALS_3 1000
#define SERVO_MOTOR_RIGHT 9
#define SERVO_MOTOR_RIGHT_TRAVEL 0.833333333333
#define SERVOS_NEUTRALS_9 1000
#define SERVO_AILERON_LEFT 0
#define SERVO_AILERON_LEFT_TRAVEL -0.55
#define SERVOS_NEUTRALS_0 1600
#define SERVO_AILERON_RIGHT 2
#define SERVO_AILERON_RIGHT_TRAVEL -0.520833333333
#define SERVOS_NEUTRALS_2 1650
#define SERVO_ELEVATOR 6
#define SERVO_ELEVATOR_TRAVEL 0.496666666667
#define SERVOS_NEUTRALS_6 1530
#define SERVO_RUDDER 7
#define SERVO_RUDDER_TRAVEL -0.483333333333
#define SERVOS_NEUTRALS_7 1450
#define SERVOS_MINS {1850,1000,2000,1000,1000,1000,1220,1850,1000,1000}
#define SERVOS_NEUTRALS {1600,1500,1650,1000,1500,1500,1530,1450,1500,1000}
#define SERVOS_MAXS {1190,2000,1375,2000,2000,2000,1816,1270,2000,2000}
#define SERVO_MIN_US 1000ul
#define SERVO_MAX_US 2000ul
#define ServoSet(values) { \
uint16_t servo_value;\
int16_t _var_roll;\
servo_value = SERVO_NEUTRAL(SERVO_MOTOR_LEFT) + (int16_t)((2 * values[ RADIO_GAIN1 ])*SERVO_MOTOR_LEFT_TRAVEL);\
servo_widths[ SERVO_MOTOR_LEFT ] = ChopServo(servo_value);\
\
servo_value = SERVO_NEUTRAL(SERVO_MOTOR_RIGHT) + (int16_t)((2 * values[ RADIO_THROTTLE ])*SERVO_MOTOR_RIGHT_TRAVEL);\
servo_widths[ SERVO_MOTOR_RIGHT ] = ChopServo(servo_value);\
\
servo_value = SERVO_NEUTRAL(SERVO_ELEVATOR) + (int16_t)((values[ RADIO_PITCH ])*SERVO_ELEVATOR_TRAVEL);\
servo_widths[ SERVO_ELEVATOR ] = ChopServo(servo_value);\
\
_var_roll = values[ RADIO_ROLL ];\
servo_value = SERVO_NEUTRAL(SERVO_AILERON_LEFT) + (int16_t)(((_var_roll > 0 ? 1 : AILERON_DIFF) * _var_roll)*SERVO_AILERON_LEFT_TRAVEL);\
servo_widths[ SERVO_AILERON_LEFT ] = ChopServo(servo_value);\
\
servo_value = SERVO_NEUTRAL(SERVO_AILERON_RIGHT) + (int16_t)(((_var_roll > 0 ? AILERON_DIFF : 1) * _var_roll)*SERVO_AILERON_RIGHT_TRAVEL);\
servo_widths[ SERVO_AILERON_RIGHT ] = ChopServo(servo_value);\
\
servo_value = SERVO_NEUTRAL(SERVO_RUDDER) + (int16_t)((values[ RADIO_YAW ] + values[ RADIO_ROLL ]*COMBI_SWITCH)*SERVO_RUDDER_TRAVEL);\
servo_widths[ SERVO_RUDDER ] = ChopServo(servo_value);\
\
}
#define AILERON_DIFF 0.66
#define COMBI_SWITCH 1.0
#define IR_ROLL_NEUTRAL_DEFAULT -915
#define IR_PITCH_NEUTRAL_DEFAULT 110
#define IR_DEFAULT_CONTRAST 200
#define IR_RAD_OF_IR_CONTRAST 0.75
#define IR_RollOfIrs(x1,x2) (-1*(x1)+ -1*(x2))
#define IR_PitchOfIrs(x1,x2) (-1*(x1)+ 1*(x2))
#define IR_RAD_OF_IR_MAX_VAL 0.0045
#define IR_RAD_OF_IR_MIN_VAL 0.00075
#define ROLL_PGAIN 10000.
#define PITCH_OF_ROLL 0.0
#define PITCH_PGAIN 15000.
#define MAX_ROLL 0.35
#define MAX_PITCH 0.35
#define MIN_PITCH -0.35
#define CLIMB_PITCH_PGAIN -0.1
#define CLIMB_PITCH_IGAIN 0.025
#define CLIMB_PGAIN -0.03
#define CLIMB_IGAIN 0.1
#define CLIMB_MAX 1.
#define CLIMB_LEVEL_GAZ 0.31
#define CLIMB_PITCH_OF_VZ_PGAIN 0.05
#define CLIMB_GAZ_OF_CLIMB 0.2
#define COURSE_PGAIN -0.2
#define ALTITUDE_PGAIN -0.025
#define NAV_PITCH 0.
#define VOLTAGE_ADC_A 0.0175
#define VOLTAGE_ADC_B 0.088
#define VoltageOfAdc(adc) (VOLTAGE_ADC_A * adc + VOLTAGE_ADC_B)
#define LOW_BATTERY 93
#define NOMINAL_AIRSPEED 10.
#define CARROT 5.
#define ROLL_RESPONSE_FACTOR 4.
#define YAW_RESPONSE_FACTOR 4.
#define WEIGHT 1.3
#endif // AIRFRAME_H

View File

@ -0,0 +1,546 @@
/* This file has been generated from conf/flight_plans/braunschweig.xml */
/* Please DO NOT EDIT */
#ifndef FLIGHT_PLAN_H
#define FLIGHT_PLAN_H
#define FLIGHT_PLAN_NAME "EMAV 2004, 8 shape"
#define NAV_UTM_EAST0 605530
#define NAV_UTM_NORTH0 5797350
#define QFU 270.0
#define WP_HOME 0
#define WAYPOINTS { \
{0.0, 0.0, 200},\
{0.0, 0.0, 200},\
{115.0, -75.0, 200},\
{156.7, -41.7, 200},\
{115.0, 0.0, 200},\
{0.0, -75.0, 200},\
{-51.7, -36.7, 200},\
};
#define NB_WAYPOINT 7
#define GROUND_ALT 125.
#define SECURITY_ALT 150.
#define MAX_DIST_FROM_HOME 500.
#ifdef NAV_C
static inline void auto_nav( void )
{
/*#ifdef WITH_SWITCH
switch (nav_block) {
Block(0) // init
switch(nav_stage) {
Label(while_1)
Stage(0)
if (! (!(estimator_flight_time))) Goto(endwhile_2) else NextStage();
Stage(1)
Goto(while_1)
Label(endwhile_2)
Stage(2)
if ((estimator_flight_time>8)) NextStage() else {
desired_course = RadOfDeg(QFU);
auto_pitch = FALSE;
nav_pitch = 0.150000;
vertical_mode = VERTICAL_MODE_AUTO_GAZ;
nav_desired_gaz = TRIM_UPPRZ(0.800000*MAX_PPRZ);
}
return;
Stage(3)
if ((estimator_z>SECURITY_ALT)) NextStage() else {
desired_course = RadOfDeg(QFU);
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_CLIMB;
desired_climb = 8.000000;
}
return;
Stage(4)
NextBlock()
}
Block(1) // two
if RcEvent1() { GotoBlock(2) }
switch(nav_stage) {
Label(while_3)
Stage(0)
if (! (TRUE)) Goto(endwhile_4) else NextStage();
Stage(1)
if (approaching(1)) NextStageFrom(1) else {
fly_to(1);
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 1 ].a;
pre_climb = 0.;
}
return;
Stage(2)
if (approaching(4)) NextStageFrom(4) else {
fly_to(4);
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 4 ].a;
pre_climb = 0.;
}
return;
Stage(3)
Goto(while_3)
Label(endwhile_4)
Stage(4)
NextBlock()
}
Block(2) // height
if RcEvent1() { GotoBlock(3) }
switch(nav_stage) {
Label(while_5)
Stage(0)
if (! (TRUE)) Goto(endwhile_6) else NextStage();
Stage(1)
if (approaching(6)) NextStageFrom(6) else {
fly_to(6);
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 6 ].a;
pre_climb = 0.;
}
return;
Stage(2)
if (approaching(1)) NextStageFrom(1) else {
fly_to(1);
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 1 ].a;
pre_climb = 0.;
}
return;
Stage(3)
if (approaching(2)) NextStageFrom(2) else {
route_to(last_wp, 2);
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 2 ].a;
pre_climb = 0.;
}
return;
Stage(4)
if (approaching(3)) NextStageFrom(3) else {
fly_to(3);
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 3 ].a;
pre_climb = 0.;
}
return;
Stage(5)
if (approaching(4)) NextStageFrom(4) else {
fly_to(4);
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 4 ].a;
pre_climb = 0.;
}
return;
Stage(6)
if (approaching(5)) NextStageFrom(5) else {
route_to(last_wp, 5);
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 5 ].a;
pre_climb = 0.;
}
return;
Stage(7)
Goto(while_5)
Label(endwhile_6)
Stage(8)
NextBlock()
}
Block(3) // xyz
if RcEvent1() { GotoBlock(4) }
switch(nav_stage) {
Stage(0)
//NormCourse(x) { while (x < 0) x += 360; while (x >= 360) x -= 360;}
//CircleXY(x,y,radius) { float alpha = atan2(estimator_y - y, estimator_x - x);float alpha_carrot = alpha + CARROT / (-radius * estimator_hspeed_mod);
//fly_to_xy(x+cos(alpha_carrot)*fabs(radius),y+sin(alpha_carrot)*fabs(radius)); qdr = DegOfRad(M_PI/2 - alpha_carrot); NormCourse(qdr);}
//Goto3D(50)
{static float carrot_x, carrot_y; int16_t pitch; int16_t roll; if (pprz_mode == PPRZ_MODE_AUTO2) { int16_t yaw = from_fbw.channels[ RADIO_YAW ]; if (yaw >
MIN_DX || yaw < -MIN_DX) { carrot_x += FLOAT_OF_PPRZ(yaw, 0, -20.);carrot_x = Min(carrot_x, MAX_DIST_CARROT); carrot_x = Max(carrot_x, -MAX_DIST_CARROT); }
pitch = from_fbw.channels[ RADIO_PITCH ]; if (pitch > MIN_DX || pitch < -MIN_DX) { carrot_y += FLOAT_OF_PPRZ(pitch, 0, -20.); carrot_y = Min(carrot_y,
MAX_DIST_CARROT); carrot_y = Max(carrot_y, -MAX_DIST_CARROT);} vertical_mode = VERTICAL_MODE_AUTO_ALT; roll = from_fbw.channels[ RADIO_ROLL ]; if (roll >
MIN_DX || roll < -MIN_DX) { desired_altitude += FLOAT_OF_PPRZ(roll, 0, -1.0); desired_altitude = Max(desired_altitude, MIN_HEIGHT_CARROT+GROUND_ALT);
desired_altitude = Min(desired_altitude, MAX_HEIGHT_CARROT+GROUND_ALT); } } { float alpha = atan2(estimator_y - carrot_y, estimator_x - carrot_x);float alpha_carrot = alpha + CARROT / (-50 * estimator_hspeed_mod);
fly_to_xy(carrot_x+cos(alpha_carrot)*fabs(50),carrot_y+sin(alpha_carrot)*fabs(50)); qdr = DegOfRad(M_PI/2 - alpha_carrot); { while (qdr < 0) qdr += 360;
while (qdr >= 360) qdr -= 360;}} }
return;
Stage(1)
NextBlock()
}
Block(4) // circle
if RcEvent1() { GotoBlock(5) }
switch(nav_stage) {
Stage(0)
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 0 ].a;
pre_climb = 0.;
Circle(0, 150);
return;
Stage(1)
NextBlock()
}
Block(5) // hippo
if RcEvent1() { GotoBlock(1) }
switch(nav_stage) {
Label(while_7)
Stage(0)
if (! (TRUE)) Goto(endwhile_8) else NextStage();
Stage(1)
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 1 ].a;
pre_climb = 0.;
Circle(1, 100);
if (Qdr(0)) NextStage();
return;
Stage(2)
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 4 ].a;
pre_climb = 0.;
Circle(4, 100);
if (Qdr(180)) NextStage();
return;
Stage(3)
Goto(while_7)
Label(endwhile_8)
Stage(4)
NextBlock()
}
}
#else*/
if ( nav_block == 0 ) {
// init
if ( nav_stage == 0 ) {
Label( while_1 )
nav_stage = 0;
if ( ! ( !( estimator_flight_time ) ) ) Goto( endwhile_2 )
else NextStage();
} else
if ( nav_stage == 1 ) {
Goto( while_1 )
} else
if ( nav_stage == 2 ) {
Label( endwhile_2 )
nav_stage = 2;
if ( ( estimator_flight_time > 8 ) ) NextStage() else {
desired_course = RadOfDeg( QFU );
auto_pitch = FALSE;
nav_pitch = 0.150000;
vertical_mode = VERTICAL_MODE_AUTO_GAZ;
nav_desired_gaz = TRIM_UPPRZ( 0.800000 * MAX_PPRZ );
}
return;
} else
if ( nav_stage == 3 ) {
nav_stage = 3;
if ( ( estimator_z > SECURITY_ALT ) ) NextStage() else {
desired_course = RadOfDeg( QFU );
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_CLIMB;
desired_climb = 8.000000;
}
return;
} else
if ( nav_stage == 4 )
NextBlock()
else { }
} else
if ( nav_block == 1 ) { // two
nav_block = 1;
if RcEvent1() {
GotoBlock( 2 )
}
if ( nav_stage == 0 ) {
Label( while_3 )
if ( ! ( TRUE ) ) Goto( endwhile_4 ) else NextStage();
} else
if ( nav_stage == 1 ) {
nav_stage = 1;
if ( approaching( 1 ) ) NextStageFrom( 1 ) else {
fly_to( 1 );
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 1 ].a;
pre_climb = 0.;
}
return;
} else
if ( nav_stage == 2 ) {
nav_stage = 2;
if ( approaching( 4 ) ) NextStageFrom( 4 ) else {
fly_to( 4 );
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 4 ].a;
pre_climb = 0.;
}
return;
} else
if ( nav_stage == 3 ) {
nav_stage = 3;
Goto( while_3 )
} else
if ( nav_stage == 4 ) {
Label( endwhile_4 )
nav_stage = 4;
NextBlock()
} else { }
} else
if ( nav_block == 2 ) { // height
nav_block = 2;
if RcEvent1() {
GotoBlock( 3 )
}
if ( nav_stage == 0 ) {
Label( while_5 )
nav_stage = 0;
if ( ! ( TRUE ) ) Goto( endwhile_6 ) else NextStage();
} else
if ( nav_stage == 1 ) {
nav_stage = 1;
if ( approaching( 6 ) ) NextStageFrom( 6 ) else {
fly_to( 6 );
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 6 ].a;
pre_climb = 0.;
}
return;
} else
if ( nav_stage == 2 ) {
nav_stage = 2;
if ( approaching( 1 ) ) NextStageFrom( 1 ) else {
fly_to( 1 );
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 1 ].a;
pre_climb = 0.;
}
return;
} else
if ( nav_stage == 3 ) {
nav_stage = 3;
if ( approaching( 2 ) ) NextStageFrom( 2 ) else {
route_to( last_wp, 2 );
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 2 ].a;
pre_climb = 0.;
}
return;
} else
if ( nav_stage == 4 ) {
nav_stage = 4;
if ( approaching( 3 ) ) NextStageFrom( 3 ) else {
fly_to( 3 );
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 3 ].a;
pre_climb = 0.;
}
return;
} else
if ( nav_stage == 5 ) {
nav_stage = 5;
if ( approaching( 4 ) ) NextStageFrom( 4 ) else {
fly_to( 4 );
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 4 ].a;
pre_climb = 0.;
}
return;
} else
if ( nav_stage == 6 ) {
nav_stage = 6;
if ( approaching( 5 ) ) NextStageFrom( 5 ) else {
route_to( last_wp, 5 );
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 5 ].a;
pre_climb = 0.;
}
return;
} else
if ( nav_stage == 7 ) {
nav_stage = 7;
Goto( while_5 )
}
else
if ( nav_stage == 8 ) {
Label( endwhile_6 )
nav_stage = 8;
NextBlock();
} else { }
} else
if ( nav_block == 3 ) { // xyz
nav_block = 3;
if RcEvent1() {
GotoBlock( 4 )
}
if ( nav_stage == 0 ) {
nav_stage = 0;
//Goto3D(50)
{
static float carrot_x, carrot_y;
int16_t pitch;
int16_t roll;
if ( pprz_mode == PPRZ_MODE_AUTO2 ) {
int16_t yaw = from_fbw.channels[ RADIO_YAW ];
if ( yaw > MIN_DX || yaw < -MIN_DX ) {
carrot_x += FLOAT_OF_PPRZ( yaw, 0, -20. );
carrot_x = Min( carrot_x, MAX_DIST_CARROT );
carrot_x = Max( carrot_x, -MAX_DIST_CARROT );
}
pitch = from_fbw.channels[ RADIO_PITCH ];
if ( pitch > MIN_DX || pitch < -MIN_DX ) {
carrot_y += FLOAT_OF_PPRZ( pitch, 0, -20. );
carrot_y = Min( carrot_y,
MAX_DIST_CARROT );
carrot_y = Max( carrot_y, -MAX_DIST_CARROT );
}
vertical_mode = VERTICAL_MODE_AUTO_ALT;
roll = from_fbw.channels[ RADIO_ROLL ];
if ( roll > MIN_DX || roll < -MIN_DX ) {
desired_altitude += FLOAT_OF_PPRZ( roll, 0, -1.0 );
desired_altitude = Max( desired_altitude, MIN_HEIGHT_CARROT + GROUND_ALT );
desired_altitude = Min( desired_altitude, MAX_HEIGHT_CARROT + GROUND_ALT );
}
}
{
float alpha = atan2( estimator_y - carrot_y, estimator_x - carrot_x );
float alpha_carrot = alpha + CARROT / ( -50 * estimator_hspeed_mod );
fly_to_xy( carrot_x + cos( alpha_carrot )*fabs( 50 ),
carrot_y + sin( alpha_carrot )*fabs( 50 ) );
qdr = DegOfRad( M_PI / 2 - alpha_carrot );
{
_Pragma( "loopbounds min 0 max 1" )
while ( qdr < 0 ) qdr += 360;
_Pragma( "loopbounds min 0 max 1" )
while ( qdr >= 360 ) qdr -= 360;
}
}
}
return;
} else
if ( nav_stage == 1 ) {
nav_stage = 1;
NextBlock()
} else { }
} else
if ( nav_block == 4 ) {
nav_block = 4;
if RcEvent1() {
GotoBlock( 5 )
}
if ( nav_stage == 0 ) {
nav_stage = 0;
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 0 ].a;
pre_climb = 0.;
Circle( 0, 150 );
return;
} else
if ( nav_stage == 1 ) {
nav_stage = 1;
NextBlock()
} else {}
} else
if ( nav_block == 5 ) {
nav_block = 5;
if RcEvent1() {
GotoBlock( 1 )
}
if ( nav_stage == 0 ) {
Label( while_7 )
nav_stage = 0;
if ( ! ( TRUE ) ) Goto( endwhile_8 ) else NextStage();
}
else
if ( nav_stage == 1 ) {
nav_stage = 1;
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 1 ].a;
pre_climb = 0.;
Circle( 1, 100 );
if ( Qdr( 0 ) ) NextStage();
return;
} else
if ( nav_stage == 2 ) {
nav_stage = 2;
auto_pitch = FALSE;
nav_pitch = 0.000000;
vertical_mode = VERTICAL_MODE_AUTO_ALT;
desired_altitude = waypoints[ 4 ].a;
pre_climb = 0.;
Circle( 4, 100 );
if ( Qdr( 180 ) ) NextStage();
return;
} else
if ( nav_stage == 3 ) {
nav_stage = 3;
Goto( while_7 )
} else
if ( nav_stage == 4 ) {
Label( endwhile_8 )
nav_stage = 4;
NextBlock()
} else { }
} else { }
//#endif
}
#endif // NAV_C
#endif // FLIGHT_PLAN_H

View File

@ -0,0 +1,55 @@
/* This file has been generated from conf/flight_plans/braunschweig.xml */
/* Please DO NOT EDIT */
#ifndef INFLIGHT_CALIB_H
#define INFLIGHT_CALIB_H
void inflight_calib( bool_t mode_changed )
{
if ( pprz_mode == PPRZ_MODE_AUTO1 ) {
if ( inflight_calib_mode == IF_CALIB_MODE_UP ) {
static int16_t ir_pitch_neutral_init;
if ( mode_changed ) {
ir_pitch_neutral_init = ir_pitch_neutral;
slider1_init = from_fbw.channels[ RADIO_GAIN1 ];
}
ir_pitch_neutral = ParamValInt16( ir_pitch_neutral_init, 60.000000,
from_fbw.channels[ RADIO_GAIN1 ], slider1_init );
slider_1_val = ( float )ir_pitch_neutral;
}
if ( inflight_calib_mode == IF_CALIB_MODE_UP ) {
static int16_t ir_roll_neutral_init;
if ( mode_changed ) {
ir_roll_neutral_init = ir_roll_neutral;
slider2_init = from_fbw.channels[ RADIO_GAIN2 ];
}
ir_roll_neutral = ParamValInt16( ir_roll_neutral_init, -60.000000,
from_fbw.channels[ RADIO_GAIN2 ], slider2_init );
slider_2_val = ( float )ir_roll_neutral;
}
}
if ( pprz_mode == PPRZ_MODE_AUTO2 ) {
if ( inflight_calib_mode == IF_CALIB_MODE_UP ) {
static float course_pgain_init;
if ( mode_changed ) {
course_pgain_init = course_pgain;
slider1_init = from_fbw.channels[ RADIO_GAIN1 ];
}
course_pgain = ParamValFloat( course_pgain_init, 0.100000,
from_fbw.channels[ RADIO_GAIN1 ], slider1_init );
slider_1_val = ( float )course_pgain;
}
if ( inflight_calib_mode == IF_CALIB_MODE_UP ) {
static float max_roll_init;
if ( mode_changed ) {
max_roll_init = max_roll;
slider2_init = from_fbw.channels[ RADIO_GAIN2 ];
}
max_roll = ParamValFloat( max_roll_init, -0.200000,
from_fbw.channels[ RADIO_GAIN2 ], slider2_init );
slider_2_val = ( float )max_roll;
}
}
}
#endif // INFLIGHT_CALIB_H

View File

@ -0,0 +1,348 @@
/* Automatically generated from conf/messages.xml */
/* Please DO NOT EDIT */
#define DL_ID 0
#define DL_BOOT 1
#define DL_CALIB_START 2
#define DL_CALIB_CONTRAST 3
#define DL_TAKEOFF 4
#define DL_RAD_OF_IR 5
#define DL_ATTITUDE 6
#define DL_ADC 7
#define DL_GPS 8
#define DL_NAVIGATION_REF 9
#define DL_NAVIGATION 10
#define DL_PPRZ_MODE 11
#define DL_BAT 12
#define DL_DEBUG 13
#define DL_CLIMB_PID 14
#define DL_DOWNLINK_STATUS 15
#define DL_MODEM_STATUS 16
#define DL_SETTINGS 17
#define DL_DESIRED 18
#define DL_WIND 19
#define DL_IMU 20
#define DL_RAW_IMU 21
#define DL_KALMAN 22
#define DL_MSG_NB 23
#define DOWNLINK_SEND_ID(md5sum){ \
if (MODEM_CHECK_FREE_SPACE(20)) {\
ModemStartMessage(DL_ID) \
{\
int i;\
for(i = 0; i < 16; i++) {\
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(&md5sum[ i ])); \
}\
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_BOOT(version){ \
if (MODEM_CHECK_FREE_SPACE(6)) {\
ModemStartMessage(DL_BOOT) \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(version)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_CALIB_START(){ \
if (MODEM_CHECK_FREE_SPACE(4)) {\
ModemStartMessage(DL_CALIB_START) \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_CALIB_CONTRAST(adc){ \
if (MODEM_CHECK_FREE_SPACE(6)) {\
ModemStartMessage(DL_CALIB_CONTRAST) \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(adc)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_TAKEOFF(cpu_time){ \
if (MODEM_CHECK_FREE_SPACE(6)) {\
ModemStartMessage(DL_TAKEOFF) \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(cpu_time)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_RAD_OF_IR(ir, rad, rad_of_ir, ir_roll_ntrl, ir_pitch_ntrl){ \
if (MODEM_CHECK_FREE_SPACE(20)) {\
ModemStartMessage(DL_RAD_OF_IR) \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(ir)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(rad)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(rad_of_ir)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(ir_roll_ntrl)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(ir_pitch_ntrl)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_ATTITUDE(phi, psi, theta){ \
if (MODEM_CHECK_FREE_SPACE(16)) {\
ModemStartMessage(DL_ATTITUDE) \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(phi)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(psi)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(theta)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_ADC(roll, pitch){ \
if (MODEM_CHECK_FREE_SPACE(8)) {\
ModemStartMessage(DL_ADC) \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(roll)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(pitch)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_GPS(mode, east, north, course, alt, speed, climb, tow){ \
if (MODEM_CHECK_FREE_SPACE(33)) {\
ModemStartMessage(DL_GPS) \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(mode)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(east)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(north)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(course)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(alt)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(speed)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(climb)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(tow)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_NAVIGATION_REF(utm_east, utm_north){ \
if (MODEM_CHECK_FREE_SPACE(12)) {\
ModemStartMessage(DL_NAVIGATION_REF) \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(utm_east)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(utm_north)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_NAVIGATION(cur_block, cur_stage, pos_x, pos_y, desired_course, dist2_wp, course_pgain, dist2_home){ \
if (MODEM_CHECK_FREE_SPACE(30)) {\
ModemStartMessage(DL_NAVIGATION) \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(cur_block)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(cur_stage)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(pos_x)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(pos_y)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(desired_course)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(dist2_wp)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(course_pgain)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(dist2_home)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_PPRZ_MODE(ap_mode, ap_altitude, if_calib_mode, mcu1_status, lls_calib){ \
if (MODEM_CHECK_FREE_SPACE(9)) {\
ModemStartMessage(DL_PPRZ_MODE) \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(ap_mode)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(ap_altitude)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(if_calib_mode)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(mcu1_status)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(lls_calib)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_BAT(voltage, flight_time, low_battery, block_time, stage_time){ \
if (MODEM_CHECK_FREE_SPACE(12)) {\
ModemStartMessage(DL_BAT) \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(voltage)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(flight_time)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(low_battery)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(block_time)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(stage_time)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_DEBUG(i2c_nb_err, i2c_mcu1_nb_err, modem_nb_err, gps_nb_err, ppm_rate){ \
if (MODEM_CHECK_FREE_SPACE(9)) {\
ModemStartMessage(DL_DEBUG) \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(i2c_nb_err)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(i2c_mcu1_nb_err)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(modem_nb_err)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(gps_nb_err)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(ppm_rate)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_CLIMB_PID(gaz, climb, sum_err, p_gain){ \
if (MODEM_CHECK_FREE_SPACE(18)) {\
ModemStartMessage(DL_CLIMB_PID) \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(gaz)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(climb)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(sum_err)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(p_gain)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_DOWNLINK_STATUS(run_time, rx_bytes, rx_msgs, rx_err, rx_bytes_rate, rx_msgs_rate){ \
if (MODEM_CHECK_FREE_SPACE(28)) {\
ModemStartMessage(DL_DOWNLINK_STATUS) \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(run_time)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(rx_bytes)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(rx_msgs)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(rx_err)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(rx_bytes_rate)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(rx_msgs_rate)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_MODEM_STATUS(detected, valim, cd, nb_byte, nb_msg, nb_err){ \
if (MODEM_CHECK_FREE_SPACE(22)) {\
ModemStartMessage(DL_MODEM_STATUS) \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(detected)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(valim)); \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(cd)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(nb_byte)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(nb_msg)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(nb_err)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_SETTINGS(mode, slider_1_val, slider_2_val){ \
if (MODEM_CHECK_FREE_SPACE(13)) {\
ModemStartMessage(DL_SETTINGS) \
MODEM_PUT_1_BYTE_BY_ADDR((uint8_t*)(mode)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(slider_1_val)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(slider_2_val)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_DESIRED(roll, pitch, desired_x, desired_y, desired_altitude){ \
if (MODEM_CHECK_FREE_SPACE(24)) {\
ModemStartMessage(DL_DESIRED) \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(roll)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(pitch)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(desired_x)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(desired_y)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(desired_altitude)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_WIND(dir, speed, mean_as, nb_sample, stddev){ \
if (MODEM_CHECK_FREE_SPACE(22)) {\
ModemStartMessage(DL_WIND) \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(dir)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(speed)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(mean_as)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(nb_sample)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(stddev)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_IMU(gyro_x, gyro_y, gyro_z, accel_x, accel_y, accel_z){ \
if (MODEM_CHECK_FREE_SPACE(28)) {\
ModemStartMessage(DL_IMU) \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(gyro_x)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(gyro_y)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(gyro_z)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(accel_x)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(accel_y)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(accel_z)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_RAW_IMU(raw_gx, raw_gy, raw_gz, raw_ax, raw_ay, raw_az){ \
if (MODEM_CHECK_FREE_SPACE(16)) {\
ModemStartMessage(DL_RAW_IMU) \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(raw_gx)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(raw_gy)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(raw_gz)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(raw_ax)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(raw_ay)); \
MODEM_PUT_2_BYTE_BY_ADDR((uint8_t*)(raw_az)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define DOWNLINK_SEND_KALMAN(phi, phi_dot, phi_bias, theta, theta_dot, theta_bias){ \
if (MODEM_CHECK_FREE_SPACE(28)) {\
ModemStartMessage(DL_KALMAN) \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(phi)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(phi_dot)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(phi_bias)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(theta)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(theta_dot)); \
MODEM_PUT_4_BYTE_BY_ADDR((uint8_t*)(theta_bias)); \
ModemEndMessage() \
} \
else \
modem_nb_ovrn++; \
}
#define MESSAGES_MD5SUM "\120\162\150\107\166\250\102\343\211\352\231\260\061\055\031\274"
// Load: intant(buffer) 16(37) 8(37) 13(37) 24(61) 0(61) 16(61) 8(61) 13(61) 12(49) 9(58) 16(58) 8(58) 13(58) 24(70) 0(61) 16(61) 8(61) 13(61) 18(55) 0(55) 16(55) 8(55) 13(55) 24(61) 0(61) 16(61) 8(61) 13(61) 12(49) 9(58) 16(58) 8(58) 13(58) 24(70) 0(61) 16(61) 8(61) 13(61) 18(55) 0(55) 16(55) 8(55) 13(55) 24(61) 0(61) 16(61) 8(61) 13(61) 12(49) 12(61) 16(61) 8(61) 13(61) 24(73) 0(61) 16(61) 8(61) 13(61) 18(55) 9(64) 16(64) 8(64) 13(64) 24(70) 0(61) 16(61) 8(61) 13(61) 12(49) 0(49) 16(49) 8(49) 13(49) 24(61) 0(61) 16(61) 8(61) 13(61) 18(55) 9(64) 16(64) 8(64) 13(64) 24(70) 0(61) 16(61) 8(61) 13(61) 12(49) 0(49) 16(49) 8(49) 13(49) 24(61) 0(61) 16(61) 8(61) 13(61) 18(55) 0(55) 16(55) 8(55) 13(55) 24(61) 0(61) 16(61) 8(61) 13(61) 12(49) 9(58) 16(58) 8(58) 13(58) 24(70) 0(61) 16(61) 8(61) 13(61) 18(55) 0(55) 16(55) 8(55) 13(55) 24(61) 0(61) 16(61) 8(61) 13(61) 12(49) 9(58) 16(58) 8(58) 13(58) 24(70) 0(61) 16(61) 8(61) 13(61) 18(55) 0(55) 16(55) 8(55) 13(55) 24(61) 0(61) 16(61) 8(61) 13(61) 12(49) 12(61) 16(61) 8(61) 13(61) 24(73) 0(61) 16(61) 8(61) 13(61) 18(55) 9(64) 16(64) 8(64) 13(64) 24(70) 0(61) 16(61) 8(61) 13(61) 12(49) 0(49) 16(49) 8(49) 13(49) 24(61) 0(61) 16(61) 8(61) 13(61) 18(55) 9(64) 16(64) 8(64) 13(64) 24(70) 0(61) 16(61) 8(61) 13(61) 12(49) 0(49) 16(49) 8(49) 13(49) 24(61) 0(61) 16(61) 8(61) 13(61) 18(55) 0(55) 16(55) 8(55) 13(55) 24(61) 0(61) 16(61) 8(61) 13(61) 12(49) 9(58) 16(58) 8(58) 13(58) 24(70) 0(61) 16(61) 8(61) 13(61) 18(55) 0(55) 16(55) 8(55) 13(55) 24(61) 0(61) 16(61) 8(61) 13(61) 12(49) 9(58) 16(58) 8(58) 13(58) 24(70) 0(61) 16(61) 8(61) 13(61) 18(55) 0(55) 16(55) 8(55) 13(55) 24(61) 0(61) 16(61) 8(61) 13(61) 0(37) 0(37)
/*#define PeriodicSend() { // 10Hz // \
static uint8_t i;\
i++; if (i == 250) i = 0;\
if (i % 5 == 0) PERIODIC_SEND_ATTITUDE();\
if (i % 5 == 1) PERIODIC_SEND_ADC();\
if (i % 5 == 2) PERIODIC_SEND_SETTINGS();\
if (i % 10 == 3) PERIODIC_SEND_DESIRED();\
if (i % 20 == 8) PERIODIC_SEND_BAT();\
if (i % 20 == 18) PERIODIC_SEND_CLIMB_PID();\
if (i % 50 == 9) PERIODIC_SEND_PPRZ_MODE();\
if (i % 50 == 29) PERIODIC_SEND_DEBUG();\
if (i % 100 == 49) PERIODIC_SEND_NAVIGATION_REF();\
}*/

View File

@ -0,0 +1,99 @@
/* This file has been generated from conf/radios/mc3030.xml */
/* Please DO NOT EDIT */
#ifndef RADIO_H
#define RADIO_H
#define RADIO_NAME "mc3030"
#define RADIO_CTL_NB 9
#define RADIO_CTL_D 0
#define RADIO_THROTTLE RADIO_CTL_D
#define RADIO_CTL_C 1
#define RADIO_ROLL RADIO_CTL_C
#define RADIO_CTL_B 2
#define RADIO_PITCH RADIO_CTL_B
#define RADIO_CTL_A 3
#define RADIO_YAW RADIO_CTL_A
#define RADIO_CTL_G 4
#define RADIO_MODE RADIO_CTL_G
#define RADIO_CTL_E 5
#define RADIO_GAIN1 RADIO_CTL_E
#define RADIO_CTL_F 6
#define RADIO_GAIN2 RADIO_CTL_F
#define RADIO_CTL_H 7
#define RADIO_LLS RADIO_CTL_H
#define RADIO_CTL_I 8
#define RADIO_CALIB RADIO_CTL_I
#define PPM_MIN_PULSE_WIDTH 850ul*CLOCK
#define PPM_MAX_PULSE_WIDTH 2100ul*CLOCK
#define PPM_SYNC_PULSE (uint8_t)(((uint32_t)(5000ul*CLOCK))/1024ul)
#define LastRadioFromPpm() {\
static uint8_t avg_cpt = 0; /* Counter for averaging */\
int16_t tmp_radio;\
tmp_radio = ppm_pulses[ RADIO_THROTTLE ] - (CLOCK*1000);\
last_radio[ RADIO_THROTTLE ] = tmp_radio * (MAX_PPRZ / 1 / (float)(CLOCK*(2200-1000)));\
if (last_radio[ RADIO_THROTTLE ] > MAX_PPRZ) last_radio[ RADIO_THROTTLE ] = MAX_PPRZ;\
else if (last_radio[ RADIO_THROTTLE ] < 0) last_radio[ RADIO_THROTTLE ] = 0; \
\
tmp_radio = ppm_pulses[ RADIO_ROLL ] - (CLOCK*1600);\
last_radio[ RADIO_ROLL ] = tmp_radio * (tmp_radio >=0 ? (MAX_PPRZ/1/(float)(CLOCK*(2200-1600))) : (MIN_PPRZ/1/(float)(CLOCK*(1000-1600))));\
if (last_radio[ RADIO_ROLL ] > MAX_PPRZ) last_radio[ RADIO_ROLL ] = MAX_PPRZ;\
else if (last_radio[ RADIO_ROLL ] < MIN_PPRZ) last_radio[ RADIO_ROLL ] = MIN_PPRZ; \
\
tmp_radio = ppm_pulses[ RADIO_PITCH ] - (CLOCK*1600);\
last_radio[ RADIO_PITCH ] = tmp_radio * (tmp_radio >=0 ? (MAX_PPRZ/1/(float)(CLOCK*(2200-1600))) : (MIN_PPRZ/1/(float)(CLOCK*(1000-1600))));\
if (last_radio[ RADIO_PITCH ] > MAX_PPRZ) last_radio[ RADIO_PITCH ] = MAX_PPRZ;\
else if (last_radio[ RADIO_PITCH ] < MIN_PPRZ) last_radio[ RADIO_PITCH ] = MIN_PPRZ; \
\
tmp_radio = ppm_pulses[ RADIO_YAW ] - (CLOCK*1600);\
last_radio[ RADIO_YAW ] = tmp_radio * (tmp_radio >=0 ? (MAX_PPRZ/1/(float)(CLOCK*(2200-1600))) : (MIN_PPRZ/1/(float)(CLOCK*(1000-1600))));\
if (last_radio[ RADIO_YAW ] > MAX_PPRZ) last_radio[ RADIO_YAW ] = MAX_PPRZ;\
else if (last_radio[ RADIO_YAW ] < MIN_PPRZ) last_radio[ RADIO_YAW ] = MIN_PPRZ; \
\
tmp_radio = ppm_pulses[ RADIO_MODE ] - (CLOCK*1600);\
avg_last_radio[ RADIO_MODE ] += tmp_radio * (tmp_radio >=0 ? (MAX_PPRZ/AVERAGING_PERIOD/(float)(CLOCK*(2200-1600))) : (MIN_PPRZ/AVERAGING_PERIOD/(float)(CLOCK*(1000-1600))));\
tmp_radio = ppm_pulses[ RADIO_GAIN1 ] - (CLOCK*1600);\
avg_last_radio[ RADIO_GAIN1 ] += tmp_radio * (tmp_radio >=0 ? (MAX_PPRZ/AVERAGING_PERIOD/(float)(CLOCK*(2200-1600))) : (MIN_PPRZ/AVERAGING_PERIOD/(float)(CLOCK*(1000-1600))));\
tmp_radio = ppm_pulses[ RADIO_GAIN2 ] - (CLOCK*1600);\
avg_last_radio[ RADIO_GAIN2 ] += tmp_radio * (tmp_radio >=0 ? (MAX_PPRZ/AVERAGING_PERIOD/(float)(CLOCK*(2200-1600))) : (MIN_PPRZ/AVERAGING_PERIOD/(float)(CLOCK*(1000-1600))));\
tmp_radio = ppm_pulses[ RADIO_LLS ] - (CLOCK*1600);\
avg_last_radio[ RADIO_LLS ] += tmp_radio * (tmp_radio >=0 ? (MAX_PPRZ/AVERAGING_PERIOD/(float)(CLOCK*(2200-1600))) : (MIN_PPRZ/AVERAGING_PERIOD/(float)(CLOCK*(1000-1600))));\
tmp_radio = ppm_pulses[ RADIO_CALIB ] - (CLOCK*1600);\
avg_last_radio[ RADIO_CALIB ] += tmp_radio * (tmp_radio >=0 ? (MAX_PPRZ/AVERAGING_PERIOD/(float)(CLOCK*(2200-1600))) : (MIN_PPRZ/AVERAGING_PERIOD/(float)(CLOCK*(1000-1600))));\
avg_cpt++;\
if (avg_cpt == AVERAGING_PERIOD) {\
avg_cpt = 0;\
last_radio[ RADIO_MODE ] = avg_last_radio[ RADIO_MODE ];\
avg_last_radio[ RADIO_MODE ] = 0;\
if (last_radio[ RADIO_MODE ] > MAX_PPRZ) last_radio[ RADIO_MODE ] = MAX_PPRZ;\
else if (last_radio[ RADIO_MODE ] < MIN_PPRZ) last_radio[ RADIO_MODE ] = MIN_PPRZ; \
\
last_radio[ RADIO_GAIN1 ] = avg_last_radio[ RADIO_GAIN1 ];\
avg_last_radio[ RADIO_GAIN1 ] = 0;\
if (last_radio[ RADIO_GAIN1 ] > MAX_PPRZ) last_radio[ RADIO_GAIN1 ] = MAX_PPRZ;\
else if (last_radio[ RADIO_GAIN1 ] < MIN_PPRZ) last_radio[ RADIO_GAIN1 ] = MIN_PPRZ; \
\
last_radio[ RADIO_GAIN2 ] = avg_last_radio[ RADIO_GAIN2 ];\
avg_last_radio[ RADIO_GAIN2 ] = 0;\
if (last_radio[ RADIO_GAIN2 ] > MAX_PPRZ) last_radio[ RADIO_GAIN2 ] = MAX_PPRZ;\
else if (last_radio[ RADIO_GAIN2 ] < MIN_PPRZ) last_radio[ RADIO_GAIN2 ] = MIN_PPRZ; \
\
last_radio[ RADIO_LLS ] = avg_last_radio[ RADIO_LLS ];\
avg_last_radio[ RADIO_LLS ] = 0;\
if (last_radio[ RADIO_LLS ] > MAX_PPRZ) last_radio[ RADIO_LLS ] = MAX_PPRZ;\
else if (last_radio[ RADIO_LLS ] < MIN_PPRZ) last_radio[ RADIO_LLS ] = MIN_PPRZ; \
\
last_radio[ RADIO_CALIB ] = avg_last_radio[ RADIO_CALIB ];\
avg_last_radio[ RADIO_CALIB ] = 0;\
if (last_radio[ RADIO_CALIB ] > MAX_PPRZ) last_radio[ RADIO_CALIB ] = MAX_PPRZ;\
else if (last_radio[ RADIO_CALIB ] < MIN_PPRZ) last_radio[ RADIO_CALIB ] = MIN_PPRZ; \
\
last_radio_contains_avg_channels = TRUE;\
}\
}
#endif // RADIO_H

View File

@ -0,0 +1,72 @@
/* Generated from conf/ubx.xml */
/* Please DO NOT EDIT */
#define UBX_SYNC1 0xB5
#define UBX_SYNC2 0x62
#define UBX_NAV_ID 0x01
#define UBX_NAV_POSLLH_ID 0x02
#define UBX_NAV_POSLLH_ITOW(_ubx_payload) (*((uint32_t*)(_ubx_payload+0)))
#define UBX_NAV_POSLLH_LON(_ubx_payload) (*((int32_t*)(_ubx_payload+4)))
#define UBX_NAV_POSLLH_LAT(_ubx_payload) (*((int32_t*)(_ubx_payload+8)))
#define UBX_NAV_POSLLH_HEIGHT(_ubx_payload) (*((int32_t*)(_ubx_payload+12)))
#define UBX_NAV_POSLLH_HMSL(_ubx_payload) (*((int32_t*)(_ubx_payload+16)))
#define UBX_NAV_POSLLH_Hacc(_ubx_payload) (*((uint32_t*)(_ubx_payload+20)))
#define UBX_NAV_POSLLH_Vacc(_ubx_payload) (*((uint32_t*)(_ubx_payload+24)))
#define UBX_NAV_POSUTM_ID 0x08
#define UBX_NAV_POSUTM_ITOW(_ubx_payload) (*((uint32_t*)(_ubx_payload+0)))
#define UBX_NAV_POSUTM_EAST(_ubx_payload) (*((int32_t*)(_ubx_payload+4)))
#define UBX_NAV_POSUTM_NORTH(_ubx_payload) (*((int32_t*)(_ubx_payload+8)))
#define UBX_NAV_POSUTM_ALT(_ubx_payload) (*((int32_t*)(_ubx_payload+12)))
#define UBX_NAV_POSUTM_ZONE(_ubx_payload) (*((int8_t*)(_ubx_payload+16)))
#define UBX_NAV_POSUTM_HEM(_ubx_payload) (*((int8_t*)(_ubx_payload+17)))
#define UBX_NAV_STATUS_ID 0x03
#define UBX_NAV_STATUS_ITOW(_ubx_payload) (*((uint32_t*)(_ubx_payload+0)))
#define UBX_NAV_STATUS_GPSfix(_ubx_payload) (*((uint8_t*)(_ubx_payload+4)))
#define UBX_NAV_STATUS_Flags(_ubx_payload) (*((uint8_t*)(_ubx_payload+5)))
#define UBX_NAV_STATUS_DiffS(_ubx_payload) (*((uint8_t*)(_ubx_payload+6)))
#define UBX_NAV_STATUS_res(_ubx_payload) (*((uint8_t*)(_ubx_payload+7)))
#define UBX_NAV_STATUS_TTFF(_ubx_payload) (*((uint32_t*)(_ubx_payload+8)))
#define UBX_NAV_STATUS_MSSS(_ubx_payload) (*((uint32_t*)(_ubx_payload+12)))
#define UBX_NAV_VELNED_ID 0x12
#define UBX_NAV_VELNED_ITOW(_ubx_payload) (*((uint32_t*)(_ubx_payload+0)))
#define UBX_NAV_VELNED_VEL_N(_ubx_payload) (*((int32_t*)(_ubx_payload+4)))
#define UBX_NAV_VELNED_VEL_E(_ubx_payload) (*((int32_t*)(_ubx_payload+8)))
#define UBX_NAV_VELNED_VEL_D(_ubx_payload) (*((int32_t*)(_ubx_payload+12)))
#define UBX_NAV_VELNED_Speed(_ubx_payload) (*((uint32_t*)(_ubx_payload+16)))
#define UBX_NAV_VELNED_GSpeed(_ubx_payload) (*((uint32_t*)(_ubx_payload+20)))
#define UBX_NAV_VELNED_Heading(_ubx_payload) (*((int32_t*)(_ubx_payload+24)))
#define UBX_NAV_VELNED_SAcc(_ubx_payload) (*((uint32_t*)(_ubx_payload+28)))
#define UBX_NAV_VELNED_CAcc(_ubx_payload) (*((uint32_t*)(_ubx_payload+32)))
#define UBX_NAV_SVINFO_ID 0x30
#define UBX_NAV_SVINFO_ITOW(_ubx_payload) (*((uint32_t*)(_ubx_payload+0)))
#define UBX_NAV_SVINFO_NCH(_ubx_payload) (*((uint8_t*)(_ubx_payload+4)))
#define UBX_NAV_SVINFO_RES1(_ubx_payload) (*((uint8_t*)(_ubx_payload+5)))
#define UBX_NAV_SVINFO_RES2(_ubx_payload) (*((uint8_t*)(_ubx_payload+6)))
#define UBX_NAV_SVINFO_chn(_ubx_payload,_ubx_block) (*((uint8_t*)(_ubx_payload+7+12*_ubx_block)))
#define UBX_NAV_SVINFO_SVID(_ubx_payload,_ubx_block) (*((uint8_t*)(_ubx_payload+8+12*_ubx_block)))
#define UBX_NAV_SVINFO_Flags(_ubx_payload,_ubx_block) (*((uint8_t*)(_ubx_payload+9+12*_ubx_block)))
#define UBX_NAV_SVINFO_QI(_ubx_payload,_ubx_block) (*((int8_t*)(_ubx_payload+10+12*_ubx_block)))
#define UBX_NAV_SVINFO_CNO(_ubx_payload,_ubx_block) (*((uint8_t*)(_ubx_payload+11+12*_ubx_block)))
#define UBX_NAV_SVINFO_Elev(_ubx_payload,_ubx_block) (*((int8_t*)(_ubx_payload+12+12*_ubx_block)))
#define UBX_NAV_SVINFO_Azim(_ubx_payload,_ubx_block) (*((int16_t*)(_ubx_payload+13+12*_ubx_block)))
#define UBX_NAV_SVINFO_PRRes(_ubx_payload,_ubx_block) (*((int32_t*)(_ubx_payload+15+12*_ubx_block)))
#define UBX_USR_ID 0x40
#define UBX_USR_IRSIM_ID 0x01
#define UBX_USR_IRSIM_ROLL(_ubx_payload) (*((int16_t*)(_ubx_payload+0)))
#define UBX_USR_IRSIM_PITCH(_ubx_payload) (*((int16_t*)(_ubx_payload+2)))
#define UBX_USR_SERVOS_ID 0x02
#define UBX_USR_SERVOS_N(_ubx_payload) (*((int8_t*)(_ubx_payload+0)))
#define UBX_USR_SERVOS_WIDTH(_ubx_payload,_ubx_block) (*((uint16_t*)(_ubx_payload+1+2*_ubx_block)))
#define UBX_USR_PPM_ID 0x03
#define UBX_USR_PPM_N(_ubx_payload) (*((int8_t*)(_ubx_payload+0)))
#define UBX_USR_PPM_WIDTH(_ubx_payload,_ubx_block) (*((uint16_t*)(_ubx_payload+1+2*_ubx_block)))