77 * ORFEUS/EC-Project MEREDIAN
88 * IRIS Data Management Center
99 *
10- * modified: 2015.108
10+ * modified: 2015.213
1111 ***************************************************************************/
1212
1313#include <stdio.h>
257257msr_normalize_header ( MSRecord * msr , flag verbose )
258258{
259259 struct blkt_link_s * cur_blkt ;
260+ hptime_t hptimems ;
261+ int8_t usecoffset ;
260262 char seqnum [7 ];
261263 int offset = 0 ;
262264 int blktcnt = 0 ;
@@ -266,6 +268,9 @@ msr_normalize_header ( MSRecord *msr, flag verbose )
266268 if ( ! msr )
267269 return -1 ;
268270
271+ /* Get start time rounded to tenths of milliseconds and microsecond offset */
272+ ms_hptime2tomsusecoffset (msr -> starttime , & hptimems , & usecoffset );
273+
269274 /* Update values in fixed section of data header */
270275 if ( msr -> fsdh )
271276 {
@@ -285,7 +290,7 @@ msr_normalize_header ( MSRecord *msr, flag verbose )
285290 ms_strncpopen (msr -> fsdh -> station , msr -> station , 5 );
286291 ms_strncpopen (msr -> fsdh -> location , msr -> location , 2 );
287292 ms_strncpopen (msr -> fsdh -> channel , msr -> channel , 3 );
288- ms_hptime2btime (msr -> starttime , & (msr -> fsdh -> start_time ));
293+ ms_hptime2btime (hptimems , & (msr -> fsdh -> start_time ));
289294
290295 /* When the sampling rate is <= 32767 Hertz determine the factor
291296 * and multipler through rational approximation. For higher rates
@@ -311,7 +316,7 @@ msr_normalize_header ( MSRecord *msr, flag verbose )
311316 msr -> fsdh -> blockette_offset = 0 ;
312317 }
313318
314- /* Traverse blockette chain and performs necessary updates*/
319+ /* Traverse blockette chain and perform necessary updates*/
315320 cur_blkt = msr -> blkts ;
316321
317322 if ( cur_blkt && verbose > 2 )
@@ -352,14 +357,7 @@ msr_normalize_header ( MSRecord *msr, flag verbose )
352357
353358 else if ( cur_blkt -> blkt_type == 1001 )
354359 {
355- hptime_t sec , usec ;
356-
357- /* Insert microseconds offset */
358- sec = msr -> starttime / (HPTMODULUS / 10000 );
359- usec = msr -> starttime - (sec * (HPTMODULUS / 10000 ));
360- usec /= (HPTMODULUS / 1000000 );
361-
362- msr -> Blkt1001 -> usec = (int8_t ) usec ;
360+ msr -> Blkt1001 -> usec = usecoffset ;
363361 offset += sizeof (struct blkt_1001_s );
364362 }
365363
0 commit comments