Added to GUI an info label and feeding text into it.
[speedfreak] / Client / gpsdata.cpp
index 4dd783e..f0cc158 100644 (file)
 /**
   *Default constructor of this class.
   */
-GPSData::GPSData()
+GPSData::GPSData(Maemo5Location *maemo5location)
 {
-    location = new Maemo5Location(this);
+    location = maemo5location;
 
     connect(location,SIGNAL(agnss()),this,SLOT(agnss()));
     connect(location,SIGNAL(awcp()),this,SLOT(awcp()));
     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()));
 }
 
 /**
@@ -34,58 +34,183 @@ GPSData::~GPSData()
     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 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.
+    //epv = QString::number(location->getEpv());                          //Returns altitude accuracy in meters.
+    //track = QString::number(location->getTrack());                      //Returns direction of motion in degrees(0-359).
+    //epd = QString::number(location->getEpd());                          //Returns track accuracy in degrees.
+    //eps = QString::number(location->getEps());                          //Returns speed accuracy in km/h.
+    //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.
+
+    latitude    = location->getLatitude();  //Returns latitude.
+    longitude   = location->getLongitude(); //Returns longitude.
+    altitude    = location->getAltitude();  //Returns fix altitude in meters.
+    speed       = location->getSpeed();     //Returns current speed in km/h.
+
+    latitudeNow.sprintf("%.4f", latitude);  //Latitude now to string
+    longitudeNow.sprintf("%.4f", longitude);//Longitude now to string
+    latitudePrevious.sprintf("%.4f", gpsDataArray[roundCounter-1][0]);  //Previous latitude to string
+    longitudePrevious.sprintf("%.4f", gpsDataArray[roundCounter-1][1]); //Previous longitude to string
+
+    if ( recordingStatus == true )
+    {
+        if ( roundCounter == 0 || latitudeNow != latitudePrevious || longitudeNow != longitudePrevious )
+        {
+            gpsDataArray[roundCounter][0] = latitude;
+            gpsDataArray[roundCounter][1] = longitude;
+            gpsDataArray[roundCounter][2] = altitude;
+            gpsDataArray[roundCounter][3] = speed;
+            roundCounter ++;
+        }
+    }
 }
 
+/**
+  *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()
 {
 
 }
 
-void GPSData::gpsd_running()
+/**
+  *This slot function is called when .
+  */
+void GPSData::gpsdStopped()
 {
 
 }
 
-void GPSData::gpsd_stopped()
+void GPSData::startRouteRecording(QString time)
+{
+    if (recordingStatus == false)
+    {
+        routeStartTime = time;
+        recordingStatus = true;
+        roundCounter = 0;
+    }
+}
+
+void GPSData::stopRouteRecording(QString time)
 {
+    routeStopTime = time;
+    saveRoute();
+    if (recordingStatus == true)
+    {
+        recordingStatus = false;
+        roundCounter = 0;
+    }
+}
 
+void GPSData::saveRoute()
+{
+    QFile file("testroute.txt");
+    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+    {
+        return;
+    }
+    QTextStream route(&file);
+
+    route << "Start: " << routeStartTime << "\n";
+    for (int i = 0 ; i <= roundCounter ; i++)
+    {
+        route << " lat: " << gpsDataArray[i][0]
+              << " lon: " << gpsDataArray[i][1]
+              << " alt: " << gpsDataArray[i][2]
+              << " spe: " << gpsDataArray[i][3]
+              << "\n";
+    }
+    route << "Stop: " << routeStopTime << "\n";
+    file.close();
+}
+
+/**
+  *@return Pointer to gpsDataArray[][].
+  */
+double* GPSData::getGpsDataArray()
+{
+    return *gpsDataArray;
+}
+
+/**
+  *@return RoundCounter, the number of gpsDataArray[][] rows.
+  */
+int GPSData::getRoundCounter()
+{
+    return roundCounter;
 }