Tryin to get the sample sdr app to work
Tryin to get the sample sdr app to work
Good afternoon,
I installed API 3.02 and input the sample program from the documentation starting on page 29. I believe I've verified everything is input correctly; however, I'm getting errors on compiling. I'm running this on Windows 10. Any ideas what I have done wrong here? Any assistance is greatly appreciated!
Darin
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x113): undefined reference to `_imp__sdrplay_api_Update'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x357): undefined reference to `_imp__sdrplay_api_Open'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x36d): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x398): undefined reference to `_imp__sdrplay_api_DebugEnable'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x3ae): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x3ce): undefined reference to `_imp__sdrplay_api_ApiVersion'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x3e4): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x440): undefined reference to `_imp__sdrplay_api_LockDeviceApi'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x462): undefined reference to `_imp__sdrplay_api_GetDevices'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x478): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x776): undefined reference to `_imp__sdrplay_api_SelectDevice'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x78c): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x7a8): undefined reference to `_imp__sdrplay_api_UnlockDeviceApi'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x7c4): undefined reference to `_imp__sdrplay_api_GetDeviceParams'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x7da): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x8dd): undefined reference to `_imp__sdrplay_api_Init'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x90a): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x962): undefined reference to `_imp__sdrplay_api_Init'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x97c): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xa12): undefined reference to `_imp__sdrplay_api_Update'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xa2c): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xa91): undefined reference to `_imp__sdrplay_api_Update'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xaa7): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xae2): undefined reference to `_imp__sdrplay_api_Uninit'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xafc): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xb42): undefined reference to `_imp__sdrplay_api_Uninit'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xb58): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xb91): undefined reference to `_imp__sdrplay_api_ReleaseDevice'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xb9b): undefined reference to `_imp__sdrplay_api_UnlockDeviceApi'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xbab): undefined reference to `_imp__sdrplay_api_Close'
collect2.exe: error: ld returned 1 exit status
I installed API 3.02 and input the sample program from the documentation starting on page 29. I believe I've verified everything is input correctly; however, I'm getting errors on compiling. I'm running this on Windows 10. Any ideas what I have done wrong here? Any assistance is greatly appreciated!
Darin
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x113): undefined reference to `_imp__sdrplay_api_Update'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x357): undefined reference to `_imp__sdrplay_api_Open'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x36d): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x398): undefined reference to `_imp__sdrplay_api_DebugEnable'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x3ae): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x3ce): undefined reference to `_imp__sdrplay_api_ApiVersion'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x3e4): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x440): undefined reference to `_imp__sdrplay_api_LockDeviceApi'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x462): undefined reference to `_imp__sdrplay_api_GetDevices'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x478): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x776): undefined reference to `_imp__sdrplay_api_SelectDevice'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x78c): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x7a8): undefined reference to `_imp__sdrplay_api_UnlockDeviceApi'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x7c4): undefined reference to `_imp__sdrplay_api_GetDeviceParams'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x7da): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x8dd): undefined reference to `_imp__sdrplay_api_Init'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x90a): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x962): undefined reference to `_imp__sdrplay_api_Init'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0x97c): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xa12): undefined reference to `_imp__sdrplay_api_Update'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xa2c): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xa91): undefined reference to `_imp__sdrplay_api_Update'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xaa7): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xae2): undefined reference to `_imp__sdrplay_api_Uninit'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xafc): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xb42): undefined reference to `_imp__sdrplay_api_Uninit'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xb58): undefined reference to `_imp__sdrplay_api_GetErrorString'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xb91): undefined reference to `_imp__sdrplay_api_ReleaseDevice'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xb9b): undefined reference to `_imp__sdrplay_api_UnlockDeviceApi'
C:\Users\Darin\AppData\Local\Temp\ccwTXEES.o:sdrapp.c:(.text+0xbab): undefined reference to `_imp__sdrplay_api_Close'
collect2.exe: error: ld returned 1 exit status
Last edited by darin on Thu Jan 01, 1970 12:00 am, edited 0 times in total.
Reason: No reason
Reason: No reason
Re: Tryin to get the sample sdr app to work
I resolved the compiling errors by placing the sdrplay_api.lib and .dll in the project folder. Not the right way to do it, but program compiles with no errors now so gets past that hurdle until I figure out the right way to do it.
I'm now getting a fail to Initialize the device. I changed the line
if ((argc > 1) && (argc < 4))
to
if ((argc > 0) && (argc < 4))
as I'm using an RSP1 and my understanding is the device ID for RSP1 is 1. When I had argc > 1, it was bypassing all the code.
The program is finding the device(when I disconnect RSP1, it fails for not finding device); however, this line..
printf("Dev %d: SerNo: %s hwVer: %d tuner= 0x% .2x\n", i, devs.SerNo, devs.hwVer, devs.tuner);
is giving
"Dev 0: SerNo 0000000001 hwVer: 1 tuner 0x01"
Is the firmware very different for RSP1 and it doesn't use the same format as the newer RSP's?
I've put print statements in various parts of the program and it is going into all the right areas for a single tuner model and not going into the duo sections.
Here is the init line that is failing..
if ((err = sdrplay_api_Init(chosenDevice->dev, &cbFns, NULL)) != sdrplay_api_Success)
prior to that, I'm using these lines to define cbFns
cbFns.StreamACbFn = StreamACallback;
cbFns.StreamBCbFn = StreamBCallback;
cbFns.EventCbFn = EventCallback;
That is all directly from the example in the API Spec doc for API 3.02
Any ideas on why this is failing?
Thanks for any assistance!
I'm now getting a fail to Initialize the device. I changed the line
if ((argc > 1) && (argc < 4))
to
if ((argc > 0) && (argc < 4))
as I'm using an RSP1 and my understanding is the device ID for RSP1 is 1. When I had argc > 1, it was bypassing all the code.
The program is finding the device(when I disconnect RSP1, it fails for not finding device); however, this line..
printf("Dev %d: SerNo: %s hwVer: %d tuner= 0x% .2x\n", i, devs.SerNo, devs.hwVer, devs.tuner);
is giving
"Dev 0: SerNo 0000000001 hwVer: 1 tuner 0x01"
Is the firmware very different for RSP1 and it doesn't use the same format as the newer RSP's?
I've put print statements in various parts of the program and it is going into all the right areas for a single tuner model and not going into the duo sections.
Here is the init line that is failing..
if ((err = sdrplay_api_Init(chosenDevice->dev, &cbFns, NULL)) != sdrplay_api_Success)
prior to that, I'm using these lines to define cbFns
cbFns.StreamACbFn = StreamACallback;
cbFns.StreamBCbFn = StreamBCallback;
cbFns.EventCbFn = EventCallback;
That is all directly from the example in the API Spec doc for API 3.02
Any ideas on why this is failing?
Thanks for any assistance!
Last edited by darin on Thu Jan 01, 1970 12:00 am, edited 0 times in total.
Reason: No reason
Reason: No reason
Re: Tryin to get the sample sdr app to work
As with all compilations, the compiler needs to be told where the include files and library files are. You can either put them into directories that the compiler is already aware of, or use -I (for include files) and -L (for library files) parameters to the compiler to inform it as to where they are.
The RSP1 is different to the other RSPs in that it doesn't report its serial number.
If you are having problems during runtime, I suggest adding a call to enable debug output before the call to sdrplay_api_Init
sdrplay_api_ErrT err = sdrplay_api_DebugEnable(chosenDevice->dev, 1);
Best regards,
SDRplay Support
The RSP1 is different to the other RSPs in that it doesn't report its serial number.
If you are having problems during runtime, I suggest adding a call to enable debug output before the call to sdrplay_api_Init
sdrplay_api_ErrT err = sdrplay_api_DebugEnable(chosenDevice->dev, 1);
Best regards,
SDRplay Support
Reason: No reason
Re: Tryin to get the sample sdr app to work
Thank you for the reply.
Yeah, I've tried different ways to link and keep getting errors, but I'll figure that part out.
So I have the following code in place
err = sdrplay_api_DebugEnable(chosenDevice->dev, 1); // when i print err after this statement I get a 0 so it succeeds
if ((err = sdrplay_api_Init(chosenDevice->dev, &cbFns, NULL)) != sdrplay_api_Success)
{
printf("sdrplay_api_Init failed %s\n", sdrplay_api_GetErrorString(err)); // this prints sdrplay_api_Init failed sdrplay_api_Fail
No additional info comes up on the terminal screen when running the .exe file. Where would I see the debug info?
Thank you
Yeah, I've tried different ways to link and keep getting errors, but I'll figure that part out.
So I have the following code in place
err = sdrplay_api_DebugEnable(chosenDevice->dev, 1); // when i print err after this statement I get a 0 so it succeeds
if ((err = sdrplay_api_Init(chosenDevice->dev, &cbFns, NULL)) != sdrplay_api_Success)
{
printf("sdrplay_api_Init failed %s\n", sdrplay_api_GetErrorString(err)); // this prints sdrplay_api_Init failed sdrplay_api_Fail
No additional info comes up on the terminal screen when running the .exe file. Where would I see the debug info?
Thank you
Last edited by darin on Thu Jan 01, 1970 12:00 am, edited 0 times in total.
Reason: No reason
Reason: No reason
Re: Tryin to get the sample sdr app to work
You can use Microsoft DebugView to view the debug output from the API...
https://docs.microsoft.com/en-us/sysint ... /debugview
https://docs.microsoft.com/en-us/sysint ... /debugview
Reason: No reason
Re: Tryin to get the sample sdr app to work
Thank you for your help but I am not seeing where this is showing any debug info.
In the Visual Studio app folder, I have
sdrapp.c source
sdrapp.sln VS file
sdrapp.vcxproj.filters VS file
sdrapp.vcxproj.user VS file
sdrplay_api.dll
sdrplay_api.lib
Debug folder
in the Debug folder there is a folder for tolog files which are all text files that show various paths for actions taken for incremental builds I believe
sdrapp.exe
sdrapp.obj
sdrapp.pdb I thought this is where i'd find the debug info from sdr_api_DebugEnable. When I try to open it with DebugView the message box says this file contains invalid entries and will not be fully processed and nothing shows up when the application opens. Same is true for VC142.pdb which I believe is debug info regarding the compiling process.
In the Visual Studio app folder, I have
sdrapp.c source
sdrapp.sln VS file
sdrapp.vcxproj.filters VS file
sdrapp.vcxproj.user VS file
sdrplay_api.dll
sdrplay_api.lib
Debug folder
in the Debug folder there is a folder for tolog files which are all text files that show various paths for actions taken for incremental builds I believe
sdrapp.exe
sdrapp.obj
sdrapp.pdb I thought this is where i'd find the debug info from sdr_api_DebugEnable. When I try to open it with DebugView the message box says this file contains invalid entries and will not be fully processed and nothing shows up when the application opens. Same is true for VC142.pdb which I believe is debug info regarding the compiling process.
Last edited by darin on Thu Jan 01, 1970 12:00 am, edited 0 times in total.
Reason: No reason
Reason: No reason
Re: Tryin to get the sample sdr app to work
Hello Darin,
You run debugview and a window appears. Run it as administrator and turn on the Capture->Capture Global Win32 option from the menu
Then, as you run your exe with DebugEnable set to true, then you will see the API output appear in the DebugView window.
Note, DebugEnable should be disabled once you have finished with debug otherwise it will affect the performance of your program.
Best regards,
SDRplay Support
You run debugview and a window appears. Run it as administrator and turn on the Capture->Capture Global Win32 option from the menu
Then, as you run your exe with DebugEnable set to true, then you will see the API output appear in the DebugView window.
Note, DebugEnable should be disabled once you have finished with debug otherwise it will affect the performance of your program.
Best regards,
SDRplay Support
Reason: No reason
Re: Tryin to get the sample sdr app to work
Good evening SDRplay Support,
Thank y'all for your patience and education! Debugging showed it was failing for chParams->tunerParams.gain.LNAstate being 5, outside expected range of 0:4. Changed it to equal 3 and the program flowed right to EventCallback and StreamACallback.
Do appreciate it!
Darin
Thank y'all for your patience and education! Debugging showed it was failing for chParams->tunerParams.gain.LNAstate being 5, outside expected range of 0:4. Changed it to equal 3 and the program flowed right to EventCallback and StreamACallback.
Do appreciate it!
Darin
Last edited by darin on Thu Jan 01, 1970 12:00 am, edited 0 times in total.
Reason: No reason
Reason: No reason
-
- Posts: 9
- Joined: Wed Mar 15, 2017 7:39 pm
Re: Tryin to get the sample sdr app to work
The rsp1 has fewer lna states, only 0:3 are allowed I believe.
Reason: No reason
- Allen Jordan, NOAA software/electrical engineer
Re: Tryin to get the sample sdr app to work
I want to try using the api in a C# application using Visual Studio 2019. It looks like I need to import the DLL and declare the calls as static :
static extern <an actual function >;
I wonder if anybody already has these statements working and willing to share. I tried the following in my initial code effort this morning but it has plenty of errors. Most of the console application did translate fine. The main issue appears to be getting the extern functions imported and enabled. I should mention I rarely use C# but wanted to learn and thought this might be a good test. I am ok with C, C++, and VB. Have only used python with a raspberry PI. That is I am probably also making some syntax errors.
using System;
using System.Runtime.InteropServices;
namespace ConsoleApp1_sdr_example
{
[DllImport("sdrplay_api.dll")]
{
public static extern void StreamACallback(short* xi, short* xq, sdrplay_api_StreamCbParamsT* params, uint numSamples, uint reset, void* cbContext);
public static extern void EventCallback(sdrplay_api_EventT eventId, sdrplay_api_TunerSelectT tuner, sdrplay_api_EventParamsT*params, void* cbContext);
...< would add the other functions here>
}
...
static extern <an actual function >;
I wonder if anybody already has these statements working and willing to share. I tried the following in my initial code effort this morning but it has plenty of errors. Most of the console application did translate fine. The main issue appears to be getting the extern functions imported and enabled. I should mention I rarely use C# but wanted to learn and thought this might be a good test. I am ok with C, C++, and VB. Have only used python with a raspberry PI. That is I am probably also making some syntax errors.
using System;
using System.Runtime.InteropServices;
namespace ConsoleApp1_sdr_example
{
[DllImport("sdrplay_api.dll")]
{
public static extern void StreamACallback(short* xi, short* xq, sdrplay_api_StreamCbParamsT* params, uint numSamples, uint reset, void* cbContext);
public static extern void EventCallback(sdrplay_api_EventT eventId, sdrplay_api_TunerSelectT tuner, sdrplay_api_EventParamsT*params, void* cbContext);
...< would add the other functions here>
}
...
Last edited by ka4zbn on Thu Jan 01, 1970 12:00 am, edited 0 times in total.
Reason: No reason
Reason: No reason