|
View:
New views
10 Messages
—
Rating Filter:
Alert me
|
|
|
gpsd isn't recognizing TSIPI have been working with a Trimble Resolution SMT "starter kit." It's
not an end product but a way to evaluate their chipset. If I configure and build the gpsd 2.39 source "as is," gpsd does not recognize the packets as binary TSIP packets and eventually goes through all the baud rates at 8N1, then again at 7E2 without ever recognizing any packets. However, if I hack the "gpsd_open()" function in serial.c so that it does "gpsd_set_speed(session, 9600, 'O', 1)" on line 276 to force the correct baud rate and parity, it recognizes TSIP packets immediately. Since my application is an embedded device with known GPS hardware, I don't mind doing the hack to make it work, so this isn't a big issue for me. But I thought I should report the issue because it appears to me that gpsd is supposed to recognize TSIP at 8N1, then switch to odd parity after it knows it's talking TSIP, but this is not happening in my case. And I would prefer to use a standard unhacked version of gpsd if I can. The following is the output from my GPS receiver, captured with gpscat: ---------------------- Cut Here --------------------------- \x10\x8f\xab\x00\x07\xdcy\x06\x09\x00\x0f\x00!\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x90\x85\xb1\xc3\xef%`\x00\x00\x00\x00\x00\x00\x00\x00B\x1d\xc1\xf4?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1H\x0d\xbd\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdcz\x06\x09\x00\x0f\x00"\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x90\xc1v\xc3\xef\xe4\xd5\x00\x00\x00\x00\x00\x00\x00\x00B\x1d\xc9Z?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12A\x0f\x0e\xe2\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc{\x06\x09\x00\x0f\x00#\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x90\xfd\x97\xc3\xef\x8a\xbb\x00\x00\x00\x00\x00\x00\x00\x00B\x1d\xd0`?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12>\xfb\x11\xc0\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc|\x06\x09\x00\x0f\x00$\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x919\x1d\xc3\xee^z\x00\x00\x00\x00\x00\x00\x00\x00B\x1d\xd7\x0c?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1f\xa5\xea\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc}\x06\x09\x00\x0f\x00%\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x91u\x0c\xc3\xeeu\xa0\x00\x00\x00\x00\x00\x00\x00\x00B\x1d\xddd?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@\xe0\xfa\xc4\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc~\x06\x09\x00\x0f\x00&\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x91\xb1=\xc3\xee\xdd\xa4\x00\x00\x00\x00\x00\x00\x00\x00B\x1d\xe3j?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12?\x1dH\x00\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x7f\x06\x09\x00\x0f\x00'\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x91\xece\xc3\xeeV\xb6\x00\x00\x00\x00\x00\x00\x00\x00B\x1d\xea\xe4?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12Ai6\xbe\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x80\x06\x09\x00\x0f\x00(\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x92(\x0c\xc3\xeeg\x94\x00\x00\x00\x00\x00\x00\x00\x00B\x1d\xf0>?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@LE@\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x81\x06\x09\x00\x0f\x00)\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x92c\xbd\xc3\xee\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00B\x1d\xf7\x14?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc0\xf1a\x98\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x82\x06\x09\x00\x0f\x00*\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x92\x9fi\xc3\xeez9\x00\x00\x00\x00\x00\x00\x00\x00B\x1d\xfd\x93?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12A4\x17\xb4\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x83\x06\x09\x00\x0f\x00+\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x92\xdb=\xc3\xee\xe8\xdc\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\x01\xfe?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12?\xfd)\xb0\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x84\x06\x09\x00\x0f\x00,\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x93\x16\xa7\xc3\xee\xd4\xd0\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\x07\xf1?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc19\xa9=\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x85\x06\x09\x00\x0f\x00-\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x93R\x84\xc3\xee\x9ah\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\x0d\x98?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12A\x0a%q\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x86\x06\x09\x00\x0f\x00.\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x93\x8d\x87\xc3\xef\x13\xe4\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\x12\xf6?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc0\xe3?\xd8\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x87\x06\x09\x00\x0f\x00/\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x93\xc9\x8d\xc3\xf0\x1b8\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\x19\xd2?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1Y\x9c\x14\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x88\x06\x09\x00\x0f\x000\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x94\x056\xc3\xefhn\x00\x00\x00\x00\x00\x00\x00\x00B\x1e V?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@\x82\x00\xcc\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x89\x06\x09\x00\x0f\x001\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x94A\x9a\xc3\xee\xf9\xa9\x00\x00\x00\x00\x00\x00\x00\x00B\x1e(I?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc0\x1b\xa6\x88\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x8a\x06\x09\x00\x0f\x002\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x94{\xd6\xc3\xee\xc7\xae\x00\x00\x00\x00\x00\x00\x00\x00B\x1e.\x14?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@\x9b\x0d\x0e\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x8b\x06\x09\x00\x0f\x003\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x94\xb7H\xc3\xee/;\x00\x00\x00\x00\x00\x00\x00\x00B\x1e5W?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1\x18\xbe\xb4\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x8c\x06\x09\x00\x0f\x004\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x94\xf2\xb3\xc3\xee\x07\x7f\x00\x00\x00\x00\x00\x00\x00\x00B\x1e<=?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@\xe9x$\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x8d\x06\x09\x00\x0f\x005\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x95.\xb2\xc3\xedx^\x00\x00\x00\x00\x00\x00\x00\x00B\x1eB\xca?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc0'\xac\x10\x10\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x8e\x06\x09\x00\x0f\x006\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x95j\xf7\xc3\xee{_\x00\x00\x00\x00\x00\x00\x00\x00B\x1eI\x04?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc0\xe6\x7f\xb8\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x8f\x06\x09\x00\x0f\x007\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x95\xa7\x15\xc3\xee\xb8\xe1\x00\x00\x00\x00\x00\x00\x00\x00B\x1eN\xee?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1h\x8a\x0f\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x90\x06\x09\x00\x0f\x008\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x95\xe2}\xc3\xee\xb8m\x00\x00\x00\x00\x00\x00\x00\x00B\x1eT\x8c?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@\x1f\x97\xb8\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x91\x06\x09\x00\x0f\x009\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x96\x1f^\xc3\xee\x19\xef\x00\x00\x00\x00\x00\x00\x00\x00B\x1eY\xe2?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xbe\xf0\x1b\xa0\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x92\x06\x09\x00\x0f\x00:\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x96[\xd0\xc3\xeeD\x8e\x00\x00\x00\x00\x00\x00\x00\x00B\x1e^\xf4?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc0\xabD\x14\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x93\x06\x09\x00\x0f\x00;\x06\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x96\x97{\xc3\xees\xec\x00\x00\x00\x00\x00\x00\x00\x00B\x1ee\x87?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12Ab\xd7\xce\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x94\x06\x09\x00\x0f\x00\x00\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x96\xd2\xcc\xc3\xef\x84\x94\x00\x00\x00\x00\x00\x00\x00\x00B\x1ek\xc6?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@\x04<h\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x95\x06\x09\x00\x0f\x00\x01\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x97\x0fH\xc3\xef\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00B\x1eq\xb5?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc0\x1e\x99\xec\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x96\x06\x09\x00\x0f\x00\x02\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x97K\x9c\xc3\xee8\x89\x00\x00\x00\x00\x00\x00\x00\x00B\x1ey\x1b?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc18\xde#\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x97\x06\x09\x00\x0f\x00\x03\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x97\x86t\xc3\xed\xae\xb2\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\x80"?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xbd\x9aX\x00\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x98\x06\x09\x00\x0f\x00\x04\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x97\xc1\xbe\xc3\xed\x8d,\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\x86\xcf?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1l\xd4\x96\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x99\x06\x09\x00\x0f\x00\x05\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x97\xfd|\xc3\xed\xb4}\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\x8d'?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@\xa8.x\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x9a\x06\x09\x00\x0f\x00\x06\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x988\xf4\xc3\xed\xe3\x19\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\x93.?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc0\xec~\xb3\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x9b\x06\x09\x00\x0f\x00\x07\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x98sg\xc3\xee*\x83\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\x98\xe8?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@#fL\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x9c\x06\x09\x00\x0f\x00\x08\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x98\xae\xe5\xc3\xee"\xd8\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xa0\x1a?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1%\x8c\xfe\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x9d\x06\x09\x00\x0f\x00\x09\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x98\xeac\xc3\xed\xac\xe9\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xa5.?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@\xce\x9b \x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x9e\x06\x09\x00\x0f\x00\x0a\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x99%\xad\xc3\xed\xa2K\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xaa\x01?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1\x01\x06V\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\x9f\x06\x09\x00\x0f\x00\x0b\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x99a\x8a\xc3\xeeJ\xbb\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xae\x96?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12A_\x10\x10\xe0\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xa0\x06\x09\x00\x0f\x00\x0c\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x99\x9d+\xc3\xee\xc4Z\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xb2\xf1?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@J\xce8\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xa1\x06\x09\x00\x0f\x00\x0d\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x99\xd8'\xc3\xee\xb6\xd0\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xb8\xd6?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1]+\\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xa2\x06\x09\x00\x0f\x00\x0e\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9a\x13\x02\xc3\xed\xae&\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xbep?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc0P\xa3\xc4\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xa3\x06\x09\x00\x0f\x00\x0f\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9aN\xb2\xc3\xee\x05\xef\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xc3\xc2?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1]\x16C\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xa4\x06\x09\x00\x0f\x00\x10\x10\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9a\x8aN\xc3\xed\xff\xed\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xca\x94?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@\x99b\xac\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xa5\x06\x09\x00\x0f\x00\x11\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9a\xc5k\xc3\xed\x8e\x83\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xd1\x0e?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eAî"@…@¦ÀƒÁ? J\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xa6\x06\x09\x00\x0f\x00\x12\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9b\x01w\xc3\xed\xe6\x9f\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xd5r?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12A.Y\x12\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xa7\x06\x09\x00\x0f\x00\x13\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9b<\x95\xc3\xed\xc5\xbe\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xd9\x9d?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc0\xa5\x8a\x96\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xa8\x06\x09\x00\x0f\x00\x14\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9bx0\xc3\xed\xcb\xd5\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xdfW?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12AX\x1c\x97\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xa9\x06\x09\x00\x0f\x00\x15\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9b\xb3W\xc3\xee\x09\xe3\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xe3\x04?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xbf\xc6\xf3\xb0\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xaa\x06\x09\x00\x0f\x00\x16\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9b\xee\xf0\xc3\xed\xf3\xe9\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xe8F?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1[E\xb8\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xab\x06\x09\x00\x0f\x00\x17\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9c)\xfe\xc3\xeeRW\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xedD?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12?\xa0!\xf0\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xac\x06\x09\x00\x0f\x00\x18\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9ce\x16\xc3\xed\x83\x93\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xf2\x02?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12Ab\xef>\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xad\x06\x09\x00\x0f\x00\x19\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9c\xa0C\xc3\xee0\xc9\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xf6\x84?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12>GS\x00\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xae\x06\x09\x00\x0f\x00\x1a\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9c\xdb\xa6\xc3\xed\xcb\xad\x00\x00\x00\x00\x00\x00\x00\x00B\x1e\xfa\xcc?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12\xc1d\x09\xb8\x00\x00\x00\x00\x10\x03\x10\x8f\xab\x00\x07\xdc\xaf\x06\x09\x00\x0f\x00\x1b\x07\x17\x15\x08\x07\xd9\x10\x03\x10\x8f\xac\x07\x00d\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc8\x9d\x17\x0b\xc3\xee\x19O\x00\x00\x00\x00\x00\x00\x00\x00B\x1f\x00\xa0?\xea\x9c\x9e\xe4WD\xf6\xc0\x00d\xff\x1eA\xee"@\x85@\x02\xa6\xc0\x83\x12@S38\x00\x00\x00\x00\x10\x03 _______________________________________________ Gpsd-users mailing list Gpsd-users@... https://lists.berlios.de/mailman/listinfo/gpsd-users |
|
|
Re: gpsd isn't recognizing TSIPDavid Severt wrote:
> I have been working with a Trimble Resolution SMT "starter kit." It's > not an end product but a way to evaluate their chipset. If I configure > and build the gpsd 2.39 source "as is," gpsd does not recognize the > packets as binary TSIP packets and eventually goes through all the baud > rates at 8N1, then again at 7E2 without ever recognizing any packets. > However, if I hack the "gpsd_open()" function in serial.c so that it > does "gpsd_set_speed(session, 9600, 'O', 1)" on line 276 to force the > correct baud rate and parity, it recognizes TSIP packets immediately. > Does it find the device is you use gpsctl -f -D 99 /dev/whatever What about if you use stty /dev/whatever ispeed 9600 My observation is that the gpsd isn't changing the speed whilst scanning? I can see some mode changing in driver_tsip.c, but it's not obviously on your code path? Ed W _______________________________________________ Gpsd-users mailing list Gpsd-users@... https://lists.berlios.de/mailman/listinfo/gpsd-users |
|
|
Re: gpsd isn't recognizing TSIPEd;
I have tried using stty before running gpsd and that didn't help. It does start out with the baud rate set by stty (9600) but it always forces "no parity" rather than using what stty set up. I have not tried the -f option. The man page said that was deprecated, so I didn't look at it very closely. I'll take a look at the source for valid devicenames (after guessing TSIP) and give it a try. Regards, David Severt Ed W wrote: > David Severt wrote: >> I have been working with a Trimble Resolution SMT "starter kit." It's >> not an end product but a way to evaluate their chipset. If I >> configure and build the gpsd 2.39 source "as is," gpsd does not >> recognize the packets as binary TSIP packets and eventually goes >> through all the baud rates at 8N1, then again at 7E2 without ever >> recognizing any packets. However, if I hack the "gpsd_open()" >> function in serial.c so that it does "gpsd_set_speed(session, 9600, >> 'O', 1)" on line 276 to force the correct baud rate and parity, it >> recognizes TSIP packets immediately. > > Does it find the device is you use > > gpsctl -f -D 99 /dev/whatever > > What about if you use > stty /dev/whatever ispeed 9600 > > My observation is that the gpsd isn't changing the speed whilst > scanning? I can see some mode changing in driver_tsip.c, but it's not > obviously on your code path? > > Ed W > _______________________________________________ Gpsd-users mailing list Gpsd-users@... https://lists.berlios.de/mailman/listinfo/gpsd-users |
|
|
Re: gpsd isn't recognizing TSIPEd;
Looks like I replied too soon. The -f option is not present in 2.39. Yes, there is a speed change to 96008O1 in driver_tsip.c but that only happens after it figures out that it needs to talk TSIP. Regards, David Severt Ed W wrote: > David Severt wrote: >> I have been working with a Trimble Resolution SMT "starter kit." It's >> not an end product but a way to evaluate their chipset. If I >> configure and build the gpsd 2.39 source "as is," gpsd does not >> recognize the packets as binary TSIP packets and eventually goes >> through all the baud rates at 8N1, then again at 7E2 without ever >> recognizing any packets. However, if I hack the "gpsd_open()" >> function in serial.c so that it does "gpsd_set_speed(session, 9600, >> 'O', 1)" on line 276 to force the correct baud rate and parity, it >> recognizes TSIP packets immediately. > > Does it find the device is you use > > gpsctl -f -D 99 /dev/whatever > > What about if you use > stty /dev/whatever ispeed 9600 > > My observation is that the gpsd isn't changing the speed whilst > scanning? I can see some mode changing in driver_tsip.c, but it's not > obviously on your code path? > > Ed W > _______________________________________________ Gpsd-users mailing list Gpsd-users@... https://lists.berlios.de/mailman/listinfo/gpsd-users |
|
|
Re: gpsd isn't recognizing TSIPDavid Severt wrote:
> Ed; > > Looks like I replied too soon. The -f option is not present in 2.39. > Yes, there is a speed change to 96008O1 in driver_tsip.c but that only > happens after it figures out that it needs to talk TSIP. Yeah, I only started looking at the code 1 day ago, but my observation is that it doesn't seem to proactively change port speed when scanning. For me this means that if I use a generic NMEA talker which only speaks at 38400 then it's not detected by default and if I change the port speed on a 4800 NMEA talker then it's not found if I first "break it" using stty to change port speed to something other than 4800 The code gives the appearance it had baud setting in mind, but I think we need the devs to answer the question as to whether this is intended behaviour or not? Perhaps move your question to the -dev list if you don't get a response here? Ed W _______________________________________________ Gpsd-users mailing list Gpsd-users@... https://lists.berlios.de/mailman/listinfo/gpsd-users |
|
|
Re: gpsd isn't recognizing TSIPDavid Severt <severtd@...>:
> I have been working with a Trimble Resolution SMT "starter kit." It's > not an end product but a way to evaluate their chipset. If I configure > and build the gpsd 2.39 source "as is," gpsd does not recognize the > packets as binary TSIP packets and eventually goes through all the baud > rates at 8N1, then again at 7E2 without ever recognizing any packets. > However, if I hack the "gpsd_open()" function in serial.c so that it > does "gpsd_set_speed(session, 9600, 'O', 1)" on line 276 to force the > correct baud rate and parity, it recognizes TSIP packets immediately. > Since my application is an embedded device with known GPS hardware, I > don't mind doing the hack to make it work, so this isn't a big issue for > me. But I thought I should report the issue because it appears to me > that gpsd is supposed to recognize TSIP at 8N1, then switch to odd > parity after it knows it's talking TSIP, but this is not happening in my > case. And I would prefer to use a standard unhacked version of gpsd if I > can. TSIP is weird, and our standard hunt sequence is known to be failure-prone on it. Fortunately, you have an easy out. Configure your build with --enable-fixed-port-speed=9600 and all should, in theory, be well. I say "in theory" because that build hasn't to my knowledge been tested for a while. Look for FIXED_PORT_SPEED in drivers.c, gpsd.c, and serial.c to understand what's going on. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> _______________________________________________ Gpsd-users mailing list Gpsd-users@... https://lists.berlios.de/mailman/listinfo/gpsd-users |
|
|
Re: gpsd isn't recognizing TSIPOnce upon a time, Eric S. Raymond <esr@...> said:
> TSIP is weird, and our standard hunt sequence is known to be failure-prone > on it. I worked around this by adding a probe routine to the TSIP driver that explicitly tries 9600-8-O-1. I also added a little more initialization and recognition of a few more TSIP report messages. Let me get it all tested again and I'll send a patch to the list. -- Chris Adams <cmadams@...> Systems and Network Administrator - HiWAAY Internet Services I don't speak for anybody but myself - that's enough trouble. _______________________________________________ Gpsd-users mailing list Gpsd-users@... https://lists.berlios.de/mailman/listinfo/gpsd-users |
|
|
Re: gpsd isn't recognizing TSIPEric S. Raymond wrote:
> David Severt <severtd@...>: > >> I have been working with a Trimble Resolution SMT "starter kit." It's >> not an end product but a way to evaluate their chipset. If I configure >> and build the gpsd 2.39 source "as is," gpsd does not recognize the >> packets as binary TSIP packets and eventually goes through all the baud >> rates at 8N1, then again at 7E2 without ever recognizing any packets. >> However, if I hack the "gpsd_open()" function in serial.c so that it >> does "gpsd_set_speed(session, 9600, 'O', 1)" on line 276 to force the >> correct baud rate and parity, it recognizes TSIP packets immediately. >> Since my application is an embedded device with known GPS hardware, I >> don't mind doing the hack to make it work, so this isn't a big issue for >> me. But I thought I should report the issue because it appears to me >> that gpsd is supposed to recognize TSIP at 8N1, then switch to odd >> parity after it knows it's talking TSIP, but this is not happening in my >> case. And I would prefer to use a standard unhacked version of gpsd if I >> can. >> > > TSIP is weird, and our standard hunt sequence is known to be failure-prone > on it. > > Fortunately, you have an easy out. Configure your build with > > --enable-fixed-port-speed=9600 > > and all should, in theory, be well. I say "in theory" because that > build hasn't to my knowledge been tested for a while. Look for > FIXED_PORT_SPEED in drivers.c, gpsd.c, and serial.c to understand > what's going on. > but it did not help. Probably because it still does not attempt odd parity. And I'll go along with "TSIP is weird." I've seen lots of serial devices in my years of programming but I've never seen a device that uses odd parity or a device that uses parity with 8 data bits. _______________________________________________ Gpsd-users mailing list Gpsd-users@... https://lists.berlios.de/mailman/listinfo/gpsd-users |
|
|
Re: gpsd isn't recognizing TSIPDavid Severt <severtd@...>:
> Thanks Eric. I did try this, along with disabling a bunch of protocols > but it did not help. Probably because it still does not attempt odd > parity. Hm. You're probably right. Time for an --enable-fixed-parity option, maybe. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> _______________________________________________ Gpsd-users mailing list Gpsd-users@... https://lists.berlios.de/mailman/listinfo/gpsd-users |
|
|
Re: gpsd isn't recognizing TSIPOnce upon a time, Chris Adams <cmadams@...> said:
> I worked around this by adding a probe routine to the TSIP driver that > explicitly tries 9600-8-O-1. I also added a little more initialization > and recognition of a few more TSIP report messages. Here is my patch, against SVN trunk. It does several things: - add a probe routine to look for TSIP at 9600-8-O-1 - fixed length checking of TSIP DLE stuffed packets in packet_parse() - add a couple of additional config requests to TSIP initialization; needed for my old sveesix and after running ntpd libparse driver which sets single-satellite mode - recognize a few additional TSIP report packets (mostly not handled, just recognized to avoid errors in debugging) -- Chris Adams <cmadams@...> Systems and Network Administrator - HiWAAY Internet Services I don't speak for anybody but myself - that's enough trouble. diff --exclude .svn -ur gpsd-trunk/driver_tsip.c gpsd-cmadams/driver_tsip.c --- gpsd-trunk/driver_tsip.c 2009-08-31 19:03:35.000000000 -0500 +++ gpsd-cmadams/driver_tsip.c 2009-08-31 19:04:04.000000000 -0500 @@ -9,6 +9,14 @@ #include <unistd.h> #include <math.h> #include "gpsd_config.h" + +#if defined (HAVE_SYS_SELECT_H) +#include <sys/select.h> +#endif +#if defined(HAVE_SYS_TIME_H) +#include <sys/time.h> +#endif + #include "gpsd.h" #include "bits.h" @@ -49,6 +57,57 @@ return 0; } +/* tsip_detect() + * + * see if it looks like a TSIP device (speaking 96008O1) is listening and + * return 1 if found, 0 if not + */ +static bool tsip_detect(struct gps_device_t *session) +{ + char buf[BUFSIZ]; + unsigned int n, ret = 0; + int myfd; + fd_set fdset; + struct timeval to; + + gpsd_report(LOG_PROG, "Probing TSIP\n"); + + gpsd_set_speed(session, 9600, 'O', 1); + + /* request firmware revision and look for a valid response */ + putbyte(buf, 0, 0x10); + putbyte(buf, 1, 0x1f); + putbyte(buf, 2, 0x10); + putbyte(buf, 3, 0x03); + myfd = session->gpsdata.gps_fd; + if (write(myfd, buf, 4) == 4) { + for (n = 0; n < 3; n++) { + FD_ZERO(&fdset); + FD_SET(myfd, &fdset); + to.tv_sec = 1; + to.tv_usec = 0; + if (select(myfd + 1, &fdset, NULL, NULL, &to) != 1) + break; + if (generic_get(session) >= 0) { + if(session->packet.type == TSIP_PACKET) { + gpsd_report(LOG_RAW, "tsip_detect found\n"); + ret = 1; + break; + } + } + } + } + + if (ret == 0) + /* return serial port to original settings */ + gpsd_set_speed(session, + session->gpsdata.baudrate, + session->gpsdata.parity, + session->gpsdata.stopbits); + + return ret; +} + static void tsip_probe_subtype(struct gps_device_t *session, unsigned int seq) { unsigned char buf[100]; @@ -69,9 +128,13 @@ (void)tsip_write(session, 0x1f, NULL, 0); /* Request Current Time */ (void)tsip_write(session, 0x21, NULL, 0); + /* Set Position Fix Mode (auto 2D/3D) */ + putbyte(buf,0,0x00); + (void)tsip_write(session, 0x22, buf, 1); /* Request GPS Systems Message */ (void)tsip_write(session, 0x28, NULL, 0); /* Request Current Datum Values */ + (void)tsip_write(session, 0x37, NULL, 0); putbyte(buf,0,0x15); (void)tsip_write(session, 0x8e, buf, 1); /* Request Navigation Configuration */ @@ -194,6 +257,60 @@ f5 = getbef(buf,16); /* time-of-fix */ gpsd_report(LOG_INF, "GPS Velocity XYZ %f %f %f %f %f\n",f1,f2,f3,f4,f5); break; + case 0x44: /* Non-Overdetermined Satellite Selection */ + /* treat the same as 0x6d; some receivers send both */ + u1 = getub(buf,0); /* nsvs/dimension */ + if (10 < u1) + u1 -= 10; + switch (u1) /* dimension */ + { + case 1: + session->gpsdata.status = STATUS_NO_FIX; + session->gpsdata.fix.mode = MODE_NO_FIX; + count = 1; + break; + case 3: + session->gpsdata.status = STATUS_FIX; + session->gpsdata.fix.mode = MODE_2D; + count = 3; + break; + case 4: + session->gpsdata.status = STATUS_FIX; + session->gpsdata.fix.mode = MODE_3D; + count = 4; + break; + default: + session->gpsdata.status = STATUS_NO_FIX; + session->gpsdata.fix.mode = MODE_NO_FIX; + count = 0; + break; + } + session->gpsdata.satellites_used = count; + session->gpsdata.pdop = getbef(buf,5); + session->gpsdata.hdop = getbef(buf,9); + session->gpsdata.vdop = getbef(buf,13); + session->gpsdata.tdop = getbef(buf,17); + /*@ -evalorder @*/ + session->gpsdata.gdop = sqrt(pow(session->gpsdata.pdop,2)+pow(session->gpsdata.tdop,2)); + /*@ +evalorder @*/ + + memset(session->gpsdata.used,0,sizeof(session->gpsdata.used)); + buf2[0] = '\0'; + /*@ +charint @*/ + for (i = 0; i < count; i++) + (void)snprintf(buf2+strlen(buf2), sizeof(buf2)-strlen(buf2), + " %d",session->gpsdata.used[i] = getub(buf,1 + i)); + /*@ -charint @*/ + + gpsd_report(LOG_INF, "Sat info: mode %d, satellites used %d: %s\n", + session->gpsdata.fix.mode, session->gpsdata.satellites_used,buf2); + gpsd_report(LOG_INF, + "Sat info: DOP P=%.1f H=%.1f V=%.1f T=%.1f G=%.1f\n", + session->gpsdata.pdop, session->gpsdata.hdop, + session->gpsdata.vdop, session->gpsdata.tdop, + session->gpsdata.gdop); + mask |= HDOP_SET | VDOP_SET | PDOP_SET | TDOP_SET | GDOP_SET | STATUS_SET | MODE_SET | USED_SET; + break; case 0x45: /* Software Version Information */ if (len != 10) break; @@ -248,6 +365,8 @@ buf[len] = '\0'; gpsd_report(LOG_PROG, "GPS System Message: %s\n",buf); break; + case 0x49: /* Almanac Health Page */ + break; case 0x4a: /* Single-Precision Position LLA */ if (len != 20) break; @@ -289,6 +408,8 @@ } #endif /* USE_SUPERPACKET */ break; + case 0x54: /* One Satellite Bias */ + break; case 0x55: /* IO Options */ if (len != 4) break; @@ -354,6 +475,8 @@ d1 = getbed(buf,17); /* Time of Measurement */ gpsd_report(LOG_PROG, "Raw Measurement Data %d %f %f %f %f\n",getub(buf,0),f1,f2,f3,d1); break; + case 0x5b: /* Satellite Ephemeris Status */ + break; case 0x5c: /* Satellite Tracking Status */ if (len != 24) break; @@ -384,6 +507,8 @@ session->gpsdata.satellites = i; } break; + case 0x5e: /* Additional Fix Status Report */ + break; case 0x6d: /* All-In-View Satellite Selection */ u1 = getub(buf,0); /* nsvs/dimension */ count = (int)((u1 >> 4) & 0x0f); @@ -393,15 +518,15 @@ switch (u1 & 7) /* dimension */ { case 3: - //session->gpsdata.status = STATUS_FIX; + session->gpsdata.status = STATUS_FIX; session->gpsdata.fix.mode = MODE_2D; break; case 4: - //session->gpsdata.status = STATUS_FIX; + session->gpsdata.status = STATUS_FIX; session->gpsdata.fix.mode = MODE_3D; break; default: - //session->gpsdata.status = STATUS_NO_FIX; + session->gpsdata.status = STATUS_NO_FIX; session->gpsdata.fix.mode = MODE_NO_FIX; break; } @@ -892,7 +1017,7 @@ .trigger = NULL, /* no trigger */ .channels = TSIP_CHANNELS, /* consumer-grade GPS */ .probe_wakeup = NULL, /* no wakeup to be done before hunt */ - .probe_detect = NULL, /* no probe */ + .probe_detect = tsip_detect, /* probe for 96008O1 device*/ .probe_subtype = tsip_probe_subtype, /* no more subtype discovery */ .get_packet = generic_get, /* use the generic packet getter */ .parse_packet = tsip_parse_input, /* parse message packets */ diff --exclude .svn -ur gpsd-trunk/packet.c gpsd-cmadams/packet.c --- gpsd-trunk/packet.c 2009-08-10 15:01:18.000000000 -0500 +++ gpsd-cmadams/packet.c 2009-08-31 19:49:44.000000000 -0500 @@ -1126,7 +1126,21 @@ #endif /* ONCORE_ENABLE */ #if defined(TSIP_ENABLE) || defined(GARMIN_ENABLE) else if (lexer->state == TSIP_RECOGNIZED) { + unsigned int pos, dlecnt; size_t packetlen = lexer->inbufptr - lexer->inbuffer; +#ifdef TSIP_ENABLE + /* don't count stuffed DLEs in the length */ + dlecnt = 0; + for (pos = 0; pos < packetlen; pos ++) + if (lexer->inbuffer[pos] == DLE) + dlecnt ++; + if (dlecnt > 2) { + dlecnt -= 2; + dlecnt /= 2; + gpsd_report(LOG_RAW, "Unstuffed %d DLEs\n", dlecnt); + packetlen -= dlecnt; + } +#endif /* TSIP_ENABLE */ if ( packetlen < 5) { lexer->state = GROUND_STATE; } else { @@ -1191,14 +1205,21 @@ * 0x41, GPS time, data length 10 * 0x42, Single Precision Fix, data length 16 * 0x43, Velocity Fix, data length 20 + * 0x44, Non-Overdetermined Satellite Selection, data length 21 * 0x45, Software Version Information, data length 10 * 0x46, Health of Receiver, data length 2 + * 0x47, Signal Levels for All Satellites * 0x48, GPS System Messages + * 0x49, Almanac Health Page, data length 28 * 0x4a, LLA Position, data length 20 * 0x4b, Machine Code Status, data length 3 + * 0x54, One Satellite Bias, data length 12 * 0x56, Velocity Fix (ENU), data length 20 + * 0x57, Information About Last Computed Fix, data length 8 * 0x5a, Raw Measurements + * 0x5b, Satellite Ephemeris Status, data length 16 * 0x5c, Satellite Tracking Status, data length 24 + * 0x5e, Additional Fix Status Report, data length 2 * 0x6d, All-In-View Satellite Selection, data length 16+numSV * 0x82, Differential Position Fix Mode, data length 1 * 0x83, Double Precision XYZ, data length 36 @@ -1207,6 +1228,7 @@ * 0xbc, Receiver Port Configuration * * <DLE>[pkt id] [data] <DLE><ETX> + * any <DLE> in the [data] will be "stuffed" to <DLE> <DLE> */ /*@ +charint @*/ pkt_id = lexer->inbuffer[1]; /* packet ID */ @@ -1220,28 +1242,42 @@ /* pass */; else if ((0x41 == pkt_id) && (0x0e == packetlen)) /* pass */; - else if ((0x42 == pkt_id) && (0x14 == packetlen )) + else if ((0x42 == pkt_id) && (0x14 == packetlen)) /* pass */; else if ((0x43 == pkt_id) && (0x18 == packetlen)) /* pass */; + else if ((0x44 == pkt_id) && (0x19 == packetlen)) + /* pass */; else if ((0x45 == pkt_id) && (0x0e == packetlen)) /* pass */; else if ((0x46 == pkt_id) && (0x06 == packetlen)) /* pass */; + else if ((0x47 == pkt_id) && ((0x05 <= packetlen) && (0x41 >= packetlen))) + /* pass */; else if ((0x48 == pkt_id) && (0x1a == packetlen)) /* pass */; + else if ((0x49 == pkt_id) && (0x20 == packetlen)) + /* pass */; else if ((0x4a == pkt_id) && (0x18 == packetlen)) /* pass */; else if ((0x4b == pkt_id) && (0x07 == packetlen)) /* pass */; + else if ((0x54 == pkt_id) && (0x10 == packetlen)) + /* pass */; else if ((0x55 == pkt_id) && (0x08 == packetlen)) /* pass */; else if ((0x56 == pkt_id) && (0x18 == packetlen)) /* pass */; + else if ((0x57 == pkt_id) && (0x0c == packetlen)) + /* pass */; else if ((0x5a == pkt_id) && ((0x1d <= packetlen) && (0x1f >= packetlen))) /* pass */; + else if ((0x5b == pkt_id) && (0x14 == packetlen)) + /* pass */; else if ((0x5c == pkt_id) && ((0x1c <= packetlen) && (0x1e >= packetlen))) /* pass */; + else if ((0x5e == pkt_id) && (0x06 == packetlen)) + /* pass */; else if ((0x5f == pkt_id) && (70 == packetlen)) /* pass */; else if ((0x6d == pkt_id) && ((0x14 <= packetlen) && (0x20 >= packetlen))) @@ -1250,8 +1286,6 @@ /* pass */; else if ((0x84 == pkt_id) && ((0x28 <= packetlen) && (0x29 >= packetlen))) /* pass */; - else if ((0x8e == pkt_id)) - /* pass */; else if ((0x8f == pkt_id)) /* pass */; else if ((0xbb == pkt_id) && (0x2c == packetlen)) _______________________________________________ Gpsd-users mailing list Gpsd-users@... https://lists.berlios.de/mailman/listinfo/gpsd-users |
| Free embeddable forum powered by Nabble | Forum Help |