/* * Copyright © 2009 Keith Packard * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _AOVIEW_H_ #define _AOVIEW_H_ #define _GNU_SOURCE #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include #include #include #include #include #include #include #include #include "cc.h" #include #include #include struct aostate { struct cc_telem data; /* derived data */ struct cc_telem prev_data; double report_time; gboolean ascent; /* going up? */ int ground_altitude; int height; double speed; double acceleration; double battery; double temperature; double main_sense; double drogue_sense; double baro_speed; int max_height; double max_acceleration; double max_speed; struct cc_gps gps; struct cc_gps_tracking gps_tracking; int gps_valid; double pad_lat; double pad_lon; double pad_alt; double pad_lat_total; double pad_lon_total; double pad_alt_total; int npad; int prev_npad; double distance; double bearing; int gps_height; int speak_tick; int speak_altitude; }; extern struct aostate aostate; /* GPS is 'stable' when we've seen at least this many samples */ #define MIN_PAD_SAMPLES 10 void aoview_monitor_disconnect(void); gboolean aoview_monitor_connect(char *tty); gboolean aoview_monitor_parse(const char *line); void aoview_monitor_set_channel(int channel); void aoview_monitor_reset(void); struct aoview_serial * aoview_serial_open(const char *tty); void aoview_serial_close(struct aoview_serial *serial); typedef void (*aoview_serial_callback)(gpointer user_data, struct aoview_serial *serial, gint revents); void aoview_serial_set_callback(struct aoview_serial *serial, aoview_serial_callback func); void aoview_serial_printf(struct aoview_serial *serial, char *format, ...); int aoview_serial_read(struct aoview_serial *serial, char *buf, int len); int aoview_serial_getc(struct aoview_serial *serial); void aoview_dev_dialog_init(GladeXML *xml); void aoview_state_notify(struct cc_telem *data); void aoview_state_new(void); void aoview_state_init(GladeXML *xml); int16_t aoview_pres_to_altitude(int16_t pres); int16_t aoview_altitude_to_pres(int16_t alt); char * aoview_fullname (char *dir, char *file); char * aoview_basename(char *file); GtkTreeViewColumn * aoview_add_plain_text_column (GtkTreeView *view, const gchar *title, gint model_column, gint width); int aoview_mkdir(char *dir); void aoview_log_init(GladeXML *xml); void aoview_log_set_serial(int serial); int aoview_log_get_serial(void); void aoview_log_printf(char *format, ...); void aoview_log_new(void); void aoview_table_start(void); void aoview_table_add_row(int column, char *label, char *format, ...); void aoview_table_finish(void); void aoview_table_init(GladeXML *xml); void aoview_table_clear(void); struct aoview_file; extern char *aoview_file_dir; void aoview_file_finish(struct aoview_file *file); gboolean aoview_file_start(struct aoview_file *file); const char * aoview_file_name(struct aoview_file *file); void aoview_file_set_serial(struct aoview_file *file, int serial); int aoview_file_get_serial(struct aoview_file *file); void aoview_file_printf(struct aoview_file *file, char *format, ...); void aoview_file_vprintf(struct aoview_file *file, char *format, va_list ap); struct aoview_file * aoview_file_new(char *ext); void aoview_file_destroy(struct aoview_file *file); void aoview_file_init(GladeXML *xml); /* aoview_eeprom.c */ gboolean aoview_eeprom_save(const char *device); void aoview_eeprom_init(GladeXML *xml); /* aoview_voice.c */ void aoview_voice_open(void); void aoview_voice_close(void); void aoview_voice_speak(char *format, ...); /* aoview_label.c */ void aoview_label_init(GladeXML *xml); void aoview_label_show(struct aostate *state); /* aoview_flite.c */ FILE * aoview_flite_start(void); void aoview_flite_stop(void); /* aoview_main.c */ extern char *aoview_tty; /* aoview_channel.c */ int aoview_channel_current(void); void aoview_channel_init(GladeXML *xml); #endif /* _AOVIEW_H_ */