De-dumbass myself.

This commit is contained in:
Kragg Malak
2023-11-26 22:06:27 -07:00
parent 47b3a850b9
commit f660a66d8e
4 changed files with 32 additions and 32 deletions

View File

@@ -336,8 +336,8 @@ void CommandLine::runCommand(String input) {
int notimp_arg = this->argSearch(&cmd_args, "-p"); int notimp_arg = this->argSearch(&cmd_args, "-p");
int recd_arg = this->argSearch(&cmd_args, "-r"); int recd_arg = this->argSearch(&cmd_args, "-r");
if(notimp_arg == -1 && recd_arg == -1){ if(notimp_arg == -1 && recd_arg == -1){
gps_obj.sendSentence(Serial, gps_obj.generateGXgga()); gps_obj.sendSentence(Serial, gps_obj.generateGXgga().c_str());
gps_obj.sendSentence(Serial, gps_obj.generateGXrmc()); gps_obj.sendSentence(Serial, gps_obj.generateGXrmc().c_str());
} }
else if(notimp_arg == -1) else if(notimp_arg == -1)
Serial.println(gps_obj.getNmea()); Serial.println(gps_obj.getNmea());
@@ -355,7 +355,7 @@ void CommandLine::runCommand(String input) {
else else
Serial.println("You did not provide a valid argument"); Serial.println("You did not provide a valid argument");
} }
else if(cmd_args.size()>0) else if(cmd_args.size()>1)
Serial.println("You did not provide a valid flag"); Serial.println("You did not provide a valid flag");
else else
Serial.println("You did not provide an argument"); Serial.println("You did not provide an argument");

View File

