]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
add disable pa option to XVTR menu
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Fri, 25 Nov 2016 10:15:01 +0000 (10:15 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Fri, 25 Nov 2016 10:15:01 +0000 (10:15 +0000)
band.c
band.h
new_protocol.c
old_protocol.c
pihpsdr
release/pihpsdr.tar
release/pihpsdr/pihpsdr
xvtr_menu.c

diff --git a/band.c b/band.c
index 780c58653c4402c37d2f21c407d69af52b005cb3..e1ec870125f5b8b87673083297b189c712064e08 100644 (file)
--- a/band.c
+++ b/band.c
@@ -221,39 +221,39 @@ BANDSTACK bandstack_xvtr_7={1,0,bandstack_entries_xvtr_7};
 
 
 BAND bands[BANDS+XVTRS] = 
-    {{"160",&bandstack160,0,0,0,0,0,ALEX_ATTENUATION_0dB,42.0,0LL,0LL,0LL},
-     {"80",&bandstack80,0,0,0,0,0,ALEX_ATTENUATION_0dB,42.5,0LL,0LL,0LL},
-     {"60",&bandstack60,0,0,0,0,0,ALEX_ATTENUATION_0dB,42.5,0LL,0LL,0LL},
-     {"40",&bandstack40,0,0,0,0,0,ALEX_ATTENUATION_0dB,42.5,0LL,0LL,0LL},
-     {"30",&bandstack30,0,0,0,0,0,ALEX_ATTENUATION_0dB,41.3,0LL,0LL,0LL},
-     {"20",&bandstack20,0,0,0,0,0,ALEX_ATTENUATION_0dB,40.5,0LL,0LL,0LL},
-     {"18",&bandstack18,0,0,0,0,0,ALEX_ATTENUATION_0dB,40.0,0LL,0LL,0LL},
-     {"15",&bandstack15,0,0,0,0,0,ALEX_ATTENUATION_0dB,39.6,0LL,0LL,0LL},
-     {"12",&bandstack12,0,0,0,0,0,ALEX_ATTENUATION_0dB,39.0,0LL,0LL,0LL},
-     {"10",&bandstack10,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"50",&bandstack50,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
+    {{"160",&bandstack160,0,0,0,0,0,ALEX_ATTENUATION_0dB,42.0,0LL,0LL,0LL,0},
+     {"80",&bandstack80,0,0,0,0,0,ALEX_ATTENUATION_0dB,42.5,0LL,0LL,0LL,0},
+     {"60",&bandstack60,0,0,0,0,0,ALEX_ATTENUATION_0dB,42.5,0LL,0LL,0LL,0},
+     {"40",&bandstack40,0,0,0,0,0,ALEX_ATTENUATION_0dB,42.5,0LL,0LL,0LL,0},
+     {"30",&bandstack30,0,0,0,0,0,ALEX_ATTENUATION_0dB,41.3,0LL,0LL,0LL,0},
+     {"20",&bandstack20,0,0,0,0,0,ALEX_ATTENUATION_0dB,40.5,0LL,0LL,0LL,0},
+     {"18",&bandstack18,0,0,0,0,0,ALEX_ATTENUATION_0dB,40.0,0LL,0LL,0LL,0},
+     {"15",&bandstack15,0,0,0,0,0,ALEX_ATTENUATION_0dB,39.6,0LL,0LL,0LL,0},
+     {"12",&bandstack12,0,0,0,0,0,ALEX_ATTENUATION_0dB,39.0,0LL,0LL,0LL,0},
+     {"10",&bandstack10,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"50",&bandstack50,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
 #ifdef LIMESDR
-     {"70",&bandstack70,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"144",&bandstack144,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"220",&bandstack144,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"430",&bandstack430,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"902",&bandstack430,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"1240",&bandstack1240,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"2300",&bandstack2300,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"3400",&bandstack3400,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"AIR",&bandstackAIR,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
+     {"70",&bandstack70,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"144",&bandstack144,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"220",&bandstack144,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"430",&bandstack430,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"902",&bandstack430,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"1240",&bandstack1240,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"2300",&bandstack2300,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"3400",&bandstack3400,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"AIR",&bandstackAIR,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
 #endif
-     {"GEN",&bandstackGEN,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"WWV",&bandstackWWV,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
+     {"GEN",&bandstackGEN,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"WWV",&bandstackWWV,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
 // XVTRS
-     {"",&bandstack_xvtr_0,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"",&bandstack_xvtr_1,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"",&bandstack_xvtr_2,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"",&bandstack_xvtr_3,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"",&bandstack_xvtr_4,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"",&bandstack_xvtr_5,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"",&bandstack_xvtr_6,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL},
-     {"",&bandstack_xvtr_7,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL}
+     {"",&bandstack_xvtr_0,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"",&bandstack_xvtr_1,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"",&bandstack_xvtr_2,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"",&bandstack_xvtr_3,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"",&bandstack_xvtr_4,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"",&bandstack_xvtr_5,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"",&bandstack_xvtr_6,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0},
+     {"",&bandstack_xvtr_7,0,0,0,0,0,ALEX_ATTENUATION_0dB,38.8,0LL,0LL,0LL,0}
     };
 
 
@@ -392,6 +392,10 @@ void bandSaveState() {
         sprintf(name,"band.%d.frequencyLO",b);
         setProperty(name,value);
 
+        sprintf(value,"%d",bands[b].disablePA);
+        sprintf(name,"band.%d.disablePA",b);
+        setProperty(name,value);
+
         for(stack=0;stack<bands[b].bandstack->entries;stack++) {
             entry=bands[b].bandstack->entry;
             entry+=stack;
@@ -503,6 +507,10 @@ fprintf(stderr,"bandRestoreState: restore bands\n");
         value=getProperty(name);
         if(value) bands[b].frequencyLO=atoll(value);
 
+        sprintf(name,"band.%d.disablePA",b);
+        value=getProperty(name);
+        if(value) bands[b].disablePA=atoi(value);
+
         for(stack=0;stack<bands[b].bandstack->entries;stack++) {
             entry=bands[b].bandstack->entry;
             entry+=stack;
diff --git a/band.h b/band.h
index 6438bccbc5209e84e6579905845f6cd95cf5fab5..40fe1b16dda8f8ee98c39d5954a616a3274b70f5 100644 (file)
--- a/band.h
+++ b/band.h
@@ -84,6 +84,7 @@ struct _BAND {
     long long frequencyMin;
     long long frequencyMax;
     long long frequencyLO;
+    int disablePA;
 };
 
 typedef struct _BAND BAND;
index b3968b6c5b2362a8075a35a8ba2c0a6d1d562e5b..13a6bf745b8ecdfaad6a8c9617bf9d6d2208b3ef 100644 (file)
@@ -260,6 +260,7 @@ void new_protocol_new_sample_rate(int rate) {
 
 static void new_protocol_general() {
     unsigned char buffer[60];
+    BAND *band=band_get_current_band();
 
     memset(buffer, 0, sizeof(buffer));
 
@@ -272,7 +273,13 @@ static void new_protocol_general() {
     buffer[37]=0x08;  //  phase word (not frequency)
     buffer[38]=0x01;  //  enable hardware timer
 
-    buffer[58]=0x01;  // enable PA 0x01
+    
+    
+    if(band->disablePA) {
+      buffer[58]=0x00;
+    } else {
+      buffer[58]=0x01;  // enable PA
+    }
 
     if(filter_board==APOLLO) {
         buffer[58]|=0x02; // enable APOLLO tuner
index 45f91a24e16d15156571bb797a3c16d464103a6c..590c031b68fcda6833e86ffe455b90bc899325f1 100644 (file)
@@ -944,6 +944,7 @@ void ozy_send_buffer() {
       break;
     case 3:
       {
+      BAND *band=band_get_current_band();
       int power=0;
       if(isTransmitting()) {
         if(tune) {
@@ -971,7 +972,10 @@ fprintf(stderr,"power=%d\n",power);
       }
       output_buffer[C3]=0x00;
       if(band_get_current()==band6) {
-        output_buffer[C3]=output_buffer[6]|0x40; // Alex 6M low noise amplifier
+        output_buffer[C3]=output_buffer[C3]|0x40; // Alex 6M low noise amplifier
+      }
+      if(band->disablePA) {
+        output_buffer[C3]=output_buffer[C3]|0x80; // disable PA
       }
       output_buffer[C4]=0x00;
       }
diff --git a/pihpsdr b/pihpsdr
index 5d2ce224aa754f512ea2d8752472e95f8f1ba505..deda0d1242a04d8b9baf51cf12a4d009426361c3 100755 (executable)
Binary files a/pihpsdr and b/pihpsdr differ
index 981483dbeb1409c9776ee3b4512e065e28a50918..c1e7c9be1bc86203371ffc2ade669b72fdf2d4f1 100644 (file)
Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ
index 5d2ce224aa754f512ea2d8752472e95f8f1ba505..deda0d1242a04d8b9baf51cf12a4d009426361c3 100755 (executable)
Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ
index 943d3c648ae54268f6f343e0185866f7022924db..6a2512519d9a800f3f292d893b12508750aed65a 100644 (file)
@@ -36,6 +36,7 @@ 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 *disable_pa[BANDS+XVTRS];
 
 static gboolean close_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) {
   int i;
@@ -57,6 +58,7 @@ static gboolean close_cb (GtkWidget *widget, GdkEventButton *event, gpointer dat
         xvtr->frequencyMax=atoll(maxf);
         lof=gtk_entry_get_text(GTK_ENTRY(lo_frequency[i]));
         xvtr->frequencyLO=atoll(lof);
+        xvtr->disablePA=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(disable_pa[i]));
         entry->frequencyA=xvtr->frequencyMin;
         entry->frequencyB=xvtr->frequencyMin;
         entry->mode=modeUSB;
@@ -65,6 +67,7 @@ static gboolean close_cb (GtkWidget *widget, GdkEventButton *event, gpointer dat
         xvtr->frequencyMin=0;
         xvtr->frequencyMax=0;
         xvtr->frequencyLO=0;
+        xvtr->disablePA=0;
       }
     }
     gtk_widget_destroy(dialog);
@@ -96,10 +99,10 @@ fprintf(stderr,"xvtr_menu\n");
   GtkWidget *content=gtk_dialog_get_content_area(GTK_DIALOG(dialog));
 
   GtkWidget *grid=gtk_grid_new();
-  gtk_grid_set_column_spacing (GTK_GRID(grid),10);
+  //gtk_grid_set_column_spacing (GTK_GRID(grid),10);
   //gtk_grid_set_row_spacing (GTK_GRID(grid),10);
   //gtk_grid_set_row_homogeneous(GTK_GRID(grid),TRUE);
-  gtk_grid_set_column_homogeneous(GTK_GRID(grid),TRUE);
+  //gtk_grid_set_column_homogeneous(GTK_GRID(grid),TRUE);
 
   GtkWidget *close_b=gtk_button_new_with_label("Close XVTR");
   g_signal_connect (close_b, "pressed", G_CALLBACK(close_cb), NULL);
@@ -113,6 +116,8 @@ fprintf(stderr,"xvtr_menu\n");
   gtk_grid_attach(GTK_GRID(grid),label,2,1,1,1);
   label=gtk_label_new("LO Freq (Hz)");
   gtk_grid_attach(GTK_GRID(grid),label,3,1,1,1);
+  label=gtk_label_new("Disable PA");
+  gtk_grid_attach(GTK_GRID(grid),label,4,1,1,1);
 
 
 
@@ -139,6 +144,10 @@ fprintf(stderr,"xvtr_menu: band: %s\n",xvtr->title);
     sprintf(f,"%lld",xvtr->frequencyLO);
     gtk_entry_set_text(GTK_ENTRY(lo_frequency[i]),f);
     gtk_grid_attach(GTK_GRID(grid),lo_frequency[i],3,i+2,1,1);
+
+    disable_pa[i]=gtk_check_button_new();
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(disable_pa[i]),xvtr->disablePA);
+    gtk_grid_attach(GTK_GRID(grid),disable_pa[i],4,i+2,1,1);
     
   }