00001 #ifndef ENGINE_GPS_H_ 00002 #define ENGINE_GPS_H_ 00003 00004 #include <nmeap.h> 00005 #include <openssl/bio.h> 00006 00007 typedef void (*engine_gps_cb_t)(void* user_data, unsigned long time_utc, double longitude, double latitude, double altitude, double speed, int quality); 00008 00009 typedef struct 00010 { 00011 char* device; 00012 engine_gps_cb_t location_callback; 00013 nmeap_context_t nmea; 00014 nmeap_gga_t gga; 00015 BIO *bio; 00016 void* engine; 00017 BIO* logger; 00018 } engine_gps_t; 00019 00020 engine_gps_t* engine_gps_new(); 00021 void engine_gps_delete(engine_gps_t* engine_gps); 00022 00023 void engine_gps_connect(engine_gps_t* engine_gps); 00024 void engine_gps_disconnect(engine_gps_t* engine_gps); 00025 00026 void engine_gps_set_device(engine_gps_t* engine_gps, char* device); 00027 void engine_gps_set_logger(engine_gps_t* engine_gps, BIO* logger); 00028 00029 void engine_gps_process(engine_gps_t* engine_gps); 00030 00031 void engine_gps_add_location_callback(engine_gps_t* engine_gps, engine_gps_cb_t callback); 00032 00033 #endif // ENGINE_GPS_H_