pothosware / SoapySDRPlay2

Soapy SDR plugin for SDRPlay
MIT License
51 stars 11 forks source link

SDRPlay Development Progress #1

Closed cjcliffe closed 8 years ago

cjcliffe commented 8 years ago

Starting an issue for current development status and work for shared discussion.

Already making some actual progress:

cjmacbook:build ccliffe$ SoapySDRUtil --probe="driver=sdrplay"
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device driver=sdrplay
mir_sdr version: 1.1
Segmentation fault: 11

:)

cjcliffe commented 8 years ago

Getting there.. just need to implement sampling functions and some smart switching for the bandwidth based on rate.

cjmacbook:build ccliffe$ SoapySDRUtil --probe="driver=sdrplay"
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device driver=sdrplay
mir_sdr version: 1.1
mir_sdr_Init: starting hardware initialization
mir_sdr_Init: gR=40dB fs=2.048MHz rf=222.064MHz bw=1.536MHz if=0.000MHz

mir_sdr_2500_Init(2)

mir_sdr_usb_Init()

mir_sdr_usb_USB DLL: Revision 0.1.1

mir_sdr_usb_Init: Timeout expired/failed to establish connection with the device

mir_sdr_2500_Init: mir_sdr_usb_Init() failed
mir_sdr_Init: mir_sdr_2500_Init() Error 1

Ping @Toontje :)

cjcliffe commented 8 years ago

Segfaults fixed, getting decent --probe results now:

cjmacbook:build ccliffe$ SoapySDRUtil --probe="driver=sdrplay"
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device driver=sdrplay
mir_sdr_Init: starting hardware initialization
mir_sdr_Init: gR=40dB fs=2.048MHz rf=222.064MHz bw=1.536MHz if=0.000MHz

mir_sdr_2500_Init(2)

mir_sdr_usb_Init()

mir_sdr_usb_USB DLL: Revision 0.1.1

mir_sdr_usb_Init: Timeout expired/failed to establish connection with the device

mir_sdr_2500_Init: mir_sdr_usb_Init() failed
mir_sdr_Init: mir_sdr_2500_Init() Error 1

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=SDRPlay
  hardware=SDRPlay
  mir_sdr_version=1.100000

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 1 Rx, 0 Tx
  Timestamps: NO

----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
  Full-duplex: YES
  Antennas: RX
  Corrections: DC removal
  Full gain range: [0, 0] dB
  Full freq range: [0.1, 2000] MHz
    RF freq range: [0.1, 2000] MHz
  Sample rates: [0.2, 8] MHz
  Filter bandwidths: [0.2, 8] MHz
guruofquality commented 8 years ago

I took a look at the progress. A few comments:

//are elements left in the buffer? if not, do a new read
if (this->elemsLeftInBuffer == 0)
{
    //receive into temp buffer
    err = mir_sdr_ReadPacket(&xi[0], &xq[0], &fs, &grc, &rfc, &fsc);
    this->elemsLeftInBuffer = xi_buffer.size();
    this->offsetInfoBuffer = 0;
}

size_t elemsToConvert = std::min(this->elemsLeftInBuffer, numElems);
//conversion loop here, use offsetInfoBuffer for xi_buffer,xq_buffer

//bump variables for next call into readStream
this->elemsLeftInBuffer -= elemsToConvert;
this->offsetInfoBuffer += elemsToConvert;

return elemsToConvert;
cjcliffe commented 8 years ago

Thanks! I'll make the appropriate adjustments, I think it's getting close

cjcliffe commented 8 years ago

Current progress is that it's functional, still need to do some fiddling with the bandwidth but you can track the progress at https://github.com/cjcliffe/CubicSDR/issues/144 including build instructions for OSX.