summaryrefslogtreecommitdiffstats
path: root/services/jni
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@google.com>2010-10-10 16:04:18 -0400
committerMike Lockwood <lockwood@google.com>2010-10-10 16:04:18 -0400
commit4270237def6c3f67dcdabbb3f27257fe3037c40d (patch)
treec29ee51d6ce7844c54eb79da6ad0213d91e57c61 /services/jni
parent1c3ef78782cb3461ef83e0c337d03b6f677c94e5 (diff)
downloadframeworks_base-4270237def6c3f67dcdabbb3f27257fe3037c40d.zip
frameworks_base-4270237def6c3f67dcdabbb3f27257fe3037c40d.tar.gz
frameworks_base-4270237def6c3f67dcdabbb3f27257fe3037c40d.tar.bz2
GPS: More HAL initialization cleanup
BUG: 3082940 Change-Id: Idd584ab8fe4512aae0769ecd1274c55d6ea2e5e7 Signed-off-by: Mike Lockwood <lockwood@google.com>
Diffstat (limited to 'services/jni')
-rwxr-xr-xservices/jni/com_android_server_location_GpsLocationProvider.cpp41
1 files changed, 32 insertions, 9 deletions
diff --git a/services/jni/com_android_server_location_GpsLocationProvider.cpp b/services/jni/com_android_server_location_GpsLocationProvider.cpp
index b9ceaa1..b312fb1 100755
--- a/services/jni/com_android_server_location_GpsLocationProvider.cpp
+++ b/services/jni/com_android_server_location_GpsLocationProvider.cpp
@@ -326,29 +326,45 @@ static jboolean android_location_GpsLocationProvider_init(JNIEnv* env, jobject o
static void android_location_GpsLocationProvider_cleanup(JNIEnv* env, jobject obj)
{
- sGpsInterface->cleanup();
+ const GpsInterface* interface = GetGpsInterface();
+ if (interface)
+ interface->cleanup();
}
static jboolean android_location_GpsLocationProvider_set_position_mode(JNIEnv* env, jobject obj,
jint mode, jint recurrence, jint min_interval, jint preferred_accuracy, jint preferred_time)
{
- return (sGpsInterface->set_position_mode(mode, recurrence, min_interval, preferred_accuracy,
- preferred_time) == 0);
+ const GpsInterface* interface = GetGpsInterface();
+ if (interface)
+ return (interface->set_position_mode(mode, recurrence, min_interval, preferred_accuracy,
+ preferred_time) == 0);
+ else
+ return false;
}
static jboolean android_location_GpsLocationProvider_start(JNIEnv* env, jobject obj)
{
- return (sGpsInterface->start() == 0);
+ const GpsInterface* interface = GetGpsInterface();
+ if (interface)
+ return (interface->start() == 0);
+ else
+ return false;
}
static jboolean android_location_GpsLocationProvider_stop(JNIEnv* env, jobject obj)
{
- return (sGpsInterface->stop() == 0);
+ const GpsInterface* interface = GetGpsInterface();
+ if (interface)
+ return (interface->stop() == 0);
+ else
+ return false;
}
static void android_location_GpsLocationProvider_delete_aiding_data(JNIEnv* env, jobject obj, jint flags)
{
- sGpsInterface->delete_aiding_data(flags);
+ const GpsInterface* interface = GetGpsInterface();
+ if (interface)
+ interface->delete_aiding_data(flags);
}
static jint android_location_GpsLocationProvider_read_sv_status(JNIEnv* env, jobject obj,
@@ -456,19 +472,26 @@ static jint android_location_GpsLocationProvider_read_nmea(JNIEnv* env, jobject
static void android_location_GpsLocationProvider_inject_time(JNIEnv* env, jobject obj,
jlong time, jlong timeReference, jint uncertainty)
{
- sGpsInterface->inject_time(time, timeReference, uncertainty);
+ const GpsInterface* interface = GetGpsInterface();
+ if (interface)
+ interface->inject_time(time, timeReference, uncertainty);
}
static void android_location_GpsLocationProvider_inject_location(JNIEnv* env, jobject obj,
jdouble latitude, jdouble longitude, jfloat accuracy)
{
- sGpsInterface->inject_location(latitude, longitude, accuracy);
+ const GpsInterface* interface = GetGpsInterface();
+ if (interface)
+ interface->inject_location(latitude, longitude, accuracy);
}
static jboolean android_location_GpsLocationProvider_supports_xtra(JNIEnv* env, jobject obj)
{
if (!sGpsXtraInterface) {
- sGpsXtraInterface = (const GpsXtraInterface*)sGpsInterface->get_extension(GPS_XTRA_INTERFACE);
+ const GpsInterface* interface = GetGpsInterface();
+ if (!interface)
+ return false;
+ sGpsXtraInterface = (const GpsXtraInterface*)interface->get_extension(GPS_XTRA_INTERFACE);
if (sGpsXtraInterface) {
int result = sGpsXtraInterface->init(&sGpsXtraCallbacks);
if (result) {