connect(location,SIGNAL(locationUpdated()),this,SLOT(locationUpdated()));
connect(location,SIGNAL(gps_connected()),this,SLOT(gpsConnected()));
connect(location,SIGNAL(gps_disconnected()),this,SLOT(gpsDisconnected()));
- connect(location,SIGNAL(gps_error(int error)),this,SLOT(gps_error(int error)));
- connect(location,SIGNAL(gpsd_running()),this,SLOT(gpsd_running()));
- connect(location,SIGNAL(gpsd_stopped()),this,SLOT(gpsd_stopped()));
+ connect(location,SIGNAL(gps_error(int)),this,SLOT(gpsError()));
+ connect(location,SIGNAL(gpsd_running()),this,SLOT(gpsdRunning()));
+ connect(location,SIGNAL(gpsd_stopped()),this,SLOT(gpsdStopped()));
+
+ gpsTimer = new QTimer();
+ gpsTimeMS = 0;
+ connect(gpsTimer, SIGNAL(timeout()),this, SLOT(gpsTimerTimeout()));
+
+ resetAll();
}
/**
location = NULL;
}
+void GPSData::resetAll()
+{
+ satellitesInUse = 0;
+ satellitesInView = 0;
+ signalStrength = 0;
+ latitude = 0;
+ longitude = 0;
+ time = 0;
+ ept = 0;
+ eph = 0;
+ altitude = 0;
+ epv = 0;
+ track = 0;
+ epd = 0;
+ speed = 0;
+ eps = 0;
+ climb = 0;
+ epc = 0;
+
+ recordingStatus = false;
+ roundCounter = 0;
+}
+
+/**
+ *This slot function is called when GPS update location.
+ */
void GPSData::agnss()
{
- QString satellitesInUse = QString::number(location->getSatellitesInUse()); //Returns number of satellites in use.
- QString satellitesInView = QString::number(location->getSatellitesInView());//Returns number of satellites in view.
- QString signalStrength = QString::number(location->getSignalStrength()); //Returns average signal strength of satellites which are in use.
- QString gpsOnline = QString::number(location->getGpsOnline()); //Returns gsp online
- QString latitude = QString::number(location->getLatitude()); //Returns latitude.
- QString longitude = QString::number(location->getLongitude()); //Returns longitude.
- QString time = QString::number(location->getTime()); //Returns timestamp of the update in seconds.
- QString ept = QString::number(location->getEpt()); //Returns time accuracy in seconds.
- QString eph = QString::number(location->getEph()); //Returns horizontal position accuracy in cm.
- QString altitude = QString::number(location->getAltitude()); //Returns fix altitude in meters.
- QString epv = QString::number(location->getEpv()); //Returns altitude accuracy in meters.
- QString track = QString::number(location->getTrack()); //Returns direction of motion in degrees(0-359).
- QString epd = QString::number(location->getEpd()); //Returns track accuracy in degrees.
- QString speed = QString::number(location->getSpeed()); //Returns current speed in km/h.
- QString eps = QString::number(location->getEps()); //Returns speed accuracy in km/h.
- QString climp = QString::number(location->getClimb()); //Returns current rate of climb in m/s.
- QString epc = QString::number(location->getEpc()); //Returns climb accuracy in m/s.
+ //satellitesInUse = QString::number(location->getSatellitesInUse()); //Returns number of satellites in use.
+ //satellitesInView = QString::number(location->getSatellitesInView());//Returns number of satellites in view.
+ //signalStrength = QString::number(location->getSignalStrength()); //Returns average signal strength of satellites which are in use.
+ //gpsOnline = QString::number(location->getGpsOnline()); //Returns gsp online
+ //ept = QString::number(location->getEpt()); //Returns time accuracy in seconds.
+ //eph = QString::number(location->getEph()); //Returns horizontal position accuracy in cm.
+ //track = QString::number(location->getTrack()); //Returns direction of motion in degrees(0-359).
+ //epd = QString::number(location->getEpd()); //Returns track accuracy in degrees.
+ //climb = QString::number(location->getClimb()); //Returns current rate of climb in m/s.
+ //epc = QString::number(location->getEpc()); //Returns climb accuracy in m/s.
//location->distance_between_two_points(double latitude_s, double longitude_s, double latitude_f, double longitude_f);
+ //time = location->getTime();//Returns timestamp of the update in seconds.
+
+ //If route recording true
+ if ( recordingStatus == true )
+ {
+ latitude = location->getLatitude(); //Returns latitude.
+ longitude = location->getLongitude(); //Returns longitude.
+ altitude = location->getAltitude(); //Returns fix altitude in meters.
+ epv = location->getEpv(); //Returns altitude accuracy in meters.
+ speed = location->getSpeed(); //Returns current speed in km/h.
+ eps = location->getEps(); //Returns speed accuracy in km/h.
+
+ gpsTimer->start(1);
+
+ //If first round
+ if (roundCounter == 0)
+ {
+ saveRoute();
+ }
+
+ else
+ {
+ latitudeNow.sprintf("%.4f", latitude); //Latitude now to string
+ longitudeNow.sprintf("%.4f", longitude);//Longitude now to string
+ latitudePrevious.sprintf("%.4f", gpsDataArray[0]); //Previous latitude to string
+ longitudePrevious.sprintf("%.4f", gpsDataArray[1]); //Previous longitude to string
+
+ //If latitude or longitude change
+ if ( latitudeNow != latitudePrevious || longitudeNow != longitudePrevious )
+ {
+ saveRoute();
+ }
+ }
+ }
}
+/**
+ *This slot function is called when gprs update location.
+ */
void GPSData::awcp()
{
}
+/**
+ *This slot function is called when .
+ */
void GPSData::locationUpdated()
{
}
+/**
+ *This slot function is called when .
+ */
void GPSData::gpsConnected()
{
}
+/**
+ *This slot function is called when .
+ */
void GPSData::gpsDisconnected()
{
}
-void GPSData::gps_error(int error)
+/**
+ *This slot function is called when .
+ */
+void GPSData::gpsError()
+{
+
+}
+
+/**
+ *This slot function is called when .
+ */
+void GPSData::gpsdRunning()
+{
+
+}
+
+/**
+ *This slot function is called when .
+ */
+void GPSData::gpsdStopped()
{
}
-void GPSData::gpsd_running()
+/**
+ *This function start route recording.
+ *@param QString time recording start time.
+ */
+void GPSData::startRouteRecording(QString time)
{
+ if (recordingStatus == false)
+ {
+ routeStartTime = time;
+ recordingStatus = true;
+ roundCounter = 0;
+ }
+}
+/**
+ *This function stop route recording.
+ *@param QString time recording stop time.
+ */
+void GPSData::stopRouteRecording(QString time)
+{
+ if (recordingStatus == true)
+ {
+ routeStopTime = time;
+ recordingStatus = false;
+ roundCounter = 0;
+ saveRoute();
+ }
+}
+
+/**
+ *This slot function is called when gps timer timeout(10s).
+ */
+void GPSData::gpsTimerTimeout()
+{
+ gpsTimeMS++;
}
-void GPSData::gpsd_stopped()
+/**
+ *This function save route to .txt file.
+ */
+void GPSData::saveRoute()
{
+ QFile file("route" + routeStartTime + ".txt");
+ QTextStream route(&file);
+
+ if ( recordingStatus == true )
+ {
+ //First round.
+ if ( roundCounter == 0 )
+ {
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+ return;
+
+ route << "Start: " << routeStartTime << "\n";
+ }
+
+ else
+ {
+ if (!file.open(QIODevice::Append | QIODevice::Text))
+ return;
+ }
+
+ gpsDataArray[0] = latitude;
+ gpsDataArray[1] = longitude;
+ gpsDataArray[2] = altitude;
+ gpsDataArray[3] = speed;
+ roundCounter ++;
+
+ route << " la: " << latitude
+ << " \t lo: " << longitude
+ << " \t al: " << altitude
+ << " \t epv: " << epv
+ << " \t sp: " << speed
+ << " \t eps: " << eps
+ << " \t ms: " << gpsTimeMS
+ << "\n";
+ gpsTimeMS = 0;
+ file.close();
+ }
+
+ //Final round.
+ else
+ {
+ if (!file.open(QIODevice::Append | QIODevice::Text))
+ return;
+ route << "Stop: " << routeStopTime << "\n";
+ file.close();
+ }
+}
+
+
+/**
+ *@return RoundCounter, the number of gpsDataArray[][] rows.
+ */
+int GPSData::getRoundCounter()
+{
+ return roundCounter;
}