From db261fc151cec5950e33cbb581d72c9426a9cd8b Mon Sep 17 00:00:00 2001
From: John Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Date: Fri, 15 Jul 2016 08:29:47 +0000
Subject: [PATCH] Changed audio buffer size for portaudio. Changed Drive and
 Tune scale to 0..255 rather than 0..100.

---
 audio.c        |  3 ++-
 gpio.c         | 18 ++++++++++++------
 old_protocol.c |  6 +++++-
 radio.c        | 13 ++++++++-----
 sliders.c      | 42 ++++++++++++++++++++++++++++--------------
 5 files changed, 55 insertions(+), 27 deletions(-)

diff --git a/audio.c b/audio.c
index 431b5b3..07249a4 100644
--- a/audio.c
+++ b/audio.c
@@ -35,7 +35,8 @@
 #include "radio.h"
 
 int audio = 0;
-int audio_buffer_size = 2016; // samples (both left and right)
+//int audio_buffer_size = 2016; // samples (both left and right)
+int audio_buffer_size = 256; // samples (both left and right)
 
 static pa_simple *stream;
 
diff --git a/gpio.c b/gpio.c
index b00e740..9d69865 100644
--- a/gpio.c
+++ b/gpio.c
@@ -760,21 +760,27 @@ static int rf_encoder_changed(void *data) {
     if(function || tune) {
       // tune drive
       double d=getTuneDrive();
-      d+=(double)pos/100.0;
+      //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>1.0) {
+      //  d=1.0;
+      } else if(d>255.0) {
+        d=255.0;
       }
       set_tune(d);
     } else {
       // drive
       double d=getDrive();
-      d+=(double)pos/100.0;
+      //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>1.0) {
+      //  d=1.0;
+      } else if(d>255.0) {
+        d=255.0;
       }
       set_drive(d);
     }
diff --git a/old_protocol.c b/old_protocol.c
index e7f8476..5bfe753 100644
--- a/old_protocol.c
+++ b/old_protocol.c
@@ -465,6 +465,8 @@ static void process_ozy_input_buffer(char  *buffer) {
         if(mode==modeFREEDV) {
           if(freedv_samples==0) {
             int modem_samples=mod_sample_freedv(mic_sample);
+            //short micinput=(short)(((double)mic_sample_float*mic_gain)*32767.0);
+            //int modem_samples=mod_sample_freedv(micinput);
             if(modem_samples!=0) {
               int s;
               for(s=0;s<modem_samples;s++) {
@@ -473,6 +475,8 @@ static void process_ozy_input_buffer(char  *buffer) {
                   mic_sample_float=(float)mic_sample/32767.0f; // 16 bit sample 2^16-1
                   micinputbuffer[samples*2]=(double)mic_sample_float*mic_gain;
                   micinputbuffer[(samples*2)+1]=(double)mic_sample_float*mic_gain;
+                  //micinputbuffer[samples*2]=(double)mic_sample_float;
+                  //micinputbuffer[(samples*2)+1]=(double)mic_sample_float;
                   iqinputbuffer[samples*2]=0.0;
                   iqinputbuffer[(samples*2)+1]=0.0;
                   samples++;
@@ -819,7 +823,7 @@ void ozy_send_buffer() {
         d=(float)tune_drive;
       }
       BAND *band=band_get_current_band();
-      d=(d/100.0F)*(float)band->pa_calibration;
+      d=(d*(float)band->pa_calibration)/100.0F;
 
       output_buffer[C0]=0x12;
       output_buffer[C1]=(int)d;
diff --git a/radio.c b/radio.c
index 3fd8c7a..7931e8d 100644
--- a/radio.c
+++ b/radio.c
@@ -316,23 +316,26 @@ long long getFrequency() {
 }
 
 double getDrive() {
-    return (double)drive/255.0;
+    //return (double)drive/255.0;
+    return (double)drive;
 }
 
 void setDrive(double value) {
-    drive=(int)(value*255.0);
+    //drive=(int)(value*255.0);
+    drive=(int)(value);
     if(protocol==NEW_PROTOCOL) {
       schedule_high_priority(6);
     }
 }
 
 double getTuneDrive() {
-    return (double)tune_drive/255.0;
+    //return (double)tune_drive/255.0;
+    return (double)tune_drive;
 }
 
 void setTuneDrive(double value) {
-fprintf(stderr,"setTuneDrive: protocol=%d\n", protocol);
-    tune_drive=(int)(value*255.0);
+    //tune_drive=(int)(value*255.0);
+    tune_drive=(int)(value);
     if(protocol==NEW_PROTOCOL) {
       schedule_high_priority(7);
     }
diff --git a/sliders.c b/sliders.c
index 4a76e19..8e98474 100644
--- a/sliders.c
+++ b/sliders.c
@@ -234,7 +234,8 @@ fprintf(stderr,"set_mic_gain: %f\n",mic_gain);
 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*100.0);
+    gtk_range_set_value (GTK_RANGE(drive_scale),value);
   } else {
     if(scale_status!=DRIVE) {
       if(scale_status!=NONE) {
@@ -247,9 +248,11 @@ void set_drive(double value) {
       scale_status=DRIVE;
       scale_dialog=gtk_dialog_new_with_buttons("Drive",GTK_WINDOW(parent_window),GTK_DIALOG_DESTROY_WITH_PARENT,NULL,NULL);
       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);
+      //drive_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.00);
+      drive_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 255.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*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);
@@ -257,20 +260,23 @@ 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*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))/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*100.0);
+    gtk_range_set_value (GTK_RANGE(tune_scale),value);
   } else {
     if(scale_status!=TUNE_DRIVE) {
       if(scale_status!=NONE) {
@@ -283,9 +289,11 @@ void set_tune(double value) {
       scale_status=TUNE_DRIVE;
       scale_dialog=gtk_dialog_new_with_buttons("Tune Drive",GTK_WINDOW(parent_window),GTK_DIALOG_DESTROY_WITH_PARENT,NULL,NULL);
       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);
+      //tune_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.00);
+      tune_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 255.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*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);
@@ -293,14 +301,16 @@ 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*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))/100.0);
+  setTuneDrive(gtk_range_get_value(GTK_RANGE(tune_scale)));
 }
 
 GtkWidget *sliders_init(int my_width, int my_height, GtkWidget* parent) {
@@ -366,8 +376,10 @@ GtkWidget *sliders_init(int my_width, int my_height, GtkWidget* parent) {
   gtk_widget_show(drive_label);
   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);
+  //drive_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.0);
+  drive_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 255.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);
@@ -377,8 +389,10 @@ GtkWidget *sliders_init(int my_width, int my_height, GtkWidget* parent) {
   gtk_widget_show(tune_label);
   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);
+  //tune_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 100.0, 1.0);
+  tune_scale=gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL,0.0, 255.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);
-- 
2.45.2