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)
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 [email protected] https://lists.sourceforge.net/lists/listinfo/qlandkarte-users
