Hallo,
als Cache-Anfänger wurde mir vor kurzem CacheWolf empfohlen. Das Programm gefiel mir dann auch ganz gut, jedoch wollte mein Garmin partout nicht mit CW zusammenarbeiten. Hier im Forum stieß ich dann auf den anscheinend bekannten Ewe-Bug bzgl. Linux + seriellen Ports (oder so ähnlich).
Na gut, als nächstes probierte ich es dann mit dem gpsd (v2.95). Das sah auch ganz vielversprechend aus, allerdings funktionierte es noch immer nicht. Etwas Recherche (gpsd-Homepage, siehe "Urgent news [...]") brachte zu Tage, dass sich das von gpsd verwendete Protokoll vor kurzem geändert hat. Und siehe da: CW versucht, mit gpsd über das alte Protokoll zu kommunizieren, der versteht aber neuerdings nur JSON.
Ich habe also die letzten Tage damit verbracht, CW so zurechtzuhacken, dass es mit den neuen gpsd-Versionen funktioniert. In der Theorie müsste das auch funktionieren, allerdings kann ich den Code erst nachher (d. h. heute) auch mit meinem GPS-Gerät testen (gerade kein Empfang und müde bin ich auch).
Ich hoffe, dass ihr Interesse an meinem Patch habt -- falls nicht, nun... Dann hatte ich immerhin eben etwas "Spaß" mit Java. Man lernt ja gerne etwas dazu.
Der Patch ist gegen die neueste SVN-Revision erstellt (r2717). Da ich eher selten in Java programmiere, ist mein Code sicherlich nicht perfekt und könnte durchaus noch etwas aufpoliert werden. Folgende Probleme gibt es noch:
Ich glaube, das waren alle Probleme. Vielleicht fällt mir ja später noch mehr ein...
Also, ich würde mich freuen, wenn der eine oder andere meinen Patch testet und/oder Kritik übt (hm, das klingt so furchtbar auffordernd. Soll es nicht, ich möchte einfach nur etwas zu CW beitragen
).
Den Patch (v1) findet ihr unter: http://files.ax86.net/CacheWolf/cachewolf_gpsd-json-support.diff
Grüße,
Tblue
als Cache-Anfänger wurde mir vor kurzem CacheWolf empfohlen. Das Programm gefiel mir dann auch ganz gut, jedoch wollte mein Garmin partout nicht mit CW zusammenarbeiten. Hier im Forum stieß ich dann auf den anscheinend bekannten Ewe-Bug bzgl. Linux + seriellen Ports (oder so ähnlich).
Na gut, als nächstes probierte ich es dann mit dem gpsd (v2.95). Das sah auch ganz vielversprechend aus, allerdings funktionierte es noch immer nicht. Etwas Recherche (gpsd-Homepage, siehe "Urgent news [...]") brachte zu Tage, dass sich das von gpsd verwendete Protokoll vor kurzem geändert hat. Und siehe da: CW versucht, mit gpsd über das alte Protokoll zu kommunizieren, der versteht aber neuerdings nur JSON.
Ich habe also die letzten Tage damit verbracht, CW so zurechtzuhacken, dass es mit den neuen gpsd-Versionen funktioniert. In der Theorie müsste das auch funktionieren, allerdings kann ich den Code erst nachher (d. h. heute) auch mit meinem GPS-Gerät testen (gerade kein Empfang und müde bin ich auch).
Ich hoffe, dass ihr Interesse an meinem Patch habt -- falls nicht, nun... Dann hatte ich immerhin eben etwas "Spaß" mit Java. Man lernt ja gerne etwas dazu.
Der Patch ist gegen die neueste SVN-Revision erstellt (r2717). Da ich eher selten in Java programmiere, ist mein Code sicherlich nicht perfekt und könnte durchaus noch etwas aufpoliert werden. Folgende Probleme gibt es noch:
- Ich musste einen JSON-Parser für Ewe anpassen/portieren. Es scheint alles zu funktionieren, jedoch musste ich die verwendeten Java-Klassen durch ihre Ewe-Äquivalente ersetzen. Manche dieser Klassen sind nicht threadsafe und ich habe nicht genau getestet, ob das Probleme macht. Wie schon gesagt, bisher scheint aber alles zu klappen.
- Der erwähnte Parser ist unter irgendetwas BSD-ähnlichem lizenziert. Wenn ich mich richtig erinnere, ist das mit der GPL kompatibel. Falls ich mich irre, habe ich ein Problem (oder muss einen GPL-lizenzieren JSON-Parser finden).
- gpsd liefert neuerdings keine Bearing-Daten (auf Deutsch heißt das glaube ich Peilung?) mehr. Schade, schade. :/ Das Feld wird im Navigationspanel nun einfach ausgeblendet, wenn gpsd genutzt wird. [fixed, siehe v2]
- Das Lesen vom gpsd-Socket kann den Thread blockieren. Da es aber im Normalfall immer eine Antwort vom gpsd gibt, scheint das kein Problem darzustellen. Mit etwas Arbeit kann ich das aber sicherlich auch entsprechend umprogrammieren (andererseits verwendete der alte gpsd-Code auch keine nonblocking calls).
- Sollte es Nutzer geben, die noch alte gpsd-Versionen nutzen (mit denen CW funktioniert), müssten sie gpsd upgraden. Das ist eigentlich kein großes Problem, aber erwähnen wollte ich das trotzdem. [fixed, siehe v2]
Ich glaube, das waren alle Probleme. Vielleicht fällt mir ja später noch mehr ein...
Also, ich würde mich freuen, wenn der eine oder andere meinen Patch testet und/oder Kritik übt (hm, das klingt so furchtbar auffordernd. Soll es nicht, ich möchte einfach nur etwas zu CW beitragen
Den Patch (v1) findet ihr unter: http://files.ax86.net/CacheWolf/cachewolf_gpsd-json-support.diff
Grüße,
Tblue