Merge branch 'dfsg-orig'
[debian/gnuradio] / usrp / host / swig / util.py
1 # utilities
2
3 from usrp_prims import *
4
5 def setup (which_board = 0):
6     if not usrp_load_standard_bits (which_board, False):
7         raise RuntimeError, "usrp_load_standard_bits"
8     dev = usrp_find_device (which_board)
9     if not dev:
10         raise RuntimeError, "usrp_find_device"
11     u = usrp_open_cmd_interface (dev)
12     if not u:
13         raise RuntimeError, "usrp_open_cmd_interface"
14
15     # FIXME setup high speed paths, Aux ADC Clock, ...
16
17     # usrp_9862_write (u, 0, 35, 0x1)     # aux ADC clock = CLK/4
18     # usrp_9862_write (u, 1, 35, 0x1)
19
20     return u
21
22 def write_slot_oe (u, slot, value, mask):
23     assert 0 <= slot and slot < 4
24     return usrp_write_fpga_reg (u, slot + FR_OE_0,
25                                 ((mask & 0xffff) << 16) | (value & 0xffff))
26
27 def write_slot_io (u, slot, value, mask):
28     assert 0 <= slot and slot < 4
29     return usrp_write_fpga_reg (u, slot + FR_IO_0,
30                                 ((mask & 0xffff) << 16) | (value & 0xffff))
31
32
33 # ----------------------------------------------------------------
34
35
36 def ramp_aux_dac (u, which_codec, which_dac):
37     if not (which_codec == 0 or which_codec == 1):
38         raise AssertionError
39     if not (which_dac >= 0 and which_dac < 4):
40         raise AssertionError
41     try:
42         if which_dac == 3:                  # sigma delta output
43             sigma_delta_loop (u, which_codec)
44         else:
45             aux_dac_loop (u, which_codec, which_dac)
46     except KeyboardInterrupt:
47         return
48
49 def sigma_delta_loop (u, which_codec):
50     counter = 0
51     while True:
52         usrp_9862_write (u, which_codec, 43, counter >> 4)
53         usrp_9862_write (u, which_codec, 42, (counter & 0xf) << 4)
54         # counter += 1 FIXME
55         counter += 4
56         if counter > 0xfff:
57             counter = 0
58
59 def aux_dac_loop (u, which_codec, which_dac):
60     reg = 36 + which_dac                # Aux DAC A,B,C
61     counter = 0
62     while True:
63         usrp_9862_write (u, which_codec, reg, counter)
64         counter += 1
65         if counter > 0xff:
66             counter = 0
67
68
69 def read_aux_adc_loop (u, slot, which_adc):
70     while True:
71         v = usrp_read_aux_adc (u, slot, which_adc)
72         print "%3d  %5.3f" % (v, v * 3.3 / 1024)
73
74 def ramp_io_port (u, slot):
75     counter = 0
76     try:
77         while True:
78             write_slot_io (u, slot, counter, 0xffff)
79             counter += 1
80             if counter > 0xffff:
81                 counter = 0
82     except KeyboardInterrupt:
83         return
84
85 def walk_io_port (u, slot):
86     bit = 1
87     try:
88         while True:
89             write_slot_io (u, slot, bit, 0xffff)
90             bit = (bit << 1) & 0xffff
91             if bit == 0:
92                 bit = 1
93     except KeyboardInterrupt:
94         return
95