3 double_buffering(int port) {
4 unsigned int localstatus = buffer_pool_status->status;
6 if(localstatus & BPS_DONE_0) {
8 if(buffer_state[0] == FILLING) {
9 buffer_state[0] = FULL;
10 if(buffer_state[1] == EMPTY) {
11 bp_receive_to_buf(1, 1, 1, 10, 509); // DSP_RX to buffer 1, use 500 lines
12 buffer_state[1] = FILLING;
18 bp_send_from_buf(0, port, 1, 10, 509); // SERDES_TX from buffer 0
19 buffer_state[0] = EMPTYING;
22 else { // buffer was emptying
23 buffer_state[0] = EMPTY;
26 bp_receive_to_buf(0, 1, 1, 10, 509); // DSP_RX to buffer 0, use 500 lines
27 buffer_state[0] = FILLING;
29 if(buffer_state[1] == FULL) {
30 bp_send_from_buf(1, port, 1, 10, 509); // SERDES_TX from buffer 1
31 buffer_state[1] = EMPTYING;
36 putstr("Int Proc'ed 0\n");
39 if(localstatus & BPS_DONE_1) {
41 if(buffer_state[1] == FILLING) {
42 buffer_state[1] = FULL;
43 if(buffer_state[0] == EMPTY) {
44 bp_receive_to_buf(0, 1, 1, 10, 509); // DSP_RX to buffer 1, use 500 lines
45 buffer_state[0] = FILLING;
51 bp_send_from_buf(1, port, 1, 10, 509); // SERDES_TX from buffer 1
52 buffer_state[1] = EMPTYING;
55 else { // buffer was emptying
56 buffer_state[1] = EMPTY;
59 bp_receive_to_buf(1, 1, 1, 10, 509); // DSP_RX to buffer 1, use 500 lines
60 buffer_state[1] = FILLING;
62 if(buffer_state[0] == FULL) {
63 bp_send_from_buf(0, port, 1, 10, 509); // SERDES_TX from buffer 0
64 buffer_state[0] = EMPTYING;
69 putstr("Int Proc'ed 1\n");
72 if(localstatus & BPS_DONE_2) {
74 if(buffer_state[2] == FILLING) {
75 buffer_state[2] = FULL;
76 if(buffer_state[3] == EMPTY) {
77 bp_receive_to_buf(3, port, 1, 5, 504); // SERDES_RX to buffer 3, use 500 lines
78 buffer_state[3] = FILLING;
84 bp_send_from_buf(2, 1, 1, 5, 504); // DSP_TX from buffer 2
85 buffer_state[2] = EMPTYING;
88 else { // buffer was emptying
89 buffer_state[2] = EMPTY;
92 bp_receive_to_buf(2, port, 1, 5, 504); // SERDES_RX to buffer 2
93 buffer_state[2] = FILLING;
95 if(buffer_state[3] == FULL) {
96 bp_send_from_buf(3, 1, 1, 5, 504); // DSP_TX from buffer 3
97 buffer_state[3] = EMPTYING;
102 putstr("Int Proc'ed 2\n");
105 if(localstatus & BPS_DONE_3) {
107 if(buffer_state[3] == FILLING) {
108 buffer_state[3] = FULL;
109 if(buffer_state[2] == EMPTY) {
110 bp_receive_to_buf(2, port, 1, 5, 504); // SERDES_RX to buffer 2, use 500 lines
111 buffer_state[2] = FILLING;
117 bp_send_from_buf(3, 1, 1, 5, 504); // DSP_TX from buffer 3
118 buffer_state[3] = EMPTYING;
121 else { // buffer was emptying
122 buffer_state[3] = EMPTY;
125 bp_receive_to_buf(3, port, 1, 5, 504); // SERDES_RX to buffer 3
126 buffer_state[3] = FILLING;
128 if(buffer_state[2] == FULL) {
129 bp_send_from_buf(2, 1, 1, 5, 504); // DSP_TX from buffer 2
130 buffer_state[2] = EMPTYING;
135 putstr("Int Proc'ed 3\n");