1 #====================================================================== |
1 #====================================================================== |
2 # R D I _ B B _ R E A D . P L |
2 # R D I _ B B _ R E A D . P L |
3 # doc: Sat Jan 18 14:54:43 2003 |
3 # doc: Sat Jan 18 14:54:43 2003 |
4 # dlm: Mon Mar 25 21:38:37 2013 |
4 # dlm: Mon Apr 29 12:49:40 2013 |
5 # (c) 2003 A.M. Thurnherr |
5 # (c) 2003 A.M. Thurnherr |
6 # uE-Info: 632 0 NIL 0 0 72 74 2 4 NIL ofnI |
6 # uE-Info: 53 46 NIL 0 0 72 74 2 4 NIL ofnI |
7 #====================================================================== |
7 #====================================================================== |
8 |
8 |
9 # Read RDI BroadBand Binary Data Files (*.[0-9][0-9][0-9]) |
9 # Read RDI BroadBand Binary Data Files (*.[0-9][0-9][0-9]) |
10 |
10 |
11 # HISTORY: |
11 # HISTORY: |
47 # - modified to allow processing files without time info |
47 # - modified to allow processing files without time info |
48 # May 12, 2011: - added code to report built-in-test errors |
48 # May 12, 2011: - added code to report built-in-test errors |
49 # Mar 19, 2013: - added support for WH600 data file (58 fixed leader bytes) |
49 # Mar 19, 2013: - added support for WH600 data file (58 fixed leader bytes) |
50 # Mar 20, 2013: - removed DATA_FORMAT stuff |
50 # Mar 20, 2013: - removed DATA_FORMAT stuff |
51 # - added support for BT data in subset of ensembles |
51 # - added support for BT data in subset of ensembles |
|
52 # Apr 29, 2013: - changed semantics to assume EOF when unexpected number of data types |
|
53 # are present in an ensemble |
52 |
54 |
53 # FIRMWARE VERSIONS: |
55 # FIRMWARE VERSIONS: |
54 # It appears that different firmware versions generate different file |
56 # It appears that different firmware versions generate different file |
55 # structures. Currently (Sep 2005) these routines have been tested |
57 # structures. Currently (Sep 2005) these routines have been tested |
56 # with the following firmware versions (as reported by [listHdr]): |
58 # with the following firmware versions (as reported by [listHdr]): |
530 seek(WBRF,$start_ens,0) || die("$WBRcfn: $!"); |
532 seek(WBRF,$start_ens,0) || die("$WBRcfn: $!"); |
531 read(WBRF,$buf,6) == 6 || last; |
533 read(WBRF,$buf,6) == 6 || last; |
532 ($hid,$did,$ens_length,$dummy,$ndt) = unpack('CCvCC',$buf); |
534 ($hid,$did,$ens_length,$dummy,$ndt) = unpack('CCvCC',$buf); |
533 $hid == 0x7f || die(sprintf($FmtErr,$WBRcfn,"Header",$hid,0)); |
535 $hid == 0x7f || die(sprintf($FmtErr,$WBRcfn,"Header",$hid,0)); |
534 $did == 0x7f || die(sprintf($FmtErr,$WBRcfn,"Data Source",$did,0)); |
536 $did == 0x7f || die(sprintf($FmtErr,$WBRcfn,"Data Source",$did,0)); |
535 printf(STDERR "\n$WBRcfn: WARNING: unexpected number of data types (%d)\n",$ndt) |
537 printf(STDERR "\n$WBRcfn: WARNING: unexpected number of data types (%d, ens=$ens)\n",$ndt),last |
536 unless ($ndt == 6 || $ndt == 7); |
538 unless ($ndt == 6 || $ndt == 7); |
537 $BT_present = ($ndt == 7); |
539 $BT_present = ($ndt == 7); |
538 read(WBRF,$buf,2*$ndt) == 2*$ndt || die("$WBRcfn: $!"); |
540 read(WBRF,$buf,2*$ndt) == 2*$ndt || die("$WBRcfn: $!"); |
539 @WBRofs = unpack("v$ndt",$buf); |
541 @WBRofs = unpack("v$ndt",$buf); |
540 $fixed_leader_bytes = $WBRofs[1] - $WBRofs[0]; |
542 $fixed_leader_bytes = $WBRofs[1] - $WBRofs[0]; |