[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/ftsp TimeSyncP.nc, 1.3, 1.4

kusy kusy at users.sourceforge.net
Wed Feb 4 12:04:00 PST 2009


Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/ftsp
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv1010

Modified Files:
	TimeSyncP.nc 
Log Message:
applied Thomas's patch to fix sum of squares quantization bug

Index: TimeSyncP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/ftsp/TimeSyncP.nc,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TimeSyncP.nc	22 Jul 2008 07:22:52 -0000	1.3
--- TimeSyncP.nc	4 Feb 2009 20:03:58 -0000	1.4
***************
*** 151,154 ****
--- 151,156 ----
          uint32_t newLocalAverage;
          int32_t newOffsetAverage;
+         int32_t localAverageRest;
+         int32_t offsetAverageRest;
  
          int64_t localSum;
***************
*** 170,183 ****
  
          localSum = 0;
          offsetSum = 0;
  
          while( ++i < MAX_ENTRIES )
              if( table[i].state == ENTRY_FULL ) {
                  localSum += (int32_t)(table[i].localTime - newLocalAverage) / tableEntries;
                  offsetSum += (int32_t)(table[i].timeOffset - newOffsetAverage) / tableEntries;
              }
  
!         newLocalAverage += localSum;
!         newOffsetAverage += offsetSum;
  
          localSum = offsetSum = 0;
--- 172,192 ----
  
          localSum = 0;
+         localAverageRest = 0;
          offsetSum = 0;
+         offsetAverageRest = 0;
  
          while( ++i < MAX_ENTRIES )
              if( table[i].state == ENTRY_FULL ) {
+                 /*
+                    This only works because C ISO 1999 defines the signe for modulo the same as for the Dividend!
+                 */ 
                  localSum += (int32_t)(table[i].localTime - newLocalAverage) / tableEntries;
+                 localAverageRest += (table[i].localTime - newLocalAverage) % tableEntries;
                  offsetSum += (int32_t)(table[i].timeOffset - newOffsetAverage) / tableEntries;
+                 offsetAverageRest += (table[i].timeOffset - newOffsetAverage) % tableEntries;
              }
  
!         newLocalAverage += localSum + localAverageRest / tableEntries;
!         newOffsetAverage += offsetSum + offsetAverageRest / tableEntries;
  
          localSum = offsetSum = 0;



More information about the Tinyos-2-commits mailing list