[hpsdr] problems using WDSP library

Warren C. Pratt warren at wpratt.com
Fri May 5 07:10:59 PDT 2017


Hello Eduardo,

First of all, I'm glad to hear you have found the problem and have 
things working now.

I have not personally had time to use the Linux port.  However, it would 
appear that, when you compile your code, the compiler is not seeing 
function prototypes for the functions being called. The compiler is 
therefore passing parameters that appear to be type 'int' as type 
'int'.  If I am correct, the matter could also be resolved by including 
function prototypes such as

SetTXABandpassFreqs (int channel, double f_low, double f_high);

Best wishes for your future successes using WDSP.

73,

Warren  NR0V


On 5/5/2017 6:39 AM, Eduardo Alonso wrote:
> hello all,
> hello Warren,
>
> As you suggested, I tested the library using the internal generator.
> I found the same problems, all times related to the frequency settings,
> but not with amplitudes.
>
> After thinking a bit, I introduced a small change, and voilá... it 
> started to work.
> You must do casting before calling the library.
> Lesson learned.
>
> SetTXABandpassFreqs (1,-15000,3000);                 //fails
> SetTXABandpassFreqs (1,-15000.0,3000.0);             //works
> SetTXABandpassFreqs (1,(double)-15000,(double)3000); //works
>
> Same behavior with GCC-4.9 and CLANG-3.4...
>
> Well, I am very happy, now I can explore all the possibilities of your 
> library.
> Thanks for your fast answer and four your amazing contribution to the 
> ham community.
>
> 73 Eduardo
>
> ps:
> A last word, I was playing also with the last parameter of 
> OpenChannel(....,bfo).
> I tried to call OpenChannel with bfo=1 without luck.
> I was interested in using WDSP in a batch processing.
> Maybe this problem is related to the linux port.
>
>
>
>
> === WDSP init sequence:
>
> main()
> {
>
> OpenChannel           (1,FRAMES, 2048, 48000, 48000, 48000, 1, 0, 
> 0.010, 0.025, 0.000, 0.010, 0);
> SetTXAMode            (1,TXA_USB);
> TXASetNC              (1,2048);
> TXASetMP              (1,0);
>
> //NOISE
> SetTXAPreGenMode    (1,2);     //2=noise
> SetTXAPreGenNoiseMag(1,0.1);
>
> //SetTXABandpassFreqs   (1,-15000,3000); //fails
> //SetTXABandpassFreqs   (1,(double)-15000,(double)3000); //work
> SetTXABandpassFreqs   (1,-15000.0,3000.0); //work
>
> SetTXAPreGenRun       (1,1);
> SetChannelState       (1,1,1);
> fprintf(stderr,"run\n");
>
> while(1) {..}
> }
>
>
>
> On Tue, May 2, 2017 at 6:56 PM, Warren C. Pratt <warren at wpratt.com 
> <mailto:warren at wpratt.com>> wrote:
>
>     Hello Eduardo,
>
>     My first suggestion is to test with the built-in "PreGen" signal
>     generator, being sure to use a tone frequency inside the filter
>     bandwidth you specify.  I see in your code that you have
>     experimented with that before as you have commented-out some calls
>     to it.
>
>     73,
>
>     Warren  NR0V
>
>
>     On 5/2/2017 5:00 AM, Eduardo Alonso wrote:
>>     Hello friends,
>>     Hello Matt,
>>
>>     I am having problems in my first steps with WDSP library under linux.
>>     With the very minimal example that I copy below, everything runs
>>     fine.
>>     see: http://ea3ghs.qrp.cat/332-tx-fm.png
>>     <http://ea3ghs.qrp.cat/332-tx-fm.png>
>>
>>     But if I call SetTXABandpassFreqs(1,-3000,3000) the output signal
>>     disappears !!!.
>>
>>     This problem also appears in other modes than FM.
>>     I think I am not initializing correctly the library, but in
>>     the documentation says nothing about the correct (init) procedure.
>>
>>     Could you give some clues?
>>     Thanks in advance,
>>     Eduardo EA3GHS
>>
>>     //WDSP EXAMPLE
>>     //complete code: http://ea3ghs.qrp.cat/332c.tgz
>>     main()
>>     {
>>     SNDReset();
>>
>>     OpenChannel(1, FRAMES, 2048, 48000, 48000, 48000, 1, 0, 0.010,
>>     0.025, 0.000, 0.010, 0);
>>     SetTXAMode(1,TXA_FM);
>>     TXASetNC(1, 2048);
>>     TXASetMP(1, 0);
>>     //SetTXABandpassFreqs(1,-3000,3000);  //if I activate this line,
>>     I will have no output signal
>>     SetChannelState (1,1,1);
>>
>>     while(1)
>>         {
>>         SNDRead(); //blocking read call
>>         for(i=0;i<BUF;i++){in[i]=(double)rdbuf[i];in[i]/=0x7fff;}
>>         e=0; do {fexchange0(1,in,out,&e);} while(e);
>>         for(i=0;i<BUF;i++){wrbuf[i]=(s16)(out[i]*0x7fff);}
>>         SNDWrite();
>>         }
>>     }
>>     //END
>>
>>     ps:
>>     The library version is the Linux port from John Melton, and
>>     inside comm.h appears a "(C) 2017 Warren Pratt, NR0V, Jae
>>     Stutzman, K5JAE"
>>     see http://ea3ghs.qrp.cat/332c.tgz
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openhpsdr.org/pipermail/hpsdr-openhpsdr.org/attachments/20170505/b463c9a8/attachment.htm>


More information about the Hpsdr mailing list