--- Begin Message ---
Hello,
please find attached a patch against legacy qlandkarte-svn that
enables build of more serial drivers for win32.
Compile-tested only.
The NMEA driver didn't work, so I disabled it in the selection box.
best regards,
Andreas
Index: qlandkarte/trunk/QLandkarte.pro
===================================================================
--- qlandkarte/trunk/QLandkarte.pro (Revision 519)
+++ qlandkarte/trunk/QLandkarte.pro (Arbeitskopie)
@@ -24,9 +24,14 @@
win32 {
SUBDIRS += sub_WinGarminUSB \
+ sub_GPSMap76 \
+ sub_EtrexLegend \
+ sub_EtrexH \
+ sub_Emap \
+ sub_NMEA \
sub_NMEATcp \
sub_whatGarmin \
- sub_EtrexLegend
+ sub_whatGarminSerial
}
sub_src.subdir = src
Index: qlandkarte/trunk/src/CDlgDevice.cpp
===================================================================
--- qlandkarte/trunk/src/CDlgDevice.cpp (Revision 519)
+++ qlandkarte/trunk/src/CDlgDevice.cpp (Arbeitskopie)
@@ -55,7 +55,16 @@
comboDev->addItem("EtrexVistaCx");
comboDev->addItem("NMEATcp");
comboDev->addItem("infoAboutMyGarmin");
+ comboDev->addItem("Emap");
comboDev->addItem("EtrexLegend");
+ comboDev->addItem("EtrexVista");
+ comboDev->addItem("EtrexClassic");
+ comboDev->addItem("EtrexH");
+ comboDev->addItem("EtrexEuro");
+ comboDev->addItem("GPSMap76");
+ comboDev->addItem("GPSMap76S");
+ comboDev->addItem("whatGarminSerial");
+// comboDev->addItem("NMEA"); // FIXME
comboDev->setCurrentIndex(0);
// Die folgende Zeile funktioniert nicht, da m_DeviceName zu diesem Zeitpunkt leer ist
Index: qlandkarte/trunk/src/device/NMEA/NMEA.pro
===================================================================
--- qlandkarte/trunk/src/device/NMEA/NMEA.pro (Revision 519)
+++ qlandkarte/trunk/src/device/NMEA/NMEA.pro (Arbeitskopie)
@@ -9,7 +9,9 @@
target.path = $${QLANDKARTE_LIBDIR}
TARGETDEPS += ../../../src/device/libgarmin.a
LIBS += ../../../src/device/libgarmin.a
+win32:LIBS += -L../../../libs/mingw -lpthreadGC2 -lsetupapi
INCLUDEPATH += ../../../src/device
+win32:INCLUDEPATH += ../../../libs/mingw/include
MOC_DIR = .tmp
OBJECTS_DIR = .tmp
TARGET = NMEA
Index: qlandkarte/trunk/src/device/NMEA/CDevice.cpp
===================================================================
--- qlandkarte/trunk/src/device/NMEA/CDevice.cpp (Revision 519)
+++ qlandkarte/trunk/src/device/NMEA/CDevice.cpp (Arbeitskopie)
@@ -31,6 +31,10 @@
#include <errno.h>
#include <iostream>
#include <sstream>
+#ifdef HAVE_MALLOC_H
+#include <malloc.h>
+#endif
+#include <stdlib.h>
#ifndef HAVE_STRSEP
/* This function was added by JP because windows dosnt have it */
@@ -99,9 +103,18 @@
str=(char*) alloca(256);
strcpy(str,GPRMCLine);
+#ifdef WIN32
+ next = strtok(str, ",*");
+#else
next = strsep(&str, ",*");
+#endif
while( next ) {
+#ifdef WIN32
+ next = strtok(str, ",*");
+#else
next = strsep(&str, ",*");
+#endif
+ // next = strsep(&str, ",*");
i++;
switch (i) {
case 2:
@@ -177,9 +190,19 @@
//$GPGGA,181724.000,3436.6185,S,05834.6896,W,1,05,1.7,27.9,M,14.8,M,,0000*6B
str=(char*) alloca(256);
strcpy(str,GPGGALine);
+#ifdef WIN32
+ next = strtok(str, ",*");
+#else
next = strsep(&str, ",*");
+#endif
+ // next = strsep(&str, ",*");
while( next ) {
+#ifdef WIN32
+ next = strtok(str, ",*");
+#else
next = strsep(&str, ",*");
+#endif
+ // next = strsep(&str, ",*");
i++;
switch (i) {
case 8:
@@ -204,9 +227,19 @@
double epe=0l,eph=0l,epv=0l;
str=(char*) alloca(256);
strcpy(str,GPGSALine);
+#ifdef WIN32
+ next = strtok(str, ",*");
+#else
next = strsep(&str, ",*");
+#endif
+ // next = strsep(&str, ",*");
while( next ) {
+#ifdef WIN32
+ next = strtok(str, ",*");
+#else
next = strsep(&str, ",*");
+#endif
+ // next = strsep(&str, ",*");
i++;
switch (i) {
case 15:
Index: qlandkarte/trunk/src/device/NMEA/loader.cpp
===================================================================
--- qlandkarte/trunk/src/device/NMEA/loader.cpp (Revision 519)
+++ qlandkarte/trunk/src/device/NMEA/loader.cpp (Arbeitskopie)
@@ -27,8 +27,13 @@
static CDevice * device = 0;
}
+#ifdef WIN32
+#define WIN_EXPORT __declspec(dllexport)
+#else
+#define WIN_EXPORT
+#endif
-extern "C" Garmin::IDevice * initNMEA(const char * version)
+extern "C" WIN_EXPORT Garmin::IDevice * initNMEA(const char * version)
{
if(strncmp(version,INTERFACE_VERSION,5) != 0) {
return 0;
Index: qlandkarte/trunk/src/device/Emap/Emap.pro
===================================================================
--- qlandkarte/trunk/src/device/Emap/Emap.pro (Revision 519)
+++ qlandkarte/trunk/src/device/Emap/Emap.pro (Arbeitskopie)
@@ -9,7 +9,9 @@
target.path = $${QLANDKARTE_LIBDIR}
TARGETDEPS += ../../../src/device/libgarmin.a
LIBS += ../../../src/device/libgarmin.a
+win32:LIBS += -L../../../libs/mingw -lpthreadGC2 -lsetupapi
INCLUDEPATH += ../../../src/device
+win32:INCLUDEPATH += ../../../libs/mingw/include
MOC_DIR = .tmp
OBJECTS_DIR = .tmp
TARGET = Emap
Index: qlandkarte/trunk/src/device/Emap/loader.cpp
===================================================================
--- qlandkarte/trunk/src/device/Emap/loader.cpp (Revision 519)
+++ qlandkarte/trunk/src/device/Emap/loader.cpp (Arbeitskopie)
@@ -27,8 +27,13 @@
static CDevice * device = 0;
}
+#ifdef WIN32
+#define WIN_EXPORT __declspec(dllexport)
+#else
+#define WIN_EXPORT
+#endif
-extern "C" Garmin::IDevice * initEmap(const char * version)
+extern "C" WIN_EXPORT Garmin::IDevice * initEmap(const char * version)
{
if(strncmp(version,INTERFACE_VERSION,5) != 0) {
return 0;
Index: qlandkarte/trunk/src/device/EtrexH/loader.cpp
===================================================================
--- qlandkarte/trunk/src/device/EtrexH/loader.cpp (Revision 519)
+++ qlandkarte/trunk/src/device/EtrexH/loader.cpp (Arbeitskopie)
@@ -27,8 +27,13 @@
static CDevice * device = 0;
}
+#ifdef WIN32
+#define WIN_EXPORT __declspec(dllexport)
+#else
+#define WIN_EXPORT
+#endif
-extern "C" Garmin::IDevice * initEtrexH(const char * version)
+extern "C" WIN_EXPORT Garmin::IDevice * initEtrexH(const char * version)
{
if(strncmp(version,INTERFACE_VERSION,5) != 0) {
return 0;
@@ -43,7 +48,7 @@
return EtrexH::device;
}
-extern "C" Garmin::IDevice * initEtrexEuro(const char * version)
+extern "C" WIN_EXPORT Garmin::IDevice * initEtrexEuro(const char * version)
{
if(strncmp(version,INTERFACE_VERSION,5) != 0) {
return 0;
Index: qlandkarte/trunk/src/device/EtrexH/EtrexH.pro
===================================================================
--- qlandkarte/trunk/src/device/EtrexH/EtrexH.pro (Revision 519)
+++ qlandkarte/trunk/src/device/EtrexH/EtrexH.pro (Arbeitskopie)
@@ -9,7 +9,9 @@
target.path = $${QLANDKARTE_LIBDIR}
TARGETDEPS += ../../../src/device/libgarmin.a
LIBS += ../../../src/device/libgarmin.a
+win32:LIBS += -L../../../libs/mingw -lpthreadGC2 -lsetupapi
INCLUDEPATH += ../../../src/device
+win32:INCLUDEPATH += ../../../libs/mingw/include
MOC_DIR = .tmp
OBJECTS_DIR = .tmp
TARGET = EtrexH
Index: qlandkarte/trunk/src/device/whatGarminSerial/whatGarminSerial.pro
===================================================================
--- qlandkarte/trunk/src/device/whatGarminSerial/whatGarminSerial.pro (Revision 519)
+++ qlandkarte/trunk/src/device/whatGarminSerial/whatGarminSerial.pro (Arbeitskopie)
@@ -10,8 +10,9 @@
TARGETDEPS += ../../../src/device/libgarmin.a
LIBS += ../../../src/device/libgarmin.a
-
+win32:LIBS += -L../../../libs/mingw -lpthreadGC2 -lsetupapi
INCLUDEPATH += ../../../src/device
+win32:INCLUDEPATH += ../../../libs/mingw/include
MOC_DIR = .tmp
OBJECTS_DIR = .tmp
Index: qlandkarte/trunk/src/device/whatGarminSerial/loader.cpp
===================================================================
--- qlandkarte/trunk/src/device/whatGarminSerial/loader.cpp (Revision 519)
+++ qlandkarte/trunk/src/device/whatGarminSerial/loader.cpp (Arbeitskopie)
@@ -27,8 +27,13 @@
static CDevice * device = 0;
}
+#ifdef WIN32
+#define WIN_EXPORT __declspec(dllexport)
+#else
+#define WIN_EXPORT
+#endif
-extern "C" Garmin::IDevice * initwhatGarminSerial(const char * version)
+extern "C" WIN_EXPORT Garmin::IDevice * initwhatGarminSerial(const char * version)
{
if(strncmp(version,INTERFACE_VERSION,5) != 0) {
return 0;
Index: qlandkarte/trunk/src/device/GPSMap76/GPSMap76.pro
===================================================================
--- qlandkarte/trunk/src/device/GPSMap76/GPSMap76.pro (Revision 519)
+++ qlandkarte/trunk/src/device/GPSMap76/GPSMap76.pro (Arbeitskopie)
@@ -9,7 +9,9 @@
target.path = $${QLANDKARTE_LIBDIR}
TARGETDEPS += ../../../src/device/libgarmin.a
LIBS += ../../../src/device/libgarmin.a
+win32:LIBS += -L../../../libs/mingw -lpthreadGC2 -lsetupapi
INCLUDEPATH += ../../../src/device
+win32:INCLUDEPATH += ../../../libs/mingw/include
MOC_DIR = .tmp
OBJECTS_DIR = .tmp
TARGET = GPSMap76
Index: qlandkarte/trunk/src/device/GPSMap76/loader.cpp
===================================================================
--- qlandkarte/trunk/src/device/GPSMap76/loader.cpp (Revision 519)
+++ qlandkarte/trunk/src/device/GPSMap76/loader.cpp (Arbeitskopie)
@@ -27,8 +27,13 @@
static CDevice * device = 0;
}
+#ifdef WIN32
+#define WIN_EXPORT __declspec(dllexport)
+#else
+#define WIN_EXPORT
+#endif
-extern "C" Garmin::IDevice * initGPSMap76(const char * version)
+extern "C" WIN_EXPORT Garmin::IDevice * initGPSMap76(const char * version)
{
if(strncmp(version,INTERFACE_VERSION,5) != 0) {
return 0;
@@ -41,7 +46,7 @@
return GPSMap76::device;
}
-extern "C" Garmin::IDevice * initGPSMap76S(const char * version)
+extern "C" WIN_EXPORT Garmin::IDevice * initGPSMap76S(const char * version)
{
if(strncmp(version,INTERFACE_VERSION,5) != 0) {
return 0;
Index: qlandkarte/trunk/src/CCentralResources.cpp
===================================================================
--- qlandkarte/trunk/src/CCentralResources.cpp (Revision 519)
+++ qlandkarte/trunk/src/CCentralResources.cpp (Arbeitskopie)
@@ -482,6 +482,42 @@
libname = QString("%1/EtrexLegend.dll").arg(path);
funcname = QString("initEtrexLegend");
}
+ else if ( m_DeviceName == "EtrexVista" ) {
+ libname = QString("%1/EtrexLegend.dll").arg(path);
+ funcname = QString("initEtrexVista");
+ }
+ else if ( m_DeviceName == "EtrexClassic" ) {
+ libname = QString("%1/EtrexLegend.dll").arg(path);
+ funcname = QString("initEtrexClassic");
+ }
+ else if ( m_DeviceName == "EtrexH" ) {
+ libname = QString("%1/EtrexH.dll").arg(path);
+ funcname = QString("initEtrexH");
+ }
+ else if ( m_DeviceName == "EtrexEuro" ) {
+ libname = QString("%1/EtrexH.dll").arg(path);
+ funcname = QString("initEtrexEuro");
+ }
+ else if ( m_DeviceName == "Emap" ) {
+ libname = QString("%1/Emap.dll").arg(path);
+ funcname = QString("initEmap");
+ }
+ else if ( m_DeviceName == "GPSMap76" ) {
+ libname = QString("%1/GPSMap76.dll").arg(path);
+ funcname = QString("initGPSMap76");
+ }
+ else if ( m_DeviceName == "GPSMap76S" ) {
+ libname = QString("%1/GPSMap76.dll").arg(path);
+ funcname = QString("initGPSMap76S");
+ }
+ else if ( m_DeviceName == "whatGarminSerial" ) {
+ libname = QString("%1/whatGarminSerial.dll").arg(path);
+ funcname = QString("initwhatGarminSerial");
+ }
+ else if ( m_DeviceName == "NMEA" ) {
+ libname = QString("%1/NMEA.dll").arg(path);
+ funcname = QString("initNMEA");
+ }
else {
libname = QString("%1/GPSMap60CSx.dll").arg(path);
funcname = QString("init%1").arg(m_DeviceName);
--- End Message ---