Still need to read out values, even if not keeping

Signed-off-by: Sara Damiano <sdamiano@stroudcenter.org>
This commit is contained in:
Sara Damiano
2020-02-13 13:50:08 -05:00
parent 46d606260f
commit 71f26658d4
10 changed files with 191 additions and 117 deletions

View File

@@ -319,20 +319,20 @@ void loop() {
#if TINY_GSM_TEST_GSM_LOCATION && defined TINY_GSM_MODEM_HAS_GSM_LOCATION #if TINY_GSM_TEST_GSM_LOCATION && defined TINY_GSM_MODEM_HAS_GSM_LOCATION
String location = modem.getGsmLocation(); String location = modem.getGsmLocation();
DBG("GSM Based Location:", location); DBG("GSM Based Location String:", location);
float lat = 0; float lat = 0;
float lon = 0; float lon = 0;
float accuracy = 0; float accuracy = 0;
int year = 0; int year = 0;
int month = 0; int month = 0;
int day = 0; int day = 0;
int hour = 0; int hour = 0;
int min = 0; int min = 0;
int sec = 0; int sec = 0;
if (modem.getGsmLocation(&lat, &lon, &accuracy, &year, &month, &day, &hour, if (modem.getGsmLocation(&lat, &lon, &accuracy, &year, &month, &day, &hour,
&min, &sec)) { &min, &sec)) {
DBG("Latitude:", lat); DBG("Latitude:", String(lat, 8));
DBG("Longitude:", lon); DBG("Longitude:", String(lon, 8));
DBG("Accuracy:", accuracy); DBG("Accuracy:", accuracy);
DBG("Year:", year); DBG("Year:", year);
DBG("Month:", month); DBG("Month:", month);
@@ -348,33 +348,35 @@ void loop() {
#if TINY_GSM_TEST_GPS && defined TINY_GSM_MODEM_HAS_GPS #if TINY_GSM_TEST_GPS && defined TINY_GSM_MODEM_HAS_GPS
modem.enableGPS(); modem.enableGPS();
String gps_raw = modem.getGPSraw(); String gps_raw = modem.getGPSraw();
DBG("GPS/GNSS Based Location:", gps_raw); DBG("GPS/GNSS Based Location String:", gps_raw);
float lat = 0; float lat2 = 0;
float lon = 0; float lon2 = 0;
float speed = 0; float speed2 = 0;
int alt = 0; int alt2 = 0;
int vsat = 0; int vsat2 = 0;
int usat = 0; int usat2 = 0;
int year = 0; float accuracy2 = 0;
int month = 0; int year2 = 0;
int day = 0; int month2 = 0;
int hour = 0; int day2 = 0;
int min = 0; int hour2 = 0;
int sec = 0; int min2 = 0;
if (getGPS(&lat, &lon, &speed, &alt, &vsat, &usat, &year, &month, &day, &hour, int sec2 = 0;
&minute, &second)) { if (modem.getGPS(&lat2, &lon, &speed2, &alt2, &vsat2, &usat2, &accuracy2,
DBG("Latitude:", lat); &year2, &month2, &day2, &hour2, &min2, &sec2)) {
DBG("Longitude:", lon); DBG("Latitude:", String(lat2, 8));
DBG("Speed:", speed); DBG("Longitude:", String(lon2, 8));
DBG("Altitude:", alt); DBG("Speed:", speed2);
DBG("Visible Satellites:", vsat); DBG("Altitude:", alt2);
DBG("Used Satellites:", usat); DBG("Visible Satellites:", vsat2);
DBG("Year:", year); DBG("Used Satellites:", usat2);
DBG("Month:", month); DBG("Accuracy:", accuracy2);
DBG("Day:", day); DBG("Year:", year2);
DBG("Hour:", hour); DBG("Month:", month2);
DBG("Minute:", min); DBG("Day:", day2);
DBG("Second:", sec); DBG("Hour:", hour2);
DBG("Minute:", min2);
DBG("Second:", sec2);
} else { } else {
DBG("Couldn't get GPS/GNSS location"); DBG("Couldn't get GPS/GNSS location");
} }

View File

@@ -49,7 +49,9 @@
// Chips without internal buffering (A6/A7, ESP8266, M590) // Chips without internal buffering (A6/A7, ESP8266, M590)
// need enough space in the buffer for the entire response // need enough space in the buffer for the entire response
// else data will be lost (and the http library will fail). // else data will be lost (and the http library will fail).
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 1024 #define TINY_GSM_RX_BUFFER 1024
#endif
// See all AT commands, if wanted // See all AT commands, if wanted
// #define DUMP_AT_COMMANDS // #define DUMP_AT_COMMANDS

View File

@@ -54,7 +54,9 @@
// Chips without internal buffering (A6/A7, ESP8266, M590) // Chips without internal buffering (A6/A7, ESP8266, M590)
// need enough space in the buffer for the entire response // need enough space in the buffer for the entire response
// else data will be lost (and the http library will fail). // else data will be lost (and the http library will fail).
#if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 650 #define TINY_GSM_RX_BUFFER 650
#endif
// See all AT commands, if wanted // See all AT commands, if wanted
// #define DUMP_AT_COMMANDS // #define DUMP_AT_COMMANDS

View File

@@ -12,7 +12,9 @@
#define TINY_GSM_MODEM_UBLOX #define TINY_GSM_MODEM_UBLOX
// Increase RX buffer if needed // Increase RX buffer if needed
// #define TINY_GSM_RX_BUFFER 512 #if !defined(TINY_GSM_RX_BUFFER)
#define TINY_GSM_RX_BUFFER 512
#endif
#include <TinyGsmClient.h> #include <TinyGsmClient.h>

View File

@@ -451,25 +451,44 @@ class TinyGsmSim7000 : public TinyGsmModem<TinyGsmSim7000>,
// *secondWithSS = atof(dtSBuff); // *secondWithSS = atof(dtSBuff);
streamSkipUntil(','); // Throw away the final comma streamSkipUntil(','); // Throw away the final comma
*lat = streamGetFloat(','); // Latitude *lat = streamGetFloat(','); // Latitude
*lon = streamGetFloat(','); // Longitude *lon = streamGetFloat(','); // Longitude
if (alt != NULL) *alt = streamGetFloat(','); // MSL Altitude if (alt != NULL) { // MSL Altitude. Unit is meters
if (speed != NULL) *speed = streamGetFloat(','); // Speed Over Ground *alt = streamGetFloat(',');
streamSkipUntil(','); // Course Over Ground } else {
streamSkipUntil(','); // Fix Mode streamSkipUntil(',');
streamSkipUntil(','); // Reserved1 }
streamSkipUntil(','); // Horizontal Dilution Of Precision if (speed != NULL) { // Speed Over Ground. Unit is knots.
if (accuracy != NULL) *speed = streamGetFloat(',');
*accuracy = streamGetFloat(','); // Position Dilution Of Precision } else {
streamSkipUntil(','); // Vertical Dilution Of Precision streamSkipUntil(',');
streamSkipUntil(','); // Reserved2 }
if (vsat != NULL) *vsat = streamGetInt(','); // GNSS Satellites in View streamSkipUntil(','); // Course Over Ground. Degrees.
if (usat != NULL) *usat = streamGetInt(','); // GNSS Satellites Used streamSkipUntil(','); // Fix Mode
streamSkipUntil(','); // GLONASS Satellites Used streamSkipUntil(','); // Reserved1
streamSkipUntil(','); // Reserved3 streamSkipUntil(','); // Horizontal Dilution Of Precision
streamSkipUntil(','); // C/N0 max if (accuracy != NULL) { // Position Dilution Of Precision
streamSkipUntil(','); // HPA *accuracy = streamGetFloat(',');
streamSkipUntil('\n'); // VPA } else {
streamSkipUntil(',');
}
streamSkipUntil(','); // Vertical Dilution Of Precision
streamSkipUntil(','); // Reserved2
if (vsat != NULL) { // GNSS Satellites in View
*vsat = streamGetInt(',');
} else {
streamSkipUntil(',');
}
if (usat != NULL) { // GNSS Satellites Used
*usat = streamGetInt(',');
} else {
streamSkipUntil(',');
}
streamSkipUntil(','); // GLONASS Satellites Used
streamSkipUntil(','); // Reserved3
streamSkipUntil(','); // C/N0 max
streamSkipUntil(','); // HPA
streamSkipUntil('\n'); // VPA
waitResponse(); waitResponse();

View File

@@ -433,8 +433,6 @@ class TinyGsmSim7600 : public TinyGsmModem<TinyGsmSim7600>,
int* vsat = 0, int* usat = 0, float* accuracy = 0, int* vsat = 0, int* usat = 0, float* accuracy = 0,
int* year = 0, int* month = 0, int* day = 0, int* hour = 0, int* year = 0, int* month = 0, int* day = 0, int* hour = 0,
int* minute = 0, int* second = 0) { int* minute = 0, int* second = 0) {
// String buffer = "";
sendAT(GF("+CGNSSINFO")); sendAT(GF("+CGNSSINFO"));
if (waitResponse(GF(GSM_NL "+CGNSSINFO:")) != 1) { return false; } if (waitResponse(GF(GSM_NL "+CGNSSINFO:")) != 1) { return false; }
@@ -479,16 +477,25 @@ class TinyGsmSim7600 : public TinyGsmModem<TinyGsmSim7600>,
// *secondWithSS = atof(dtSBuff); // *secondWithSS = atof(dtSBuff);
streamSkipUntil(','); // Throw away the final comma streamSkipUntil(','); // Throw away the final comma
if (alt != NULL) if (alt != NULL) { // MSL Altitude. Unit is meters
*alt = streamGetFloat(','); // MSL Altitude. Unit is meters *alt = streamGetFloat(',');
if (speed != NULL) } else {
*speed = streamGetFloat(','); // Speed Over Ground. Unit is knots. streamSkipUntil(',');
streamSkipUntil(','); // Course. Degrees. }
streamSkipUntil(','); // After set, will report GPS every x seconds if (speed != NULL) { // Speed Over Ground. Unit is knots.
if (accuracy != NULL) *speed = streamGetFloat(',');
*accuracy = streamGetFloat(','); // Position Dilution Of Precision } else {
streamSkipUntil(','); // Horizontal Dilution Of Precision streamSkipUntil(',');
streamSkipUntil(','); // Vertical Dilution Of Precision }
streamSkipUntil(','); // Course Over Ground. Degrees.
streamSkipUntil(','); // After set, will report GPS every x seconds
if (accuracy != NULL) { // Position Dilution Of Precision
*accuracy = streamGetFloat(',');
} else {
streamSkipUntil(',');
}
streamSkipUntil(','); // Horizontal Dilution Of Precision
streamSkipUntil(','); // Vertical Dilution Of Precision
streamSkipUntil('\n'); // TODO(?) is one more field reported?? streamSkipUntil('\n'); // TODO(?) is one more field reported??
waitResponse(); waitResponse();

View File

@@ -26,20 +26,14 @@ class TinyGsmSim808 : public TinyGsmSim800, public TinyGsmGPS<TinyGsmSim808> {
protected: protected:
// enable GPS // enable GPS
bool enableGPSImpl() { bool enableGPSImpl() {
// uint16_t state;
sendAT(GF("+CGNSPWR=1")); sendAT(GF("+CGNSPWR=1"));
if (waitResponse() != 1) { return false; } if (waitResponse() != 1) { return false; }
return true; return true;
} }
bool disableGPSImpl() { bool disableGPSImpl() {
// uint16_t state;
sendAT(GF("+CGNSPWR=0")); sendAT(GF("+CGNSPWR=0"));
if (waitResponse() != 1) { return false; } if (waitResponse() != 1) { return false; }
return true; return true;
} }
@@ -96,25 +90,44 @@ class TinyGsmSim808 : public TinyGsmSim800, public TinyGsmGPS<TinyGsmSim808> {
// *secondWithSS = atof(dtSBuff); // *secondWithSS = atof(dtSBuff);
streamSkipUntil(','); // Throw away the final comma streamSkipUntil(','); // Throw away the final comma
*lat = streamGetFloat(','); // Latitude *lat = streamGetFloat(','); // Latitude
*lon = streamGetFloat(','); // Longitude *lon = streamGetFloat(','); // Longitude
if (alt != NULL) *alt = streamGetFloat(','); // MSL Altitude if (alt != NULL) { // MSL Altitude. Unit is meters
if (speed != NULL) *speed = streamGetFloat(','); // Speed Over Ground *alt = streamGetFloat(',');
streamSkipUntil(','); // Course Over Ground } else {
streamSkipUntil(','); // Fix Mode streamSkipUntil(',');
streamSkipUntil(','); // Reserved1 }
streamSkipUntil(','); // Horizontal Dilution Of Precision if (speed != NULL) { // Speed Over Ground. Unit is knots.
if (accuracy != NULL) *speed = streamGetFloat(',');
*accuracy = streamGetFloat(','); // Position Dilution Of Precision } else {
streamSkipUntil(',');
}
streamSkipUntil(','); // Course Over Ground. Degrees.
streamSkipUntil(','); // Fix Mode
streamSkipUntil(','); // Reserved1
streamSkipUntil(','); // Horizontal Dilution Of Precision
if (accuracy != NULL) { // Position Dilution Of Precision
*accuracy = streamGetFloat(',');
} else {
streamSkipUntil(',');
}
streamSkipUntil(','); // Vertical Dilution Of Precision streamSkipUntil(','); // Vertical Dilution Of Precision
streamSkipUntil(','); // Reserved2 streamSkipUntil(','); // Reserved2
if (vsat != NULL) *vsat = streamGetInt(','); // GNSS Satellites in View if (vsat != NULL) { // GNSS Satellites in View
if (usat != NULL) *usat = streamGetInt(','); // GNSS Satellites Used *vsat = streamGetInt(',');
streamSkipUntil(','); // GLONASS Satellites Used } else {
streamSkipUntil(','); // Reserved3 streamSkipUntil(',');
streamSkipUntil(','); // C/N0 max }
streamSkipUntil(','); // HPA if (usat != NULL) { // GNSS Satellites Used
streamSkipUntil('\n'); // VPA *usat = streamGetInt(',');
} else {
streamSkipUntil(',');
}
streamSkipUntil(','); // GLONASS Satellites Used
streamSkipUntil(','); // Reserved3
streamSkipUntil(','); // C/N0 max
streamSkipUntil(','); // HPA
streamSkipUntil('\n'); // VPA
waitResponse(); waitResponse();

View File

@@ -538,21 +538,33 @@ class TinyGsmSaraR4
*lat = streamGetFloat(','); // Estimated latitude, in degrees *lat = streamGetFloat(','); // Estimated latitude, in degrees
*lon = streamGetFloat(','); // Estimated longitude, in degrees *lon = streamGetFloat(','); // Estimated longitude, in degrees
if (alt != NULL)
*alt = streamGetFloat(','); // Estimated altitude, in meters - only for if (alt != NULL) { // Estimated altitude, in meters - only for GNSS
// GNSS positioning, 0 in case of CellLocate // positioning, 0 in case of CellLocate
if (accuracy != NULL) { *alt = streamGetFloat(',');
} else {
streamSkipUntil(',');
}
if (accuracy != NULL) { // Maximum possible error, in meters (0 - 20000000)
*accuracy = streamGetFloat(','); *accuracy = streamGetFloat(',');
} // Maximum possible error, in meters (0 - 20000000) } else {
if (speed != NULL) *speed = streamGetFloat(','); // Speed over ground m/s3 streamSkipUntil(',');
}
if (speed != NULL) { // Speed over ground m/s3
*speed = streamGetFloat(',');
} else {
streamSkipUntil(',');
}
streamSkipUntil(','); // Course over ground in degree (0 deg - 360 deg) streamSkipUntil(','); // Course over ground in degree (0 deg - 360 deg)
streamSkipUntil(','); // Vertical accuracy, in meters streamSkipUntil(','); // Vertical accuracy, in meters
streamSkipUntil(','); // Sensor used for the position calculation streamSkipUntil(','); // Sensor used for the position calculation
streamSkipUntil(','); // Number of satellite used to calculate the position if (vsat != NULL) vsat = 0; // Number of satellites viewed not reported
if (usat != NULL) if (usat != NULL) { // Number of satellite used to calculate the position
*usat = streamGetInt( *usat = streamGetInt(',');
','); // Number of satellite used to calculate the position } else {
streamSkipUntil(','); // Antenna status streamSkipUntil(',');
}
streamSkipUntil(','); // Antenna status
streamSkipUntil('\n'); // Jamming status streamSkipUntil('\n'); // Jamming status
// final ok // final ok

View File

@@ -505,21 +505,33 @@ class TinyGsmUBLOX
*lat = streamGetFloat(','); // Estimated latitude, in degrees *lat = streamGetFloat(','); // Estimated latitude, in degrees
*lon = streamGetFloat(','); // Estimated longitude, in degrees *lon = streamGetFloat(','); // Estimated longitude, in degrees
if (alt != NULL)
*alt = streamGetFloat(','); // Estimated altitude, in meters - only for if (alt != NULL) { // Estimated altitude, in meters - only for GNSS
// GNSS positioning, 0 in case of CellLocate // positioning, 0 in case of CellLocate
if (accuracy != NULL) { *alt = streamGetFloat(',');
} else {
streamSkipUntil(',');
}
if (accuracy != NULL) { // Maximum possible error, in meters (0 - 20000000)
*accuracy = streamGetFloat(','); *accuracy = streamGetFloat(',');
} // Maximum possible error, in meters (0 - 20000000) } else {
if (speed != NULL) *speed = streamGetFloat(','); // Speed over ground m/s3 streamSkipUntil(',');
}
if (speed != NULL) { // Speed over ground m/s3
*speed = streamGetFloat(',');
} else {
streamSkipUntil(',');
}
streamSkipUntil(','); // Course over ground in degree (0 deg - 360 deg) streamSkipUntil(','); // Course over ground in degree (0 deg - 360 deg)
streamSkipUntil(','); // Vertical accuracy, in meters streamSkipUntil(','); // Vertical accuracy, in meters
streamSkipUntil(','); // Sensor used for the position calculation streamSkipUntil(','); // Sensor used for the position calculation
streamSkipUntil(','); // Number of satellite used to calculate the position if (vsat != NULL) *vsat = 0; // Number of satellites viewed not reported
if (usat != NULL) if (usat != NULL) { // Number of satellite used to calculate the position
*usat = streamGetInt( *usat = streamGetInt(',');
','); // Number of satellite used to calculate the position } else {
streamSkipUntil(','); // Antenna status streamSkipUntil(',');
}
streamSkipUntil(','); // Antenna status
streamSkipUntil('\n'); // Jamming status streamSkipUntil('\n'); // Jamming status
// final ok // final ok

View File

@@ -95,8 +95,11 @@ class TinyGsmGSMLocation {
} }
*lat = thisModem().streamGetFloat(','); // Latitude *lat = thisModem().streamGetFloat(','); // Latitude
*lon = thisModem().streamGetFloat(','); // Longitude *lon = thisModem().streamGetFloat(','); // Longitude
if (accuracy != NULL) if (accuracy != NULL) { // Positioning accuracy
*accuracy = thisModem().streamGetInt(','); // Positioning accuracy *accuracy = thisModem().streamGetInt(',');
} else {
thisModem().streamSkipUntil(',');
}
// Date & Time // Date & Time
char dtSBuff[5] = {'\0'}; char dtSBuff[5] = {'\0'};