亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usrp_primes.cc

?? 嵌入式開發板USB測試
?? CC
?? 第 1 頁 / 共 3 頁
字號:
  struct usb_dev_handle *udh = open_nth_cmd_interface (nth); 
  if (udh == 0) 
    return false; 
   
  s = usrp_load_fpga (udh, filename, force); 
  usrp_close_interface (udh); 
  load_status_msg (s, "fpga bitstream", filename); 
 
  if (s == ULS_ERROR) 
    return false; 
 
  return true; 
} 
 
bool 
_usrp_get_status (struct usb_dev_handle *udh, int which, bool *trouble) 
{ 
  unsigned char status; 
  *trouble = true; 
   
  if (write_cmd (udh, VRQ_GET_STATUS, 0, which, 
                 &status, sizeof (status)) != sizeof (status)) 
    return false; 
 
  *trouble = status; 
  return true; 
} 
 
bool 
usrp_check_rx_overrun (struct usb_dev_handle *udh, bool *overrun_p) 
{ 
  return _usrp_get_status (udh, GS_RX_OVERRUN, overrun_p); 
} 
 
bool 
usrp_check_tx_underrun (struct usb_dev_handle *udh, bool *underrun_p) 
{ 
  return _usrp_get_status (udh, GS_TX_UNDERRUN, underrun_p); 
} 
 
 
bool 
usrp_i2c_write (struct usb_dev_handle *udh, int i2c_addr, 
                const void *buf, int len) 
{ 
  if (len < 1 || len > MAX_EP0_PKTSIZE) 
    return false; 
 
  return write_cmd (udh, VRQ_I2C_WRITE, i2c_addr, 0, 
                    (unsigned char *) buf, len) == len; 
} 
 
 
bool 
usrp_i2c_read (struct usb_dev_handle *udh, int i2c_addr, 
               void *buf, int len) 
{ 
  if (len < 1 || len > MAX_EP0_PKTSIZE) 
    return false; 
 
  return write_cmd (udh, VRQ_I2C_READ, i2c_addr, 0, 
                    (unsigned char *) buf, len) == len; 
} 
 
