From: John Melton - G0ORX/N6LYT Date: Fri, 12 Aug 2016 06:38:12 +0000 (+0000) Subject: moved display configuration to Menu->Display from Discovery X-Git-Url: https://git.rkrishnan.org/pf/frontends/...?a=commitdiff_plain;h=6dbacfbaac99e82af400dfdfa598a74799aebc8a;p=pihpsdr.git moved display configuration to Menu->Display from Discovery --- diff --git a/configure.c b/configure.c index 763ff74..ecc36ee 100644 --- a/configure.c +++ b/configure.c @@ -33,28 +33,6 @@ #include "radio.h" #include "gpio.h" -static void display_panadapter_cb(GtkWidget *widget, gpointer data) { - display_panadapter=display_panadapter==1?0:1; -} - -static void display_waterfall_cb(GtkWidget *widget, gpointer data) { - display_waterfall=display_waterfall==1?0:1; -} - -static void display_sliders_cb(GtkWidget *widget, gpointer data) { - display_sliders=display_sliders==1?0:1; -} - -static void display_toolbar_cb(GtkWidget *widget, gpointer data) { - display_toolbar=display_toolbar==1?0:1; -} - -/* -static void toolbar_dialog_buttons_cb(GtkWidget *widget, gpointer data) { - toolbar_dialog_buttons=toolbar_dialog_buttons==1?0:1; -} -*/ - #ifdef GPIO void configure_gpio(GtkWidget *parent) { gpio_restore_state(); @@ -339,60 +317,3 @@ void configure_gpio(GtkWidget *parent) { } #endif -void configure(DISCOVERED* d,GtkWidget *parent) { - - GtkWidget *dialog=gtk_dialog_new_with_buttons("Configure",GTK_WINDOW(parent),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),FALSE); - gtk_grid_set_row_homogeneous(GTK_GRID(grid),FALSE); - - GtkWidget *display_label=gtk_label_new("Display:"); - //gtk_widget_override_font(display_label, pango_font_description_from_string("Arial 18")); - gtk_widget_show(display_label); - gtk_grid_attach(GTK_GRID(grid),display_label,0,0,1,1); - - GtkWidget *b_display_panadapter=gtk_check_button_new_with_label("Display Panadapter"); - //gtk_widget_override_font(b_display_panadapter, pango_font_description_from_string("Arial 18")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_display_panadapter), display_panadapter); - gtk_widget_show(b_display_panadapter); - gtk_grid_attach(GTK_GRID(grid),b_display_panadapter,0,1,1,1); - g_signal_connect(b_display_panadapter,"toggled",G_CALLBACK(display_panadapter_cb),(gpointer *)NULL); - - GtkWidget *b_display_waterfall=gtk_check_button_new_with_label("Display Waterfall"); - //gtk_widget_override_font(b_display_waterfall, pango_font_description_from_string("Arial 18")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_display_waterfall), display_waterfall); - gtk_widget_show(b_display_waterfall); - gtk_grid_attach(GTK_GRID(grid),b_display_waterfall,0,2,1,1); - g_signal_connect(b_display_waterfall,"toggled",G_CALLBACK(display_waterfall_cb),(gpointer *)NULL); - - GtkWidget *b_display_sliders=gtk_check_button_new_with_label("Display Sliders"); - //gtk_widget_override_font(b_display_sliders, pango_font_description_from_string("Arial 18")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_display_sliders), display_sliders); - gtk_widget_show(b_display_sliders); - gtk_grid_attach(GTK_GRID(grid),b_display_sliders,0,3,1,1); - g_signal_connect(b_display_sliders,"toggled",G_CALLBACK(display_sliders_cb),(gpointer *)NULL); - - GtkWidget *b_display_toolbar=gtk_check_button_new_with_label("Display Toolbar"); - //gtk_widget_override_font(b_display_toolbar, pango_font_description_from_string("Arial 18")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_display_toolbar), display_toolbar); - gtk_widget_show(b_display_toolbar); - gtk_grid_attach(GTK_GRID(grid),b_display_toolbar,0,4,1,1); - g_signal_connect(b_display_toolbar,"toggled",G_CALLBACK(display_toolbar_cb),(gpointer *)NULL); - - gtk_container_add(GTK_CONTAINER(content),grid); - - GtkWidget *close_button=gtk_dialog_add_button(GTK_DIALOG(dialog),"Close",GTK_RESPONSE_OK); - //gtk_widget_override_font(close_button, pango_font_description_from_string("Arial 20")); - gtk_widget_show_all(dialog); - - g_signal_connect_swapped (dialog, - "response", - G_CALLBACK (gtk_widget_destroy), - dialog); - - int result=gtk_dialog_run(GTK_DIALOG(dialog)); - - radioSaveState(); - -} diff --git a/configure.h b/configure.h index 1efad1a..3750463 100644 --- a/configure.h +++ b/configure.h @@ -21,4 +21,3 @@ #ifdef INCLUDE_GPIO void configure_gpio(GtkWidget *parent); #endif -void configure(DISCOVERED *d,GtkWidget *parent); diff --git a/main.c b/main.c index 3cda268..df5448c 100644 --- a/main.c +++ b/main.c @@ -96,7 +96,14 @@ static sem_t wisdom_sem; static GdkCursor *cursor_arrow; static GdkCursor *cursor_watch; +static GtkWidget *window; +static GtkWidget *grid; static GtkWidget *fixed; +static GtkWidget *vfo; +static GtkWidget *menu; +static GtkWidget *meter; +static GtkWidget *sliders; +static GtkWidget *toolbar; static GtkWidget *panadapter; static GtkWidget *waterfall; #ifdef PSK @@ -269,31 +276,6 @@ fprintf(stderr,"start_cb: %d\n",selected_device); gtk_widget_destroy(discovery_dialog); } -static void configure_cb(GtkWidget *widget, gpointer data) { - DISCOVERED* d; - d=&discovered[(int)data]; - switch(d->protocol) { - case ORIGINAL_PROTOCOL: - case NEW_PROTOCOL: - sprintf(property_path,"%02X-%02X-%02X-%02X-%02X-%02X.props", - d->info.network.mac_address[0], - d->info.network.mac_address[1], - d->info.network.mac_address[2], - d->info.network.mac_address[3], - d->info.network.mac_address[4], - d->info.network.mac_address[5]); - break; -#ifdef LIMESDR - case LIMESDR_PROTOCOL: - sprintf(property_path,"limesdr.props"); - break; -#endif - } - radioRestoreState(); - - configure(d,splash_window); - -} static pthread_t wisdom_thread_id; @@ -326,15 +308,8 @@ gboolean main_delete (GtkWidget *widget) { gint init(void* arg) { - GtkWidget *window; - GtkWidget *grid; gint x; gint y; - GtkWidget *vfo; - GtkWidget *menu; - GtkWidget *meter; - GtkWidget *sliders; - GtkWidget *toolbar; DISCOVERED* d; @@ -486,11 +461,6 @@ fprintf(stderr,"protocol=%d name=%s\n",d->protocol,d->name); gtk_widget_set_sensitive(start_button, FALSE); } - GtkWidget *configure_button=gtk_button_new_with_label("Configure"); - gtk_widget_override_font(configure_button, pango_font_description_from_string("Arial 18")); - gtk_widget_show(configure_button); - gtk_grid_attach(GTK_GRID(grid),configure_button,4,i,1,1); - g_signal_connect(configure_button,"pressed",G_CALLBACK(configure_cb),(gpointer *)i); } gtk_container_add (GTK_CONTAINER (content), grid); @@ -718,6 +688,117 @@ void show_waterfall() { } #endif +void reconfigure_display() { + int y=VFO_HEIGHT; + + // configure panadapter + if(display_panadapter) { + int height=PANADAPTER_HEIGHT; + if(!display_waterfall) { + height+=WATERFALL_HEIGHT; + if(!display_sliders) { + height+=SLIDERS_HEIGHT; + } + if(!display_toolbar) { + height+=TOOLBAR_HEIGHT; + } + } else { + if(!display_sliders) { + height+=SLIDERS_HEIGHT/2; + } + if(!display_toolbar) { + height+=TOOLBAR_HEIGHT/2; + } + } +fprintf(stderr,"panadapter_height=%d\n",height); + if(panadapter==NULL) { +fprintf(stderr,"reconfigure_display: panadapter_init: width:%d height:%d\n",display_width,height); + panadapter = panadapter_init(display_width,height); + gtk_fixed_put(GTK_FIXED(fixed),panadapter,0,y); + } else { + // set the size +fprintf(stderr,"reconfigure_display: panadapter set_size_request: width:%d height:%d\n",display_width,height); + gtk_widget_set_size_request(panadapter, display_width, height); + // move the current one + gtk_fixed_move(GTK_FIXED(fixed),panadapter,0,y); + } + gtk_widget_show_all(panadapter); + y+=height; + } else { + gtk_widget_hide(panadapter); + } + + // configure waterfall + if(display_waterfall) { + int height=WATERFALL_HEIGHT; + + if(!display_panadapter) { + height+=PANADAPTER_HEIGHT; + if(!display_sliders) { + height+=SLIDERS_HEIGHT; + } + if(!display_toolbar) { + height+=TOOLBAR_HEIGHT; + } + } else { + if(!display_sliders) { + height+=SLIDERS_HEIGHT/2; + } + if(!display_toolbar) { + height+=TOOLBAR_HEIGHT/2; + } + } +fprintf(stderr,"waterfall_height=%d\n",height); + if(waterfall==NULL) { +fprintf(stderr,"reconfigure_display: waterfall_init: width:%d height:%d\n",display_width,height); + waterfall = waterfall_init(display_width,height); + gtk_fixed_put(GTK_FIXED(fixed),waterfall,0,y); + } else { + // set the size +fprintf(stderr,"reconfigure_display: waterfall set_size_request: width:%d height:%d\n",display_width,height); + gtk_widget_set_size_request (waterfall, display_width, height); + // move the current one + gtk_fixed_move(GTK_FIXED(fixed),waterfall,0,y); + } + gtk_widget_show_all(waterfall); + y+=height; + } else { + gtk_widget_hide(waterfall); + } + + if(display_sliders) { +fprintf(stderr,"sliders_height=%d\n",SLIDERS_HEIGHT); + if(sliders==NULL) { +fprintf(stderr,"reconfigure_display: sliders_init: width:%d height:%d\n",display_width,SLIDERS_HEIGHT); + sliders = sliders_init(display_width,SLIDERS_HEIGHT,window); + gtk_fixed_put(GTK_FIXED(fixed),sliders,0,y); + } else { + gtk_fixed_move(GTK_FIXED(fixed),sliders,0,y); + gtk_widget_show(sliders); + } + gtk_widget_show_all(sliders); + y+=SLIDERS_HEIGHT; + } else { + gtk_widget_hide(sliders); + } + + if(display_toolbar) { +fprintf(stderr,"toolbar_height=%d\n",TOOLBAR_HEIGHT); + if(toolbar==NULL) { +fprintf(stderr,"reconfigure_display: toolbar_init: width:%d height:%d\n",display_width,TOOLBAR_HEIGHT); + toolbar = toolbar_init(display_width,TOOLBAR_HEIGHT,window); + gtk_fixed_put(GTK_FIXED(fixed),toolbar,0,y); + } else { + gtk_fixed_move(GTK_FIXED(fixed),toolbar,0,y); + gtk_widget_show(toolbar); + } + gtk_widget_show_all(toolbar); + y+=TOOLBAR_HEIGHT; + } else { + gtk_widget_hide(toolbar); + } + +} int main (int argc, diff --git a/main.h b/main.h index e245520..1250362 100644 --- a/main.h +++ b/main.h @@ -19,6 +19,7 @@ #include extern struct utsname unameData; +void reconfigure_display(); #ifdef PSK void show_psk(); void show_waterfall(); diff --git a/menu.c b/menu.c index 4368da5..51eee5e 100644 --- a/menu.c +++ b/menu.c @@ -46,6 +46,26 @@ static GtkWidget *menu; static GtkWidget *ant_grid; static gint ant_id=-1; +static void display_panadapter_cb(GtkWidget *widget, gpointer data) { + display_panadapter=display_panadapter==1?0:1; + reconfigure_display(); +} + +static void display_waterfall_cb(GtkWidget *widget, gpointer data) { + display_waterfall=display_waterfall==1?0:1; + reconfigure_display(); +} + +static void display_sliders_cb(GtkWidget *widget, gpointer data) { + display_sliders=display_sliders==1?0:1; + reconfigure_display(); +} + +static void display_toolbar_cb(GtkWidget *widget, gpointer data) { + display_toolbar=display_toolbar==1?0:1; + reconfigure_display(); +} + static void sample_rate_cb(GtkWidget *widget, gpointer data) { if(protocol==ORIGINAL_PROTOCOL) { old_protocol_new_sample_rate((int)data); @@ -986,6 +1006,7 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget, g_signal_connect(detector_mode_sample,"pressed",G_CALLBACK(detector_mode_cb),(gpointer *)DETECTOR_MODE_SAMPLE); + GtkWidget *average_mode_label=gtk_label_new("Averaging: "); //gtk_widget_override_font(average_mode_label, pango_font_description_from_string("Arial 18")); gtk_widget_show(average_mode_label); @@ -1027,6 +1048,35 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget, gtk_grid_attach(GTK_GRID(display_grid),time_r,5,5,1,1); g_signal_connect(time_r,"value_changed",G_CALLBACK(time_value_changed_cb),NULL); + GtkWidget *b_display_panadapter=gtk_check_button_new_with_label("Display Panadapter"); + //gtk_widget_override_font(b_display_panadapter, pango_font_description_from_string("Arial 18")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_display_panadapter), display_panadapter); + gtk_widget_show(b_display_panadapter); + gtk_grid_attach(GTK_GRID(display_grid),b_display_panadapter,6,0,1,1); + g_signal_connect(b_display_panadapter,"toggled",G_CALLBACK(display_panadapter_cb),(gpointer *)NULL); + + GtkWidget *b_display_waterfall=gtk_check_button_new_with_label("Display Waterfall"); + //gtk_widget_override_font(b_display_waterfall, pango_font_description_from_string("Arial 18")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_display_waterfall), display_waterfall); + gtk_widget_show(b_display_waterfall); + gtk_grid_attach(GTK_GRID(display_grid),b_display_waterfall,6,1,1,1); + g_signal_connect(b_display_waterfall,"toggled",G_CALLBACK(display_waterfall_cb),(gpointer *)NULL); + + GtkWidget *b_display_sliders=gtk_check_button_new_with_label("Display Sliders"); + //gtk_widget_override_font(b_display_sliders, pango_font_description_from_string("Arial 18")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_display_sliders), display_sliders); + gtk_widget_show(b_display_sliders); + gtk_grid_attach(GTK_GRID(display_grid),b_display_sliders,6,2,1,1); + g_signal_connect(b_display_sliders,"toggled",G_CALLBACK(display_sliders_cb),(gpointer *)NULL); + + GtkWidget *b_display_toolbar=gtk_check_button_new_with_label("Display Toolbar"); + //gtk_widget_override_font(b_display_toolbar, pango_font_description_from_string("Arial 18")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b_display_toolbar), display_toolbar); + gtk_widget_show(b_display_toolbar); + gtk_grid_attach(GTK_GRID(display_grid),b_display_toolbar,6,3,1,1); + g_signal_connect(b_display_toolbar,"toggled",G_CALLBACK(display_toolbar_cb),(gpointer *)NULL); + + id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),display_grid,display_label); diff --git a/meter.c b/meter.c index 4cd5f77..2d4aae5 100644 --- a/meter.c +++ b/meter.c @@ -315,7 +315,7 @@ void meter_update(int meter_type,double value,double reverse,double exciter,doub } cairo_set_font_size(cr, 16); sprintf(sf,"SNR: %3.2f",freedv_snr); - cairo_move_to(cr, text_location, 20); + cairo_move_to(cr, text_location, 30); cairo_show_text(cr, sf); } #endif diff --git a/old_protocol.c b/old_protocol.c index 67515a2..6e35ef8 100644 --- a/old_protocol.c +++ b/old_protocol.c @@ -64,6 +64,9 @@ #define C4 7 #define SCALE 4.6 +#ifdef FREEDV +#define FREEDV_SCALE 8.5 +#endif #define DATA_PORT 1024 @@ -609,11 +612,9 @@ static void full_rx_buffer() { int j; int error; - // process the input fexchange0(CHANNEL_RX0, iqinputbuffer, audiooutputbuffer, &error); - if(error!=0) { - fprintf(stderr,"fexchange2 (CHANNEL_RX0) returned error: %d\n", error); - } + fexchange0(CHANNEL_TX, micinputbuffer, iqoutputbuffer, &error); + #ifdef PSK if(mode!=modePSK) { #endif @@ -636,10 +637,21 @@ static void full_tx_buffer() { int error; double gain=32767.0*SCALE; // 2^16-1 - // process the output + // debug + //int min_sample=0; + //int max_sample=0; + //int overflow=0; + fexchange0(CHANNEL_RX0, iqinputbuffer, audiooutputbuffer, &error); fexchange0(CHANNEL_TX, micinputbuffer, iqoutputbuffer, &error); Spectrum0(1, CHANNEL_TX, 0, 0, iqoutputbuffer); + +#ifdef FREEDV + if(mode==modeFREEDV) { + gain=32767.0*FREEDV_SCALE; + } +#endif + if(d->device==DEVICE_METIS && atlas_penelope) { if(tune) { gain=32767.0*tune_drive; @@ -652,15 +664,26 @@ static void full_tx_buffer() { right_rx_sample=0; left_tx_sample=(int)(iqoutputbuffer[j*2]*gain); right_tx_sample=(int)(iqoutputbuffer[(j*2)+1]*gain); + +// debug + //if(left_tx_samplemax_sample) max_sample=left_tx_sample; + //if(right_tx_samplemax_sample) max_sample=right_tx_sample; + if(left_tx_sample>32767) { left_tx_sample=32767; +// overflow++; } else if(left_tx_sample<-32767) { - left_tx_sample=-2767; + left_tx_sample=-32767; +// overflow++; } if(right_tx_sample>32767) { right_tx_sample=32767; +// overflow++; } else if(right_tx_sample<-32767) { right_tx_sample=-32767; +// overflow++; } output_buffer[output_buffer_index++]=left_rx_sample>>8; output_buffer[output_buffer_index++]=left_rx_sample; @@ -675,6 +698,10 @@ static void full_tx_buffer() { output_buffer_index=8; } } + + //fprintf(stderr,"scale=%f min_sample=%d max_sample=%d\n",scale, min_sample,max_sample); + //fprintf(stderr,"scale=%f overflow=%d\n",scale,overflow); + } /* static void process_bandscope_buffer(char *buffer) { diff --git a/panadapter.c b/panadapter.c index c2d3c3e..ac81e88 100644 --- a/panadapter.c +++ b/panadapter.c @@ -51,20 +51,7 @@ static gfloat filter_left; static gfloat filter_right; static int display_width; -static int panadapter_height; - -static void -panadapter_clear_surface (void) -{ - cairo_t *cr; - - cr = cairo_create (panadapter_surface); - - cairo_set_source_rgb (cr, 0, 0, 0); - cairo_paint (cr); - - cairo_destroy (cr); -} +static int display_height; /* Create a new surface of the appropriate size to store our scribbles */ static gboolean @@ -72,18 +59,23 @@ panadapter_configure_event_cb (GtkWidget *widget, GdkEventConfigure *event, gpointer data) { + display_width=gtk_widget_get_allocated_width (widget); + display_height=gtk_widget_get_allocated_height (widget); + +fprintf(stderr,"panadapter_configure_event_cb: width:%d height:%d\n",display_width,display_height); if (panadapter_surface) cairo_surface_destroy (panadapter_surface); panadapter_surface = gdk_window_create_similar_surface (gtk_widget_get_window (widget), CAIRO_CONTENT_COLOR, - gtk_widget_get_allocated_width (widget), - gtk_widget_get_allocated_height (widget)); + display_width, + display_height); - /* Initialize the surface to white */ - panadapter_clear_surface (); + cairo_t *cr=cairo_create(panadapter_surface); + cairo_set_source_rgb(cr, 0, 0, 0); + cairo_paint(cr); + cairo_destroy(cr); - /* We've handled the configure event, no need for further processing. */ return TRUE; } @@ -199,7 +191,7 @@ void panadapter_update(float *data,int tx) { saved_hz_per_pixel=hz_per_pixel; panadapter_high=20; - panadapter_low=-140; + panadapter_low=-80; if(protocol==ORIGINAL_PROTOCOL) { hz_per_pixel=48000.0/(double)display_width; } else { @@ -217,7 +209,7 @@ void panadapter_update(float *data,int tx) { cairo_set_source_rgb (cr, 0.25, 0.25, 0.25); filter_left=(double)display_width/2.0+(((double)getFilterLow()+ddsOffset)/hz_per_pixel); filter_right=(double)display_width/2.0+(((double)getFilterHigh()+ddsOffset)/hz_per_pixel); - cairo_rectangle(cr, filter_left, 0.0, filter_right-filter_left, (double)panadapter_height); + cairo_rectangle(cr, filter_left, 0.0, filter_right-filter_left, (double)display_height); cairo_fill(cr); // plot the levels @@ -225,7 +217,7 @@ void panadapter_update(float *data,int tx) { int numSteps = V / 20; for (i = 1; i < numSteps; i++) { int num = panadapter_high - i * 20; - int y = (int)floor((panadapter_high - num) * panadapter_height / V); + int y = (int)floor((panadapter_high - num) * display_height / V); cairo_set_source_rgb (cr, 0, 1, 1); cairo_set_line_width(cr, 1.0); @@ -280,7 +272,7 @@ void panadapter_update(float *data,int tx) { cairo_set_line_width(cr, 1.0); //cairo_move_to(cr,(double)i,0.0); cairo_move_to(cr,(double)i,10.0); - cairo_line_to(cr,(double)i,(double)panadapter_height); + cairo_line_to(cr,(double)i,(double)display_height); cairo_set_source_rgb (cr, 0, 1, 1); cairo_select_font_face(cr, "Arial", @@ -289,7 +281,7 @@ void panadapter_update(float *data,int tx) { cairo_set_font_size(cr, 12); char v[32]; sprintf(v,"%0ld.%03ld",f/1000000,(f%1000000)/1000); - //cairo_move_to(cr, (double)i, (double)(panadapter_height-10)); + //cairo_move_to(cr, (double)i, (double)(display_height-10)); cairo_text_extents(cr, v, &extents); cairo_move_to(cr, (double)i-(extents.width/2.0), 10.0); cairo_show_text(cr, v); @@ -308,12 +300,12 @@ void panadapter_update(float *data,int tx) { if((min_displayminFrequency)&&(max_display>bandLimits->minFrequency)) { i=(bandLimits->minFrequency-min_display)/(long long)hz_per_pixel; cairo_move_to(cr,(double)i,0.0); - cairo_line_to(cr,(double)i,(double)panadapter_height); + cairo_line_to(cr,(double)i,(double)display_height); } if((min_displaymaxFrequency)&&(max_display>bandLimits->maxFrequency)) { i=(bandLimits->maxFrequency-min_display)/(long long)hz_per_pixel; cairo_move_to(cr,(double)i,0.0); - cairo_line_to(cr,(double)i,(double)panadapter_height); + cairo_line_to(cr,(double)i,(double)display_height); } } @@ -321,7 +313,7 @@ void panadapter_update(float *data,int tx) { cairo_set_source_rgb (cr, 1, 0, 0); cairo_set_line_width(cr, 1.0); cairo_move_to(cr,(double)display_width/2.0,0.0); - cairo_line_to(cr,(double)display_width/2.0,(double)panadapter_height); + cairo_line_to(cr,(double)display_width/2.0,(double)display_height); cairo_stroke(cr); // signal @@ -330,13 +322,13 @@ void panadapter_update(float *data,int tx) { samples[display_width-1]=-200.0; s1=(double)samples[0]+(double)get_attenuation()-20.0; s1 = floor((panadapter_high - s1) - * (double) panadapter_height + * (double) display_height / (panadapter_high - panadapter_low)); cairo_move_to(cr, 0.0, s1); for(i=1;i