Merge pull request #115 from Guenael/fir-bw-issue

fix: rollback on previous FIR coefs
pull/116/head
Guenael, VA2GKA 2021-12-24 00:42:58 -05:00 zatwierdzone przez GitHub
commit 5a25fad1bd
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 57 dodań i 10 usunięć

Wyświetl plik

@ -122,17 +122,30 @@ static void rtlsdr_callback(unsigned char *samples, uint32_t samples_count, void
Using : Octave/MATLAB code for generating compensation FIR coefficients
URL : https://github.com/WestCoastDSP/CIC_Octave_Matlab
*/
/* Coefs with R=6400, M=1, N=2, F0=0.45, L=32 */
// /* Coefs with R=6400, M=1, N=2, F0=0.45, L=32 */
// const static float zCoef[33] = {
// -0.0018102029, 0.0021374727, 0.0039187458, -0.0025019918,
// -0.0097042058, 0.0007581166, 0.0199914435, 0.0076257829,
// -0.0333186890, -0.0286290175, 0.0447517831, 0.0705913907,
// -0.0423330196, -0.1501946045, -0.0158817961, 0.3175072196,
// 0.5000000000,
// 0.3175072196, -0.0158817961, -0.1501946045, -0.0423330196,
// 0.0705913907, 0.0447517831, -0.0286290175, -0.0333186890,
// 0.0076257829, 0.0199914435, 0.0007581166, -0.0097042058,
// -0.0025019918, 0.0039187458, 0.0021374727, -0.0018102029,
// };
// DBG -- Old coefs, BW issue with SNR computation
const static float zCoef[33] = {
-0.0018102029, 0.0021374727, 0.0039187458, -0.0025019918,
-0.0097042058, 0.0007581166, 0.0199914435, 0.0076257829,
-0.0333186890, -0.0286290175, 0.0447517831, 0.0705913907,
-0.0423330196, -0.1501946045, -0.0158817961, 0.3175072196,
-0.0027772683, -0.0005058826, 0.0049745750, -0.0034059318,
-0.0077557814, 0.0139375423, 0.0039896935, -0.0299394142,
0.0162250643, 0.0405130860, -0.0580746013, -0.0272104968,
0.1183705475, -0.0306029022, -0.2011241667, 0.1615898423,
0.5000000000,
0.3175072196, -0.0158817961, -0.1501946045, -0.0423330196,
0.0705913907, 0.0447517831, -0.0286290175, -0.0333186890,
0.0076257829, 0.0199914435, 0.0007581166, -0.0097042058,
-0.0025019918, 0.0039187458, 0.0021374727, -0.0018102029,
0.1615898423, -0.2011241667, -0.0306029022, 0.1183705475,
-0.0272104968, -0.0580746013, 0.0405130860, 0.0162250643,
-0.0299394142, 0.0039896935, 0.0139375423, -0.0077557814,
-0.0034059318, 0.0049745750, -0.0005058826, -0.0027772683
};
/* FIR compensation filter buffers */
@ -266,7 +279,7 @@ static void *decoder(void *arg) {
}
/* Normalize the sample @-3dB */
float maxSig = 0.0f;
float maxSig = 1e-24f;
for (int i = 0; i < SIGNAL_LENGHT * SIGNAL_SAMPLE_RATE; i++) {
float absI = fabs(rx_state.iSamples[prevBuffer][i]);
float absQ = fabs(rx_state.qSamples[prevBuffer][i]);
@ -546,6 +559,23 @@ int32_t readRawIQfile(float *iSamples, float *qSamples, char *filename) {
qSamples[i] = -filebuffer[2 * i + 1]; // neg, convention used by wsprsim
}
/* Normalize the sample @-3dB */
float maxSig = 1e-24f;
for (int i = 0; i < recsize; i++) {
float absI = fabs(iSamples[i]);
float absQ = fabs(qSamples[i]);
if (absI > maxSig)
maxSig = absI;
if (absQ > maxSig)
maxSig = absQ;
}
maxSig = 0.5 / maxSig;
for (int i = 0; i <recsize; i++) {
iSamples[i] *= maxSig;
qSamples[i] *= maxSig;
}
return recsize;
}
@ -620,6 +650,23 @@ int32_t readC2file(float *iSamples, float *qSamples, char *filename) {
qSamples[i] = -filebuffer[2 * i + 1]; // neg, convention used by wsprsim
}
/* Normalize the sample @-3dB */
float maxSig = 1e-24f;
for (int i = 0; i < recsize; i++) {
float absI = fabs(iSamples[i]);
float absQ = fabs(qSamples[i]);
if (absI > maxSig)
maxSig = absI;
if (absQ > maxSig)
maxSig = absQ;
}
maxSig = 0.5 / maxSig;
for (int i = 0; i <recsize; i++) {
iSamples[i] *= maxSig;
qSamples[i] *= maxSig;
}
return recsize;
}