GPS support (experimental)
This commit is contained in:
parent
f5eb8cdc76
commit
485b4fb2f0
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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)
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user