Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ void loop(){
Serial.print(myGPX.getTrakOpen());
Serial.print(myGPX.getInfo());
Serial.print(myGPX.getTrakSegOpen());
Serial.print(myGPX.getPt(GPX_TRKPT,"41.123","-71.456"));
Serial.print(myGPX.getPt(GPX_TRKPT,"42.123","-72.456"));
Serial.print(myGPX.getPt(GPX_TRKPT,"43.123","-73.456"));
Serial.print(myGPX.getPt(GPX_TRKPT,41.123,-71.456, 20));
Serial.print(myGPX.getPt(GPX_TRKPT,42.123,-72.456, 50));
Serial.print(myGPX.getPt(GPX_TRKPT,43.123,-73.456, 70));
Serial.print(myGPX.getTrakSegClose());
Serial.print(myGPX.getTrakClose());
Serial.print(myGPX.getClose());
Expand Down
88 changes: 72 additions & 16 deletions GPX/GPX.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,16 @@ String GPX::getClose(){
String GPX::getMetaData(){
String localStr(_GPX_META_HEAD);
if (_metaName.length() > 0){
localStr = localStr + String(_GPX_NAME_HEAD);
localStr = localStr + wrapCDATA(_metaName);
localStr = localStr + String(_GPX_NAME_TAIL);
localStr += String(_GPX_NAME_HEAD);
localStr += wrapCDATA(_metaName);
localStr += String(_GPX_NAME_TAIL);
}
if (_metaDesc.length() > 0){
localStr = localStr + String(_GPX_DESC_HEAD);
localStr = localStr + wrapCDATA(_metaDesc);
localStr = localStr + String(_GPX_DESC_TAIL);
localStr += String(_GPX_DESC_HEAD);
localStr += wrapCDATA(_metaDesc);
localStr += String(_GPX_DESC_TAIL);
}
localStr = localStr + String(_GPX_META_TAIL);
localStr += String(_GPX_META_TAIL);
return localStr;
}

Expand Down Expand Up @@ -91,16 +91,36 @@ String GPX::getInfo(){
return localStr;
}

String GPX::getPt(String typ, String lon, String lat){
String GPX::getName()
{
return _name;
}

String GPX::getPt(String typ, float lon, float lat){
String localStr(_GPX_PT_HEAD);
localStr = localStr.replace("TYPE",typ);
localStr += lat + "\" lon=\"";
localStr += lon + "\">";
localStr.replace("TYPE", typ);
localStr += String(lat) + "\" lon=\"";
localStr += String(lon) + "\">";
if (_ele.length() > 0){
localStr += _GPX_ELE_HEAD;
localStr += _ele;
localStr += _GPX_ELE_TAIL;
}
if (_time.length() > 0){
localStr += _GPX_TIME_HEAD;
localStr += _time;
localStr += _GPX_TIME_TAIL;
}
if (_num_sat.length() > 0){
localStr += _GPX_NUM_SAT_HEAD;
localStr += _num_sat;
localStr += _GPX_NUM_SAT_TAIL;
}
if (_horizontal_accuracy.length() > 0){
localStr += _GPX_HORIZONTAL_ACCURACY_HEAD;
localStr += _horizontal_accuracy;
localStr += _GPX_HORIZONTAL_ACCURACY_TAIL;
}
if (_sym.length() > 0){
localStr += _GPX_SYM_HEAD;
localStr += _sym;
Expand All @@ -111,12 +131,36 @@ String GPX::getPt(String typ, String lon, String lat){
localStr += wrapCDATA(_src);
localStr += _GPX_SRC_TAIL;
}
localStr += String(_GPX_PT_TAIL).replace("TYPE",typ);
String ptTail(_GPX_PT_TAIL);
ptTail.replace("TYPE", typ);
localStr += ptTail;
return localStr;
}

String GPX::getPt(String typ, String lon, String lat, String ele){

String GPX::getPt(String typ, float lon, float lat, float ele){
setEle(ele);
return getPt(typ, lon, lat);
}

String GPX::getPt(String typ, float lon, float lat, float ele, String time){
setEle(ele);
setTime(time);
return getPt(typ, lon, lat);
}

String GPX::getPt(String typ, float lon, float lat, float ele, String time, int num_sat){
setEle(ele);
setTime(time);
setNumSat(num_sat);
return getPt(typ, lon, lat);
}

String GPX::getPt(String typ, float lon, float lat, float ele, String time, int num_sat, float horizontal_accuracy){
setEle(ele);
setTime(time);
setNumSat(num_sat);
setHorizontalAccuracy(horizontal_accuracy);
return getPt(typ, lon, lat);
}

//Set Methods
Expand All @@ -132,8 +176,8 @@ void GPX::setName(String name){
void GPX::setDesc(String desc){
_desc = desc;
}
void GPX::setEle(String ele){
_ele = ele;
void GPX::setEle(float ele){
_ele = String(ele);
}
void GPX::setSym(String sym){
_sym = sym;
Expand All @@ -142,6 +186,18 @@ void GPX::setSrc(String src){
_src = src;
}

void GPX::setNumSat(int num_sat){
_num_sat = String(num_sat);
}

void GPX::setHorizontalAccuracy(float horizontal_accuracy){
_horizontal_accuracy = String(horizontal_accuracy);
}

void GPX::setTime(String time){
_time = time;
}

//Private Functions
String GPX::wrapCDATA(String input){
String localStr("<![CDATA[");
Expand Down
80 changes: 46 additions & 34 deletions GPX/GPX.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,7 @@
#ifndef GPX_h
#define GPX_h

#include <WProgram.h>
#include <WString.h>
#include <Arduino.h>

#define _GPX_HEAD "<gpx version=\"1.1\" creator=\"Arduino GPX Lib\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xmlns=\"http://www.topografix.com/GPX/1/1\"\n xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\"\n>\n"
#define _GPX_TAIL "</gpx>\n"
Expand All @@ -58,46 +57,59 @@
#define _GPX_SRC_TAIL "</src>\n"
#define _GPX_TIME_HEAD "<time>"
#define _GPX_TIME_TAIL "</time>\n"
#define _GPX_NUM_SAT_HEAD "<sat>"
#define _GPX_NUM_SAT_TAIL "</sat>\n"
#define _GPX_HORIZONTAL_ACCURACY_HEAD "<hdop>"
#define _GPX_HORIZONTAL_ACCURACY_TAIL "</hdop>\n"

// 'Public' Tags
#define GPX_TRKPT "trkpt"
#define GPX_WPT "wpt"
#define GPX_RTEPT "rtept"

class GPX{
public:
GPX();
String getOpen();
String getClose();
String getMetaData();
String getTrakOpen();
String getTrakClose();
String getTrakSegOpen();
String getTrakSegClose();
String getInfo();
String getPt(String typ, String lon, String lat);
String getPt(String typ, String lon, String lat, String ele);
void setMetaName(String name);
void setMetaDesc(String desc);
void setName(String name);
void setDesc(String desc);
void setEle(String ele);
void setSym(String sym);
void setSrc(String src);
void setTime(String time);
private:
//Variables
String _metaName;
String _metaDesc;
String _name;
String _desc;
String _ele;
String _sym;
String _src;
String _time;
public:
GPX();
String getOpen();
String getClose();
String getMetaData();
String getTrakOpen();
String getTrakClose();
String getTrakSegOpen();
String getTrakSegClose();
String getInfo();
String getName();
String getPt(String typ, float lon, float lat);
String getPt(String typ, float lon, float lat, float ele);
String getPt(String typ, float lon, float lat, float ele, String time);
String getPt(String typ, float lon, float lat, float ele, String time, int num_sat);
String getPt(String typ, float lon, float lat, float ele, String time, int num_sat, float horizontal_accuracy);
void setMetaName(String name);
void setMetaDesc(String desc);
void setName(String name);
void setDesc(String desc);
void setEle(float ele);
void setSym(String sym);
void setSrc(String src);
void setNumSat(int num_sat);
void setHorizontalAccuracy(float horizontal_accuracy);
void setTime(String time);

//Functions
String wrapCDATA(String input);
private:
//Variables
String _metaName;
String _metaDesc;
String _name;
String _desc;
String _ele;
String _sym;
String _src;
String _time;
String _num_sat;
String _horizontal_accuracy;

//Functions
String wrapCDATA(String input);
};

#endif
Expand Down