@@ -42,6 +42,9 @@ SoapyRTLSDR::SoapyRTLSDR(const SoapySDR::Kwargs &args):
42
42
gainMode(false ),
43
43
offsetMode(false ),
44
44
digitalAGC(false ),
45
+ #if HAS_RTLSDR_SET_BIAS_TEE
46
+ biasTee (false ),
47
+ #endif
45
48
ticks (false ),
46
49
bufferedElems(0 ),
47
50
resetBuffer(false ),
@@ -539,6 +542,18 @@ SoapySDR::ArgInfoList SoapyRTLSDR::getSettingInfo(void) const
539
542
540
543
setArgs.push_back (digitalAGCArg);
541
544
545
+ #if HAS_RTLSDR_SET_BIAS_TEE
546
+ SoapySDR::ArgInfo biasTeeArg;
547
+
548
+ biasTeeArg.key = " biastee" ;
549
+ biasTeeArg.value = " false" ;
550
+ biasTeeArg.name = " Bias Tee" ;
551
+ biasTeeArg.description = " RTL-SDR Blog V.3 Bias-Tee Mode" ;
552
+ biasTeeArg.type = SoapySDR::ArgInfo::BOOL;
553
+
554
+ setArgs.push_back (biasTeeArg);
555
+ #endif
556
+
542
557
SoapySDR_logf (SOAPY_SDR_DEBUG, " SETARGS?" );
543
558
544
559
return setArgs;
@@ -576,6 +591,14 @@ void SoapyRTLSDR::writeSetting(const std::string &key, const std::string &value)
576
591
SoapySDR_logf (SOAPY_SDR_DEBUG, " RTL-SDR digital agc mode: %s" , digitalAGC ? " true" : " false" );
577
592
rtlsdr_set_agc_mode (dev, digitalAGC ? 1 : 0 );
578
593
}
594
+ #if HAS_RTLSDR_SET_BIAS_TEE
595
+ else if (key == " biastee" )
596
+ {
597
+ biasTee = (value == " true" ) ? true : false ;
598
+ SoapySDR_logf (SOAPY_SDR_DEBUG, " RTL-SDR bias tee mode: %s" , biasTee ? " true" : " false" );
599
+ rtlsdr_set_bias_tee (dev, biasTee ? 1 : 0 );
600
+ }
601
+ #endif
579
602
}
580
603
581
604
std::string SoapyRTLSDR::readSetting (const std::string &key) const
@@ -588,6 +611,10 @@ std::string SoapyRTLSDR::readSetting(const std::string &key) const
588
611
return offsetMode?" true" :" false" ;
589
612
} else if (key == " digital_agc" ) {
590
613
return digitalAGC?" true" :" false" ;
614
+ #if HAS_RTLSDR_SET_BIAS_TEE
615
+ } else if (key == " biastee" ) {
616
+ return biasTee?" true" :" false" ;
617
+ #endif
591
618
}
592
619
593
620
SoapySDR_logf (SOAPY_SDR_WARNING, " Unknown setting '%s'" , key.c_str ());
0 commit comments