Пример #1
0
void gps_enable(appdata_t *appdata, gboolean enable) {
  if(appdata->settings) {
    gps_state_t *gps_state = appdata->gps_state;

    /* for location update callbacks */
    gps_state->data = appdata;
    if(enable != appdata->gps_state->gps_is_on) {
      if(gps_state->device && gps_state->control
#if MAEMO_VERSION_MAJOR < 5
	 && gps_state->control->can_control
#endif
	 ) {
	if(enable) {
	  printf("starting gpsd\n");
	  location_gpsd_control_start(gps_state->control);
	} else {
	  printf("stopping gpsd\n");
	  location_gpsd_control_stop(gps_state->control);
	}
	appdata->gps_state->gps_is_on = enable;
      }
    }

    appdata->settings->enable_gps = enable;
  }
}
NS_IMETHODIMP MaemoLocationProvider::Shutdown()
{
  if (mUpdateTimer)
    mUpdateTimer->Cancel();

  g_signal_handler_disconnect(mGPSDevice, mLocationChanged);
  g_signal_handler_disconnect(mGPSDevice, mDeviceDisconnected);

  g_signal_handler_disconnect(mGPSDevice, mControlError);
  g_signal_handler_disconnect(mGPSDevice, mControlStopped);

  mHasSeenLocation = false;
  mCallback = nsnull;

  if (mGPSControl) {
    location_gpsd_control_stop(mGPSControl);
    g_object_unref(mGPSControl);
    mGPSControl = nsnull;
  }
  if (mGPSDevice) {
    g_object_unref(mGPSDevice);
    mGPSDevice = nsnull;
  }

  return NS_OK;
}
bool 
NokiaMaemoLocationInterfaceImpl::deregisterLbsClient() 
{

//   if(m_control->can_control)
   location_gpsd_control_stop(m_control);
   g_object_unref(m_control);
   g_object_unref(m_device);

   // Add verification the control stop and unref went alright.
   return true;
}   
Пример #4
0
gps_liblocation_state_t::~gps_liblocation_state_t()
{
  if(!device)
    return;

  if(control) {
    g_debug("Having control over GPSD and its running, stopping it");
    if(gps_is_on)
      location_gpsd_control_stop(control);
  }

  /* Disconnect signal */
  g_signal_handler_disconnect(device, idd_changed);
}
Пример #5
0
void gps_liblocation_state_t::setEnable(bool en)
{
  if(en != gps_is_on) {
    if(device && control) {
      if(en) {
        g_debug("starting gpsd");
        location_gpsd_control_start(control);
      } else {
        g_debug("stopping gpsd");
        location_gpsd_control_stop(control);
      }
      gps_is_on = en;
    }
  }
  enabled = en;
}
Пример #6
0
void gps_release(appdata_t *appdata) {
  gps_state_t *gps_state = appdata->gps_state;

  if(!gps_state->device) return;

#ifdef LL_CONTROL_GPSD
  if(gps_state->control
#if MAEMO_VERSION_MAJOR < 5
     && gps_state->control->can_control
#endif
     ) {
    printf("Having control over GPSD and its running, stopping it\n");
    if(appdata->gps_state->gps_is_on)
      location_gpsd_control_stop(gps_state->control);
  }
#endif

  /* Disconnect signal */
  g_signal_handler_disconnect(gps_state->device, gps_state->idd_changed);

  g_free(appdata->gps_state);
  appdata->gps_state = NULL;
}