mirror of https://github.com/wb2osz/direwolf.git
				
				
				
			Minor cleanups.
This commit is contained in:
		
							parent
							
								
									d85abe214f
								
							
						
					
					
						commit
						7a88785fad
					
				
							
								
								
									
										18
									
								
								demod.c
								
								
								
								
							
							
						
						
									
										18
									
								
								demod.c
								
								
								
								
							| 
						 | 
					@ -403,8 +403,8 @@ int demod_init (struct audio_s *pa)
 | 
				
			||||||
	          /* For signal level reporting, we want a longer term view. */
 | 
						          /* For signal level reporting, we want a longer term view. */
 | 
				
			||||||
		  // TODO: Should probably move this into the init functions.
 | 
							  // TODO: Should probably move this into the init functions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	          D->quick_attack = D->agc_fast_attack * 0.2;
 | 
						          D->quick_attack = D->agc_fast_attack * 0.2f;
 | 
				
			||||||
	          D->sluggish_decay = D->agc_slow_decay * 0.2;
 | 
						          D->sluggish_decay = D->agc_slow_decay * 0.2f;
 | 
				
			||||||
	        }
 | 
						        }
 | 
				
			||||||
	      }
 | 
						      }
 | 
				
			||||||
	      else if (have_plus) {
 | 
						      else if (have_plus) {
 | 
				
			||||||
| 
						 | 
					@ -458,8 +458,8 @@ int demod_init (struct audio_s *pa)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	        /* For signal level reporting, we want a longer term view. */
 | 
						        /* For signal level reporting, we want a longer term view. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	        D->quick_attack = D->agc_fast_attack * 0.2;
 | 
						        D->quick_attack = D->agc_fast_attack * 0.2f;
 | 
				
			||||||
	        D->sluggish_decay = D->agc_slow_decay * 0.2;
 | 
						        D->sluggish_decay = D->agc_slow_decay * 0.2f;
 | 
				
			||||||
	      }	
 | 
						      }	
 | 
				
			||||||
	      else {
 | 
						      else {
 | 
				
			||||||
	        int d;
 | 
						        int d;
 | 
				
			||||||
| 
						 | 
					@ -511,8 +511,8 @@ int demod_init (struct audio_s *pa)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	          /* For signal level reporting, we want a longer term view. */
 | 
						          /* For signal level reporting, we want a longer term view. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	          D->quick_attack = D->agc_fast_attack * 0.2;
 | 
						          D->quick_attack = D->agc_fast_attack * 0.2f;
 | 
				
			||||||
	          D->sluggish_decay = D->agc_slow_decay * 0.2;
 | 
						          D->sluggish_decay = D->agc_slow_decay * 0.2f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	        } 	  /* for each freq pair */
 | 
						        } 	  /* for each freq pair */
 | 
				
			||||||
	      }	
 | 
						      }	
 | 
				
			||||||
