#include "new_protocol.h"
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
static GtkWidget *dialog=NULL;
static GtkWidget *grid=NULL;
-static GtkWidget *adc0_antenna_combo_box;
-static GtkWidget *dac0_antenna_combo_box;
static void cleanup() {
if(dialog!=NULL) {
}
}
-static void adc0_antenna_cb(GtkComboBox *widget,gpointer data) {
- ADC *adc=(ADC *)data;
- adc->antenna=gtk_combo_box_get_active(widget);
- if(radio->protocol==NEW_PROTOCOL) {
- schedule_high_priority();
- }
-}
-
-static void dac0_antenna_cb(GtkComboBox *widget,gpointer data) {
- DAC *dac=(DAC *)data;
- dac->antenna=gtk_combo_box_get_active(widget);
- if(radio->protocol==NEW_PROTOCOL) {
- schedule_high_priority();
- }
-}
-
static void tx_ant_cb(GtkToggleButton *widget, gpointer data) {
if(gtk_toggle_button_get_active(widget)) {
int b=(GPOINTER_TO_UINT(data))>>4;
#ifdef GPIO
-static GtkWidget *dialog;
-
static GtkWidget *i2c_sw_text[16];
static void response_event(GtkWidget *dialog,gint id,gpointer user_data) {
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
-
static GtkWidget *dialog=NULL;
void cw_changed() {
static GtkWidget *phase_fine_scale=NULL;
static GtkWidget *phase_coarse_scale=NULL;
-static GtkWidget *level;
-
static double gain_coarse, gain_fine;
static double phase_coarse, phase_fine;
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
-
static GtkWidget *dialog=NULL;
static void cleanup() {
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
-
static GtkWidget *dialog=NULL;
static void cleanup() {
}
}
-static gboolean discovery_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- cleanup();
-#ifdef GPIO
- gpio_close();
-#endif
- switch(protocol) {
- case ORIGINAL_PROTOCOL:
- old_protocol_stop();
- break;
- case NEW_PROTOCOL:
- new_protocol_stop();
- break;
- }
- radioSaveState();
- radio_stop();
- gtk_container_remove(GTK_CONTAINER(top_window), fixed);
- gtk_widget_destroy(fixed);
- gtk_container_add(GTK_CONTAINER(top_window), grid);
- discovery();
- return TRUE;
-}
-
static gboolean close_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
cleanup();
return TRUE;
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
-
static GtkWidget *dialog=NULL;
static void cleanup() {
g_signal_connect (close_b, "pressed", G_CALLBACK(close_cb), NULL);
gtk_grid_attach(GTK_GRID(grid),close_b,0,0,1,1);
- BAND *band=band_get_band(vfo[active_receiver->id].band);
- BANDSTACK *bandstack=band->bandstack;
- BANDSTACK_ENTRY *entry=&bandstack->entry[vfo[active_receiver->id].bandstack];
FILTER* band_filters=filters[vfo[active_receiver->id].mode];
- FILTER* band_filter=&band_filters[vfo[active_receiver->id].filter];
switch(vfo[active_receiver->id].mode) {
case modeFMN:
default:
for(i=0;i<FILTERS-2;i++) {
- FILTER* band_filter=&band_filters[i];
GtkWidget *b=gtk_button_new_with_label(band_filters[i].title);
if(i==vfo[active_receiver->id].filter) {
set_button_text_color(b,"orange");
static int max_count=0;
static int max_reverse=0;
-static void
-meter_clear_surface (void)
-{
- cairo_t *cr;
- cr = cairo_create (meter_surface);
-
- cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
- cairo_fill (cr);
-
- cairo_destroy (cr);
-}
-
static gboolean
meter_configure_event_cb (GtkWidget *widget,
GdkEventConfigure *event,
#include <wdsp.h>
static GtkWidget *parent_window = NULL;
-static GtkWidget *menu_b = NULL;
static GtkWidget *dialog = NULL;
void nb_changed() {
static char interface_name[64];
static struct sockaddr_in interface_addr={0};
static struct sockaddr_in interface_netmask={0};
-static int interface_length;
#define DISCOVERY_PORT 1024
static int discovery_socket;
-static struct sockaddr_in discovery_addr;
void new_discover(struct ifaddrs* iface);
#include "midi_menu.h"
#endif
-
-static GtkWidget *menu_b=NULL;
-
static GtkWidget *dialog=NULL;
GtkWidget *sub_menu=NULL;
}
}
-static gboolean band_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- start_band();
- return TRUE;
-}
-
void start_bandstack() {
int old_menu=active_menu;
cleanup();
}
}
-static gboolean bandstack_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- start_bandstack();
- return TRUE;
-}
-
void start_mode() {
int old_menu=active_menu;
cleanup();
}
}
-static gboolean mode_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- start_mode();
- return TRUE;
-}
-
void start_filter() {
int old_menu=active_menu;
cleanup();
}
}
-static gboolean filter_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- start_filter();
- return TRUE;
-}
-
void start_noise() {
int old_menu=active_menu;
cleanup();
}
}
-static gboolean noise_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- start_noise();
- return TRUE;
-}
-
void start_agc() {
int old_menu=active_menu;
cleanup();
}
}
-static gboolean agc_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- start_agc();
- return TRUE;
-}
-
void start_vox() {
cleanup();
vox_menu(top_window);
}
}
-static gboolean vfo_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- start_vfo(active_receiver->id);
- return TRUE;
-}
-
void start_store() {
cleanup();
store_menu(top_window);
}
-static gboolean store_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- start_store();
- return TRUE;
-}
-
void start_tx() {
cleanup();
tx_menu(top_window);
test_menu(top_window);
}
-static gboolean test_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
- start_test();
- return TRUE;
-}
-
#ifdef CLIENT_SERVER
void start_server() {
cleanup();
static long tx_specific_sequence = 0;
static long ddc_sequence[7/*MAX_DDC*/];
-//static int buffer_size=BUFFER_SIZE;
-//static int fft_size=4096;
-static int dspRate=48000;
-static int outputRate=48000;
-
-static int micSampleRate=48000;
-static int micDspRate=48000;
-static int micOutputRate=192000;
static int micoutputsamples; // 48000 in, 192000 out
-static double micinputbuffer[MAX_BUFFER_SIZE*2]; // 48000
-static double iqoutputbuffer[MAX_BUFFER_SIZE*4*2]; //192000
-
static long tx_iq_sequence=0;
static unsigned char iqbuffer[1444];
static int iqindex;
static int spectrumWIDTH=800;
-static int SPECTRUM_UPDATES_PER_SECOND=10;
-
-static float phase = 0.0F;
static long response_sequence=0;
static long highprio_rcvd_sequence=0;
static int outputsamples;
#endif
-static int leftaudiosample;
-static int rightaudiosample;
static long audiosequence;
static unsigned char audiobuffer[260]; // was 1444
static int audioindex;
process_command_response();
free(command_response_buffer);
}
+ return NULL;
}
static gpointer high_priority_thread(gpointer data) {
process_high_priority();
free(high_priority_buffer);
}
+ return NULL;
}
static gpointer mic_line_thread(gpointer data) {
process_mic_data(mic_bytes_read);
free(mic_line_buffer);
}
+ return NULL;
}
static gpointer iq_thread(gpointer data) {
}
free(buffer);
}
+
+ return NULL;
}
static void process_iq_data(unsigned char *buffer, RECEIVER *rx) {
static long blocks;
static pthread_t programmer_thread_id;
-static pthread_t programmer_response_thread_id;
-
-static int running;
void *programmer_thread(void *arg);
void *programmer_response_thread(void *arg);
static GtkWidget *dialog=NULL;
-static GtkWidget *last_filter;
-
static void cleanup() {
if(dialog!=NULL) {
gtk_widget_destroy(dialog);
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
-
static GtkWidget *dialog=NULL;
static void cleanup() {
static char interface_name[64];
static struct sockaddr_in interface_addr={0};
static struct sockaddr_in interface_netmask={0};
-static int interface_length;
#define DISCOVERY_PORT 1024
static int discovery_socket;
-static struct sockaddr_in discovery_addr;
static GThread *discover_thread_id;
static gpointer discover_receive_thread(gpointer data);
static int display_width;
-static int speed;
-
-static int dsp_rate=48000;
-static int output_rate=48000;
-
static int data_socket=-1;
static int tcp_socket=-1;
static struct sockaddr_in data_addr;
static unsigned char control_in[5]={0x00,0x00,0x00,0x00,0x00};
-static double tuning_phase;
-static double phase=0.0;
-
static int running;
-static long ep4_sequence;
static uint32_t last_seq_num=-0xffffffff;
static int suppress_ozy_packet = 0;
static int current_rx=0;
-static int samples=0;
static int mic_samples=0;
static int mic_sample_divisor=1;
static int dash=0;
static int dot=0;
-static double micinputbuffer[MAX_BUFFER_SIZE*2];
-
-static int left_rx_sample;
-static int right_rx_sample;
-static int left_tx_sample;
-static int right_tx_sample;
-
static unsigned char output_buffer[OZY_BUFFER_SIZE];
static int output_buffer_index=8;
static GThread *receive_thread_id;
static gpointer receive_thread(gpointer arg);
static void process_ozy_input_buffer(unsigned char *buffer);
-static void process_bandscope_buffer(char *buffer);
void ozy_send_buffer();
static unsigned char metis_buffer[1032];
static int rx2channel;
static void process_ozy_byte(int b) {
- int i,j;
float fsample;
switch(state) {
case SYNC_0:
{
BAND *band=band_get_current_band();
int power=0;
- static int last_power=0;
- //
+
// Some HPSDR apps for the RedPitaya generate CW inside the FPGA, but while
// doing this, DriveLevel changes are processed by the server, but do not become effective.
// If the CW paddle is hit, the new PTT state is sent to piHPSDR, then the TX drive
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
-
static GtkWidget *dialog=NULL;
static GtkWidget *grid2;
GtkWidget *fixed;
static GtkWidget *vfo_panel;
static GtkWidget *meter;
-static GtkWidget *menu;
static GtkWidget *zoompan;
static GtkWidget *sliders;
static GtkWidget *toolbar;
-static GtkWidget *panadapter;
-static GtkWidget *waterfall;
-static GtkWidget *audio_waterfall;
// RX and TX calibration
long long calibration = 0LL;
int radio_sample_rate;
gboolean iqswap;
-static gint save_timer_id;
-
DISCOVERED *radio = NULL;
#ifdef CLIENT_SERVER
gboolean radio_is_remote = FALSE;
static int pre_tune_mode;
static int pre_tune_cw_internal;
-static int pre_tune_filter_low;
-static int pre_tune_filter_high;
int enable_tx_equalizer = 0;
int tx_equalizer[4] = {0, 0, 0, 0};
}
}
-static gboolean save_cb(gpointer data) {
- radioSaveState();
- return TRUE;
-}
-
static gboolean minimize_cb(GtkWidget *widget, GdkEventButton *event,
gpointer data) {
gtk_window_iconify(GTK_WINDOW(top_window));
#endif
// g_print("Create transmitter\n");
if (can_transmit) {
- double pk;
if (duplex) {
transmitter = create_transmitter(CHANNEL_TX, buffer_size, fft_size,
updates_per_second, display_width / 4,
void start_radio() {
int i;
- int y;
// g_print("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));
- int rc;
-
protocol = radio->protocol;
device = radio->device;
#endif
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
static GtkWidget *dialog=NULL;
-static GtkWidget *rx_gains[3];
-static GtkWidget *tx_gain;
-static GtkWidget *tx_gains[2];
-static GtkWidget *sat_b;
-static GtkWidget *rsat_b;
static GtkWidget *receivers_1;
static GtkWidget *receivers_2;
vfo_encoder_divisor=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
}
-#ifdef GPIO
-static void gpio_settle_value_changed_cb(GtkWidget *widget, gpointer data) {
- settle_time=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
-}
-#endif
-
/*
static void toolbar_dialog_buttons_cb(GtkWidget *widget, gpointer data) {
toolbar_dialog_buttons=toolbar_dialog_buttons==1?0:1;
static gboolean pressed = FALSE;
static gboolean making_active = FALSE;
-static int waterfall_samples = 0;
-static int waterfall_resample = 6;
-
void receiver_weak_notify(gpointer data, GObject *obj) {
RECEIVER *rx = (RECEIVER *)data;
g_print("%s: id=%d obj=%p\n", __FUNCTION__, rx->id, obj);
g_mutex_unlock(&rx->mutex);
}
-static int rx_buffer_seen = 0;
-static int tx_buffer_seen = 0;
-
void add_iq_samples(RECEIVER *rx, double i_sample, double q_sample) {
rx->iq_input_buffer[rx->samples * 2] = i_sample;
rx->iq_input_buffer[(rx->samples * 2) + 1] = q_sample;
// the port client will be connecting to
// 2-26-17 K5JAE - Changed the defines to const ints to allow use via pointers.
-static const int TelnetPortA = 19090;
-static const int TelnetPortB = 19091;
-static const int TelnetPortC = 19092;
+//static const int TelnetPortA = 19090;
+//static const int TelnetPortB = 19091;
+//static const int TelnetPortC = 19092;
#define RIGCTL_THROTTLE_NSEC 15000000L
#define NSEC_PER_SEC 1000000000L
static gboolean serial_running = FALSE;
static int server_socket = -1;
-static int server_address_length;
static struct sockaddr_in server_address;
-static int rigctl_timer = 0;
-
typedef struct _client {
int fd;
socklen_t address_length;
g_mutex_unlock(&mutex_a->m);
g_idle_add(ext_vfo_update, NULL);
- int save_flag = 0; // Used to concatenate two cmd lines together
- int semi_number = 0;
int i;
- char *work_ptr;
- char work_buf[MAXDATASIZE];
int numbytes;
char cmd_input[MAXDATASIZE];
- char cmd_save[80];
char *command = g_new(char, MAXDATASIZE);
int command_index = 0;
// read meter value
if (command[5] == ';') {
int m = atoi(&command[4]);
- sprintf(reply, "ZZRM%d%20d;", smeter, (int)receiver[0]->meter);
+ sprintf(reply, "ZZRM%d%20d;", m, (int)receiver[0]->meter);
send_resp(client->fd, reply);
}
break;
char reply[80];
reply[0] = '\0';
gboolean implemented = TRUE;
- gboolean errord = FALSE;
switch (command[0]) {
case '#':
} else {
new_protocol_stop();
}
- int rc = system("shutdown -h -P now");
+ system("shutdown -h -P now");
_exit(0);
}
break;
}
} else if (command[6] == ';') {
int fw = atoi(&command[2]);
- int val = filter->low = fw;
+ filter->low = fw;
switch (vfo[active_receiver->id].mode) {
case modeCWL:
case modeCWU:
// set/read stallite mode status
if (command[2] == ';') {
sprintf(reply, "SA%d%d%d%d%d%d%dSAT? ;",
- sat_mode == SAT_MODE | sat_mode == RSAT_MODE, 0, 0, 0,
+ sat_mode == SAT_MODE || sat_mode == RSAT_MODE, 0, 0, 0,
sat_mode == SAT_MODE, sat_mode == RSAT_MODE, 0);
send_resp(client->fd, reply);
} else if (command[9] == ';') {
gboolean rigctl_debug=FALSE;
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
static GtkWidget *dialog=NULL;
static GtkWidget *serial_port_entry;
rigctl_port_base = gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget));
}
-static void serial_value_changed_cb(GtkWidget *widget, gpointer data) {
- sprintf(ser_port,"/dev/ttyACM%0d",(int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget)));
- fprintf(stderr,"RIGCTL_MENU: New Serial port=%s\n",ser_port);
-}
-
static void rigctl_debug_cb(GtkWidget *widget, gpointer data) {
rigctl_debug=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
g_print("---------- RIGCTL DEBUG %s ----------\n",rigctl_debug?"ON":"OFF");
fprintf(stderr,"RIGCTL_MENU: Baud rate changed: %d\n",serial_baud_rate);
}
-// Set Parity 0=None, 1=Even, 2=0dd
-static void parity_cb(GtkWidget *widget, gpointer data) {
- serial_parity = GPOINTER_TO_INT(data);
- fprintf(stderr,"RITCTL_MENU: Serial Parity changed=%d\n", serial_parity);
-}
-
void rigctl_menu(GtkWidget *parent) {
parent_window=parent;
#include "new_protocol.h"
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
static GtkWidget *dialog=NULL;
static GtkWidget *local_audio_b=NULL;
static GtkWidget *output=NULL;
static gfloat cw_frequency;
static gint sequence_error_count=0;
-static gint fexchange_error_count=0;
/* Create a new surface of the appropriate size to store our scribbles */
static gboolean
cairo_line_to(cr, (double)i, s2);
}
- cairo_pattern_t *gradient;
+ cairo_pattern_t *gradient = NULL;
if(display_gradient) {
gradient = cairo_pattern_create_linear(0.0, display_height, 0.0, 0.0);
// calculate where S9 is
static GtkWidget *squelch_label;
static GtkWidget *squelch_scale;
static GtkWidget *squelch_enable;
-static GtkWidget *comp_label;
static GtkWidget *comp_scale;
-static GtkWidget *comp_enable;
-static GtkWidget *dummy_label;
static GtkWidget *filter_width_scale;
static GtkWidget *filter_shift_scale;
static GtkWidget *diversity_gain_scale;
static GtkWidget *diversity_phase_scale;
-static GdkRGBA white;
-static GdkRGBA gray;
-
void sliders_update() {
if(display_sliders) {
if(can_transmit) {
#endif
}
-static void compressor_value_changed_cb(GtkWidget *widget, gpointer data) {
- transmitter_set_compressor_level(transmitter,gtk_range_get_value(GTK_RANGE(widget)));
- // This value is now also reflected in the VFO panel
- g_idle_add(ext_vfo_update, NULL);
-
-}
-
-static void compressor_enable_cb(GtkWidget *widget, gpointer data) {
- transmitter_set_compressor(transmitter,gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
- // This value is now also reflected in the VFO panel
- g_idle_add(ext_vfo_update, NULL);
-}
-
void set_squelch() {
g_print("%s\n",__FUNCTION__);
setSquelch(active_receiver);
static GtkWidget *sim_s6;
static GtkWidget *sim_function;
-
-static GtkWidget *last_band;
-static GtkWidget *last_bandstack;
-static GtkWidget *last_mode;
-static GtkWidget *last_filter;
-
static GdkRGBA white;
static GdkRGBA gray;
-static gint rit_plus_timer=-1;
-static gint rit_minus_timer=-1;
-static gint xit_plus_timer=-1;
-static gint xit_minus_timer=-1;
-
SWITCH *toolbar_switches=switches_controller1[0];
-static gboolean rit_timer_cb(gpointer data) {
- int i=GPOINTER_TO_INT(data);
- vfo_rit(active_receiver->id,i);
- return TRUE;
-}
-
-static gboolean xit_timer_cb(gpointer data) {
- int i=GPOINTER_TO_INT(data);
- transmitter->xit+=(i*rit_increment);
- if(transmitter->xit>10000) transmitter->xit=10000;
- if(transmitter->xit<-10000) transmitter->xit=-10000;
- if(protocol==NEW_PROTOCOL) {
- schedule_high_priority();
- }
- g_idle_add(ext_vfo_update,NULL);
- return TRUE;
-}
-
void update_toolbar_labels() {
gtk_button_set_label(GTK_BUTTON(sim_mox),ActionTable[toolbar_switches[0].switch_function].button_str);
gtk_button_set_label(GTK_BUTTON(sim_s1),ActionTable[toolbar_switches[1].switch_function].button_str);
gtk_button_set_label(GTK_BUTTON(sim_function),ActionTable[toolbar_switches[7].switch_function].button_str);
}
-static void close_cb(GtkWidget *widget, gpointer data) {
- gtk_widget_destroy(last_dialog);
- last_dialog=NULL;
-}
-
void band_cb(GtkWidget *widget, gpointer data) {
start_band();
}
#endif
}
-static void atob_cb (GtkWidget *widget, gpointer data) {
-#ifdef CLIENT_SERVER
- if(radio_is_remote) {
- send_vfo(client_socket,VFO_A_TO_B);
- } else {
-#endif
- vfo_a_to_b();
-#ifdef CLIENT_SERVER
- }
-#endif
-}
-
-static void btoa_cb (GtkWidget *widget, gpointer data) {
-#ifdef CLIENT_SERVER
- if(radio_is_remote) {
- send_vfo(client_socket,VFO_B_TO_A);
- } else {
-#endif
- vfo_b_to_a();
-#ifdef CLIENT_SERVER
- }
-#endif
-}
-
-static void aswapb_cb (GtkWidget *widget, gpointer data) {
-#ifdef CLIENT_SERVER
- if(radio_is_remote) {
- send_vfo(client_socket,VFO_A_SWAP_B);
- } else {
-#endif
- vfo_a_swap_b();
-#ifdef CLIENT_SERVER
- }
-#endif
-}
-
-static void split_cb (GtkWidget *widget, gpointer data) {
-#ifdef CLIENT_SERVER
- if(radio_is_remote) {
- send_split(client_socket,split==1?0:1);
- } else {
-#endif
- g_idle_add(ext_split_toggle,NULL);
-#ifdef CLIENT_SERVER
- }
-#endif
-}
-
-static void duplex_cb (GtkWidget *widget, gpointer data) {
- if(can_transmit && !isTransmitting()) {
-#ifdef CLIENT_SERVER
- if(radio_is_remote) {
- send_dup(client_socket,duplex==1?0:1);
- } else {
-#endif
- duplex=(duplex==1)?0:1;
- g_idle_add(ext_set_duplex,NULL);
-#ifdef CLIENT_SERVER
- }
-#endif
- }
-}
-
-static void sat_cb (GtkWidget *widget, gpointer data) {
- int temp;
- if(can_transmit) {
- if(sat_mode==SAT_MODE) {
- temp=SAT_NONE;
- } else {
- temp=SAT_MODE;
- }
-#ifdef CLIENT_SERVER
- if(radio_is_remote) {
- send_sat(client_socket,temp);
- } else {
-#endif
- sat_mode=temp;
- g_idle_add(ext_vfo_update,NULL);
-#ifdef CLIENT_SERVER
- }
-#endif
- }
-}
-
-static void rsat_cb (GtkWidget *widget, gpointer data) {
- int temp;
- if(can_transmit) {
- if(sat_mode==RSAT_MODE) {
- temp=SAT_NONE;
- } else {
- temp=RSAT_MODE;
- }
-#ifdef CLIENT_SERVER
- if(radio_is_remote) {
- send_sat(client_socket,temp);
- } else {
-#endif
- sat_mode=temp;
- g_idle_add(ext_vfo_update,NULL);
-#ifdef CLIENT_SERVER
- }
-#endif
- }
-}
-
-static void rit_enable_cb(GtkWidget *widget, gpointer data) {
-#ifdef CLIENT_SERVER
- if(radio_is_remote) {
- send_rit_update(client_socket,active_receiver->id);
- } else {
-#endif
- vfo_rit_update(active_receiver->id);
-#ifdef CLIENT_SERVER
- }
-#endif
-}
-
-static void rit_cb(GtkWidget *widget, gpointer data) {
- int i=GPOINTER_TO_INT(data);
-#ifdef CLIENT_SERVER
- if(radio_is_remote) {
- send_rit(client_socket,active_receiver->id,i);
- } else {
-#endif
- vfo_rit(active_receiver->id,i);
- if(i<0) {
- rit_minus_timer=g_timeout_add(200,rit_timer_cb,GINT_TO_POINTER(i));
- } else {
- rit_plus_timer=g_timeout_add(200,rit_timer_cb,GINT_TO_POINTER(i));
- }
-#ifdef CLIENT_SERVER
- }
-#endif
-}
-
-static void rit_clear_cb(GtkWidget *widget, gpointer data) {
-#ifdef CLIENT_SERVER
- if(radio_is_remote) {
- send_rit_clear(client_socket,active_receiver->id);
- } else {
-#endif
- vfo_rit_clear(active_receiver->id);
-#ifdef CLIENT_SERVER
- }
-#endif
-}
-
-static void xit_enable_cb(GtkWidget *widget, gpointer data) {
- if(can_transmit) {
- transmitter->xit_enabled=transmitter->xit_enabled==1?0:1;
- if(protocol==NEW_PROTOCOL) {
- schedule_high_priority();
- }
- g_idle_add(ext_vfo_update,NULL);
- }
-}
-
-static void xit_cb(GtkWidget *widget, gpointer data) {
- if(can_transmit) {
- int i=GPOINTER_TO_INT(data);
- transmitter->xit+=i*rit_increment;
- if(transmitter->xit>10000) transmitter->xit=10000;
- if(transmitter->xit<-10000) transmitter->xit=-10000;
- if(protocol==NEW_PROTOCOL) {
- schedule_high_priority();
- }
- g_idle_add(ext_vfo_update,NULL);
- if(i<0) {
- xit_minus_timer=g_timeout_add(200,xit_timer_cb,GINT_TO_POINTER(i));
- } else {
- xit_plus_timer=g_timeout_add(200,xit_timer_cb,GINT_TO_POINTER(i));
- }
- }
-}
-
-static void xit_clear_cb(GtkWidget *widget, gpointer data) {
- if(can_transmit) {
- transmitter->xit=0;
- g_idle_add(ext_vfo_update,NULL);
- }
-}
-
-static void freq_cb(GtkWidget *widget, gpointer data) {
- start_vfo(active_receiver->id);
-}
-
-static void mem_cb(GtkWidget *widget, gpointer data) {
- start_store();
-}
-
-static void vox_cb(GtkWidget *widget, gpointer data) {
- vox_enabled=vox_enabled==1?0:1;
- g_idle_add(ext_vfo_update,NULL);
-}
-
-static void stop() {
- if(protocol==ORIGINAL_PROTOCOL) {
- old_protocol_stop();
- } else {
- new_protocol_stop();
- }
-#ifdef GPIO
- gpio_close();
-#endif
-#ifdef WIRIINGPI
- gpio_close();
-#endif
-}
-
-static void yes_cb(GtkWidget *widget, gpointer data) {
- stop();
- _exit(0);
-}
-
-static void halt_cb(GtkWidget *widget, gpointer data) {
- stop();
- int rc=system("shutdown -h -P now");
- _exit(0);
-}
-
-static void exit_cb(GtkWidget *widget, gpointer data) {
-
- radioSaveState();
-
- GtkWidget *dialog=gtk_dialog_new_with_buttons("Exit",GTK_WINDOW(parent_window),GTK_DIALOG_DESTROY_WITH_PARENT,NULL,NULL);
-
- GtkWidget *content=gtk_dialog_get_content_area(GTK_DIALOG(dialog));
- GtkWidget *grid=gtk_grid_new();
-
- gtk_grid_set_column_homogeneous(GTK_GRID(grid),TRUE);
- gtk_grid_set_row_homogeneous(GTK_GRID(grid),TRUE);
-
- GtkWidget *label=gtk_label_new("Exit?");
- //gtk_widget_override_font(label, pango_font_description_from_string("Arial 18"));
- gtk_widget_show(label);
- gtk_grid_attach(GTK_GRID(grid),label,1,0,1,1);
-
- GtkWidget *b_yes=gtk_button_new_with_label("Yes");
- //gtk_widget_override_font(b_yes, pango_font_description_from_string("Arial 18"));
- gtk_widget_show(b_yes);
- gtk_grid_attach(GTK_GRID(grid),b_yes,0,1,1,1);
- g_signal_connect(b_yes,"pressed",G_CALLBACK(yes_cb),NULL);
-
- GtkWidget *b_halt=gtk_button_new_with_label("Halt System");
- //gtk_widget_override_font(b_halt, pango_font_description_from_string("Arial 18"));
- gtk_widget_show(b_halt);
- gtk_grid_attach(GTK_GRID(grid),b_halt,2,1,1,1);
- g_signal_connect(b_halt,"pressed",G_CALLBACK(halt_cb),NULL);
-
- gtk_container_add(GTK_CONTAINER(content),grid);
- GtkWidget *close_button=gtk_dialog_add_button(GTK_DIALOG(dialog),"Cancel",GTK_RESPONSE_OK);
- //gtk_widget_override_font(close_button, pango_font_description_from_string("Arial 18"));
- gtk_widget_show_all(dialog);
-
- g_signal_connect_swapped (dialog,
- "response",
- G_CALLBACK (gtk_widget_destroy),
- dialog);
-
- gtk_dialog_run(GTK_DIALOG(dialog));
-
-}
-
void lock_cb(GtkWidget *widget, gpointer data) {
#ifdef CLIENT_SERVER
if(radio_is_remote) {
#define min(x,y) (x<y?x:y)
#define max(x,y) (x<y?y:x)
-static int waterfall_samples=0;
-static int waterfall_resample=8;
-
-//
// CW (CAT-CW and LOCALCW) in the "old protocol" is timed by the
// heart-beat of the mic samples. The communication with rigctl.c
// and iambic.c is done via some global variables. Their use is:
int cwmode;
int sidetone=0;
static int txflag=0;
- static long last_qsample=0;
// 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.
case NEW_PROTOCOL:
gain=8388607.0; // 24 bit
break;
+ default:
+ gain=32767.0;
+ break;
}
if (cwmode) {
static GtkWidget *parent_window=NULL;
static GtkWidget *dialog=NULL;
-static GtkWidget *last_filter;
static GtkWidget *input;
static GtkWidget *micin_b=NULL;
static GtkWidget *linein_b=NULL;
static GtkWidget *tx_spin_low;
static GtkWidget *tx_spin_high;
-static GtkWidget *tune_label;
-static GtkWidget *tune_scale;
-
static void cleanup() {
if(dialog!=NULL) {
gtk_widget_destroy(dialog);
FILE* f=fopen("latest","r");
if(f) {
char *c=fgets(new_version,sizeof(new_version),f);
+ if (c == NULL) {
+ return -1;
+ }
fclose(f);
} else {
fprintf(stderr,"check_update: could not read latest version\n");
g_idle_add(ext_vfo_update,NULL);
}
-static GtkWidget *last_mode;
-
void vfo_menu(GtkWidget *parent,int vfo) {
int i;
gtk_misc_set_alignment (GTK_MISC (label), 1, .5);
gtk_grid_attach(GTK_GRID(grid),label,0,1,3,1);
- GtkWidget *step_rb=NULL;
for (i=0; i<16; i++) {
btn[i]=gtk_button_new_with_label(btn_labels[i]);
set_button_text_color(btn[i],"black");
static GdkRGBA led_color={0.0,0.0,0.0,1.0};
static GdkRGBA white={1.0,1.0,1.0,1.0};
-static GdkRGBA red={1.0,0.0,0.0,1.0};
-static GdkRGBA green={0.0,1.0,0.1,1.0};
+// static GdkRGBA red={1.0,0.0,0.0,1.0};
+// static GdkRGBA green={0.0,1.0,0.1,1.0};
static GThread *level_thread_id;
static int run_level=0;
vox_threshold=gtk_range_get_value(GTK_RANGE(widget))/1000.0;
}
-static void vox_gain_value_changed_cb(GtkWidget *widget, gpointer data) {
- vox_gain=gtk_range_get_value(GTK_RANGE(widget));
-}
-
static void vox_hang_value_changed_cb(GtkWidget *widget, gpointer data) {
vox_hang=gtk_range_get_value(GTK_RANGE(widget));
}
#include "vfo.h"
static GtkWidget *parent_window=NULL;
-static GtkWidget *menu_b=NULL;
static GtkWidget *dialog=NULL;
static GtkWidget *title[BANDS+XVTRS];
static GtkWidget *min_frequency[BANDS+XVTRS];
static GtkWidget *max_frequency[BANDS+XVTRS];
static GtkWidget *lo_frequency[BANDS+XVTRS];
static GtkWidget *lo_error[BANDS+XVTRS];
-static GtkWidget *tx_lo_frequency[BANDS+XVTRS];
-static GtkWidget *tx_lo_error[BANDS+XVTRS];
static GtkWidget *disable_pa[BANDS+XVTRS];
static void save_xvtr () {