Browse Source

Still need to read out values, even if not keeping

Signed-off-by: Sara Damiano <sdamiano@stroudcenter.org>
v_master
Sara Damiano 5 years ago
parent
commit
71f26658d4
10 changed files with 191 additions and 117 deletions
  1. +40
    -38
      examples/AllFunctions/AllFunctions.ino
  2. +2
    -0
      examples/FileDownload/FileDownload.ino
  3. +2
    -0
      examples/HttpClient/HttpClient.ino
  4. +3
    -1
      examples/more/Hologram_Dash/Hologram_Dash.ino
  5. +38
    -19
      src/TinyGsmClientSIM7000.h
  6. +19
    -12
      src/TinyGsmClientSIM7600.h
  7. +36
    -23
      src/TinyGsmClientSIM808.h
  8. +23
    -11
      src/TinyGsmClientSaraR4.h
  9. +23
    -11
      src/TinyGsmClientUBLOX.h
  10. +5
    -2
      src/TinyGsmGSMLocation.tpp

+ 40
- 38
examples/AllFunctions/AllFunctions.ino View File

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


+ 2
- 0
examples/FileDownload/FileDownload.ino View File

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


+ 2
- 0
examples/HttpClient/HttpClient.ino View File

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


+ 3
- 1
examples/more/Hologram_Dash/Hologram_Dash.ino View File

@ -12,7 +12,9 @@
#define TINY_GSM_MODEM_UBLOX
// 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>


+ 38
- 19
src/TinyGsmClientSIM7000.h View File

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


+ 19
- 12
src/TinyGsmClientSIM7600.h View File

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


+ 36
- 23
src/TinyGsmClientSIM808.h View File

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


+ 23
- 11
src/TinyGsmClientSaraR4.h View File

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


+ 23
- 11
src/TinyGsmClientUBLOX.h View File

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


+ 5
- 2
src/TinyGsmGSMLocation.tpp View File

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


Loading…
Cancel
Save