Minor add more pulse meta data
This commit is contained in:
parent
43cb8ce3ea
commit
4267dab4c1
3 changed files with 20 additions and 5 deletions
|
@ -28,6 +28,7 @@
|
|||
typedef struct pulse_data {
|
||||
uint64_t offset; ///< Offset to first pulse in number of samples from start of stream.
|
||||
uint32_t sample_rate; ///< Sample rate the pulses are recorded with.
|
||||
unsigned depth_bits; ///< Sample depth in bits.
|
||||
unsigned start_ago; ///< Start of first pulse in number of samples ago.
|
||||
unsigned end_ago; ///< End of last pulse in number of samples ago.
|
||||
unsigned int num_pulses;
|
||||
|
@ -39,6 +40,8 @@ typedef struct pulse_data {
|
|||
int fsk_f2_est; ///< Estimate for the F2 frequency for FSK.
|
||||
float freq1_hz;
|
||||
float freq2_hz;
|
||||
float centerfreq_hz;
|
||||
float range_db;
|
||||
float rssi_db;
|
||||
float snr_db;
|
||||
float noise_db;
|
||||
|
|
|
@ -178,7 +178,10 @@ void pulse_data_dump(FILE *file, pulse_data_t *data)
|
|||
chk_ret(fprintf(file, ";ook %u pulses\n", data->num_pulses));
|
||||
chk_ret(fprintf(file, ";freq1 %.0f\n", data->freq1_hz));
|
||||
}
|
||||
chk_ret(fprintf(file, ";centerfreq %.0f Hz\n", data->centerfreq_hz));
|
||||
chk_ret(fprintf(file, ";samplerate %u Hz\n", data->sample_rate));
|
||||
chk_ret(fprintf(file, ";sampledepth %u bits\n", data->depth_bits));
|
||||
chk_ret(fprintf(file, ";range %.1f dB\n", data->range_db));
|
||||
chk_ret(fprintf(file, ";rssi %.1f dB\n", data->rssi_db));
|
||||
chk_ret(fprintf(file, ";snr %.1f dB\n", data->snr_db));
|
||||
chk_ret(fprintf(file, ";noise %.1f dB\n", data->noise_db));
|
||||
|
@ -206,7 +209,10 @@ data_t *pulse_data_print_data(pulse_data_t *data)
|
|||
"pulses", "", DATA_ARRAY, data_array(2 * data->num_pulses, DATA_INT, pulses),
|
||||
"freq1_Hz", "", DATA_FORMAT, "%u Hz", DATA_INT, (unsigned)data->freq1_hz,
|
||||
"freq2_Hz", "", DATA_COND, data->fsk_f2_est, DATA_FORMAT, "%u Hz", DATA_INT, (unsigned)data->freq2_hz,
|
||||
"samplerate_Hz", "", DATA_INT, data->sample_rate,
|
||||
"freq_Hz", "", DATA_INT, (unsigned)data->centerfreq_hz,
|
||||
"rate_Hz", "", DATA_INT, data->sample_rate,
|
||||
"depth_bits", "", DATA_INT, data->depth_bits,
|
||||
"range_dB", "", DATA_FORMAT, "%.1f dB", DATA_DOUBLE, data->range_db,
|
||||
"rssi_dB", "", DATA_FORMAT, "%.1f dB", DATA_DOUBLE, data->rssi_db,
|
||||
"snr_dB", "", DATA_FORMAT, "%.1f dB", DATA_DOUBLE, data->snr_db,
|
||||
"noise_dB", "", DATA_FORMAT, "%.1f dB", DATA_DOUBLE, data->noise_db,
|
||||
|
|
14
src/r_api.c
14
src/r_api.c
|
@ -268,16 +268,22 @@ void calc_rssi_snr(r_cfg_t *cfg, pulse_data_t *pulse_data)
|
|||
float foffs2 = (float)pulse_data->fsk_f2_est / INT16_MAX * cfg->samp_rate / 2.0;
|
||||
pulse_data->freq1_hz = (foffs1 + cfg->center_frequency);
|
||||
pulse_data->freq2_hz = (foffs2 + cfg->center_frequency);
|
||||
pulse_data->centerfreq_hz = cfg->center_frequency;
|
||||
pulse_data->depth_bits = cfg->demod->sample_size * 8;
|
||||
// NOTE: for (CU8) amplitude is 10x (because it's squares)
|
||||
if (cfg->demod->sample_size == 1 && !cfg->demod->use_mag_est) { // amplitude (CU8)
|
||||
pulse_data->rssi_db = 10.0f * log10f(ook_high_estimate) - 42.1442f; // 10*log10f(16384.0f)
|
||||
pulse_data->range_db = 42.1442f; // 10*log10f(16384.0f) == 20*log10f(128.0f)
|
||||
pulse_data->rssi_db = 10.0f * log10f(ook_high_estimate) - 42.1442f; // 10*log10f(16384.0f)
|
||||
pulse_data->noise_db = 10.0f * log10f(ook_low_estimate) - 42.1442f; // 10*log10f(16384.0f)
|
||||
pulse_data->snr_db = 10.0f * log10f(asnr);
|
||||
pulse_data->snr_db = 10.0f * log10f(asnr);
|
||||
}
|
||||
else { // magnitude (CS16)
|
||||
pulse_data->rssi_db = 20.0f * log10f(ook_high_estimate) - 84.2884f; // 20*log10f(16384.0f)
|
||||
pulse_data->range_db = 84.2884f; // 20*log10f(16384.0f)
|
||||
// actually 12 bit is 20*log10f(2048.0f) = 66.2266f,
|
||||
// actually 16 bit is 20*log10f(32768.0f) = 90.3090f,
|
||||
pulse_data->rssi_db = 20.0f * log10f(ook_high_estimate) - 84.2884f; // 20*log10f(16384.0f)
|
||||
pulse_data->noise_db = 20.0f * log10f(ook_low_estimate) - 84.2884f; // 20*log10f(16384.0f)
|
||||
pulse_data->snr_db = 20.0f * log10f(asnr);
|
||||
pulse_data->snr_db = 20.0f * log10f(asnr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue