# uncomment the line below to include support for STEMlab discovery (WITHOUT AVAHI)
#STEMLAB_DISCOVERY=STEMLAB_DISCOVERY_NOAVAHI
-# uncomment the line below to include support for Pi SDR
-#PI_SDR_INCLUDE=PI_SDR
-
# uncomment the line below to include MIDI support
MIDI_INCLUDE=MIDI
STEMLAB_OBJS=stemlab_discovery.o
endif
-ifeq ($(PI_SDR_INCLUDE),PI_SDR)
-PI_SDR_OPTIONS=-D PI_SDR
-endif
-
GTKINCLUDES=`pkg-config --cflags gtk+-3.0`
GTKLIBS=`pkg-config --libs gtk+-3.0`
AUDIO_LIBS=-lasound
#AUDIO_LIBS=-lsoundio
-OPTIONS=-g -Wno-deprecated-declarations $(MIDI_OPTIONS) $(PURESIGNAL_OPTIONS) $(REMOTE_OPTIONS) $(USBOZY_OPTIONS) \
+CFLAGS= -g -Wno-deprecated-declarations -O3
+OPTIONS=$(MIDI_OPTIONS) $(PURESIGNAL_OPTIONS) $(REMOTE_OPTIONS) $(USBOZY_OPTIONS) \
$(I2C_OPTIONS) $(GPIO_OPTIONS) $(SOAPYSDR_OPTIONS) $(FREEDV_OPTIONS) $(LOCALCW_OPTIONS) $(RADIOBERRY_OPTIONS) \
- $(PI_SDR_OPTIONS) $(PSK_OPTIONS) $(STEMLAB_OPTIONS) \
- $(CONTROLLER2_OPTIONS) \
- -D GIT_DATE='"$(GIT_DATE)"' -D GIT_VERSION='"$(GIT_VERSION)"' $(DEBUG_OPTION) -O3
+ $(PSK_OPTIONS) $(STEMLAB_OPTIONS) $(CONTROLLER2_OPTIONS) \
+ -D GIT_DATE='"$(GIT_DATE)"' -D GIT_VERSION='"$(GIT_VERSION)"' $(DEBUG_OPTION)
LIBS=-lrt -lm -lwdsp -lpthread $(AUDIO_LIBS) $(USBOZY_LIBS) $(PSKLIBS) $(GTKLIBS) $(GPIO_LIBS) $(I2C_LIBS) $(SOAPYSDRLIBS) $(FREEDVLIBS) $(STEMLAB_LIBS) $(MIDI_LIBS)
INCLUDES=$(GTKINCLUDES)
-COMPILE=$(CC) $(OPTIONS) $(INCLUDES)
+COMPILE=$(CC) $(CFLAGS) $(OPTIONS) $(INCLUDES)
.c.o:
$(COMPILE) -c -o $@ $<
$(SOAPYSDR_OBJS) $(FREEDV_OBJS) $(LOCALCW_OBJS) $(PSK_OBJS) $(PURESIGNAL_OBJS) \
$(MIDI_OBJS) $(STEMLAB_OBJS) $(LIBS)
+.PHONY: all
all: prebuild $(PROGRAM) $(HEADERS) $(REMOTE_HEADERS) $(USBOZY_HEADERS) $(SOAPYSDR_HEADERS) \
$(FREEDV_HEADERS) $(LOCALCW_HEADERS) $(I2C_HEADERS) $(GPIO_HEADERS) $(PSK_HEADERS) \
$(PURESIGNAL_HEADERS) $(MIDI_HEADERS) $(STEMLAB_HEADERS) $(SOURCES) $(REMOTE_SOURCES) \
$(USBOZY_SOURCES) $(SOAPYSDR_SOURCES) $(FREEDV_SOURCES) $(I2C_SOURCES) $(GPIO_SOURCES) \
$(PSK_SOURCES) $(PURESIGNAL_SOURCES) $(MIDI_SOURCES)$(STEMLAB_SOURCES)
+.PHONY: prebuild
prebuild:
rm -f version.o
+#
+# On some platforms, INCLUDES contains "-pthread" (from a pkg-config output)
+# which is not a valid cppcheck option
+# Therefore, correct this here. Furthermore, we can add additional options to CPP
+# in the variable CPPOPTIONS
+#
+CPPOPTIONS= --enable=all --suppress=shadowVariable --suppress=variableScope
+CPPINCLUDES:=$(shell echo $(INCLUDES) | sed -e "s/-pthread / /" )
+
+.PHONY: cppcheck
+cppcheck:
+ cppcheck $(CPPOPTIONS) $(OPTIONS) $(CPPINCLUDES) $(SOURCES) $(REMOTE_SOURCES) \
+ $(USBOZY_SOURCES) $(SOAPYSDR_SOURCES) $(FREEDV_SOURCES) $(I2C_SOURCES) $(GPIO_SOURCES) \
+ $(PSK_SOURCES) $(PURESIGNAL_SOURCES) $(MIDI_SOURCES)$(STEMLAB_SOURCES)
+
+.PHONY: clean
clean:
-rm -f *.o
-rm -f $(PROGRAM) hpsdrsim
+.PHONY: install
install: $(PROGRAM)
cp $(PROGRAM) /usr/local/bin
+.PHONY: release
release: $(PROGRAM)
cp $(PROGRAM) release/pihpsdr
cd release; tar cvf pihpsdr.tar pihpsdr
cd release; tar cvf pihpsdr-$(GIT_VERSION).tar pihpsdr
+.PHONY: nocontroller
nocontroller: clean controller1 $(PROGRAM)
cp $(PROGRAM) release/pihpsdr
cd release; tar cvf pihpsdr-nocontroller.$(GIT_VERSION).tar pihpsdr
+.PHONY: controller1
controller1: clean $(PROGRAM)
cp $(PROGRAM) release/pihpsdr
cd release; tar cvf pihpsdr-controller1.$(GIT_VERSION).tar pihpsdr
+.PHONY: controller2v1
controller2v1: clean $(PROGRAM)
cp $(PROGRAM) release/pihpsdr
cd release; tar cvf pihpsdr-controller2-v1.$(GIT_VERSION).tar pihpsdr
+.PHONY: controller2v2
controller2v2: clean $(PROGRAM)
cp $(PROGRAM) release/pihpsdr
cd release; tar cvf pihpsdr-controller2-v2.$(GIT_VERSION).tar pihpsdr
# uncomment the line below to include support for STEMlab discovery (WITHOUT AVAHI)
STEMLAB_DISCOVERY=STEMLAB_DISCOVERY_NOAVAHI
-# uncomment the line below to include support for Pi SDR
-#PI_SDR_INCLUDE=PI_SDR
-
# uncomment the line below to include MIDI support
MIDI_INCLUDE=MIDI
STEMLAB_OBJS=stemlab_discovery.o
endif
-ifeq ($(PI_SDR_INCLUDE),PI_SDR)
-PI_SDR_OPTIONS=-D PI_SDR
-endif
-
GTKINCLUDES=`pkg-config --cflags gtk+-3.0`
GTKLIBS=`pkg-config --libs gtk+-3.0`
AUDIO_OPTIONS=-DPORTAUDIO
-AUDIO_LIBS=-lportaudio
+AUDIO_LIBS=-lportaudio -O3
-OPTIONS=-g -Wno-deprecated-declarations $(MIDI_OPTIONS) $(PURESIGNAL_OPTIONS) $(REMOTE_OPTIONS) $(USBOZY_OPTIONS) \
+CFLAGS= -g -Wno-deprecated-declarations
+OPTIONS=$(MIDI_OPTIONS) $(PURESIGNAL_OPTIONS) $(REMOTE_OPTIONS) $(USBOZY_OPTIONS) \
$(I2C_OPTIONS) $(GPIO_OPTIONS) $(SOAPYSDR_OPTIONS) $(FREEDV_OPTIONS) $(LOCALCW_OPTIONS) $(RADIOBERRY_OPTIONS) \
- $(PI_SDR_OPTIONS) $(PSK_OPTIONS) $(STEMLAB_OPTIONS) \
- $(CONTROLLER2_OPTIONS) \
- $(AUDIO_OPTIONS) \
- -D GIT_DATE='"$(GIT_DATE)"' -D GIT_VERSION='"$(GIT_VERSION)"' $(DEBUG_OPTION) -O3
+ $(PSK_OPTIONS) $(STEMLAB_OPTIONS) \
+ $(CONTROLLER2_OPTIONS) $(AUDIO_OPTIONS) \
+ -D GIT_DATE='"$(GIT_DATE)"' -D GIT_VERSION='"$(GIT_VERSION)"' $(DEBUG_OPTION)
LIBS= -lm -lwdsp -lpthread $(AUDIO_LIBS) $(USBOZY_LIBS) $(PSKLIBS) $(GTKLIBS) $(GPIO_LIBS) $(SOAPYSDRLIBS) $(FREEDVLIBS) $(STEMLAB_LIBS) $(MIDI_LIBS)
INCLUDES=$(GTKINCLUDES)
-COMPILE=$(CC) $(OPTIONS) $(INCLUDES)
+COMPILE=$(CC) $(CFLAGS) $(OPTIONS) $(INCLUDES)
.c.o:
$(COMPILE) -c -o $@ $<
prebuild:
rm -f version.o
+#
+# On some platforms, INCLUDES contains "-pthread" (from a pkg-config output)
+# which is not a valid cppcheck option
+# Therefore, correct this here. Furthermore, we can add additional options to CPP
+# in the variable CPPOPTIONS
+#
+CPPOPTIONS= --enable=all --suppress=shadowVariable --suppress=variableScope -q
+CPPINCLUDES:=$(shell echo $(INCLUDES) | sed -e "s/-pthread / /" )
+
+.PHONY: cppcheck
+cppcheck:
+ cppcheck $(CPPOPTIONS) $(OPTIONS) $(CPPINCLUDES) $(SOURCES) $(REMOTE_SOURCES) \
+ $(USBOZY_SOURCES) $(SOAPYSDR_SOURCES) $(FREEDV_SOURCES) $(I2C_SOURCES) $(GPIO_SOURCES) \
+ $(PSK_SOURCES) $(PURESIGNAL_SOURCES) $(MIDI_SOURCES)$(STEMLAB_SOURCES)
+
clean:
-rm -f *.o
-rm -f $(PROGRAM) hpsdrsim
}
void about_menu(GtkWidget *parent) {
- int i;
char text[2048];
char line[128];
char addr[64];
}
void agc_menu(GtkWidget *parent) {
- GtkWidget *b;
- int i;
- BAND *band;
parent_window=parent;
strcpy(input_devices[n_input_devices].name,device_id);
input_devices[n_input_devices].description=g_new0(char,strlen(device_id)+1);
strcpy(input_devices[n_input_devices].description,device_id);
- input_devices[n_input_devices].index=i;
+ input_devices[n_input_devices].index=0; // not used
n_input_devices++;
g_print("input_device: %s\n",device_id);
}
strcpy(output_devices[n_output_devices].name,device_id);
output_devices[n_output_devices].description=g_new0(char,strlen(device_id)+1);
strcpy(output_devices[n_output_devices].description,device_id);
- input_devices[n_output_devices].index=i;
+ input_devices[n_output_devices].index=0; // not used
n_output_devices++;
g_print("output_device: %s\n",device_id);
}
i++;
}
output_devices[n_output_devices].description[i]='\0';
- input_devices[n_output_devices].index=i;
+ input_devices[n_output_devices].index=0; // not used
n_output_devices++;
g_print("output_device: name=%s descr=%s\n",name,descr);
//}
i++;
}
input_devices[n_input_devices].description[i]='\0';
- input_devices[n_input_devices].index=i;
+ input_devices[n_input_devices].index=0; // not used
n_input_devices++;
g_print("input_device: name=%s descr=%s\n",name,descr);
//}
int width=gdk_pixbuf_get_width(pixbuf);
int height=gdk_pixbuf_get_height(pixbuf);
int rowstride=gdk_pixbuf_get_rowstride(pixbuf);
- int channels=gdk_pixbuf_get_n_channels(pixbuf);
+ int channels=gdk_pixbuf_get_n_channels(pixbuf); // used in debug code
//fprintf(stderr,"audio_waterfall_update: width=%d height=%d rowsstride=%d channels=%d\n",width,height,rowstride,channels);
void bandSaveState() {
char name[128];
char value[128];
- int current;
BANDSTACK_ENTRY* entry;
int b;
int stack;
char name[128];
BANDSTACK_ENTRY* entry;
- int current;
for(b=0;b<BANDS+XVTRS;b++) {
sprintf(name,"band.%d.title",b);
}
gboolean band_select_cb (GtkWidget *widget, gpointer data) {
- GtkWidget *label;
int b=GPOINTER_TO_UINT(data);
set_button_text_color(last_band,"black");
last_band=widget;
}
void band_menu(GtkWidget *parent) {
- GtkWidget *b;
int i,j;
BAND *band;
}
void bandstack_menu(GtkWidget *parent) {
- GtkWidget *b;
int i;
parent_window=parent;
gtk_container_add(GTK_CONTAINER(content),grid);
gtk_widget_show_all(dialog);
- int result=gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_dialog_run(GTK_DIALOG(dialog));
}
#endif
}
void cw_menu(GtkWidget *parent) {
- int i;
-
parent_window=parent;
dialog=gtk_dialog_new();
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
gint res;
int fdin, fdout;
- char c;
size_t len,bytes_read,bytes_written;
opfile = gtk_file_chooser_dialog_new ("Import MIDI description",
}
void display_menu(GtkWidget *parent) {
- int i;
-
parent_window=parent;
dialog=gtk_dialog_new();
}
void diversity_menu(GtkWidget *parent) {
- int i;
parent_window=parent;
}
void dsp_menu(GtkWidget *parent) {
- int i;
-
parent_window=parent;
dialog=gtk_dialog_new();
void encoder_menu(GtkWidget *parent) {
int row=0;
int col=0;
- int i;
dialog=gtk_dialog_new();
gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(parent_window));
}
void equalizer_menu(GtkWidget *parent) {
- int i;
if(can_transmit) {
tx_menu=TRUE;
gtk_container_add(GTK_CONTAINER(content),label);
gtk_widget_show(label);
timer=g_timeout_add(5000,timeout_cb,NULL);
- int result=gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_dialog_run(GTK_DIALOG(dialog));
return FALSE;
}
#endif
}
radioSaveState();
- int rc=system("reboot");
+ system("reboot");
_exit(0);
}
#endif
}
radioSaveState();
- int rc=system("shutdown -h -P now");
+ system("shutdown -h -P now");
_exit(0);
}
}
void filter_menu(GtkWidget *parent) {
- GtkWidget *b;
int i;
parent_window=parent;
void gpio_restore_state() {
char* value;
- char name[80];
- int i;
loadProperties("gpio.props");
value=getProperty("ENABLE_VFO_ENCODER");
}
void gpio_save_state() {
- int i;
- char name[80];
char value[80];
sprintf(value,"%d",ENABLE_VFO_ENCODER);
#endif
int gpio_init() {
- int i;
fprintf(stderr,"gpio_wiringpi: gpio_init\n");
}
static int init(void *data) {
- char *res;
char wisdom_directory[1024];
- int rc;
//fprintf(stderr,"init\n");
// Depending on the WDSP version, the file is wdspWisdom or wdspWisdom00.
// sem_trywait() is not elegant, replaced this with wisdom_running variable.
//
- res=getcwd(wisdom_directory, sizeof(wisdom_directory));
+ getcwd(wisdom_directory, sizeof(wisdom_directory));
strcpy(&wisdom_directory[strlen(wisdom_directory)],"/");
fprintf(stderr,"Securing wisdom file in directory: %s\n", wisdom_directory);
status_text("Creating FFTW Wisdom file ...");
wisdom_running=1;
- rc=pthread_create(&wisdom_thread_id, NULL, wisdom_thread, wisdom_directory);
+ pthread_create(&wisdom_thread_id, NULL, wisdom_thread, wisdom_directory);
while (wisdom_running) {
// wait for the wisdom thread to complete, meanwhile
// handling any GTK events.
fprintf(stderr,"Build: %s %s\n",build_date,version);
- fprintf(stderr,"GTK+ version %d.%d.%d\n", gtk_major_version, gtk_minor_version, gtk_micro_version);
+ fprintf(stderr,"GTK+ version %ud.%ud.%ud\n", gtk_major_version, gtk_minor_version, gtk_micro_version);
uname(&unameData);
fprintf(stderr,"sysname: %s\n",unameData.sysname);
fprintf(stderr,"nodename: %s\n",unameData.nodename);
GtkWidget* meter_init(int width,int height,GtkWidget *parent) {
- GError *error;
fprintf(stderr,"meter_init: width=%d height=%d\n",width,height);
meter_width=width;
void meter_update(RECEIVER *rx,int meter_type,double value,double reverse,double exciter,double alc) {
- char text[128];
char sf[32];
int text_location;
double offset;
{ VOXLEVEL, "VOXLEVEL"},
{ MIDI_XIT_CLEAR, "XITCLEAR"},
{ XIT_VAL, "XITVAL"},
- { ACTION_NONE, "NONE"},
- { ACTION_NONE, NULL}
+ { ACTION_NONE, "NONE"}
};
/*
static enum MIDIaction keyword2action(char *s) {
int i=0;
- // cppcheck will spot an error here. But the last string in ActionTable is NULL
- // so the index (i) will never become out-of-bounds.
- for (i=0; 1; i++) {
- if (ActionTable[i].str == NULL) {
- fprintf(stderr,"MIDI: action keyword %s NOT FOUND.\n", s);
- return ACTION_NONE;
- }
+ for (i=0; i< (sizeof(ActionTable) / sizeof(ActionTable[0])); i++) {
if (!strcmp(s, ActionTable[i].str)) return ActionTable[i].action;
- }
- /* NOTREACHED */
+ }
+ fprintf(stderr,"MIDI: action keyword %s NOT FOUND.\n", s);
+ return ACTION_NONE;
}
/*
}
void mode_menu(GtkWidget *parent) {
- GtkWidget *b;
int i;
- BAND *band;
parent_window=parent;
void new_menu()
{
- int i, j, id;
+ int i;
if(dialog==NULL) {
response_sem=sem_open("RESPONSE", O_CREAT | O_EXCL, 0700, 0);
if (response_sem == SEM_FAILED) perror("ResponseSemaphore");
#else
- rc=sem_init(&response_sem, 0, 0);
+ rc=sem_init(&response_sem, 0, 0); // check return value!
#endif
- //rc=sem_init(&send_high_priority_sem, 0, 1);
- //rc=sem_init(&send_general_sem, 0, 1);
+ //rc=sem_init(&send_high_priority_sem, 0, 1); // check return value!
+ //rc=sem_init(&send_general_sem, 0, 1); // check return value!
#ifdef __APPLE__
sem_unlink("COMMRESREADY");
command_response_sem_buffer=sem_open("COMMRESBUF", O_CREAT | O_EXCL, 0700, 0);
if (command_response_sem_buffer == SEM_FAILED) perror("CommandResponseBufferSemaphore");
#else
- rc=sem_init(&command_response_sem_ready, 0, 0);
- rc=sem_init(&command_response_sem_buffer, 0, 0);
+ rc=sem_init(&command_response_sem_ready, 0, 0); // check return value!
+ rc=sem_init(&command_response_sem_buffer, 0, 0); // check return value!
#endif
command_response_thread_id = g_thread_new( "command_response thread",command_response_thread, NULL);
if( ! command_response_thread_id ) {
high_priority_sem_buffer=sem_open("HIGHBUF", O_CREAT | O_EXCL, 0700, 0);
if (high_priority_sem_buffer == SEM_FAILED) perror("HIGHPriorityBufferSemaphore");
#else
- rc=sem_init(&high_priority_sem_ready, 0, 0);
- rc=sem_init(&high_priority_sem_buffer, 0, 0);
+ rc=sem_init(&high_priority_sem_ready, 0, 0); // check return value!
+ rc=sem_init(&high_priority_sem_buffer, 0, 0); // check return value!
#endif
high_priority_thread_id = g_thread_new( "high_priority thread", high_priority_thread, NULL);
if( ! high_priority_thread_id ) {
mic_line_sem_buffer=sem_open("MICBUF", O_CREAT | O_EXCL, 0700, 0);
if (mic_line_sem_buffer == SEM_FAILED) perror("MicLineBufferSemaphore");
#else
- rc=sem_init(&mic_line_sem_ready, 0, 0);
- rc=sem_init(&mic_line_sem_buffer, 0, 0);
+ rc=sem_init(&mic_line_sem_ready, 0, 0); // check return value!
+ rc=sem_init(&mic_line_sem_buffer, 0, 0); // check return value!
#endif
mic_line_thread_id = g_thread_new( "mic_line thread", mic_line_thread, NULL);
if( ! mic_line_thread_id ) {
perror("IQbufferSemaphore");
}
#else
- rc=sem_init(&iq_sem_ready[i], 0, 0);
- rc=sem_init(&iq_sem_buffer[i], 0, 0);
+ rc=sem_init(&iq_sem_ready[i], 0, 0); // check return value!
+ rc=sem_init(&iq_sem_buffer[i], 0, 0); // check return value!
#endif
iq_thread_id[i] = g_thread_new( "iq thread", iq_thread, GINT_TO_POINTER(i));
}
}
if(rc!=sizeof(general_buffer)) {
- fprintf(stderr,"sendto socket for general: %d rather than %ld",rc,sizeof(general_buffer));
+ fprintf(stderr,"sendto socket for general: %d rather than %ld",rc,(long)sizeof(general_buffer));
}
general_sequence++;
}
if(rc!=sizeof(high_priority_buffer_to_radio)) {
- fprintf(stderr,"sendto socket for high_priority: %d rather than %ld",rc,sizeof(high_priority_buffer_to_radio));
+ fprintf(stderr,"sendto socket for high_priority: %d rather than %ld",rc,(long)sizeof(high_priority_buffer_to_radio));
}
high_priority_sequence++;
}
if(rc!=sizeof(transmit_specific_buffer)) {
- fprintf(stderr,"sendto socket for transmit_specific: %d rather than %ld",rc,sizeof(transmit_specific_buffer));
+ fprintf(stderr,"sendto socket for transmit_specific: %d rather than %ld",rc,(long)sizeof(transmit_specific_buffer));
}
tx_specific_sequence++;
}
if(rc!=sizeof(receive_specific_buffer)) {
- fprintf(stderr,"sendto socket for receive_specific: %d rather than %ld",rc,sizeof(receive_specific_buffer));
+ fprintf(stderr,"sendto socket for receive_specific: %d rather than %ld",rc,(long)sizeof(receive_specific_buffer));
}
rx_specific_sequence++;
static gpointer new_protocol_thread(gpointer data) {
- int i;
int ddc;
short sourceport;
unsigned char *buffer;
}
static void process_iq_data(unsigned char *buffer, RECEIVER *rx) {
- long long timestamp;
- int bitspersample;
+ //long long timestamp; // never used
+ int bitspersample; // used in debug code
int samplesperframe;
int b;
int leftsample;
double leftsampledouble;
double rightsampledouble;
- timestamp=((long long)(buffer[4]&0xFF)<<56)
- +((long long)(buffer[5]&0xFF)<<48)
- +((long long)(buffer[6]&0xFF)<<40)
- +((long long)(buffer[7]&0xFF)<<32)
- +((long long)(buffer[8]&0xFF)<<24)
- +((long long)(buffer[9]&0xFF)<<16)
- +((long long)(buffer[10]&0xFF)<<8)
- +((long long)(buffer[11]&0xFF) );
- bitspersample=((buffer[12]&0xFF)<<8)+(buffer[13]&0xFF);
+ //timestamp=((long long)(buffer[4]&0xFF)<<56)
+ // +((long long)(buffer[5]&0xFF)<<48)
+ // +((long long)(buffer[6]&0xFF)<<40)
+ // +((long long)(buffer[7]&0xFF)<<32)
+ // +((long long)(buffer[8]&0xFF)<<24)
+ // +((long long)(buffer[9]&0xFF)<<16)
+ // +((long long)(buffer[10]&0xFF)<<8)
+ // +((long long)(buffer[11]&0xFF) );
+ bitspersample=((buffer[12]&0xFF)<<8)+(buffer[13]&0xFF); // used in debug code
samplesperframe=((buffer[14]&0xFF)<<8)+(buffer[15]&0xFF);
//g_print("process_iq_data: rx=%d bitspersample=%d samplesperframe=%d\n",rx->id, bitspersample,samplesperframe);
// at the end
//
static void process_div_iq_data(unsigned char*buffer) {
- long sequence;
- long long timestamp;
- int bitspersample;
+ // long long timestamp; // never used
+ // int bitspersample; // never used
int samplesperframe;
int b;
int leftsample0;
double leftsampledouble1;
double rightsampledouble1;
- timestamp=((long long)(buffer[ 4]&0xFF)<<56)
- +((long long)(buffer[ 5]&0xFF)<<48)
- +((long long)(buffer[ 6]&0xFF)<<40)
- +((long long)(buffer[ 7]&0xFF)<<32)
- +((long long)(buffer[ 8]&0xFF)<<24)
- +((long long)(buffer[ 9]&0xFF)<<16)
- +((long long)(buffer[10]&0xFF)<< 8)
- +((long long)(buffer[11]&0xFF) );
-
- bitspersample=((buffer[12]&0xFF)<<8)+(buffer[13]&0xFF);
+ //timestamp=((long long)(buffer[ 4]&0xFF)<<56)
+ // +((long long)(buffer[ 5]&0xFF)<<48)
+ // +((long long)(buffer[ 6]&0xFF)<<40)
+ // +((long long)(buffer[ 7]&0xFF)<<32)
+ // +((long long)(buffer[ 8]&0xFF)<<24)
+ // +((long long)(buffer[ 9]&0xFF)<<16)
+ // +((long long)(buffer[10]&0xFF)<< 8)
+ // +((long long)(buffer[11]&0xFF) );
+
+ //bitspersample=((buffer[12]&0xFF)<<8)+(buffer[13]&0xFF);
samplesperframe=((buffer[14]&0xFF)<<8)+(buffer[15]&0xFF);
b=16;
}
static void process_ps_iq_data(unsigned char *buffer) {
- long sequence;
- long long timestamp;
- int bitspersample;
+ //long long timestamp; // never used
+ int bitspersample; // used in debug code
int samplesperframe;
int b;
int leftsample0;
double leftsampledouble1;
double rightsampledouble1;
- timestamp=((long long)(buffer[ 4]&0xFF)<<56)
- +((long long)(buffer[ 5]&0xFF)<<48)
- +((long long)(buffer[ 6]&0xFF)<<40)
- +((long long)(buffer[ 7]&0xFF)<<32)
- +((long long)(buffer[ 8]&0xFF)<<24)
- +((long long)(buffer[ 9]&0xFF)<<16)
- +((long long)(buffer[10]&0xFF)<< 8)
- +((long long)(buffer[11]&0xFF) );
+ //timestamp=((long long)(buffer[ 4]&0xFF)<<56)
+ // +((long long)(buffer[ 5]&0xFF)<<48)
+ // +((long long)(buffer[ 6]&0xFF)<<40)
+ // +((long long)(buffer[ 7]&0xFF)<<32)
+ // +((long long)(buffer[ 8]&0xFF)<<24)
+ // +((long long)(buffer[ 9]&0xFF)<<16)
+ // +((long long)(buffer[10]&0xFF)<< 8)
+ // +((long long)(buffer[11]&0xFF) );
- bitspersample=((buffer[12]&0xFF)<<8)+(buffer[13]&0xFF);
+ bitspersample=((buffer[12]&0xFF)<<8)+(buffer[13]&0xFF); // used in debug code
samplesperframe=((buffer[14]&0xFF)<<8)+(buffer[15]&0xFF);
//fprintf(stderr,"process_ps_iq_data: bitspersample=%d samplesperframe=%d\n", bitspersample,samplesperframe);
int previous_dot;
int previous_dash;
- int id=active_receiver->id;
-
sequence=((high_priority_buffer[0]&0xFF)<<24)+((high_priority_buffer[1]&0xFF)<<16)+((high_priority_buffer[2]&0xFF)<<8)+(high_priority_buffer[3]&0xFF);
if (sequence != highprio_rcvd_sequence) {
fprintf(stderr,"HighPrio SeqErr Expected=%ld Seen=%ld\n", highprio_rcvd_sequence, sequence);
#endif
}
- int tx_vfo=split?VFO_B:VFO_A;
+ //int tx_vfo=split?VFO_B:VFO_A;
//if(vfo[tx_vfo].mode==modeCWL || vfo[tx_vfo].mode==modeCWU) {
// local_ptt=local_ptt|dot|dash;
//}
rc=sendto(data_socket,audiobuffer,sizeof(audiobuffer),0,(struct sockaddr*)&audio_addr,audio_addr_length);
if(rc!=sizeof(audiobuffer)) {
- fprintf(stderr,"sendto socket failed for %ld bytes of audio: %d\n",sizeof(audiobuffer),rc);
+ fprintf(stderr,"sendto socket failed for %ld bytes of audio: %d\n",(long)sizeof(audiobuffer),rc);
}
audioindex=4;
audiosequence++;
rc=sendto(data_socket,audiobuffer,sizeof(audiobuffer),0,(struct sockaddr*)&audio_addr,audio_addr_length);
if(rc!=sizeof(audiobuffer)) {
- fprintf(stderr,"sendto socket failed for %ld bytes of audio: %d\n",sizeof(audiobuffer),rc);
+ fprintf(stderr,"sendto socket failed for %ld bytes of audio: %d\n",(long)sizeof(audiobuffer),rc);
}
audioindex=4;
audiosequence++;
}
void noise_menu(GtkWidget *parent) {
- GtkWidget *b;
- int i;
-
parent_window=parent;
dialog=gtk_dialog_new();
void old_protocol_init(int rx,int pixels,int rate) {
int i;
- int num_hpsdr_receivers=how_many_receivers();
fprintf(stderr,"old_protocol_init: num_hpsdr_receivers=%d\n",how_many_receivers());
old_protocol_set_mic_sample_rate(rate);
//
static void start_usb_receive_threads()
{
- int rc;
-
fprintf(stderr,"old_protocol starting USB receive thread: buffer_size=%d\n",buffer_size);
ozy_EP6_rx_thread_id = g_thread_new( "OZY EP6 RX", ozy_ep6_rx_thread, NULL);
//
static gpointer ozy_ep6_rx_thread(gpointer arg) {
int bytes;
- unsigned char buffer[2048];
fprintf(stderr, "old_protocol: USB EP6 receive_thread\n");
running=1;
static int how_many_receivers() {
//
// Depending on how the program is compiled and which board we have,
- // we use a FIXED number of receivers except for RADIOBERRY and PI_SDR,
+ // we use a FIXED number of receivers except for RADIOBERRY,
// where the number may be dynamically changed
//
int ret;
-#if defined(RADIOBERRY) || defined(PI_SDR)
+#ifdef RADIOBERRY
ret = receivers; // 1 or 2
#else
ret = RECEIVERS; // 2
// we need at least 2, and up to 5 for Orion2 boards. This is so because
// the TX DAC is hard-wired to RX4 for HERMES,STEMLAB and to RX5 for ANGELIA
// and beyond.
- ret = 2; // METIS?
- if (device == DEVICE_HERMES || device == DEVICE_STEMLAB) ret = 4;
- if (device == DEVICE_ANGELIA || device == DEVICE_ORION || device == DEVICE_ORION2) ret = 5;
+ switch (device) {
+ case DEVICE_HERMES:
+ case DEVICE_STEMLAB:
+ ret=4; // TX feedback hard-wired to RX4
+ break;
+ case DEVICE_ANGELIA:
+ case DEVICE_ORION:
+ case DEVICE_ORION2:
+ ret=5; // TX feedback hard-wired to RX5
+ break;
+ default:
+ //
+ // older FPGAs support no more than two receivers
+ // then TX feedback is wired to RX2
+ //
+ ret=2;
+ break;
+ }
#endif
return ret;
}
static void process_ozy_input_buffer(unsigned char *buffer) {
- int i,j;
+ int i;
int r;
int b=0;
- unsigned char ozy_samples[8*8];
- int bytes;
int previous_ptt;
int previous_dot;
int previous_dash;
float fsample;
double left_sample_double;
double right_sample_double;
- double mic_sample_double;
double gain=pow(10.0, mic_gain / 20.0);
- int left_sample_1;
- int right_sample_1;
double left_sample_double_rx;
double right_sample_double_rx;
double left_sample_double_tx;
fprintf(stderr,"ozy_i2c_init: starting\n");
- if (rc != 0) {
- fprintf(stderr,"ozy_i2c_init: failed open %d\n",rc);
- }
-
rc = ozy_i2c_read(buffer,2,I2C_MERC1_FW);
if(rc<0) {
perror("ozy_i2c_init2: failed");
return ( i == 0 ) ? 1 : 0 ;
}
+#if defined(__linux__) || defined(__APPLE__)
int filePath (char *sOut, const char *sIn) {
int rc = 0;
char xPath [PATH_MAX] = {0};
char *p;
- int rc = readlink ("/proc/self/exe", xPath, sizeof(xPath));
+ int rc = readlink ("/proc/self/exe", xPath, sizeof(xPath)); // rc SHADOWED
// try to detect the directory from which the executable has been loaded
if (rc >= 0) {
}
return rc;
}
+#endif
ozy_set_led(1,0);
ozy_close();
ozy_open();
- rc=ozy_get_firmware_string(ozy_firmware_version,8);
+ ozy_get_firmware_string(ozy_firmware_version,8);
fprintf(stderr,"Ozy FX2 version: %s\n",ozy_firmware_version);
ozy_i2c_readvars();
int audio_open_input()
{
PaError err;
- PaStreamParameters inputParameters, outputParameters;
+ PaStreamParameters inputParameters;
long framesPerBuffer;
int i;
int padev;
if (rx->playback_handle != NULL && rx->local_audio_buffer != NULL) {
buffer[rx->local_audio_buffer_offset++] = (left+right)*0.5; // mix to MONO
if (rx->local_audio_buffer_offset == BUFFER_SIZE) {
- err=Pa_WriteStream(rx->playback_handle, rx->local_audio_buffer, (unsigned long) BUFFER_SIZE);
+ Pa_WriteStream(rx->playback_handle, rx->local_audio_buffer, (unsigned long) BUFFER_SIZE);
rx->local_audio_buffer_offset=0;
// do not check on errors, there will be underflows every now and then
}
if (rx->playback_handle != NULL && rx->local_audio_buffer != NULL) {
buffer[rx->local_audio_buffer_offset++] = sample;
if (rx->local_audio_buffer_offset == BUFFER_SIZE) {
- err=Pa_WriteStream(rx->playback_handle, rx->local_audio_buffer, (unsigned long) BUFFER_SIZE);
+ Pa_WriteStream(rx->playback_handle, rx->local_audio_buffer, (unsigned long) BUFFER_SIZE);
// do not check on errors, there will be underflows every now and then
rx->local_audio_buffer_offset=0;
}
PROPERTY* property;
FILE* f=fopen(filename,"w+");
char line[512];
- char version[32];
fprintf(stderr,"saveProperties: %s\n",filename);
}
void ps_menu(GtkWidget *parent) {
- GtkWidget *b;
int i;
parent_window=parent;
void start_radio() {
int i;
- int x;
int y;
//fprintf(stderr,"start_radio: selected radio=%p device=%d\n",radio,radio->device);
gdk_window_set_cursor(gtk_widget_get_window(top_window),gdk_cursor_new(GDK_WATCH));
}
#endif
} else {
- double f=(double)(vfo[0].frequency-vfo[0].lo);
if(radio->protocol==NEW_PROTOCOL) {
schedule_high_priority();
#ifdef SOAPYSDR
}
void radioRestoreState() {
- char name[80];
char *value;
fprintf(stderr,"radioRestoreState: %s\n",property_path);
void radioSaveState() {
int i;
- char name[80];
char value[80];
fprintf(stderr,"radioSaveState: %s\n",property_path);
gboolean receiver_button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data) {
RECEIVER *rx=(RECEIVER *)data;
if(rx==active_receiver) {
- int x=(int)event->x;
if (event->button == 1) {
last_x=(int)event->x;
has_moved=FALSE;
g_idle_add(ext_start_rx,NULL);
}
} else {
- int display_width=gtk_widget_get_allocated_width (rx->panadapter);
- int display_height=gtk_widget_get_allocated_height (rx->panadapter);
+ //int display_width=gtk_widget_get_allocated_width (rx->panadapter);
+ //int display_height=gtk_widget_get_allocated_height (rx->panadapter);
if(pressed) {
int x=(int)event->x;
if (event->button == 1) {
if(state) {
rx->update_timer_id=gdk_threads_add_timeout_full(G_PRIORITY_HIGH_IDLE,1000/rx->fps, update_display, rx, NULL);
} else {
- if(rx->update_timer_id!=-1) {
- rx->update_timer_id=-1;
- }
+ rx->update_timer_id=-1;
}
}
void set_mode(RECEIVER *rx,int m) {
- int local_mode=m;
#ifdef PSK
if(vfo[rx->id].mode!=modePSK && m==modePSK) {
- local_mode=modeUSB;
//init_psk();
show_psk();
} else if(vfo[rx->id].mode==modePSK && m!=modePSK) {
int span_clip_h = 0;
int pixels=rx->pixels;
int stitches = 1;
- int avm = 0;
- double tau = 0.001 * 120.0;
int calibration_data_set = 0;
double span_min_freq = 0.0;
double span_max_freq = 0.0;
}
void full_rx_buffer(RECEIVER *rx) {
- int j;
int error;
g_mutex_lock(&rx->mutex);
fprintf(stderr,"RIGCTL: RESP=%s\n",msg);
#endif
if(client_sock == -1) { // Serial port
- int bytes=write(fd,msg,strlen(msg));
+ write(fd,msg,strlen(msg));
} else { // TCP/IP port
- int bytes=write(client_sock, msg, strlen(msg));
+ write(client_sock, msg, strlen(msg));
}
}
static gpointer rigctl_server(gpointer data) {
int port=GPOINTER_TO_INT(data);
- int rc;
int on=1;
int i;
for(i=0;i<MAX_CLIENTS;i++) {
if(client[i].socket==-1) {
- int client_socket;
- struct sockaddr_in client_address;
- int client_address_length;
fprintf(stderr,"Using client: %d\n",i);
client[i].socket=accept(server_socket,(struct sockaddr*)&client[i].address,&client[i].address_length);
}
static gpointer rigctl_client (gpointer data) {
- int len;
- int c;
CLIENT *client=(CLIENT *)data;
int numbytes;
char cmd_input[MAXDATASIZE] ;
char cmd_save[80];
- char cw_check_buf[4];
while(server_running && (numbytes=recv(client->socket , cmd_input , MAXDATASIZE-2 , 0)) > 0 ) {
for(i=0;i<numbytes;i++) { work_buf[i] = cmd_input[i]; }
int work_int;
int new_low, new_high;
int zzid_flag;
- double meter;
double forward;
double reverse;
double vswr;
}
else if((strcmp(cmd_str,"DO")==0) && zzid_flag == 1) {
// PiHPSDR - ZZDO - Set/Read Waterfall Hi Limit
- if(zzid_flag == 1) { // ZZDO
if(len<=2) {
if(active_receiver->waterfall_high <0) {
sprintf(msg,"ZZDO-%03d;",abs(active_receiver->waterfall_high));
send_resp(client_sock,"?;");
}
}
- }
}
else if((strcmp(cmd_str,"DQ")==0) && (zzid_flag == 0)) {
// TS-2000 - DQ - ETs/and reads the DCS function status - not supported
if(zzid_flag == 0) {
if(len <=2) {
work_int = (int) ((mic_gain +10.0)* 100.0/60.0);
- if(zzid_flag == 0) {
- sprintf(msg,"MG%03d;",work_int);
- } else {
- sprintf(msg,"ZZMG%03d;",work_int);
- }
+ sprintf(msg,"MG%03d;",work_int);
send_resp(client_sock,msg);
} else {
int tval = atoi(&cmd_input[2]);
// PiHPSDR - ZZNR - Set/Read Noise Reduction function status
if(len <=2) {
if(zzid_flag == 0) {
- if (active_receiver->nr==1 & active_receiver->nr2==0) {
+ if (active_receiver->nr==1 && active_receiver->nr2==0) {
send_resp(client_sock,"NR1;");
- } else if (active_receiver->nr==1 & active_receiver->nr2==1) {
+ } else if (active_receiver->nr==1 && active_receiver->nr2==1) {
send_resp(client_sock,"NR2;");
} else {
send_resp(client_sock,"NR0;");
}
} else {
- if (active_receiver->nr==1 & active_receiver->nr2==0) {
+ if (active_receiver->nr==1 && active_receiver->nr2==0) {
send_resp(client_sock,"ZZNR1;");
- } else if (active_receiver->nr==1 & active_receiver->nr2==1) {
+ } else if (active_receiver->nr==1 && active_receiver->nr2==1) {
send_resp(client_sock,"ZZNR2;");
} else {
send_resp(client_sock,"ZZNR0;");
}
break;
}
- if(zzid_flag == 0) {
- sprintf(msg,"ST%02d;",coded_step_val);
- } else {
- sprintf(msg,"ZZST%02d;",coded_step_val);
- }
+ sprintf(msg,"ST%02d;",coded_step_val);
send_resp(client_sock,msg);
} else {
coded_step_val = atoi(&cmd_input[2]);
static gpointer serial_server(gpointer data) {
// We're going to Read the Serial port and
// when we get data we'll send it to parse_cmd
- int num_chars;
char ser_buf[MAXDATASIZE];
char work_buf[MAXDATASIZE];
const char s[2]=";";
char *p;
char *d;
char save_buf[MAXDATASIZE] = "";
- int str_len = 0;
+ int str_len;
cat_control++;
while(1) {
int num_chars = read (fd, ser_buf, sizeof ser_buf);
// (Port numbers now const ints instead of defines..)
//
void launch_rigctl () {
- int err;
fprintf(stderr, "LAUNCHING RIGCTL!!\n");
}
void rigctl_menu(GtkWidget *parent) {
- int i;
-
parent_window=parent;
dialog=gtk_dialog_new();
void rx_panadapter_update(RECEIVER *rx) {
int i;
int x1,x2;
- int result;
float *samples;
- float saved_max;
- float saved_min;
cairo_text_extents_t extents;
gboolean active=active_receiver==rx;
void rx_panadapter_init(RECEIVER *rx, int width,int height) {
- int display_width=width;
- int display_height=height;
-
rx->panadapter_surface=NULL;
rx->panadapter = gtk_drawing_area_new ();
gtk_widget_set_size_request (rx->panadapter, width, height);
gtk_container_add(GTK_CONTAINER(content),attenuation_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
//gtk_widget_show_all(scale_dialog);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(attenuation_scale),(double)adc_attenuation[active_receiver->adc]);
gtk_container_add(GTK_CONTAINER(content),agc_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
//gtk_widget_show_all(scale_dialog);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(agc_scale),receiver[rx]->agc_gain);
gtk_container_add(GTK_CONTAINER(content),af_gain_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
//gtk_widget_show_all(scale_dialog);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(af_gain_scale),receiver[rx]->volume*100.0);
gtk_container_add(GTK_CONTAINER(content),rf_gain_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
//gtk_widget_show_all(scale_dialog);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(rf_gain_scale),receiver[rx]->rf_gain);
gtk_container_add(GTK_CONTAINER(content),filter_width_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
//gtk_widget_show_all(scale_dialog);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(filter_width_scale),(double)width);
gtk_container_add(GTK_CONTAINER(content),mic_gain_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
//gtk_widget_show_all(scale_dialog);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(mic_gain_scale),mic_gain);
gtk_container_add(GTK_CONTAINER(content),mic_gain_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
//gtk_widget_show_all(scale_dialog);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(mic_gain_scale),linein_gain);
gtk_container_add(GTK_CONTAINER(content),drive_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
//gtk_widget_show_all(scale_dialog);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(drive_scale),value);
gtk_widget_show(squelch_scale);
gtk_container_add(GTK_CONTAINER(content),squelch_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(squelch_scale),active_receiver->squelch);
gtk_widget_show(comp_scale);
gtk_container_add(GTK_CONTAINER(content),comp_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(comp_scale),tx->compressor_level);
gtk_container_add(GTK_CONTAINER(content),diversity_gain_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
//gtk_widget_show_all(scale_dialog);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(diversity_gain_scale),div_gain);
gtk_container_add(GTK_CONTAINER(content),diversity_phase_scale);
scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL);
//gtk_widget_show_all(scale_dialog);
- int result=gtk_dialog_run(GTK_DIALOG(scale_dialog));
+ gtk_dialog_run(GTK_DIALOG(scale_dialog));
} else {
g_source_remove(scale_timer);
gtk_range_set_value (GTK_RANGE(diversity_phase_scale),div_phase);
void memSaveState() {
char name[128];
char value[128];
- int current;
- BANDSTACK_ENTRY* entry;
- int workvar;
int b;
- int stack;
for(b=0;b<NUM_OF_MEMORYS;b++) {
if(strlen(mem[b].title)>0) {
void memRestoreState() {
char* value;
int b;
- int stack;
char name[128];
- BANDSTACK_ENTRY* entry;
- int current;
// Initialize the array with default values
// Allows this to be a compile time option..
for(b=0;b<NUM_OF_MEMORYS;b++) {
sprintf(name,"mem.%d.title",b);
value=getProperty(name);
- if(value) strcpy(mem[b].title,value);
- fprintf(stderr,"RESTORE: index=%d title=%s\n",b,value);
+ if(value) {
+ strcpy(mem[b].title,value);
+ fprintf(stderr,"RESTORE: index=%d title=%s\n",b,value);
+ }
sprintf(name,"mem.%d.freqA",b);
value=getProperty(name);
- if(value) mem[b].frequency=atoll(value);
- fprintf(stderr,"RESTORE MEM:Mem %d=FreqA %11lld\n",b,mem[b].frequency);
+ if(value) {
+ mem[b].frequency=atoll(value);
+ fprintf(stderr,"RESTORE MEM:Mem %d=FreqA %11lld\n",b,mem[b].frequency);
+ }
sprintf(name,"mem.%d.mode",b);
value=getProperty(name);
- if(value) mem[b].mode=atoi(value);
- fprintf(stderr,"RESTORE: index=%d mode=%d\n",b,mem[b].mode);
+ if(value) {
+ mem[b].mode=atoi(value);
+ fprintf(stderr,"RESTORE: index=%d mode=%d\n",b,mem[b].mode);
+ }
sprintf(name,"mem.%d.filter",b);
value=getProperty(name);
- if(value) mem[b].filter=atoi(value);
- fprintf(stderr,"RESTORE: index=%d filter=%d\n",b,mem[b].filter);
+ if(value) {
+ mem[b].filter=atoi(value);
+ fprintf(stderr,"RESTORE: index=%d filter=%d\n",b,mem[b].filter);
+ }
}
//value=getProperty("band");
void store_menu(GtkWidget *parent) {
GtkWidget *b;
int i;
- BAND *band;
char label_str[50];
parent_window=parent;
void switch_menu(GtkWidget *parent) {
int row=0;
int col=0;
- int i;
- char label[32];
+ char label[64];
dialog=gtk_dialog_new();
gtk_window_set_transient_for(GTK_WINDOW(dialog),GTK_WINDOW(parent_window));
G_CALLBACK (gtk_widget_destroy),
dialog);
- int result=gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_dialog_run(GTK_DIALOG(dialog));
}
TRANSMITTER *tx=(TRANSMITTER *)data;
int rc;
- int i;
-
//fprintf(stderr,"update_display: tx id=%d\n",tx->id);
if(tx->displaying) {
#ifdef AUDIO_SAMPLES
int span_clip_h = 0;
int pixels=tx->pixels;
int stitches = 1;
- int avm = 0;
- double tau = 0.001 * 120.0;
int calibration_data_set = 0;
double span_min_freq = 0.0;
double span_max_freq = 0.0;
static void full_tx_buffer(TRANSMITTER *tx) {
long isample;
long qsample;
- double gain, sidevol, ramp, fgain;
+ double gain, sidevol, ramp;
double *dp;
int j;
int error;
int sidetone=0;
static int txflag=0;
static long last_qsample=0;
- long delta;
// It is important to query tx->mode and tune only *once* within this function, to assure that
// the two "if (cwmode)" clauses give the same result.
}
void tx_menu(GtkWidget *parent) {
- GtkWidget *b;
int i;
parent_window=parent;
GdkEventButton *event,
gpointer data)
{
- int x=(int)event->x;
if (event->button == 1) {
last_x=(int)event->x;
has_moved=FALSE;
{
TRANSMITTER *tx=(TRANSMITTER *)data;
int display_width=gtk_widget_get_allocated_width (tx->panadapter);
- int display_height=gtk_widget_get_allocated_height (tx->panadapter);
+ //int display_height=gtk_widget_get_allocated_height (tx->panadapter);
if(pressed) {
int x=(int)event->x;
void tx_panadapter_update(TRANSMITTER *tx) {
int i;
- int result;
float *samples;
- float saved_max;
- float saved_min;
- cairo_text_extents_t extents;
if(tx->panadapter_surface) {
}
// plot frequency markers
- long long f;
- long long divisor=20000;
//long long half=24000LL; //(long long)(tx->output_rate/2);
long long half=6000LL; //(long long)(tx->output_rate/2);
long long frequency;
}
#ifdef TX_FREQ_MARKERS
- //divisor=5000LL;
- divisor=50000LL;
+ long long f;
+ cairo_text_extents_t extents;
+ long long divisor=50000;
for(i=0;i<display_width;i++) {
f = frequency - half + (long) (hz_per_pixel * i);
if (f > 0) {
FILE* f=fopen("latest","r");
if(f) {
- char *s=fgets(new_version,sizeof(new_version),f);
+ fgets(new_version,sizeof(new_version),f);
fclose(f);
} else {
fprintf(stderr,"check_update: could not read latest version\n");
fprintf(stderr,"check_version: latest version is %s\n",new_version);
- fprintf(stderr,"check_version: length of version=%ld length of new_version=%ld\n", strlen(version), strlen(new_version));
+ fprintf(stderr,"check_version: length of version=%ld length of new_version=%ld\n", (long)strlen(version), (long)strlen(new_version));
rc=strcmp(version,new_version);
return rc;
GdkEventScroll *event,
gpointer data)
{
- int i;
if(event->direction==GDK_SCROLL_UP) {
vfo_move(step,TRUE);
} else {
cairo_set_source_rgb(cr, 1.0, 1.0, 0.0);
cairo_show_text(cr, temp_text);
- char *info=getFrequencyInfo(af,active_receiver->filter_low,active_receiver->filter_high);
+ getFrequencyInfo(af,active_receiver->filter_low,active_receiver->filter_high);
/*
cairo_move_to(cr, (my_width/4)*3, 50);
cairo_show_text(cr, getFrequencyInfo(af));
}
GtkWidget* vfo_init(int width,int height,GtkWidget *parent) {
- int i;
fprintf(stderr,"vfo_init: width=%d height=%d\n", width, height);
}
static int level_update(void *data) {
- char title[16];
if(run_level) {
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(level),peak);
}
static void start_level_thread() {
- int rc;
run_level=1;
level_thread_id = g_thread_new( "VOX level", level_thread, NULL);
if(!level_thread_id ) {
}
void vox_menu(GtkWidget *parent) {
- int i;
-
parent_window=parent;
dialog=gtk_dialog_new();
const char *maxf;
const char *lof;
const char *loerr;
- const char *txlof;
- const char *txloerr;
+ const char *txlof; // used in temporarily de-activated code
+ const char *txloerr; // used in temporarily de-activated code
for(i=BANDS;i<BANDS+XVTRS;i++) {
BAND *xvtr=band_get_band(i);
BANDSTACK *bandstack=xvtr->bandstack;
}
void update_receiver(int band,gboolean error) {
- int i;
RECEIVER *rx=active_receiver;
gboolean saved_ctun;
//g_print("update_receiver: band=%d error=%d\n",band,error);
}
void xvtr_menu(GtkWidget *parent) {
- int i,j;
+ int i;
char f[16];
fprintf(stderr,"xvtr_menu\n");