diff options
author | Christian Gagneraud <cgagneraud@techworks.ie> | 2012-06-05 14:08:19 +0100 |
---|---|---|
committer | Christian Gagneraud <chris@techworks.ie> | 2012-06-05 15:58:02 +0100 |
commit | 0e8d0f6367a25c773021b9b3a73b7ce8cb953af7 (patch) | |
tree | 66b8d2e8477831cb804ae8262bb6860299bb1999 /driver_ais.c | |
parent | 452520a8efe303ff8abbaa8b5d4eccc01a478991 (diff) | |
download | gpsd-0e8d0f6367a25c773021b9b3a73b7ce8cb953af7.tar.gz |
[AIS] Met/Hydro: fixes and improvements
Diffstat (limited to 'driver_ais.c')
-rw-r--r-- | driver_ais.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/driver_ais.c b/driver_ais.c index 68e8e698..992063a3 100644 --- a/driver_ais.c +++ b/driver_ais.c @@ -10,6 +10,7 @@ * For the special IMO messages (types 6 and 8), only the following have been * tested against known-good decodings: * - IMO236 met/hydro message: Type=8, DAC=1, FI=11 + * - IMO289 met/hydro message: Type=8, DAC=1, FI=31 * * This file is Copyright (c) 2010 by the GPSD project * BSD terms apply: see the file COPYING in the distribution root for details. @@ -31,11 +32,8 @@ #define DAC1FID11_LEVEL_OFFSET 100 #define DAC1FID11_WATERTEMP_OFFSET 100 -#define DAC1FID31_AIRTEMP_OFFSET 600 -#define DAC1FID31_DEWPOINT_OFFSET 200 -#define DAC1FID31_PRESSURE_OFFSET -800 -#define DAC1FID31_LEVEL_OFFSET 100 -#define DAC1FID31_WATERTEMP_OFFSET 100 +#define DAC1FID31_PRESSURE_OFFSET -799 +#define DAC1FID31_LEVEL_OFFSET 1000 static void from_sixbit(char *bitvec, uint start, int count, char *to) { @@ -543,8 +541,8 @@ bool ais_binary_decode(struct ais_t *ais, ais->type8.dac1fid29.text); break; case 31: /* IMO289 - Meteorological/Hydrological data */ - ais->type8.dac1fid31.lat = SBITS(56, 24); - ais->type8.dac1fid31.lon = SBITS(80, 25); + ais->type8.dac1fid31.lon = SBITS(56, 25); + ais->type8.dac1fid31.lat = SBITS(81, 24); ais->type8.dac1fid31.accuracy = (bool)UBITS(105, 1); ais->type8.dac1fid31.day = UBITS(106, 5); ais->type8.dac1fid31.hour = UBITS(111, 5); @@ -553,17 +551,15 @@ bool ais_binary_decode(struct ais_t *ais, ais->type8.dac1fid31.wgust = UBITS(129, 7); ais->type8.dac1fid31.wdir = UBITS(136, 9); ais->type8.dac1fid31.wgustdir = UBITS(145, 9); - ais->type8.dac1fid31.airtemp = SBITS(154, 11) - - DAC1FID31_AIRTEMP_OFFSET; + ais->type8.dac1fid31.airtemp = SBITS(154, 11); ais->type8.dac1fid31.humidity = UBITS(165, 7); - ais->type8.dac1fid31.dewpoint = UBITS(172, 10) - - DAC1FID31_DEWPOINT_OFFSET; + ais->type8.dac1fid31.dewpoint = SBITS(172, 10); ais->type8.dac1fid31.pressure = UBITS(182, 9) - DAC1FID31_PRESSURE_OFFSET; ais->type8.dac1fid31.pressuretend = UBITS(191, 2); ais->type8.dac1fid31.visgreater = UBITS(193, 1); ais->type8.dac1fid31.visibility = UBITS(194, 7); - ais->type8.dac1fid31.waterlevel = UBITS(200, 12) + ais->type8.dac1fid31.waterlevel = UBITS(201, 12) - DAC1FID31_LEVEL_OFFSET; ais->type8.dac1fid31.leveltrend = UBITS(213, 2); ais->type8.dac1fid31.cspeed = UBITS(215, 8); @@ -581,8 +577,7 @@ bool ais_binary_decode(struct ais_t *ais, ais->type8.dac1fid31.swellperiod = UBITS(307, 6); ais->type8.dac1fid31.swelldir = UBITS(313, 9); ais->type8.dac1fid31.seastate = UBITS(322, 4); - ais->type8.dac1fid31.watertemp = UBITS(326, 10) - - DAC1FID31_WATERTEMP_OFFSET; + ais->type8.dac1fid31.watertemp = SBITS(326, 10); ais->type8.dac1fid31.preciptype = UBITS(336, 3); ais->type8.dac1fid31.salinity = UBITS(339, 9); ais->type8.dac1fid31.ice = UBITS(348, 2); |