diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2009-01-20 03:41:45 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2009-01-20 03:41:45 +0000 |
commit | 75be0201cb6ac504ea7a2159a66c31ad69a5d858 (patch) | |
tree | 7c961be504bab0b426c30c301579fbf7c15a3d5e | |
parent | c288fb6cc7e3e3c34461bcfe8b735745a91b32a8 (diff) | |
download | gpsd-75be0201cb6ac504ea7a2159a66c31ad69a5d858.tar.gz |
We can now generate a better hardware data dable fom the database.
-rw-r--r-- | Makefile.am | 3 | ||||
-rw-r--r-- | gpscap.ini | 21 | ||||
-rw-r--r-- | gpscap.py | 52 |
3 files changed, 67 insertions, 9 deletions
diff --git a/Makefile.am b/Makefile.am index 6307aa23..da3b00d5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -333,7 +333,8 @@ EXTRA_DIST = \ setup.py \ packet_states.h \ libgps.pc.in \ - libgpsd.pc.in + libgpsd.pc.in \ + gpscap.ini CLEANFILES = $(BUILT_SOURCES) floattest *.core $(PYEXTENSIONS) @@ -78,21 +78,23 @@ tested = 2.34 [SiRF-2] type = engine description = Version 2 of the SiRF GPS engine -uses = SiRF-2 -nmea = 2.2 # Later versions may do 2.3 +engine = SiRF-2 +# Later versions may do 2.3 +nmea = 2.2 uses = GenericSiRF tested = 2.37 [SiRF-3] type = engine description = Version 3 of the SiRF GPS engine -uses = SiRF-3 +engine = SiRF-3 nmea = 3.01 uses = GenericSiRF tested = 2.37 [Garmin] type = engine +engine = Garmin description = There are several versions; the differences are not clear. reference = http://www.garmin.com/support/commProtocol.html @@ -255,7 +257,7 @@ vendor_site = http://www.unitraq.com/ [GBT709] type = device vendor = Altina -description = handset +packaging = handset reference = http://www.altina.com/produkty.php?destCatId=&mainCatId=13&subCatId=&prId=19 interfaces = Bluetooth btglitch = yes @@ -299,6 +301,7 @@ type = device vendor = Billionton packaging = GPS mouse reference = http://www.billionton.com/english/product/CF-GPS.htm +uses = SiRF-2 interfaces = CF tested = 2.16 notes = Uses SiRF firmware version 220.006.000ES. Accepts WAAS Mode Disable @@ -315,8 +318,9 @@ packaging = GPS mouse reference = http://www.cpit.com/en/GP-27.html uses = Nemerix interfaces = Bluetooth +tested = 2.28 btglitch = True -notes = <td> Reported by Tobias Minich <belgabor@gmx.de> <ul> +notes = Reported by Tobias Minich <belgabor@gmx.de> <ul> <li>There are proprietary PNMRX{30[0124],603} sentences that are only sent on change or by request</li> <li>Several sentences can be sent to the device to change settings or @@ -428,6 +432,7 @@ notes = The 17N has been discontinued and replaced by the 17HVS. [Garmin GPS-17HVS] type = device vendor = Garmin +packaging = GPS mouse reference = https://buy.garmin.com/shop/shop.do?cID=158&pID=8630 engine = Unknown interfaces = RS232 @@ -484,6 +489,7 @@ reference = http://au.geocities.com/glennbaddeley/gps/data/GPS38_OwnersManualAnd uses = Garmin interfaces = RS232 tested = regression +nmea = 2.0 discontinued = True notes = Reported by Pascal F. Martin <pascal.martin@cox.net> @@ -567,6 +573,7 @@ notes = This device does not have real-time data output, and is incompatible wit [BC-307] type = device vendor = GlobalSat +packaging = GPS mouse reference = http://www.usglobalsat.com/item.asp?itemid=12 uses = SiRF-2 interfaces = CF @@ -736,7 +743,7 @@ notes = 4 color LED showing: Bluetooth, Navigation Update and Battery [GPSlim 236] type = device vendor = Holux -oackaging = GPS mouse +packaging = GPS mouse reference = http://en.holux.com.cn/product/search.htm?filename=gpsreceiver_bluetooth_gpslim2+36.htm&target=bluetooth00&level=grandsonson uses = SiRF-3 interfaces = Bluetooth @@ -1188,7 +1195,7 @@ reference = http://www.trimble.com/lasseniq.shtml engine = Colossus RF ASIC, IO-C33 (Epson C33 RISC) interfaces = USB usbchip = Silicon Labs CP2102 -tested = regresssion +tested = regression nmea = 3.0 notes = Reported by Chris Kuethe <chris.kuethe@gmail.com> @@ -37,11 +37,14 @@ class GPSDictionary(ConfigParser.RawConfigParser): elif self.get(section, "type") not in ("engine", "vendor", "device"): raise ConfigParser.Error("%s has invalid type" % section) # Sanity check: All devices must point at a vendor object. - # Side effect: build the list of vendors. + # Side effect: build the lists of vendors and devices. self.vendors = [] + self.devices = [] for section in self.sections(): if self.get(section, "type") == "vendor": self.vendors.append(section) + if self.get(section, "type") == "device": + self.devices.append(section) self.vendors.sort() for section in self.sections(): if self.get(section, "type") == "device": @@ -49,5 +52,52 @@ class GPSDictionary(ConfigParser.RawConfigParser): raise ConfigParser.Error("%s has no vendor" % section) if self.get(section, "vendor") not in self.vendors: raise ConfigParser.Error("%s has invalid vendor" % section) + + def HTMLDump(self, ofp): + thead = """<table border='1' style='font-size:small;'> +<tr> +<th>Name</th> +<th>Packaging</th> +<th>Engine</th> +<th>Interface</th> +<th>Tested with</th> +<th>NMEA version</th> +<th width='50%'>Notes</th> +</tr> +""" + vhead = "<tr><td style='text-align:center;' colspan='7'><a href='%s'>%s</a></td></tr>\n" + ofp.write(thead) + for vendor in self.vendors: + ofp.write(vhead % (self.get(vendor, "vendor_site"), vendor)) + relevant = [] + for dev in self.devices: + if self.get(dev, "vendor") == vendor: + relevant.append(dev) + relevant.sort() + for dev in relevant: + ofp.write("<tr>\n") + ofp.write("<td>%s</td>\n" % dev) + ofp.write("<td>%s</td>\n" % self.get(dev, "packaging")) + ofp.write("<td>%s</td>\n" % self.get(dev, "engine")) + ofp.write("<td>%s</td>\n" % self.get(dev, "interfaces")) + tested = "" + if self.has_option(dev, "broken"): + tested = "Broken" + elif self.get(dev, "tested") == "regression": + tested = "*" + else: + tested = self.get(dev, "tested") + ofp.write("<td>%s</td>\n" % tested) + nmea = " " + if self.has_option(dev, "nmea"): + nmea = self.get(dev, "nmea") + ofp.write("<td>%s</td>\n" % nmea) + ofp.write("<td>%s</td>\n" % self.get(dev, "notes")) + ofp.write("</tr>\n") + ofp.write("</table>\n") + + if __name__ == "__main__": + import sys d = GPSDictionary() + d.HTMLDump(sys.stdout) |