Imported Upstream version 3.2.2
[debian/gnuradio] / usrp2 / firmware / apps / ibs_rx_test.c
1 #include "u2_init.h"
2 #include "memory_map.h"
3 #include "spi.h"
4 #include "hal_io.h"
5 #include "buffer_pool.h"
6 #include "nonstdio.h"
7
8 #define PORT 2    // ethernet = 2, serdes = 0
9 int dsp_rx_buf, dsp_tx_buf, serdes_rx_buf, serdes_tx_buf;
10 int dsp_rx_idle, dsp_tx_idle, serdes_rx_idle, serdes_tx_idle;
11
12 int buffer_state[4];
13
14 static void __attribute__((unused))
15 wait_until_status_nonzero(void) 
16 {
17   while (buffer_pool_status->status == 0)
18     ;
19 }
20
21 int
22 main(void)
23 {
24   int i;
25   
26   u2_init();
27
28   output_regs->adc_ctrl = 0x0A;
29
30   dsp_rx_regs->freq = 0;
31   dsp_rx_regs->scale_iq = (1 << 16) | 1;
32   dsp_rx_regs->decim_rate = 8;
33
34   volatile unsigned int *buffer0 = buffer_ram(0);
35   volatile unsigned int *buffer1 = buffer_ram(1);
36   volatile unsigned int *buffer2 = buffer_ram(2);
37   
38   putstr("Starting RX\n");
39   bp_clear_buf(0);
40   bp_receive_to_buf(0, 1, 1, 0, 99);
41
42   dsp_rx_regs->rx_command = (50 << 9) | 100;   // Numlines, lines per frame
43   dsp_rx_regs->rx_time = 0x2000;
44
45   dsp_rx_regs->rx_command = (137 << 9) | 50;   // Numlines, lines per frame
46   dsp_rx_regs->rx_time = 0x2200;
47
48   while (buffer_pool_status->status == 0)
49     ;
50   bp_clear_buf(0);
51   bp_clear_buf(1);
52   bp_receive_to_buf(1, 1, 1, 0, 99);
53   while (buffer_pool_status->status == 0)
54     ;
55   bp_clear_buf(2);
56   bp_receive_to_buf(2, 1, 1, 0, 99);
57   while (buffer_pool_status->status == 0)
58     ;
59   
60   for(i=0;i<100;i++) {
61     puthex(i);
62     putstr("   ");
63     puthex_nl(buffer0[i]);
64   }
65   for(i=0;i<60;i++) {
66     puthex(i);
67     putstr("   ");
68     puthex_nl(buffer1[i]);
69   }
70   for(i=0;i<60;i++) {
71     puthex(i);
72     putstr("   ");
73     puthex_nl(buffer2[i]);
74   }
75   //while(timer_regs -> time < 0x6000)
76   //  {}
77
78   putstr("Done\n");
79   hal_finish();
80   
81   return 1;
82 }