4 * @author Toni Jussila <toni.jussila@fudeco.com>
5 * @copyright (c) 2010 Speed Freak team
6 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
13 *Default constructor of this class.
15 GPSData::GPSData(Maemo5Location *maemo5location)
17 qDebug() << "__GPSData";
18 location = maemo5location;
20 connect(location,SIGNAL(agnss()),this,SLOT(agnss()));
21 connect(location,SIGNAL(awcp()),this,SLOT(awcp()));
22 connect(location,SIGNAL(locationUpdated()),this,SLOT(locationUpdated()));
23 connect(location,SIGNAL(gps_connected()),this,SLOT(gpsConnected()));
24 connect(location,SIGNAL(gps_disconnected()),this,SLOT(gpsDisconnected()));
25 connect(location,SIGNAL(gps_error(int)),this,SLOT(gpsError()));
26 connect(location,SIGNAL(gpsd_running()),this,SLOT(gpsdRunning()));
27 connect(location,SIGNAL(gpsd_stopped()),this,SLOT(gpsdStopped()));
29 gpsDateTime = new QDateTime();
34 *Destructor of this class. Deletes all dynamic objects and sets them to NULL.
38 qDebug() << "__~GPSData";
46 * This function reset all variables
48 void GPSData::resetAll()
67 longitudePrevious = 0;
70 sLatitudePrevious = "";
71 sLongitudePrevious = "";
74 recordingStatus = false;
79 *This slot function is called when GPS update location.
83 //satellitesInUse = location->getSatellitesInUse()); //Returns number of satellites in use.
84 //satellitesInView = location->getSatellitesInView(); //Returns number of satellites in view.
85 //signalStrength = location->getSignalStrength(); //Returns average signal strength of satellites which are in use.
86 //gpsOnline = location->getGpsOnline(); //Returns gsp online
87 //ept = location->getEpt(); //Returns time accuracy in seconds.
88 //eph = location->getEph(); //Returns horizontal position accuracy in cm.
89 //track = location->getTrack(); //Returns direction of motion in degrees(0-359).
90 //epd = location->getEpd(); //Returns track accuracy in degrees.
91 //climb = location->getClimb(); //Returns current rate of climb in m/s.
92 //epc = location->getEpc(); //Returns climb accuracy in m/s.
93 //time = location->getTime(); //Returns timestamp of the update in seconds.
94 //epv = location->getEpv(); //Returns altitude accuracy in meters.
95 //eps = location->getEps(); //Returns speed accuracy in km/h.
96 //distance = location->distance_between_two_points(double latitude_s, double longitude_s, double latitude_f, double longitude_f);
98 //If route recording true
99 if ( recordingStatus == true )
101 latitudePrevious = latitude;
102 longitudePrevious = longitude;
103 latitude = location->getLatitude(); //Returns latitude.
104 longitude = location->getLongitude(); //Returns longitude.
105 altitude = location->getAltitude(); //Returns fix altitude in meters.
106 speed = location->getSpeed(); //Returns current speed in km/h.
108 QFile routeTempFile("routetemp.xml");//Temp xml.
111 if (roundCounter == 0)
113 if (!routeTempFile.open(QIODevice::WriteOnly | QIODevice::Text))
115 writeRouteXml(&routeTempFile, 0);
116 routeTempFile.close();
120 //Points writing round.
123 sLatitudeNow.sprintf("%.4f", latitude); //Latitude now to string
124 sLongitudeNow.sprintf("%.4f", longitude);//Longitude now to string
125 sLatitudePrevious.sprintf("%.4f", latitudePrevious); //Previous latitude to string
126 sLongitudePrevious.sprintf("%.4f", longitudePrevious); //Previous longitude to string
128 //If latitude or longitude change
129 if ( sLatitudeNow != sLatitudePrevious || sLongitudeNow != sLongitudePrevious )
131 if (!routeTempFile.open(QIODevice::Append | QIODevice::Text))
134 writeRouteXml(&routeTempFile, 0);
136 routeTempFile.close();
143 *This slot function is called when gprs update location.
151 *This slot function is called when .
153 void GPSData::locationUpdated()
159 *This slot function is called when .
161 void GPSData::gpsConnected()
167 *This slot function is called when .
169 void GPSData::gpsDisconnected()
175 *This slot function is called when .
177 void GPSData::gpsError()
183 *This slot function is called when .
185 void GPSData::gpsdRunning()
191 *This slot function is called when .
193 void GPSData::gpsdStopped()
199 *This function start route recording.
200 *@param QString time recording start time.
202 void GPSData::startRouteRecording()
204 if (recordingStatus == false)
206 //Get start time and start recording.
207 gpsDateTime->setTime_t(location->getTime());
208 routeStartTime = gpsDateTime->toString("dd.MM.yyyy hh:mm:ss");
209 recordingStatus = true;
215 *This function stop route recording.
216 *@param QString time recording stop time.
218 void GPSData::stopRouteRecording()
220 if (recordingStatus == true)
222 //Get stop time and stop recording.
223 gpsDateTime->setTime_t(location->getTime());
224 routeStopTime = gpsDateTime->toString("dd.MM.yyyy hh:mm:ss");
225 recordingStatus = false;
228 QFile file("route.xml");
229 if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
231 writeRouteXml(&file, 1);
238 *This function write route to .xml file.
240 void GPSData::writeRouteXml(QIODevice *device, int round)
242 xmlwriter.setDevice(device);
244 //Write temp xml (routetemp.xml).
247 xmlwriter.writeStartElement("Point");
248 xmlwriter.writeAttribute("Latitude", QString::number(latitude));
249 xmlwriter.writeAttribute("Longitude", QString::number(longitude));
250 xmlwriter.writeAttribute("Altitude", QString::number(altitude));
251 xmlwriter.writeAttribute("Speed", QString::number(speed));
252 xmlwriter.writeEndElement();//Point
255 //Write final xml (route.xml).
256 else if ( round == 1 )
258 xmlwriter.writeStartDocument();
259 xmlwriter.writeStartElement("Route");
260 xmlwriter.writeAttribute("Start-time", routeStartTime);
261 xmlwriter.writeAttribute("Stop-time", routeStopTime);
262 xmlwriter.writeAttribute("Points", QString::number(roundCounter));
264 //Open temp xml and read points
265 QFile tempFile("routetemp.xml");
266 if (!tempFile.open(QIODevice::ReadOnly | QIODevice::Text))
268 QTextStream readRoute(&tempFile);
269 QTextStream writeRoute(device);
270 writeRoute << readRoute.readLine();
271 tempFile.close();//Close temp xml
273 xmlwriter.writeEndElement();//Route
274 xmlwriter.writeEndDocument();