X-Git-Url: http://git.maemo.org/git/?p=mardrone;a=blobdiff_plain;f=mardrone%2FARDrone_SDK_Version_1_8_20110726%2FExamples%2FLinux%2FNavigation%2FSources%2Fihm%2Fihm.h;fp=mardrone%2FARDrone_SDK_Version_1_8_20110726%2FExamples%2FLinux%2FNavigation%2FSources%2Fihm%2Fihm.h;h=42e7583ad70c94f4d3f307029a60660eadcfbd30;hp=0000000000000000000000000000000000000000;hb=9ec9bc13b75d30bc45535c54a652934debfcea92;hpb=ae0a3c2dc0898400aca0dd6b439c5db8044db7b2 diff --git a/mardrone/ARDrone_SDK_Version_1_8_20110726/Examples/Linux/Navigation/Sources/ihm/ihm.h b/mardrone/ARDrone_SDK_Version_1_8_20110726/Examples/Linux/Navigation/Sources/ihm/ihm.h new file mode 100644 index 0000000..42e7583 --- /dev/null +++ b/mardrone/ARDrone_SDK_Version_1_8_20110726/Examples/Linux/Navigation/Sources/ihm/ihm.h @@ -0,0 +1,235 @@ + +#ifndef IHM_H +#define IHM_H + +#include +#include + +#include +#include +#include + +#include +#include + +// shared data allocation management +#ifdef KIHM_ALLOC_SHARED_DATA // defined only in ihm.c +#define KIHM_EXTERN +#else +#define KIHM_EXTERN extern +#endif + + +/* general declarations */ +/* -------------------- */ +extern int32_t ihm_val_idx; +KIHM_EXTERN int ihm_freeze_curves; +KIHM_EXTERN double ihm_psi; +KIHM_EXTERN double ihm_dir; + +/* constants */ +#define KIHM_PI 3.14159 +#define KIHM_ZERO_F 0.0 +#define KIHM_MIL_F 1000.0 + +/* ctrl states */ +#define MAX_STR_CTRL_STATE 256 + +// graphic contexts +enum { + KIHM_GC_RED, KIHM_GC_GREEN, KIHM_GC_BLUE, KIHM_GC_LIGHTRED, KIHM_GC_LIGHTBLUE, KIHM_GC_GREY, KIHM_GC_LIGHTGREY, KIHM_GC_DASHLINE, KIHM_GC_BLACK, KIHM_GC_WHITE, KIHM_NB_GC +}; +KIHM_EXTERN GdkGC *ihm_GC[KIHM_NB_GC]; + + + +/* declarations for attitude display */ +/* --------------------------------- */ +enum { + KIHM_DA_ATT_PITCH, + KIHM_DA_ATT_ROLL, + KIHM_DA_ATT_YAW, + KIHM_DA_ATT_DIR, + KIHM_NB_DA_ATT +}; +KIHM_EXTERN GtkWidget *ihm_DA_att[KIHM_NB_DA_ATT]; +KIHM_EXTERN PangoLayout *ihm_PL_DApsi, *ihm_PL_DAtheta, *ihm_PL_DAphi, *ihm_PL_DAdir; + +enum { + ARDRONE_GLOBAL_STATE, + ARDRONE_CONTROL_STATE, + ARDRONE_VISION_STATE, + NB_ARDRONE_STATES +}; + +/* declarations for altitude display */ +/* --------------------------------- */ +enum { + KIHM_AKP, + KIHM_AKI, + KIHM_AKD, + KIHM_ATD, + NB_GAINS_ALT +}; + +/* declarations for fix point display */ +/* ---------------------------------- */ +enum { + KIHM_FPKP, + KIHM_FPKI, + NB_GAINS_FP +}; + +/* declarations for cocarde control display */ +/* ---------------------------------------- */ +enum { + KIHM_ROUNDELKP, + KIHM_ROUNDELKI, + NB_GAINS_ROUNDEL +}; + + +/* declarations for control gains */ +/* ------------------------------ */ +#define SEND_PID_GAIN +#define NB_GAINS_W 3 +#define NB_GAINS_EA 2 +#define NB_GAINS (NB_GAINS_W + NB_GAINS_EA) +#define NB_ALL_GAINS (NB_GAINS + NB_GAINS_ALT + NB_GAINS_FP + NB_GAINS_ROUNDEL) + +/* Stephane : number of samples to display in detection history */ +#define NB_DETECTION_SAMPLES 30 + + +/* declarations for window size */ +/* ---------------------------- */ +#define KIHM_DAREA_ANGLE_X_SIZE 230 +#define KIHM_DAREA_ANGLE_Y_SIZE 100 +#define KIHM_DAREA_CURVE_X_SIZE 700 +#define KIHM_DAREA_CURVE_Y_SIZE 170 +#define KIHM_DAREA_CURVE_Y_OFFSET 8 // = half the height of a graduation label + +#define KIHM_N_PT2PLOT KIHM_DAREA_CURVE_X_SIZE + +#define KIHM_BORDER 10 +/* #define KIHM_WX 3*KIHM_DAREA_ANGLE_X_SIZE+2*KIHM_BORDER+50 */ +/* #define KIHM_WY KIHM_DAREA_ANGLE_Y_SIZE+2*KIHM_DAREA_CURVE_Y_SIZE+2*KIHM_BORDER */ + + +#define GYRO_WIN_TITLE "Angular rates (gyrometers measures) in deg/s" +#define ACC_WIN_TITLE "Accelerations (accelerometers measures) in g" +#define THETA_WIN_TITLE "Theta (pitch) in deg" +#define PHI_WIN_TITLE "Phi (roll) in deg" +#define IMOT_WIN_TITLE "Imot in ADC LSB" +#define VBAT_WIN_TITLE "Vbat in V" +#define PWM_WIN_TITLE "PWM (0 < ratio < 255)" +#define CURRENT_WIN_TITLE "Motors currents in mA" +#define VX_WIN_TITLE "VX : speed in mm/s" +#define VY_WIN_TITLE "VY : speed in mm/s" +#define VZ_WIN_TITLE "VZ : speed in mm/s" +#define ALTITUDE_WIN_TITLE "Altitude : Reference and measure in mm" + +#define NOT_DEF_VAL 0xdeadbeaf +#define HOVER_VAL 0xdecafef + + +extern GtkWidget *entry_PID[NB_ALL_GAINS], *entry_MiscVar[NB_MISC_VARS]; + + +/* declarations for curves */ +/* ----------------------- */ +enum { + KIHM_CURVE_ACC = 0, + KIHM_CURVE_GYRO, + KIHM_CURVE_THETA, + KIHM_CURVE_PHI, + KIHM_CURVE_VBAT, + KIHM_CURVE_PWM, + KIHM_CURVE_ALTITUDE, + KIHM_CURVE_VX, + KIHM_CURVE_VY, + KIHM_CURVE_VZ, + KIHM_CURVE_CURRENT, + KIHM_NB_CURVES +}; + +/* dock status of a curve */ +/* -----------------------*/ +enum { + CURVE_DOCKED , + CURVE_UNDOCKED , + WINDOW_VISIBLE , + WINDOW_HIDE, + WINDOW_OPENED, + WINDOW_CLOSED +}; + +typedef struct _SIHM_ScaleAttributes +{ + double phys_range, phys_orig, phys_min, phys_max, phys_step; + int y_orig, y_min, y_max; + int nb_grad; + char grad_format[10]; + GtkWidget *vBox_Grad; +} +SIHM_ScaleAttributes; + +typedef struct _SIHM_CurveAttributes +{ + char title[128], ctrl_lbl[32]; + int show; + char **legend; + GdkGC **GC; + int nb_val; + double **tval; + int nb_range, range; + SIHM_ScaleAttributes *tSA; + char val_format[10]; + GtkWidget *top, *DA, **lblVal, **label_Legend; + + GtkWidget *PrivateWin, *PrivateVBox; + int win_view; +} +SIHM_CurveAttributes; + +typedef struct _ihm_time { + double time; + double time_init; + double time_last; + int sec; + int min; + double deltaT; +} ihm_time_t; + +KIHM_EXTERN SIHM_CurveAttributes ihm_CA[KIHM_NB_CURVES]; + +/* declarations for references */ +/* --------------------------- */ +extern int tab_r[4]; // Pitch, roll, yaw, gaz references +KIHM_EXTERN GtkWidget *ihm_label_RCref; + +/*Stephane*/ +KIHM_EXTERN GtkWidget *nbDetectedTags_label; +KIHM_EXTERN GtkWidget *activeDetection_label; + +extern char label_mykonos_state_value[32]; +extern char label_ctrl_state_value[MAX_STR_CTRL_STATE]; +extern char label_detection_state_value[32]; + +extern int32_t ihm_start; + +void ihm_set_start_button_state( int32_t start ); + +void ihm_initCurves(GtkWidget *widget, int curve); +void ihm_destroyCurves(void); + +void ihm_update_time( void ); +void ihm_init_time( void ); + +PROTO_THREAD_ROUTINE(ihm , data); + +extern vp_os_mutex_t ihm_lock; +extern int ihm_is_initialized; + + +#endif // IHM_H