| 
						 | 
					@ -687,7 +687,7 @@ int demod_init (struct audio_s *pa)
 | 
				
			||||||
	      dw_printf ("The ratio of audio samples per sec (%d) to data rate in baud (%d) is %.1f\n",
 | 
						      dw_printf ("The ratio of audio samples per sec (%d) to data rate in baud (%d) is %.1f\n",
 | 
				
			||||||
				save_audio_config_p->adev[ACHAN2ADEV(chan)].samples_per_sec,
 | 
									save_audio_config_p->adev[ACHAN2ADEV(chan)].samples_per_sec,
 | 
				
			||||||
				save_audio_config_p->achan[chan].baud,
 | 
									save_audio_config_p->achan[chan].baud,
 | 
				
			||||||
				ratio);
 | 
									(double)ratio);
 | 
				
			||||||
	      if (ratio < 3) {
 | 
						      if (ratio < 3) {
 | 
				
			||||||
	        text_color_set(DW_COLOR_ERROR);
 | 
						        text_color_set(DW_COLOR_ERROR);
 | 
				
			||||||
	        dw_printf ("There is little hope of success with such a low ratio.  Use a higher sample rate.\n");
 | 
						        dw_printf ("There is little hope of success with such a low ratio.  Use a higher sample rate.\n");
 | 
				
			||||||
| 
						 | 
					@ -718,8 +718,8 @@ int demod_init (struct audio_s *pa)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	      /* For signal level reporting, we want a longer term view. */
 | 
						      /* For signal level reporting, we want a longer term view. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	      D->quick_attack = D->agc_fast_attack * 0.2;
 | 
						      D->quick_attack = D->agc_fast_attack * 0.2f;
 | 
				
			||||||
	      D->sluggish_decay = D->agc_slow_decay * 0.2;
 | 
						      D->sluggish_decay = D->agc_slow_decay * 0.2f;
 | 
				
			||||||
	      }
 | 
						      }
 | 
				
			||||||
	      break;
 | 
						      break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										32
									
								
								demod_9600.c
								
								
								
								
							
							
						
						
									
										32
									
								
								demod_9600.c
								
								
								
								
							| 
						 | 
					@ -87,21 +87,21 @@ __attribute__((hot)) __attribute__((always_inline))
 | 
				
			||||||
static inline float agc (float in, float fast_attack, float slow_decay, float *ppeak, float *pvalley)
 | 
					static inline float agc (float in, float fast_attack, float slow_decay, float *ppeak, float *pvalley)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (in >= *ppeak) {
 | 
						if (in >= *ppeak) {
 | 
				
			||||||
	  *ppeak = in * fast_attack + *ppeak * (1. - fast_attack);
 | 
						  *ppeak = in * fast_attack + *ppeak * (1.0f - fast_attack);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
	  *ppeak = in * slow_decay + *ppeak * (1. - slow_decay);
 | 
						  *ppeak = in * slow_decay + *ppeak * (1.0f - slow_decay);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (in <= *pvalley) {
 | 
						if (in <= *pvalley) {
 | 
				
			||||||
	  *pvalley = in * fast_attack + *pvalley * (1. - fast_attack);
 | 
						  *pvalley = in * fast_attack + *pvalley * (1.0f - fast_attack);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else  {   
 | 
						else  {   
 | 
				
			||||||
	  *pvalley = in * slow_decay + *pvalley * (1. - slow_decay);
 | 
						  *pvalley = in * slow_decay + *pvalley * (1.0f - slow_decay);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (*ppeak > *pvalley) {
 | 
						if (*ppeak > *pvalley) {
 | 
				
			||||||
	  return ((in - 0.5 * (*ppeak + *pvalley)) / (*ppeak - *pvalley));
 | 
						  return ((in - 0.5f * (*ppeak + *pvalley)) / (*ppeak - *pvalley));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return (0.0);
 | 
						return (0.0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -144,8 +144,8 @@ void demod_9600_init (int samples_per_sec, int baud, struct demodulator_state_s
 | 
				
			||||||
	    D->lp_filter_len_bits =  76 * 9600.0 / (44100.0 * 2.0);
 | 
						    D->lp_filter_len_bits =  76 * 9600.0 / (44100.0 * 2.0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    // Works best with odd number in some tests.  Even is better in others.
 | 
						    // Works best with odd number in some tests.  Even is better in others.
 | 
				
			||||||
	    //D->lp_filter_size = ((int) (0.5 * ( D->lp_filter_len_bits * (float)samples_per_sec / (float)baud ))) * 2 + 1;
 | 
						    //D->lp_filter_size = ((int) (0.5f * ( D->lp_filter_len_bits * (float)samples_per_sec / (float)baud ))) * 2 + 1;
 | 
				
			||||||
	    D->lp_filter_size = (int) (( D->lp_filter_len_bits * (float)samples_per_sec / baud) + 0.5);
 | 
						    D->lp_filter_size = (int) (( D->lp_filter_len_bits * (float)samples_per_sec / baud) + 0.5f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    D->lp_window = BP_WINDOW_HAMMING;
 | 
						    D->lp_window = BP_WINDOW_HAMMING;
 | 
				
			||||||
	    D->lpf_baud = 0.62;
 | 
						    D->lpf_baud = 0.62;
 | 
				
			||||||
| 
						 | 
					@ -199,7 +199,7 @@ void demod_9600_init (int samples_per_sec, int baud, struct demodulator_state_s
 | 
				
			||||||
	/* Version 1.2: Experiment with different slicing levels. */
 | 
						/* Version 1.2: Experiment with different slicing levels. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (j = 0; j < MAX_SUBCHANS; j++) {
 | 
						for (j = 0; j < MAX_SUBCHANS; j++) {
 | 
				
			||||||
	  slice_point[j] = 0.02 * (j - 0.5 * (MAX_SUBCHANS-1));
 | 
						  slice_point[j] = 0.02f * (j - 0.5f * (MAX_SUBCHANS-1));
 | 
				
			||||||
	  //dw_printf ("slice_point[%d] = %+5.2f\n", j, slice_point[j]);
 | 
						  //dw_printf ("slice_point[%d] = %+5.2f\n", j, slice_point[j]);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -333,17 +333,17 @@ void demod_9600_process_sample (int chan, int sam, struct demodulator_state_s *D
 | 
				
			||||||
// TODO:  probably no need for this.  Just use  D->m_peak, D->m_valley
 | 
					// TODO:  probably no need for this.  Just use  D->m_peak, D->m_valley
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (amp >= D->alevel_mark_peak) {
 | 
						if (amp >= D->alevel_mark_peak) {
 | 
				
			||||||
	  D->alevel_mark_peak = amp * D->quick_attack + D->alevel_mark_peak * (1. - D->quick_attack);
 | 
						  D->alevel_mark_peak = amp * D->quick_attack + D->alevel_mark_peak * (1.0f - D->quick_attack);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
	  D->alevel_mark_peak = amp * D->sluggish_decay + D->alevel_mark_peak * (1. - D->sluggish_decay);
 | 
						  D->alevel_mark_peak = amp * D->sluggish_decay + D->alevel_mark_peak * (1.0f - D->sluggish_decay);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (amp <= D->alevel_space_peak) {
 | 
						if (amp <= D->alevel_space_peak) {
 | 
				
			||||||
	  D->alevel_space_peak = amp * D->quick_attack + D->alevel_space_peak * (1. - D->quick_attack);
 | 
						  D->alevel_space_peak = amp * D->quick_attack + D->alevel_space_peak * (1.0f - D->quick_attack);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
	  D->alevel_space_peak = amp * D->sluggish_decay + D->alevel_space_peak * (1. - D->sluggish_decay);
 | 
						  D->alevel_space_peak = amp * D->sluggish_decay + D->alevel_space_peak * (1.0f - D->sluggish_decay);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* 
 | 
					/* 
 | 
				
			||||||
| 
						 | 
					@ -544,10 +544,10 @@ static void inline nudge_pll (int chan, int subchan, int slice, float demod_out_
 | 
				
			||||||
	    fprintf (demod_log_fp, "Audio, Peak, Valley, Demod, SData, Descram, Clock\n");
 | 
						    fprintf (demod_log_fp, "Audio, Peak, Valley, Demod, SData, Descram, Clock\n");
 | 
				
			||||||
	  }
 | 
						  }
 | 
				
			||||||
	  fprintf (demod_log_fp, "%.3f, %.3f, %.3f, %.3f, %.2f, %.2f, %.2f\n", 
 | 
						  fprintf (demod_log_fp, "%.3f, %.3f, %.3f, %.3f, %.2f, %.2f, %.2f\n", 
 | 
				
			||||||
			0.5 * fsam + 3.5,  
 | 
								0.5f * fsam + 3.5,
 | 
				
			||||||
			0.5 * D->m_peak + 3.5,
 | 
								0.5f * D->m_peak + 3.5,
 | 
				
			||||||
			0.5 * D->m_valley + 3.5,
 | 
								0.5f * D->m_valley + 3.5,
 | 
				
			||||||
			0.5 * demod_out + 2.0,
 | 
								0.5f * demod_out + 2.0,
 | 
				
			||||||
			demod_data ? 1.35 : 1.0,  
 | 
								demod_data ? 1.35 : 1.0,  
 | 
				
			||||||
			descram ? .9 : .55,  
 | 
								descram ? .9 : .55,  
 | 
				
			||||||
			(D->data_clock_pll & 0x80000000) ? .1 : .45);
 | 
								(D->data_clock_pll & 0x80000000) ? .1 : .45);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										26
									
								
								demod_afsk.c
								
								
								
								
							
							
						
						
									
										26
									
								
								demod_afsk.c
								
								
								
								
							| 
						 | 
					@ -528,7 +528,7 @@ void demod_afsk_init (int samples_per_sec, int baud, int mark_freq,
 | 
				
			||||||
          for (j=0; j<D->ms_filter_size; j++) {
 | 
					          for (j=0; j<D->ms_filter_size; j++) {
 | 
				
			||||||
	    float am;
 | 
						    float am;
 | 
				
			||||||
	    float center;
 | 
						    float center;
 | 
				
			||||||
	    float shape = 1;		/* Shape is an attempt to smooth out the */
 | 
						    float shape = 1.0f;		/* Shape is an attempt to smooth out the */
 | 
				
			||||||
					/* abrupt edges in hopes of reducing */
 | 
										/* abrupt edges in hopes of reducing */
 | 
				
			||||||
					/* overshoot and ringing. */
 | 
										/* overshoot and ringing. */
 | 
				
			||||||
					/* My first thought was to use a cosine shape. */
 | 
										/* My first thought was to use a cosine shape. */
 | 
				
			||||||
| 
						 | 
					@ -536,16 +536,16 @@ void demod_afsk_init (int samples_per_sec, int baud, int mark_freq,
 | 
				
			||||||
					/* windows mentioned in the literature. */
 | 
										/* windows mentioned in the literature. */
 | 
				
			||||||
					/* http://en.wikipedia.org/wiki/Window_function */
 | 
										/* http://en.wikipedia.org/wiki/Window_function */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    center = 0.5 * (D->ms_filter_size - 1);
 | 
						    center = 0.5f * (D->ms_filter_size - 1);
 | 
				
			||||||
	    am = ((float)(j - center) / (float)samples_per_sec) * ((float)mark_freq) * (2 * M_PI);
 | 
						    am = ((float)(j - center) / (float)samples_per_sec) * ((float)mark_freq) * (2.0f * (float)M_PI);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    shape = window (D->ms_window, D->ms_filter_size, j);
 | 
						    shape = window (D->ms_window, D->ms_filter_size, j);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    D->m_sin_table[j] = sin(am) * shape;
 | 
						    D->m_sin_table[j] = sinf(am) * shape;
 | 
				
			||||||
  	    D->m_cos_table[j] = cos(am) * shape;
 | 
						    D->m_cos_table[j] = cosf(am) * shape;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    Gs += D->m_sin_table[j] * sin(am);
 | 
						    Gs += D->m_sin_table[j] * sinf(am);
 | 
				
			||||||
	    Gc += D->m_cos_table[j] * cos(am);
 | 
						    Gc += D->m_cos_table[j] * cosf(am);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if DEBUG1
 | 
					#if DEBUG1
 | 
				
			||||||
	    dw_printf ("%6d  %6.2f  %6.2f  %6.2f\n", j, shape, D->m_sin_table[j], D->m_cos_table[j]) ;
 | 
						    dw_printf ("%6d  %6.2f  %6.2f  %6.2f\n", j, shape, D->m_sin_table[j], D->m_cos_table[j]) ;
 | 
				
			||||||
| 
						 | 
					@ -576,18 +576,18 @@ void demod_afsk_init (int samples_per_sec, int baud, int mark_freq,
 | 
				
			||||||
          for (j=0; j<D->ms_filter_size; j++) {
 | 
					          for (j=0; j<D->ms_filter_size; j++) {
 | 
				
			||||||
	    float as;
 | 
						    float as;
 | 
				
			||||||
	    float center;
 | 
						    float center;
 | 
				
			||||||
	    float shape = 1;
 | 
						    float shape = 1.0f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    center = 0.5 * (D->ms_filter_size - 1);
 | 
						    center = 0.5 * (D->ms_filter_size - 1);
 | 
				
			||||||
	    as = ((float)(j - center) / (float)samples_per_sec) * ((float)space_freq) * (2 * M_PI);
 | 
						    as = ((float)(j - center) / (float)samples_per_sec) * ((float)space_freq) * (2.0f * (float)M_PI);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    shape = window (D->ms_window, D->ms_filter_size, j);
 | 
						    shape = window (D->ms_window, D->ms_filter_size, j);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    D->s_sin_table[j] = sin(as) * shape;
 | 
						    D->s_sin_table[j] = sinf(as) * shape;
 | 
				
			||||||
  	    D->s_cos_table[j] = cos(as) * shape;
 | 
						    D->s_cos_table[j] = cosf(as) * shape;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    Gs += D->s_sin_table[j] * sin(as);
 | 
						    Gs += D->s_sin_table[j] * sinf(as);
 | 
				
			||||||
	    Gc += D->s_cos_table[j] * cos(as);
 | 
						    Gc += D->s_cos_table[j] * cosf(as);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if DEBUG1
 | 
					#if DEBUG1
 | 
				
			||||||
	    dw_printf ("%6d  %6.2f  %6.2f  %6.2f\n", j, shape, D->s_sin_table[j], D->s_cos_table[j] ) ;
 | 
						    dw_printf ("%6d  %6.2f  %6.2f  %6.2f\n", j, shape, D->s_sin_table[j], D->s_cos_table[j] ) ;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										32
									
								
								demod_psk.c
								
								
								
								
							
							
						
						
									
										32
									
								
								demod_psk.c
								
								
								
								
							| 
						 | 
					@ -293,9 +293,9 @@ void demod_psk_init (enum modem_t modem_type, int samples_per_sec, int bps, char
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  D->ms_filter_len_bits = 1.25;		// Delay line > 13/12 * symbol period		
 | 
						  D->ms_filter_len_bits = 1.25;		// Delay line > 13/12 * symbol period		
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  D->coffs = (int) round( (11. / 12.) * (float)samples_per_sec / (float)correct_baud );
 | 
						  D->coffs = (int) round( (11.f / 12.f) * (float)samples_per_sec / (float)correct_baud );
 | 
				
			||||||
	  D->boffs = (int) round(               (float)samples_per_sec / (float)correct_baud );
 | 
						  D->boffs = (int) round(               (float)samples_per_sec / (float)correct_baud );
 | 
				
			||||||
	  D->soffs = (int) round( (13. / 12.) * (float)samples_per_sec / (float)correct_baud );
 | 
						  D->soffs = (int) round( (13.f / 12.f) * (float)samples_per_sec / (float)correct_baud );
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else {
 | 
						else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -380,18 +380,18 @@ void demod_psk_init (enum modem_t modem_type, int samples_per_sec, int bps, char
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  D->ms_filter_len_bits = 1.25;		// Delay line > 10/9 * symbol period		
 | 
						  D->ms_filter_len_bits = 1.25;		// Delay line > 10/9 * symbol period		
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  D->coffs = (int) round( (8. / 9.)  * (float)samples_per_sec / (float)correct_baud );
 | 
						  D->coffs = (int) round( (8.f / 9.f)  * (float)samples_per_sec / (float)correct_baud );
 | 
				
			||||||
	  D->boffs = (int) round(              (float)samples_per_sec / (float)correct_baud );
 | 
						  D->boffs = (int) round(              (float)samples_per_sec / (float)correct_baud );
 | 
				
			||||||
	  D->soffs = (int) round( (10. / 9.) * (float)samples_per_sec / (float)correct_baud );
 | 
						  D->soffs = (int) round( (10.f / 9.f) * (float)samples_per_sec / (float)correct_baud );
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (D->psk_use_lo) {
 | 
						if (D->psk_use_lo) {
 | 
				
			||||||
	  D->lo_step = (int) round( 256. * 256. * 256. * 256. * carrier_freq / (float)samples_per_sec);
 | 
						  D->lo_step = (int) round( 256. * 256. * 256. * 256. * carrier_freq / (double)samples_per_sec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  assert (MAX_FILTER_SIZE >= 256);
 | 
						  assert (MAX_FILTER_SIZE >= 256);
 | 
				
			||||||
	  for (j = 0; j < 256; j++) {
 | 
						  for (j = 0; j < 256; j++) {
 | 
				
			||||||
	    D->m_sin_table[j] = sinf(2. * M_PI * j / 256.);
 | 
						    D->m_sin_table[j] = sinf(2.f * (float)M_PI * j / 256.f);
 | 
				
			||||||
	  }
 | 
						  }
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -491,11 +491,11 @@ void demod_psk_init (enum modem_t modem_type, int samples_per_sec, int bps, char
 | 
				
			||||||
	  f2 = carrier_freq + D->prefilter_baud * correct_baud;
 | 
						  f2 = carrier_freq + D->prefilter_baud * correct_baud;
 | 
				
			||||||
#if 0
 | 
					#if 0
 | 
				
			||||||
	  text_color_set(DW_COLOR_DEBUG);
 | 
						  text_color_set(DW_COLOR_DEBUG);
 | 
				
			||||||
	  dw_printf ("Generating prefilter %.0f to %.0f Hz.\n", f1, f2);
 | 
						  dw_printf ("Generating prefilter %.0f to %.0f Hz.\n", (double)f1, (double)f2);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	  if (f1 <= 0) {
 | 
						  if (f1 <= 0) {
 | 
				
			||||||
	    text_color_set (DW_COLOR_ERROR);
 | 
						    text_color_set (DW_COLOR_ERROR);
 | 
				
			||||||
	    dw_printf ("Prefilter of %.0f to %.0f Hz doesn't make sense.\n", f1, f2);
 | 
						    dw_printf ("Prefilter of %.0f to %.0f Hz doesn't make sense.\n", (double)f1, (double)f2);
 | 
				
			||||||
	    f1 = 10;
 | 
						    f1 = 10;
 | 
				
			||||||
	  }
 | 
						  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -642,7 +642,7 @@ void demod_psk_process_sample (int chan, int subchan, int sam, struct demodulato
 | 
				
			||||||
	  /* 256 units/cycle makes modulo processing easier. */
 | 
						  /* 256 units/cycle makes modulo processing easier. */
 | 
				
			||||||
	  /* Make sure it is positive before truncating to integer. */
 | 
						  /* Make sure it is positive before truncating to integer. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  id = ((int)((delta / (2.f * M_PI) + 1.f) * 256.f)) & 0xff;
 | 
						  id = ((int)((delta / (2.f * (float)M_PI) + 1.f) * 256.f)) & 0xff;
 | 
				
			||||||
	  
 | 
						  
 | 
				
			||||||
	  if (D->modem_type == MODEM_QPSK) {
 | 
						  if (D->modem_type == MODEM_QPSK) {
 | 
				
			||||||
	    demod_phase_shift = ((id + 32) >> 6) & 0x3;
 | 
						    demod_phase_shift = ((id + 32) >> 6) & 0x3;
 | 
				
			||||||
| 
						 | 
					@ -686,7 +686,7 @@ void demod_psk_process_sample (int chan, int subchan, int sam, struct demodulato
 | 
				
			||||||
	    }
 | 
						    }
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
	    a = my_atan2f(I,Q);
 | 
						    a = my_atan2f(I,Q);
 | 
				
			||||||
	    int id = ((int)((a / (2.f * M_PI) + 1.f) * 256.f)) & 0xff;
 | 
						    int id = ((int)((a / (2.f * (float)M_PI) + 1.f) * 256.f)) & 0xff;
 | 
				
			||||||
	    // 128 compensates for 180 degree phase shift due
 | 
						    // 128 compensates for 180 degree phase shift due
 | 
				
			||||||
	    // to 1 1/2 carrier cycles per symbol period.
 | 
						    // to 1 1/2 carrier cycles per symbol period.
 | 
				
			||||||
	    demod_phase_shift = ((id + 128) >> 6) & 0x3;
 | 
						    demod_phase_shift = ((id + 128) >> 6) & 0x3;
 | 
				
			||||||
| 
						 | 
					@ -697,7 +697,7 @@ void demod_psk_process_sample (int chan, int subchan, int sam, struct demodulato
 | 
				
			||||||
	    int idelta;
 | 
						    int idelta;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    a = my_atan2f(I,Q);
 | 
						    a = my_atan2f(I,Q);
 | 
				
			||||||
	    idelta = ((int)((a / (2.f * M_PI) + 1.f) * 256.f)) & 0xff;
 | 
						    idelta = ((int)((a / (2.f * (float)M_PI) + 1.f) * 256.f)) & 0xff;
 | 
				
			||||||
	    // 32 (90 degrees) compensates for 1800 carrier vs. 1800 baud.
 | 
						    // 32 (90 degrees) compensates for 1800 carrier vs. 1800 baud.
 | 
				
			||||||
	    // 16 is to set threshold between constellation points.
 | 
						    // 16 is to set threshold between constellation points.
 | 
				
			||||||
	    demod_phase_shift = ((idelta - 32 - 16) >> 5) & 0x7;
 | 
						    demod_phase_shift = ((idelta - 32 - 16) >> 5) & 0x7;
 | 
				
			||||||
| 
						 | 
					@ -827,16 +827,20 @@ static void inline nudge_pll (int chan, int subchan, int slice, int demod_bits,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * If demodulated data has changed,
 | 
					 * If demodulated data has changed,
 | 
				
			||||||
 * pull the PLL phase closer to zero.
 | 
					 * Pull the PLL phase closer to zero.
 | 
				
			||||||
 | 
					 * Use "floor" instead of simply casting so the sign won't flip.
 | 
				
			||||||
 | 
					 * For example if we had -0.7 we want to end up with -1 rather than 0.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO: demod_9600 has an improved technique.  Would it help us here?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (demod_bits != D->slicer[slice].prev_demod_data) {
 | 
					        if (demod_bits != D->slicer[slice].prev_demod_data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  if (hdlc_rec_gathering (chan, subchan, slice)) {
 | 
						  if (hdlc_rec_gathering (chan, subchan, slice)) {
 | 
				
			||||||
	    D->slicer[slice].data_clock_pll = (int)floor((double)(D->slicer[slice].data_clock_pll) * D->pll_locked_inertia);
 | 
						    D->slicer[slice].data_clock_pll = (int)floorf((float)(D->slicer[slice].data_clock_pll) * D->pll_locked_inertia);
 | 
				
			||||||
	  }
 | 
						  }
 | 
				
			||||||
	  else {
 | 
						  else {
 | 
				
			||||||
	    D->slicer[slice].data_clock_pll = (int)floor((double)(D->slicer[slice].data_clock_pll) * D->pll_searching_inertia);
 | 
						    D->slicer[slice].data_clock_pll = (int)floorf((float)(D->slicer[slice].data_clock_pll) * D->pll_searching_inertia);
 | 
				
			||||||
	  }
 | 
						  }
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										2
									
								
								morse.c
								
								
								
								
							
							
						
						
									
										2
									
								
								morse.c
								
								
								
								
							| 
						 | 
					@ -272,6 +272,8 @@ int morse_send (int chan, char *str, int wpm, int txdelay, int txtail)
 | 
				
			||||||
		time_units, morse_units_str(str));
 | 
							time_units, morse_units_str(str));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						audio_flush(ACHAN2ADEV(chan));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return (txdelay +
 | 
						return (txdelay +
 | 
				
			||||||
		(int) (TIME_UNITS_TO_MS(time_units, wpm) + 0.5) +
 | 
							(int) (TIME_UNITS_TO_MS(time_units, wpm) + 0.5) +
 | 
				
			||||||
		txtail);
 | 
							txtail);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										11
									
								
								telemetry.c
								
								
								
								
							
							
						
						
									
										11
									
								
								telemetry.c
								
								
								
								
							| 
						 | 
					@ -835,7 +835,16 @@ void telemetry_bit_sense_message (char *station, char *msg, int quiet)
 | 
				
			||||||
	  }
 | 
						  }
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Skip comma if first character of comment field. */
 | 
					/*
 | 
				
			||||||
 | 
					 * Skip comma if first character of comment field.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The protocol spec is inconsistent here.
 | 
				
			||||||
 | 
					 * The definition shows the Project Title immediately after a fixed width field of 8 binary digits.
 | 
				
			||||||
 | 
					 * The example has a comma in there.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The toolkit telem-bits.pl script does insert the comma because it seems more sensible.
 | 
				
			||||||
 | 
					 * Here we accept it either way.  i.e. Discard first character after data values if it is comma.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (msg[n] == ',') n++;
 | 
						if (msg[n] == ',') n++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
APRS TO-CALL VERSION NUMBERS                            14 Nov 2016
 | 
					APRS TO-CALL VERSION NUMBERS                            6 Dec 2016
 | 
				
			||||||
-------------------------------------------------------------------
 | 
					-------------------------------------------------------------------
 | 
				
			||||||
                                                             WB4APR
 | 
					                                                             WB4APR
 | 
				
			||||||
 | 
					16 Dec 16 added APYSxx for W2GMD's Python APRS
 | 
				
			||||||
14 Nov 16 Added APINxx for PinPoint by AB0WV
 | 
					14 Nov 16 Added APINxx for PinPoint by AB0WV
 | 
				
			||||||
09 Nov 16 added APNICx for SQ5EKU http://sq5eku.blogspot.com/
 | 
					09 Nov 16 added APNICx for SQ5EKU http://sq5eku.blogspot.com/
 | 
				
			||||||
24 Oct 16 added APTKPT TrackPoint N0LP, removed APZTKP
 | 
					24 Oct 16 added APTKPT TrackPoint N0LP, removed APZTKP
 | 
				
			||||||
| 
						 | 
					@ -137,7 +138,7 @@ a TOCALL number series:
 | 
				
			||||||
      APRRTx  RPC electronics
 | 
					      APRRTx  RPC electronics
 | 
				
			||||||
      APRS    Generic, (obsolete. Digis should use APNxxx instead)
 | 
					      APRS    Generic, (obsolete. Digis should use APNxxx instead)
 | 
				
			||||||
      APRXxx  >40 APRSmax
 | 
					      APRXxx  >40 APRSmax
 | 
				
			||||||
      APRXxx  <39 for OH2MQK's RX-igate
 | 
					      APRXxx  <39 for OH2MQK's igate
 | 
				
			||||||
      APRTLM  used in MIM's and Mic-lites, etc
 | 
					      APRTLM  used in MIM's and Mic-lites, etc
 | 
				
			||||||
      APRtfc  APRStraffic
 | 
					      APRtfc  APRStraffic
 | 
				
			||||||
      APRSTx  APRStt (Touch tone)
 | 
					      APRSTx  APRStt (Touch tone)
 | 
				
			||||||
| 
						 | 
					@ -176,6 +177,7 @@ a TOCALL number series:
 | 
				
			||||||
      APY008  Yaesu VX-8 series
 | 
					      APY008  Yaesu VX-8 series
 | 
				
			||||||
      APY350  Yaesu FTM-350 series
 | 
					      APY350  Yaesu FTM-350 series
 | 
				
			||||||
      APYTxx  for YagTracker
 | 
					      APYTxx  for YagTracker
 | 
				
			||||||
 | 
					      APYSxx  for W2GMD's Python APRS
 | 
				
			||||||
 APZ  APZxxx  Experimental
 | 
					 APZ  APZxxx  Experimental
 | 
				
			||||||
      APZ247  for UPRS NR0Q
 | 
					      APZ247  for UPRS NR0Q
 | 
				
			||||||
      APZ0xx  Xastir (old versions. See APX)
 | 
					      APZ0xx  Xastir (old versions. See APX)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue