diff options
-rw-r--r-- | bits.h | 26 | ||||
-rw-r--r-- | bits_test.c | 115 | ||||
-rw-r--r-- | drivers.c | 6 | ||||
-rw-r--r-- | rtcm3.c | 2 | ||||
-rw-r--r-- | sirf.c | 84 | ||||
-rw-r--r-- | sirfmon.c | 92 | ||||
-rw-r--r-- | tsip.c | 148 |
7 files changed, 242 insertions, 231 deletions
@@ -43,8 +43,7 @@ union long_double { #define getub(buf, off) ((u_int8_t)buf[(off)-(GET_ORIGIN)]) #define putbyte(buf,off,b) do {buf[(off)-(PUT_ORIGIN)] = (unsigned char)(b);} while (0) -#ifdef LITTLE_ENDIAN_PROTOCOL - +/* little-endian access */ #define getlesw(buf, off) ((int16_t)(((u_int16_t)getub((buf), (off)+1) << 8) | (u_int16_t)getub((buf), (off)))) #define getleuw(buf, off) ((u_int16_t)(((u_int16_t)getub((buf), (off)+1) << 8) | (u_int16_t)getub((buf), (off)))) #define getlesl(buf, off) ((int32_t)(((u_int16_t)getleuw((buf), (off)+2) << 16) | (u_int16_t)getleuw((buf), (off)))) @@ -57,23 +56,20 @@ union long_double { #define getlef(buf, off) (i_f.i = getlesl(buf, off), i_f.f) #define getled(buf, off) (l_d.l = getlesL(buf, off), l_d.d) -#else /* SiRF and most other GPS protocols use big-endian (network byte order) */ -#define getsw(buf, off) ((int16_t)(((u_int16_t)getub(buf, (off)) << 8) | (u_int16_t)getub(buf, (off)+1))) -#define getuw(buf, off) ((u_int16_t)(((u_int16_t)getub(buf, (off)) << 8) | (u_int16_t)getub(buf, (off)+1))) -#define getsl(buf, off) ((int32_t)(((u_int16_t)getuw(buf, (off)) << 16) | getuw(buf, (off)+2))) -#define getul(buf, off) ((u_int32_t)(((u_int16_t)getuw(buf, (off)) << 16) | getuw(buf, (off)+2))) -#define getsL(buf, off) ((int64_t)(((u_int64_t)getul(buf, (off)) << 32) | getul(buf, (off)+4))) -#define getuL(buf, off) ((u_int64_t)(((u_int64_t)getul(buf, (off)) << 32) | getul(buf, (off)+4))) - -#define putword(buf,off,w) do {putbyte(buf, (off) ,(w) >> 8); putbyte(buf, (off)+1, (w));} while (0) -#define putlong(buf,off,l) do {putword(buf, (off) ,(l) >> 16); putword(buf, (off)+2, (l));} while (0) +#define getbesw(buf, off) ((int16_t)(((u_int16_t)getub(buf, (off)) << 8) | (u_int16_t)getub(buf, (off)+1))) +#define getbeuw(buf, off) ((u_int16_t)(((u_int16_t)getub(buf, (off)) << 8) | (u_int16_t)getub(buf, (off)+1))) +#define getbesl(buf, off) ((int32_t)(((u_int16_t)getbeuw(buf, (off)) << 16) | getbeuw(buf, (off)+2))) +#define getbeul(buf, off) ((u_int32_t)(((u_int16_t)getbeuw(buf, (off)) << 16) | getbeuw(buf, (off)+2))) +#define getbesL(buf, off) ((int64_t)(((u_int64_t)getbeul(buf, (off)) << 32) | getbeul(buf, (off)+4))) +#define getbeuL(buf, off) ((u_int64_t)(((u_int64_t)getbeul(buf, (off)) << 32) | getbeul(buf, (off)+4))) -#define getf(buf, off) (i_f.i = getsl(buf, off), i_f.f) -#define getd(buf, off) (l_d.l = getsL(buf, off), l_d.d) -#endif +#define putbeword(buf,off,w) do {putbyte(buf, (off) ,(w) >> 8); putbyte(buf, (off)+1, (w));} while (0) +#define putbelong(buf,off,l) do {putbeword(buf, (off) ,(l) >> 16); putbeword(buf, (off)+2, (l));} while (0) +#define getbef(buf, off) (i_f.i = getbesl(buf, off), i_f.f) +#define getbed(buf, off) (l_d.l = getbesL(buf, off), l_d.d) /* Zodiac protocol description uses 1-origin indexing by little-endian word */ diff --git a/bits_test.c b/bits_test.c index f9e4056e..b6beb55f 100644 --- a/bits_test.c +++ b/bits_test.c @@ -23,7 +23,7 @@ static unsigned long long uL1,uL2; static float f1; static double d1; -static void dumpall(void) +static void bedumpall(void) { (void)printf("getsb: %016llx %016llx %016llx %016llx\n", (ubig)sb1, (ubig)sb2, @@ -31,26 +31,56 @@ static void dumpall(void) (void)printf("getub: %016llx %016llx %016llx %016llx\n", (ubig)ub1, (ubig)ub2, (ubig)getub(buf, 0), (ubig)getub(buf, 8)); - (void)printf("getsw: %016llx %016llx %016llx %016llx\n", + (void)printf("getbesw: %016llx %016llx %016llx %016llx\n", (ubig)sw1, (ubig)sw2, - (ubig)getsw(buf, 0), (ubig)getsw(buf, 8)); - (void)printf("getuw: %016llx %016llx %016llx %016llx\n", + (ubig)getbesw(buf, 0), (ubig)getbesw(buf, 8)); + (void)printf("getbeuw: %016llx %016llx %016llx %016llx\n", (ubig)uw1, (ubig)uw2, - (ubig)getuw(buf, 0), (ubig)getuw(buf, 8)); - (void)printf("getsl: %016llx %016llx %016llx %016llx\n", + (ubig)getbeuw(buf, 0), (ubig)getbeuw(buf, 8)); + (void)printf("getbesl: %016llx %016llx %016llx %016llx\n", (ubig)sl1, (ubig)sl2, - (ubig)getsl(buf, 0), (ubig)getsl(buf, 8)); - (void)printf("getul: %016llx %016llx %016llx %016llx\n", + (ubig)getbesl(buf, 0), (ubig)getbesl(buf, 8)); + (void)printf("getbeul: %016llx %016llx %016llx %016llx\n", (ubig)ul1, (ubig)ul2, - (ubig)getul(buf, 0), (ubig)getul(buf, 8)); - (void)printf("getsL: %016llx %016llx %016llx %016llx\n", + (ubig)getbeul(buf, 0), (ubig)getbeul(buf, 8)); + (void)printf("getbesL: %016llx %016llx %016llx %016llx\n", (ubig)sL1, (ubig)sL2, - (ubig)getsL(buf, 0), (ubig)getsL(buf, 8)); - (void)printf("getuL: %016llx %016llx %016llx %016llx\n", + (ubig)getbesL(buf, 0), (ubig)getbesL(buf, 8)); + (void)printf("getbeuL: %016llx %016llx %016llx %016llx\n", (ubig)uL1, (ubig)uL2, - (ubig)getuL(buf, 0), (ubig)getuL(buf, 8)); - (void)printf("getf: %f %f\n", f1, getf(buf, 24)); - (void)printf("getd: %.16f %.16f\n", d1, getd(buf, 16)); + (ubig)getbeuL(buf, 0), (ubig)getbeuL(buf, 8)); + (void)printf("getbef: %f %f\n", f1, getbef(buf, 24)); + (void)printf("getbed: %.16f %.16f\n", d1, getbed(buf, 16)); +} + +static void ledumpall(void) +{ + (void)printf("getsb: %016llx %016llx %016llx %016llx\n", + (ubig)sb1, (ubig)sb2, + (ubig)getsb(buf, 0), (ubig)getsb(buf, 8)); + (void)printf("getub: %016llx %016llx %016llx %016llx\n", + (ubig)ub1, (ubig)ub2, + (ubig)getub(buf, 0), (ubig)getub(buf, 8)); + (void)printf("getlesw: %016llx %016llx %016llx %016llx\n", + (ubig)sw1, (ubig)sw2, + (ubig)getlesw(buf, 0), (ubig)getlesw(buf, 8)); + (void)printf("getleuw: %016llx %016llx %016llx %016llx\n", + (ubig)uw1, (ubig)uw2, + (ubig)getleuw(buf, 0), (ubig)getleuw(buf, 8)); + (void)printf("getlesl: %016llx %016llx %016llx %016llx\n", + (ubig)sl1, (ubig)sl2, + (ubig)getlesl(buf, 0), (ubig)getlesl(buf, 8)); + (void)printf("getleul: %016llx %016llx %016llx %016llx\n", + (ubig)ul1, (ubig)ul2, + (ubig)getleul(buf, 0), (ubig)getleul(buf, 8)); + (void)printf("getlesL: %016llx %016llx %016llx %016llx\n", + (ubig)sL1, (ubig)sL2, + (ubig)getlesL(buf, 0), (ubig)getlesL(buf, 8)); + (void)printf("getleuL: %016llx %016llx %016llx %016llx\n", + (ubig)uL1, (ubig)uL2, + (ubig)getleuL(buf, 0), (ubig)getleuL(buf, 8)); + (void)printf("getlef: %f %f\n", f1, getlef(buf, 24)); + (void)printf("getled: %.16f %.16f\n", d1, getled(buf, 16)); } /*@ -duplicatequals +ignorequals @*/ @@ -63,47 +93,32 @@ int main(void) /* big-endian test */ printf("Big-endian\n"); -#include "bits.h" sb1 = getsb(buf, 0); sb2 = getsb(buf, 8); ub1 = getub(buf, 0); ub2 = getub(buf, 8); - sw1 = getsw(buf, 0); - sw2 = getsw(buf, 8); - uw1 = getuw(buf, 0); - uw2 = getuw(buf, 8); - sl1 = getsl(buf, 0); - sl2 = getsl(buf, 8); - ul1 = getul(buf, 0); - ul2 = getul(buf, 8); - sL1 = getsL(buf, 0); - sL2 = getsL(buf, 8); - uL1 = getuL(buf, 0); - uL2 = getuL(buf, 8); - f1 = getf(buf, 24); - d1 = getd(buf, 16); - - dumpall(); - -#undef getub -#undef getsb -#undef getuw -#undef getsw -#undef getul -#undef getsl -#undef getuL -#undef getsL -#undef putword -#undef putlong + sw1 = getbesw(buf, 0); + sw2 = getbesw(buf, 8); + uw1 = getbeuw(buf, 0); + uw2 = getbeuw(buf, 8); + sl1 = getbesl(buf, 0); + sl2 = getbesl(buf, 8); + ul1 = getbeul(buf, 0); + ul2 = getbeul(buf, 8); + sL1 = getbesL(buf, 0); + sL2 = getbesL(buf, 8); + uL1 = getbeuL(buf, 0); + uL2 = getbeuL(buf, 8); + f1 = getbef(buf, 24); + d1 = getbed(buf, 16); + bedumpall(); /* little-endian test */ -#define LITTLE_ENDIAN_PROTOCOL printf("Little-endian\n"); -#include "bits.h" - sb1 = getlesb(buf, 0); - sb2 = getlesb(buf, 8); - ub1 = getleub(buf, 0); - ub2 = getleub(buf, 8); + sb1 = getsb(buf, 0); + sb2 = getsb(buf, 8); + ub1 = getub(buf, 0); + ub2 = getub(buf, 8); sw1 = getlesw(buf, 0); sw2 = getlesw(buf, 8); uw1 = getleuw(buf, 0); @@ -118,7 +133,7 @@ int main(void) uL2 = getleuL(buf, 8); f1 = getlef(buf, 24); d1 = getled(buf, 16); - dumpall(); + ledumpall(); exit(0); } @@ -12,7 +12,7 @@ #include "gpsd_config.h" #include "gpsd.h" -#include "bits.h" /* for getuw(), to extract big-endiamn words */ +#include "bits.h" /* for getbeuw(), to extract big-endiamn words */ extern struct gps_type_t zodiac_binary; extern struct gps_type_t ubx_binary; @@ -787,8 +787,8 @@ static struct gps_type_t rtcm104v2 = { static gps_mask_t rtcm104v3_analyze(struct gps_device_t *session) { - uint length = getuw(session->packet.inbuffer, 1); - uint type = getuw(session->packet.inbuffer, 3) >> 4; + uint length = getbeuw(session->packet.inbuffer, 1); + uint type = getbeuw(session->packet.inbuffer, 3) >> 4; gpsd_report(LOG_RAW, "RTCM 3.x packet type %d length %d words: %s\n", type, length, @@ -454,7 +454,7 @@ void rtcm3_unpack(/*@out@*/struct rtcm3_t *tp, char *buf) (void)printf("%s: type=%d length=%d, computed length %d, computed type %d\n", gpsd_hexdump(buf, 6), msg->type, msg->length, - getuw(buf, 1), getuw(buf, 3) >> 4); + getbeuw(buf, 1), getbeuw(buf, 3) >> 4); // FIXME: Decoding of packet content goes here } @@ -209,17 +209,17 @@ static gps_mask_t sirf_msg_debug(unsigned char *buf, size_t len) static gps_mask_t sirf_msg_errors(unsigned char *buf, size_t len UNUSED) { - switch (getuw(buf, 1)) { + switch (getbeuw(buf, 1)) { case 2: - gpsd_report(LOG_PROG, "EID 0x0a type 2: Subframe %d error on PRN %ld\n", getul(buf, 9), getul(buf, 5)); + gpsd_report(LOG_PROG, "EID 0x0a type 2: Subframe %d error on PRN %ld\n", getbeul(buf, 9), getbeul(buf, 5)); break; case 4107: - gpsd_report(LOG_PROG, "EID 0x0a type 4107: neither KF nor LSQ fix.\n", getul(buf, 5)); + gpsd_report(LOG_PROG, "EID 0x0a type 4107: neither KF nor LSQ fix.\n", getbeul(buf, 5)); break; default: - gpsd_report(LOG_PROG, "EID 0x0a: Error ID type %d\n", getuw(buf, 1)); + gpsd_report(LOG_PROG, "EID 0x0a: Error ID type %d\n", getbeuw(buf, 1)); break; } return 0; @@ -273,16 +273,16 @@ static gps_mask_t sirf_msg_navdata(struct gps_device_t *session, unsigned char * //unsigned int chan = (unsigned int)getub(buf, 1); //unsigned int svid = (unsigned int)getub(buf, 2); - words[0] = (unsigned int)getul(buf, 3); - words[1] = (unsigned int)getul(buf, 7); - words[2] = (unsigned int)getul(buf, 11); - words[3] = (unsigned int)getul(buf, 15); - words[4] = (unsigned int)getul(buf, 19); - words[5] = (unsigned int)getul(buf, 23); - words[6] = (unsigned int)getul(buf, 27); - words[7] = (unsigned int)getul(buf, 31); - words[8] = (unsigned int)getul(buf, 35); - words[9] = (unsigned int)getul(buf, 39); + words[0] = (unsigned int)getbeul(buf, 3); + words[1] = (unsigned int)getbeul(buf, 7); + words[2] = (unsigned int)getbeul(buf, 11); + words[3] = (unsigned int)getbeul(buf, 15); + words[4] = (unsigned int)getbeul(buf, 19); + words[5] = (unsigned int)getbeul(buf, 23); + words[6] = (unsigned int)getbeul(buf, 27); + words[7] = (unsigned int)getbeul(buf, 31); + words[8] = (unsigned int)getbeul(buf, 35); + words[9] = (unsigned int)getbeul(buf, 39); gpsd_report(LOG_PROG, "50B 0x08\n"); gpsd_interpret_subframe(session, words); @@ -304,7 +304,7 @@ static gps_mask_t sirf_msg_svinfo(struct gps_device_t *session, unsigned char *b gpsd_zero_satellites(&session->gpsdata); session->gpsdata.sentence_time - = gpstime_to_unix(getsw(buf, 1), getul(buf, 3)*1e-2) - session->context->leap_seconds; + = gpstime_to_unix(getbesw(buf, 1), getbeul(buf, 3)*1e-2) - session->context->leap_seconds; for (i = st = 0; i < SIRF_CHANNELS; i++) { int off = 8 + 15 * i; bool good; @@ -325,7 +325,7 @@ static gps_mask_t sirf_msg_svinfo(struct gps_device_t *session, unsigned char *b getub(buf, off+2)/2.0, (getub(buf, off+1)*3)/2.0, cn/10, - getuw(buf, off+3), + getbeuw(buf, off+3), good ? '*' : ' '); #endif /* UNUSED */ if (good!=0) @@ -370,8 +370,8 @@ static gps_mask_t sirf_msg_navsol(struct gps_device_t *session, unsigned char *b if ((session->driver.sirf.driverstate & (SIRF_GE_232 | UBLOX))==0) { /* position/velocity is bytes 1-18 */ ecef_to_wgs84fix(&session->gpsdata, - getsl(buf, 1)*1.0, getsl(buf, 5)*1.0, getsl(buf, 9)*1.0, - getsw(buf, 13)/8.0, getsw(buf, 15)/8.0, getsw(buf, 17)/8.0); + getbesl(buf, 1)*1.0, getbesl(buf, 5)*1.0, getbesl(buf, 9)*1.0, + getbesw(buf, 13)/8.0, getbesw(buf, 15)/8.0, getbesw(buf, 17)/8.0); /* fix status is byte 19 */ navtype = (unsigned short)getub(buf, 19); session->gpsdata.status = STATUS_NO_FIX; @@ -391,7 +391,7 @@ static gps_mask_t sirf_msg_navsol(struct gps_device_t *session, unsigned char *b /* byte 20 is HDOP, see below */ /* byte 21 is "mode 2", not clear how to interpret that */ session->gpsdata.fix.time = session->gpsdata.sentence_time = - gpstime_to_unix(getsw(buf, 22), getul(buf, 24)*1e-2) - + gpstime_to_unix(getbesw(buf, 22), getbeul(buf, 24)*1e-2) - session->context->leap_seconds; #ifdef NTPSHM_ENABLE if (session->gpsdata.fix.mode > MODE_NO_FIX) { @@ -439,7 +439,7 @@ static gps_mask_t sirf_msg_geodetic(struct gps_device_t *session, unsigned char * seem to be the case. Instead, we do our own computation * of geoid separation now. */ - navtype = (unsigned short)getuw(buf, 3); + navtype = (unsigned short)getbeuw(buf, 3); session->gpsdata.status = STATUS_NO_FIX; session->gpsdata.fix.mode = MODE_NO_FIX; if (navtype & 0x80) @@ -465,13 +465,13 @@ static gps_mask_t sirf_msg_geodetic(struct gps_device_t *session, unsigned char * UTC second 2 2 * 11 8 */ - unpacked_date.tm_year = (int)getuw(buf, 11)-1900; + unpacked_date.tm_year = (int)getbeuw(buf, 11)-1900; unpacked_date.tm_mon = (int)getub(buf, 13)-1; unpacked_date.tm_mday = (int)getub(buf, 14); unpacked_date.tm_hour = (int)getub(buf, 15); unpacked_date.tm_min = (int)getub(buf, 16); unpacked_date.tm_sec = 0; - subseconds = getuw(buf, 17)*1e-3; + subseconds = getbeuw(buf, 17)*1e-3; /*@ -compdef -unrecog */ session->gpsdata.fix.time = session->gpsdata.sentence_time = (double)timegm(&unpacked_date)+subseconds; @@ -488,16 +488,16 @@ static gps_mask_t sirf_msg_geodetic(struct gps_device_t *session, unsigned char } #endif /* NTPSHM_ENABLE */ /* skip 4 bytes of satellite map */ - session->gpsdata.fix.latitude = getsl(buf, 23)*1e-7; - session->gpsdata.fix.longitude = getsl(buf, 27)*1e-7; + session->gpsdata.fix.latitude = getbesl(buf, 23)*1e-7; + session->gpsdata.fix.longitude = getbesl(buf, 27)*1e-7; /* skip 4 bytes of altitude from ellipsoid */ mask = TIME_SET | LATLON_SET | STATUS_SET | MODE_SET; - session->gpsdata.fix.altitude = getsl(buf, 31)*1e-2; + session->gpsdata.fix.altitude = getbesl(buf, 31)*1e-2; /* skip 1 byte of map datum */ - session->gpsdata.fix.speed = getsw(buf, 36)*1e-2; - session->gpsdata.fix.track = getsw(buf, 38)*1e-2; + session->gpsdata.fix.speed = getbesw(buf, 36)*1e-2; + session->gpsdata.fix.track = getbesw(buf, 38)*1e-2; /* skip 2 bytes of magnetic variation */ - session->gpsdata.fix.climb = getsw(buf, 42)*1e-2; + session->gpsdata.fix.climb = getbesw(buf, 42)*1e-2; /* HDOP should be available at byte 89, but in 231 it's zero. */ mask |= SPEED_SET | TRACK_SET | CLIMB_SET | CYCLE_START_SET; session->gpsdata.sentence_length = 91; @@ -517,7 +517,7 @@ static gps_mask_t sirf_msg_sysparam(struct gps_device_t *session, unsigned char session->driver.sirf.nav_parameters_seen = true; session->driver.sirf.altitude_hold_mode = getub(buf, 5); session->driver.sirf.altitude_hold_source = getub(buf, 6); - session->driver.sirf.altitude_source_input = getsw(buf, 7); + session->driver.sirf.altitude_source_input = getbesw(buf, 7); session->driver.sirf.degraded_mode = getub(buf, 9); session->driver.sirf.degraded_timeout = getub(buf, 10); session->driver.sirf.dr_timeout = getub(buf, 11); @@ -539,13 +539,13 @@ static gps_mask_t sirf_msg_ublox(struct gps_device_t *session, unsigned char *bu /* this packet is only sent by uBlox firmware from version 1.32 */ mask = LATLON_SET | ALTITUDE_SET | SPEED_SET | TRACK_SET | CLIMB_SET | STATUS_SET | MODE_SET | HDOP_SET | VDOP_SET | PDOP_SET; - session->gpsdata.fix.latitude = getsl(buf, 1) * RAD_2_DEG * 1e-8; - session->gpsdata.fix.longitude = getsl(buf, 5) * RAD_2_DEG * 1e-8; + session->gpsdata.fix.latitude = getbesl(buf, 1) * RAD_2_DEG * 1e-8; + session->gpsdata.fix.longitude = getbesl(buf, 5) * RAD_2_DEG * 1e-8; session->gpsdata.separation = wgs84_separation(session->gpsdata.fix.latitude, session->gpsdata.fix.longitude); - session->gpsdata.fix.altitude = getsl(buf, 9) * 1e-3 - session->gpsdata.separation; - session->gpsdata.fix.speed = getsl(buf, 13) * 1e-3; - session->gpsdata.fix.climb = getsl(buf, 17) * 1e-3; - session->gpsdata.fix.track = getsl(buf, 21) * RAD_2_DEG * 1e-8; + session->gpsdata.fix.altitude = getbesl(buf, 9) * 1e-3 - session->gpsdata.separation; + session->gpsdata.fix.speed = getbesl(buf, 13) * 1e-3; + session->gpsdata.fix.climb = getbesl(buf, 17) * 1e-3; + session->gpsdata.fix.track = getbesl(buf, 21) * RAD_2_DEG * 1e-8; navtype = (unsigned short)getub(buf, 25); session->gpsdata.status = STATUS_NO_FIX; @@ -565,13 +565,13 @@ static gps_mask_t sirf_msg_ublox(struct gps_device_t *session, unsigned char *bu struct tm unpacked_date; double subseconds; mask |= TIME_SET; - unpacked_date.tm_year = (int)getuw(buf, 26) - 1900; + unpacked_date.tm_year = (int)getbeuw(buf, 26) - 1900; unpacked_date.tm_mon = (int)getub(buf, 28) - 1; unpacked_date.tm_mday = (int)getub(buf, 29); unpacked_date.tm_hour = (int)getub(buf, 30); unpacked_date.tm_min = (int)getub(buf, 31); unpacked_date.tm_sec = 0; - subseconds = ((unsigned short)getuw(buf, 32))*1e-3; + subseconds = ((unsigned short)getbeuw(buf, 32))*1e-3; /*@ -compdef */ session->gpsdata.fix.time = session->gpsdata.sentence_time = (double)mkgmtime(&unpacked_date)+subseconds; @@ -611,12 +611,12 @@ static gps_mask_t sirf_msg_ppstime(struct gps_device_t *session, unsigned char * unpacked_date.tm_sec = (int)getub(buf, 3); unpacked_date.tm_mday = (int)getub(buf, 4); unpacked_date.tm_mon = (int)getub(buf, 5) - 1; - unpacked_date.tm_year = (int)getuw(buf, 6) - 1900; + unpacked_date.tm_year = (int)getbeuw(buf, 6) - 1900; /*@ -compdef */ session->gpsdata.fix.time = session->gpsdata.sentence_time = (double)mkgmtime(&unpacked_date); /*@ +compdef */ - session->context->leap_seconds = (int)getuw(buf, 8); + session->context->leap_seconds = (int)getbeuw(buf, 8); session->context->valid |= LEAP_SECOND_VALID; #ifdef NTPSHM_ENABLE if ((session->driver.sirf.time_seen & TIME_SEEN_UTC_2) == 0) @@ -678,8 +678,8 @@ gps_mask_t sirf_parse(struct gps_device_t *session, unsigned char *buf, size_t l case 0x09: /* CPU Throughput */ gpsd_report(LOG_PROG, "THR 0x09: SegStatMax=%.3f, SegStatLat=%3.f, AveTrkTime=%.3f, Last MS=%3.f\n", - (float)getuw(buf, 1)/186, (float)getuw(buf, 3)/186, - (float)getuw(buf, 5)/186, getuw(buf, 7)); + (float)getbeuw(buf, 1)/186, (float)getbeuw(buf, 3)/186, + (float)getbeuw(buf, 5)/186, getbeuw(buf, 7)); return 0; case 0x0a: /* Error ID Data */ @@ -916,7 +916,7 @@ static void sirfbin_revert(struct gps_device_t *session) 0x00, 0x00, 0xb0, 0xb3}; /*@ -charint -shiftimplementation @*/ putbyte(moderevert, 7, session->driver.sirf.degraded_mode); - putword(moderevert, 10, session->driver.sirf.altitude_source_input); + putbeword(moderevert, 10, session->driver.sirf.altitude_source_input); putbyte(moderevert, 12, session->driver.sirf.altitude_hold_mode); putbyte(moderevert, 13, session->driver.sirf.altitude_hold_source); putbyte(moderevert, 15, session->driver.sirf.degraded_timeout); @@ -245,13 +245,13 @@ static void decode_sirf(unsigned char buf[], int len) { case 0x02: /* Measured Navigation Data */ (void)wmove(mid2win, 1,6); /* ECEF position */ - (void)wprintw(mid2win, "%8d %8d %8d",getsl(buf, 1),getsl(buf, 5),getsl(buf, 9)); + (void)wprintw(mid2win, "%8d %8d %8d",getbesl(buf, 1),getbesl(buf, 5),getbesl(buf, 9)); (void)wmove(mid2win, 2,6); /* ECEF velocity */ (void)wprintw(mid2win, "%8.1f %8.1f %8.1f", - (double)getsw(buf, 13)/8,(double)getsw(buf, 15)/8,(double)getsw(buf, 17)/8); - decode_ecef((double)getsl(buf, 1),(double)getsl(buf, 5),(double)getsl(buf, 9), - (double)getsw(buf, 13)/8,(double)getsw(buf, 15)/8,(double)getsw(buf, 17)/8); - decode_time((int)getuw(buf, 22),getsl(buf, 24)); + (double)getbesw(buf, 13)/8,(double)getbesw(buf, 15)/8,(double)getbesw(buf, 17)/8); + decode_ecef((double)getbesl(buf, 1),(double)getbesl(buf, 5),(double)getbesl(buf, 9), + (double)getbesw(buf, 13)/8,(double)getbesw(buf, 15)/8,(double)getbesw(buf, 17)/8); + decode_time((int)getbeuw(buf, 22),getbesl(buf, 24)); /* line 4 */ (void)wmove(mid2win, 4,49); (void)wprintw(mid2win, "%4.1f",(double)getub(buf, 20)/5); /* HDOP */ @@ -272,7 +272,7 @@ static void decode_sirf(unsigned char buf[], int len) break; case 0x04: /* Measured Tracking Data */ - decode_time((int)getuw(buf, 1),getsl(buf, 3)); + decode_time((int)getbeuw(buf, 1),getbesl(buf, 3)); ch = (int)getub(buf, 7); for (i = 0; i < ch; i++) { int sv,st; @@ -282,10 +282,10 @@ static void decode_sirf(unsigned char buf[], int len) sv = (int)getub(buf, off); (void)wprintw(mid4win, " %3d",sv); - (void)wprintw(mid4win, " %3d%3d %04x",((int)getub(buf, off+1)*3)/2,(int)getub(buf, off+2)/2,(int)getsw(buf, off+3)); + (void)wprintw(mid4win, " %3d%3d %04x",((int)getub(buf, off+1)*3)/2,(int)getub(buf, off+2)/2,(int)getbesw(buf, off+3)); st = ' '; - if ((int)getuw(buf, off+3) == 0xbf) + if ((int)getbeuw(buf, off+3) == 0xbf) st = 'T'; for (j = 0; j < nfix; j++) if (sv == fix[j]) { @@ -309,7 +309,7 @@ static void decode_sirf(unsigned char buf[], int len) #ifdef __UNUSED__ case 0x05: /* raw track data */ for (off = 1; off < len; off += 51) { - ch = getul(buf, off); + ch = getbeul(buf, off); (void)wmove(mid4win, ch+2, 19); cn = 0; @@ -318,9 +318,9 @@ static void decode_sirf(unsigned char buf[], int len) printw("%5.1f",(double)cn/10); - printw("%9d%3d%5d",getul(buf, off+8),(int)getuw(buf, off+12),(int)getuw(buf, off+14)); + printw("%9d%3d%5d",getbeul(buf, off+8),(int)getbeuw(buf, off+12),(int)getbeuw(buf, off+14)); printw("%8.5f %10.5f", - (double)getul(buf, off+16)/65536,(double)getul(buf, off+20)/1024); + (double)getbeul(buf, off+16)/65536,(double)getbeul(buf, off+20)/1024); } (void)wprintw(debugwin, "RTD 0x05="); break; @@ -332,11 +332,11 @@ static void decode_sirf(unsigned char buf[], int len) break; case 0x07: /* Response - Clock Status Data */ - decode_time((int)getuw(buf, 1),getsl(buf, 3)); + decode_time((int)getbeuw(buf, 1),getbesl(buf, 3)); display(mid7win, 1, 5, "%2d", getub(buf, 7)); /* SVs */ - display(mid7win, 1, 16, "%lu", getul(buf, 8)); /* Clock drift */ - display(mid7win, 1, 29, "%lu", getul(buf, 12)); /* Clock Bias */ - display(mid7win, 2, 21, "%lu", getul(buf, 16)); /* Estimated Time */ + display(mid7win, 1, 16, "%lu", getbeul(buf, 8)); /* Clock drift */ + display(mid7win, 1, 29, "%lu", getbeul(buf, 12)); /* Clock Bias */ + display(mid7win, 2, 21, "%lu", getbeul(buf, 16)); /* Estimated Time */ (void)wprintw(debugwin, "CSD 0x07="); break; @@ -348,10 +348,10 @@ static void decode_sirf(unsigned char buf[], int len) break; case 0x09: /* Throughput */ - display(mid9win, 1, 6, "%.3f",(double)getuw(buf, 1)/186); /*SegStatMax*/ - display(mid9win, 1, 18, "%.3f",(double)getuw(buf, 3)/186); /*SegStatLat*/ - display(mid9win, 1, 31, "%.3f",(double)getuw(buf, 5)/186); /*SegStatTime*/ - display(mid9win, 1, 42, "%3d",(int)getuw(buf, 7)); /* Last Millisecond */ + display(mid9win, 1, 6, "%.3f",(double)getbeuw(buf, 1)/186); /*SegStatMax*/ + display(mid9win, 1, 18, "%.3f",(double)getbeuw(buf, 3)/186); /*SegStatLat*/ + display(mid9win, 1, 31, "%.3f",(double)getbeuw(buf, 5)/186); /*SegStatTime*/ + display(mid9win, 1, 42, "%3d",(int)getbeuw(buf, 7)); /* Last Millisecond */ (void)wprintw(debugwin, "THR 0x09="); break; @@ -380,7 +380,7 @@ static void decode_sirf(unsigned char buf[], int len) #define YESNO(n) (((int)getub(buf, n) != 0)?'Y':'N') display(mid19win, 1, 20, "%d", getub(buf, 5)); /* Alt. hold mode */ display(mid19win, 2, 20, "%d", getub(buf, 6)); /* Alt. hold source*/ - display(mid19win, 3, 20, "%dm", (int)getuw(buf, 7)); /* Alt. source input */ + display(mid19win, 3, 20, "%dm", (int)getbeuw(buf, 7)); /* Alt. source input */ display(mid19win, 4, 20, "%d", getub(buf, 9)); /* Degraded mode*/ display(mid19win, 5, 20, "%dsec", getub(buf, 10)); /* Degraded timeout*/ display(mid19win, 6, 20, "%dsec",getub(buf, 11)); /* DR timeout*/ @@ -388,22 +388,22 @@ static void decode_sirf(unsigned char buf[], int len) display(mid19win, 8, 20, "%c", YESNO(13)); /* Static Nav.*/ display(mid19win, 9, 20, "0x%x", getub(buf, 14)); /* 3SV Least Squares*/ display(mid19win, 10,20, "0x%x", getub(buf, 19)); /* DOP Mask mode*/ - display(mid19win, 11,20, "0x%x", (int)getuw(buf, 20)); /* Nav. Elev. mask*/ + display(mid19win, 11,20, "0x%x", (int)getbeuw(buf, 20)); /* Nav. Elev. mask*/ display(mid19win, 12,20, "0x%x", getub(buf, 22)); /* Nav. Power mask*/ display(mid19win, 13,20, "0x%x", getub(buf, 27)); /* DGPS Source*/ display(mid19win, 14,20, "0x%x", getub(buf, 28)); /* DGPS Mode*/ display(mid19win, 15,20, "%dsec",getub(buf, 29)); /* DGPS Timeout*/ display(mid19win, 1, 42, "%c", YESNO(34));/* LP Push-to-Fix */ - display(mid19win, 2, 42, "%dms", getul(buf, 35)); /* LP On Time */ - display(mid19win, 3, 42, "%d", getul(buf, 39)); /* LP Interval */ + display(mid19win, 2, 42, "%dms", getbeul(buf, 35)); /* LP On Time */ + display(mid19win, 3, 42, "%d", getbeul(buf, 39)); /* LP Interval */ display(mid19win, 4, 42, "%c", YESNO(43));/* User Tasks enabled */ - display(mid19win, 5, 42, "%d", getul(buf, 44)); /* User Task Interval */ + display(mid19win, 5, 42, "%d", getbeul(buf, 44)); /* User Task Interval */ display(mid19win, 6, 42, "%c", YESNO(48));/* LP Power Cycling Enabled */ - display(mid19win, 7, 42, "%d", getul(buf, 49));/* LP Max Acq Search Time */ - display(mid19win, 8, 42, "%d", getul(buf, 53));/* LP Max Off Time */ + display(mid19win, 7, 42, "%d", getbeul(buf, 49));/* LP Max Acq Search Time */ + display(mid19win, 8, 42, "%d", getbeul(buf, 53));/* LP Max Off Time */ display(mid19win, 9, 42, "%c", YESNO(57));/* APM Enabled */ - display(mid19win,10, 42, "%d", (int)getuw(buf, 58));/* # of fixes */ - display(mid19win,11, 42, "%d", (int)getuw(buf, 60));/* Time Between fixes */ + display(mid19win,10, 42, "%d", (int)getbeuw(buf, 58));/* # of fixes */ + display(mid19win,11, 42, "%d", (int)getbeuw(buf, 60));/* Time Between fixes */ display(mid19win,12, 42, "%d", getub(buf, 62));/* H/V Error Max */ display(mid19win,13, 42, "%d", getub(buf, 63));/* Response Time Max */ display(mid19win,14, 42, "%d", getub(buf, 64));/* Time/Accu & Duty Cycle Priority */ @@ -458,7 +458,7 @@ static void decode_sirf(unsigned char buf[], int len) for (i = j = 0; i < 12; i++) { (void)touchwin(mid27win); if (/*@i1@*/getub(buf, 16+3*i) != '\0') { - (void)wprintw(mid27win, " %d=%d", getub(buf, 16+3*i), getsw(buf, 16+3*i+1)); + (void)wprintw(mid27win, " %d=%d", getub(buf, 16+3*i), getbesw(buf, 16+3*i+1)); j++; } } @@ -486,18 +486,18 @@ static void decode_sirf(unsigned char buf[], int len) case 0x62: attrset(A_BOLD); move(2,40); - printw("%9.5f %9.5f",(double)(RAD2DEG*1e8*getsl(buf, 1)), - (double)(RAD2DEG*1e8*getsl(buf, 5))); + printw("%9.5f %9.5f",(double)(RAD2DEG*1e8*getbesl(buf, 1)), + (double)(RAD2DEG*1e8*getbesl(buf, 5))); move(2,63); - printw("%8d",getsl(buf, 9)/1000); + printw("%8d",getbesl(buf, 9)/1000); move(3,63); - printw("%8.1f",(double)getsl(buf, 17)/1000); + printw("%8.1f",(double)getbesl(buf, 17)/1000); move(4,54); - if (getul(buf, 13) > 50) { - double heading = RAD2DEG*1e8*getsl(buf, 21); + if (getbeul(buf, 13) > 50) { + double heading = RAD2DEG*1e8*getbesl(buf, 21); if (heading < 0) heading += 360; printw("%5.1f",heading); @@ -505,14 +505,14 @@ static void decode_sirf(unsigned char buf[], int len) printw(" 0.0"); move(4,63); - printw("%8.1f",(double)getsl(buf, 13)/1000); + printw("%8.1f",(double)getbesl(buf, 13)/1000); attrset(A_NORMAL); move(5,13); printw("%04d-%02d-%02d %02d:%02d:%02d.%02d", - (int)getuw(buf, 26),getub(buf, 28),getub(buf, 29),getub(buf, 30),getub(buf, 31), - (unsigned short)getuw(buf, 32)/1000, - ((unsigned short)getuw(buf, 32)%1000)/10); + (int)getbeuw(buf, 26),getub(buf, 28),getub(buf, 29),getub(buf, 30),getub(buf, 31), + (unsigned short)getbeuw(buf, 32)/1000, + ((unsigned short)getbeuw(buf, 32)%1000)/10); { struct timeval clk,gps; struct tm tm; @@ -520,15 +520,15 @@ static void decode_sirf(unsigned char buf[], int len) gettimeofday(&clk,NULL); memset(&tm,0,sizeof(tm)); - tm.tm_sec = (unsigned short)getuw(buf, 32)/1000; + tm.tm_sec = (unsigned short)getbeuw(buf, 32)/1000; tm.tm_min = (int)getub(buf, 31); tm.tm_hour = (int)getub(buf, 30); tm.tm_mday = (int)getub(buf, 29); tm.tm_mon = (int)getub(buf, 28) - 1; - tm.tm_year = (int)getuw(buf, 26) - 1900; + tm.tm_year = (int)getbeuw(buf, 26) - 1900; gps.tv_sec = mkgmtime(&tm); - gps.tv_usec = (((unsigned short)getuw(buf, 32)%1000)/10) * 10000; + gps.tv_usec = (((unsigned short)getbeuw(buf, 32)%1000)/10) * 10000; move(5,2); printw(" "); @@ -836,14 +836,14 @@ static bool sendpkt(unsigned char *buf, size_t len, char *device) putbyte(buf, -4, START1); /* start of packet */ putbyte(buf, -3, START2); - putword(buf, -2, len); /* length */ + putbeword(buf, -2, len); /* length */ csum = 0; for (i = 0; i < len; i++) csum += (int)buf[4 + i]; csum &= 0x7fff; - putword(buf, len, csum); /* checksum */ + putbeword(buf, len, csum); /* checksum */ putbyte(buf, len + 2,END1); /* end of packet */ putbyte(buf, len + 3,END2); len += 8; @@ -1239,7 +1239,7 @@ int main (int argc, char **argv) break; goodspeed: putbyte(buf, 0, 0x86); - putlong(buf, 1, v); /* new baud rate */ + putbelong(buf, 1, v); /* new baud rate */ putbyte(buf, 5, 8); /* 8 data bits */ putbyte(buf, 6, stopbits); /* 1 stop bit */ putbyte(buf, 7, 0); /* no parity */ @@ -1309,7 +1309,7 @@ int main (int argc, char **argv) putbyte(buf, 19,0x01); putbyte(buf, 20,0x00); putbyte(buf, 21,0x01); - putword(buf, 22,bps); + putbeword(buf, 22,bps); (void)sendpkt(buf, 24, device); goto quit; @@ -196,9 +196,9 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) if (len != 10) break; session->driver.tsip.last_41 = now; /* keep timestamp for request */ - f1 = getf(buf,0); /* gpstime */ - s1 = getsw(buf,4); /* week */ - f2 = getf(buf,6); /* leap seconds */ + f1 = getbef(buf,0); /* gpstime */ + s1 = getbesw(buf,4); /* week */ + f2 = getbef(buf,6); /* leap seconds */ if (f1 >= 0.0 && f2 > 10.0) { session->driver.tsip.gps_week = s1; session->context->leap_seconds = (int)round(f2); @@ -217,20 +217,20 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) case 0x42: /* Single-Precision Position Fix, XYZ ECEF */ if (len != 16) break; - f1 = getf(buf,0); /* X */ - f2 = getf(buf,4); /* Y */ - f3 = getf(buf,8); /* Z */ - f4 = getf(buf,12); /* time-of-fix */ + f1 = getbef(buf,0); /* X */ + f2 = getbef(buf,4); /* Y */ + f3 = getbef(buf,8); /* Z */ + f4 = getbef(buf,12); /* time-of-fix */ gpsd_report(LOG_INF, "GPS Position XYZ %f %f %f %f\n",f1,f2,f3,f4); break; case 0x43: /* Velocity Fix, XYZ ECEF */ if (len != 20) break; - f1 = getf(buf,0); /* X velocity */ - f2 = getf(buf,4); /* Y velocity */ - f3 = getf(buf,8); /* Z velocity */ - f4 = getf(buf,12); /* bias rate */ - f5 = getf(buf,16); /* time-of-fix */ + f1 = getbef(buf,0); /* X velocity */ + f2 = getbef(buf,4); /* Y velocity */ + f3 = getbef(buf,8); /* Z velocity */ + f4 = getbef(buf,12); /* bias rate */ + 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 0x45: /* Software Version Information */ @@ -270,7 +270,7 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) buf2[0] = '\0'; for (i = 0; i < count; i++) { u1 = getub(buf,5*i + 1); - if ((f1 = getf(buf,5*i + 2)) < 0) + if ((f1 = getbef(buf,5*i + 2)) < 0) f1 = 0.0; for (j = 0; j < TSIP_CHANNELS; j++) if (session->gpsdata.PRN[j] == (int)u1) { @@ -290,11 +290,11 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) case 0x4a: /* Single-Precision Position LLA */ if (len != 20) break; - session->gpsdata.fix.latitude = getf(buf,0) * RAD_2_DEG; - session->gpsdata.fix.longitude = getf(buf,4) * RAD_2_DEG; - session->gpsdata.fix.altitude = getf(buf,8); - f1 = getf(buf,12); /* clock bias */ - f2 = getf(buf,16); /* time-of-fix */ + session->gpsdata.fix.latitude = getbef(buf,0) * RAD_2_DEG; + session->gpsdata.fix.longitude = getbef(buf,4) * RAD_2_DEG; + session->gpsdata.fix.altitude = getbef(buf,8); + f1 = getbef(buf,12); /* clock bias */ + f2 = getbef(buf,16); /* time-of-fix */ if (session->driver.tsip.gps_week) { session->gpsdata.fix.time = session->gpsdata.sentence_time = gpstime_to_unix((int)session->driver.tsip.gps_week, f2) - session->context->leap_seconds; @@ -353,11 +353,11 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) case 0x56: /* Velocity Fix, East-North-Up (ENU) */ if (len != 20) break; - f1 = getf(buf,0); /* East velocity */ - f2 = getf(buf,4); /* North velocity */ - f3 = getf(buf,8); /* Up velocity */ - f4 = getf(buf,12); /* clock bias rate */ - f5 = getf(buf,16); /* time-of-fix */ + f1 = getbef(buf,0); /* East velocity */ + f2 = getbef(buf,4); /* North velocity */ + f3 = getbef(buf,8); /* Up velocity */ + f4 = getbef(buf,12); /* clock bias rate */ + f5 = getbef(buf,16); /* time-of-fix */ session->gpsdata.fix.climb = f3; /*@ -evalorder @*/ session->gpsdata.fix.speed = sqrt(pow(f2,2) + pow(f1,2)); @@ -372,8 +372,8 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) break; u1 = getub(buf,0); /* Source of information */ u2 = getub(buf,1); /* Mfg. diagnostic */ - f1 = getf(buf,2); /* gps_time */ - s1 = getsw(buf,6); /* tsip.gps_week */ + f1 = getbef(buf,2); /* gps_time */ + s1 = getbesw(buf,6); /* tsip.gps_week */ /*@ +charint @*/ if (getub(buf,0) == 0x01) /* good current fix? */ session->driver.tsip.gps_week = s1; @@ -387,10 +387,10 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) case 0x5a: /* Raw Measurement Data */ if (len != 25) break; - f1 = getf(buf,5); /* Signal Level */ - f2 = getf(buf,9); /* Code phase */ - f3 = getf(buf,13); /* Doppler */ - d1 = getd(buf,17); /* Time of Measurement */ + f1 = getbef(buf,5); /* Signal Level */ + f2 = getbef(buf,9); /* Code phase */ + f3 = getbef(buf,13); /* Doppler */ + 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 0x5c: /* Satellite Tracking Status */ @@ -401,10 +401,10 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) u2 = getub(buf,1); /* chan */ u3 = getub(buf,2); /* Acquisition flag */ u4 = getub(buf,3); /* Ephemeris flag */ - f1 = getf(buf,4); /* Signal level */ - f2 = getf(buf,8); /* time of Last measurement */ - d1 = getf(buf,12) * RAD_2_DEG; /* Elevation */ - d2 = getf(buf,16) * RAD_2_DEG; /* Azimuth */ + f1 = getbef(buf,4); /* Signal level */ + f2 = getbef(buf,8); /* time of Last measurement */ + d1 = getbef(buf,12) * RAD_2_DEG; /* Elevation */ + d2 = getbef(buf,16) * RAD_2_DEG; /* Azimuth */ i = (int)(u2 >> 3); /* channel number */ gpsd_report(LOG_INF, "Satellite Tracking Status: Ch %2d PRN %3d Res %d Acq %d Eph %2d SNR %4.1f LMT %.04f El %4.1f Az %5.1f\n",i,u1,u2&7,u3,u4,f1,f2,d1,d2); if (i < TSIP_CHANNELS) { @@ -445,10 +445,10 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) break; } session->gpsdata.satellites_used = count; - session->gpsdata.pdop = getf(buf,1); - session->gpsdata.hdop = getf(buf,5); - session->gpsdata.vdop = getf(buf,9); - session->gpsdata.tdop = getf(buf,13); + session->gpsdata.pdop = getbef(buf,1); + session->gpsdata.hdop = getbef(buf,5); + session->gpsdata.vdop = getbef(buf,9); + session->gpsdata.tdop = getbef(buf,13); /*@ -evalorder @*/ session->gpsdata.gdop = sqrt(pow(session->gpsdata.pdop,2)+pow(session->gpsdata.tdop,2)); /*@ +evalorder @*/ @@ -477,7 +477,7 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) if (len < 20 || getub(buf,0) != 1 || getub(buf,1) != 2) break; /*@ -charint @*/ - s1 = getsw(buf,2); /* number of bytes */ + s1 = getbesw(buf,2); /* number of bytes */ u1 = getub(buf,20); /* number of SVs */ break; case 0x70: /* Filter Report */ @@ -499,21 +499,21 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) case 0x83: /* Double-Precision XYZ Position Fix and Bias Information */ if (len != 36) break; - d1 = getd(buf,0); /* X */ - d2 = getd(buf,8); /* Y */ - d3 = getd(buf,16); /* Z */ - d4 = getd(buf,24); /* clock bias */ - f1 = getf(buf,32); /* time-of-fix */ + d1 = getbed(buf,0); /* X */ + d2 = getbed(buf,8); /* Y */ + d3 = getbed(buf,16); /* Z */ + d4 = getbed(buf,24); /* clock bias */ + f1 = getbef(buf,32); /* time-of-fix */ gpsd_report(LOG_INF, "GPS Position XYZ %f %f %f %f %f\n",d1,d2,d3,d4,f1); break; case 0x84: /* Double-Precision LLA Position Fix and Bias Information */ if (len != 36) break; - session->gpsdata.fix.latitude = getd(buf,0) * RAD_2_DEG; - session->gpsdata.fix.longitude = getd(buf,8) * RAD_2_DEG; - session->gpsdata.fix.altitude = getd(buf,16); - d1 = getd(buf,24); /* clock bias */ - f1 = getf(buf,32); /* time-of-fix */ + session->gpsdata.fix.latitude = getbed(buf,0) * RAD_2_DEG; + session->gpsdata.fix.longitude = getbed(buf,8) * RAD_2_DEG; + session->gpsdata.fix.altitude = getbed(buf,16); + d1 = getbed(buf,24); /* clock bias */ + f1 = getbef(buf,32); /* time-of-fix */ if (session->driver.tsip.gps_week) { session->gpsdata.fix.time = session->gpsdata.sentence_time = gpstime_to_unix((int)session->driver.tsip.gps_week, f1) - session->context->leap_seconds; @@ -537,12 +537,12 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) case 0x15: /* Current Datum Values */ if (len != 43) break; - s1 = getsw(buf,1); /* Datum Index */ - d1 = getd(buf,3); /* DX */ - d2 = getd(buf,11); /* DY */ - d3 = getd(buf,19); /* DZ */ - d4 = getd(buf,27); /* A-axis */ - d5 = getd(buf,35); /* Eccentricity Squared */ + s1 = getbesw(buf,1); /* Datum Index */ + d1 = getbed(buf,3); /* DX */ + d2 = getbed(buf,11); /* DY */ + d3 = getbed(buf,19); /* DZ */ + d4 = getbed(buf,27); /* A-axis */ + d5 = getbed(buf,35); /* Eccentricity Squared */ gpsd_report(LOG_INF, "Current Datum %d %f %f %f %f %f\n",s1,d1,d2,d3,d4,d5); break; @@ -550,18 +550,18 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) /* XXX CSK sez "why does my Lassen iQ output oversize packets?" */ if ((len != 56) && (len != 64)) break; - s1 = getsw(buf,2); /* east velocity */ - s2 = getsw(buf,4); /* north velocity */ - s3 = getsw(buf,6); /* up velocity */ - ul1 = getul(buf,8); /* time */ - sl1 = getsl(buf,12); /* latitude */ - ul2 = getul(buf,16); /* longitude */ - sl2 = getsl(buf,20); /* altitude */ + s1 = getbesw(buf,2); /* east velocity */ + s2 = getbesw(buf,4); /* north velocity */ + s3 = getbesw(buf,6); /* up velocity */ + ul1 = getbeul(buf,8); /* time */ + sl1 = getbesl(buf,12); /* latitude */ + ul2 = getbeul(buf,16); /* longitude */ + sl2 = getbesl(buf,20); /* altitude */ u1 = getub(buf,24); /* velocity scaling */ u2 = getub(buf,27); /* fix flags */ u3 = getub(buf,28); /* num svs */ u4 = getub(buf,29); /* utc offset */ - s4 = getsw(buf,30); /* tsip.gps_week */ + s4 = getbesw(buf,30); /* tsip.gps_week */ /* PRN/IODE data follows */ gpsd_report(LOG_RAW, "LFwEI %d %d %d %u %d %u %u %x %x %u %u %d\n",s1,s2,s3,ul1,sl1,ul2,sl2,u1,u2,u3,u4,s4); @@ -607,16 +607,16 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) /* XXX CSK sez "i don't trust this to not be oversized either." */ if (len < 29) break; - ul1 = getul(buf,1); /* time */ - s1 = getsw(buf,5); /* tsip.gps_week */ + ul1 = getbeul(buf,1); /* time */ + s1 = getbesw(buf,5); /* tsip.gps_week */ u1 = getub(buf,7); /* utc offset */ u2 = getub(buf,8); /* fix flags */ - sl1 = getsl(buf,9); /* latitude */ - ul2 = getul(buf,13); /* longitude */ - sl3 = getsl(buf,17); /* altitude */ - s2 = getsw(buf,21); /* east velocity */ - s3 = getsw(buf,23); /* north velocity */ - s4 = getsw(buf,25); /* up velocity */ + sl1 = getbesl(buf,9); /* latitude */ + ul2 = getbeul(buf,13); /* longitude */ + sl3 = getbesl(buf,17); /* altitude */ + s2 = getbesw(buf,21); /* east velocity */ + s3 = getbesw(buf,23); /* north velocity */ + s4 = getbesw(buf,25); /* up velocity */ gpsd_report(LOG_INF, "CSP %u %d %u %u %d %u %d %d %d %d\n",ul1,s1,u1,u2,sl1,ul2,sl3,s2,s3,s4); session->driver.tsip.gps_week = s1; if ((int)u1 > 10) { @@ -666,10 +666,10 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) u2 = getub(buf,1); /* Operating Dimension */ u3 = getub(buf,2); /* DGPS Mode */ u4 = getub(buf,3); /* Dynamics Code */ - f1 = getf(buf,5); /* Elevation Mask */ - f2 = getf(buf,9); /* AMU Mask */ - f3 = getf(buf,13); /* DOP Mask */ - f4 = getf(buf,17); /* DOP Switch */ + f1 = getbef(buf,5); /* Elevation Mask */ + f2 = getbef(buf,9); /* AMU Mask */ + f3 = getbef(buf,13); /* DOP Mask */ + f4 = getbef(buf,17); /* DOP Switch */ u5 = getub(buf,21); /* DGPS Age Limit */ gpsd_report(LOG_INF, "Navigation Configuration %u %u %u %u %f %f %f %f %u\n",u1,u2,u3,u4,f1,f2,f3,f4,u5); break; |