diff options
Diffstat (limited to 'gps/gps.cpp')
-rw-r--r-- | gps/gps.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gps/gps.cpp b/gps/gps.cpp new file mode 100644 index 0000000..86e3234 --- /dev/null +++ b/gps/gps.cpp @@ -0,0 +1,37 @@ +#include <hardware_legacy/gps.h> +#include <cutils/properties.h> + +#define LOG_TAG "libhardware_legacy" +#include <utils/Log.h> +#include "qemu.h" + +static const GpsInterface* sGpsInterface = NULL; + +static void +gps_find_hardware( void ) +{ +#ifdef HAVE_QEMU_GPS_HARDWARE + if (qemu_check()) { + sGpsInterface = gps_get_qemu_interface(); + if (sGpsInterface) { + LOGD("using QEMU GPS Hardware emulation\n"); + return; + } + } +#endif + +#ifdef HAVE_GPS_HARDWARE + sGpsInterface = gps_get_hardware_interface(); +#endif + if (!sGpsInterface) + LOGD("no GPS hardware on this device\n"); +} + +const GpsInterface* +gps_get_interface() +{ + if (sGpsInterface == NULL) + gps_find_hardware(); + + return sGpsInterface; +} |