kopia lustrzana https://github.com/Hamlib/Hamlib
100 wiersze
2.3 KiB
C++
100 wiersze
2.3 KiB
C++
/* -*- Mode: c++ -*- */
|
|
/*
|
|
* Copyright 2002 Stephane Fillod
|
|
*
|
|
* This file is part of Hamlib. Some parts from GNU radio.
|
|
*
|
|
*/
|
|
|
|
#include <VrSigSource.h>
|
|
#include <GrFFTSink.h>
|
|
#include <VrNullSink.h>
|
|
#include <GrMultiply.h>
|
|
#include <VrSum.h>
|
|
#include <VrConnect.h>
|
|
#include <VrMultiTask.h>
|
|
#include <VrGUI.h>
|
|
|
|
#include <stdio.h>
|
|
#include <hamlib/rig.h>
|
|
#include "gr_priv.h"
|
|
|
|
#define CARRIER_FREQ 1.070e6 // AM 1070
|
|
|
|
static RIG *my_rig;
|
|
|
|
void set_my_freq(double f)
|
|
{
|
|
rig_set_freq(my_rig, RIG_VFO_CURR, (freq_t)f);
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
int retcode; /* generic return code from functions */
|
|
struct gnuradio_priv_data *priv;
|
|
|
|
GrFFTSink<float> *fftsink;
|
|
|
|
VrGUI *guimain = new VrGUI(argc, argv);
|
|
VrGUILayout *horiz = guimain->top->horizontal();
|
|
VrGUILayout *vert = horiz->vertical();
|
|
|
|
|
|
printf("testgr:hello, I am your main() !\n");
|
|
|
|
rig_set_debug(RIG_DEBUG_TRACE);
|
|
|
|
my_rig = rig_init(RIG_MODEL_GNURADIO);
|
|
if (!my_rig) {
|
|
fprintf(stderr,"Unknown rig num: %d\n", RIG_MODEL_GNURADIO);
|
|
fprintf(stderr,"Please check riglist.h\n");
|
|
exit(1); /* whoops! something went wrong (mem alloc?) */
|
|
}
|
|
|
|
// turn this into a macro
|
|
priv = (struct gnuradio_priv_data*)my_rig->state.priv;
|
|
if (priv == NULL) {
|
|
printf("Internal error, can't retrieve priv data!\n");
|
|
exit(3);
|
|
}
|
|
|
|
retcode = rig_open(my_rig); /* start */
|
|
if (retcode != RIG_OK) {
|
|
printf("rig_open: error = %s\n", rigerror(retcode));
|
|
exit(2);
|
|
}
|
|
|
|
fftsink = new GrFFTSink<float>(vert, 300, 450, 1024);
|
|
|
|
pthread_mutex_lock(&priv->mutex_process);
|
|
priv->m->add (fftsink);
|
|
|
|
// now wire it all together from the sink, back to the sources
|
|
|
|
NWO_CONNECT (priv->source, fftsink);
|
|
pthread_mutex_unlock(&priv->mutex_process);
|
|
|
|
rig_set_freq(my_rig, RIG_VFO_CURR, (freq_t)CARRIER_FREQ-kHz(10));
|
|
rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_USB, RIG_PASSBAND_NORMAL);
|
|
|
|
(void) new VrGUINumber(horiz, "Carrier", "Frequency (Hz)", set_my_freq,
|
|
priv->input_rate/2, CARRIER_FREQ);
|
|
|
|
guimain->start();
|
|
|
|
while (1) {
|
|
pthread_mutex_lock(&priv->mutex_process);
|
|
guimain->processEvents(10 /*ms*/);
|
|
pthread_mutex_unlock(&priv->mutex_process);
|
|
//priv->m->process();
|
|
}
|
|
|
|
rig_close(my_rig); /* close port */
|
|
rig_cleanup(my_rig); /* if you care about memory */
|
|
|
|
printf("Rig closed ok\n");
|
|
|
|
return 0;
|
|
}
|
|
|