Index: trunk/BNC/bncutils.cpp
===================================================================
--- trunk/BNC/bncutils.cpp	(revision 1380)
+++ trunk/BNC/bncutils.cpp	(revision 1381)
@@ -52,4 +52,6 @@
 using namespace std;
 
+// 
+////////////////////////////////////////////////////////////////////////////
 void expandEnvVar(QString& str) {
 
@@ -67,4 +69,6 @@
 }
 
+// 
+////////////////////////////////////////////////////////////////////////////
 QDateTime dateAndTimeFromGPSweek(int GPSWeek, double GPSWeeks) {
 
@@ -81,4 +85,6 @@
 }
 
+// 
+////////////////////////////////////////////////////////////////////////////
 void currentGPSWeeks(int& week, double& sec) {
 
@@ -112,4 +118,6 @@
 }
 
+// 
+////////////////////////////////////////////////////////////////////////////
 QDateTime currentDateAndTimeGPS() {
   int    GPSWeek;
@@ -119,2 +127,43 @@
 }
 
+// 
+////////////////////////////////////////////////////////////////////////////
+QString ggaString(const QByteArray& latitude, const QByteArray& longitude) {
+
+  double lat = strtod(latitude,NULL);
+  double lon = strtod(longitude,NULL);
+
+  const char* flagN="N";
+  const char* flagE="E";
+  if (lon >180.) {lon=(lon-360.)*(-1.); flagE="W";}
+  if ((lon < 0.) && (lon >= -180.))  {lon=lon*(-1.); flagE="W";}
+  if (lon < -180.)  {lon=(lon+360.); flagE="E";}
+  if (lat < 0.)  {lat=lat*(-1.); flagN="S";}
+  QTime ttime(QDateTime::currentDateTime().toUTC().time());
+  int lat_deg = (int)lat;  
+  double lat_min=(lat-lat_deg)*60.;
+  int lon_deg = (int)lon;  
+  double lon_min=(lon-lon_deg)*60.;
+  int hh = 0 , mm = 0;
+  double ss = 0.0;
+  hh=ttime.hour();
+  mm=ttime.minute();
+  ss=(double)ttime.second()+0.001*ttime.msec();
+  QString gga;
+  gga += "GPGGA,";
+  gga += QString("%1%2%3,").arg((int)hh, 2, 10, QLatin1Char('0')).arg((int)mm, 2, 10, QLatin1Char('0')).arg((int)ss, 2, 10, QLatin1Char('0'));
+  gga += QString("%1%2,").arg((int)lat_deg,2, 10, QLatin1Char('0')).arg(lat_min, 7, 'f', 4, QLatin1Char('0'));
+  gga += flagN;
+  gga += QString(",%1%2,").arg((int)lon_deg,3, 10, QLatin1Char('0')).arg(lon_min, 7, 'f', 4, QLatin1Char('0'));
+  gga += flagE + QString(",1,05,1.00,+00100,M,10.000,M,,");
+  int xori;
+  char XOR = 0;
+  char *Buff =gga.toAscii().data();
+  int iLen = strlen(Buff);
+  for (xori = 0; xori < iLen; xori++) {
+    XOR ^= (char)Buff[xori];
+  }
+  gga += QString("*%1").arg(XOR, 2, 16, QLatin1Char('0'));
+
+  return gga;
+}
Index: trunk/BNC/bncutils.h
===================================================================
--- trunk/BNC/bncutils.h	(revision 1380)
+++ trunk/BNC/bncutils.h	(revision 1381)
@@ -37,3 +37,5 @@
 QDateTime currentDateAndTimeGPS();
 
+QString ggaString(const QByteArray& latitude, const QByteArray& longitude);
+
 #endif
