Route recoding. Save latitude,longitude,altitude and speed.
authorToni Jussila <toni.jussila@fudeco.com>
Mon, 22 Mar 2010 12:27:39 +0000 (14:27 +0200)
committerToni Jussila <toni.jussila@fudeco.com>
Mon, 22 Mar 2010 12:27:39 +0000 (14:27 +0200)
Client/carmainwindow.cpp
Client/carmainwindow.h
Client/carmainwindow.ui
Client/gpsdata.cpp
Client/gpsdata.h
Client/maemo5location.cpp
Client/maemo5location.h
Client/maemo5locationprivate.cpp
Client/maemo5locationprivate.h

index 68ecd57..2216ca0 100644 (file)
@@ -762,7 +762,8 @@ void CarMainWindow::gpsStatus()
         if (location->getSatellitesInUse() >= 4)
         {
             //Set status
-            ui->labelRouteTabGPSStatus->setText("GPS ready");
+            //ui->labelRouteTabGPSStatus->setText("GPS ready");
+            ui->labelRouteTabGPSStatus->setText(QString::number(gpsData->roundCounter));
 
             //Set time
             gpsTime->setTime_t(location->getTime());
@@ -778,4 +779,17 @@ void CarMainWindow::gpsStatus()
             ui->labelRouteTabGPSStatus->setText("Waiting for GPS");
         }
     }
+    ui->labelRouteTabSpeed->setText(QString::number(location->getSpeed()));
+}
+
+void CarMainWindow::on_startRecPushButton_clicked()
+{
+    ui->labelRouteTabRecStatus->setText("Recording started");
+    gpsData->startRouteRecording(ui->labelRouteTabGPSTime->text());
+}
+
+void CarMainWindow::on_stopRecPushButton_clicked()
+{
+    ui->labelRouteTabRecStatus->setText("Recording stopped");
+    gpsData->stopRouteRecording(ui->labelRouteTabGPSTime->text());
 }
index 9d8f573..8e78595 100644 (file)
@@ -128,6 +128,8 @@ signals:
     void userNameChanged();
 
 private slots:
+    void on_stopRecPushButton_clicked();
+    void on_startRecPushButton_clicked();
     void on_pushButtonShowResultDialog_clicked();
     void on_gpsOnCheckBox_stateChanged(int GPSState);   //Route-tab view
     void gpsStatus();                                   //Route-tab view
index 184f91f..3780027 100644 (file)
          </property>
         </widget>
        </item>
+       <item>
+        <widget class="QLabel" name="labelRouteTabRecStatus">
+         <property name="text">
+          <string>Label rec status</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="labelRouteTabSpeed">
+         <property name="text">
+          <string>Label speed</string>
+         </property>
+        </widget>
+       </item>
       </layout>
      </widget>
     </widget>
index aa0b436..baf6448 100644 (file)
@@ -20,9 +20,9 @@ GPSData::GPSData(Maemo5Location *maemo5location)
     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,59 +34,167 @@ 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 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.
+    //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();
 }
index 51ee130..2c6f4b6 100644 (file)
@@ -11,6 +11,8 @@
 
 #include <QObject>
 #include <maemo5location.h>