bool 
usrp_spi_write (struct usb_dev_handle *udh, 
                int optional_header, int enables, int format, 
                const void *buf, int len) 
{ 
  if (len < 0 || len > MAX_EP0_PKTSIZE) 
    return false; 
 
  return write_cmd (udh, VRQ_SPI_WRITE, 
                    optional_header, 
                    ((enables & 0xff) << 8) | (format & 0xff), 
                    (unsigned char *) buf, len) == len; 
} 
 
 
bool 
usrp_spi_read (struct usb_dev_handle *udh, 
               int optional_header, int enables, int format, 
               void *buf, int len) 
{ 
  if (len < 0 || len > MAX_EP0_PKTSIZE) 
    return false; 
 
  return write_cmd (udh, VRQ_SPI_READ, 
                    optional_header, 
                    ((enables & 0xff) << 8) | (format & 0xff), 
                    (unsigned char *) buf, len) == len; 
} 
 
 bool 
 usrp_9862_write (struct usb_dev_handle *udh, int which_codec, 
                  int regno, int value) 
 { 
   if (0) 
     fprintf (stderr, "usrp_9862_write which = %d, reg = %2d, val = %3d (0x%02x)\n", 
              which_codec, regno, value, value); 
  
   unsigned char buf[1]; 
  
   buf[0] = value; 
    
   return usrp_spi_write (udh, 0x00 | (regno & 0x3f), 
                          which_codec == 0 ? SPI_ENABLE_CODEC_A : SPI_ENABLE_CODEC_B, 
                          SPI_FMT_MSB | SPI_FMT_HDR_1, 
                          buf, 1); 
 } 
  
 bool 
 usrp_9862_read (struct usb_dev_handle *udh, int which_codec, 
                 int regno, unsigned char *value) 
 { 
   return usrp_spi_read (udh, 0x80 | (regno & 0x3f), 
                         which_codec == 0 ? SPI_ENABLE_CODEC_A : SPI_ENABLE_CODEC_B, 
                         SPI_FMT_MSB | SPI_FMT_HDR_1, 
                         value, 1); 
 } 
  
 bool 
 usrp_9862_write_many (struct usb_dev_handle *udh, 
                       int which_codec, 
                       const unsigned char *buf, 
                       int len) 
 { 
   if (len & 0x1) 
     return false;               // must be even 
  
   bool result = true; 
  
   while (len > 0){ 
     result &= usrp_9862_write (udh, which_codec, buf[0], buf[1]); 
     len -= 2; 
     buf += 2; 
   } 
  
   return result; 
 } 
  
  
 bool 
 usrp_9862_write_many_all (struct usb_dev_handle *udh, 
                            const unsigned char *buf, int len) 
 { 
   // FIXME handle 2/2 and 4/4 versions 
  
   bool result; 
   result  = usrp_9862_write_many (udh, 0, buf, len); 
   result &= usrp_9862_write_many (udh, 1, buf, len); 
   return result; 
 } 
  
 static void 
 power_down_9862s (struct usb_dev_handle *udh) 
 { 
   static const unsigned char regs[] = { 
     REG_RX_PWR_DN,      0x01,                   // everything 
     REG_TX_PWR_DN,      0x0f,                   // pwr dn digital and analog_both 
     REG_TX_MODULATOR,   0x00                    // coarse & fine modulators disabled 
   }; 
  
   switch (usrp_hw_rev (dev_handle_to_dev (udh))){ 
   case 0: 
     break; 
  
   default: 
     usrp_9862_write_many_all (udh, regs, sizeof (regs)); 
     break; 
   } 
 } 
  
  
  
 static const int EEPROM_PAGESIZE = 16; 
  
 bool 
 usrp_eeprom_write (struct usb_dev_handle *udh, int i2c_addr, 
                    int eeprom_offset, const void *buf, int len) 
 { 
   unsigned char cmd[2]; 
   const unsigned char *p = (unsigned char *) buf; 
    
   // The simplest thing that could possibly work: 
   //   all writes are single byte writes. 
   // 
   // We could speed this up using the page write feature, 
   // but we write so infrequently, why bother... 
  
   while (len-- > 0){ 
     cmd[0] = eeprom_offset++; 
     cmd[1] = *p++; 
     bool r = usrp_i2c_write (udh, i2c_addr, cmd, sizeof (cmd)); 
     mdelay (10);                // delay 10ms worst case write time 
     if (!r) 
       return false; 
   } 
    
   return true; 
 } 
  
 bool 
 usrp_eeprom_read (struct usb_dev_handle *udh, int i2c_addr, 
                   int eeprom_offset, void *buf, int len) 
 { 
   unsigned char *p = (unsigned char *) buf; 
  
   // We setup a random read by first doing a "zero byte write". 
   // Writes carry an address.  Reads use an implicit address. 
  
   unsigned char cmd[1]; 
   cmd[0] = eeprom_offset; 
   if (!usrp_i2c_write (udh, i2c_addr, cmd, sizeof (cmd))) 
     return false; 
  
   while (len > 0){ 
     int n = std::min (len, MAX_EP0_PKTSIZE); 
     if (!usrp_i2c_read (udh, i2c_addr, p, n)) 
       return false; 
     len -= n; 
     p += n; 
   } 
   return true; 
 } 
   
 // ---------------------------------------------------------------- 
  
 static bool 
 slot_to_codec (int slot, int *which_codec) 
 { 
   *which_codec = 0; 
    
   switch (slot){ 
   case SLOT_TX_A: 
   case SLOT_RX_A: 
     *which_codec = 0; 
     break; 
  
   case SLOT_TX_B: 
   case SLOT_RX_B: 
     *which_codec = 1; 
     break; 
  
   default: 
     fprintf (stderr, "usrp_prims:slot_to_codec: invalid slot = %d\n", slot); 
     return false; 
   } 
   return true; 
 } 
  
 static bool 
 tx_slot_p (int slot) 
 { 
   switch (slot){ 
   case SLOT_TX_A: 
   case SLOT_TX_B: 
     return true; 
  
   default: 
     return false; 
   } 
 } 
  
 bool 
 usrp_write_aux_dac (struct usb_dev_handle *udh, int slot, 
                     int which_dac, int value) 
 { 
   int which_codec; 
    
   if (!slot_to_codec (slot, &which_codec)) 
     return false; 
  
   if (!(0 <= which_dac && which_dac < 4)){ 
     fprintf (stderr, "usrp_write_aux_dac: invalid dac = %d\n", which_dac); 
     return false; 
   } 
  
   value &= 0x0fff;      // mask to 12-bits 
    
   if (which_dac == 3){ 
     // dac 3 is really 12-bits.  Use value as is. 
     bool r = true; 
     r &= usrp_9862_write (udh, which_codec, 43, (value >> 4));       // most sig 
     r &= usrp_9862_write (udh, which_codec, 42, (value & 0xf) << 4); // least sig 
     return r; 
   } 
   else { 
     // dac 0, 1, and 2 are really 8 bits.   
     value = value >> 4;         // shift value appropriately 
     return usrp_9862_write (udh, which_codec, 36 + which_dac, value); 
   } 
 } 
  
  
 bool 
 usrp_read_aux_adc (struct usb_dev_handle *udh, int slot, 
                    int which_adc, int *value) 
 { 
   *value = 0; 
   int   which_codec; 
  
   if (!slot_to_codec (slot, &which_codec)) 
     return false; 
  
   if (!(0 <= which_codec && which_codec < 2)){ 
     fprintf (stderr, "usrp_read_aux_adc: invalid adc = %d\n", which_adc); 
     return false; 
   } 
  
   unsigned char aux_adc_control = 
     AUX_ADC_CTRL_REFSEL_A               // on chip reference 
     | AUX_ADC_CTRL_REFSEL_B;            // on chip reference 
  
   int   rd_reg = 26;    // base address of two regs to read for result 
    
   // program the ADC mux bits 
   if (tx_slot_p (slot)) 
     aux_adc_control |= AUX_ADC_CTRL_SELECT_A2 | AUX_ADC_CTRL_SELECT_B2; 
   else { 
     rd_reg += 2; 
     aux_adc_control |= AUX_ADC_CTRL_SELECT_A1 | AUX_ADC_CTRL_SELECT_B1; 
   } 
    
   // I'm not sure if we can set the mux and issue a start conversion 
   // in the same cycle, so let's do them one at a time. 
  
   usrp_9862_write (udh, which_codec, 34, aux_adc_control); 
  
   if (which_adc == 0) 
     aux_adc_control |= AUX_ADC_CTRL_START_A; 
   else { 
     rd_reg += 4; 
     aux_adc_control |= AUX_ADC_CTRL_START_B; 
   } 
  
   // start the conversion 
   usrp_9862_write (udh, which_codec, 34, aux_adc_control); 
  
   // read the 10-bit result back 
   unsigned char v_lo = 0; 
   unsigned char v_hi = 0; 
   bool r = usrp_9862_read (udh, which_codec, rd_reg, &v_lo); 
   r &= usrp_9862_read (udh, which_codec, rd_reg + 1, &v_hi); 
  
   if (r) 
     *value = ((v_hi << 2) | ((v_lo >> 6) & 0x3)) << 2;  // format as 12-bit 
    
   return r; 
 } 
  
 // ---------------------------------------------------------------- 
  
 static int slot_to_i2c_addr (int slot) 
 { 
   switch (slot){ 
   case SLOT_TX_A:       return I2C_ADDR_TX_A; 
   case SLOT_RX_A:       return I2C_ADDR_RX_A; 
   case SLOT_TX_B:       return I2C_ADDR_TX_B; 
   case SLOT_RX_B:       return I2C_ADDR_RX_B; 
   default:              return -1; 
   } 
 } 
  
 static void 
 set_chksum (unsigned char *buf) 
 { 
   int sum = 0; 
   unsigned int i; 
   for (i = 0; i < DB_EEPROM_CLEN - 1; i++) 
     sum += buf[i]; 
   buf[i] = -sum; 
 } 
  
 static usrp_dbeeprom_status_t 
 read_dboard_eeprom (struct usb_dev_handle *udh, 
                     int slot_id, unsigned char *buf) 
 { 
   int i2c_addr = slot_to_i2c_addr (slot_id); 
   if (i2c_addr == -1) 
     return UDBE_BAD_SLOT; 
  
   if (!usrp_eeprom_read (udh, i2c_addr, 0, buf, DB_EEPROM_CLEN)) 
     return UDBE_NO_EEPROM; 
  
   if (buf[DB_EEPROM_MAGIC] != DB_EEPROM_MAGIC_VALUE) 
     return UDBE_INVALID_EEPROM; 
  
   int sum = 0; 
   for (unsigned int i = 0; i < DB_EEPROM_CLEN; i++) 
     sum += buf[i]; 
  
   if ((sum & 0xff) != 0) 
     return UDBE_INVALID_EEPROM; 
  
   return UDBE_OK; 
 } 
  
 usrp_dbeeprom_status_t 
 usrp_read_dboard_eeprom (struct usb_dev_handle *udh, 
                          int slot_id, usrp_dboard_eeprom *eeprom) 
 { 
   unsigned char buf[DB_EEPROM_CLEN]; 
  
   memset (eeprom, 0, sizeof (*eeprom)); 
  
   usrp_dbeeprom_status_t s = read_dboard_eeprom (udh, slot_id, buf); 
   if (s != UDBE_OK) 
     return s; 
  
   eeprom->id = (buf[DB_EEPROM_ID_MSB] << 8) | buf[DB_EEPROM_ID_LSB]; 
   eeprom->oe = (buf[DB_EEPROM_OE_MSB] << 8) | buf[DB_EEPROM_OE_LSB]; 
   eeprom->offset[0] = (buf[DB_EEPROM_OFFSET_0_MSB] << 8) | buf[DB_EEPROM_OFFSET_0_LSB]; 
   eeprom->offset[1] = (buf[DB_EEPROM_OFFSET_1_MSB] << 8) | buf[DB_EEPROM_OFFSET_1_LSB]; 
  
   return UDBE_OK; 
 } 
  
 bool 
 usrp_write_dboard_offsets (struct usb_dev_handle *udh, int slot_id, 
                            short offset0, short offset1) 
 { 
   unsigned char buf[DB_EEPROM_CLEN]; 
  
   usrp_dbeeprom_status_t s = read_dboard_eeprom (udh, slot_id, buf); 
   if (s != UDBE_OK) 
     return false; 
  
   buf[DB_EEPROM_OFFSET_0_LSB] = (offset0 >> 0) & 0xff; 
   buf[DB_EEPROM_OFFSET_0_MSB] = (offset0 >> 8) & 0xff; 
   buf[DB_EEPROM_OFFSET_1_LSB] = (offset1 >> 0) & 0xff; 
   buf[DB_EEPROM_OFFSET_1_MSB] = (offset1 >> 8) & 0xff; 
   set_chksum (buf); 
  
   return usrp_eeprom_write (udh, slot_to_i2c_addr (slot_id), 
                             0, buf, sizeof (buf)); 
 } 
  
 std::string 
 usrp_serial_number(struct usb_dev_handle *udh) 
 { 
   unsigned char iserial = usb_device(udh)->descriptor.iSerialNumber; 
   if (iserial == 0) 
     return ""; 
  
   char buf[1024]; 
   if (usb_get_string_simple(udh, iserial, buf, sizeof(buf)) < 0) 
     return ""; 
  
   return buf; 
 } 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人自拍网| 精品少妇一区二区三区在线视频| 久久精品视频网| 国产成人av电影在线| 亚洲国产高清aⅴ视频| 国产高清亚洲一区| 国产精品丝袜在线| 91高清在线观看| 日韩极品在线观看| 2021国产精品久久精品| 成人美女视频在线看| 一区二区三区加勒比av| 91精品国产综合久久婷婷香蕉 | 国产精品一级二级三级| 日本一区二区综合亚洲| 色94色欧美sute亚洲13| 免费在线看成人av| 国产精品美日韩| 欧美日韩免费电影| 国产一区二区精品久久| 亚洲日本欧美天堂| 欧美日本一区二区| 国产成人亚洲综合a∨婷婷 | 欧美精品一区视频| 99精品一区二区| 日本强好片久久久久久aaa| 国产日韩v精品一区二区| 在线观看日韩毛片| 精品一区二区在线播放| 亚洲女子a中天字幕| 精品久久久久久久一区二区蜜臀| 99精品久久免费看蜜臀剧情介绍| 午夜精品福利久久久| 国产肉丝袜一区二区| 欧美精品乱码久久久久久按摩 | 欧美人狂配大交3d怪物一区| 国产在线一区二区| 亚洲成精国产精品女| 中文字幕av免费专区久久| 69堂亚洲精品首页| 91在线观看视频| 极品少妇一区二区三区精品视频| 亚洲一区中文在线| 国产婷婷一区二区| 欧美一级二级在线观看| 国产日产欧美一区| 欧美一区二区视频网站| 欧美在线一二三四区| 成人av午夜电影| 国产麻豆精品在线观看| 日韩激情一二三区| 亚洲影院在线观看| 1000精品久久久久久久久| 久久午夜羞羞影院免费观看| 7777精品伊人久久久大香线蕉 | 欧美一区二区福利视频| 91久久奴性调教| 成人免费观看视频| 国产精品一二三四| 国产一区在线观看麻豆| 美国三级日本三级久久99| 天天色天天操综合| 亚洲超丰满肉感bbw| 亚洲一区二区三区在线| ㊣最新国产の精品bt伙计久久| 久久无码av三级| 久久影院电视剧免费观看| 欧美一区二区三区免费在线看| 欧美三级资源在线| 在线精品视频免费观看| 在线视频国产一区| 欧美做爰猛烈大尺度电影无法无天| 99久久精品国产一区| 一本一本久久a久久精品综合麻豆| 成人免费毛片嘿嘿连载视频| 国产高清成人在线| 丰满白嫩尤物一区二区| 成人自拍视频在线| 99精品视频在线观看| av亚洲精华国产精华精| 99v久久综合狠狠综合久久| 99re6这里只有精品视频在线观看| av电影在线观看完整版一区二区| 成人午夜电影久久影院| 99久久免费视频.com| 91麻豆精品秘密| 欧美性猛交一区二区三区精品| 精品婷婷伊人一区三区三| 欧美美女激情18p| 日韩欧美一二三区| 国产视频不卡一区| 1区2区3区国产精品| 亚洲激情综合网| 午夜精品久久久久久久| 精东粉嫩av免费一区二区三区| 国产在线一区二区| 99久久精品免费看国产免费软件| 在线一区二区三区| 日韩亚洲国产中文字幕欧美| 久久精品视频免费观看| 亚洲男人的天堂在线观看| 亚洲第一精品在线| 国内精品伊人久久久久av影院| 风间由美一区二区三区在线观看 | 亚洲国产精品自拍| 美女精品自拍一二三四| 风间由美一区二区三区在线观看| 色婷婷狠狠综合| 日韩一级大片在线观看| 国产精品天美传媒| 亚洲mv在线观看| 国产剧情一区在线| 欧美影视一区二区三区| 精品成人一区二区三区四区| 国产精品成人免费在线| 视频一区在线播放| 成人精品一区二区三区四区| 欧美视频一二三区| 国产丝袜在线精品| 天堂在线一区二区| 成人免费不卡视频| 日韩三级免费观看| 亚洲美女免费视频| 国产一区二区导航在线播放| 欧洲精品在线观看| 国产欧美日韩久久| 日本欧美一区二区| 91高清视频免费看| 欧美国产精品专区| 蜜臀av一区二区在线观看| 91社区在线播放| 久久久精品免费免费| 午夜视频在线观看一区| 成人福利视频在线| 精品国产伦一区二区三区观看方式| 亚洲精品ww久久久久久p站| 国产一二精品视频| 91精品国产一区二区三区蜜臀| 国产精品女主播av| 国产盗摄视频一区二区三区| 欧美男同性恋视频网站| 亚洲卡通欧美制服中文| 国产传媒欧美日韩成人| 欧美成人福利视频| 日韩精品免费视频人成| 在线观看91视频| 成人欧美一区二区三区| 国产suv精品一区二区三区| 日韩你懂的在线播放| 视频一区二区三区在线| 欧美影院精品一区| 亚洲精品少妇30p| 国产69精品久久99不卡| 久久久精品黄色| 国产剧情一区在线| 久久综合久久久久88| 久久国产剧场电影| 欧美不卡一二三| 久久精品久久久精品美女| 欧美一区二视频| 日韩激情一二三区| 91精品国产综合久久久久久久| 亚洲国产欧美一区二区三区丁香婷| 色先锋aa成人| 亚洲最新视频在线观看| 色国产综合视频| 亚洲综合一区在线| 欧美中文字幕亚洲一区二区va在线| 亚洲欧美日韩一区二区三区在线观看| 成人av在线电影| 亚洲欧美日韩在线播放| 一本色道亚洲精品aⅴ| 一区二区不卡在线播放 | 日本一区二区免费在线| 国产成人亚洲精品狼色在线 | 国产精品毛片大码女人| 99在线精品一区二区三区| 亚洲欧美日韩国产综合| 欧洲中文字幕精品| 日韩国产欧美在线播放| 精品噜噜噜噜久久久久久久久试看| 久久国产三级精品| 中文字幕欧美区| 91成人在线免费观看| 视频一区二区三区在线| www国产精品av| 成人福利在线看| 亚洲国产日韩精品| 欧美成人艳星乳罩| 国产99精品在线观看| 亚洲情趣在线观看| 欧美一区二区三区四区久久| 国内精品久久久久影院一蜜桃| 国产日韩欧美精品一区| 91极品视觉盛宴| 奇米色777欧美一区二区| 久久精品欧美日韩| 日韩码欧中文字| 制服丝袜亚洲网站| 成人综合在线观看|