123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- This is the gpsd to-do list. If you're viewing it with Emacs, try
- doing Ctl-C Ctl-t and browsing through the outline headers. Ctl-C Ctl-a
- will unfold them again.
- For contribution guidelines and internals documentation, please see
- the "Hacking Guide" on the project website.
- The list of bugs exposed by gpsd in other software has moved to
- the "Upstream Bugs" page on the project website.
- ** Installation **
- Improve the uninstall target. Remove library syminks.
- Make libdir conform to new FHS layout: 32bit in lib/ and 64bit in
- lib64/. Doing that also makes the uninstall more complex.
- ** Documentation **
- We now have two different calibration procedures in the Time Service
- HOWTO. One was written by Gary and is based on peerstats; the other by
- Sanjeev Gupta and is based on loopstats.
- Can these be merged? How do we know which is appropriate to use when?
- What could we build in the way of tools and visualization aids to make
- the calibration process less annoying?
- ** Things to do when we can break compatibility **
- -------------------------------------------------------------------------
- In gps_data_t, save PPS precision; this will require creating a pps struct.
- Where would PPS precision come from?
- Make the Python JSON client as smart as the C JSON client. Gonna be
- a big job. The C client checks all the JSON classes for completeness
- and correctness. For example, a missing JSON field will be replaced
- with a default value. Also out of bounds values are fixed. The Python
- client does no checks. it just mushes a JSON sentence into a big Python
- variable. No validity checking, no missing fields fixed, etc. The C
- client uses a generic validator function, fed with templates for each
- JSON message. Initially harder than a simple procedural parser, Once
- running it is very robust and easy to tweak.
- Add u-blox IMU (UBX-ESF-RAW) support. Nothing we can do without
- samples or a u-blox IMU.
- Adding a sample Go client (gpspipe -> pytogo -> Go ?).
- Move webgps.py out of contrib. It needs a man page and light cleanup.
- ** Bugs in gpsd and its clients:
- *** Tracker bugs
- See the GPSD bug tracker on the project website, but don't be
- surprised if it's empty or very sparse. Our rate of new defects per
- month is quite low.
- *** RFC2783 bugs
- **** detangle TIOCMIWAIT and RFC2783
- Currently, the code for RFC2783 seems to depend (logically) on
- TIOCMIWAIT support. However, RFC2783 (and really, no standard)
- defines TIOCMIWAIT, and NetBSD (and probably FreeBSD) do not implement
- it. So, there really should be two separate implementations, one that
- works with TIOCMIWAIT (and thus only on Linux and OpenBSD) and one
- that assumes only RFC2783 (and thus works on Linux, FreeBSD and
- NetBSD, as well as any future system that complies with RFC2783 and
- uses the serial port for time_pps_init).
- *** Client bugs
- *** Dispatcher/network issues
- **** Reading AISHub data via UDP confuses xgps with short writes
- To reproduce, "gpsd -D 5 -N -n udp://192.168.1.3:12346" (only
- works inside thyrsus.com) and run xgps. Probably some kind of
- packet aggregation issue as it doesn't happen with test logs.
- *** Driver issues
- **** RTCM3 analysis is incomplete
- We can presently decode RTCM3 messages of type 1001-1014, 1029, and
- 1033. This is not the complete set. We need more test data with
- different types in them, and a copy of the RTCM3 standard at latest
- revision (all we have is revision 3).
- The support for unpacking RTCM3 sentences in the client library is
- limited to 1001, 1002, 1007, 1008, 1009, 1010, 1014, and 1033. There
- are some design issues with the baby JSON parser that are going to
- make extending this set difficult.
- **** Reporting code for specialized Type 6 and 8 AIS messages is incomplete.
- This one is mine and Kurt Schwehr's. Support is currently nearly
- complete; the only missing cases are a handful of IMO 236 and IMO 289
- message 6 and 8 subtypes - specifically, 6/23, 8/21, 8/22, 8/24, and
- 8/26.
- ** New features **
- ** Qt **
- Add a sample client
- *** Time tracking
- Our goal is to be independent of the system clock.
- Create a CLI tool to convert UTC to GPS week/tow and back.
- **** Maybe apply wraparound compensation ****
- See <http://www.febo.com/pipermail/time-nuts/2013-August/079271.html>
- *** Optionally use tag blocks in NMEA output
- Ed W. writes:
- >Feature request: I would like to see an option to get the NMEA data
- >out of gpsd, but augmented with a timestamp on each sentence and
- >details of which input fed in the data. TAG blocks appear to solve
- >that problem perfectly. So the feature request is simply an option
- >that inserts a TAG block for each emitted sentence from GPSd with a
- >timestamp and some handle which references the input method for the
- >sentence.
- >
- >I think all this is effectively emitted with the JSON output (?), so
- >really this is just adding it to the NMEA sentence output options via
- >the TAG structure
- However, Iván Sánchez Ortega notes:
- >There is one *big* problem with using TAG blocks to timestamp the sentences.
- >The standards (as far as I/we know) say that the timestamp is **either** the
- >number of seconds **or** milliseconds since the UNIX epoch, but we do **not**
- >know if the initial state should be secs, msecs, or nothing. We do not know
- >how clients reading that TAGblocked NMEA stream should ask GPSD to switch the
- >timestamp units (or enable/disable them).
- >
- >There are a few sentences introduced in NMEA 4.00 that supposedly allow that -
- >the client sends a sentence to the server, and then the server starts
- >TAGblocking sentences. But, alas, there are no examples anywhere.
- >
- >>From my personal experience, the way to know if a TAGblocked timestamp is in
- >seconds or milliseconds is ask the people in charge of setting up the
- >device/service. Perhaps some devices output only secs/msecs, and some other
- >accept the NMEA 4.00 TAGblock configuration sentences.
- >
- >I, for one, would like to see the secs/msecs problem solved before GPSD
- >embarks on the enterprise of writing TAGblocks.
- If someone is working on this, please see:
- http://www.nmea.org/Assets/0183_errata_tag_block_final.pdf
- **** Speed, mode and rate-changes in client-mode gpsctl.
- Baud rate and mode changes work in direct mode but are not
- reliable in client mode.
- **** Optional dump of GPS configuration using gpsctl.
- Some settings, like antenna in use, dead-reckoning mode, would be
- helpful to see.
- **** Integrate 1PPS into profiling ***
- We caw now *really* measure latency from GPS top of second when it has
- 1PPS. Add this capability to gpsprof and revise the "Where's the
- Latency?" white paper.
- *** Low-power autoconfiguration in the uBlox driver ***
- Anthony Stirk <upuaut@gmail.com> writes on Wed May 21 06:09:00 2014:
- The low power modes are really good on the ublox modules (especially the
- MAX7's) however a word of warning.
- We use the 1 sec cyclic mode on our balloon trackers but if the module
- looses satellites or is jammed out (cheap Chinese cameras do it) the ublox
- modules seem to hang and become unresponsive. To mitigate against this you
- need to put the module back in max performance mode as soon as the
- satellites drops below 4.
- I'm not sure for most applications the low power mode needs to be used at
- all on the newer ublox modules. The values for the MAX-7Q are 22mA (6Q
- 50mA) under acquire, tracking (i.e locked and in max performance) current
- at is 17mA (39mA 6Q) and power saving reduces this to 5mA or less (15mA on
- the 6Q). We've observed the issue on the 6 and 7 series.
- A possibility: drop the chip to low-power mode when it can see > 4
- sats, revert to normal otherwise.
- *** Make subframe reports available in the C API.
- gpsd now reports subframes when they're available, but the C client
- library doesn't yet parse them. A sample program to dump the SUBFRAME
- data would also be useful. Gary Miller has this in his queue.
- *** Write advanced features for TNT Revolution device
- The baud-rate switcher in the TNT driver needs to be tested.
- gpsmon could support a number of TNT configuration commands, including
- unit changes. See http://gpsd.googlecode.com/truenorth-reference.pdf
- for possibilities.
- Jon Schlueter has one of these on a flock machine, so testing
- shouldn't be difficult.
- *** Finish gpssim
- It's blocked on skyview computation.
- *** Complete and test the speed/parity/stopbit methods in the drivers
- These are used for the '?DEVICE' command. All work for 8N1.
- **** superstar2: not implemented (driver is unfinished)
- **** italk: not implemented (but could be)
- **** tsip: speed tested, parity and stop-bit switching not tested
- **** sirf: speed tested, parity and stop-bit switching not tested
- **** evermore: speed tested, rejects parity/stopbit setting
- **** ubx: fully implemented, parity and stop-bit switching not tested
- **** zodiac: fully implemented, not tested
- **** navcom.c: speed tested, rejects parity/stopbit setting
- SiRF, UBX, TSIP, and even Zodiac can support non-8N1 modes; these need
- to be tested.
- *** Per-driver restore of changed config settings on exit.
- This is a solved problem for generic NMEA, EverMore, TripMate,
- EarthMate, TNT, Zodiac, and RTCM104 drivers (if only because they
- don't configure any device settings).
- The SiRF driver now restores NMEA when necessary. It also restores
- some (but not all) of the things it tweaks in binary mode -- at the
- moment, just the Navigation Parameters from message 0x13. With more
- work, we should be able to do a full revert.
- The TSIP driver changes its per-cycle sentence inventory and thus
- needs some state-restore logic. This can be done; the same packet 0x35
- we use to configure it can be sent in a no-argument mode to query
- the current sentence mix for later restore.
- The FV18 changes its per-cycle sentence inventory to include GSAs. It
- is possible to query that inventory, though we don't have code to do
- it yet.
- Garmin devices are a mess. We reconfigure those heavily, and we
- don't know if there's any way to capture their configuration state
- before we do it.
- The iTrax02 driver sets SYNCMODE to start navigation messages without
- checking to see if it's already on, and stops navigation methods on
- wrapup. It also forces the set of sentences issued. There doesn't
- seem to be any way to query these settings.
- ** Future features (?)
- *** Support for more survey / professional / up-scale receivers.
- Devices such as the Javad JNSCore, Hemisphere Crescent, Septentrio
- AsteRx and PolaRx, NovAtel Superstar2 and OEMV, Thales (Magellan
- Professional) AC12 and DG14 would all be welcome. Of course, these
- are not $50 USB mice...
- Local variables:
- mode: outline
- paragraph-separate: "[ ]*$"
- end:
|