175,7 → 175,7 |
unsigned int maxval = (1 << (snd_pcm_format_width(format) - 1)) - 1; |
|
static const float f0 = 5000; //starting frequency |
static const float fmax = 13000; //ending frequency |
static const float fmax = 7500; //ending frequency |
static const float Tw = 0.0015; |
static float k; |
|
314,13 → 314,14 |
} |
else printf("Waiting for transmitt all samples\n"); |
//-------------- |
while ( snd_pcm_avail_update(capture_handle) < period_size) |
|
while ( snd_pcm_avail_update(capture_handle) < period_size) // wait for one period of data |
{ |
usleep(1000); |
printf("."); |
} |
|
err = snd_pcm_drop(playback_handle); |
err = snd_pcm_drop(playback_handle); // stop audio stream |
err = snd_pcm_drain(capture_handle); |
if (err < 0) |
{ |
328,7 → 329,7 |
exit(EXIT_FAILURE); |
} |
|
err = snd_pcm_readi(capture_handle, signal, period_size); |
err = snd_pcm_readi(capture_handle, signal, period_size); //read period from audio buffer |
if (err < 0) |
{ |
printf("Read error: %s\n", snd_strerror(err)); |
374,27 → 375,36 |
} |
} |
|
|
for(i=delayl[1]; i < delayl[1] + chirp_size; i++) inchirp[i-delayl[1]] = L_signal[i]; |
fftw_execute(fft_plan_chirp); |
for(i=0; i < frequency_bins; i++) echo_spect[i] = sqrt(outchirp[i][0] * outchirp[i][0] + outchirp[i][1] * outchirp[i][1]); |
|
printf("Writing output file\n"); |
printf("Writing output files\n"); |
out=fopen("/tmp/sonar.txt","w"); |
j=0; |
for (i=0; i <= (period_size - 1); i++) |
{ |
fprintf(out,"%6d %6d %6d %9ld %9ld\n",i,L_signal[i],R_signal[i],correlationl[i], correlationr[i]); |
j+=2; |
} |
fclose(out); |
|
out=fopen("/tmp/chirp.txt","w"); |
j=0; |
for (i=0; i <= (chirp_size - 1); i++) |
{ |
fprintf(out,"%6d %6d %f\n", i, chirp[i], chirp_spect[i]); |
j+=2; |
fprintf(out,"%6d %6d\n", i, chirp[i]); |
} |
fclose(out); |
|
out=fopen("/tmp/echo.txt","w"); |
for(i=delayl[1]; i < delayl[1] + chirp_size; i++) fprintf(out,"%6d %6d\n", i-delayl[1], L_signal[i]); |
fclose(out); |
|
out=fopen("/tmp/spektra.txt","w"); |
for (i=0; i < frequency_bins; i++) |
{ |
fprintf(out,"%4.3f %4.3f %4.3f\n", (i+0.5) * df, chirp_spect[i], echo_spect[i]); |
} |
fclose(out); |
|
printf("Echo zacina na: %d vzorku.\n", delayl[1]); |
printf("Casove na: %f s\n", ((float)delayl[1]/rate)); |
printf("vzdalenost: %f m\n", (SOUND_SPEED*(float)delayl[1]/rate)); |