From: John Melton - G0ORX/N6LYT Date: Sat, 12 Nov 2016 14:55:15 +0000 (+0000) Subject: fixed drive levels in old protocol X-Git-Url: https://git.rkrishnan.org/components/-?a=commitdiff_plain;h=1b95bf1a08e5f860922f09a307aac7955ea5a3f0;p=pihpsdr.git fixed drive levels in old protocol --- diff --git a/band.c b/band.c index 5a727df..990a322 100644 --- a/band.c +++ b/band.c @@ -186,17 +186,17 @@ BANDSTACK bandstackGEN={3,1,bandstack_entriesGEN}; BANDSTACK bandstackWWV={5,1,bandstack_entriesWWV}; BAND bands[BANDS] = - {{"160",&bandstack160,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, - {"80",&bandstack80,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, - {"60",&bandstack60,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, - {"40",&bandstack40,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, - {"30",&bandstack30,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, - {"20",&bandstack20,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, - {"18",&bandstack18,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, - {"15",&bandstack15,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, - {"12",&bandstack12,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, - {"10",&bandstack10,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, - {"50",&bandstack50,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, + {{"160",&bandstack160,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, + {"80",&bandstack80,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, + {"60",&bandstack60,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, + {"40",&bandstack40,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, + {"30",&bandstack30,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, + {"20",&bandstack20,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, + {"18",&bandstack18,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, + {"15",&bandstack15,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, + {"12",&bandstack12,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, + {"10",&bandstack10,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, + {"50",&bandstack50,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8}, #ifdef LIMESDR {"70",&bandstack70,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, {"144",&bandstack144,0,0,0,0,0,ALEX_ATTENUATION_0dB,30}, @@ -338,7 +338,7 @@ void bandSaveState() { sprintf(name,"band.%d.alexAttenuation",b); setProperty(name,value); - sprintf(value,"%d",bands[b].pa_calibration); + sprintf(value,"%f",bands[b].pa_calibration); sprintf(name,"band.%d.pa_calibration",b); setProperty(name,value); @@ -429,7 +429,10 @@ void bandRestoreState() { sprintf(name,"band.%d.pa_calibration",b); value=getProperty(name); - if(value) bands[b].pa_calibration=atoi(value); + if(value) bands[b].pa_calibration=atof(value); + if(bands[b].pa_calibration<38.8 || bands[b].pa_calibration>100.0) { + bands[b].pa_calibration=38.8; + } sprintf(name,"band.%d.OCrx",b); value=getProperty(name); diff --git a/band.h b/band.h index 7a21b10..6512504 100644 --- a/band.h +++ b/band.h @@ -78,7 +78,7 @@ struct _BAND { int alexRxAntenna; int alexTxAntenna; int alexAttenuation; - int pa_calibration; + double pa_calibration; }; typedef struct _BAND BAND; diff --git a/gpio.c b/gpio.c index c542f75..08102b4 100644 --- a/gpio.c +++ b/gpio.c @@ -779,21 +779,21 @@ static int rf_encoder_changed(void *data) { if(function || tune) { // tune drive double d=getTuneDrive(); - d+=(double)pos/100.0; + d+=(double)pos; if(d<0.0) { d=0.0; - } else if(d>1.0) { - d=1.0; + } else if(d>100.0) { + d=100.0; } set_tune(d); } else { // drive double d=getDrive(); - d+=(double)pos/100.0; + d+=(double)pos; if(d<0.0) { d=0.0; - } else if(d>1.0) { - d=1.0; + } else if(d>100.0) { + d=100.0; } set_drive(d); } diff --git a/main.c b/main.c index 8feeb93..5a60832 100644 --- a/main.c +++ b/main.c @@ -538,6 +538,7 @@ fprintf(stderr,"selected radio=%p device=%d\n",radio,radio->device); radioRestoreState(); + fprintf(stderr,"malloc samples\n"); if(radio->protocol==NEW_PROTOCOL) { samples=malloc(display_width*sizeof(float)*2*4); // 192 -> 48 } else { @@ -545,15 +546,18 @@ fprintf(stderr,"selected radio=%p device=%d\n",radio,radio->device); } //splash_status("Initializing wdsp ..."); + fprintf(stderr,"wdsp_init\n"); wdsp_init(0,display_width,radio->protocol); switch(radio->protocol) { case ORIGINAL_PROTOCOL: splash_status("Initializing old protocol ..."); + fprintf(stderr,"old_protocol_init\n"); old_protocol_init(0,display_width); break; case NEW_PROTOCOL: splash_status("Initializing new protocol ..."); + fprintf(stderr,"new_protocol_init\n"); new_protocol_init(0,display_width); break; #ifdef LIMESDR @@ -564,6 +568,7 @@ fprintf(stderr,"selected radio=%p device=%d\n",radio,radio->device); #endif } + fprintf(stderr,"gpio_init\n"); splash_status("Initializing GPIO ..."); #ifdef GPIO if(gpio_init()<0) { diff --git a/menu.c b/menu.c index 043e7ab..376ba58 100644 --- a/menu.c +++ b/menu.c @@ -357,9 +357,31 @@ static void tx_out_of_band_cb(GtkWidget *widget, gpointer data) { tx_out_of_band=tx_out_of_band==1?0:1; } +static void tone_value_changed_cb(GtkWidget *widget, gpointer data) { + tone_level=gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget)); + SetTXAPostGenToneMag(CHANNEL_TX,tone_level); +} + +static void tx_cfir_cb(GtkWidget *widget, gpointer data) { + tx_cfir=tx_cfir==1?0:1; + SetTXACFIRRun(CHANNEL_TX, tx_cfir); +} + +static void tx_alc_cb(GtkWidget *widget, gpointer data) { + tx_alc=tx_alc==1?0:1; + SetTXAALCSt(CHANNEL_TX, tx_alc); +} + +static void tx_leveler_cb(GtkWidget *widget, gpointer data) { + tx_leveler=tx_leveler==1?0:1; + SetTXALevelerSt(CHANNEL_TX, tx_leveler); +} + static void pa_value_changed_cb(GtkWidget *widget, gpointer data) { BAND *band=(BAND *)data; - band->pa_calibration=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget)); + band->pa_calibration=gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget)); + calcDriveLevel(); + calcTuneDriveLevel(); } static gboolean exit_pressed_event_cb (GtkWidget *widget, @@ -1316,7 +1338,7 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget, id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),dsp_grid,dsp_label); if(protocol==ORIGINAL_PROTOCOL || protocol==NEW_PROTOCOL) { - GtkWidget *tx_label=gtk_label_new("PA Gain"); + GtkWidget *tx_label=gtk_label_new("PA Gain (dB)"); GtkWidget *tx_grid=gtk_grid_new(); gtk_grid_set_row_homogeneous(GTK_GRID(tx_grid),TRUE); gtk_grid_set_column_spacing (GTK_GRID(tx_grid),10); @@ -1329,7 +1351,7 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget, gtk_widget_show(band_label); gtk_grid_attach(GTK_GRID(tx_grid),band_label,(i/6)*2,i%6,1,1); - GtkWidget *pa_r=gtk_spin_button_new_with_range(0.0,100.0,1.0); + GtkWidget *pa_r=gtk_spin_button_new_with_range(38.8,100.0,0.1); //gtk_widget_override_font(pa_r, pango_font_description_from_string("Arial 18")); gtk_spin_button_set_value(GTK_SPIN_BUTTON(pa_r),(double)band->pa_calibration); gtk_widget_show(pa_r); @@ -1344,6 +1366,34 @@ static gboolean menu_pressed_event_cb (GtkWidget *widget, gtk_grid_attach(GTK_GRID(tx_grid),tx_out_of_band_b,0,7,4,1); g_signal_connect(tx_out_of_band_b,"toggled",G_CALLBACK(tx_out_of_band_cb),NULL); +/* + GtkWidget *tx_cfir_b=gtk_check_button_new_with_label("TX CFIR"); + //gtk_widget_override_font(tx_out_of_band_b, pango_font_description_from_string("Arial 18")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx_cfir_b), tx_cfir); + gtk_widget_show(tx_cfir_b); + gtk_grid_attach(GTK_GRID(tx_grid),tx_cfir_b,4,7,4,1); + g_signal_connect(tx_cfir_b,"toggled",G_CALLBACK(tx_cfir_cb),NULL); + + GtkWidget *tx_alc_b=gtk_check_button_new_with_label("TX ALC"); + //gtk_widget_override_font(tx_out_of_band_b, pango_font_description_from_string("Arial 18")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx_alc_b), tx_alc); + gtk_widget_show(tx_alc_b); + gtk_grid_attach(GTK_GRID(tx_grid),tx_alc_b,8,7,4,1); + g_signal_connect(tx_alc_b,"toggled",G_CALLBACK(tx_alc_cb),NULL); + + GtkWidget *tx_leveler_b=gtk_check_button_new_with_label("TX Leveler"); + //gtk_widget_override_font(tx_out_of_band_b, pango_font_description_from_string("Arial 18")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tx_leveler_b), tx_leveler); + gtk_widget_show(tx_leveler_b); + gtk_grid_attach(GTK_GRID(tx_grid),tx_leveler_b,12,7,4,1); + g_signal_connect(tx_leveler_b,"toggled",G_CALLBACK(tx_leveler_cb),NULL); + + GtkWidget *tone_r=gtk_spin_button_new_with_range(0.0,1.0,0.01); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(tone_r),tone_level); + gtk_widget_show(tone_r); + gtk_grid_attach(GTK_GRID(tx_grid),tone_r,4,6,4,1); + g_signal_connect(tone_r,"value_changed",G_CALLBACK(tone_value_changed_cb),NULL); +*/ id=gtk_notebook_append_page(GTK_NOTEBOOK(notebook),tx_grid,tx_label); } diff --git a/new_protocol.c b/new_protocol.c index 36bfab0..c51cf59 100644 --- a/new_protocol.c +++ b/new_protocol.c @@ -57,6 +57,8 @@ #include "freedv.h" #endif +#define min(x,y) (x>24; @@ -344,14 +342,13 @@ static void new_protocol_high_priority(int run) { int power=0; if(isTransmitting()) { - double d=drive; if(tune) { - d=tune_drive; + power=tune_drive_level; + } else { + power=drive_level; } - d=d*((double)band->pa_calibration/100.0); - power=(int)(d*255.0); } - + buffer[345]=power&0xFF; if(isTransmitting()) { diff --git a/old_protocol.c b/old_protocol.c index 6304d6b..3e63409 100644 --- a/old_protocol.c +++ b/old_protocol.c @@ -54,6 +54,8 @@ #include "psk.h" #endif +#define min(x,y) (xpa_calibration/100.0); - power=(int)(d*255.0); + if(tune) { + power=tune_drive_level; + } else { + power=drive_level; + } } output_buffer[C0]=0x12; diff --git a/pihpsdr b/pihpsdr index d69c3c4..b53d4a5 100755 Binary files a/pihpsdr and b/pihpsdr differ diff --git a/property.c b/property.c index ec4cea9..4aabfc1 100644 --- a/property.c +++ b/property.c @@ -56,6 +56,7 @@ void loadProperties(char* filename) { } fclose(f); } + fprintf(stderr,"loadProperties: done\n"); } /* --------------------------------------------------------------------------*/ diff --git a/radio.c b/radio.c index af6786e..d1890ae 100644 --- a/radio.c +++ b/radio.c @@ -59,6 +59,12 @@ int classE=0; int tx_out_of_band=0; +int tx_cfir=0; +int tx_alc=1; +int tx_leveler=0; + +double tone_level=0.0; + int sample_rate=48000; int filter_board=ALEX; //int pa=PA_ENABLED; @@ -116,8 +122,11 @@ int nr2_gain_method=2; // 0=Linear 1=Log 2=gamma int nr2_npe_method=0; // 0=OSMS 1=MMSE int nr2_ae=1; // 0=disable 1=enable -double tune_drive=0.1; -double drive=0.6; +double tune_drive=10; +double drive=50; + +int drive_level=0; +int tune_drive_level=0; int receivers=2; int adc[2]={0,1}; @@ -271,7 +280,11 @@ void setTune(int state) { } else { SetTXAPostGenToneFreq(CHANNEL_TX,(double)cw_keyer_sidetone_frequency); } - SetTXAPostGenToneMag(CHANNEL_TX,2.0); + //if(protocol==ORIGINAL_PROTOCOL) { + SetTXAPostGenToneMag(CHANNEL_TX,0.3); + //} else { + // SetTXAPostGenToneMag(CHANNEL_TX,0.99999); + //} SetTXAPostGenRun(CHANNEL_TX,1); SetChannelState(CHANNEL_RX0,0,1); SetChannelState(CHANNEL_TX,1,0); @@ -355,8 +368,33 @@ double getDrive() { return drive; } +static int calcLevel(double d) { + int level=0; + BAND *band=band_get_current_band(); + double target_dbm = 10.0 * log10(d * 1000.0); + double gbb=band->pa_calibration; + target_dbm-=gbb; + double target_volts = sqrt(pow(10, target_dbm * 0.1) * 0.05); + double volts=min((target_volts / 0.8), 1.0); + double v=volts*(1.0/0.98); + + if(v<0.0) { + v=0.0; + } else if(v>1.0) { + v=1.0; + } + + level=(int)(v*255.0); + return level; +} + +void calcDriveLevel() { + drive_level=calcLevel(drive); +} + void setDrive(double value) { drive=value; + calcDriveLevel(); if(protocol==NEW_PROTOCOL) { schedule_high_priority(6); } @@ -366,8 +404,14 @@ double getTuneDrive() { return tune_drive; } +void calcTuneDriveLevel() { + tune_drive_level=calcLevel(tune_drive); +} + void setTuneDrive(double value) { tune_drive=value; + + calcTuneDriveLevel(); if(protocol==NEW_PROTOCOL) { schedule_high_priority(7); } @@ -420,6 +464,7 @@ void set_alex_attenuation(int v) { void radioRestoreState() { char *value; +fprintf(stderr,"radioRestoreState: %s\n",property_path); sem_wait(&property_sem); loadProperties(property_path); @@ -468,11 +513,11 @@ void radioRestoreState() { value=getProperty("volume"); if(value) volume=atof(value); value=getProperty("drive"); - if(value) {drive=atof(value); if(drive>1.0) drive=1.0;} + if(value) drive=atof(value); value=getProperty("tune_drive"); - if(value) {tune_drive=atof(value); if(tune_drive>1.0) tune_drive=1.0;} + if(value) tune_drive=atof(value); value=getProperty("mic_gain"); - if(value) { mic_gain=atof(value); if(mic_gain<1.0) mic_gain=0.0; } + if(value) mic_gain=atof(value); value=getProperty("mic_boost"); if(value) mic_boost=atof(value); value=getProperty("mic_linein"); @@ -569,6 +614,7 @@ void radioRestoreState() { value=getProperty("n_selected_input_device"); if(value) n_selected_input_device=atoi(value); bandRestoreState(); + sem_post(&property_sem); } diff --git a/radio.h b/radio.h index 4326f01..86a4558 100644 --- a/radio.h +++ b/radio.h @@ -75,6 +75,12 @@ extern int classE; extern int tx_out_of_band; +extern int tx_cfir; +extern int tx_alc; +extern int tx_leveler; + +extern double tone_level; + extern int sample_rate; extern int filter_board; extern int pa; @@ -129,6 +135,9 @@ extern int mic_ptt_tip_bias_ring; extern double tune_drive; extern double drive; +extern int tune_drive_level; +extern int drive_level; + int receivers; int adc[2]; @@ -214,16 +223,18 @@ extern void setMox(int state); extern int getMox(); extern void setTune(int state); extern int getTune(); -double getDrive(); -void setDrive(double d); -double getTuneDrive(); -void setTuneDrive(double d); - -void set_attenuation(int value); -int get_attenuation(); -void set_alex_rx_antenna(int v); -void set_alex_tx_antenna(int v); -void set_alex_attenuation(int v); +extern double getDrive(); +extern void setDrive(double d); +extern void calcDriveLevel(); +extern double getTuneDrive(); +extern void setTuneDrive(double d); +extern void calcTuneDriveLevel(); + +extern void set_attenuation(int value); +extern int get_attenuation(); +extern void set_alex_rx_antenna(int v); +extern void set_alex_tx_antenna(int v); +extern void set_alex_attenuation(int v); extern int isTransmitting(); diff --git a/release/pihpsdr.tar b/release/pihpsdr.tar index 3a15206..1840343 100644 Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ diff --git a/release/pihpsdr/pihpsdr b/release/pihpsdr/pihpsdr index d69c3c4..b53d4a5 100755 Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ diff --git a/sliders.c b/sliders.c index fd86935..1a6b4da 100644 --- a/sliders.c +++ b/sliders.c @@ -197,13 +197,17 @@ void set_af_gain(double value) { static void micgain_value_changed_cb(GtkWidget *widget, gpointer data) { mic_gain=gtk_range_get_value(GTK_RANGE(widget)); double gain=pow(10.0, mic_gain / 20.0); - SetTXAPanelGain1(CHANNEL_TX,gain); + if(protocol==NEW_PROTOCOL) { + SetTXAPanelGain1(CHANNEL_TX,gain); + } } void set_mic_gain(double value) { mic_gain=value; double gain=pow(10.0, mic_gain / 20.0); - SetTXAPanelGain1(CHANNEL_TX,gain); + if(protocol==NEW_PROTOCOL) { + SetTXAPanelGain1(CHANNEL_TX,gain); + } if(display_sliders) { gtk_range_set_value (GTK_RANGE(mic_gain_scale),mic_gain); } else { @@ -238,7 +242,7 @@ void set_mic_gain(double value) { void set_drive(double value) { setDrive(value); if(display_sliders) { - gtk_range_set_value (GTK_RANGE(drive_scale),value*100.0); + gtk_range_set_value (GTK_RANGE(drive_scale),value); } else { if(scale_status!=DRIVE) { if(scale_status!=NONE) { @@ -253,7 +257,7 @@ void set_drive(double value) { GtkWidget *content=gtk_dialog_get_content_area(GTK_DIALOG(scale_dialog)); drive_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.00); gtk_widget_set_size_request (drive_scale, 400, 30); - gtk_range_set_value (GTK_RANGE(drive_scale),value*100.0); + gtk_range_set_value (GTK_RANGE(drive_scale),value); gtk_widget_show(drive_scale); gtk_container_add(GTK_CONTAINER(content),drive_scale); scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL); @@ -261,20 +265,20 @@ void set_drive(double value) { int result=gtk_dialog_run(GTK_DIALOG(scale_dialog)); } else { g_source_remove(scale_timer); - gtk_range_set_value (GTK_RANGE(drive_scale),value*100.0); + gtk_range_set_value (GTK_RANGE(drive_scale),value); scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL); } } } static void drive_value_changed_cb(GtkWidget *widget, gpointer data) { - setDrive(gtk_range_get_value(GTK_RANGE(drive_scale))/100.0); + setDrive(gtk_range_get_value(GTK_RANGE(drive_scale))); } void set_tune(double value) { setTuneDrive(value); if(display_sliders) { - gtk_range_set_value (GTK_RANGE(tune_scale),value*100.0); + gtk_range_set_value (GTK_RANGE(tune_scale),value); } else { if(scale_status!=TUNE_DRIVE) { if(scale_status!=NONE) { @@ -289,7 +293,7 @@ void set_tune(double value) { GtkWidget *content=gtk_dialog_get_content_area(GTK_DIALOG(scale_dialog)); tune_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.00); gtk_widget_set_size_request (tune_scale, 400, 30); - gtk_range_set_value (GTK_RANGE(tune_scale),value*100.0); + gtk_range_set_value (GTK_RANGE(tune_scale),value); gtk_widget_show(tune_scale); gtk_container_add(GTK_CONTAINER(content),tune_scale); scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL); @@ -297,14 +301,14 @@ void set_tune(double value) { int result=gtk_dialog_run(GTK_DIALOG(scale_dialog)); } else { g_source_remove(scale_timer); - gtk_range_set_value (GTK_RANGE(tune_scale),value*100.0); + gtk_range_set_value (GTK_RANGE(tune_scale),value); scale_timer=g_timeout_add(2000,scale_timeout_cb,NULL); } } } static void tune_value_changed_cb(GtkWidget *widget, gpointer data) { - setTuneDrive(gtk_range_get_value(GTK_RANGE(tune_scale))/100.0); + setTuneDrive(gtk_range_get_value(GTK_RANGE(tune_scale))); } GtkWidget *sliders_init(int my_width, int my_height, GtkWidget* parent) { @@ -371,7 +375,7 @@ GtkWidget *sliders_init(int my_width, int my_height, GtkWidget* parent) { gtk_grid_attach(GTK_GRID(sliders),drive_label,3,1,1,1); drive_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.0); - gtk_range_set_value (GTK_RANGE(drive_scale),getDrive()*100.0); + gtk_range_set_value (GTK_RANGE(drive_scale),getDrive()); gtk_widget_show(drive_scale); gtk_grid_attach(GTK_GRID(sliders),drive_scale,4,1,2,1); g_signal_connect(G_OBJECT(drive_scale),"value_changed",G_CALLBACK(drive_value_changed_cb),NULL); @@ -382,7 +386,7 @@ GtkWidget *sliders_init(int my_width, int my_height, GtkWidget* parent) { gtk_grid_attach(GTK_GRID(sliders),tune_label,6,1,1,1); tune_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.0); - gtk_range_set_value (GTK_RANGE(tune_scale),getTuneDrive()*100.0); + gtk_range_set_value (GTK_RANGE(tune_scale),getTuneDrive()); gtk_widget_show(tune_scale); gtk_grid_attach(GTK_GRID(sliders),tune_scale,7,1,2,1); g_signal_connect(G_OBJECT(tune_scale),"value_changed",G_CALLBACK(tune_value_changed_cb),NULL); diff --git a/toolbar.c b/toolbar.c index 95d87ba..3d6e3d6 100644 --- a/toolbar.c +++ b/toolbar.c @@ -144,6 +144,9 @@ static void band_select_cb(GtkWidget *widget, gpointer data) { vfo_update(NULL); setFrequency(entry->frequencyA); + + calcDriveLevel(); + calcTuneDriveLevel(); } void band_cb(GtkWidget *widget, gpointer data) { @@ -1068,6 +1071,9 @@ void sim_band_cb(GtkWidget *widget, gpointer data) { set_alex_tx_antenna(band->alexTxAntenna); set_alex_attenuation(band->alexAttenuation); vfo_update(NULL); + + calcDriveLevel(); + calcTuneDriveLevel(); } } diff --git a/wdsp_init.c b/wdsp_init.c index 1e54f17..be78823 100644 --- a/wdsp_init.c +++ b/wdsp_init.c @@ -279,17 +279,21 @@ static void setupTX(int tx) { SetTXABandpassWindow(tx, 1); SetTXABandpassRun(tx, 1); - SetTXACFIRRun(tx, 1); + SetTXACFIRRun(tx, protocol==NEW_PROTOCOL?1:0); // turned in if new protocol SetTXAEQRun(tx, 0); SetTXACTCSSRun(tx, 0); SetTXAAMSQRun(tx, 0); SetTXACompressorRun(tx, 0); SetTXAosctrlRun(tx, 0); + SetTXAALCAttack(tx, 1); SetTXAALCDecay(tx, 10); - SetTXALevelerTop(tx, 15.0); + SetTXAALCSt(tx, tx_alc); + + SetTXALevelerAttack(tx, 1); SetTXALevelerDecay(tx, 500); - SetTXALevelerSt(tx, 1); + SetTXALevelerTop(tx, 5.0); + SetTXALevelerSt(tx, tx_leveler); SetTXAPreGenMode(tx, 0); SetTXAPreGenToneMag(tx, 0.0); @@ -297,13 +301,15 @@ static void setupTX(int tx) { SetTXAPreGenRun(tx, 0); SetTXAPostGenMode(tx, 0); - SetTXAPostGenToneMag(tx, 0.0); + SetTXAPostGenToneMag(tx, tone_level); SetTXAPostGenToneFreq(tx, 0.0); SetTXAPostGenRun(tx, 0); - SetTXAPanelRun(tx, 1); - double gain=pow(10.0, mic_gain / 20.0); - SetTXAPanelGain1(tx,gain); + if(protocol==NEW_PROTOCOL) { + double gain=pow(10.0, mic_gain / 20.0); + SetTXAPanelGain1(tx,gain); + //SetTXAPanelRun(tx, protocol==NEW_PROTOCOL?1:0); + } //SetChannelState(tx,1,0); } @@ -406,6 +412,9 @@ void wdsp_init(int rx,int pixels,int protocol) { initAnalyzer(CHANNEL_PSK,PSK_BUFFER_SIZE); #endif + calcDriveLevel(); + calcTuneDriveLevel(); + } void wdsp_new_sample_rate(int rate) {