Please find below a diff containing more fixes for Mac OS X:
* Fix shared lib extension (.dylib) for all drivers
* GPSMap60CSx driver:
  - Fix big endian issues.  I tested track and waypoint upload and download,
    route download, live log mode and screen shot.  No idea how to create new
    routes, so I didn't test upload.  Map up-/download is also untested.  Icon
    upload should work, but is apparently not supported by QLandkarteGT.
  - Introduce screen[hv]flip properties for proper screen shot treatment.
  - Fix a few typos (thanks to Eclipse's spell checker).

BTW, two suggestions for QLandkarteGT:  There should be a possibility to create
new tracks and routes, like new waypoints.  And the custom icons should be
uploaded together with the waypoints if any of them uses one.

Best, Albrecht.
Index: src/EtrexH/CMakeLists.txt
===================================================================
--- src/EtrexH/CMakeLists.txt	(Revision 1840)
+++ src/EtrexH/CMakeLists.txt	(Arbeitskopie)
@@ -24,7 +24,7 @@ foreach(var ${ALIASES})
     message(" ${var}")
     add_custom_command( TARGET EtrexH
                         POST_BUILD
-                        COMMAND ln ARGS -sf libEtrexH.so lib${var}.so
+                        COMMAND ln ARGS -sf libEtrexH${SHARED_LIB_EXT} lib${var}${SHARED_LIB_EXT}
                         WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}
                         )
 endforeach(var)
Index: src/GPSMap76/CMakeLists.txt
===================================================================
--- src/GPSMap76/CMakeLists.txt	(Revision 1840)
+++ src/GPSMap76/CMakeLists.txt	(Arbeitskopie)
@@ -24,7 +24,7 @@ foreach(var ${ALIASES})
     message(" ${var}")
     add_custom_command( TARGET GPSMap76
                         POST_BUILD
-                        COMMAND ln ARGS -sf libGPSMap76.so lib${var}.so
+                        COMMAND ln ARGS -sf libGPSMap76${SHARED_LIB_EXT} lib${var}${SHARED_LIB_EXT}
                         WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}
                         )
 endforeach(var)
Index: src/EtrexLegend/CMakeLists.txt
===================================================================
--- src/EtrexLegend/CMakeLists.txt	(Revision 1840)
+++ src/EtrexLegend/CMakeLists.txt	(Arbeitskopie)
@@ -24,7 +24,7 @@ foreach(var ${ALIASES})
     message(" ${var}")
     add_custom_command( TARGET EtrexLegend
                         POST_BUILD
-                        COMMAND ln ARGS -sf libEtrexLegend.so lib${var}.so
+                        COMMAND ln ARGS -sf libEtrexLegend${SHARED_LIB_EXT} lib${var}${SHARED_LIB_EXT}
                         WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}
                         )
 endforeach(var)
Index: src/EtrexLegendC/CMakeLists.txt
===================================================================
--- src/EtrexLegendC/CMakeLists.txt	(Revision 1840)
+++ src/EtrexLegendC/CMakeLists.txt	(Arbeitskopie)
@@ -24,7 +24,7 @@ foreach(var ${ALIASES})
     message(" ${var}")
     add_custom_command( TARGET EtrexLegendC
                         POST_BUILD
-                        COMMAND ln ARGS -sf libEtrexLegendC.so lib${var}.so
+                        COMMAND ln ARGS -sf libEtrexLegendC${SHARED_LIB_EXT} lib${var}${SHARED_LIB_EXT}
                         WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}
                         )
 endforeach(var)
Index: src/GPSMap60CSx/CDevice.cpp
===================================================================
--- src/GPSMap60CSx/CDevice.cpp	(Revision 1840)
+++ src/GPSMap60CSx/CDevice.cpp	(Arbeitskopie)
@@ -33,6 +33,13 @@ using namespace GPSMap60CSx;
 using namespace Garmin;
 using namespace std;
 
+#if defined(HAVE_BIGENDIAN) || !defined(CAN_UNALIGNED)
+#  define DBG_SHOW_WAYPOINT
+#  define UNTESTED throw exce_t(errSync, "This function has not yet been tested on your platform.")
+#else
+#  define UNTESTED
+#endif
+
 namespace GPSMap60CSx
 {
 
@@ -122,7 +129,7 @@ namespace GPSMap60CSx
             command.type = GUSB_APPLICATION_LAYER;
             command.id   = Pid_Command_Data;
             command.size = 2;
-            *(uint16_t*)command.payload = Cmnd_Start_Pvt_Data;
+            *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Start_Pvt_Data);
             dev->usb->write(command);
 
             while(dev->doRealtimeThread) {
@@ -143,7 +150,7 @@ namespace GPSMap60CSx
             command.type = GUSB_APPLICATION_LAYER;
             command.id   = Pid_Command_Data;
             command.size = 2;
-            *(uint16_t*)command.payload = Cmnd_Stop_Pvt_Data;
+            *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Stop_Pvt_Data);
             dev->usb->write(command);
 
             dev->_release();
