blobmsg_add_string(&b, "course", course);
if (gps_fields & GPS_FIELD_SPD)
blobmsg_add_string(&b, "speed", speed);
+ if (gps_fields & GPS_FIELD_SAT)
+ blobmsg_add_string(&b, "satellites", satellites);
+ if (gps_fields & GPS_FIELD_HDP)
+ blobmsg_add_string(&b, "HDOP", hdop);
}
ubus_send_reply(ctx, req, b.head);
} nmea_params[MAX_NMEA_PARAM];
static int nmea_bad_time;
-char longitude[33] = { 0 }, latitude[33] = { 0 }, course[17] = { 0 }, speed[17] = { 0 }, elevation[17] = { 0 };
+char longitude[33] = { 0 }, latitude[33] = { 0 }, course[17] = { 0 }, speed[17] = { 0 }, elevation[17] = { 0 }, satellites[3] = { 0 }, hdop[5] = { 0 };
int gps_valid = 0;
char gps_fields = 0;
{
if (!gps_valid)
return;
+ strncpy(satellites, nmea_params[7].str, sizeof(satellites));
+ strncpy(hdop, nmea_params[8].str, sizeof(hdop));
strncpy(elevation, nmea_params[9].str, sizeof(elevation));
- gps_fields |= GPS_FIELD_ALT;
+ gps_fields |= GPS_FIELD_SAT | GPS_FIELD_HDP | GPS_FIELD_ALT;
+ DEBUG(4, "satellites: %s\n", satellites);
+ DEBUG(4, "HDOP: %s\n", hdop);
DEBUG(4, "height: %s\n", elevation);
}
#include <libubox/ustream.h>
-extern char longitude[33], latitude[33], course[17], speed[17], elevation[17];
+extern char longitude[33], latitude[33], course[17], speed[17], elevation[17], satellites[3], hdop[5];
extern int nmea_open(char *dev, struct ustream_fd *s, speed_t speed);
extern void gps_timestamp(void);
extern unsigned int adjust_clock;
#define GPS_FIELD_COG (1<<2)
#define GPS_FIELD_SPD (1<<3)
#define GPS_FIELD_ALT (1<<4)
+#define GPS_FIELD_SAT (1<<5)
+#define GPS_FIELD_HDP (1<<6)
#endif