[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r5899 - gnuradio/branches/developers/gnychis/inband/us
From: |
gnychis |
Subject: |
[Commit-gnuradio] r5899 - gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband |
Date: |
Tue, 3 Jul 2007 13:12:07 -0600 (MDT) |
Author: gnychis
Date: 2007-07-03 13:12:07 -0600 (Tue, 03 Jul 2007)
New Revision: 5899
Modified:
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/qa_inband_usrp_server.cc
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_tx_stub.cc
Log:
added functionality to pass back multiple CS packet responses in a single USB
packet from the TX stub to the RX stub. Have not tested boundaries yet.
Modified:
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/qa_inband_usrp_server.cc
===================================================================
---
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/qa_inband_usrp_server.cc
2007-07-03 18:38:10 UTC (rev 5898)
+++
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/qa_inband_usrp_server.cc
2007-07-03 19:12:07 UTC (rev 5899)
@@ -1105,7 +1105,7 @@
: mb_mblock(runtime, instance_name, user_arg)
{
d_nrecvd=0;
- d_nmsgs_to_recv = 5;
+ d_nmsgs_to_recv = 7;
d_nstatus=0;
d_nstatus_to_recv = 50;
@@ -1195,14 +1195,16 @@
pmt_list2(s_op_delay,
pmt_list1(pmt_from_long(0x7))))));
- pmt_t subpackets = pmt_list4(
+ pmt_t subpackets = pmt_list5(
pmt_list2(s_op_ping_fixed, pmt_list2(PMT_NIL,
pmt_from_long(0))),
pmt_list2(s_op_delay, pmt_list1(pmt_from_long(0x7))),
pmt_list2(s_op_write_reg_masked,
pmt_list3(pmt_from_long(3),
pmt_from_long(4),
pmt_from_long(5))),
pmt_list2(s_op_write_reg, pmt_list2(pmt_from_long(3),
- pmt_from_long(4)))
+ pmt_from_long(4))),
+ pmt_list2(s_op_read_reg, pmt_list2(PMT_NIL,
+ pmt_from_long(6)))
);
d_tx->send(s_cmd_to_control_channel,
Modified:
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_tx_stub.cc
===================================================================
---
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_tx_stub.cc
2007-07-03 18:38:10 UTC (rev 5898)
+++
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_tx_stub.cc
2007-07-03 19:12:07 UTC (rev 5899)
@@ -128,7 +128,21 @@
long payload_len = pkt.payload_len();
long curr_payload = 0;
+
+ size_t ignore;
+ // There is the possibility that the responses for a single USB packet full
of
+ // CS packets will not fit back in a single USB packet, considering some
+ // responses are greater than their commands (read registers).
+ new_packet:
+ pmt_t v_pkt = pmt_make_u8vector(sizeof(transport_pkt), 0);
+
+ transport_pkt *q_pkt =
+ (transport_pkt *) pmt_u8vector_writeable_elements(v_pkt, ignore);
+
+ q_pkt->set_header(0, 0x1f, 0, 0);
+ q_pkt->set_timestamp(0xffffffff);
+
// We dispatch based on the control packet type, however we can extract the
// opcode and the length immediately which is consistent in all responses.
//
@@ -148,22 +162,12 @@
//----------------- PING FIXED ------------------//
if(pmt_eq(op_symbol, s_op_ping_fixed)) {
- size_t ignore;
-
long rid = pmt_to_long(pmt_nth(1, sub_packet));
long pingval = pmt_to_long(pmt_nth(2, sub_packet));
- pmt_t v_pkt = pmt_make_u8vector(sizeof(transport_pkt), 0);
-
- transport_pkt *q_pkt =
- (transport_pkt *) pmt_u8vector_writeable_elements(v_pkt, ignore);
-
- q_pkt->set_header(0, 0x1f, 0, 0);
- q_pkt->set_timestamp(0xffffffff);
-
// Generate a reply and put it in the queue for the RX stub to read
- q_pkt->cs_ping_reply(rid, pingval);
- d_cs_queue.push(pmt_list2(invocation_handle, v_pkt));
+ if(!q_pkt->cs_ping_reply(rid, pingval))
+ goto new_packet;
if(verbose)
std::cout << "[USRP_TX_STUB] Generated ping response "
@@ -182,17 +186,9 @@
long reg_num = pmt_to_long(pmt_nth(2, sub_packet));
long reg_val = 0xdeef;
- pmt_t v_pkt = pmt_make_u8vector(sizeof(transport_pkt), 0);
-
- transport_pkt *q_pkt =
- (transport_pkt *) pmt_u8vector_writeable_elements(v_pkt, ignore);
-
- q_pkt->set_header(0, 0x1f, 0, 0);
- q_pkt->set_timestamp(0xffffffff);
-
// Generate a reply and put it in the queue for the RX stub to read
- q_pkt->cs_read_reg_reply(rid, reg_num, reg_val);
- d_cs_queue.push(pmt_list2(invocation_handle, v_pkt));
+ if(!q_pkt->cs_read_reg_reply(rid, reg_num, reg_val))
+ goto new_packet;
if(verbose)
std::cout << "[USRP_TX_STUB] Generated read register response "
@@ -250,6 +246,10 @@
curr_payload += len + 2;
}
+ // If the packet has data in the payload, it needs queued
+ if(q_pkt->payload_len() > 0)
+ d_cs_queue.push(pmt_list2(invocation_handle, v_pkt));
+
return;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r5899 - gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband,
gnychis <=