remove gpsd (#20027)
	
		
	
				
					
				
			
							parent
							
								
									012fa35096
								
							
						
					
					
						commit
						fe7f3f0ec6
					
				
				 12 changed files with 10 additions and 175 deletions
			
			
		@ -1,3 +0,0 @@ | 
				
			|||||||
#!/bin/sh | 
					 | 
				
			||||||
export LD_LIBRARY_PATH="/system/lib64:$LD_LIBRARY_PATH" | 
					 | 
				
			||||||
exec ./_gpsd | 
					 | 
				
			||||||
@ -1,155 +0,0 @@ | 
				
			|||||||
#include <stdio.h> | 
					 | 
				
			||||||
#include <stdint.h> | 
					 | 
				
			||||||
#include <string.h> | 
					 | 
				
			||||||
#include <unistd.h> | 
					 | 
				
			||||||
#include <assert.h> | 
					 | 
				
			||||||
#include <sys/time.h> | 
					 | 
				
			||||||
#include <sys/cdefs.h> | 
					 | 
				
			||||||
#include <sys/types.h> | 
					 | 
				
			||||||
#include <sys/resource.h> | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <pthread.h> | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <cutils/log.h> | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <hardware/gps.h> | 
					 | 
				
			||||||
#include <utils/Timers.h> | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "messaging.hpp" | 
					 | 
				
			||||||
#include "common/timing.h" | 
					 | 
				
			||||||
#include "common/util.h" | 
					 | 
				
			||||||
#include "common/swaglog.h" | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ExitHandler do_exit; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
PubMaster *pm; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const GpsInterface* gGpsInterface = NULL; | 
					 | 
				
			||||||
const AGpsInterface* gAGpsInterface = NULL; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void nmea_callback(GpsUtcTime timestamp, const char* nmea, int length) { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  uint64_t log_time_wall = nanos_since_epoch(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  MessageBuilder msg; | 
					 | 
				
			||||||
  auto nmeaData = msg.initEvent().initGpsNMEA(); | 
					 | 
				
			||||||
  nmeaData.setTimestamp(timestamp); | 
					 | 
				
			||||||
  nmeaData.setLocalWallTime(log_time_wall); | 
					 | 
				
			||||||
  nmeaData.setNmea(nmea); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  pm->send("gpsNMEA", msg); | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void location_callback(GpsLocation* location) { | 
					 | 
				
			||||||
  //printf("got location callback\n");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  MessageBuilder msg; | 
					 | 
				
			||||||
  auto locationData = msg.initEvent().initGpsLocation(); | 
					 | 
				
			||||||
  locationData.setFlags(location->flags); | 
					 | 
				
			||||||
  locationData.setLatitude(location->latitude); | 
					 | 
				
			||||||
  locationData.setLongitude(location->longitude); | 
					 | 
				
			||||||
  locationData.setAltitude(location->altitude); | 
					 | 
				
			||||||
  locationData.setSpeed(location->speed); | 
					 | 
				
			||||||
  locationData.setBearing(location->bearing); | 
					 | 
				
			||||||
  locationData.setAccuracy(location->accuracy); | 
					 | 
				
			||||||
  locationData.setTimestamp(location->timestamp); | 
					 | 
				
			||||||
  locationData.setSource(cereal::GpsLocationData::SensorSource::ANDROID); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  pm->send("gpsLocation", msg); | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pthread_t create_thread_callback(const char* name, void (*start)(void *), void* arg) { | 
					 | 
				
			||||||
  LOG("creating thread: %s", name); | 
					 | 
				
			||||||
  pthread_t thread; | 
					 | 
				
			||||||
  pthread_attr_t attr; | 
					 | 
				
			||||||
  int err; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  err = pthread_attr_init(&attr); | 
					 | 
				
			||||||
  err = pthread_create(&thread, &attr, (void*(*)(void*))start, arg); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return thread; | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
GpsCallbacks gps_callbacks = { | 
					 | 
				
			||||||
  sizeof(GpsCallbacks), | 
					 | 
				
			||||||
  location_callback, | 
					 | 
				
			||||||
  NULL, | 
					 | 
				
			||||||
  NULL, | 
					 | 
				
			||||||
  nmea_callback, | 
					 | 
				
			||||||
  NULL, | 
					 | 
				
			||||||
  NULL, | 
					 | 
				
			||||||
  NULL, | 
					 | 
				
			||||||
  create_thread_callback, | 
					 | 
				
			||||||
}; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void agps_status_cb(AGpsStatus *status) { | 
					 | 
				
			||||||
  switch (status->status) { | 
					 | 
				
			||||||
    case GPS_REQUEST_AGPS_DATA_CONN: | 
					 | 
				
			||||||
      fprintf(stdout, "*** data_conn_open\n"); | 
					 | 
				
			||||||
      gAGpsInterface->data_conn_open("internet"); | 
					 | 
				
			||||||
      break; | 
					 | 
				
			||||||
    case GPS_RELEASE_AGPS_DATA_CONN: | 
					 | 
				
			||||||
      fprintf(stdout, "*** data_conn_closed\n"); | 
					 | 
				
			||||||
      gAGpsInterface->data_conn_closed(); | 
					 | 
				
			||||||
      break; | 
					 | 
				
			||||||
  } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AGpsCallbacks agps_callbacks = { | 
					 | 
				
			||||||
  agps_status_cb, | 
					 | 
				
			||||||
  create_thread_callback, | 
					 | 
				
			||||||
}; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void gps_init() { | 
					 | 
				
			||||||
  pm = new PubMaster({"gpsNMEA", "gpsLocation"}); | 
					 | 
				
			||||||
  LOG("*** init GPS"); | 
					 | 
				
			||||||
  hw_module_t* module = NULL; | 
					 | 
				
			||||||
  hw_get_module(GPS_HARDWARE_MODULE_ID, (hw_module_t const**)&module); | 
					 | 
				
			||||||
  assert(module); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  static hw_device_t* device = NULL; | 
					 | 
				
			||||||
  module->methods->open(module, GPS_HARDWARE_MODULE_ID, &device); | 
					 | 
				
			||||||
  assert(device); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // ** get gps interface **
 | 
					 | 
				
			||||||
  gps_device_t* gps_device = (gps_device_t *)device; | 
					 | 
				
			||||||
  gGpsInterface = gps_device->get_gps_interface(gps_device); | 
					 | 
				
			||||||
  assert(gGpsInterface); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  gAGpsInterface = (const AGpsInterface*)gGpsInterface->get_extension(AGPS_INTERFACE); | 
					 | 
				
			||||||
  assert(gAGpsInterface); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  gGpsInterface->init(&gps_callbacks); | 
					 | 
				
			||||||
  gAGpsInterface->init(&agps_callbacks); | 
					 | 
				
			||||||
  gAGpsInterface->set_server(AGPS_TYPE_SUPL, "supl.google.com", 7276); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // gGpsInterface->delete_aiding_data(GPS_DELETE_ALL);
 | 
					 | 
				
			||||||
  gGpsInterface->start(); | 
					 | 
				
			||||||
  gGpsInterface->set_position_mode(GPS_POSITION_MODE_MS_BASED, | 
					 | 
				
			||||||
                                   GPS_POSITION_RECURRENCE_PERIODIC, | 
					 | 
				
			||||||
                                   100, 0, 0); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void gps_destroy() { | 
					 | 
				
			||||||
  delete pm; | 
					 | 
				
			||||||
  gGpsInterface->stop(); | 
					 | 
				
			||||||
  gGpsInterface->cleanup(); | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int main() { | 
					 | 
				
			||||||
  setpriority(PRIO_PROCESS, 0, -13); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  gps_init(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  while(!do_exit) pause(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  gps_destroy(); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return 0; | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue