commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r5924 - in gnuradio/branches/developers/gnychis/inband


From: gnychis
Subject: [Commit-gnuradio] r5924 - in gnuradio/branches/developers/gnychis/inband/usrp/host: apps lib/inband
Date: Fri, 6 Jul 2007 11:10:08 -0600 (MDT)

Author: gnychis
Date: 2007-07-06 11:10:07 -0600 (Fri, 06 Jul 2007)
New Revision: 5924

Modified:
   
gnuradio/branches/developers/gnychis/inband/usrp/host/apps/test_usrp_inband_rx.cc
   
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/qa_inband_usrp_server.cc
   
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_inband_usb_packet.h
   
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_tx_stub.cc
Log:
Changing the two first OP commands back to their proper opcodes after testing.

MAJOR bug fix in all packets that caused improper offsets in the C/S packets.
Was incrementing the payload logically in bytes, when in fact it was being
incremented by words (4 bytes) since I had casted to u32 before the pointer
arithetic.

I2C write now tested and confirmed working.


Modified: 
gnuradio/branches/developers/gnychis/inband/usrp/host/apps/test_usrp_inband_rx.cc
===================================================================
--- 
gnuradio/branches/developers/gnychis/inband/usrp/host/apps/test_usrp_inband_rx.cc
   2007-07-06 04:18:32 UTC (rev 5923)
+++ 
gnuradio/branches/developers/gnychis/inband/usrp/host/apps/test_usrp_inband_rx.cc
   2007-07-06 17:10:07 UTC (rev 5924)
@@ -130,7 +130,7 @@
   // Specify the RBF to use
   pmt_dict_set(usrp_dict,
                pmt_intern("rbf"),
-               pmt_intern("usrp_inband_usb.rbf"));
+               pmt_intern("leo3.rbf"));
 
   // Set TX and RX interpolations
   pmt_dict_set(usrp_dict,

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-06 04:18:32 UTC (rev 5923)
+++ 
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/qa_inband_usrp_server.cc
   2007-07-06 17:10:07 UTC (rev 5924)
@@ -1210,6 +1210,19 @@
   d_tx->send(s_cmd_to_control_channel, 
               pmt_list2(pmt_list2(s_response_from_control_channel, PMT_T),
                         subpackets));
+
+  pmt_t i2c_data = pmt_make_u8vector(8, 0xff);
+
+  subpackets = pmt_list2(
+                        pmt_list2(s_op_delay, pmt_list1(pmt_from_long(0x7))),
+                        pmt_list2(s_op_i2c_write, 
+                                  pmt_list2(pmt_from_long(8), i2c_data))
+                     );
+
+  d_tx->send(s_cmd_to_control_channel, 
+              pmt_list2(pmt_list2(s_response_from_control_channel, PMT_T),
+                        subpackets));
+  
 }
 
 void

Modified: 
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_inband_usb_packet.h
===================================================================
--- 
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_inband_usb_packet.h
   2007-07-06 04:18:32 UTC (rev 5923)
+++ 
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_inband_usb_packet.h
   2007-07-06 17:10:07 UTC (rev 5924)
@@ -43,8 +43,8 @@
 public:
 
   enum opcodes {
-    OP_PING_FIXED         = 0x0d,
-    OP_PING_FIXED_REPLY   = 0x0e,
+    OP_PING_FIXED         = 0x00,
+    OP_PING_FIXED_REPLY   = 0x01,
     OP_WRITE_REG          = 0x02,
     OP_WRITE_REG_MASKED   = 0x03,
     OP_READ_REG           = 0x04,
@@ -218,7 +218,7 @@
 
       );
 
-    uint32_t *payload = (uint32_t *) d_payload + p_len;
+    uint32_t *payload = (uint32_t *) (d_payload + p_len);
     *payload = host_to_usrp_u32(ping);
 
     // Update payload length
@@ -247,7 +247,7 @@
 
       );
 
-    uint32_t *payload = (uint32_t *) d_payload + p_len;
+    uint32_t *payload = (uint32_t *) (d_payload + p_len);
     *payload = host_to_usrp_u32(ping);
 
     // Update payload length
@@ -277,12 +277,12 @@
       | ((reg_num & CS_REGNUM_MASK) << CS_REGNUM_SHIFT)
     );
 
-    uint32_t *payload = (uint32_t *) d_payload + p_len;
+    uint32_t *payload = (uint32_t *) (d_payload + p_len);
     *payload = host_to_usrp_u32(word0);
 
     // The second word is solely the register value to be written
     // FIXME: should this be unsigned?
-    payload += 4; 
+    payload += 1; 
     *payload = host_to_usrp_u32((uint32_t) val);
     
     // Rebuild the header to update the payload length
@@ -312,15 +312,15 @@
       | ((reg_num & CS_REGNUM_MASK) << CS_REGNUM_SHIFT)
     );
 
-    uint32_t *payload = (uint32_t *) d_payload + p_len;
+    uint32_t *payload = (uint32_t *) (d_payload + p_len);
     *payload = host_to_usrp_u32(word0);
 
     // Skip over the first word and write the register value
-    payload += 4;
+    payload += 1;
     *payload = host_to_usrp_u32((uint32_t) val);
 
     // Skip over the register value and write the mask
-    payload += 4;
+    payload += 1;
     *payload = host_to_usrp_u32((uint32_t) mask);
     
     // Rebuild the header to update the payload length
@@ -349,7 +349,7 @@
 
       );
 
-    uint32_t *payload = (uint32_t *) d_payload + p_len;
+    uint32_t *payload = (uint32_t *) (d_payload + p_len);
     *payload = host_to_usrp_u32(read_reg);
 
     // Update payload length
@@ -378,11 +378,11 @@
 
       );
 
-    uint32_t *payload = (uint32_t *) d_payload + p_len;
+    uint32_t *payload = (uint32_t *) (d_payload + p_len);
     *payload = host_to_usrp_u32(word0);
 
     // Hop to the next word and write the reg value
-    payload += 4;
+    payload += 1;
     *payload = host_to_usrp_u32((uint32_t) reg_val); 
 
     // Update payload length
@@ -410,7 +410,7 @@
 
       );
 
-    uint32_t *payload = (uint32_t *) d_payload + p_len;
+    uint32_t *payload = (uint32_t *) (d_payload + p_len);
     *payload = host_to_usrp_u32(delay);
 
     // Update payload length
@@ -441,12 +441,12 @@
       | ((i2c_addr & CS_I2CADDR_MASK) << CS_I2CADDR_SHIFT)
     );
 
-    uint32_t *payload = (uint32_t *) d_payload + p_len;
+    uint32_t *payload = (uint32_t *) (d_payload + p_len);
      *payload = host_to_usrp_u32(word0);
 
      // Jump over the first word and write the data
      // FIXME: Should the data be changed to usrp byte order?
-     payload += 4;
+     payload += 1;
      memcpy(payload, i2c_data, data_len);
 
     // Update payload length
@@ -476,11 +476,11 @@
       | ((i2c_addr & CS_I2CADDR_MASK) << CS_I2CADDR_SHIFT)
       );
 
-    uint32_t *payload = (uint32_t *) d_payload + p_len;
+    uint32_t *payload = (uint32_t *) (d_payload + p_len);
     *payload = host_to_usrp_u32(word0);
 
     // Jump a word and write the number of bytes to read
-    payload += 4;
+    payload += 1;
     uint32_t word1 = 
       (n_bytes & CS_I2CREADBYTES_MASK) << CS_I2CREADBYTES_SHIFT;
     *payload = host_to_usrp_u32(word1);
@@ -514,11 +514,11 @@
       | ((i2c_addr & CS_I2CADDR_MASK) << CS_I2CADDR_SHIFT)
       );
 
-    uint32_t *payload = (uint32_t *) d_payload + p_len;
+    uint32_t *payload = (uint32_t *) (d_payload + p_len);
     *payload = host_to_usrp_u32(word0);
 
     // Jump a word and write the actual data
-    payload += 4;
+    payload += 1;
     memcpy(payload, i2c_data, i2c_data_len);
 
     // Update payload length
@@ -541,7 +541,7 @@
   // reporting on the transmit side of packets.
   pmt_t read_subpacket(int payload_offset) {
 
-    uint32_t subpkt = usrp_to_host_u32(*((uint32_t *)d_payload + 
payload_offset));
+    uint32_t subpkt = usrp_to_host_u32(*((uint32_t *)(d_payload + 
payload_offset)));
     uint32_t opcode = (subpkt >> CS_OPCODE_SHIFT) & CS_OPCODE_MASK;
     uint32_t len = (subpkt >> CS_LEN_SHIFT) & CS_LEN_MASK;
 
@@ -560,7 +560,7 @@
         pmt_t reg_num = pmt_from_long((subpkt >> CS_REGNUM_SHIFT) & 
CS_REGNUM_MASK);
 
         // To get the register value we just read the next 32 bits
-        uint32_t val  = usrp_to_host_u32(*((uint32_t *)d_payload + 
payload_offset + 4));
+        uint32_t val  = usrp_to_host_u32(*((uint32_t *)(d_payload + 
payload_offset + 4)));
         pmt_t reg_val = pmt_from_long(val);
 
         return pmt_list4(s_op_read_reg_reply, rid, reg_num, reg_val);
@@ -597,7 +597,7 @@
         pmt_t reg_num = pmt_from_long((subpkt >> CS_REGNUM_SHIFT) & 
CS_REGNUM_MASK);
 
         // To get the register value we just read the next 32 bits
-        uint32_t val  = usrp_to_host_u32(*((uint32_t *)d_payload + 
payload_offset + 4));
+        uint32_t val  = usrp_to_host_u32(*((uint32_t *)(d_payload + 
payload_offset + 4)));
         pmt_t reg_val = pmt_from_long(val);
 
         return pmt_list3(s_op_write_reg, reg_num, reg_val);
@@ -608,11 +608,11 @@
         pmt_t reg_num = pmt_from_long((subpkt >> CS_REGNUM_SHIFT) & 
CS_REGNUM_MASK);
 
         // To get the register value we just read the next 32 bits
-        uint32_t val  = usrp_to_host_u32(*((uint32_t *)d_payload + 
payload_offset + 4));
+        uint32_t val  = usrp_to_host_u32(*((uint32_t *)(d_payload + 
payload_offset + 4)));
         pmt_t reg_val = pmt_from_long(val);
 
         // The mask is the next 32 bits
-        uint32_t mask  = usrp_to_host_u32(*((uint32_t *)d_payload + 
payload_offset + 8));
+        uint32_t mask  = usrp_to_host_u32(*((uint32_t *)(d_payload + 
payload_offset + 8)));
         pmt_t reg_mask = pmt_from_long(mask);
 
         return pmt_list4(s_op_write_reg_masked, reg_num, reg_val, reg_mask);
@@ -648,7 +648,7 @@
         pmt_t i2c_addr  = pmt_from_long((subpkt >> CS_I2CADDR_SHIFT) & 
CS_I2CADDR_MASK);
         
         // The number of bytes is in the next word
-        uint32_t bytes  = usrp_to_host_u32(*((uint32_t *)d_payload + 
payload_offset + 4));
+        uint32_t bytes  = usrp_to_host_u32(*((uint32_t *)(d_payload + 
payload_offset + 4)));
         pmt_t i2c_bytes = pmt_from_long(bytes);
 
         return pmt_list4(s_op_i2c_read, rid, i2c_addr, i2c_bytes);
@@ -676,7 +676,7 @@
   // Takes an offset to the beginning of a subpacket and extracts the
   // length of the subpacket
   int cs_len(int payload_offset) {
-    uint32_t subpkt = usrp_to_host_u32(*((uint32_t *)d_payload + 
payload_offset));
+    uint32_t subpkt = usrp_to_host_u32(*((uint32_t *)(d_payload + 
payload_offset)));
     return (subpkt >> CS_LEN_SHIFT) & CS_LEN_MASK;
   }
 

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-06 04:18:32 UTC (rev 5923)
+++ 
gnuradio/branches/developers/gnychis/inband/usrp/host/lib/inband/usrp_tx_stub.cc
    2007-07-06 17:10:07 UTC (rev 5924)
@@ -243,13 +243,14 @@
 
     //---------------- I2C WRITE ------------------//
     if(pmt_eq(op_symbol, s_op_i2c_write)) {
-      pmt_t rid       = pmt_nth(1, sub_packet);
+      pmt_t i2c_addr  = pmt_nth(1, sub_packet);
       pmt_t i2c_data  = pmt_nth(2, sub_packet);
 
       if(verbose)
         std::cout << "[USRP_TX_STUB] Received i2c write command "
                   << "("
-                  << "RID: " << rid
+                  << "Addr: " << i2c_addr << ", "
+                  << "Data: " << i2c_data
                   << ")\n";
     }
 





reply via email to

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