diff options
-rw-r--r-- | .splintrc | 3 | ||||
-rw-r--r-- | driver_evermore.c | 9 | ||||
-rw-r--r-- | driver_garmin.c | 6 | ||||
-rw-r--r-- | driver_geostar.c | 8 | ||||
-rw-r--r-- | driver_oncore.c | 2 | ||||
-rw-r--r-- | driver_sirf.c | 21 | ||||
-rw-r--r-- | driver_tsip.c | 26 | ||||
-rw-r--r-- | gpsd_json.c | 24 | ||||
-rw-r--r-- | monitor_oncore.c | 14 | ||||
-rw-r--r-- | monitor_sirf.c | 6 | ||||
-rw-r--r-- | monitor_superstar2.c | 2 | ||||
-rw-r--r-- | monitor_ubx.c | 4 | ||||
-rw-r--r-- | subframe.c | 54 |
13 files changed, 91 insertions, 88 deletions
@@ -10,9 +10,6 @@ -nestedextern -abstract --Dint8_t=char --Dint16_t=short --Dint32_t=int -Din_addr_t=int -Dcaddr_t=short -Disgps30bits_t=uint diff --git a/driver_evermore.c b/driver_evermore.c index 8145340d..700d66ba 100644 --- a/driver_evermore.c +++ b/driver_evermore.c @@ -190,9 +190,12 @@ gps_mask_t evermore_parse(struct gps_device_t * session, unsigned char *buf, (unsigned short)getleu16(buf2, 2), (double)getleu32(buf2, 4) * 0.01); ecef_to_wgs84fix(&session->newdata, &session->gpsdata.separation, - getles32(buf2, 8) * 1.0, getles32(buf2, 12) * 1.0, - getles32(buf2, 16) * 1.0, getles16(buf2, 20) / 10.0, - getles16(buf2, 22) / 10.0, getles16(buf2, 24) / 10.0); + (double)getles32(buf2, 8) * 1.0, + (double)getles32(buf2, 12) * 1.0, + (double)getles32(buf2, 16) * 1.0, + (double)getles16(buf2, 20) / 10.0, + (double)getles16(buf2, 22) / 10.0, + (double)getles16(buf2, 24) / 10.0); used = (unsigned char)getub(buf2, 26) & 0x0f; //visible = (getub(buf2, 26) & 0xf0) >> 4; version = (uint) getleu16(buf2, 27) / 100.0; diff --git a/driver_garmin.c b/driver_garmin.c index 3e671fc4..0b172f12 100644 --- a/driver_garmin.c +++ b/driver_garmin.c @@ -369,7 +369,7 @@ gps_mask_t PrintSERPacket(struct gps_device_t *session, unsigned char pkt_id, time_l = (time_t) (631065600 + (GPSD_LE32TOH(pvt->grmn_days) * 86400)); // TODO, convert grmn_days to context->gps_week time_l -= GPSD_LE16TOH(pvt->leap_sec); - session->context->leap_seconds = GPSD_LE16TOH(pvt->leap_sec); + session->context->leap_seconds = (int)GPSD_LE16TOH(pvt->leap_sec); session->context->valid = LEAP_SECOND_VALID; // gps_tow is always like x.999 or x.998 so just round it time_l += (time_t) round(pvt->gps_tow); @@ -513,9 +513,9 @@ gps_mask_t PrintSERPacket(struct gps_device_t *session, unsigned char pkt_id, GPSD_LE32TOH(rmd->sv[i].cycles), rmd->sv[i].pr, (GPSD_LE16TOH(rmd->sv[i].phase) * 360.0) / 2048.0, - rmd->sv[i].slp_dtct != '\0' ? "Yes" : "No", + rmd->sv[i].slp_dtct != 0 ? "Yes" : "No", rmd->sv[i].snr_dbhz, - rmd->sv[i].valid != '\0' ? "Yes" : "No"); + rmd->sv[i].valid != 0 ? "Yes" : "No"); } break; diff --git a/driver_geostar.c b/driver_geostar.c index b75c7521..27e1272b 100644 --- a/driver_geostar.c +++ b/driver_geostar.c @@ -191,7 +191,7 @@ static gps_mask_t geostar_analyze(struct gps_device_t *session) session->newdata.longitude = getled(buf, OFFSET(5)) * RAD_2_DEG; session->newdata.altitude = getled(buf, OFFSET(7)); session->gpsdata.separation = getled(buf, OFFSET(9)); - session->gpsdata.satellites_used = getles32(buf, OFFSET(11)); + session->gpsdata.satellites_used = (int)getles32(buf, OFFSET(11)); session->gpsdata.dop.gdop = getled(buf, OFFSET(13)); session->gpsdata.dop.pdop = getled(buf, OFFSET(15)); session->gpsdata.dop.tdop = getled(buf, OFFSET(17)); @@ -262,9 +262,9 @@ static gps_mask_t geostar_analyze(struct gps_device_t *session) gpsd_report(LOG_INF, "ID %d Az %g El %g SNR %g\n", decode_channel_id(ul2), s1*0.001*RAD_2_DEG, s2*0.001*RAD_2_DEG, s3*0.1); session->gpsdata.PRN[i] = decode_channel_id(ul2); - session->gpsdata.azimuth[i] = (int)round(s1*0.001 * RAD_2_DEG); - session->gpsdata.elevation[i] = (int)round(s2*0.001 * RAD_2_DEG); - session->gpsdata.ss[i] = s3*0.1; + session->gpsdata.azimuth[i] = (int)round((double)s1*0.001 * RAD_2_DEG); + session->gpsdata.elevation[i] = (int)round((double)s2*0.001 * RAD_2_DEG); + session->gpsdata.ss[i] = (double)s3*0.1; if(ul2 & (1<<27)) { session->gpsdata.used[j++] = decode_channel_id(ul2); } diff --git a/driver_oncore.c b/driver_oncore.c index 0f40c6a9..33cb94cf 100644 --- a/driver_oncore.c +++ b/driver_oncore.c @@ -253,7 +253,7 @@ oncore_msg_pps_offset(struct gps_device_t *session, unsigned char *buf, return 0; gpsd_report(LOG_IO, "oncore PPS offset\n"); - pps_offset_ns = getbes32(buf, 4); + pps_offset_ns = (int)getbes32(buf, 4); session->driver.oncore.pps_offset_ns = pps_offset_ns; return 0; diff --git a/driver_sirf.c b/driver_sirf.c index 6127b3b5..0f5aaa6f 100644 --- a/driver_sirf.c +++ b/driver_sirf.c @@ -610,9 +610,12 @@ static gps_mask_t sirf_msg_navsol(struct gps_device_t *session, session->gpsdata.used[i] = (int)getub(buf, 29 + i); /* position/velocity is bytes 1-18 */ ecef_to_wgs84fix(&session->newdata, &session->gpsdata.separation, - getbes32(buf, 1) * 1.0, getbes32(buf, 5) * 1.0, - getbes32(buf, 9) * 1.0, getbes16(buf, 13) / 8.0, - getbes16(buf, 15) / 8.0, getbes16(buf, 17) / 8.0); + (double)getbes32(buf, 1) * 1.0, + (double)getbes32(buf, 5) * 1.0, + (double)getbes32(buf, 9) * 1.0, + (double)getbes16(buf, 13) / 8.0, + (double)getbes16(buf, 15) / 8.0, + (double)getbes16(buf, 17) / 8.0); /* fix status is byte 19 */ navtype = (unsigned short)getub(buf, 19); session->gpsdata.status = STATUS_NO_FIX; @@ -863,16 +866,16 @@ static gps_mask_t sirf_msg_ublox(struct gps_device_t *session, /* this packet is only sent by uBlox firmware from version 1.32 */ mask = LATLON_IS | ALTITUDE_IS | SPEED_IS | TRACK_IS | CLIMB_IS | STATUS_IS | MODE_IS | DOP_IS; - session->newdata.latitude = getbes32(buf, 1) * RAD_2_DEG * 1e-8; - session->newdata.longitude = getbes32(buf, 5) * RAD_2_DEG * 1e-8; + session->newdata.latitude = (double)getbes32(buf, 1) * RAD_2_DEG * 1e-8; + session->newdata.longitude = (double)getbes32(buf, 5) * RAD_2_DEG * 1e-8; session->gpsdata.separation = wgs84_separation(session->newdata.latitude, session->newdata.longitude); session->newdata.altitude = - getbes32(buf, 9) * 1e-3 - session->gpsdata.separation; - session->newdata.speed = getbes32(buf, 13) * 1e-3; - session->newdata.climb = getbes32(buf, 17) * 1e-3; - session->newdata.track = getbes32(buf, 21) * RAD_2_DEG * 1e-8; + (double)getbes32(buf, 9) * 1e-3 - session->gpsdata.separation; + session->newdata.speed = (double)getbes32(buf, 13) * 1e-3; + session->newdata.climb = (double)getbes32(buf, 17) * 1e-3; + session->newdata.track = (double)getbes32(buf, 21) * RAD_2_DEG * 1e-8; navtype = (unsigned short)getub(buf, 25); session->gpsdata.status = STATUS_NO_FIX; diff --git a/driver_tsip.c b/driver_tsip.c index 68582009..53d53bb5 100644 --- a/driver_tsip.c +++ b/driver_tsip.c @@ -616,15 +616,15 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) d5 = 0.02; else d5 = 0.005; - d1 = s1 * d5; /* east velocity m/s */ - d2 = s2 * d5; /* north velocity m/s */ - session->newdata.climb = s3 * d5; /* up velocity m/s */ + d1 = (double)s1 * d5; /* east velocity m/s */ + d2 = (double)s2 * d5; /* north velocity m/s */ + session->newdata.climb = (double)s3 * d5; /* up velocity m/s */ /*@ -evalorder @*/ session->newdata.speed = sqrt(pow(d2, 2) + pow(d1, 2)); /*@ +evalorder @*/ if ((session->newdata.track = atan2(d1, d2) * RAD_2_DEG) < 0) session->newdata.track += 360.0; - session->newdata.latitude = sl1 * SEMI_2_DEG; + session->newdata.latitude = (double)sl1 * SEMI_2_DEG; /*@i1@*/session->newdata.longitude = ul2 * SEMI_2_DEG; if (session->newdata.longitude > 180.0) session->newdata.longitude -= 360.0; @@ -632,7 +632,7 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) wgs84_separation(session->newdata.latitude, session->newdata.longitude); session->newdata.altitude = - sl2 * 1e-3 - session->gpsdata.separation;; + (double)sl2 * 1e-3 - session->gpsdata.separation;; session->gpsdata.status = STATUS_NO_FIX; session->newdata.mode = MODE_NO_FIX; if ((u2 & 0x01) == (uint8_t) 0) { /* Fix Available */ @@ -700,22 +700,22 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) else session->newdata.mode = MODE_3D; } - session->newdata.latitude = sl1 * SEMI_2_DEG; - /*@i1@*/session->newdata.longitude = ul2 * SEMI_2_DEG; + session->newdata.latitude = (double)sl1 * SEMI_2_DEG; + session->newdata.longitude = (double)ul2 * SEMI_2_DEG; if (session->newdata.longitude > 180.0) session->newdata.longitude -= 360.0; session->gpsdata.separation = wgs84_separation(session->newdata.latitude, session->newdata.longitude); session->newdata.altitude = - sl3 * 1e-3 - session->gpsdata.separation;; + (double)sl3 * 1e-3 - session->gpsdata.separation;; if ((u2 & 0x20) != (uint8_t) 0) /* check velocity scaling */ d5 = 0.02; else d5 = 0.005; - d1 = s2 * d5; /* east velocity m/s */ - d2 = s3 * d5; /* north velocity m/s */ - session->newdata.climb = s4 * d5; /* up velocity m/s */ + d1 = (double)s2 * d5; /* east velocity m/s */ + d2 = (double)s3 * d5; /* north velocity m/s */ + session->newdata.climb = (double)s4 * d5; /* up velocity m/s */ /*@ -evalorder @*/ session->newdata.speed = sqrt(pow(d2, 2) + pow(d1, 2)) * MPS_TO_KNOTS; @@ -743,14 +743,14 @@ static gps_mask_t tsip_analyze(struct gps_device_t *session) } session->driver.tsip.last_41 = now; /* keep timestamp for request */ ul1 = getbeu32(buf, 1); /* gpstime */ - s1 = (short)getbeu16(buf, 5); /* week */ + s1 = (int16_t)getbeu16(buf, 5); /* week */ s2 = getbes16(buf, 7); /* leap seconds */ if ((int)u1 > 10) { session->context->leap_seconds = (int)s2; session->context->valid |= LEAP_SECOND_VALID; session->newdata.time = - gpsd_gpstime_resolve(session, s1, (double)ul1); + gpsd_gpstime_resolve(session, (unsigned short)s1, (double)ul1); mask |= TIME_IS | CLEAR_IS; gpsd_report(LOG_DATA, "SP-TTS 0xab time=%.2f mask={TIME}\n", session->newdata.time); diff --git a/gpsd_json.c b/gpsd_json.c index 7a7ca8ad..797023e4 100644 --- a/gpsd_json.c +++ b/gpsd_json.c @@ -451,8 +451,8 @@ void json_subframe_dump(const struct subframe_t *subframe, bool scaled, (int)subframe->sub1.Tgd, (unsigned int)subframe->sub1.toc, (long)subframe->sub1.af2, - subframe->sub1.af1, - subframe->sub1.af0); + (int)subframe->sub1.af1, + (int)subframe->sub1.af0); } } else if ( 2 == subframe->subframe_num ) { if (scaled) { @@ -477,12 +477,12 @@ void json_subframe_dump(const struct subframe_t *subframe, bool scaled, "\"M0\":%ld,\"Cuc\":%d,\"e\":%ld,\"Cus\":%d," "\"sqrtA\":%lu,\"toe\":%lu,\"FIT\":%u,\"AODO\":%u}", (unsigned int)subframe->sub2.IODE, - subframe->sub2.Crs, - subframe->sub2.deltan, + (int)subframe->sub2.Crs, + (int)subframe->sub2.deltan, (long)subframe->sub2.M0, - subframe->sub2.Cuc, + (int)subframe->sub2.Cuc, (long)subframe->sub2.e, - subframe->sub2.Cus, + (int)subframe->sub2.Cus, (unsigned long)subframe->sub2.sqrtA, (unsigned long)subframe->sub2.toe, (unsigned int)subframe->sub2.fit, @@ -512,9 +512,9 @@ void json_subframe_dump(const struct subframe_t *subframe, bool scaled, (unsigned int)subframe->sub3.IDOT, (unsigned int)subframe->sub3.Cic, (long int)subframe->sub3.Omega0, - subframe->sub3.Cis, + (int)subframe->sub3.Cis, (long int)subframe->sub3.i0, - subframe->sub3.Crc, + (int)subframe->sub3.Crc, (long int)subframe->sub3.omega, (long int)subframe->sub3.Omegad ); } @@ -550,14 +550,14 @@ void json_subframe_dump(const struct subframe_t *subframe, bool scaled, (unsigned int)subframe->sub5.almanac.svh, (unsigned int)subframe->sub5.almanac.e, (unsigned int)subframe->sub5.almanac.toa, - subframe->sub5.almanac.deltai, - subframe->sub5.almanac.Omegad, + (int)subframe->sub5.almanac.deltai, + (int)subframe->sub5.almanac.Omegad, (unsigned long)subframe->sub5.almanac.sqrtA, (long)subframe->sub5.almanac.Omega0, (long)subframe->sub5.almanac.omega, (long)subframe->sub5.almanac.M0, - subframe->sub5.almanac.af0, - subframe->sub5.almanac.af1); + (int)subframe->sub5.almanac.af0, + (int)subframe->sub5.almanac.af1); } } else if ( 4 == subframe->subframe_num ) { (void)snprintf(buf + len, buflen - len, diff --git a/monitor_oncore.c b/monitor_oncore.c index e97dadb2..29d462ed 100644 --- a/monitor_oncore.c +++ b/monitor_oncore.c @@ -200,9 +200,9 @@ static void oncore_update(void) sec = (unsigned char)getub(buf, 10); nsec = (unsigned int)getbeu32(buf, 11); - lat = getbes32(buf, 15) / 3600000.0; - lon = getbes32(buf, 19) / 3600000.0; - alt = getbes32(buf, 23) / 100.0; + lat = (double)getbes32(buf, 15) / 3600000.0; + lon = (double)getbes32(buf, 19) / 3600000.0; + alt = (double)getbes32(buf, 23) / 100.0; speed = (float)(getbeu16(buf, 31) / 100.0); track = (float)(getbeu16(buf, 33) / 10.0); dop = (float)(getbeu16(buf, 35) / 10.0); @@ -391,7 +391,7 @@ static void oncore_update(void) { double pps_offset; - pps_offset = getbes32(buf, 4) / 1000000.0; + pps_offset = (double)getbes32(buf, 4) / 1000000.0; (void)mvwprintw(Aywin, 2, 2, " %7.3f ms", pps_offset); } @@ -415,9 +415,9 @@ static void oncore_update(void) { double lat, lon, alt; - lat = getbes32(buf, 4) / 3600000.0; - lon = getbes32(buf, 8) / 3600000.0; - alt = getbes32(buf, 12) / 100.0; + lat = (double)getbes32(buf, 4) / 3600000.0; + lon = (double)getbes32(buf, 8) / 3600000.0; + alt = (double)getbes32(buf, 12) / 100.0; (void)mvwprintw(Aswin, 1, 5, "%10.6lf %c", fabs(lat), lat < 0 ? 'S' : lat > 0 ? 'N' : ' '); diff --git a/monitor_sirf.c b/monitor_sirf.c index 4511ed6e..3a715beb 100644 --- a/monitor_sirf.c +++ b/monitor_sirf.c @@ -318,7 +318,7 @@ static void sirf_update(void) (double)getbes32(buf, 9), (double)getbes16(buf, 13) / 8, (double)getbes16(buf, 15) / 8, (double)getbes16(buf, 17) / 8); - decode_time((int)getbeu16(buf, 22), getbes32(buf, 24)); + decode_time((int)getbeu16(buf, 22), (int)getbes32(buf, 24)); /* line 4 */ (void)wmove(mid2win, 4, 49); (void)wprintw(mid2win, "%4.1f", (double)getub(buf, 20) / 5); /* HDOP */ @@ -340,7 +340,7 @@ static void sirf_update(void) break; case 0x04: /* Measured Tracking Data */ - decode_time((int)getbeu16(buf, 1), getbes32(buf, 3)); + decode_time((int)getbeu16(buf, 1), (int)getbes32(buf, 3)); ch = (int)getub(buf, 7); for (i = 0; i < ch; i++) { int sv, st; @@ -405,7 +405,7 @@ static void sirf_update(void) break; case 0x07: /* Response - Clock Status Data */ - decode_time((int)getbeu16(buf, 1), getbes32(buf, 3)); + decode_time((int)getbeu16(buf, 1), (int)getbes32(buf, 3)); display(mid7win, 1, 5, "%2d", getub(buf, 7)); /* SVs */ display(mid7win, 1, 16, "%lu", getbeu32(buf, 8)); /* Clock drift */ display(mid7win, 1, 29, "%lu", getbeu32(buf, 12)); /* Clock Bias */ diff --git a/monitor_superstar2.c b/monitor_superstar2.c index 58c1b1af..d014d836 100644 --- a/monitor_superstar2.c +++ b/monitor_superstar2.c @@ -51,7 +51,7 @@ static void display_superstar2_svinfo(unsigned char *buf, size_t data_len) /*@ -charint */ ss = (unsigned char)getub(buf, off + 4); - el = getsb(buf, off + 1); + el = (char)getsb(buf, off + 1); az = (unsigned short)(getub(buf, off + 2) + ((getub(buf, off + 3) & 0x1) << 1)); fl = (unsigned char)getub(buf, off) & 0xe0; diff --git a/monitor_ubx.c b/monitor_ubx.c index dc6adbc2..6acd897f 100644 --- a/monitor_ubx.c +++ b/monitor_ubx.c @@ -93,8 +93,8 @@ static void display_nav_svinfo(unsigned char *buf, size_t data_len) prn = (unsigned char)getub(buf, off + 1); fl = (unsigned short)getleu16(buf, off + 2); ss = (unsigned char)getub(buf, off + 4); - el = getsb(buf, off + 5); - az = getles16(buf, off + 6); + el = (char)getsb(buf, off + 5); + az = (short)getles16(buf, off + 6); (void)wmove(satwin, (int)(i + 2), 4); (void)wprintw(satwin, "%3d %3d %3d %2d %04x %c", prn, az, el, ss, fl, (fl & UBX_SAT_USED) ? 'Y' : ' '); @@ -213,15 +213,15 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t *session, subp->sub1.hlth = (unsigned int)((words[2] >> 2) & 0x00003F); /* SV health */ subp->sub1.IODC = (words[2] & 0x000003); /* IODC 2 MSB */ subp->sub1.l2p = ((words[3] >> 23) & 0x000001); /* L2 P flag */ - subp->sub1.Tgd = (char)( words[6] & 0x0000FF); + subp->sub1.Tgd = (int8_t)( words[6] & 0x0000FF); subp->sub1.d_Tgd = pow(2.0, -31) * (int)subp->sub1.Tgd; subp->sub1.toc = ( words[7] & 0x00FFFF); subp->sub1.l_toc = (long)subp->sub1.toc << 4; - subp->sub1.af2 = (char)((words[8] >> 16) & 0x0FF); + subp->sub1.af2 = (int8_t)((words[8] >> 16) & 0x0FF); subp->sub1.d_af2 = pow(2.0, -55) * (int)subp->sub1.af2; - subp->sub1.af1 = (short)( words[8] & 0x00FFFF); + subp->sub1.af1 = (int16_t)( words[8] & 0x00FFFF); subp->sub1.d_af1 = pow(2.0, -43) * subp->sub1.af1; - subp->sub1.af0 = (int)((words[9] >> 1) & 0x03FFFFF); + subp->sub1.af0 = (int32_t)((words[9] >> 1) & 0x03FFFFF); subp->sub1.af0 = uint2int(subp->sub1.af0, 22); subp->sub1.d_af0 = pow(2.0, -31) * subp->sub1.af0; subp->sub1.IODC <<= 8; @@ -245,22 +245,22 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t *session, case 2: /* subframe 2: ephemeris for transmitting SV */ subp->sub2.IODE = ((words[2] >> 16) & 0x00FF); - subp->sub2.Crs = (short)( words[2] & 0x00FFFF); + subp->sub2.Crs = (int16_t)( words[2] & 0x00FFFF); subp->sub2.d_Crs = pow(2.0,-5) * subp->sub2.Crs; - subp->sub2.deltan = (short)((words[3] >> 8) & 0x00FFFF); + subp->sub2.deltan = (int16_t)((words[3] >> 8) & 0x00FFFF); subp->sub2.d_deltan = pow(2.0,-43) * subp->sub2.deltan; - subp->sub2.M0 = (int)( words[3] & 0x0000FF); + subp->sub2.M0 = (int32_t)( words[3] & 0x0000FF); subp->sub2.M0 <<= 24; subp->sub2.M0 |= ( words[4] & 0x00FFFFFF); subp->sub2.M0 = uint2int(subp->sub2.M0, 24); subp->sub2.d_M0 = pow(2.0,-31) * subp->sub2.M0 * GPS_PI; - subp->sub2.Cuc = (short)((words[5] >> 8) & 0x00FFFF); + subp->sub2.Cuc = (int16_t)((words[5] >> 8) & 0x00FFFF); subp->sub2.d_Cuc = pow(2.0,-29) * subp->sub2.Cuc; subp->sub2.e = ( words[5] & 0x0000FF); subp->sub2.e <<= 24; subp->sub2.e |= ( words[6] & 0x00FFFFFF); subp->sub2.d_eccentricity = pow(2.0,-33) * subp->sub2.e; - subp->sub2.Cus = (short)((words[7] >> 8) & 0x00FFFF); + subp->sub2.Cus = (int16_t)((words[7] >> 8) & 0x00FFFF); subp->sub2.d_Cus = pow(2.0,-29) * subp->sub2.Cus; subp->sub2.sqrtA = ( words[7] & 0x0000FF); subp->sub2.sqrtA <<= 24; @@ -292,23 +292,23 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t *session, /* subframe 3: ephemeris for transmitting SV */ subp->sub3.Cic = ((words[2] >> 8) & 0x00FFFF); subp->sub3.d_Cic = pow(2.0, -29) * subp->sub3.Cic; - subp->sub3.Omega0 = (int)(words[2] & 0x0000FF); + subp->sub3.Omega0 = (int32_t)(words[2] & 0x0000FF); subp->sub3.Omega0 <<= 24; subp->sub3.Omega0 |= ( words[3] & 0x00FFFFFF); subp->sub3.d_Omega0 = pow(2.0, -31) * subp->sub3.Omega0; - subp->sub3.Cis = (short)((words[4] >> 8) & 0x00FFFF); + subp->sub3.Cis = (int16_t)((words[4] >> 8) & 0x00FFFF); subp->sub3.d_Cis = pow(2.0, -29) * subp->sub3.Cis; - subp->sub3.i0 = (int)(words[4] & 0x0000FF); + subp->sub3.i0 = (int32_t)(words[4] & 0x0000FF); subp->sub3.i0 <<= 24; subp->sub3.i0 |= ( words[5] & 0x00FFFFFF); subp->sub3.d_i0 = pow(2.0, -31) * subp->sub3.i0; - subp->sub3.Crc = (short)((words[6] >> 8) & 0x00FFFF); + subp->sub3.Crc = (int16_t)((words[6] >> 8) & 0x00FFFF); subp->sub3.d_Crc = pow(2.0, -5) * subp->sub3.Crc; - subp->sub3.omega = (int)(words[6] & 0x0000FF); + subp->sub3.omega = (int32_t)(words[6] & 0x0000FF); subp->sub3.omega <<= 24; subp->sub3.omega |= ( words[7] & 0x00FFFFFF); subp->sub3.d_omega = pow(2.0, -31) * subp->sub3.omega; - subp->sub3.Omegad = (int)(words[8] & 0x00FFFFFF); + subp->sub3.Omegad = (int32_t)(words[8] & 0x00FFFFFF); subp->sub3.Omegad = uint2int(subp->sub3.Omegad, 24); subp->sub3.d_Omegad = pow(2.0, -43) * subp->sub3.Omegad; subp->sub3.IODE = ((words[9] >> 16) & 0x0000FF); @@ -662,28 +662,28 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t *session, sv = -1; /* current leap seconds */ - subp->sub4_18.alpha0 = (char)((words[2] >> 16) & 0x0000FF); + subp->sub4_18.alpha0 = (int8_t)((words[2] >> 16) & 0x0000FF); subp->sub4_18.d_alpha0 = pow(2.0, -30) * (int)subp->sub4_18.alpha0; - subp->sub4_18.alpha1 = (char)((words[2] >> 8) & 0x0000FF); + subp->sub4_18.alpha1 = (int8_t)((words[2] >> 8) & 0x0000FF); subp->sub4_18.d_alpha1 = pow(2.0, -27) * (int)subp->sub4_18.alpha2; - subp->sub4_18.alpha2 = (char)((words[3] >> 16) & 0x0000FF); + subp->sub4_18.alpha2 = (int8_t)((words[3] >> 16) & 0x0000FF); subp->sub4_18.d_alpha2 = pow(2.0, -24) * (int)subp->sub4_18.alpha2; - subp->sub4_18.alpha3 = (char)((words[3] >> 8) & 0x0000FF); + subp->sub4_18.alpha3 = (int8_t)((words[3] >> 8) & 0x0000FF); subp->sub4_18.d_alpha3 = pow(2.0, -24) * (int)subp->sub4_18.alpha3; - subp->sub4_18.beta0 = (char)((words[3] >> 0) & 0x0000FF); + subp->sub4_18.beta0 = (int8_t)((words[3] >> 0) & 0x0000FF); subp->sub4_18.d_beta0 = pow(2.0, 11) * (int)subp->sub4_18.beta0; - subp->sub4_18.beta1 = (char)((words[4] >> 16) & 0x0000FF); + subp->sub4_18.beta1 = (int8_t)((words[4] >> 16) & 0x0000FF); subp->sub4_18.d_beta1 = pow(2.0, 14) * (int)subp->sub4_18.beta2; - subp->sub4_18.beta2 = (char)((words[4] >> 8) & 0x0000FF); + subp->sub4_18.beta2 = (int8_t)((words[4] >> 8) & 0x0000FF); subp->sub4_18.d_beta2 = pow(2.0, 16) * (int)subp->sub4_18.beta2; - subp->sub4_18.beta3 = (char)((words[4] >> 0) & 0x0000FF); + subp->sub4_18.beta3 = (int8_t)((words[4] >> 0) & 0x0000FF); subp->sub4_18.d_beta3 = pow(2.0, 16) * (int)subp->sub4_18.beta3; - subp->sub4_18.A1 = (int)((words[5] >> 0) & 0xFFFFFF); + subp->sub4_18.A1 = (int32_t)((words[5] >> 0) & 0xFFFFFF); subp->sub4_18.A1 = uint2int(subp->sub4_18.A1, 24); subp->sub4_18.d_A1 = pow(2.0,-50) * subp->sub4_18.A1; - subp->sub4_18.A0 = (int)((words[6] >> 0) & 0xFFFFFF); + subp->sub4_18.A0 = (int32_t)((words[6] >> 0) & 0xFFFFFF); subp->sub4_18.A0 <<= 8; subp->sub4_18.A0 |= ((words[7] >> 16) & 0x00FFFF); subp->sub4_18.d_A0 = pow(2.0,-30) * subp->sub4_18.A0; @@ -693,13 +693,13 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t *session, subp->sub4_18.tot = ((words[7] >> 8) & 0x0000FF); subp->sub4_18.d_tot = pow(2.0,12) * subp->sub4_18.d_tot; subp->sub4_18.WNt = ((words[7] >> 0) & 0x0000FF); - subp->sub4_18.leap = (char)((words[8] >> 16) & 0x0000FF); + subp->sub4_18.leap = (int8_t)((words[8] >> 16) & 0x0000FF); subp->sub4_18.WNlsf = ((words[8] >> 8) & 0x0000FF); /* DN (Day Number of LSF) */ subp->sub4_18.DN = (words[8] & 0x0000FF); /* leap second future */ - subp->sub4_18.lsf = (char)((words[9] >> 16) & 0x0000FF); + subp->sub4_18.lsf = (int8_t)((words[9] >> 16) & 0x0000FF); gpsd_report(LOG_INF, "50B: SF:4-18 leap-seconds:%d lsf:%d WNlsf:%u " "DN:%d\n", |