Merge branch 'mossmann-master'
This commit is contained in:
@ -1,415 +1,66 @@
|
|||||||
ref;value;Field1;Field2;Field3;Field4;Field5;Field6;Field7;Field8
|
Item,Qty,Reference(s),Value,LibPart,Footprint,Datasheet,Description,Manufacturer,Part Number
|
||||||
C1;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
1,33,"C1, C3, C5, C7, C10, C11, C16, C19, C22, C24, C29, C30, C33, C34, C35, C36, C37, C38, C39, C40, C45, C47, C54, C55, C56, C57, C60, C63, C65, C66, C67, C115, C125",33pF,device:C,,,CAP CER 33PF 50V 5% NP0 0402,Murata,GRM1555C1H330JA01D
|
||||||
C2;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
2,3,"C97, C98, C100",330nF,device:C,,,CAP CER 0.33UF 10V 10% X5R 0402,Murata,GRM155R61A334KE15D
|
||||||
C3;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
3,12,"C8, C21, C32, C43, C48, C51, C84, C85, C86, C94, C99, C102",22pF,device:C,,,CAP CER 22PF 50V 5% NP0 0402,Murata,GRM1555C1H220JA01D
|
||||||
C4;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
4,2,"C104, C111",3pF,device:C,,,CAP CER 3PF 50V NP0 0402,Murata,GRM1555C1H3R0CA01D
|
||||||
C5;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
5,6,"C105, C126, C127, C143, C145, C146",10uF,device:C,,,CAP CER 10UF 10V 10% X5R 0805,Murata,GRM21BR61A106KE19L
|
||||||
C6;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
6,4,"C53, C106, C161, C171",1uF,device:C,,,CAP CER 1UF 10V 10% X5R 0402,Taiyo Yuden,LMK105BJ105KV-F
|
||||||
C7;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
7,2,"C15, C112",180pF,device:C,,,CAP CER 180PF 50V 5% NP0 0402,Murata,GRM1555C1H181JA01D
|
||||||
C8;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
8,57,"C9, C17, C18, C20, C23, C25, C28, C31, C44, C46, C49, C50, C58, C59, C61, C62, C64, C71, C73, C75, C77, C79, C81, C83, C91, C113, C119, C120, C121, C122, C123, C128, C129, C130, C131, C132, C133, C134, C135, C136, C137, C138, C139, C140, C141, C142, C144, C147, C148, C149, C150, C151, C152, C153, C154, C166, C167",100nF,device:C,,,CAP CER 0.1UF 10V 10% X5R 0402,Murata,GRM155R61A104KA01D
|
||||||
C9;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
9,1,C114,3.3nF,device:C,,,CAP CER 3300PF 50V 10% X7R 0402,Murata,GRM155R71H332KA01D
|
||||||
C10;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
10,3,"C26, C27, C116",47pF,device:C,,,CAP CER 47PF 50V 5% NP0 0402,Murata,GRM1555C1H470JA01D
|
||||||
C11;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
11,4,"C118, C157, C158, C164",18pF,device:C,,,CAP CER 18PF 50V 5% NP0 0402,Murata,GRM1555C1H180JA01D
|
||||||
C12;330pF;Murata;GRM155R71H331KA01D;CAP CER 330PF 50V 10% X7R 0402;;;;;
|
12,2,"C12, C13",330pF,device:C,,,CAP CER 330PF 50V 10% X7R 0402,Murata,GRM155R71H331KA01D
|
||||||
C13;330pF;Murata;GRM155R71H331KA01D;CAP CER 330PF 50V 10% X7R 0402;;;;;
|
13,7,"C72, C74, C76, C78, C80, C82, C124",2.2uF,device:C,,,CAP CER 2.2UF 10V 20% X5R 0402,Taiyo Yuden,LMK105BJ225MV-F
|
||||||
C14;8p2;Taiyo Yuden;UMK105CG8R2DV-F;CAP CER 8.2PF 50V NP0 0402;;;;;
|
14,1,C14,8p2,device:C,,,CAP CER 8.2PF 50V NP0 0402,Taiyo Yuden,UMK105CG8R2DV-F
|
||||||
C15;180pF;Murata;GRM1555C1H181JA01D;CAP CER 180PF 50V 5% NP0 0402;;;;;
|
15,6,"C41, C42, C52, C70, C90, C160",100pF,device:C,,,CAP CER 100PF 50V 5% NP0 0402,Murata,GRM1555C1H101JA01D
|
||||||
C16;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
16,10,"C2, C4, C6, C87, C88, C89, C92, C93, C162, C163",10nF,device:C,,,CAP CER 10000PF 16V 10% X7R 0402,Murata,GRM155R71C103KA01D
|
||||||
C17;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
17,3,"D1, D3, D9",GSG-DIODE-TVS-BI,hackrf:GSG-DIODE-TVS-BI,,,TVS DIODE ESD .05PF 15KV 0402,Murata,LXES15AAA1-100
|
||||||
C18;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
18,2,"D2, D6",TXLED,device:LED,,,LED SUPR RED CLR RT ANG 0805,Lite-On,LTST-S220KRKT
|
||||||
C19;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
19,2,"D4, D7",VCCLED,device:LED,,,LED GREEN CLEAR RT ANG 0805,Lite-On,LTST-S220KGKT
|
||||||
C20;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
20,2,"D5, D8",1V8LED,device:LED,,,LED YELLOW CLEAR RT ANG 0805,Lite-On,LTST-S220KSKT
|
||||||
C21;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
21,3,"FB1, FB2, FB3",FILTER,device:FILTER,,,FERRITE CHIP 220 OHM 2000MA 0805,Murata,BLM21PG221SN1D
|
||||||
C22;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
22,1,J1,USB-MICRO-B,hackrf:GSG-USB-MICRO-B-SHIELDED,,,CONN RCPT REV MICRO USB TYPE B,FCI,10103592-0001LF
|
||||||
C23;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
23,2,"L10, L11",4u7,device:INDUCTOR,,,INDUCTOR 4.7UH 1.6A 20% SMD,Taiyo Yuden,NRG4026T4R7M
|
||||||
C24;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
24,5,"L2, L3, L5, L12, L13",10uH,device:INDUCTOR,,,INDUCTR 10UH 220MA 20% 0603 SMD,Taiyo Yuden,BRL1608T100M
|
||||||
C25;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
25,1,L7,6.2nH,device:INDUCTOR,,,INDUCTOR HIFREQ 6.2+/-0.3NH 0402,Taiyo Yuden,HK10056N2S-T
|
||||||
C26;47pF;Murata;GRM1555C1H470JA01D;CAP CER 47PF 50V 5% NP0 0402;;;;;
|
26,3,"P2, P4, P16",ANTENNA,hackrf:GSG-RF-CONN,,,CONN SMA JACK 50 OHM EDGE MNT W/JAM NUT & LOCK WASHER,Molex,73251-2121
|
||||||
C27;47pF;Murata;GRM1555C1H470JA01D;CAP CER 47PF 50V 5% NP0 0402;;;;;
|
27,2,"P20, P28",SD,hackrf:CONN_11X2,,,"CONN HEADER FMAL 22PS.1"" DL GOLD",Sullins,PPPC112LFBN-RC
|
||||||
C28;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
28,1,P22,I2S,hackrf-one-cache:CONN_13X2,,,"CONN HEADER FMAL 26PS.1"" DL GOLD",Sullins,PPPC132LFBN-RC
|
||||||
C29;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
29,1,P9,BASEBAND,hackrf-one-cache:CONN_8X2,,,"CONN HEADER FMAL 16PS.1"" DL GOLD",Sullins,PPPC082LFBN-RC
|
||||||
C30;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
30,3,"Q1, Q2, Q4",MOSFET_P,hackrf-one-cache:MOSFET_P,,,MOSFET P-CH 50V 130MA SOT-23,Fairchild,BSS84
|
||||||
C31;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
31,1,Q3,MOSFET_P,hackrf-one-cache:MOSFET_P,,,MOSFET P-CH 20V 4.2A SOT-23,Diodes Inc.,DMP2305U-7
|
||||||
C32;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
32,1,Q5,MOSFET_P,hackrf-one-cache:MOSFET_P,,,MOSFET P-CH -30V -4.3A SOT23,Alpha and Omega,AO3407A
|
||||||
C33;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
33,6,"R1, R2, R25, R26, R72, R75",470,device:R,,,RES TF 1/16W 470 OHM 5% 0402,Stackpole,RMCF0402JT470R
|
||||||
C34;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
34,6,"R8, R9, R10, R13, R73, R76",1k,device:R,,,RES 1K OHM 1/16W 1% 0402,Stackpole,RMCF0402FT1K00
|
||||||
C35;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
35,22,"R19, R30, R31, R32, R33, R34, R77, R78, R79, R80, R81, R86, R87, R88, R89, R90, R91, R94, R96, R98, R99, R100",39,device:R,,,RES 39 OHM 1/16W 5% 0402 SMD,Stackpole,RMCF0402JT39R0
|
||||||
C36;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
36,26,"R5, R6, R7, R11, R12, R24, R29, R36, R37, R41, R48, R49, R51, R52, R54, R59, R63, R64, R65, R66, R67, R68, R85, R93, R104, R105",10k,device:R,,,RES 10K OHM 1/16W 5% 0402 SMD,Stackpole,RMCF0402JT10K0
|
||||||
C37;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
37,4,"R14, R15, R16, R17",4k7,device:R,,,RES 4.7K OHM 1/16W 1% 0402,Stackpole,RMCF0402FT4K70
|
||||||
C38;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
38,4,"R18, R27, R28, R74",1k8,device:R,,,RES TF 1.8K OHM 5% 1/16W 0402,Stackpole,RMCF0402JT1K80
|
||||||
C39;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
39,7,"R20, R21, R22, R23, R57, R58, R62",0,device:R,,,RES 0.0 OHM 1/16W 0402 SMD,Stackpole,RMCF0402ZT0R00
|
||||||
C40;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
40,1,R3,22k,device:R,,,RES 22K OHM 1/10W 5% 0402 SMD,Panasonic,ERJ-2GEJ223X
|
||||||
C41;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
41,1,R4,51k,device:R,,,RES TF 51K OHM 1% 0.0625W 0402,Stackpole,RMCF0402FT51K0
|
||||||
C42;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
42,2,"R46, R55",162k,device:R,,,RES TF 1/16W 162K OHM 1% 0402,Stackpole,RMCF0402FT162K
|
||||||
C43;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
43,1,R47,330k,device:R,,,RES TF 1/16W 330K OHM 1% 0402,Stackpole,RMCF0402FT330K
|
||||||
C44;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
44,1,R56,715k,device:R,,,RES TF 1/16W 715K OHM 1% 0402,Stackpole,RMCF0402FT715K
|
||||||
C45;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
45,1,R69,12k,device:R,,,RES 12.0K OHM 1/16W 1% 0402 SMD,Rohm,MCR01MRTF1202
|
||||||
C46;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
46,2,"SW1, SW2",RESET,hackrf:SW_PUSH_SHIELDED,,,SWITCH TACTILE SPST-NO 0.05A 12V,TE Connectivity,FSMRA3JH
|
||||||
C47;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
47,2,"T1, T2",MIX_OUT_BALUN,hackrf:BALUN-B0310J50100AHF,,,Ultra Low Profile 0805 Balun 50 to 100 ohm Balanced,Anaren,B0310J50100AHF
|
||||||
C48;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
48,2,"T3, T4",TX_BALUN,hackrf:BALUN,,,BALUN CERAMIC CHIP WIMAX 2.5GHZ,Johanson Technology,2500BL14M100T
|
||||||
C49;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
49,7,"U1, U2, U5, U6, U7, U10, U11",SKY13350,hackrf:SKY13350,,,0.01-6.0 GHz GaAs SPDT Switch,Skyworks,SKY13350-385LF
|
||||||
C50;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
50,3,"U9, U12, U14",SKY13317,hackrf:SKY13317,,,20 MHz-6.0 GHz pHEMT GaAs SP3T Switch,Skyworks,SKY13317-373LF
|
||||||
C51;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
51,2,"U13, U25",MGA-81563,hackrf:MGA-81563,,,"0.1-6 GHz 3 V, 14 dBm Amplifier",Avago,MGA-81563-TR1G
|
||||||
C52;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
52,1,U15,LXES1TBCC2-004,hackrf:LXES1TBCC2-004,,,ESD Suppressors 0.55pF 6V 2ch,Murata,LXES1TBCC2-004
|
||||||
C53;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402;;;;;
|
53,1,U17,MAX2837,hackrf:MAX2837,,,IC TXRX 2.3GHZ-2.7GHZ 48TQFN,Maxim,MAX2837ETM+
|
||||||
C54;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
54,1,U18,MAX5864,hackrf:MAX5864,,,IC ANLG FRONT END 22MSPS 48-TQFN,Maxim,MAX5864ETM+
|
||||||
C55;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
55,1,U19,SI5351C,hackrf:SI5351C,,,IC CLK GENERATOR 160MHZ 20QFN,Silicon Laboratories Inc,SI5351C-B-GM
|
||||||
C56;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
56,1,U20,W25Q80BV,hackrf:W25Q80BV,,,IC FLASH 8MBIT 8SOIC,Winbond,W25Q80BVSSIG
|
||||||
C57;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
57,1,U21,TPS62410,hackrf:TPS62410,,,IC BUCK SYNC DUAL ADJ 0.8A 10SON,Texas Instruments,TPS62410DRCR
|
||||||
C58;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
58,1,U23,LPC4320FBD144,hackrf:LPC43XXFBD144,,,IC MCU 32BIT 144LQFP,NXP,"LPC4320FBD144,551"
|
||||||
C59;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
59,1,U24,GSG-XC2C64A-7VQG100C,hackrf:GSG-XC2C64A-7VQG100C,,,IC CR-II CPLD 64MCELL 100-VQFP,Xilinx,XC2C64A-7VQG100C
|
||||||
C60;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
60,1,U3,RX_LOWPASS_FILTER,hackrf:FIL-LP0603,,,FILTER LOW PASS 1880MHZ 0603 SMD,AVX,LP0603A1880ANTR
|
||||||
C61;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
61,1,U4,RFFC5072,hackrf:RFFC5072,,,WIDEBAND SYNTHESIZER/VCO WITH INTEGRATED 6GHz MIXER,RFMD,RFFC5072TR7
|
||||||
C62;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
62,1,U8,RX_HIGHPASS_FILTER,hackrf:FIL-DEA,,,FILTER HIGHPASS WLAN&BLUETOOTH,TDK,DEA162400HT-8004B1
|
||||||
C63;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
63,1,X1,GSG-XTAL4PIN,hackrf:GSG-XTAL4PIN,,,CRYSTAL 25.000MHZ 8PF SMD,AVX,CX3225GB25000D0HEQZ1
|
||||||
C64;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
64,1,X2,MCU_XTAL,hackrf:GSG-XTAL4PIN,,,CRYSTAL 12.000 MHZ 12PF SMD,TXC,7V-12.000MAAE-T
|
||||||
C65;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
65,1,X3,RTC_XTAL,hackrf-one-cache:CRYSTAL,,,CRYSTAL 32.768KHZ 12.5PF SMD,Abracon,AB26TRQ-32.768KHZ-T
|
||||||
C66;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
|
||||||
C67;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
|
||||||
C68;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C69;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C70;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
|
||||||
C71;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C72;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
|
||||||
C73;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C74;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
|
||||||
C75;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C76;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
|
||||||
C77;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C78;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
|
||||||
C79;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C80;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
|
||||||
C81;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C82;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
|
||||||
C83;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C84;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
|
||||||
C85;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
|
||||||
C86;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
|
||||||
C87;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
|
||||||
C88;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
|
||||||
C89;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
|
||||||
C90;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
|
||||||
C91;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C92;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
|
||||||
C93;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
|
||||||
C94;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
|
||||||
C95;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C96;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C97;330nF;Murata;GRM155R61A334KE15D;CAP CER 0.33UF 10V 10% X5R 0402;;;;;
|
|
||||||
C98;330nF;Murata;GRM155R61A334KE15D;CAP CER 0.33UF 10V 10% X5R 0402;;;;;
|
|
||||||
C99;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
|
||||||
C100;330nF;Murata;GRM155R61A334KE15D;CAP CER 0.33UF 10V 10% X5R 0402;;;;;
|
|
||||||
C101;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C102;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;;;;;
|
|
||||||
C103;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C104;3pF;Murata;GRM1555C1H3R0CA01D;CAP CER 3PF 50V NP0 0402;;;;;
|
|
||||||
C105;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
|
||||||
C106;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C107;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C108;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C109;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C110;22pF;Murata;GRM1555C1H220JA01D;CAP CER 22PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C111;3pF;Murata;GRM1555C1H3R0CA01D;CAP CER 3PF 50V NP0 0402;;;;;
|
|
||||||
C112;180pF;Murata;GRM1555C1H181JA01D;CAP CER 180PF 50V 5% NP0 0402;;;;;
|
|
||||||
C113;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C114;3.3nF;Murata;GRM155R71H332KA01D;CAP CER 3300PF 50V 10% X7R 0402;;;;;
|
|
||||||
C115;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
|
||||||
C116;47pF;Murata;GRM1555C1H470JA01D;CAP CER 47PF 50V 5% NP0 0402;;;;;
|
|
||||||
C118;18pF;Murata;GRM1555C1H180JA01D;CAP CER 18PF 50V 5% NP0 0402;;;;;
|
|
||||||
C119;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C120;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C121;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C122;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C123;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C124;2.2uF;Taiyo Yuden;LMK105BJ225MV-F;CAP CER 2.2UF 10V 20% X5R 0402;;;;;
|
|
||||||
C125;33pF;Murata;GRM1555C1H330JA01D;CAP CER 33PF 50V 5% NP0 0402;;;;;
|
|
||||||
C126;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
|
||||||
C127;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
|
||||||
C128;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C129;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C130;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C131;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C132;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C133;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C134;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C135;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C136;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C137;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C138;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C139;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C140;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C141;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C142;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C143;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
|
||||||
C144;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C145;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
|
||||||
C146;10uF;Murata;GRM21BR61A106KE19L;CAP CER 10UF 10V 10% X5R 0805;;;;;
|
|
||||||
C147;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C148;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C149;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C150;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C151;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C152;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C153;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C154;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C155;DNP;DNP;;;;;;;
|
|
||||||
C156;47pF;Murata;GRM1555C1H470JA01D;CAP CER 47PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C157;18pF;Murata;GRM1555C1H180JA01D;CAP CER 18PF 50V 5% NP0 0402;;;;;
|
|
||||||
C158;18pF;Murata;GRM1555C1H180JA01D;CAP CER 18PF 50V 5% NP0 0402;;;;;
|
|
||||||
C159;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C160;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;;;;;
|
|
||||||
C161;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C162;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
|
||||||
C163;10nF;Murata;GRM155R71C103KA01D;CAP CER 10000PF 16V 10% X7R 0402;;;;;
|
|
||||||
C164;18pF;Murata;GRM1555C1H180JA01D;CAP CER 18PF 50V 5% NP0 0402;;;;;
|
|
||||||
C165;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C166;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C167;100nF;Murata;GRM155R61A104KA01D;CAP CER 0.1UF 10V 10% X5R 0402;;;;;
|
|
||||||
C168;100pF;Murata;GRM1555C1H101JA01D;CAP CER 100PF 50V 5% NP0 0402;DNP;;;;
|
|
||||||
C169;DNP;DNP;;;;;;;
|
|
||||||
C170;DNP;DNP;;;;;;;
|
|
||||||
C171;1uF;Taiyo Yuden;LMK105BJ105KV-F;CAP CER 1UF 10V 10% X5R 0402;;;;;
|
|
||||||
D1;GSG-DIODE-TVS-BI;Murata;LXES15AAA1-100;TVS DIODE ESD .05PF 15KV 0402;;;;;
|
|
||||||
D2;VAALED;Lite-On;LTST-S220KRKT;LED SUPR RED CLR RT ANG 0805;;;;;
|
|
||||||
D3;GSG-DIODE-TVS-BI;Murata;LXES15AAA1-100;TVS DIODE ESD .05PF 15KV 0402;;;;;
|
|
||||||
D4;USBLED;Lite-On;LTST-S220KGKT;LED GREEN CLEAR RT ANG 0805;;;;;
|
|
||||||
D5;RXLED;Lite-On;LTST-S220KSKT;LED YELLOW CLEAR RT ANG 0805;;;;;
|
|
||||||
D6;TXLED;Lite-On;LTST-S220KRKT;LED SUPR RED CLR RT ANG 0805;;;;;
|
|
||||||
D7;VCCLED;Lite-On;LTST-S220KGKT;LED GREEN CLEAR RT ANG 0805;;;;;
|
|
||||||
D8;1V8LED;Lite-On;LTST-S220KSKT;LED YELLOW CLEAR RT ANG 0805;;;;;
|
|
||||||
D9;GSG-DIODE-TVS-BI;Murata;LXES15AAA1-100;TVS DIODE ESD .05PF 15KV 0402;;;;;
|
|
||||||
FB1;FILTER;Murata;BLM21PG221SN1D;FERRITE CHIP 220 OHM 2000MA 0805;;;;;
|
|
||||||
FB2;FILTER;Murata;BLM21PG221SN1D;FERRITE CHIP 220 OHM 2000MA 0805;;;;;
|
|
||||||
FB3;FILTER;Murata;BLM21PG221SN1D;FERRITE CHIP 220 OHM 2000MA 0805;;;;;
|
|
||||||
J1;USB-MICRO-B;FCI;10103592-0001LF;CONN RCPT REV MICRO USB TYPE B;;;;;
|
|
||||||
J2;RF-SHIELD-FRAME;Laird;BMI-S-230-F-R;BOARD SHIELD 2INX1.5IN FRAME;DNP;;;;
|
|
||||||
J3;RF-SHIELD-COVER;Laird;BMI-S-230-C;BOARD SHIELD 2INX1.5IN COVER;DNP;;;;
|
|
||||||
J4;MOUNTING_HOLE;DNP;;;;;;;
|
|
||||||
J5;MOUNTING_HOLE;DNP;;;;;;;
|
|
||||||
J6;MOUNTING_HOLE;DNP;;;;;;;
|
|
||||||
J7;MOUNTING_HOLE;DNP;;;;;;;
|
|
||||||
J8;MOUNTING_HOLE;DNP;;;;;;;
|
|
||||||
J9;MOUNTING_HOLE;DNP;;;;;;;
|
|
||||||
J10;GND_CLIP;Harwin;S1751-46R;PC TEST POINT TIN SMD;DNP;;;;
|
|
||||||
L1;DNP;DNP;;;;;;;
|
|
||||||
L2;10uH;Taiyo Yuden;BRL1608T100M;INDUCTR 10UH 220MA 20% 0603 SMD;;;;;
|
|
||||||
L3;10uH;Taiyo Yuden;BRL1608T100M;INDUCTR 10UH 220MA 20% 0603 SMD;;;;;
|
|
||||||
L4;DNP;DNP;;;;;;;
|
|
||||||
L5;10uH;Taiyo Yuden;BRL1608T100M;INDUCTR 10UH 220MA 20% 0603 SMD;;;;;
|
|
||||||
L6;DNP;DNP;;;;;;;
|
|
||||||
L7;6.2nH;Taiyo Yuden;HK10056N2S-T;INDUCTOR HIFREQ 6.2+/-0.3NH 0402;;;;;
|
|
||||||
L8;DNP;DNP;;;;;;;
|
|
||||||
L9;DNP;DNP;;;;;;;
|
|
||||||
L10;4u7;Taiyo Yuden;NRG4026T4R7M;INDUCTOR 4.7UH 1.6A 20% SMD;;;;;
|
|
||||||
L11;4u7;Taiyo Yuden;NRG4026T4R7M;INDUCTOR 4.7UH 1.6A 20% SMD;;;;;
|
|
||||||
L12;10uH;Taiyo Yuden;BRL1608T100M;INDUCTR 10UH 220MA 20% 0603 SMD;;;;;
|
|
||||||
L13;10uH;Taiyo Yuden;BRL1608T100M;INDUCTR 10UH 220MA 20% 0603 SMD;;;;;
|
|
||||||
P1;1V8;DNP;;;;;;;
|
|
||||||
P2;CLKOUT;Molex;73251-2121;CONN SMA JACK 50 OHM EDGE MNT W/JAM NUT & LOCK WASHER;;;;;
|
|
||||||
P3;GND;DNP;;;;;;;
|
|
||||||
P4;ANTENNA;Molex;73251-2121;CONN SMA JACK 50 OHM EDGE MNT W/JAM NUT & LOCK WASHER;;;;;
|
|
||||||
P5;LEDS;DNP;;;;;;;
|
|
||||||
P6;GPO4;DNP;;;;;;;
|
|
||||||
P7;GPO2;DNP;;;;;;;
|
|
||||||
P8;VCC;DNP;;;;;;;
|
|
||||||
P9;BASEBAND;Sullins;PPPC082LFBN-RC;CONN HEADER FMAL 16PS.1" DL GOLD;;;;;
|
|
||||||
P13;GPO1;DNP;;;;;;;
|
|
||||||
P14;XCVR_CLKOUT;DNP;;;;;;;
|
|
||||||
P15;INTR;DNP;;;;;;;
|
|
||||||
P16;CLKIN;Molex;73251-2121;CONN SMA JACK 50 OHM EDGE MNT W/JAM NUT & LOCK WASHER;;;;;
|
|
||||||
P17;GPO6;DNP;;;;;;;
|
|
||||||
P18;OEB;DNP;;;;;;;
|
|
||||||
P19;GPO3;DNP;;;;;;;
|
|
||||||
P20;GPIO;Sullins;PPPC112LFBN-RC;CONN HEADER FMAL 22PS.1" DL GOLD;;;;;
|
|
||||||
P21;REF_IN;DNP;;;;;;;
|
|
||||||
P22;I2S;Sullins;PPPC132LFBN-RC;CONN HEADER FMAL 26PS.1" DL GOLD;;;;;
|
|
||||||
P23;DBGEN;DNP;;;;;;;
|
|
||||||
P24;TRST;DNP;;;;;;;
|
|
||||||
P25;LPC_ISP;DNP;;;;;;;
|
|
||||||
P26;LPC_JTAG;Sullins;GRPB052VWVN-RC;CONN HEADER .050" 10PS DL PCB AU;DNP;;;;
|
|
||||||
P27;MIXER_SDATA;DNP;;;;;;;
|
|
||||||
P28;SD;Sullins;PPPC112LFBN-RC;CONN HEADER FMAL 22PS.1" DL GOLD;;;;;
|
|
||||||
P29;CPLD_JTAG;DNP;;;;;;;
|
|
||||||
P30;BANK2_AUX;DNP;;;;;;;
|
|
||||||
P31;MIXER_SCLK;DNP;;;;;;;
|
|
||||||
P32;MIXER_ENX;DNP;;;;;;;
|
|
||||||
P33;MIXER_RESETX;DNP;;;;;;;
|
|
||||||
P34;MIX_BYPASS;DNP;;;;;;;
|
|
||||||
P35;!MIX_BYPASS;DNP;;;;;;;
|
|
||||||
P36;VAA;DNP;;;;;;;
|
|
||||||
P37;SCL;DNP;;;;;;;
|
|
||||||
P38;SDA;DNP;;;;;;;
|
|
||||||
P39;SSP1_SCK;DNP;;;;;;;
|
|
||||||
P40;SSP1_MOSI;DNP;;;;;;;
|
|
||||||
P41;SSP1_MISO;DNP;;;;;;;
|
|
||||||
P42;TX;DNP;;;;;;;
|
|
||||||
P43;RX;DNP;;;;;;;
|
|
||||||
P44;HP;DNP;;;;;;;
|
|
||||||
P45;LP;DNP;;;;;;;
|
|
||||||
P46;TX_MIX_BP;DNP;;;;;;;
|
|
||||||
P47;RX_MIX_BP;DNP;;;;;;;
|
|
||||||
P48;TX_AMP;DNP;;;;;;;
|
|
||||||
P49;RX_AMP;DNP;;;;;;;
|
|
||||||
P50;AMP_BYPASS;DNP;;;;;;;
|
|
||||||
P51;!TX_AMP_PWR;DNP;;;;;;;
|
|
||||||
P52;!RX_AMP_PWR;DNP;;;;;;;
|
|
||||||
P53;CS_XCVR;DNP;;;;;;;
|
|
||||||
P54;CS_AD;DNP;;;;;;;
|
|
||||||
P55;TXENABLE;DNP;;;;;;;
|
|
||||||
P56;RXENABLE;DNP;;;;;;;
|
|
||||||
P57;XTAL2;DNP;;;;;;;
|
|
||||||
P58;GCK1;DNP;;;;;;;
|
|
||||||
P59;GCK2;DNP;;;;;;;
|
|
||||||
P60;SGPIO_CLK;DNP;;;;;;;
|
|
||||||
P61;DA0;DNP;;;;;;;
|
|
||||||
P62;DA7;DNP;;;;;;;
|
|
||||||
P63;DD0;DNP;;;;;;;
|
|
||||||
P64;DD9;DNP;;;;;;;
|
|
||||||
P65;DA4;DNP;;;;;;;
|
|
||||||
P66;DD5;DNP;;;;;;;
|
|
||||||
P67;RSSI;DNP;;;;;;;
|
|
||||||
P68;SPIFI_CS;DNP;;;;;;;
|
|
||||||
P69;VREGMODE;DNP;;;;;;;
|
|
||||||
P70;EN_1V8;DNP;;;;;;;
|
|
||||||
P71;ID;DNP;;;;;;;
|
|
||||||
P72;GP_CLKIN;DNP;;;;;;;
|
|
||||||
P73;P1_2;DNP;;;;;;;
|
|
||||||
P74;P1_1;DNP;;;;;;;
|
|
||||||
P75;GP_CLKIN;DNP;;;;;;;
|
|
||||||
P76;GP_CLKIN;DNP;;;;;;;
|
|
||||||
P77;GP_CLKIN;DNP;;;;;;;
|
|
||||||
P78;GP_CLKIN;DNP;;;;;;;
|
|
||||||
P79;GP_CLKIN;DNP;;;;;;;
|
|
||||||
P80;SHIELD;DNP;;;;;;;
|
|
||||||
P81;SPIFI_SIO2;DNP;;;;;;;
|
|
||||||
P82;SPIFI_SIO3;DNP;;;;;;;
|
|
||||||
P83;GND;DNP;;;;;;;
|
|
||||||
P84;GND;DNP;;;;;;;
|
|
||||||
P85;GND;DNP;;;;;;;
|
|
||||||
P86;GND;DNP;;;;;;;
|
|
||||||
P87;GND;DNP;;;;;;;
|
|
||||||
P88;GND;DNP;;;;;;;
|
|
||||||
P89;GND;DNP;;;;;;;
|
|
||||||
P90;GND;DNP;;;;;;;
|
|
||||||
P91;GND;DNP;;;;;;;
|
|
||||||
P92;GND;DNP;;;;;;;
|
|
||||||
Q1;MOSFET_P;Fairchild;BSS84;MOSFET P-CH 50V 130MA SOT-23;;;;;
|
|
||||||
Q2;MOSFET_P;Fairchild;BSS84;MOSFET P-CH 50V 130MA SOT-23;;;;;
|
|
||||||
Q3;MOSFET_P;Diodes Inc.;DMP2305U-7;MOSFET P-CH 20V 4.2A SOT-23;;;;;
|
|
||||||
Q4;MOSFET_P;Fairchild;BSS84;MOSFET P-CH 50V 130MA SOT-23;;;;;
|
|
||||||
Q5;MOSFET_P;Alpha and Omega;AO3407A;MOSFET P-CH -30V -4.3A SOT23;;;;;
|
|
||||||
R1;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
|
||||||
R2;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
|
||||||
R3;22k;Panasonic;ERJ-2GEJ223X;RES 22K OHM 1/10W 5% 0402 SMD;;;;;
|
|
||||||
R4;51k;Stackpole;RMCF0402FT51K0;RES TF 51K OHM 1% 0.0625W 0402;;;;;
|
|
||||||
R5;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R6;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R7;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R8;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
|
||||||
R9;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
|
||||||
R10;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
|
||||||
R11;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R12;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R13;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
|
||||||
R14;4k7;Stackpole;RMCF0402FT4K70;RES 4.7K OHM 1/16W 1% 0402;;;;;
|
|
||||||
R15;4k7;Stackpole;RMCF0402FT4K70;RES 4.7K OHM 1/16W 1% 0402;;;;;
|
|
||||||
R16;4k7;Stackpole;RMCF0402FT4K70;RES 4.7K OHM 1/16W 1% 0402;;;;;
|
|
||||||
R17;4k7;Stackpole;RMCF0402FT4K70;RES 4.7K OHM 1/16W 1% 0402;;;;;
|
|
||||||
R18;1k8;Stackpole;RMCF0402JT1K80;RES TF 1.8K OHM 5% 1/16W 0402;;;;;
|
|
||||||
R19;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R20;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
|
||||||
R21;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
|
||||||
R22;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
|
||||||
R23;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
|
||||||
R24;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R25;475;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
|
||||||
R26;475;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
|
||||||
R27;1k8;Stackpole;RMCF0402JT1K80;RES TF 1.8K OHM 5% 1/16W 0402;;;;;
|
|
||||||
R28;1k8;Stackpole;RMCF0402JT1K80;RES TF 1.8K OHM 5% 1/16W 0402;;;;;
|
|
||||||
R29;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R30;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R31;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R32;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R33;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R34;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R35;DNP;DNP;;;;;;;
|
|
||||||
R36;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R37;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R41;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R46;162k;Stackpole;RMCF0402FT162K;RES TF 1/16W 162K OHM 1% 0402;;;;;
|
|
||||||
R47;330k;Stackpole;RMCF0402FT330K;RES TF 1/16W 330K OHM 1% 0402;;;;;
|
|
||||||
R48;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R49;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R51;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R52;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R54;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R55;162k;Stackpole;RMCF0402FT162K;RES TF 1/16W 162K OHM 1% 0402;;;;;
|
|
||||||
R56;715k;Stackpole;RMCF0402FT715K;RES TF 1/16W 715K OHM 1% 0402;;;;;
|
|
||||||
R57;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
|
||||||
R58;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
|
||||||
R59;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R62;0;Stackpole;RMCF0402ZT0R00;RES 0.0 OHM 1/16W 0402 SMD;;;;;
|
|
||||||
R63;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R64;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R65;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R66;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R67;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R68;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R69;12k;Rohm;MCR01MRTF1202;RES 12.0K OHM 1/16W 1% 0402 SMD;;;;;
|
|
||||||
R72;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
|
||||||
R73;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
|
||||||
R74;1k8;Stackpole;RMCF0402JT1K80;RES TF 1.8K OHM 5% 1/16W 0402;;;;;
|
|
||||||
R75;470;Stackpole;RMCF0402JT470R;RES TF 1/16W 470 OHM 5% 0402;;;;;
|
|
||||||
R76;1k;Stackpole;RMCF0402FT1K00;RES 1K OHM 1/16W 1% 0402;;;;;
|
|
||||||
R77;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R78;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R79;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R80;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R81;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R85;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R86;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R87;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R88;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R89;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R90;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R91;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R93;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R94;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R96;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R98;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R99;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R100;39;Stackpole;RMCF0402JT39R0;RES 39 OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R104;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
R105;10k;Stackpole;RMCF0402JT10K0;RES 10K OHM 1/16W 5% 0402 SMD;;;;;
|
|
||||||
SW1;DFU;TE Connectivity;FSMRA3JH;SWITCH TACTILE SPST-NO 0.05A 12V;;;;;
|
|
||||||
SW2;RESET;TE Connectivity;FSMRA3JH;SWITCH TACTILE SPST-NO 0.05A 12V;;;;;
|
|
||||||
T1;MIX_IN_BALUN;Anaren;B0310J50100AHF;Ultra Low Profile 0805 Balun 50 to 100 ohm Balanced;;;;;
|
|
||||||
T2;MIX_OUT_BALUN;Anaren;B0310J50100AHF;Ultra Low Profile 0805 Balun 50 to 100 ohm Balanced;;;;;
|
|
||||||
T3;RX_BALUN;Johanson Technology;2500BL14M100T;BALUN CERAMIC CHIP WIMAX 2.5GHZ;;;;;
|
|
||||||
T4;TX_BALUN;Johanson Technology;2500BL14M100T;BALUN CERAMIC CHIP WIMAX 2.5GHZ;;;;;
|
|
||||||
U1;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
|
||||||
U2;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
|
||||||
U3;RX_LOWPASS_FILTER;AVX;LP0603A1880ANTR;FILTER LOW PASS 1880MHZ 0603 SMD;;;;;
|
|
||||||
U4;RFFC5072;RFMD;RFFC5072TR7;WIDEBAND SYNTHESIZER/VCO WITH INTEGRATED 6GHz MIXER;;;;;
|
|
||||||
U5;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
|
||||||
U6;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
|
||||||
U7;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
|
||||||
U8;RX_HIGHPASS_FILTER;TDK;DEA162400HT-8004B1;FILTER HIGHPASS WLAN&BLUETOOTH;;;;;
|
|
||||||
U9;SKY13317;Skyworks;SKY13317-373LF;20 MHz-6.0 GHz pHEMT GaAs SP3T Switch;;;;;
|
|
||||||
U10;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
|
||||||
U11;SKY13350;Skyworks;SKY13350-385LF;0.01-6.0 GHz GaAs SPDT Switch;;;;;
|
|
||||||
U12;SKY13317;Skyworks;SKY13317-373LF;20 MHz-6.0 GHz pHEMT GaAs SP3T Switch;;;;;
|
|
||||||
U13;MGA-81563;Avago;MGA-81563-TR1G;0.1-6 GHz 3 V, 14 dBm Amplifier;;;;;
|
|
||||||
U14;SKY13317;Skyworks;SKY13317-373LF;20 MHz-6.0 GHz pHEMT GaAs SP3T Switch;;;;;
|
|
||||||
U15;LXES1TBCC2-004;Murata;LXES1TBCC2-004;ESD Suppressors 0.55pF 6V 2ch;;;;;
|
|
||||||
U17;MAX2837;Maxim;MAX2837ETM+;IC TXRX 2.3GHZ-2.7GHZ 48TQFN;;;;;
|
|
||||||
U18;MAX5864;Maxim;MAX5864ETM+;IC ANLG FRONT END 22MSPS 48-TQFN;;;;;
|
|
||||||
U19;SI5351C;Silicon Laboratories Inc;SI5351C-B-GM;IC CLK GENERATOR 160MHZ 20QFN;;;;;
|
|
||||||
U20;W25Q80BV;Winbond;W25Q80BVSSIG;IC FLASH 8MBIT 8SOIC;;;;;
|
|
||||||
U21;TPS62410;Texas Instruments;TPS62410DRCR;IC BUCK SYNC DUAL ADJ 0.8A 10SON;;;;;
|
|
||||||
U23;LPC4320FBD144;NXP;LPC4320FBD144,551;IC MCU 32BIT 144LQFP;;;;;
|
|
||||||
U24;GSG-XC2C64A-7VQG100C;Xilinx;XC2C64A-7VQG100C;IC CR-II CPLD 64MCELL 100-VQFP;;;;;
|
|
||||||
U25;MGA-81563;Avago;MGA-81563-TR1G;0.1-6 GHz 3 V, 14 dBm Amplifier;;;;;
|
|
||||||
X1;GSG-XTAL4PIN;AVX;CX3225GB25000D0HEQZ1;CRYSTAL 25.000MHZ 8PF SMD;;;;;
|
|
||||||
X2;MCU_XTAL;TXC;7V-12.000MAAE-T;CRYSTAL 12.000 MHZ 12PF SMD;;;;;
|
|
||||||
X3;RTC_XTAL;Abracon;AB26TRQ-32.768KHZ-T;CRYSTAL 32.768KHZ 12.5PF SMD;;;;;
|
|
||||||
|
Can't render this file because it contains an unexpected character in line 215 and column 59.
|
@ -130,13 +130,17 @@ static usb_request_status_t usb_send_descriptor(
|
|||||||
static usb_request_status_t usb_send_descriptor_string(
|
static usb_request_status_t usb_send_descriptor_string(
|
||||||
usb_endpoint_t* const endpoint
|
usb_endpoint_t* const endpoint
|
||||||
) {
|
) {
|
||||||
|
if ((endpoint->setup.value_l == 0xee) &&
|
||||||
|
(endpoint->device->wcid_string_descriptor != NULL)) { /* MS WCID string */
|
||||||
|
return usb_send_descriptor(endpoint, endpoint->device->wcid_string_descriptor);
|
||||||
|
} else {
|
||||||
uint_fast8_t index = endpoint->setup.value_l;
|
uint_fast8_t index = endpoint->setup.value_l;
|
||||||
for( uint_fast8_t i=0; endpoint->device->descriptor_strings[i] != 0; i++ ) {
|
for( uint_fast8_t i=0; endpoint->device->descriptor_strings[i] != 0; i++ ) {
|
||||||
if( i == index ) {
|
if( i == index ) {
|
||||||
return usb_send_descriptor(endpoint, endpoint->device->descriptor_strings[i]);
|
return usb_send_descriptor(endpoint, endpoint->device->descriptor_strings[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return USB_REQUEST_STATUS_STALL;
|
return USB_REQUEST_STATUS_STALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,6 +216,26 @@ static usb_request_status_t usb_standard_request_get_descriptor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
usb_request_status_t usb_vendor_request_read_wcid(
|
||||||
|
usb_endpoint_t* const endpoint,
|
||||||
|
const usb_transfer_stage_t stage
|
||||||
|
) {
|
||||||
|
if( stage == USB_TRANSFER_STAGE_SETUP ) {
|
||||||
|
if ((endpoint->setup.index == 0x04) &&
|
||||||
|
(endpoint->device->wcid_feature_descriptor != NULL)) {
|
||||||
|
usb_send_descriptor(endpoint, endpoint->device->wcid_feature_descriptor);
|
||||||
|
return USB_REQUEST_STATUS_OK;
|
||||||
|
}
|
||||||
|
if ((endpoint->setup.index == 0x05) &&
|
||||||
|
(endpoint->device->wcid_extended_properties_descriptor != NULL)) {
|
||||||
|
usb_send_descriptor(endpoint, endpoint->device->wcid_extended_properties_descriptor);
|
||||||
|
return USB_REQUEST_STATUS_OK;
|
||||||
|
}
|
||||||
|
return USB_REQUEST_STATUS_STALL;
|
||||||
|
}
|
||||||
|
return USB_REQUEST_STATUS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
static usb_request_status_t usb_standard_request_set_address_setup(
|
static usb_request_status_t usb_standard_request_set_address_setup(
|
||||||
|
@ -29,6 +29,11 @@ void usb_set_configuration_changed_cb(
|
|||||||
void (*callback)(usb_device_t* const)
|
void (*callback)(usb_device_t* const)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
usb_request_status_t usb_vendor_request_read_wcid(
|
||||||
|
usb_endpoint_t* const endpoint,
|
||||||
|
const usb_transfer_stage_t stage
|
||||||
|
);
|
||||||
|
|
||||||
usb_request_status_t usb_standard_request(
|
usb_request_status_t usb_standard_request(
|
||||||
usb_endpoint_t* const endpoint,
|
usb_endpoint_t* const endpoint,
|
||||||
const usb_transfer_stage_t stage
|
const usb_transfer_stage_t stage
|
||||||
|
@ -127,6 +127,9 @@ typedef struct {
|
|||||||
const uint8_t* const qualifier_descriptor;
|
const uint8_t* const qualifier_descriptor;
|
||||||
usb_configuration_t* (*configurations)[];
|
usb_configuration_t* (*configurations)[];
|
||||||
const usb_configuration_t* configuration;
|
const usb_configuration_t* configuration;
|
||||||
|
uint8_t* wcid_string_descriptor;
|
||||||
|
uint8_t* wcid_feature_descriptor;
|
||||||
|
uint8_t* wcid_extended_properties_descriptor;
|
||||||
} usb_device_t;
|
} usb_device_t;
|
||||||
|
|
||||||
typedef struct usb_endpoint_t usb_endpoint_t;
|
typedef struct usb_endpoint_t usb_endpoint_t;
|
||||||
|
@ -139,6 +139,7 @@ static const usb_request_handler_fn vendor_request_handler[] = {
|
|||||||
NULL,
|
NULL,
|
||||||
#endif
|
#endif
|
||||||
usb_vendor_request_set_freq_explicit,
|
usb_vendor_request_set_freq_explicit,
|
||||||
|
usb_vendor_request_read_wcid, // USB_WCID_VENDOR_REQ
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint32_t vendor_request_handler_count =
|
static const uint32_t vendor_request_handler_count =
|
||||||
@ -176,11 +177,6 @@ void usb_configuration_changed(
|
|||||||
// transceiver configuration
|
// transceiver configuration
|
||||||
cpu_clock_pll1_max_speed();
|
cpu_clock_pll1_max_speed();
|
||||||
led_on(LED1);
|
led_on(LED1);
|
||||||
} else if( device->configuration->number == 2 ) {
|
|
||||||
// CPLD update configuration
|
|
||||||
cpu_clock_pll1_max_speed();
|
|
||||||
usb_endpoint_init(&usb_endpoint_bulk_out);
|
|
||||||
start_cpld_update = true;
|
|
||||||
} else {
|
} else {
|
||||||
/* Configuration number equal 0 means usb bus reset. */
|
/* Configuration number equal 0 means usb bus reset. */
|
||||||
cpu_clock_pll1_low_speed();
|
cpu_clock_pll1_low_speed();
|
||||||
|
@ -55,11 +55,11 @@ uint8_t usb_descriptor_device[] = {
|
|||||||
USB_MAX_PACKET0, // bMaxPacketSize0
|
USB_MAX_PACKET0, // bMaxPacketSize0
|
||||||
USB_WORD(USB_VENDOR_ID), // idVendor
|
USB_WORD(USB_VENDOR_ID), // idVendor
|
||||||
USB_WORD(USB_PRODUCT_ID), // idProduct
|
USB_WORD(USB_PRODUCT_ID), // idProduct
|
||||||
USB_WORD(0x0100), // bcdDevice
|
USB_WORD(0x0101), // bcdDevice
|
||||||
0x01, // iManufacturer
|
0x01, // iManufacturer
|
||||||
0x02, // iProduct
|
0x02, // iProduct
|
||||||
0x05, // iSerialNumber
|
0x04, // iSerialNumber
|
||||||
0x02 // bNumConfigurations
|
0x01 // bNumConfigurations
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t usb_descriptor_device_qualifier[] = {
|
uint8_t usb_descriptor_device_qualifier[] = {
|
||||||
@ -70,7 +70,7 @@ uint8_t usb_descriptor_device_qualifier[] = {
|
|||||||
0x00, // bDeviceSubClass
|
0x00, // bDeviceSubClass
|
||||||
0x00, // bDeviceProtocol
|
0x00, // bDeviceProtocol
|
||||||
64, // bMaxPacketSize0
|
64, // bMaxPacketSize0
|
||||||
0x02, // bNumOtherSpeedConfigurations
|
0x01, // bNumOtherSpeedConfigurations
|
||||||
0x00 // bReserved
|
0x00 // bReserved
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -148,79 +148,6 @@ uint8_t usb_descriptor_configuration_high_speed[] = {
|
|||||||
0, // TERMINATOR
|
0, // TERMINATOR
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t usb_descriptor_configuration_cpld_update_full_speed[] = {
|
|
||||||
9, // bLength
|
|
||||||
USB_DESCRIPTOR_TYPE_CONFIGURATION, // bDescriptorType
|
|
||||||
USB_WORD(32), // wTotalLength
|
|
||||||
0x01, // bNumInterfaces
|
|
||||||
0x02, // bConfigurationValue
|
|
||||||
0x04, // iConfiguration
|
|
||||||
0x80, // bmAttributes: USB-powered
|
|
||||||
250, // bMaxPower: 500mA
|
|
||||||
|
|
||||||
9, // bLength
|
|
||||||
USB_DESCRIPTOR_TYPE_INTERFACE, // bDescriptorType
|
|
||||||
0x00, // bInterfaceNumber
|
|
||||||
0x00, // bAlternateSetting
|
|
||||||
0x02, // bNumEndpoints
|
|
||||||
0xFF, // bInterfaceClass: vendor-specific
|
|
||||||
0xFF, // bInterfaceSubClass
|
|
||||||
0xFF, // bInterfaceProtocol: vendor-specific
|
|
||||||
0x00, // iInterface
|
|
||||||
|
|
||||||
7, // bLength
|
|
||||||
USB_DESCRIPTOR_TYPE_ENDPOINT, // bDescriptorType
|
|
||||||
USB_BULK_IN_EP_ADDR, // bEndpointAddress
|
|
||||||
0x02, // bmAttributes: BULK
|
|
||||||
USB_WORD(USB_MAX_PACKET_BULK_FS), // wMaxPacketSize
|
|
||||||
0x00, // bInterval: no NAK
|
|
||||||
|
|
||||||
7, // bLength
|
|
||||||
USB_DESCRIPTOR_TYPE_ENDPOINT, // bDescriptorType
|
|
||||||
USB_BULK_OUT_EP_ADDR, // bEndpointAddress
|
|
||||||
0x02, // bmAttributes: BULK
|
|
||||||
USB_WORD(USB_MAX_PACKET_BULK_FS), // wMaxPacketSize
|
|
||||||
0x00, // bInterval: no NAK
|
|
||||||
|
|
||||||
0, // TERMINATOR
|
|
||||||
};
|
|
||||||
|
|
||||||
uint8_t usb_descriptor_configuration_cpld_update_high_speed[] = {
|
|
||||||
9, // bLength
|
|
||||||
USB_DESCRIPTOR_TYPE_CONFIGURATION, // bDescriptorType
|
|
||||||
USB_WORD(32), // wTotalLength
|
|
||||||
0x01, // bNumInterfaces
|
|
||||||
0x02, // bConfigurationValue
|
|
||||||
0x04, // iConfiguration
|
|
||||||
0x80, // bmAttributes: USB-powered
|
|
||||||
250, // bMaxPower: 500mA
|
|
||||||
|
|
||||||
9, // bLength
|
|
||||||
USB_DESCRIPTOR_TYPE_INTERFACE, // bDescriptorType
|
|
||||||
0x00, // bInterfaceNumber
|
|
||||||
0x00, // bAlternateSetting
|
|
||||||
0x02, // bNumEndpoints
|
|
||||||
0xFF, // bInterfaceClass: vendor-specific
|
|
||||||
0xFF, // bInterfaceSubClass
|
|
||||||
0xFF, // bInterfaceProtocol: vendor-specific
|
|
||||||
0x00, // iInterface
|
|
||||||
|
|
||||||
7, // bLength
|
|
||||||
USB_DESCRIPTOR_TYPE_ENDPOINT, // bDescriptorType
|
|
||||||
USB_BULK_IN_EP_ADDR, // bEndpointAddress
|
|
||||||
0x02, // bmAttributes: BULK
|
|
||||||
USB_WORD(USB_MAX_PACKET_BULK_HS), // wMaxPacketSize
|
|
||||||
0x00, // bInterval: no NAK
|
|
||||||
|
|
||||||
7, // bLength
|
|
||||||
USB_DESCRIPTOR_TYPE_ENDPOINT, // bDescriptorType
|
|
||||||
USB_BULK_OUT_EP_ADDR, // bEndpointAddress
|
|
||||||
0x02, // bmAttributes: BULK
|
|
||||||
USB_WORD(USB_MAX_PACKET_BULK_HS), // wMaxPacketSize
|
|
||||||
0x00, // bInterval: no NAK
|
|
||||||
|
|
||||||
0, // TERMINATOR
|
|
||||||
};
|
|
||||||
|
|
||||||
uint8_t usb_descriptor_string_languages[] = {
|
uint8_t usb_descriptor_string_languages[] = {
|
||||||
0x04, // bLength
|
0x04, // bLength
|
||||||
@ -298,7 +225,7 @@ uint8_t usb_descriptor_string_product[] = {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t usb_descriptor_string_config1_description[] = {
|
uint8_t usb_descriptor_string_config_description[] = {
|
||||||
24, // bLength
|
24, // bLength
|
||||||
USB_DESCRIPTOR_TYPE_STRING, // bDescriptorType
|
USB_DESCRIPTOR_TYPE_STRING, // bDescriptorType
|
||||||
'T', 0x00,
|
'T', 0x00,
|
||||||
@ -314,21 +241,6 @@ uint8_t usb_descriptor_string_config1_description[] = {
|
|||||||
'r', 0x00,
|
'r', 0x00,
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t usb_descriptor_string_config2_description[] = {
|
|
||||||
24, // bLength
|
|
||||||
USB_DESCRIPTOR_TYPE_STRING, // bDescriptorType
|
|
||||||
'C', 0x00,
|
|
||||||
'P', 0x00,
|
|
||||||
'L', 0x00,
|
|
||||||
'D', 0x00,
|
|
||||||
' ', 0x00,
|
|
||||||
'u', 0x00,
|
|
||||||
'p', 0x00,
|
|
||||||
'd', 0x00,
|
|
||||||
'a', 0x00,
|
|
||||||
't', 0x00,
|
|
||||||
'e', 0x00,
|
|
||||||
};
|
|
||||||
|
|
||||||
uint8_t usb_descriptor_string_serial_number[USB_DESCRIPTOR_STRING_SERIAL_BUF_LEN];
|
uint8_t usb_descriptor_string_serial_number[USB_DESCRIPTOR_STRING_SERIAL_BUF_LEN];
|
||||||
|
|
||||||
@ -336,8 +248,34 @@ uint8_t* usb_descriptor_strings[] = {
|
|||||||
usb_descriptor_string_languages,
|
usb_descriptor_string_languages,
|
||||||
usb_descriptor_string_manufacturer,
|
usb_descriptor_string_manufacturer,
|
||||||
usb_descriptor_string_product,
|
usb_descriptor_string_product,
|
||||||
usb_descriptor_string_config1_description,
|
usb_descriptor_string_config_description,
|
||||||
usb_descriptor_string_config2_description,
|
|
||||||
usb_descriptor_string_serial_number,
|
usb_descriptor_string_serial_number,
|
||||||
0, // TERMINATOR
|
0, // TERMINATOR
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uint8_t wcid_string_descriptor[] = {
|
||||||
|
18, // bLength
|
||||||
|
USB_DESCRIPTOR_TYPE_STRING, // bDescriptorType
|
||||||
|
'M', 0x00,
|
||||||
|
'S', 0x00,
|
||||||
|
'F', 0x00,
|
||||||
|
'T', 0x00,
|
||||||
|
'1', 0x00,
|
||||||
|
'0', 0x00,
|
||||||
|
'0', 0x00,
|
||||||
|
USB_WCID_VENDOR_REQ, // vendor request code for further descriptor
|
||||||
|
0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
uint8_t wcid_feature_descriptor[] = {
|
||||||
|
0x28, 0x00, 0x00, 0x00, // bLength
|
||||||
|
USB_WORD(0x0100), // WCID version
|
||||||
|
USB_WORD(0x0004), // WICD descriptor index
|
||||||
|
0x01, //bNumSections
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00, //Reserved
|
||||||
|
0x00, //bInterfaceNumber
|
||||||
|
0x01, //Reserved
|
||||||
|
'W', 'I', 'N', 'U', 'S', 'B', 0x00,0x00, //Compatible ID, padded with zeros
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //Sub-compatible ID
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00 //Reserved
|
||||||
|
};
|
||||||
|
@ -25,8 +25,6 @@ extern uint8_t usb_descriptor_device[];
|
|||||||
extern uint8_t usb_descriptor_device_qualifier[];
|
extern uint8_t usb_descriptor_device_qualifier[];
|
||||||
extern uint8_t usb_descriptor_configuration_full_speed[];
|
extern uint8_t usb_descriptor_configuration_full_speed[];
|
||||||
extern uint8_t usb_descriptor_configuration_high_speed[];
|
extern uint8_t usb_descriptor_configuration_high_speed[];
|
||||||
extern uint8_t usb_descriptor_configuration_cpld_update_full_speed[];
|
|
||||||
extern uint8_t usb_descriptor_configuration_cpld_update_high_speed[];
|
|
||||||
extern uint8_t usb_descriptor_string_languages[];
|
extern uint8_t usb_descriptor_string_languages[];
|
||||||
extern uint8_t usb_descriptor_string_manufacturer[];
|
extern uint8_t usb_descriptor_string_manufacturer[];
|
||||||
extern uint8_t usb_descriptor_string_product[];
|
extern uint8_t usb_descriptor_string_product[];
|
||||||
@ -36,3 +34,7 @@ extern uint8_t usb_descriptor_string_product[];
|
|||||||
extern uint8_t usb_descriptor_string_serial_number[];
|
extern uint8_t usb_descriptor_string_serial_number[];
|
||||||
|
|
||||||
extern uint8_t* usb_descriptor_strings[];
|
extern uint8_t* usb_descriptor_strings[];
|
||||||
|
|
||||||
|
#define USB_WCID_VENDOR_REQ 0x19
|
||||||
|
extern uint8_t wcid_string_descriptor[];
|
||||||
|
extern uint8_t wcid_feature_descriptor[];
|
||||||
|
@ -38,23 +38,10 @@ usb_configuration_t usb_configuration_full_speed = {
|
|||||||
.descriptor = usb_descriptor_configuration_full_speed,
|
.descriptor = usb_descriptor_configuration_full_speed,
|
||||||
};
|
};
|
||||||
|
|
||||||
usb_configuration_t usb_configuration_cpld_update_full_speed = {
|
|
||||||
.number = 2,
|
|
||||||
.speed = USB_SPEED_FULL,
|
|
||||||
.descriptor = usb_descriptor_configuration_cpld_update_full_speed,
|
|
||||||
};
|
|
||||||
|
|
||||||
usb_configuration_t usb_configuration_cpld_update_high_speed = {
|
|
||||||
.number = 2,
|
|
||||||
.speed = USB_SPEED_HIGH,
|
|
||||||
.descriptor = usb_descriptor_configuration_cpld_update_high_speed,
|
|
||||||
};
|
|
||||||
|
|
||||||
usb_configuration_t* usb_configurations[] = {
|
usb_configuration_t* usb_configurations[] = {
|
||||||
&usb_configuration_high_speed,
|
&usb_configuration_high_speed,
|
||||||
&usb_configuration_full_speed,
|
&usb_configuration_full_speed,
|
||||||
&usb_configuration_cpld_update_full_speed,
|
|
||||||
&usb_configuration_cpld_update_high_speed,
|
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -64,4 +51,6 @@ usb_device_t usb_device = {
|
|||||||
.qualifier_descriptor = usb_descriptor_device_qualifier,
|
.qualifier_descriptor = usb_descriptor_device_qualifier,
|
||||||
.configurations = &usb_configurations,
|
.configurations = &usb_configurations,
|
||||||
.configuration = 0,
|
.configuration = 0,
|
||||||
|
.wcid_string_descriptor = wcid_string_descriptor,
|
||||||
|
.wcid_feature_descriptor = wcid_feature_descriptor,
|
||||||
};
|
};
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
* Boston, MA 02110-1301, USA.
|
* Boston, MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <hackrf.h>
|
#include <hackrf.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -287,7 +288,7 @@ char* u64toa(uint64_t val, t_u64toa* str)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
volatile bool do_exit = false;
|
static volatile bool do_exit = false;
|
||||||
|
|
||||||
FILE* fd = NULL;
|
FILE* fd = NULL;
|
||||||
volatile uint32_t byte_count = 0;
|
volatile uint32_t byte_count = 0;
|
||||||
@ -332,6 +333,9 @@ uint32_t baseband_filter_bw_hz = 0;
|
|||||||
|
|
||||||
bool repeat = false;
|
bool repeat = false;
|
||||||
|
|
||||||
|
bool crystal_correct = false;
|
||||||
|
uint32_t crystal_correct_ppm ;
|
||||||
|
|
||||||
int rx_callback(hackrf_transfer* transfer) {
|
int rx_callback(hackrf_transfer* transfer) {
|
||||||
ssize_t bytes_to_write;
|
ssize_t bytes_to_write;
|
||||||
ssize_t bytes_written;
|
ssize_t bytes_written;
|
||||||
@ -426,8 +430,8 @@ int tx_callback(hackrf_transfer* transfer) {
|
|||||||
static void usage() {
|
static void usage() {
|
||||||
printf("Usage:\n");
|
printf("Usage:\n");
|
||||||
printf("\t[-d serial_number] # Serial number of desired HackRF.\n");
|
printf("\t[-d serial_number] # Serial number of desired HackRF.\n");
|
||||||
printf("\t-r <filename> # Receive data into file.\n");
|
printf("\t-r <filename> # Receive data into file (use '-' for stdout).\n");
|
||||||
printf("\t-t <filename> # Transmit data from file.\n");
|
printf("\t-t <filename> # Transmit data from file (use '-' for stdin).\n");
|
||||||
printf("\t-w # Receive data into file with WAV header and automatic name.\n");
|
printf("\t-w # Receive data into file with WAV header and automatic name.\n");
|
||||||
printf("\t # This is for SDR# compatibility and may not work with other software.\n");
|
printf("\t # This is for SDR# compatibility and may not work with other software.\n");
|
||||||
printf("\t[-f freq_hz] # Frequency in Hz [%sMHz to %sMHz].\n",
|
printf("\t[-f freq_hz] # Frequency in Hz [%sMHz to %sMHz].\n",
|
||||||
@ -451,6 +455,7 @@ static void usage() {
|
|||||||
printf("\t[-c amplitude] # CW signal source mode, amplitude 0-127 (DC value to DAC).\n");
|
printf("\t[-c amplitude] # CW signal source mode, amplitude 0-127 (DC value to DAC).\n");
|
||||||
printf("\t[-R] # Repeat TX mode (default is off) \n");
|
printf("\t[-R] # Repeat TX mode (default is off) \n");
|
||||||
printf("\t[-b baseband_filter_bw_hz] # Set baseband filter bandwidth in Hz.\n\tPossible values: 1.75/2.5/3.5/5/5.5/6/7/8/9/10/12/14/15/20/24/28MHz, default < sample_rate_hz.\n" );
|
printf("\t[-b baseband_filter_bw_hz] # Set baseband filter bandwidth in Hz.\n\tPossible values: 1.75/2.5/3.5/5/5.5/6/7/8/9/10/12/14/15/20/24/28MHz, default < sample_rate_hz.\n" );
|
||||||
|
printf("\t[-C ppm] # Set Internal crystal clock error in ppm.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static hackrf_device* device = NULL;
|
static hackrf_device* device = NULL;
|
||||||
@ -494,7 +499,7 @@ int main(int argc, char** argv) {
|
|||||||
float time_diff;
|
float time_diff;
|
||||||
unsigned int lna_gain=8, vga_gain=20, txvga_gain=0;
|
unsigned int lna_gain=8, vga_gain=20, txvga_gain=0;
|
||||||
|
|
||||||
while( (opt = getopt(argc, argv, "wr:t:f:i:o:m:a:p:s:n:b:l:g:x:c:d:R")) != EOF )
|
while( (opt = getopt(argc, argv, "wr:t:f:i:o:m:a:p:s:n:b:l:g:x:c:d:C:R")) != EOF )
|
||||||
{
|
{
|
||||||
result = HACKRF_SUCCESS;
|
result = HACKRF_SUCCESS;
|
||||||
switch( opt )
|
switch( opt )
|
||||||
@ -610,27 +615,32 @@ int main(int argc, char** argv) {
|
|||||||
repeat = true;
|
repeat = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'C':
|
||||||
|
crystal_correct = true;
|
||||||
|
result = parse_u32(optarg, &crystal_correct_ppm);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printf("unknown argument '-%c %s'\n", opt, optarg);
|
fprintf(stderr, "unknown argument '-%c %s'\n", opt, optarg);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( result != HACKRF_SUCCESS ) {
|
if( result != HACKRF_SUCCESS ) {
|
||||||
printf("argument error: '-%c %s' %s (%d)\n", opt, optarg, hackrf_error_name(result), result);
|
fprintf(stderr, "argument error: '-%c %s' %s (%d)\n", opt, optarg, hackrf_error_name(result), result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lna_gain % 8)
|
if (lna_gain % 8)
|
||||||
printf("warning: lna_gain (-l) must be a multiple of 8\n");
|
fprintf(stderr, "warning: lna_gain (-l) must be a multiple of 8\n");
|
||||||
|
|
||||||
if (vga_gain % 2)
|
if (vga_gain % 2)
|
||||||
printf("warning: vga_gain (-g) must be a multiple of 2\n");
|
fprintf(stderr, "warning: vga_gain (-g) must be a multiple of 2\n");
|
||||||
|
|
||||||
if (samples_to_xfer >= SAMPLES_TO_XFER_MAX) {
|
if (samples_to_xfer >= SAMPLES_TO_XFER_MAX) {
|
||||||
printf("argument error: num_samples must be less than %s/%sMio\n",
|
fprintf(stderr, "argument error: num_samples must be less than %s/%sMio\n",
|
||||||
u64toa(SAMPLES_TO_XFER_MAX,&ascii_u64_data1),
|
u64toa(SAMPLES_TO_XFER_MAX,&ascii_u64_data1),
|
||||||
u64toa((SAMPLES_TO_XFER_MAX/FREQ_ONE_MHZ),&ascii_u64_data2));
|
u64toa((SAMPLES_TO_XFER_MAX/FREQ_ONE_MHZ),&ascii_u64_data2));
|
||||||
usage();
|
usage();
|
||||||
@ -640,41 +650,41 @@ int main(int argc, char** argv) {
|
|||||||
if (if_freq || lo_freq || image_reject) {
|
if (if_freq || lo_freq || image_reject) {
|
||||||
/* explicit tuning selected */
|
/* explicit tuning selected */
|
||||||
if (!if_freq) {
|
if (!if_freq) {
|
||||||
printf("argument error: if_freq_hz must be specified for explicit tuning.\n");
|
fprintf(stderr, "argument error: if_freq_hz must be specified for explicit tuning.\n");
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
if (!image_reject) {
|
if (!image_reject) {
|
||||||
printf("argument error: image_reject must be specified for explicit tuning.\n");
|
fprintf(stderr, "argument error: image_reject must be specified for explicit tuning.\n");
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
if (!lo_freq && (image_reject_selection != RF_PATH_FILTER_BYPASS)) {
|
if (!lo_freq && (image_reject_selection != RF_PATH_FILTER_BYPASS)) {
|
||||||
printf("argument error: lo_freq_hz must be specified for explicit tuning unless image_reject is set to bypass.\n");
|
fprintf(stderr, "argument error: lo_freq_hz must be specified for explicit tuning unless image_reject is set to bypass.\n");
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
if ((if_freq_hz > IF_MAX_HZ) || (if_freq_hz < IF_MIN_HZ)) {
|
if ((if_freq_hz > IF_MAX_HZ) || (if_freq_hz < IF_MIN_HZ)) {
|
||||||
printf("argument error: if_freq_hz shall be between %s and %s.\n",
|
fprintf(stderr, "argument error: if_freq_hz shall be between %s and %s.\n",
|
||||||
u64toa(IF_MIN_HZ,&ascii_u64_data1),
|
u64toa(IF_MIN_HZ,&ascii_u64_data1),
|
||||||
u64toa(IF_MAX_HZ,&ascii_u64_data2));
|
u64toa(IF_MAX_HZ,&ascii_u64_data2));
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
if ((lo_freq_hz > LO_MAX_HZ) || (lo_freq_hz < LO_MIN_HZ)) {
|
if ((lo_freq_hz > LO_MAX_HZ) || (lo_freq_hz < LO_MIN_HZ)) {
|
||||||
printf("argument error: lo_freq_hz shall be between %s and %s.\n",
|
fprintf(stderr, "argument error: lo_freq_hz shall be between %s and %s.\n",
|
||||||
u64toa(LO_MIN_HZ,&ascii_u64_data1),
|
u64toa(LO_MIN_HZ,&ascii_u64_data1),
|
||||||
u64toa(LO_MAX_HZ,&ascii_u64_data2));
|
u64toa(LO_MAX_HZ,&ascii_u64_data2));
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
if (image_reject_selection > 2) {
|
if (image_reject_selection > 2) {
|
||||||
printf("argument error: image_reject must be 0, 1, or 2 .\n");
|
fprintf(stderr, "argument error: image_reject must be 0, 1, or 2 .\n");
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
if (automatic_tuning) {
|
if (automatic_tuning) {
|
||||||
printf("warning: freq_hz ignored by explicit tuning selection.\n");
|
fprintf(stderr, "warning: freq_hz ignored by explicit tuning selection.\n");
|
||||||
automatic_tuning = false;
|
automatic_tuning = false;
|
||||||
}
|
}
|
||||||
switch (image_reject_selection) {
|
switch (image_reject_selection) {
|
||||||
@ -691,13 +701,13 @@ int main(int argc, char** argv) {
|
|||||||
freq_hz = DEFAULT_FREQ_HZ;
|
freq_hz = DEFAULT_FREQ_HZ;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf("explicit tuning specified for %s Hz.\n",
|
fprintf(stderr, "explicit tuning specified for %s Hz.\n",
|
||||||
u64toa(freq_hz,&ascii_u64_data1));
|
u64toa(freq_hz,&ascii_u64_data1));
|
||||||
|
|
||||||
} else if (automatic_tuning) {
|
} else if (automatic_tuning) {
|
||||||
if(freq_hz > FREQ_MAX_HZ)
|
if(freq_hz > FREQ_MAX_HZ)
|
||||||
{
|
{
|
||||||
printf("argument error: freq_hz shall be between %s and %s.\n",
|
fprintf(stderr, "argument error: freq_hz shall be between %s and %s.\n",
|
||||||
u64toa(FREQ_MIN_HZ,&ascii_u64_data1),
|
u64toa(FREQ_MIN_HZ,&ascii_u64_data1),
|
||||||
u64toa(FREQ_MAX_HZ,&ascii_u64_data2));
|
u64toa(FREQ_MAX_HZ,&ascii_u64_data2));
|
||||||
usage();
|
usage();
|
||||||
@ -712,7 +722,7 @@ int main(int argc, char** argv) {
|
|||||||
if( amp ) {
|
if( amp ) {
|
||||||
if( amp_enable > 1 )
|
if( amp_enable > 1 )
|
||||||
{
|
{
|
||||||
printf("argument error: amp_enable shall be 0 or 1.\n");
|
fprintf(stderr, "argument error: amp_enable shall be 0 or 1.\n");
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
@ -720,7 +730,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
if (antenna) {
|
if (antenna) {
|
||||||
if (antenna_enable > 1) {
|
if (antenna_enable > 1) {
|
||||||
printf("argument error: antenna_enable shall be 0 or 1.\n");
|
fprintf(stderr, "argument error: antenna_enable shall be 0 or 1.\n");
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
@ -742,14 +752,14 @@ int main(int argc, char** argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (baseband_filter_bw_hz > BASEBAND_FILTER_BW_MAX) {
|
if (baseband_filter_bw_hz > BASEBAND_FILTER_BW_MAX) {
|
||||||
printf("argument error: baseband_filter_bw_hz must be less or equal to %u Hz/%.03f MHz\n",
|
fprintf(stderr, "argument error: baseband_filter_bw_hz must be less or equal to %u Hz/%.03f MHz\n",
|
||||||
BASEBAND_FILTER_BW_MAX, (float)(BASEBAND_FILTER_BW_MAX/FREQ_ONE_MHZ));
|
BASEBAND_FILTER_BW_MAX, (float)(BASEBAND_FILTER_BW_MAX/FREQ_ONE_MHZ));
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (baseband_filter_bw_hz < BASEBAND_FILTER_BW_MIN) {
|
if (baseband_filter_bw_hz < BASEBAND_FILTER_BW_MIN) {
|
||||||
printf("argument error: baseband_filter_bw_hz must be greater or equal to %u Hz/%.03f MHz\n",
|
fprintf(stderr, "argument error: baseband_filter_bw_hz must be greater or equal to %u Hz/%.03f MHz\n",
|
||||||
BASEBAND_FILTER_BW_MIN, (float)(BASEBAND_FILTER_BW_MIN/FREQ_ONE_MHZ));
|
BASEBAND_FILTER_BW_MIN, (float)(BASEBAND_FILTER_BW_MIN/FREQ_ONE_MHZ));
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
@ -757,7 +767,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
if( (transmit == false) && (receive == receive_wav) )
|
if( (transmit == false) && (receive == receive_wav) )
|
||||||
{
|
{
|
||||||
printf("receive -r and receive_wav -w options are mutually exclusive\n");
|
fprintf(stderr, "receive -r and receive_wav -w options are mutually exclusive\n");
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
@ -768,10 +778,10 @@ int main(int argc, char** argv) {
|
|||||||
{
|
{
|
||||||
if( transmit == true )
|
if( transmit == true )
|
||||||
{
|
{
|
||||||
printf("receive -r and transmit -t options are mutually exclusive\n");
|
fprintf(stderr, "receive -r and transmit -t options are mutually exclusive\n");
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
printf("specify either transmit -t or receive -r or receive_wav -w option\n");
|
fprintf(stderr, "specify either transmit -t or receive -r or receive_wav -w option\n");
|
||||||
}
|
}
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
@ -789,7 +799,7 @@ int main(int argc, char** argv) {
|
|||||||
if (signalsource) {
|
if (signalsource) {
|
||||||
transceiver_mode = TRANSCEIVER_MODE_SS;
|
transceiver_mode = TRANSCEIVER_MODE_SS;
|
||||||
if (amplitude >127) {
|
if (amplitude >127) {
|
||||||
printf("argument error: amplitude shall be in between 0 and 128.\n");
|
fprintf(stderr, "argument error: amplitude shall be in between 0 and 128.\n");
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
@ -804,28 +814,36 @@ int main(int argc, char** argv) {
|
|||||||
strftime(date_time, DATE_TIME_MAX_LEN, "%Y%m%d_%H%M%S", timeinfo);
|
strftime(date_time, DATE_TIME_MAX_LEN, "%Y%m%d_%H%M%S", timeinfo);
|
||||||
snprintf(path_file, PATH_FILE_MAX_LEN, "HackRF_%sZ_%ukHz_IQ.wav", date_time, (uint32_t)(freq_hz/(1000ull)) );
|
snprintf(path_file, PATH_FILE_MAX_LEN, "HackRF_%sZ_%ukHz_IQ.wav", date_time, (uint32_t)(freq_hz/(1000ull)) );
|
||||||
path = path_file;
|
path = path_file;
|
||||||
printf("Receive wav file: %s\n", path);
|
fprintf(stderr, "Receive wav file: %s\n", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
// In signal source mode, the PATH argument is neglected.
|
// In signal source mode, the PATH argument is neglected.
|
||||||
if (transceiver_mode != TRANSCEIVER_MODE_SS) {
|
if (transceiver_mode != TRANSCEIVER_MODE_SS) {
|
||||||
if( path == NULL ) {
|
if( path == NULL ) {
|
||||||
printf("specify a path to a file to transmit/receive\n");
|
fprintf(stderr, "specify a path to a file to transmit/receive\n");
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Change the freq and sample rate to correct the crystal clock error.
|
||||||
|
if( crystal_correct ) {
|
||||||
|
|
||||||
|
sample_rate_hz = (uint32_t)((double)sample_rate_hz * (1000000 - crystal_correct_ppm)/1000000+0.5);
|
||||||
|
freq_hz = freq_hz * (1000000 - crystal_correct_ppm)/1000000;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
result = hackrf_init();
|
result = hackrf_init();
|
||||||
if( result != HACKRF_SUCCESS ) {
|
if( result != HACKRF_SUCCESS ) {
|
||||||
printf("hackrf_init() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_init() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = hackrf_open_by_serial(serial_number, &device);
|
result = hackrf_open_by_serial(serial_number, &device);
|
||||||
if( result != HACKRF_SUCCESS ) {
|
if( result != HACKRF_SUCCESS ) {
|
||||||
printf("hackrf_open() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_open() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
@ -833,19 +851,27 @@ int main(int argc, char** argv) {
|
|||||||
if (transceiver_mode != TRANSCEIVER_MODE_SS) {
|
if (transceiver_mode != TRANSCEIVER_MODE_SS) {
|
||||||
if( transceiver_mode == TRANSCEIVER_MODE_RX )
|
if( transceiver_mode == TRANSCEIVER_MODE_RX )
|
||||||
{
|
{
|
||||||
|
if (strcmp(path, "-") == 0) {
|
||||||
|
fd = stdout;
|
||||||
|
} else {
|
||||||
fd = fopen(path, "wb");
|
fd = fopen(path, "wb");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (strcmp(path, "-") == 0) {
|
||||||
|
fd = stdin;
|
||||||
} else {
|
} else {
|
||||||
fd = fopen(path, "rb");
|
fd = fopen(path, "rb");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( fd == NULL ) {
|
if( fd == NULL ) {
|
||||||
printf("Failed to open file: %s\n", path);
|
fprintf(stderr, "Failed to open file: %s\n", path);
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
/* Change fd buffer to have bigger one to store or read data on/to HDD */
|
/* Change fd buffer to have bigger one to store or read data on/to HDD */
|
||||||
result = setvbuf(fd , NULL , _IOFBF , FD_BUFFER_SIZE);
|
result = setvbuf(fd , NULL , _IOFBF , FD_BUFFER_SIZE);
|
||||||
if( result != 0 ) {
|
if( result != 0 ) {
|
||||||
printf("setvbuf() failed: %d\n", result);
|
fprintf(stderr, "setvbuf() failed: %d\n", result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
@ -867,19 +893,19 @@ int main(int argc, char** argv) {
|
|||||||
signal(SIGTERM, &sigint_callback_handler);
|
signal(SIGTERM, &sigint_callback_handler);
|
||||||
signal(SIGABRT, &sigint_callback_handler);
|
signal(SIGABRT, &sigint_callback_handler);
|
||||||
#endif
|
#endif
|
||||||
printf("call hackrf_sample_rate_set(%u Hz/%.03f MHz)\n", sample_rate_hz,((float)sample_rate_hz/(float)FREQ_ONE_MHZ));
|
fprintf(stderr, "call hackrf_sample_rate_set(%u Hz/%.03f MHz)\n", sample_rate_hz,((float)sample_rate_hz/(float)FREQ_ONE_MHZ));
|
||||||
result = hackrf_set_sample_rate_manual(device, sample_rate_hz, 1);
|
result = hackrf_set_sample_rate_manual(device, sample_rate_hz, 1);
|
||||||
if( result != HACKRF_SUCCESS ) {
|
if( result != HACKRF_SUCCESS ) {
|
||||||
printf("hackrf_sample_rate_set() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_sample_rate_set() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("call hackrf_baseband_filter_bandwidth_set(%d Hz/%.03f MHz)\n",
|
fprintf(stderr, "call hackrf_baseband_filter_bandwidth_set(%d Hz/%.03f MHz)\n",
|
||||||
baseband_filter_bw_hz, ((float)baseband_filter_bw_hz/(float)FREQ_ONE_MHZ));
|
baseband_filter_bw_hz, ((float)baseband_filter_bw_hz/(float)FREQ_ONE_MHZ));
|
||||||
result = hackrf_set_baseband_filter_bandwidth(device, baseband_filter_bw_hz);
|
result = hackrf_set_baseband_filter_bandwidth(device, baseband_filter_bw_hz);
|
||||||
if( result != HACKRF_SUCCESS ) {
|
if( result != HACKRF_SUCCESS ) {
|
||||||
printf("hackrf_baseband_filter_bandwidth_set() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_baseband_filter_bandwidth_set() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
@ -893,29 +919,29 @@ int main(int argc, char** argv) {
|
|||||||
result |= hackrf_start_tx(device, tx_callback, NULL);
|
result |= hackrf_start_tx(device, tx_callback, NULL);
|
||||||
}
|
}
|
||||||
if( result != HACKRF_SUCCESS ) {
|
if( result != HACKRF_SUCCESS ) {
|
||||||
printf("hackrf_start_?x() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_start_?x() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (automatic_tuning) {
|
if (automatic_tuning) {
|
||||||
printf("call hackrf_set_freq(%s Hz/%.03f MHz)\n",
|
fprintf(stderr, "call hackrf_set_freq(%s Hz/%.03f MHz)\n",
|
||||||
u64toa(freq_hz, &ascii_u64_data1),((double)freq_hz/(double)FREQ_ONE_MHZ) );
|
u64toa(freq_hz, &ascii_u64_data1),((double)freq_hz/(double)FREQ_ONE_MHZ) );
|
||||||
result = hackrf_set_freq(device, freq_hz);
|
result = hackrf_set_freq(device, freq_hz);
|
||||||
if( result != HACKRF_SUCCESS ) {
|
if( result != HACKRF_SUCCESS ) {
|
||||||
printf("hackrf_set_freq() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_set_freq() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
printf("call hackrf_set_freq_explicit() with %s Hz IF, %s Hz LO, %s\n",
|
fprintf(stderr, "call hackrf_set_freq_explicit() with %s Hz IF, %s Hz LO, %s\n",
|
||||||
u64toa(if_freq_hz,&ascii_u64_data1),
|
u64toa(if_freq_hz,&ascii_u64_data1),
|
||||||
u64toa(lo_freq_hz,&ascii_u64_data2),
|
u64toa(lo_freq_hz,&ascii_u64_data2),
|
||||||
hackrf_filter_path_name(image_reject_selection));
|
hackrf_filter_path_name(image_reject_selection));
|
||||||
result = hackrf_set_freq_explicit(device, if_freq_hz, lo_freq_hz,
|
result = hackrf_set_freq_explicit(device, if_freq_hz, lo_freq_hz,
|
||||||
image_reject_selection);
|
image_reject_selection);
|
||||||
if (result != HACKRF_SUCCESS) {
|
if (result != HACKRF_SUCCESS) {
|
||||||
printf("hackrf_set_freq_explicit() failed: %s (%d)\n",
|
fprintf(stderr, "hackrf_set_freq_explicit() failed: %s (%d)\n",
|
||||||
hackrf_error_name(result), result);
|
hackrf_error_name(result), result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
@ -923,27 +949,27 @@ int main(int argc, char** argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( amp ) {
|
if( amp ) {
|
||||||
printf("call hackrf_set_amp_enable(%u)\n", amp_enable);
|
fprintf(stderr, "call hackrf_set_amp_enable(%u)\n", amp_enable);
|
||||||
result = hackrf_set_amp_enable(device, (uint8_t)amp_enable);
|
result = hackrf_set_amp_enable(device, (uint8_t)amp_enable);
|
||||||
if( result != HACKRF_SUCCESS ) {
|
if( result != HACKRF_SUCCESS ) {
|
||||||
printf("hackrf_set_amp_enable() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_set_amp_enable() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (antenna) {
|
if (antenna) {
|
||||||
printf("call hackrf_set_antenna_enable(%u)\n", antenna_enable);
|
fprintf(stderr, "call hackrf_set_antenna_enable(%u)\n", antenna_enable);
|
||||||
result = hackrf_set_antenna_enable(device, (uint8_t)antenna_enable);
|
result = hackrf_set_antenna_enable(device, (uint8_t)antenna_enable);
|
||||||
if (result != HACKRF_SUCCESS) {
|
if (result != HACKRF_SUCCESS) {
|
||||||
printf("hackrf_set_antenna_enable() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_set_antenna_enable() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
usage();
|
usage();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( limit_num_samples ) {
|
if( limit_num_samples ) {
|
||||||
printf("samples_to_xfer %s/%sMio\n",
|
fprintf(stderr, "samples_to_xfer %s/%sMio\n",
|
||||||
u64toa(samples_to_xfer,&ascii_u64_data1),
|
u64toa(samples_to_xfer,&ascii_u64_data1),
|
||||||
u64toa((samples_to_xfer/FREQ_ONE_MHZ),&ascii_u64_data2) );
|
u64toa((samples_to_xfer/FREQ_ONE_MHZ),&ascii_u64_data2) );
|
||||||
}
|
}
|
||||||
@ -951,7 +977,7 @@ int main(int argc, char** argv) {
|
|||||||
gettimeofday(&t_start, NULL);
|
gettimeofday(&t_start, NULL);
|
||||||
gettimeofday(&time_start, NULL);
|
gettimeofday(&time_start, NULL);
|
||||||
|
|
||||||
printf("Stop with Ctrl-C\n");
|
fprintf(stderr, "Stop with Ctrl-C\n");
|
||||||
while( (hackrf_is_streaming(device) == HACKRF_TRUE) &&
|
while( (hackrf_is_streaming(device) == HACKRF_TRUE) &&
|
||||||
(do_exit == false) )
|
(do_exit == false) )
|
||||||
{
|
{
|
||||||
@ -967,14 +993,14 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
time_difference = TimevalDiff(&time_now, &time_start);
|
time_difference = TimevalDiff(&time_now, &time_start);
|
||||||
rate = (float)byte_count_now / time_difference;
|
rate = (float)byte_count_now / time_difference;
|
||||||
printf("%4.1f MiB / %5.3f sec = %4.1f MiB/second\n",
|
fprintf(stderr, "%4.1f MiB / %5.3f sec = %4.1f MiB/second\n",
|
||||||
(byte_count_now / 1e6f), time_difference, (rate / 1e6f) );
|
(byte_count_now / 1e6f), time_difference, (rate / 1e6f) );
|
||||||
|
|
||||||
time_start = time_now;
|
time_start = time_now;
|
||||||
|
|
||||||
if (byte_count_now == 0) {
|
if (byte_count_now == 0) {
|
||||||
exit_code = EXIT_FAILURE;
|
exit_code = EXIT_FAILURE;
|
||||||
printf("\nCouldn't transfer any bytes for one second.\n");
|
fprintf(stderr, "\nCouldn't transfer any bytes for one second.\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -982,14 +1008,14 @@ int main(int argc, char** argv) {
|
|||||||
result = hackrf_is_streaming(device);
|
result = hackrf_is_streaming(device);
|
||||||
if (do_exit)
|
if (do_exit)
|
||||||
{
|
{
|
||||||
printf("\nUser cancel, exiting...\n");
|
fprintf(stderr, "\nUser cancel, exiting...\n");
|
||||||
} else {
|
} else {
|
||||||
printf("\nExiting... hackrf_is_streaming() result: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "\nExiting... hackrf_is_streaming() result: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
}
|
}
|
||||||
|
|
||||||
gettimeofday(&t_end, NULL);
|
gettimeofday(&t_end, NULL);
|
||||||
time_diff = TimevalDiff(&t_end, &t_start);
|
time_diff = TimevalDiff(&t_end, &t_start);
|
||||||
printf("Total time: %5.5f s\n", time_diff);
|
fprintf(stderr, "Total time: %5.5f s\n", time_diff);
|
||||||
|
|
||||||
if(device != NULL)
|
if(device != NULL)
|
||||||
{
|
{
|
||||||
@ -997,9 +1023,9 @@ int main(int argc, char** argv) {
|
|||||||
{
|
{
|
||||||
result = hackrf_stop_rx(device);
|
result = hackrf_stop_rx(device);
|
||||||
if( result != HACKRF_SUCCESS ) {
|
if( result != HACKRF_SUCCESS ) {
|
||||||
printf("hackrf_stop_rx() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_stop_rx() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
}else {
|
}else {
|
||||||
printf("hackrf_stop_rx() done\n");
|
fprintf(stderr, "hackrf_stop_rx() done\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1007,22 +1033,22 @@ int main(int argc, char** argv) {
|
|||||||
{
|
{
|
||||||
result = hackrf_stop_tx(device);
|
result = hackrf_stop_tx(device);
|
||||||
if( result != HACKRF_SUCCESS ) {
|
if( result != HACKRF_SUCCESS ) {
|
||||||
printf("hackrf_stop_tx() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_stop_tx() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
}else {
|
}else {
|
||||||
printf("hackrf_stop_tx() done\n");
|
fprintf(stderr, "hackrf_stop_tx() done\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result = hackrf_close(device);
|
result = hackrf_close(device);
|
||||||
if( result != HACKRF_SUCCESS )
|
if( result != HACKRF_SUCCESS )
|
||||||
{
|
{
|
||||||
printf("hackrf_close() failed: %s (%d)\n", hackrf_error_name(result), result);
|
fprintf(stderr, "hackrf_close() failed: %s (%d)\n", hackrf_error_name(result), result);
|
||||||
}else {
|
}else {
|
||||||
printf("hackrf_close() done\n");
|
fprintf(stderr, "hackrf_close() done\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
hackrf_exit();
|
hackrf_exit();
|
||||||
printf("hackrf_exit() done\n");
|
fprintf(stderr, "hackrf_exit() done\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fd != NULL)
|
if(fd != NULL)
|
||||||
@ -1042,8 +1068,8 @@ int main(int argc, char** argv) {
|
|||||||
}
|
}
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
fd = NULL;
|
fd = NULL;
|
||||||
printf("fclose(fd) done\n");
|
fprintf(stderr, "fclose(fd) done\n");
|
||||||
}
|
}
|
||||||
printf("exit\n");
|
fprintf(stderr, "exit\n");
|
||||||
return exit_code;
|
return exit_code;
|
||||||
}
|
}
|
||||||
|
@ -117,7 +117,7 @@ static const max2837_ft_t max2837_ft[] = {
|
|||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
volatile bool do_exit = false;
|
static volatile bool do_exit = false;
|
||||||
|
|
||||||
static const uint16_t hackrf_usb_vid = 0x1d50;
|
static const uint16_t hackrf_usb_vid = 0x1d50;
|
||||||
static const uint16_t hackrf_jawbreaker_usb_pid = 0x604b;
|
static const uint16_t hackrf_jawbreaker_usb_pid = 0x604b;
|
||||||
|
Reference in New Issue
Block a user