@@ -107,7 +107,7 @@ void GpsInterface::setType(String t){
this->type_flag=GPSTYPE_ALL; this->type_flag=GPSTYPE_ALL;
} }
const char* GpsInterface::generateGXgga(){ String GpsInterface::generateGXgga(){
String msg_type="$G"; String msg_type="$G";
if(this->type_flag == GPSTYPE_GPS) if(this->type_flag == GPSTYPE_GPS)
msg_type+='P'; msg_type+='P';
@@ -120,44 +120,44 @@ const char* GpsInterface::generateGXgga(){
msg_type+="GGA,"; msg_type+="GGA,";
char timeStr[8]; char timeStr[8];
sprintf(timeStr, "%02d%02d%02d,", (int)(nmea.getHour()), (int)(nmea.getMinute()), (int)(nmea.getSecond())); snprintf(timeStr, 8, "%02d%02d%02d,", (int)(nmea.getHour()), (int)(nmea.getMinute()), (int)(nmea.getSecond()));
long lat = nmea.getLatitude(); long lat = nmea.getLatitude();
char latDir = lat < 0 ? 'S' : 'N'; char latDir = lat < 0 ? 'S' : 'N';
lat = abs(lat); lat = abs(lat);
char latStr[12]; char latStr[12];
sprintf(latStr, "%02ld%08.5f,", lat / 1000000, ((lat % 1000000)*60) / 1000000.0); snprintf(latStr, 12, "%02ld%08.5f,", lat / 1000000, ((lat % 1000000)*60) / 1000000.0);
long lon = nmea.getLongitude(); long lon = nmea.getLongitude();
char lonDir = lon < 0 ? 'W' : 'E'; char lonDir = lon < 0 ? 'W' : 'E';
lon = abs(lon); lon = abs(lon);
char lonStr[13]; char lonStr[13];
sprintf(lonStr, "%03ld%08.5f,", lon / 1000000, ((lon % 1000000)*60) / 1000000.0); snprintf(lonStr, 13, "%03ld%08.5f,", lon / 1000000, ((lon % 1000000)*60) / 1000000.0);
int fixQuality = nmea.isValid() ? 1 : 0; int fixQuality = nmea.isValid() ? 1 : 0;
char fixStr[3]; char fixStr[3];
sprintf(fixStr, "%01d,", fixQuality); snprintf(fixStr, 3, "%01d,", fixQuality);
int numSatellites = nmea.getNumSatellites(); int numSatellites = nmea.getNumSatellites();
char satStr[4]; char satStr[4];
sprintf(satStr, "%02d,", numSatellites); snprintf(satStr, 4, "%02d,", numSatellites);
unsigned long hdop = nmea.getHDOP(); unsigned long hdop = nmea.getHDOP();
char hdopStr[14]; char hdopStr[13];
sprintf(hdopStr, "%01.2f,", 2.5 * (((float)(hdop))/10)); snprintf(hdopStr, 13, "%01.2f,", 2.5 * (((float)(hdop))/10));
long altitude; long altitude;
if(!nmea.getAltitude(altitude)) altitude=0; if(!nmea.getAltitude(altitude)) altitude=0;
char altStr[14]; char altStr[9];
sprintf(altStr, "%01.1f,", altitude/1000.0); snprintf(altStr, 9, "%01.1f,", altitude/1000.0);
String message = msg_type + timeStr + latStr + latDir + "," + lonStr + lonDir + String message = msg_type + timeStr + latStr + latDir + ',' + lonStr + lonDir +
"," + fixStr + satStr + hdopStr + altStr + "M,,M,,"; ',' + fixStr + satStr + hdopStr + altStr + "M,,M,,";
return message.c_str(); return message;
} }
const char* GpsInterface::generateGXrmc(){ String GpsInterface::generateGXrmc(){
String msg_type="$G"; String msg_type="$G";
if(this->type_flag == GPSTYPE_GPS) if(this->type_flag == GPSTYPE_GPS)
msg_type+='P'; msg_type+='P';
@@ -170,10 +170,10 @@ const char* GpsInterface::generateGXrmc(){
msg_type+="RMC,"; msg_type+="RMC,";
char timeStr[8]; char timeStr[8];
sprintf(timeStr, "%02d%02d%02d,", (int)(nmea.getHour()), (int)(nmea.getMinute()), (int)(nmea.getSecond())); snprintf(timeStr, 8, "%02d%02d%02d,", (int)(nmea.getHour()), (int)(nmea.getMinute()), (int)(nmea.getSecond()));
char dateStr[8]; char dateStr[8];
sprintf(dateStr, "%02d%02d%02d,", (int)(nmea.getDay()), (int)(nmea.getMonth()), (int)(nmea.getYear()%100)); snprintf(dateStr, 8, "%02d%02d%02d,", (int)(nmea.getDay()), (int)(nmea.getMonth()), (int)(nmea.getYear()%100));
char status = nmea.isValid() ? 'A' : 'V'; char status = nmea.isValid() ? 'A' : 'V';
char mode = nmea.isValid() ? 'A' : 'N'; char mode = nmea.isValid() ? 'A' : 'N';
@@ -182,23 +182,23 @@ const char* GpsInterface::generateGXrmc(){
char latDir = lat < 0 ? 'S' : 'N'; char latDir = lat < 0 ? 'S' : 'N';
lat = abs(lat); lat = abs(lat);
char latStr[12]; char latStr[12];
sprintf(latStr, "%02ld%08.5f,", lat / 1000000, ((lat % 1000000)*60) / 1000000.0); snprintf(latStr, 12, "%02ld%08.5f,", lat / 1000000, ((lat % 1000000)*60) / 1000000.0);
long lon = nmea.getLongitude(); long lon = nmea.getLongitude();
char lonDir = lon < 0 ? 'W' : 'E'; char lonDir = lon < 0 ? 'W' : 'E';
lon = abs(lon); lon = abs(lon);
char lonStr[13]; char lonStr[13];
sprintf(lonStr, "%03ld%08.5f,", lon / 1000000, ((lon % 1000000)*60) / 1000000.0); snprintf(lonStr, 13, "%03ld%08.5f,", lon / 1000000, ((lon % 1000000)*60) / 1000000.0);
char speedStr[14]; char speedStr[8];
sprintf(speedStr, "%01.1f,", nmea.getSpeed() / 1000.0); snprintf(speedStr, 8, "%01.1f,", nmea.getSpeed() / 1000.0);
char courseStr[14]; char courseStr[7];
sprintf(courseStr, "%01.1f,", nmea.getCourse() / 1000.0); snprintf(courseStr, 7, "%01.1f,", nmea.getCourse() / 1000.0);
String message = msg_type + timeStr + status + "," + latStr + latDir + "," + String message = msg_type + timeStr + status + ',' + latStr + latDir + ',' +
lonStr + lonDir + "," + speedStr + courseStr + dateStr + ",," + mode; lonStr + lonDir + ',' + speedStr + courseStr + dateStr + ',' + ',' + mode;
return message.c_str(); return message;
} }
// Thanks JosephHewitt // Thanks JosephHewitt

View File

@@ -38,8 +38,8 @@ class GpsInterface {
void sendSentence(const char* sentence); void sendSentence(const char* sentence);
void sendSentence(Stream &s, const char* sentence); void sendSentence(Stream &s, const char* sentence);
const char* generateGXgga(); String generateGXgga();
const char* generateGXrmc(); String generateGXrmc();
enum type_t { enum type_t {
GPSTYPE_ALL, GPSTYPE_ALL,

View File

@@ -1123,8 +1123,8 @@ void WiFiScan::RunGPSNmea() {
} }
} }
gps_obj.sendSentence(Serial, gps_obj.generateGXgga()); gps_obj.sendSentence(Serial, gps_obj.generateGXgga().c_str());
gps_obj.sendSentence(Serial, gps_obj.generateGXrmc()); gps_obj.sendSentence(Serial, gps_obj.generateGXrmc().c_str());
#endif #endif
} }