Merged r4518:5130 from developer branch n4hy/ofdm into trunk, passes distcheck.
[debian/gnuradio] / gnuradio-core / src / utils / gr_read_binary.py
1 #!/usr/bin/env python
2 #
3 # Copyright 2007 Free Software Foundation, Inc.
4
5 # This file is part of GNU Radio
6
7 # GNU Radio is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2, or (at your option)
10 # any later version.
11
12 # GNU Radio is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16
17 # You should have received a copy of the GNU General Public License
18 # along with GNU Radio; see the file COPYING.  If not, write to
19 # the Free Software Foundation, Inc., 51 Franklin Street,
20 # Boston, MA 02110-1301, USA.
21
22
23 import struct
24
25 def read_binary(filename, type):
26     n = struct.calcsize(type)
27     f = open(filename, 'rb')
28     out = list()
29     lin = f.read(n)
30     while(len(lin) == n):
31         cp = struct.unpack(type, lin)
32         out.append(cp)
33         lin = f.read(n)
34     return out
35
36 def read_char_binary(filename):
37     return read_binary(filename, 'c')
38
39 def read_float_binary(filename):
40     return read_binary(filename, 'f')
41
42 def read_int_binary(filename):
43     return read_binary(filename, 'i')
44
45 def read_short_binary(filename):
46     return read_binary(filename, 'h')
47
48 def read_complex_binary(filename):
49     n = struct.calcsize('ff')
50     f = open(filename, 'rb')
51     re = list()
52     im = list()
53     lin = f.read(n)
54     while(len(lin) == n):
55         cp = struct.unpack('ff', lin)
56         re.append(cp[0])
57         im.append(cp[1])
58         lin = f.read(n)
59     return (re, im)
60
61