]> git.rkrishnan.org Git - pihpsdr.git/commitdiff
new protocol updates
authorJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Mon, 18 Jul 2016 18:45:13 +0000 (18:45 +0000)
committerJohn Melton - G0ORX/N6LYT <john.d.melton@googlemail.com>
Mon, 18 Jul 2016 18:45:13 +0000 (18:45 +0000)
meter.c
new_protocol.c
old_protocol.c
pihpsdr
release/pihpsdr.tar
release/pihpsdr/pihpsdr

diff --git a/meter.c b/meter.c
index cd01fbfc716b9bddad3e487258358388d47fa857..40da458c26822529c0ac43ef1dac0baf1cd8cd7e 100644 (file)
--- a/meter.c
+++ b/meter.c
@@ -87,12 +87,14 @@ meter_draw_cb (GtkWidget *widget, cairo_t   *cr, gpointer   data) {
   return FALSE;
 }
 
+static void
 smeter_select_cb (GtkWidget *widget,
                gpointer        data)
 {
   smeter=(int)data;
 }
 
+static void
 alc_meter_select_cb (GtkWidget *widget,
                gpointer        data)
 {
index b8fd5da5b36285dad027895697dc02d133401123..3e4a07a5d3a2605a1444df8965c661bd331f3189 100644 (file)
@@ -103,18 +103,18 @@ static int fft_size=4096;
 static int dspRate=48000;
 static int outputRate=48000;
 
-static double micinputbuffer[BUFFER_SIZE*2];
-static double micoutputbuffer[BUFFER_SIZE*4*2];
+static int micSampleRate=48000;
+static int micDspRate=48000;
+static int micOutputRate=192000;
+static int micoutputsamples=BUFFER_SIZE*4;  // 48000 in, 192000 out
+
+static double micinputbuffer[BUFFER_SIZE*2]; // 48000
+static double micoutputbuffer[BUFFER_SIZE*4*2]; //192000
 
 static long tx_iq_sequence;
 static unsigned char iqbuffer[1444];
 static int iqindex;
 
-static int micSampleRate=48000;
-static int micDspRate=48000;
-static int micOutputRate=192000;
-static int micoutputsamples;
-
 static int spectrumWIDTH=800;
 static int SPECTRUM_UPDATES_PER_SECOND=10;
 
@@ -142,7 +142,7 @@ static int audioindex;
 
 #ifdef FREEDV
 static int freedv_samples=0;
-static int freedv_divisor=6;  // convert from 48000 to 8000
+static int freedv_resample=6;  // convert from 48000 to 8000
 #endif
 
 static void* new_protocol_thread(void* arg);
@@ -563,17 +563,18 @@ void new_protocol_stop() {
     sleep(1);
 }
 
-float sineWave(double* buf, int samples, float phase, float freq) {
-    //float phase_step = 2 * PI * freq / 192000.0F;
+static float sineWave(double* buf, int samples, float phase, float freq) {
     float phase_step = 2 * PI * freq / 48000.0F;
     int i;
     for (i = 0; i < samples; i++) {
         buf[i*2] = (double) sin(phase);
+        buf[(i*2)+1] = (double) sin(phase);
         phase += phase_step;
     }
     return phase;
 }
 
+
 double calibrate(int v) {
     // Angelia
     double v1;
@@ -612,16 +613,6 @@ void* new_protocol_thread(void* arg) {
     float micsamplefloat;
 
     int micsamples;
-/*
-    float micleftinputbuffer[BUFFER_SIZE];  // 48000
-    float micrightinputbuffer[BUFFER_SIZE];
-    int micoutputsamples;
-    float micleftoutputbuffer[BUFFER_SIZE*4]; // 192000
-    float micrightoutputbuffer[BUFFER_SIZE*4];
-    long tx_iq_sequence;
-    unsigned char iqbuffer[1444];
-    int iqindex;
-*/
 
     int i, j;
 fprintf(stderr,"new_protocol_thread: receiver=%d\n", receiver);
@@ -629,7 +620,6 @@ fprintf(stderr,"new_protocol_thread: receiver=%d\n", receiver);
     micsamples=0;
     iqindex=4;
 
-    micoutputsamples=BUFFER_SIZE*4;  // 48000 in, 192000 out
 
 fprintf(stderr,"outputsamples=%d\n", outputsamples);
     data_socket=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
@@ -780,22 +770,19 @@ if(dash!=previous_dash) {
               for(i=0;i<720;i++) {
                   micsample  = (int)((signed char) buffer[b++]) << 8;
                   micsample  |= (int)((unsigned char)buffer[b++] & 0xFF);
-                  micsamplefloat = (float)micsample/32767.0F; // 16 bit sample
 
 #ifdef FREEDV
                   if(mode==modeFREEDV) {
-                    if(freedv_samples==0) {
+                    if(freedv_samples==0) { // 48K to 8K
                       int modem_samples=mod_sample_freedv(micsample);
                       if(modem_samples!=0) {
                         int s;
                         for(s=0;s<modem_samples;s++) {
-                          for(j=0;j<freedv_divisor;j++) {
+                          for(j=0;j<freedv_resample;j++) {  // 8K to 48K
                             micsample=mod_out[s];
                             micsamplefloat=(float)micsample/32767.0f; // 16 bit sample 2^16-1
-                            micinputbuffer[samples*2]=(double)micsamplefloat*mic_gain;
-                            micinputbuffer[(samples*2)+1]=(double)micsamplefloat*mic_gain;
-                            iqinputbuffer[samples*2]=0.0;
-                            iqinputbuffer[(samples*2)+1]=0.0;
+                            micinputbuffer[micsamples*2]=(double)micsamplefloat*mic_gain;
+                            micinputbuffer[(micsamples*2)+1]=(double)micsamplefloat*mic_gain;
                             micsamples++;
                             if(micsamples==buffer_size) {
                               full_tx_buffer();
@@ -806,12 +793,12 @@ if(dash!=previous_dash) {
                       }
                     }
                     freedv_samples++;
-                    if(freedv_samples==freedv_divisor) {
+                    if(freedv_samples==freedv_resample) {
                       freedv_samples=0;
                     }
                   } else {
-                  
 #endif
+                    micsamplefloat = (float)micsample/32767.0F; // 16 bit sample
                     micinputbuffer[micsamples*2]=(double)(micsamplefloat*mic_gain);
                     micinputbuffer[(micsamples*2)+1]=(double)(micsamplefloat*mic_gain);
 
@@ -872,12 +859,12 @@ static void full_rx_buffer() {
         int s;
         int t;
         for(s=0;s<demod_samples;s++) {
+          if(freedv_sync) {
+            leftaudiosample=rightaudiosample=(short)((double)speech_out[s]*volume);
+          } else {
+            leftaudiosample=rightaudiosample=0;
+          }
           for(t=0;t<6;t++) { // 8k to 48k
-            if(freedv_sync) {
-              leftaudiosample=rightaudiosample=(short)((double)speech_out[s]*volume);
-            } else {
-              leftaudiosample=rightaudiosample=0;
-            }
             if(local_audio) {
               audio_write(leftaudiosample,rightaudiosample);
             }
index 56a75339b4476d3b6310d60ff2809c54ae250dc5..a64e8123fcf5a191fe25ae1288be34ae281adff7 100644 (file)
@@ -193,6 +193,7 @@ static float sineWave(double* buf, int samples, float phase, float freq) {
     int i;
     for (i = 0; i < samples; i++) {
         buf[i*2] = (double) sin(phase);
+        buf[(i*2)+1] = (double) sin(phase);
         phase += phase_step;
     }
     return phase;
diff --git a/pihpsdr b/pihpsdr
index 5c968edde472335d6b3b12fc4031d458d4552a2e..93f94d9cb680e9643416cb7c33928c96d79e374f 100755 (executable)
Binary files a/pihpsdr and b/pihpsdr differ
index 1b8a29572b5b3b328d77a514f4312eeca5fde547..531ad5633b94a1ba02dc5d537fb628a58560f9dc 100644 (file)
Binary files a/release/pihpsdr.tar and b/release/pihpsdr.tar differ
index 5c968edde472335d6b3b12fc4031d458d4552a2e..c2a18ebbe18c9d4134a24addf8a9050d7dbc99b5 100755 (executable)
Binary files a/release/pihpsdr/pihpsdr and b/release/pihpsdr/pihpsdr differ