[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r6121 - gnuradio/branches/developers/gnychis/inband/us
From: |
gnychis |
Subject: |
[Commit-gnuradio] r6121 - gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband |
Date: |
Mon, 6 Aug 2007 10:10:36 -0600 (MDT) |
Author: gnychis
Date: 2007-08-06 10:10:36 -0600 (Mon, 06 Aug 2007)
New Revision: 6121
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_server.cc
Log:
Fixed inbound RID issue, tested with the stubs and 3 bit splitting is done
correctly between the user RID and generated USRP server marking.
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-08-06 15:29:32 UTC (rev 6120)
+++
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/qa_inband_usrp_server.cc
2007-08-06 16:10:36 UTC (rev 6121)
@@ -1162,7 +1162,7 @@
pmt_list2(pmt_list2(s_response_from_control_channel, PMT_T),
pmt_list1(
pmt_list2(s_op_ping_fixed,
- pmt_list2(PMT_NIL,
+ pmt_list2(pmt_from_long(3),
pmt_from_long(0))))));
d_tx->send(s_cmd_to_control_channel,
@@ -1186,7 +1186,7 @@
pmt_list2(pmt_list2(s_response_from_control_channel, PMT_T),
pmt_list1(
pmt_list2(s_op_read_reg,
- pmt_list2(PMT_NIL,
+ pmt_list2(pmt_from_long(0),
pmt_from_long(0x6))))));
d_tx->send(s_cmd_to_control_channel,
@@ -1196,14 +1196,14 @@
pmt_list1(pmt_from_long(0x7))))));
pmt_t subpackets = pmt_list5(
- pmt_list2(s_op_ping_fixed, pmt_list2(PMT_NIL,
pmt_from_long(0))),
+ pmt_list2(s_op_ping_fixed, pmt_list2(pmt_from_long(0),
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_list2(s_op_read_reg, pmt_list2(PMT_NIL,
+ pmt_list2(s_op_read_reg, pmt_list2(pmt_from_long(0),
pmt_from_long(6)))
);
@@ -1217,7 +1217,7 @@
pmt_list2(s_op_i2c_write,
pmt_list2(pmt_from_long(8), i2c_data)),
pmt_list2(s_op_i2c_read,
- pmt_list3(PMT_NIL, pmt_from_long(9),
pmt_from_long(1)))
+ pmt_list3(pmt_from_long(0),
pmt_from_long(9), pmt_from_long(1)))
);
Modified:
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_server.cc
===================================================================
---
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_server.cc
2007-08-06 15:29:32 UTC (rev 6120)
+++
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_server.cc
2007-08-06 16:10:36 UTC (rev 6121)
@@ -1151,21 +1151,25 @@
//----------------- PING RESPONSE ------------------//
if(pmt_eq(op_symbol, s_op_ping_fixed_reply)) {
- pmt_t rid = pmt_nth(1, sub_packet);
+ long rid = pmt_to_long(pmt_nth(1, sub_packet));
pmt_t pingval = pmt_nth(2, sub_packet);
+
+ long urid = (rid >> 3) & 0x7;
+ long srid = rid & 0x7;
if(verbose)
std::cout << "[USRP_SERVER] Found ping response "
<< "("
- << "RID: " << rid << ", "
+ << "URID: " << urid << ", "
+ << "SRID: " << srid << ", "
<< "VAL: " << pingval
<< ")\n";
// Do some bounds checking incase of bogus/corrupt responses
- if(pmt_to_long(rid) > D_OP_PING_FIXED_MAX_RID)
+ if(srid > D_OP_PING_FIXED_MAX_RID)
return;
- pmt_t owner = d_op_ping_fixed_owners[pmt_to_long(rid)];
+ pmt_t owner = d_op_ping_fixed_owners[srid];
// FIXME: should be 1 response for all subpackets here ?
if((port = tx_port_index(owner)) != -1)
@@ -1173,30 +1177,35 @@
pmt_list4(invocation_handle,
PMT_T,
pmt_list2(s_op_ping_fixed_reply, // subp
- pmt_list2(rid, pingval)),
+ pmt_list2(pmt_from_long(urid),
+ pingval)),
pmt_from_long(pkt->timestamp())));
}
//----------------- READ REG RESPONSE ------------------//
else if(pmt_eq(op_symbol, s_op_read_reg_reply)) {
- pmt_t rid = pmt_nth(1, sub_packet);
+ long rid = pmt_to_long(pmt_nth(1, sub_packet));
pmt_t reg_num = pmt_nth(2, sub_packet);
pmt_t reg_val = pmt_nth(3, sub_packet);
+
+ long urid = (rid >> 3) & 0x7;
+ long srid = rid & 0x7;
if(verbose)
std::cout << "[USRP_SERVER] Found read register response "
<< "("
- << "RID: " << rid << ", "
+ << "URID: " << urid << ", "
+ << "SRID: " << srid << ", "
<< "REG: " << reg_num << ", "
<< "VAL: " << reg_val
<< ")\n";
// Do some bounds checking to avoid seg faults
- if(pmt_to_long(rid) > D_OP_READ_REG_MAX_RID)
+ if(srid > D_OP_READ_REG_MAX_RID)
return;
- pmt_t owner = d_op_read_reg_owners[pmt_to_long(rid)];
+ pmt_t owner = d_op_read_reg_owners[srid];
// FIXME: should be 1 response for all subpackets here ?
if((port = tx_port_index(owner)) != -1)
@@ -1204,65 +1213,78 @@
pmt_list4(invocation_handle,
PMT_T,
pmt_list2(s_op_read_reg_reply, // subp
- pmt_list3(rid, reg_num, reg_val)),
+ pmt_list3(pmt_from_long(urid),
+ reg_num,
+ reg_val)),
pmt_from_long(pkt->timestamp())));
}
//------------------ I2C READ REPLY -------------------//
else if(pmt_eq(op_symbol, s_op_i2c_read_reply)) {
- pmt_t rid = pmt_nth(1, sub_packet);
+ long rid = pmt_to_long(pmt_nth(1, sub_packet));
pmt_t i2c_addr = pmt_nth(2, sub_packet);
pmt_t i2c_data = pmt_nth(3, sub_packet);
+ long urid = (rid >> 3) & 0x7;
+ long srid = rid & 0x7;
+
if(verbose)
std::cout << "[USRP_SERVER] Found i2c read reply "
<< "("
- << "RID: " << rid << ", "
+ << "URID: " << urid << ", "
+ << "SRID: " << srid << ", "
<< "Addr: " << i2c_addr << ", "
<< "Data: " << i2c_data
<< ")\n";
-
+
// Do some bounds checking to avoid seg faults
- if(pmt_to_long(rid) > D_OP_I2C_READ_MAX_RID)
+ if(srid > D_OP_I2C_READ_MAX_RID)
return;
- pmt_t owner = d_op_i2c_read_owners[pmt_to_long(rid)];
+ pmt_t owner = d_op_i2c_read_owners[srid];
if((port = tx_port_index(owner)) != -1)
d_tx[port]->send(s_response_from_control_channel,
pmt_list4(invocation_handle,
PMT_T,
pmt_list2(s_op_i2c_read_reply,
- pmt_list3(rid, i2c_addr,
i2c_data)),
+ pmt_list3(pmt_from_long(urid),
+ i2c_addr,
+ i2c_data)),
pmt_from_long(pkt->timestamp())));
}
//------------------ SPI READ REPLY -------------------//
else if(pmt_eq(op_symbol, s_op_spi_read_reply)) {
- pmt_t rid = pmt_nth(1, sub_packet);
+ long rid = pmt_to_long(pmt_nth(1, sub_packet));
pmt_t spi_data = pmt_nth(2, sub_packet);
+
+ long urid = (rid >> 3) & 0x7;
+ long srid = rid & 0x7;
if(verbose)
std::cout << "[USRP_SERVER] Found SPI read reply "
<< "("
- << "RID: " << rid << ", "
+ << "URID: " << urid << ", "
+ << "SRID: " << srid << ", "
<< "Data: " << spi_data
<< ")\n";
// Bounds check the RID
- if(pmt_to_long(rid) > D_OP_SPI_READ_MAX_RID)
+ if(srid > D_OP_SPI_READ_MAX_RID)
return;
- pmt_t owner = d_op_spi_read_owners[pmt_to_long(rid)];
+ pmt_t owner = d_op_spi_read_owners[srid];
if((port = tx_port_index(owner)) != -1)
d_tx[port]->send(s_response_from_control_channel,
pmt_list4(invocation_handle,
PMT_T,
pmt_list2(s_op_spi_read_reply,
- pmt_list2(rid, spi_data)),
+ pmt_list2(pmt_from_long(urid),
+ spi_data)),
pmt_from_long(pkt->timestamp())));
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r6121 - gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband,
gnychis <=