From: John Melton - G0ORX/N6LYT Date: Thu, 16 Feb 2017 16:23:36 +0000 (+0000) Subject: fixed TX Panadpter curosr position. Moved VOX from toolbar to VOX Menu to turn on... X-Git-Url: https://git.rkrishnan.org/pf/$rel_link?a=commitdiff_plain;h=2a8971a1412ed777a07b7e4de54864673ca26855;p=pihpsdr.git fixed TX Panadpter curosr position. Moved VOX from toolbar to VOX Menu to turn on/off VOX. Added RIT On/Off and RIT CL to toolbar --- diff --git a/discovery.c b/discovery.c index 3fc509d..b8e16c0 100644 --- a/discovery.c +++ b/discovery.c @@ -104,6 +104,7 @@ fprintf(stderr,"discovery\n"); lime_discovery(); #endif + status_text("Discovery"); if(devices==0) { gdk_window_set_cursor(gtk_widget_get_window(top_window),gdk_cursor_new(GDK_ARROW)); diff --git a/new_protocol.c b/new_protocol.c index fa48079..65433cc 100644 --- a/new_protocol.c +++ b/new_protocol.c @@ -373,8 +373,10 @@ static void new_protocol_high_priority(int run) { //long long rxFrequency=ddsFrequency; //rxFrequency=receiver[r]->dds_frequency; int v=receiver[r]->id; - rxFrequency=vfo[v].frequency-vfo[v].lo+vfo[v].rit; - + rxFrequency=vfo[v].frequency-vfo[v].lo; + if(vfo[v].rit_enabled) { + rxFrequency+=vfo[v].rit; + } if(vfo[v].mode==modeCWU) { rxFrequency-=cw_keyer_sidetone_frequency; } else if(vfo[v].mode==modeCWL) { diff --git a/old_protocol.c b/old_protocol.c index bccd042..dd5af16 100644 --- a/old_protocol.c +++ b/old_protocol.c @@ -800,7 +800,10 @@ void ozy_send_buffer() { if(current_rxid; - long long rxFrequency=vfo[v].frequency+vfo[v].rit; + long long rxFrequency=vfo[v].frequency-vfo[v].lo; + if(vfo[v].rit_enabled) { + rxFrequency+=vfo[v].rit; + } if(vfo[active_receiver->id].mode==modeCWU) { rxFrequency-=(long long)cw_keyer_sidetone_frequency; } else if(vfo[active_receiver->id].mode==modeCWL) { diff --git a/toolbar.c b/toolbar.c index 69fab0e..7a02eb5 100644 --- a/toolbar.c +++ b/toolbar.c @@ -110,10 +110,12 @@ void update_toolbar_labels() { gtk_button_set_label(GTK_BUTTON(sim_mox),"Mox"); gtk_button_set_label(GTK_BUTTON(sim_s1),"Freq"); gtk_button_set_label(GTK_BUTTON(sim_s2),"Mem"); - gtk_button_set_label(GTK_BUTTON(sim_s3),"Vox"); + //gtk_button_set_label(GTK_BUTTON(sim_s3),"Vox"); + gtk_button_set_label(GTK_BUTTON(sim_s3),vfo[active_receiver->id].rit_enabled==0?"RIT On":"RIT Off"); + gtk_button_set_label(GTK_BUTTON(sim_s4),"RIT+"); gtk_button_set_label(GTK_BUTTON(sim_s5),"RIT-"); - gtk_button_set_label(GTK_BUTTON(sim_s6),""); + gtk_button_set_label(GTK_BUTTON(sim_s6),"RIT CL"); if(full_tune) { set_button_text_color(sim_s1,"red"); } @@ -209,6 +211,12 @@ static void split_cb (GtkWidget *widget, gpointer data) { vfo_update(NULL); } +static void rit_enable_cb(GtkWidget *widget, gpointer data) { + vfo[active_receiver->id].rit_enabled=vfo[active_receiver->id].rit_enabled==1?0:1; + gtk_button_set_label(GTK_BUTTON(widget),vfo[active_receiver->id].rit_enabled==0?"RIT On":"RIT Off"); + vfo_update(NULL); +} + static void rit_cb(GtkWidget *widget, gpointer data) { int i=(int)data; vfo[active_receiver->id].rit+=i*rit_increment; @@ -218,6 +226,11 @@ static void rit_cb(GtkWidget *widget, gpointer data) { rit_timer=g_timeout_add(200,rit_timer_cb,(void *)i); } +static void rit_clear_cb(GtkWidget *widget, gpointer data) { + vfo[active_receiver->id].rit=0; + vfo_update(NULL); +} + static void freq_cb(GtkWidget *widget, gpointer data) { start_vfo(); } @@ -659,7 +672,8 @@ void sim_s3_pressed_cb(GtkWidget *widget, gpointer data) { atob_cb(widget,data); break; case 2: - vox_cb(widget,data); + //vox_cb(widget,data); + rit_enable_cb(widget,data); break; case 3: break; @@ -750,6 +764,7 @@ void sim_s6_pressed_cb(GtkWidget *widget, gpointer data) { split_cb(widget,data); break; case 2: + rit_clear_cb(widget,NULL); break; case 3: break; diff --git a/tx_panadapter.c b/tx_panadapter.c index 0ec9fcf..10c09f1 100644 --- a/tx_panadapter.c +++ b/tx_panadapter.c @@ -177,6 +177,10 @@ void tx_panadapter_update(TRANSMITTER *tx) { int display_width=gtk_widget_get_allocated_width (tx->panadapter); int display_height=gtk_widget_get_allocated_height (tx->panadapter); + int id=0; + if(split) { + id=1; + } samples=tx->pixel_samples; //hz_per_pixel=(double)tx->output_rate/(double)display_width; hz_per_pixel=48000.0/(double)display_width; @@ -220,38 +224,8 @@ void tx_panadapter_update(TRANSMITTER *tx) { long long divisor=20000; long long half=24000LL; //(long long)(tx->output_rate/2); long long frequency; - if(split) { - frequency=vfo[VFO_B].frequency+vfo[VFO_B].offset; - } else { - frequency=vfo[VFO_A].frequency+vfo[VFO_A].offset; - } + frequency=vfo[id].frequency+vfo[VFO_B].offset; divisor=5000LL; -/* - switch(tx->output_rate) { - case 48000: - divisor=5000L; - break; - case 96000: - case 100000: - divisor=10000L; - break; - case 192000: - divisor=20000L; - break; - case 384000: - divisor=25000L; - break; - case 768000: - divisor=50000L; - break; - case 1048576: - case 1536000: - case 2097152: - divisor=100000L; - break; - } -*/ -//fprintf(stderr,"tx_panadapter_update: frequency=%lld divisor=%lld split=%d\n",frequency,divisor,split); for(i=0;i 0) { @@ -308,8 +282,8 @@ void tx_panadapter_update(TRANSMITTER *tx) { cairo_set_source_rgb (cr, 1, 0, 0); cairo_set_line_width(cr, 1.0); //fprintf(stderr,"cursor: x=%f\n",(double)(display_width/2.0)+(vfo[tx->id].offset/hz_per_pixel)); - cairo_move_to(cr,(double)(display_width/2.0)+(vfo[tx->id].offset/hz_per_pixel),0.0); - cairo_line_to(cr,(double)(display_width/2.0)+(vfo[tx->id].offset/hz_per_pixel),(double)display_height); + cairo_move_to(cr,(double)(display_width/2.0)+(vfo[id].offset/hz_per_pixel),0.0); + cairo_line_to(cr,(double)(display_width/2.0)+(vfo[id].offset/hz_per_pixel),(double)display_height); cairo_stroke(cr); // signal diff --git a/vfo.c b/vfo.c index b5752d8..58533fa 100644 --- a/vfo.c +++ b/vfo.c @@ -90,6 +90,9 @@ void vfo_save_state() { sprintf(name,"vfo.%d.ctun",i); sprintf(value,"%d",vfo[i].ctun); setProperty(name,value); + sprintf(name,"vfo.%d.rit_enabled",i); + sprintf(value,"%d",vfo[i].rit_enabled); + setProperty(name,value); sprintf(name,"vfo.%d.rit",i); sprintf(value,"%lld",vfo[i].rit); setProperty(name,value); @@ -125,6 +128,7 @@ void vfo_restore_state() { vfo[i].filter=6; vfo[i].lo=0; vfo[i].offset=0; + vfo[i].rit_enabled=0; vfo[i].rit=0; vfo[i].ctun=0; @@ -143,6 +147,9 @@ void vfo_restore_state() { sprintf(name,"vfo.%d.rit",i); value=getProperty(name); if(value) vfo[i].rit=atoll(value); + sprintf(name,"vfo.%d.rit_enabled",i); + value=getProperty(name); + if(value) vfo[i].rit_enabled=atoi(value); sprintf(name,"vfo.%d.lo",i); value=getProperty(name); if(value) vfo[i].lo=atoll(value); @@ -306,6 +313,7 @@ void vfo_a_to_b() { vfo[VFO_B].filter=vfo[VFO_A].filter; vfo[VFO_B].lo=vfo[VFO_A].lo; vfo[VFO_B].offset=vfo[VFO_A].offset; + vfo[VFO_B].rit_enabled=vfo[VFO_A].rit_enabled; vfo[VFO_B].rit=vfo[VFO_A].rit; if(receivers==2) { @@ -325,6 +333,7 @@ void vfo_b_to_a() { vfo[VFO_A].filter=vfo[VFO_B].filter; vfo[VFO_A].lo=vfo[VFO_B].lo; vfo[VFO_A].offset=vfo[VFO_B].offset; + vfo[VFO_A].rit_enabled=vfo[VFO_B].rit_enabled; vfo[VFO_A].rit=vfo[VFO_B].rit; receiver_vfo_changed(receiver[0]); if(!split) { @@ -341,6 +350,7 @@ void vfo_a_swap_b() { int temp_filter; int temp_lo; int temp_offset; + int temp_rit_enabled; int temp_rit; temp_band=vfo[VFO_A].band; @@ -350,6 +360,7 @@ void vfo_a_swap_b() { temp_filter=vfo[VFO_A].filter; temp_lo=vfo[VFO_A].lo; temp_offset=vfo[VFO_A].offset; + temp_rit_enabled=vfo[VFO_A].rit_enabled; temp_rit=vfo[VFO_A].rit; vfo[VFO_A].band=vfo[VFO_B].band; @@ -359,6 +370,7 @@ void vfo_a_swap_b() { vfo[VFO_A].filter=vfo[VFO_B].filter; vfo[VFO_A].lo=vfo[VFO_B].lo; vfo[VFO_A].offset=vfo[VFO_B].offset; + vfo[VFO_A].rit_enabled=vfo[VFO_B].rit_enabled; vfo[VFO_A].rit=vfo[VFO_B].rit; vfo[VFO_B].band=temp_band; @@ -368,6 +380,7 @@ void vfo_a_swap_b() { vfo[VFO_B].filter=temp_filter; vfo[VFO_B].lo=temp_lo; vfo[VFO_B].offset=temp_offset; + vfo[VFO_B].rit_enabled=temp_rit_enabled; vfo[VFO_B].rit=temp_rit; receiver_vfo_changed(receiver[0]); @@ -624,7 +637,7 @@ int vfo_update(void *data) { cairo_set_font_size(cr, 12); - if(vfo[id].rit==0) { + if(vfo[id].rit_enabled==0) { cairo_set_source_rgb(cr, 0.7, 0.7, 0.7); } else { cairo_set_source_rgb(cr, 1, 1, 0); diff --git a/vfo.h b/vfo.h index dc13f0f..1862979 100644 --- a/vfo.h +++ b/vfo.h @@ -36,6 +36,7 @@ struct _vfo { int ctun; long long ctun_frequency; + int rit_enabled; long long rit; long long lo; diff --git a/vox.c b/vox.c index cfeb6b7..cfd78b5 100644 --- a/vox.c +++ b/vox.c @@ -29,7 +29,6 @@ static guint vox_timeout; static double peak=0.0; static int vox_timeout_cb(gpointer data) { -fprintf(stderr,"vox timeout\n"); setVox(0); g_idle_add(vfo_update,NULL); return FALSE; @@ -59,7 +58,6 @@ void update_vox(TRANSMITTER *tx) { if(vox_enabled) { -fprintf(stderr,"update_vox: id=%d peak=%f threshold=%f enabled=%d\n",tx->id,peak,vox_threshold,vox_enabled); if(peak>vox_threshold) { if(previous_vox) { g_source_remove(vox_timeout); diff --git a/vox_menu.c b/vox_menu.c index 8c1a54c..27ac113 100644 --- a/vox_menu.c +++ b/vox_menu.c @@ -55,22 +55,23 @@ static int vox_timeout_cb(gpointer data) { static int level_update(void *data) { char title[16]; -fprintf(stderr,"vox peak=%f threshold=%f\n",peak,vox_threshold); - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(level),peak); - - if(peak>vox_threshold) { - // red indicator - led_set_color(1.0,0.0,0.0); // red - if(hold==0) { - hold=1; + if(run_level) { + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(level),peak); + + if(peak>vox_threshold) { + // red indicator + led_set_color(1.0,0.0,0.0); // red + if(hold==0) { + hold=1; + } else { + g_source_remove(vox_timeout); + } + vox_timeout=g_timeout_add((int)vox_hang,vox_timeout_cb,NULL); } else { - g_source_remove(vox_timeout); - } - vox_timeout=g_timeout_add((int)vox_hang,vox_timeout_cb,NULL); - } else { - // green indicator - if(hold==0) { - led_set_color(0.0,1.0,0.0); // green + // green indicator + if(hold==0) { + led_set_color(0.0,1.0,0.0); // green + } } } return 0; @@ -93,6 +94,13 @@ static gboolean close_cb (GtkWidget *widget, GdkEventButton *event, gpointer dat return TRUE; } +static gboolean enable_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) { + vox_enabled=vox_enabled==1?0:1; + gtk_button_set_label(GTK_BUTTON(widget),vox_enabled==0?"VOX On":"VOX Off"); + vfo_update(NULL); + return TRUE; +} + static void start_level_thread() { int rc; run_level=1; @@ -147,6 +155,10 @@ void vox_menu(GtkWidget *parent) { led=create_led(10,10); gtk_grid_attach(GTK_GRID(grid),led,2,0,1,1); + GtkWidget *enable_b=gtk_button_new_with_label(vox_enabled==0?"VOX On":"VOX Off"); + g_signal_connect (enable_b, "pressed", G_CALLBACK(enable_cb), NULL); + gtk_grid_attach(GTK_GRID(grid),enable_b,3,0,1,1); + GtkWidget *level_label=gtk_label_new("Mic Level:"); gtk_misc_set_alignment (GTK_MISC(level_label), 0, 0); gtk_widget_show(level_label);