[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gpsd-dev] [PATCH 3/6] Add new fields to the attitude data structure
From: |
chris |
Subject: |
[gpsd-dev] [PATCH 3/6] Add new fields to the attitude data structure |
Date: |
Sat, 21 Apr 2012 10:34:19 +0100 |
From: Christian Gagneraud <address@hidden>
rot: Rate of Turn
mag_var: Magnetic variation
mag_dev: Magnetic deviation
---
driver_nmea0183.c | 9 +++++++++
gps.h | 3 +++
gpsd_json.c | 15 +++++++++++++++
libgps_json.c | 6 ++++++
4 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/driver_nmea0183.c b/driver_nmea0183.c
index c269180..a9631cb 100644
--- a/driver_nmea0183.c
+++ b/driver_nmea0183.c
@@ -786,6 +786,9 @@ static gps_mask_t processHDT(int c UNUSED, char *field[],
mask = ONLINE_SET;
session->gpsdata.attitude.heading = safe_atof(field[1]);
+ session->gpsdata.attitude.mag_dev = NAN;
+ session->gpsdata.attitude.mag_var = NAN;
+ session->gpsdata.attitude.rot = NAN;
session->gpsdata.attitude.mag_st = '\0';
session->gpsdata.attitude.pitch = NAN;
session->gpsdata.attitude.pitch_st = '\0';
@@ -897,6 +900,9 @@ static gps_mask_t processTNTHTM(int c UNUSED, char *field[],
mask = ONLINE_SET;
session->gpsdata.attitude.heading = safe_atof(field[1]);
+ session->gpsdata.attitude.mag_dev = NAN;
+ session->gpsdata.attitude.mag_var = NAN;
+ session->gpsdata.attitude.rot = NAN;
session->gpsdata.attitude.mag_st = *field[2];
session->gpsdata.attitude.pitch = safe_atof(field[3]);
session->gpsdata.attitude.pitch_st = *field[4];
@@ -955,6 +961,9 @@ static gps_mask_t processOHPR(int c UNUSED, char *field[],
mask = ONLINE_SET;
session->gpsdata.attitude.heading = safe_atof(field[1]);
+ session->gpsdata.attitude.mag_dev = NAN;
+ session->gpsdata.attitude.mag_var = NAN;
+ session->gpsdata.attitude.rot = NAN;
session->gpsdata.attitude.mag_st = '\0';
session->gpsdata.attitude.pitch = safe_atof(field[2]);
session->gpsdata.attitude.pitch_st = '\0';
diff --git a/gps.h b/gps.h
index 6baf232..d4813f5 100644
--- a/gps.h
+++ b/gps.h
@@ -1500,6 +1500,9 @@ struct ais_t
struct attitude_t {
double heading;
+ double mag_dev; /* Magnetic deviation in degree, positive for EAST,
negative for WEST */
+ double mag_var; /* Magnetic variation in degree, positive for EAST,
negative for WEST */
+ double rot; /* Rate of turn in degrees per minute, positive for
starboard (right), negative for port (left) */
double pitch;
double roll;
double yaw;
diff --git a/gpsd_json.c b/gpsd_json.c
index 0c5e39c..f1ecdff 100644
--- a/gpsd_json.c
+++ b/gpsd_json.c
@@ -2834,6 +2834,21 @@ void json_att_dump(const struct gps_data_t *gpsdata,
"\"mag_st\":\"%c\",", gpsdata->attitude.mag_st);
}
+ if (isnan(gpsdata->attitude.mag_var) == 0) {
+ (void)snprintf(reply + strlen(reply),
+ replylen - strlen(reply),
+ "\"mag_var\":%.2f,", gpsdata->attitude.mag_var);
+ }
+ if (isnan(gpsdata->attitude.mag_dev) == 0) {
+ (void)snprintf(reply + strlen(reply),
+ replylen - strlen(reply),
+ "\"mag_dev\":%.2f,", gpsdata->attitude.mag_dev);
+ }
+ if (isnan(gpsdata->attitude.rot) == 0) {
+ (void)snprintf(reply + strlen(reply),
+ replylen - strlen(reply),
+ "\"rot\":%.2f,", gpsdata->attitude.rot);
+ }
if (isnan(gpsdata->attitude.pitch) == 0) {
(void)snprintf(reply + strlen(reply),
replylen - strlen(reply),
diff --git a/libgps_json.c b/libgps_json.c
index b53d6da..1ea7698 100644
--- a/libgps_json.c
+++ b/libgps_json.c
@@ -206,6 +206,12 @@ static int json_att_read(const char *buf, struct
gps_data_t *gpsdata,
.len = sizeof(gpsdata->tag)},
{"heading", t_real, .addr.real = &gpsdata->attitude.heading,
.dflt.real = NAN},
+ {"mag_dev", t_real, .addr.real = &gpsdata->attitude.mag_dev,
+ .dflt.real = NAN},
+ {"mag_var", t_real, .addr.real = &gpsdata->attitude.mag_var,
+ .dflt.real = NAN},
+ {"rot", t_real, .addr.real = &gpsdata->attitude.rot,
+ .dflt.real = NAN},
{"mag_st", t_character, .addr.character = &gpsdata->attitude.mag_st},
{"pitch", t_real, .addr.real = &gpsdata->attitude.pitch,
.dflt.real = NAN},
--
1.7.0.4
- [gpsd-dev] [RFC] Add support for Airmar PB200 Weather station, chris, 2012/04/21
- [gpsd-dev] [PATCH 1/6] Add missing attitude field initialisation in NMEA TNTHTM, chris, 2012/04/21
- [gpsd-dev] [PATCH 2/6] Add new NMEA talker ID (WI, HC and TI), chris, 2012/04/21
- [gpsd-dev] [PATCH 5/6] Add a wind data structure, chris, 2012/04/21
- [gpsd-dev] [PATCH 3/6] Add new fields to the attitude data structure,
chris <=
- [gpsd-dev] [PATCH 4/6] Add heading and rate of turn NMEA sentences (HDG, ROT), chris, 2012/04/21
- [gpsd-dev] [PATCH 6/6] Add Wind related NMEA sentence (MWD, MWV, VWR, VWT), chris, 2012/04/21
- Re: [gpsd-dev] [RFC] Add support for Airmar PB200 Weather station, Eric S. Raymond, 2012/04/21
- Re: [gpsd-dev] [RFC] Add support for Airmar PB200 Weather station, address@hidden, 2012/04/21