+#include <QFile>
+#include <QTextStream>
 
 class GPSData : public QObject
 {
@@ -18,9 +20,41 @@ class GPSData : public QObject
 public:
     GPSData(Maemo5Location *maemo5location);
     ~GPSData();
+    void startRouteRecording(QString time);
+    void stopRouteRecording(QString time);
+    int roundCounter; //testing, move private!!!
 
 private:
     Maemo5Location *location;
+    void resetAll();
+    void saveRoute();
+
+    int satellitesInUse; //Number of satellites in use.
+    int satellitesInView;//Number of satellites in view.
+    int signalStrength;  //Average signal strength of satellites which are in use.
+    double latitude;     //Latitude.
+    double longitude;    //Longitude.
+    double time;         //Timestamp of the update in seconds.
+    double ept;          //Time accuracy in seconds.
+    double eph;          //Horizontal position accuracy in cm.
+    double altitude;     //Fix altitude in meters.
+    double epv;          //Altitude accuracy in meters.
+    double track;        //Direction of motion in degrees(0-359).
+    double epd;          //Track accuracy in degrees.
+    double speed;        //Current speed in km/h.
+    double eps;          //Speed accuracy in km/h.
+    double climb;        //Current rate of climb in m/s.
+    double epc;          //Climb accuracy in m/s.
+    QString routeStartTime;
+    QString routeStopTime;
+    QString latitudeNow;
+    QString longitudeNow;
+    QString latitudePrevious;
+    QString longitudePrevious;
+
+    bool recordingStatus;
+    //int roundCounter;
+    double gpsDataArray[100][4];
 
 private slots:
     void agnss();
@@ -28,9 +62,10 @@ private slots:
     void locationUpdated();
     void gpsConnected();
     void gpsDisconnected();
-    void gps_error(int error);
-    void gpsd_running();
-    void gpsd_stopped();
+    void gpsError();
+    void gpsdRunning();
+    void gpsdStopped();
+
 };
 
 #endif // GPSDATA_H
index d869419..a8065fd 100755 (executable)
@@ -23,9 +23,9 @@ Maemo5Location::Maemo5Location(QObject* parent):QObject(parent)
     connect(ptr, SIGNAL(locationUpdated()), this, SIGNAL(locationUpdated()));
     connect(ptr, SIGNAL(gps_connected()), this, SIGNAL(gps_connected()));
     connect(ptr, SIGNAL(gps_disconnected()), this, SIGNAL(gps_disconnected()));
-    connect(ptr, SIGNAL(gps_err(int)), this, SIGNAL(gps_error(int)));
+    connect(ptr, SIGNAL(gps_error(int)), this, SIGNAL(gps_error(int)));
     connect(ptr, SIGNAL(gpsd_running()), this, SIGNAL(gpsd_running()));
-    connect(ptr, SIGNAL(gpsd_stopped()), this, SIGNAL(gpsd_stopped())); 
+    connect(ptr, SIGNAL(gpsd_stopped()), this, SIGNAL(gpsd_stopped()));
 }
 
 /**
index 2e69b75..7f376f0 100755 (executable)
@@ -47,7 +47,7 @@ signals:
     void locationUpdated();
     void gps_connected();
     void gps_disconnected();
-    void gps_error(int error);
+    void gps_error(int);
     void gpsd_running();
     void gpsd_stopped();
 
index 5bde883..d8b3b5d 100755 (executable)
@@ -123,23 +123,23 @@ void gps_error_func(LocationGPSDControl *control, gint error, Maemo5LocationPriv
 
     switch (error) {
       case LOCATION_ERROR_USER_REJECTED_DIALOG:
-        emit gps->gps_err(0);
+        emit gps->gps_error(0);
         g_debug("User didn't enable requested methods");
         break;
       case LOCATION_ERROR_USER_REJECTED_SETTINGS:
-        emit gps->gps_err(1);
+        emit gps->gps_error(1);
         g_debug("User changed settings, which disabled location");
         break;
       case LOCATION_ERROR_BT_GPS_NOT_AVAILABLE:
-        emit gps->gps_err(2);
+        emit gps->gps_error(2);
         g_debug("Problems with BT GPS");
         break;
       case LOCATION_ERROR_METHOD_NOT_ALLOWED_IN_OFFLINE_MODE:
-        emit gps->gps_err(3);
+        emit gps->gps_error(3);
         g_debug("Requested method is not allowed in offline mode");
         break;
       case LOCATION_ERROR_SYSTEM:
-        emit gps->gps_err(4);
+        emit gps->gps_error(4);
         g_debug("System error");
         break;
       }
index 9d35b27..c61d041 100755 (executable)
@@ -66,7 +66,7 @@ signals:
     void locationUpdated();
     void gps_connected();
     void gps_disconnected();
-    void gps_err(int error);
+    void gps_error(int);
     void gpsd_running();
     void gpsd_stopped();