gpsd-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gpsd-dev] [PATCH] subframe decoding fixes


From: Alexey Illarionov
Subject: Re: [gpsd-dev] [PATCH] subframe decoding fixes
Date: Wed, 09 May 2012 01:39:16 +0400
User-agent: Mozilla/5.0 (X11; FreeBSD i386; rv:5.0) Gecko/20110727 Thunderbird/5.0

Hi,

On 04.02.2012 00:00, Alexey Illarionov wrote:

The attached patch fixes decoding of several subframe fields:

Yet another typos.


diff --git a/subframe.c b/subframe.c
index 87eda3c..a670a27 100644
--- a/subframe.c
+++ b/subframe.c
@@ -668,10 +668,10 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t 
*session,

                sv = -1;
                /* current leap seconds */
-               subp->sub4_18.alpha0 = (int8_t)((words[2] >> 16) & 0x0000FF);
+               subp->sub4_18.alpha0 = (int8_t)((words[2] >> 8) & 0x0000FF);
                subp->sub4_18.d_alpha0 = pow(2.0, -30) * 
(int)subp->sub4_18.alpha0;
-               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.alpha1 = (int8_t)((words[2] >> 0) & 0x0000FF);
+               subp->sub4_18.d_alpha1 = pow(2.0, -27) * 
(int)subp->sub4_18.alpha1;
                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 = (int8_t)((words[3] >>  8) & 0x0000FF);
@@ -680,7 +680,7 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t 
*session,
                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  = (int8_t)((words[4] >> 16) & 0x0000FF);
-               subp->sub4_18.d_beta1 = pow(2.0, 14) * (int)subp->sub4_18.beta2;
+               subp->sub4_18.d_beta1 = pow(2.0, 14) * (int)subp->sub4_18.beta1;
                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  = (int8_t)((words[4] >>  0) & 0x0000FF);
@@ -691,13 +691,13 @@ gps_mask_t gpsd_interpret_subframe(struct gps_device_t 
*session,
                subp->sub4_18.d_A1   = pow(2.0,-50) * subp->sub4_18.A1;
                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.A0    |= ((words[7] >> 16) & 0x0000FF);
                subp->sub4_18.d_A0   = pow(2.0,-30) * subp->sub4_18.A0;

                /* careful WN is 10 bits, but WNt is 8 bits! */
                /* WNt (Week Number of LSF) */
                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.d_tot  = pow(2.0,12) * subp->sub4_18.tot;
                subp->sub4_18.WNt    = ((words[7] >> 0) & 0x0000FF);
                subp->sub4_18.leap  = (int8_t)((words[8] >> 16) & 0x0000FF);
                subp->sub4_18.WNlsf  = ((words[8] >>  8) & 0x0000FF);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]