Add wasm tacle-bench targets
This commit is contained in:
116
targets/wasm-tacle/parallel/PapaBench/sw/var/include/airframe.h
Normal file
116
targets/wasm-tacle/parallel/PapaBench/sw/var/include/airframe.h
Normal 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
|
||||
@ -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
|
||||
@ -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
|
||||
348
targets/wasm-tacle/parallel/PapaBench/sw/var/include/messages.h
Normal file
348
targets/wasm-tacle/parallel/PapaBench/sw/var/include/messages.h
Normal 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();\
|
||||
}*/
|
||||
99
targets/wasm-tacle/parallel/PapaBench/sw/var/include/radio.h
Normal file
99
targets/wasm-tacle/parallel/PapaBench/sw/var/include/radio.h
Normal 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
|
||||
@ -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)))
|
||||
Reference in New Issue
Block a user