@@ -164,6 +171,8 @@ namespace GPSMap60CSx
 
 CDevice::CDevice()
 : devid(0)
+, screenhflip(false)
+, screenvflip(false)
 , usb(0)
 , doRealtimeThread(false)
 , pScreen(0)
@@ -194,9 +203,6 @@ const string& CDevice::getCopyright()
 
 void CDevice::_acquire()
 {
-#if defined(HAVE_BIGENDIAN) || !defined(CAN_UNALIGNED)
-    throw exce_t(errSync, "This device has not yet been ported to your platform.");
-#endif
     usb = new CUSB();
     usb->open();
     if(devid == 0x01a5) {
@@ -220,6 +226,7 @@ void CDevice::_acquire()
 void CDevice::_uploadMap(const uint8_t * mapdata, uint32_t size, const char * key)
 {
     if(usb == 0) return;
+    UNTESTED;
     Packet_t command;
     Packet_t response;
     int cancel = 0;
@@ -235,16 +242,16 @@ void CDevice::_uploadMap(const uint8_t * mapdata,
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = Pid_Command_Data;
     command.size = 2;
-    *(uint16_t*)command.payload = Cmnd_Transfer_Mem;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Mem);
     usb->write(command);
 
     while(usb->read(response)) {
         if(response.id == Pid_Capacity_Data) {
-            cout << "free memory: " << dec << (((uint32_t*)response.payload)[1] / (1024*1024)) << " MB" << endl;
-            uint32_t memory = ((uint32_t*)response.payload)[1];
+            uint32_t memory = gar_ptr_load(uint32_t, response.payload + 4);
+            cout << "free memory: " << dec << memory / (1024*1024) << " MB" << endl;
             if(memory < size) {
                 stringstream msg;
-                msg << "Failed to send map: Unit has not enought memory (available/needed): " << memory << "/" << size << " bytes";
+                msg << "Failed to send map: Unit has not enough memory (available/needed): " << memory << "/" << size << " bytes";
                 throw exce_t(errRuntime,msg.str());
             }
         }
@@ -271,7 +278,7 @@ void CDevice::_uploadMap(const uint8_t * mapdata,
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = 75;
     command.size = 2;
-    *(uint16_t*)command.payload = 0x000A;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, 0x000A);
     usb->write(command);
 
     while(usb->read(response)) {
@@ -291,7 +298,7 @@ void CDevice::_uploadMap(const uint8_t * mapdata,
         chunkSize       = (size < (GUSB_PAYLOAD_SIZE - sizeof(offset))) ? size : (GUSB_PAYLOAD_SIZE - sizeof(offset));
         command.size    = chunkSize + sizeof(offset);
 
-        *(uint32_t*)command.payload = offset;
+        *(uint32_t*)command.payload = gar_endian(uint32_t, offset);
         memcpy(command.payload + sizeof(offset),mapdata,chunkSize);
         size    -= chunkSize;
         mapdata += chunkSize;
@@ -300,7 +307,7 @@ void CDevice::_uploadMap(const uint8_t * mapdata,
         usb->write(command);
 
         double progress = ((total - size) * 100.0) / total;
-        callback(progress,0,&cancel,0,"Transfering map data.");
+        callback(progress,0,&cancel,0,"Transferring map data.");
     }
 
     callback(100,0,&cancel,0,"done");
@@ -309,7 +316,7 @@ void CDevice::_uploadMap(const uint8_t * mapdata,
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = 45;
     command.size = 2;
-    *(uint16_t*)command.payload = 0x000A;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, 0x000A);
     usb->write(command);
 }
 
@@ -317,6 +324,7 @@ void CDevice::_uploadMap(const uint8_t * mapdata,
 void CDevice::_uploadMap(const char * filename, uint32_t size, const char * key)
 {
     if(usb == 0) return;
+    UNTESTED;
     Packet_t command;
     Packet_t response;
     int cancel = 0;
@@ -332,16 +340,16 @@ void CDevice::_uploadMap(const char * filename, ui
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = Pid_Command_Data;
     command.size = 2;
-    *(uint16_t*)command.payload = Cmnd_Transfer_Mem;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Mem);
     usb->write(command);
 
     while(usb->read(response)) {
         if(response.id == Pid_Capacity_Data) {
-            cout << "free memory: " << dec << (((uint32_t*)response.payload)[1] / (1024*1024)) << " MB" << endl;
-            uint32_t memory = ((uint32_t*)response.payload)[1];
+            uint32_t memory = gar_ptr_load(uint32_t, response.payload + 4);
+            cout << "free memory: " << dec << memory / (1024*1024) << " MB" << endl;
             if(memory < size) {
                 stringstream msg;
-                msg << "Failed to send map: Unit has not enought memory (available/needed): " << memory << "/" << size << " bytes";
+                msg << "Failed to send map: Unit has not enough memory (available/needed): " << memory << "/" << size << " bytes";
                 throw exce_t(errRuntime,msg.str());
             }
         }
@@ -368,7 +376,7 @@ void CDevice::_uploadMap(const char * filename, ui
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = 75;
     command.size = 2;
-    *(uint16_t*)command.payload = 0x000A;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, 0x000A);
     usb->write(command);
 
     while(usb->read(response)) {
@@ -399,7 +407,7 @@ void CDevice::_uploadMap(const char * filename, ui
 
         fread(buffer, chunkSize, 1, fid);
 
-        *(uint32_t*)command.payload = offset;
+        *(uint32_t*)command.payload = gar_endian(uint32_t, offset);
         memcpy(command.payload + sizeof(offset),buffer,chunkSize);
         size    -= chunkSize;
         offset  += chunkSize;
@@ -407,7 +415,7 @@ void CDevice::_uploadMap(const char * filename, ui
         usb->write(command);
 
         double progress = ((total - size) * 100.0) / total;
-        callback(progress,0,&cancel,0,"Transfering map data.");
+        callback(progress,0,&cancel,0,"Transferring map data.");
     }
 
     callback(100,0,&cancel,0,"done");
@@ -416,7 +424,7 @@ void CDevice::_uploadMap(const char * filename, ui
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = 45;
     command.size = 2;
-    *(uint16_t*)command.payload = 0x000A;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, 0x000A);
     usb->write(command);
 }
 
@@ -425,6 +433,7 @@ void CDevice::_queryMap(std::list<Map_t>& maps)
 {
     maps.clear();
     if(usb == 0) return;
+    UNTESTED;
 
     Packet_t command;
     Packet_t response;
@@ -509,7 +518,7 @@ void CDevice::_downloadWaypoints(list<Garmin::Wpt_
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = Pid_Command_Data;
     command.size = 2;
-    *(uint16_t*)command.payload = Cmnd_Transfer_Wpt;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Wpt);
     usb->write(command);
 
     while(1) {
@@ -517,7 +526,7 @@ void CDevice::_downloadWaypoints(list<Garmin::Wpt_
 
         if(response.id == Pid_Records) {
 #ifdef DBG_SHOW_WAYPOINT
-            cout << "number of waypoints:" << *(int16_t*)response.payload << endl;
+            cout << "number of waypoints:" << gar_ptr_load(uint16_t, response.payload) << endl;
 #endif
         }
 
@@ -539,7 +548,7 @@ void CDevice::_downloadWaypoints(list<Garmin::Wpt_
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = Pid_Command_Data;
     command.size = 2;
-    *(uint16_t*)command.payload = Cmnd_Transfer_Prx;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Prx);
     usb->write(command);
 
     while(1) {
@@ -549,7 +558,7 @@ void CDevice::_downloadWaypoints(list<Garmin::Wpt_
         if(response.id == Pid_Records) {
             //TODO read data
 #ifdef DBG_SHOW_WAYPOINT
-            cout << "number of proximity waypoints:" << *(int16_t*)response.payload << endl;
+            cout << "number of proximity waypoints:" << gar_ptr_load(uint16_t, response.payload) << endl;
 #endif
         }
 
@@ -627,7 +636,7 @@ void CDevice::_uploadWaypoints(std::list<Garmin::W
         command.type = GUSB_APPLICATION_LAYER;
         command.id   = Pid_Records;
         command.size = 2;
-        *(uint16_t*)command.payload = prx_wpt_cnt;
+        *(uint16_t*)command.payload = gar_endian(uint16_t, prx_wpt_cnt);
         usb->write(command);
 
         wpt = waypoints.begin();
@@ -649,7 +658,7 @@ void CDevice::_uploadWaypoints(std::list<Garmin::W
         command.type = GUSB_APPLICATION_LAYER;
         command.id   = Pid_Xfer_Cmplt;
         command.size = 2;
-        *(uint16_t*)command.payload = Cmnd_Transfer_Prx;
+        *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Prx);
         usb->write(command);
 
     }
@@ -659,7 +668,7 @@ void CDevice::_uploadWaypoints(std::list<Garmin::W
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = Pid_Records;
     command.size = 2;
-    *(uint16_t*)command.payload = waypoints.size();
+    *(uint16_t*)command.payload = gar_endian(uint16_t, waypoints.size());
     usb->write(command);
 
     wpt = waypoints.begin();
@@ -680,7 +689,7 @@ void CDevice::_uploadWaypoints(std::list<Garmin::W
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = Pid_Xfer_Cmplt;
     command.size = 2;
-    *(uint16_t*)command.payload = Cmnd_Transfer_Wpt;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Wpt);
     usb->write(command);
 
 }
@@ -704,7 +713,7 @@ void CDevice::_downloadTracks(std::list<Garmin::Tr
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = Pid_Command_Data;
     command.size = 2;
-    *(uint16_t*)command.payload = Cmnd_Transfer_Trk;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Trk);
     usb->write(command);
 
     int         trackidx = 0;
@@ -731,7 +740,7 @@ void CDevice::_downloadTracks(std::list<Garmin::Tr
         }
 
         if(response.id == Pid_Records) {
-            ntotal = *(uint16_t *)response.payload;
+            ntotal = gar_ptr_load(uint16_t, response.payload);
         }
 
         if(response.id == Pid_Trk_Data) {
@@ -758,7 +767,7 @@ void CDevice::_downloadTracks(std::list<Garmin::Tr
 
             if (++npts % 100 == 0) {
                 double progress = (npts * 100.0) / ntotal;
-                callback(progress,0,&cancel,0,"Transfering track data.");
+                callback(progress,0,&cancel,0,"Transferring track data.");
             }
         }
 
@@ -770,7 +779,7 @@ void CDevice::_downloadTracks(std::list<Garmin::Tr
         command.type = GUSB_APPLICATION_LAYER;
         command.id   = Pid_Command_Data;
         command.size = 2;
-        *(uint16_t*)command.payload = Cmnd_Abort_Transfer;
+        *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Abort_Transfer);
         usb->write(command);
     }
 
@@ -802,7 +811,7 @@ void CDevice::_uploadTracks(std::list<Garmin::Trac
         command.type = GUSB_APPLICATION_LAYER;
         command.id   = Pid_Records;
         command.size = 2;
-        *(uint16_t*)command.payload = nrec;
+        *(uint16_t*)command.payload = gar_endian(uint16_t, nrec);
         usb->write(command);
 
         // write track header
@@ -844,7 +853,7 @@ void CDevice::_uploadTracks(std::list<Garmin::Trac
         command.type = GUSB_APPLICATION_LAYER;
         command.id   = Pid_Xfer_Cmplt;
         command.size = 2;
-        *(uint16_t*)command.payload = Cmnd_Transfer_Trk;
+        *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Trk);
         usb->write(command);
         ++track;
     }
@@ -870,7 +879,7 @@ void CDevice::_downloadRoutes(std::list<Garmin::Ro
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = Pid_Command_Data;
     command.size = 2;
-    *(uint16_t*)command.payload = Cmnd_Transfer_Rte;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Rte);
     usb->write(command);
 
     int         routeidx = 0;
@@ -896,7 +905,7 @@ void CDevice::_downloadRoutes(std::list<Garmin::Ro
         }
 
         if(response.id == Pid_Records) {
-            ntotal = *(uint16_t *)response.payload;
+            ntotal = gar_ptr_load(uint16_t, response.payload);
         }
 
         if(response.id == Pid_Rte_Wpt_Data) {
@@ -907,7 +916,7 @@ void CDevice::_downloadRoutes(std::list<Garmin::Ro
 
             if (++npts % 50 == 0) {
                 double progress = (npts * 100.0) / ntotal;
-                callback(progress,0,&cancel,0,"Transfering route data.");
+                callback(progress,0,&cancel,0,"Transferring route data.");
             }
         }
 
@@ -925,7 +934,7 @@ void CDevice::_downloadRoutes(std::list<Garmin::Ro
         command.type = GUSB_APPLICATION_LAYER;
         command.id   = Pid_Command_Data;
         command.size = 2;
-        *(uint16_t*)command.payload = Cmnd_Abort_Transfer;
+        *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Abort_Transfer);
         usb->write(command);
     }
 
@@ -936,6 +945,7 @@ void CDevice::_downloadRoutes(std::list<Garmin::Ro
 void CDevice::_uploadRoutes(list<Garmin::Route_t>& routes)
 {
     if(usb == 0) return;
+    UNTESTED;
 
     if(devid == 0x0231) return IDeviceDefault::_uploadRoutes(routes);
 
@@ -959,7 +969,7 @@ void CDevice::_uploadRoutes(list<Garmin::Route_t>&
         command.type = GUSB_APPLICATION_LAYER;
         command.id   = Pid_Records;
         command.size = 2;
-        *(uint16_t*)command.payload = nrec;
+        *(uint16_t*)command.payload = gar_endian(uint16_t, nrec);
         usb->write(command);
 
         // write route header
@@ -1000,7 +1010,7 @@ void CDevice::_uploadRoutes(list<Garmin::Route_t>&
         command.type = GUSB_APPLICATION_LAYER;
         command.id   = Pid_Xfer_Cmplt;
         command.size = 2;
-        *(uint16_t*)command.payload = Cmnd_Transfer_Rte;
+        *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Rte);
         usb->write(command);
         ++route;
     }
@@ -1010,8 +1020,10 @@ void CDevice::_uploadRoutes(list<Garmin::Route_t>&
 
 void CDevice::_uploadCustomIcons(list<Garmin::Icon_t>& icons)
 {
-    if(usb == 0) return;
+    cout << "running uploadCustomIcons for device " << hex << devid << endl;
 
+	if(usb == 0) return;
+
     if(devid == 0x0231) return IDeviceDefault::_uploadCustomIcons(icons);
 
     Packet_t command;
@@ -1032,7 +1044,7 @@ void CDevice::_uploadCustomIcons(list<Garmin::Icon
         command.type = GUSB_APPLICATION_LAYER;
         command.id   = Pid_Req_Icon_Id;
         command.size = 2;
-        *(uint16_t*)command.payload = icon->idx + 1;
+        *(uint16_t*)command.payload = gar_endian(uint16_t, icon->idx + 1);
         usb->write(command);
 
         while(usb->read(response)) {
@@ -1173,19 +1185,38 @@ void CDevice::_screenshot(char *& clrtbl, char *&
     *(uint32_t*)command.payload = tan;
     usb->write(command);
 
-    if(devid == 0x0312 || devid == 0x02b6) {
-        for(int r = 0; r < screenheight; ++r) {
-            for(int c = 0; c < screenwidth; ++c) {
-                pScreen[r * screenwidth + c] = buffer[(r + 1) * screenwidth - c - 1];
+    cout << "device " << devname << " hor " << screenhflip << " vert " << screenvflip << endl;
+
+    if(screenhflip) {
+    	// screen shot is horizontally flipped
+    	if(screenvflip) {
+    		// screen shot is also vertically flipped
+            for(int r = 0; r < screenheight; ++r) {
+                for(int c = 0; c < screenwidth; ++c) {
+                    pScreen[r * screenwidth + c] = buffer[(screenheight - r) * screenwidth - c - 1];
+                }
             }
-        }
-    }
-    else {
-        for(int r = 0; r < screenheight; ++r) {
-            for(int c = 0; c < screenwidth; ++c) {
-                pScreen[r * screenwidth + c] = buffer[(screenheight - 1 - r) * screenwidth + c];
+    	} else {
+    		// vertical organisation of the screen shot is fine
+            for(int r = 0; r < screenheight; ++r) {
+                for(int c = 0; c < screenwidth; ++c) {
+                    pScreen[r * screenwidth + c] = buffer[(r + 1) * screenwidth - c - 1];
+                }
             }
-        }
+     	}
+    } else {
+    	// horizontal organisation of the screen shot is fine
+    	if(screenvflip) {
+    		// screen shot is vertically flipped
+    		for(int r = 0; r < screenheight; ++r) {
+    			memcpy(pScreen + r * screenwidth,
+    				   buffer + (screenheight - 1 - r) * screenwidth,
+    				   screenwidth);
+    		}
+    	} else {
+    		// vertical organisation of the screen shot is fine
+    		memcpy(pScreen, buffer, screenheight * screenwidth);
+    	}
     }
 
     clrtbl  = aClrtbl;
@@ -1239,7 +1270,7 @@ void CDevice::_getDevProperties(Garmin::DevPropert
     command.type = GUSB_APPLICATION_LAYER;
     command.id   = Pid_Command_Data;
     command.size = 2;
-    *(uint16_t*)command.payload = Cmnd_Transfer_Mem;
+    *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Mem);
     usb->write(command);
 
     // try to read SD Ram capacity
@@ -1247,8 +1278,8 @@ void CDevice::_getDevProperties(Garmin::DevPropert
     uint16_t tile_limit = 0;
     while(usb->read(response)) {
         if(response.id == Pid_Capacity_Data) {
-            tile_limit = ((uint16_t*)response.payload)[1];
-            memory = ((uint32_t*)response.payload)[1];
+            tile_limit = gar_ptr_load(uint16_t, response.payload + 2);
+            memory = gar_ptr_load(uint32_t, response.payload + 4);
         }
     }
     if(tile_limit == 0) {
Index: src/GPSMap60CSx/loader.cpp
===================================================================
--- src/GPSMap60CSx/loader.cpp	(Revision 1840)
+++ src/GPSMap60CSx/loader.cpp	(Arbeitskopie)
@@ -177,6 +177,7 @@ extern "C" WIN_EXPORT Garmin::IDevice * initEtrexV
     //     GPSMap60CSx::device->devid          = 0x0312;
     GPSMap60CSx::device->screenwidth    = 176;
     GPSMap60CSx::device->screenheight   = 220;
+    GPSMap60CSx::device->screenhflip    = true;
 
     return GPSMap60CSx::device;
 }
@@ -194,6 +195,7 @@ extern "C" WIN_EXPORT Garmin::IDevice * initEtrexV
     GPSMap60CSx::device->devid          = 0x02b6;
     GPSMap60CSx::device->screenwidth    = 176;
     GPSMap60CSx::device->screenheight   = 220;
+    GPSMap60CSx::device->screenhflip    = true;
 
     return GPSMap60CSx::device;
 }
@@ -211,6 +213,7 @@ extern "C" WIN_EXPORT Garmin::IDevice * initEtrexL
     GPSMap60CSx::device->devid          = 0x0694;
     GPSMap60CSx::device->screenwidth    = 176;
     GPSMap60CSx::device->screenheight   = 220;
+    GPSMap60CSx::device->screenhflip    = true;
 
     return GPSMap60CSx::device;
 }
Index: src/GPSMap60CSx/CDevice.h
===================================================================
--- src/GPSMap60CSx/CDevice.h	(Revision 1840)
+++ src/GPSMap60CSx/CDevice.h	(Arbeitskopie)
@@ -38,6 +38,8 @@ namespace GPSMap60CSx
             uint32_t devid;
             uint16_t screenwidth;
             uint16_t screenheight;
+            bool screenvflip;
+            bool screenhflip;
 
             const std::string& getCopyright();
 
Index: src/GPSMap60CSx/CMakeLists.txt
===================================================================
--- src/GPSMap60CSx/CMakeLists.txt	(Revision 1840)
+++ src/GPSMap60CSx/CMakeLists.txt	(Arbeitskopie)
@@ -32,7 +32,7 @@ foreach(var ${ALIASES})
     message(" ${var}")
     add_custom_command( TARGET GPSMap60CSx
                         POST_BUILD
-                        COMMAND ln ARGS -sf libGPSMap60CSx.so lib${var}.so
+                        COMMAND ln ARGS -sf libGPSMap60CSx${SHARED_LIB_EXT} lib${var}${SHARED_LIB_EXT}
                         WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}
                         )
 endforeach(var)
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt	(Revision 1840)
+++ CMakeLists.txt	(Arbeitskopie)
@@ -43,6 +43,12 @@ include_directories(
   ${CMAKE_CURRENT_BINARY_DIR}
 )
 
+if(APPLE)
+  set(SHARED_LIB_EXT ".dylib")
+elseif(UNIX)
+  set(SHARED_LIB_EXT ".so")
+endif (APPLE)
+
 find_package(USB REQUIRED)
 
 add_subdirectory(./src)

Attachment: pgpNfcTkT9qZS.pgp
Description: PGP signature

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
QLandkarte-users mailing list
QLandkarte-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qlandkarte-users

Reply via email to