#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <unistd.h>
#include <fcntl.h>
#define AO_GPS_NUM_SAT_MASK (0xf << 0)
#define AO_GPS_NUM_SAT_SHIFT (0)
+#define AO_GPS_NEW_DATA 1
+#define AO_GPS_NEW_TRACKING 2
+
#define AO_GPS_VALID (1 << 4)
#define AO_GPS_RUNNING (1 << 5)
#define AO_GPS_DATE_VALID (1 << 6)
static int
ao_gps_fd;
+#if 0
static void
ao_dbg_char(char c)
{
}
write(1, line, strlen(line));
}
+#endif
#define QUEUE_LEN 4096
get_u16(h_v_error);
+ (void) mag_var;
+ (void) id;
printf ("Geodetic Navigation Data (41):\n");
printf ("\tNav valid %04x\n", nav_valid);
printf ("\tNav type %04x\n", nav_type);
get_u32(gps_tow);
get_u8(channels);
+ (void) id;
printf ("Measured Tracker Data (4):\n");
printf ("GPS week: %d\n", gps_week);
printf ("GPS time of week: %d\n", gps_tow);
i = write(ao_gps_fd, &c, 1);
if (i == 1) {
if ((uint8_t) c == 0xb3 || c == '\r') {
- static const struct timespec delay = {
+/* static const struct timespec delay = {
.tv_sec = 0,
.tv_nsec = 100 * 1000 * 1000
};
+*/
tcdrain(ao_gps_fd);
// nanosleep(&delay, NULL);
}
#define AO_SERIAL_SPEED_4800 0
#define AO_SERIAL_SPEED_57600 1
+#define AO_SERIAL_SPEED_115200 2
static void
ao_serial1_set_speed(uint8_t speed)
case AO_SERIAL_SPEED_57600:
cfsetspeed(&termios, B57600);
break;
+ case AO_SERIAL_SPEED_115200:
+ cfsetspeed(&termios, B115200);
+ break;
}
tcsetattr(fd, TCSAFLUSH, &termios);
tcflush(fd, TCIFLUSH);
void
ao_dump_state(void *wchan)
{
- double lat, lon;
int i;
- if (wchan == &ao_gps_data)
+
+ if (wchan != &ao_gps_new)
+ return;
+
+ if (ao_gps_new & AO_GPS_NEW_DATA) {
ao_gps_print(&ao_gps_data);
- else
+ putchar('\n');
+ }
+ if (ao_gps_new & AO_GPS_NEW_TRACKING) {
ao_gps_tracking_print(&ao_gps_tracking_data);
- putchar('\n');
+ putchar('\n');
+ }
return;
printf ("%02d:%02d:%02d",
ao_gps_data.hour, ao_gps_data.minute,
}
ao_gps_setup();
ao_gps();
+ return 0;
}