Merge pull request #162 from Paulo-D2000/main

[EXPERIMENTAL] CW TX working with SoapySDR API / Fixed Wrong streamWrite function…
pull/176/head
David Michaeli 2024-01-10 16:15:55 +02:00 zatwierdzone przez GitHub
commit aea80428aa
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 28 dodań i 9 usunięć

Wyświetl plik

@ -83,13 +83,14 @@ public:
int &flags,
long long &timeNs,
const long timeoutUs = 100000);
// writeStream signature is different from readStream!!
int writeStream(SoapySDR::Stream *stream,
void * const *buffs,
const void * const *buffs, // const first!
const size_t numElems,
int &flags,
long long &timeNs,
const long timeoutUs);
const long long timeNs = 0, // const first, don't pass as reference !
const long timeoutUs = 100000); // default value ?
/*******************************************************************
* Antenna API

Wyświetl plik

@ -7,7 +7,8 @@
#define NUM_BYTES_PER_CPLX_ELEM ( sizeof(cariboulite_sample_complex_int16) )
#define NUM_NATIVE_MTUS_PER_QUEUE ( 10 )
#define USE_ASYNC ( 1 )
// Undefine to also use TX
//#define USE_ASYNC ( 1 )
#define USE_ASYNC_OVERRIDE_WRITES ( true )
#define USE_ASYNC_BLOCK_READS ( true )
@ -260,8 +261,8 @@ int SoapySDR::Stream::Read(cariboulite_sample_complex_int16 *buffer, size_t num_
{
#if USE_ASYNC
return rx_queue->get(buffer, num_samples, timeout_us);
#else
int ret = cariboulite_radio_read_samples(radio, buffer, (caribou_smi_sample_meta*)meta, num_samples);
#else // caribou_smi_sample_meta not defined...
int ret = cariboulite_radio_read_samples(radio, buffer, (cariboulite_sample_meta*)meta, num_samples);
if (ret < 0)
{
if (ret == -1)

Wyświetl plik

@ -116,7 +116,24 @@ SoapySDR::Stream *Cariboulite::setupStream(const int direction,
stream->setInnerStreamType(direction == SOAPY_SDR_TX ? cariboulite_channel_dir_tx : cariboulite_channel_dir_rx);
// Default: CW Output -> OFF
cariboulite_radio_set_cw_outputs(radio, false, false);
// Check if args has CW Output -> ON/OFF
for(auto it = args.cbegin(); it != args.cend(); ++it)
{
if(!it->first.compare("CW") && !it->second.compare("1")) // "CW=1"
{ // SET CW ON
SoapySDR_logf(SOAPY_SDR_INFO, "CW Output: ON\n");
cariboulite_radio_set_cw_outputs(radio, false, true);
}
else if(!it->first.compare("CW") && !it->second.compare("0")) // "CW=0"
{ // SET CW OFF
SoapySDR_logf(SOAPY_SDR_INFO, "CW Output: OFF\n");
cariboulite_radio_set_cw_outputs(radio, false, false);
}
}
cariboulite_radio_activate_channel(radio, stream->getInnerStreamType(), false);
return stream;
}
@ -258,10 +275,10 @@ int Cariboulite::readStream(
*/
int Cariboulite::writeStream(
SoapySDR::Stream *stream,
void * const *buffs,
const void * const *buffs, // const void* !!
const size_t numElems,
int &flags,
long long &timeNs,
const long long timeNs, // const long long !!
const long timeoutUs)
{
// Verify that it is an TX stream