commit-gnuradio
[Top][All Lists]
Advanced

[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())));
     }
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]