GPS support (experimental)

This commit is contained in:
Klaus K Wilting 2018-06-09 22:21:23 +02:00
parent f5eb8cdc76
commit 485b4fb2f0
5 changed files with 16 additions and 16 deletions

View File

@ -53,8 +53,8 @@ typedef struct {
typedef struct { typedef struct {
float latitude; float latitude;
float longitude; float longitude;
float hdop;
uint8_t satellites; uint8_t satellites;
uint16_t hdop;
uint16_t altitude; uint16_t altitude;
} gpsStatus_t; } gpsStatus_t;
extern gpsStatus_t gps_status; // struct for storing gps data extern gpsStatus_t gps_status; // struct for storing gps data

View File

@ -5,18 +5,16 @@
// Local logging tag // Local logging tag
static const char TAG[] = "main"; static const char TAG[] = "main";
// GPS read data to global struct // read GPS data and cast to global struct
void gps_read(){ void gps_read(){
gps_status.latitude = (float) gps.location.lat(); gps_status.latitude = (float) gps.location.lat();
gps_status.longitude = (float) gps.location.lng(); gps_status.longitude = (float) gps.location.lng();
gps_status.satellites = (uint8_t) gps.satellites.value(); gps_status.satellites = (uint8_t) gps.satellites.value();
gps_status.hdop = (float) gps.hdop.value(); gps_status.hdop = (uint16_t) gps.hdop.value();
gps_status.altitude = (uint16_t) gps.altitude.meters(); gps_status.altitude = (uint16_t) gps.altitude.meters();
ESP_LOGI(TAG, "Lat: %f / Lon: %f", gps_status.latitude, gps_status.longitude);
ESP_LOGI(TAG, "Sats: %d / HDOP: %f / Alti: %d", gps_status.satellites, gps_status.hdop, gps_status.altitude);
} }
/// GPS serial feed FreeRTos Task // GPS serial feed FreeRTos Task
void gps_loop(void * pvParameters) { void gps_loop(void * pvParameters) {
configASSERT( ( ( uint32_t ) pvParameters ) == 1 ); // FreeRTOS check configASSERT( ( ( uint32_t ) pvParameters ) == 1 ); // FreeRTOS check

View File

@ -138,7 +138,7 @@ void do_send(osjob_t* j){
if (cfg.gpsmode && gps.location.isValid()) { if (cfg.gpsmode && gps.location.isValid()) {
gps_read(); gps_read();
LMIC_setTxData2(GPSPORT, (byte*)&gps_status, sizeof(gps_status), (cfg.countermode & 0x02)); LMIC_setTxData2(GPSPORT, (byte*)&gps_status, sizeof(gps_status), (cfg.countermode & 0x02));
ESP_LOGI(TAG, "HDOP=%d, SATS=%d, LAT=%d, LON=%d", gps_status.hdop, gps_status.satellites, gps_status.latitude, gps_status.longitude ); ESP_LOGI(TAG, "HDOP=%d, SATS=%d, LAT=%f, LON=%f", gps_status.hdop, gps_status.satellites, gps_status.latitude, gps_status.longitude );
} }
#endif #endif

View File

@ -470,6 +470,10 @@ void setup() {
ESP_LOGI(TAG, "ESP32 SDK: %s", ESP.getSdkVersion()); ESP_LOGI(TAG, "ESP32 SDK: %s", ESP.getSdkVersion());
#endif #endif
#ifdef HAS_GPS
ESP_LOGI(TAG, "TinyGPS+ version %s", TinyGPSPlus::libraryVersion());
#endif
// read settings from NVRAM // read settings from NVRAM
loadConfig(); // includes initialize if necessary loadConfig(); // includes initialize if necessary
@ -583,7 +587,7 @@ xTaskCreatePinnedToCore(sniffer_loop, "wifisniffer", 2048, ( void * ) 1, 1, NULL
#ifdef HAS_GPS #ifdef HAS_GPS
if (cfg.gpsmode) { if (cfg.gpsmode) {
ESP_LOGI(TAG, "Starting GPS task on core 0"); ESP_LOGI(TAG, "Starting GPS task on core 0");
xTaskCreatePinnedToCore(gps_loop, "gpsreader", 2048, ( void * ) 1, 1, NULL, 0); xTaskCreatePinnedToCore(gps_loop, "gpsfeed", 2048, ( void * ) 1, 1, NULL, 0);
} }
#endif #endif

View File

@ -262,14 +262,12 @@ void get_gps (uint8_t val) {
#ifdef HAS_GPS #ifdef HAS_GPS
gps_read(); gps_read();
transmit((byte*)&gps_status, sizeof(gps_status)); transmit((byte*)&gps_status, sizeof(gps_status));
ESP_LOGI(TAG, "HDOP=%d, SATS=%d, LAT=%d, LON=%d", gps_status.hdop, gps_status.satellites, gps_status.latitude, gps_status.longitude ); ESP_LOGI(TAG, "HDOP=%d, SATS=%d, LAT=%f, LON=%f", gps_status.hdop, gps_status.satellites, gps_status.latitude, gps_status.longitude );
#else #else
ESP_LOGE(TAG, "No GPS device present"); ESP_LOGE(TAG, "GPS not present");
#endif #endif
}; };
// assign previously defined functions to set of numeric remote commands // assign previously defined functions to set of numeric remote commands
// format: opcode, function, flag (1 = do make settings persistent / 0 = don't) // format: opcode, function, flag (1 = do make settings persistent / 0 = don't)
// //