mirror of https://github.com/f4exb/sdrangel.git
SDRPlay plugin: interface replaced by libmirisdr: refactor interim state (1)
This commit is contained in:
parent
a9f7c67f7b
commit
e4f3915282
|
@ -28,331 +28,6 @@
|
||||||
#include "dsp/dspengine.h"
|
#include "dsp/dspengine.h"
|
||||||
#include "dsp/dspcommands.h"
|
#include "dsp/dspcommands.h"
|
||||||
|
|
||||||
// ====================================================================
|
|
||||||
|
|
||||||
unsigned int SDRPlayGui::m_bbGr[m_nbBands][m_nbGRValues] = {
|
|
||||||
{ // 10k - 12M
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, // 0 - 9
|
|
||||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // 10 - 19
|
|
||||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, // 20 - 29
|
|
||||||
30, 31, 32, 33, 34, 11, 12, 13, 14, 15, // 30 - 39
|
|
||||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // 40 - 49
|
|
||||||
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, // 50 - 59
|
|
||||||
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, // 60 - 69
|
|
||||||
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, // 70 - 79
|
|
||||||
56, 57, 58, 40, 41, 42, 43, 44, 45, 46, // 80 - 89
|
|
||||||
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, // 90 - 99
|
|
||||||
57, 58, 59, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 12 - 30M
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, // 0 - 9
|
|
||||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // 10 - 19
|
|
||||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, // 20 - 29
|
|
||||||
30, 31, 32, 33, 34, 11, 12, 13, 14, 15, // 30 - 39
|
|
||||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // 40 - 49
|
|
||||||
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, // 50 - 59
|
|
||||||
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, // 60 - 69
|
|
||||||
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, // 70 - 79
|
|
||||||
56, 57, 58, 40, 41, 42, 43, 44, 45, 46, // 80 - 89
|
|
||||||
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, // 90 - 99
|
|
||||||
57, 58, 59, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 30 - 60M
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, // 0 - 9
|
|
||||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // 10 - 19
|
|
||||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, // 20 - 29
|
|
||||||
30, 31, 32, 33, 34, 11, 12, 13, 14, 15, // 30 - 39
|
|
||||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // 40 - 49
|
|
||||||
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, // 50 - 59
|
|
||||||
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, // 60 - 69
|
|
||||||
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, // 70 - 79
|
|
||||||
56, 57, 58, 40, 41, 42, 43, 44, 45, 46, // 80 - 89
|
|
||||||
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, // 90 - 99
|
|
||||||
57, 58, 59, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 60 - 120M
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, // 0 - 9
|
|
||||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // 10 - 19
|
|
||||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 5, // 20 - 29
|
|
||||||
6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // 30 - 39
|
|
||||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // 40 - 49
|
|
||||||
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, // 50 - 59
|
|
||||||
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, // 60 - 69
|
|
||||||
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, // 70 - 79
|
|
||||||
56, 57, 58, 40, 41, 42, 43, 44, 45, 46, // 80 - 89
|
|
||||||
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, // 90 - 99
|
|
||||||
57, 58, 59, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 120 - 250M
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, // 0 - 9
|
|
||||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // 10 - 19
|
|
||||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 5, // 20 - 29
|
|
||||||
6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // 30 - 39
|
|
||||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // 40 - 49
|
|
||||||
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, // 50 - 59
|
|
||||||
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, // 60 - 69
|
|
||||||
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, // 70 - 79
|
|
||||||
56, 57, 58, 40, 41, 42, 43, 44, 45, 46, // 80 - 89
|
|
||||||
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, // 90 - 99
|
|
||||||
57, 58, 59, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 250 - 420M
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, // 0 - 9
|
|
||||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, // 10 - 19
|
|
||||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, // 20 - 29
|
|
||||||
30, 31, 32, 33, 34, 11, 12, 13, 14, 15, // 30 - 39
|
|
||||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // 40 - 49
|
|
||||||
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, // 50 - 59
|
|
||||||
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, // 60 - 69
|
|
||||||
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, // 70 - 79
|
|
||||||
56, 57, 58, 40, 41, 42, 43, 44, 45, 46, // 80 - 89
|
|
||||||
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, // 90 - 99
|
|
||||||
57, 58, 59, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 420M - 1G
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, // 0 - 9
|
|
||||||
10, 11, 5, 6, 7, 8, 9, 10, 11, 12, // 10 - 19
|
|
||||||
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, // 20 - 29
|
|
||||||
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, // 30 - 39
|
|
||||||
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, // 40 - 49
|
|
||||||
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, // 50 - 59
|
|
||||||
53, 54, 55, 56, 57, 58, 40, 41, 42, 43, // 60 - 69
|
|
||||||
44, 45, 46, 47, 48, 49, 50, 51, 52, 53, // 70 - 79
|
|
||||||
54, 55, 56, 57, 58, 59, 59, 59, 59, 59, // 80 - 89
|
|
||||||
59, 59, 59, 59, 59, 59, 59, 59, 59, 59, // 90 - 99
|
|
||||||
59, 59, 59, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 1 - 2G
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, // 0 - 9
|
|
||||||
10, 11, 5, 6, 7, 8, 9, 10, 11, 12, // 10 - 19
|
|
||||||
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, // 20 - 29
|
|
||||||
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, // 30 - 39
|
|
||||||
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, // 40 - 49
|
|
||||||
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, // 50 - 59
|
|
||||||
53, 54, 55, 56, 57, 58, 40, 41, 42, 43, // 60 - 69
|
|
||||||
44, 45, 46, 47, 48, 49, 50, 51, 52, 53, // 70 - 79
|
|
||||||
54, 55, 56, 57, 58, 59, 59, 59, 59, 59, // 80 - 89
|
|
||||||
59, 59, 59, 59, 59, 59, 59, 59, 59, 59, // 90 - 99
|
|
||||||
59, 59, 59, // 100 - 102
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
unsigned int SDRPlayGui::m_lnaGr[m_nbBands][m_nbGRValues] = {
|
|
||||||
{ // 10k - 12M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 24, 24, 24, 24, 24, // 30 - 39
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 40 - 49
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 50 - 59
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 60 - 69
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 70 - 79
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 80 - 89
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 90 - 99
|
|
||||||
24, 24, 24, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 12 - 30M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 24, 24, 24, 24, 24, // 30 - 39
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 40 - 49
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 50 - 59
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 60 - 69
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 70 - 79
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 80 - 89
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 90 - 99
|
|
||||||
24, 24, 24, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 30 - 60M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 24, 24, 24, 24, 24, // 30 - 39
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 40 - 49
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 50 - 59
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 60 - 69
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 70 - 79
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 80 - 89
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 90 - 99
|
|
||||||
24, 24, 24, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 60 - 120M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 24, // 20 - 29
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 30 - 39
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 40 - 49
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 50 - 59
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 60 - 69
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 70 - 79
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 80 - 89
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 90 - 99
|
|
||||||
24, 24, 24, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 120 - 250M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 24, // 20 - 29
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 30 - 39
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 40 - 49
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 50 - 59
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 60 - 69
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 70 - 79
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 80 - 89
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 90 - 99
|
|
||||||
24, 24, 24, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 250 - 420M
|
|
||||||
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 24, 24, 24, 24, 24, // 30 - 39
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 40 - 49
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 50 - 59
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 60 - 69
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 70 - 79
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 80 - 89
|
|
||||||
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, // 90 - 99
|
|
||||||
24, 24, 24, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 420M - 1G
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 7, 7, 7, 7, 7, 7, 7, 7, // 10 - 19
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 20 - 29
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 30 - 39
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 40 - 49
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 50 - 59
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 60 - 69
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 70 - 79
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 80 - 89
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 90 - 99
|
|
||||||
7, 7, 7, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 1 - 2G
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 10 - 19
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 20 - 29
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 30 - 39
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 40 - 49
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 50 - 59
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 60 - 69
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 70 - 79
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 80 - 89
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // 90 - 99
|
|
||||||
7, 7, 7, // 100 - 102
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
unsigned int SDRPlayGui::m_mixerGr[m_nbBands][m_nbGRValues] = {
|
|
||||||
{ // 10k - 12M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30 - 39
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40 - 49
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 59
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60 - 69
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 70 - 79
|
|
||||||
0, 0, 0, 19, 19, 19, 19, 19, 19, 19, // 80 - 89
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 90 - 99
|
|
||||||
19, 19, 19, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 12 - 30M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30 - 39
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40 - 49
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 59
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60 - 69
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 70 - 79
|
|
||||||
0, 0, 0, 19, 19, 19, 19, 19, 19, 19, // 80 - 89
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 90 - 99
|
|
||||||
19, 19, 19, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 30 - 60M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30 - 39
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40 - 49
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 59
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60 - 69
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 70 - 79
|
|
||||||
0, 0, 0, 19, 19, 19, 19, 19, 19, 19, // 80 - 89
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 90 - 99
|
|
||||||
19, 19, 19, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 60 - 120M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30 - 39
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40 - 49
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 59
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60 - 69
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 70 - 79
|
|
||||||
0, 0, 0, 19, 19, 19, 19, 19, 19, 19, // 80 - 89
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 90 - 99
|
|
||||||
19, 19, 19, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 120 - 250M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30 - 39
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40 - 49
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 59
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60 - 69
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 70 - 79
|
|
||||||
0, 0, 0, 19, 19, 19, 19, 19, 19, 19, // 80 - 89
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 90 - 99
|
|
||||||
19, 19, 19, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 250 - 420M
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30 - 39
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40 - 49
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 59
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60 - 69
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 70 - 79
|
|
||||||
0, 0, 0, 19, 19, 19, 19, 19, 19, 19, // 80 - 89
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 90 - 99
|
|
||||||
19, 19, 19, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 420M - 1G
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30 - 39
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40 - 49
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 59
|
|
||||||
0, 0, 0, 0, 0, 19, 19, 19, 19, 19, // 60 - 69
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 70 - 79
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 80 - 89
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 90 - 99
|
|
||||||
19, 19, 19, // 100 - 102
|
|
||||||
},
|
|
||||||
{ // 1 - 2G
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30 - 39
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40 - 49
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 50 - 59
|
|
||||||
0, 0, 0, 0, 0, 19, 19, 19, 19, 19, // 60 - 69
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 70 - 79
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 80 - 89
|
|
||||||
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, // 90 - 99
|
|
||||||
19, 19, 19, // 100 - 102
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// ====================================================================
|
|
||||||
|
|
||||||
SDRPlayGui::SDRPlayGui(DeviceSourceAPI *deviceAPI, QWidget* parent) :
|
SDRPlayGui::SDRPlayGui(DeviceSourceAPI *deviceAPI, QWidget* parent) :
|
||||||
QWidget(parent),
|
QWidget(parent),
|
||||||
|
@ -375,12 +50,6 @@ SDRPlayGui::SDRPlayGui(DeviceSourceAPI *deviceAPI, QWidget* parent) :
|
||||||
ui->ifFrequency->addItem(QString::number(SDRPlayIF::getIF(i)));
|
ui->ifFrequency->addItem(QString::number(SDRPlayIF::getIF(i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->mirDCCorr->clear();
|
|
||||||
for (int i = 0; i < SDRPlayDCCorr::getNbDCCorrs(); i++)
|
|
||||||
{
|
|
||||||
ui->mirDCCorr->addItem(SDRPlayDCCorr::getDCCorrName(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->samplerate->clear();
|
ui->samplerate->clear();
|
||||||
for (int i = 0; i < SDRPlaySampleRates::getNbRates(); i++)
|
for (int i = 0; i < SDRPlaySampleRates::getNbRates(); i++)
|
||||||
{
|
{
|
||||||
|
@ -476,6 +145,8 @@ bool SDRPlayGui::handleMessage(const Message& message)
|
||||||
{
|
{
|
||||||
if (SDRPlayInput::MsgReportSDRPlay::match(message))
|
if (SDRPlayInput::MsgReportSDRPlay::match(message))
|
||||||
{
|
{
|
||||||
|
qDebug() << "SDRPlayGui::handleMessage: MsgReportSDRPlay";
|
||||||
|
m_gains = ((SDRPlayInput::MsgReportSDRPlay&) message).getGains();
|
||||||
displaySettings();
|
displaySettings();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -534,8 +205,8 @@ void SDRPlayGui::displaySettings()
|
||||||
{
|
{
|
||||||
ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000);
|
ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000);
|
||||||
|
|
||||||
ui->ppm->setValue(m_settings.m_LOppmTenths);
|
ui->ppm->setValue(m_settings.m_LOppmCorrection);
|
||||||
ui->ppmText->setText(QString("%1").arg(QString::number(m_settings.m_LOppmTenths/10.0, 'f', 1)));
|
ui->ppmText->setText(QString("%1").arg(QString::number(m_settings.m_LOppmCorrection/10.0, 'f', 1)));
|
||||||
|
|
||||||
ui->samplerate->setCurrentIndex(m_settings.m_devSampleRateIndex);
|
ui->samplerate->setCurrentIndex(m_settings.m_devSampleRateIndex);
|
||||||
|
|
||||||
|
@ -544,25 +215,36 @@ void SDRPlayGui::displaySettings()
|
||||||
|
|
||||||
ui->fBand->setCurrentIndex(m_settings.m_frequencyBandIndex);
|
ui->fBand->setCurrentIndex(m_settings.m_frequencyBandIndex);
|
||||||
ui->ifFrequency->setCurrentIndex(m_settings.m_ifFrequencyIndex);
|
ui->ifFrequency->setCurrentIndex(m_settings.m_ifFrequencyIndex);
|
||||||
ui->mirDCCorr->setCurrentIndex(m_settings.m_mirDcCorrIndex);
|
|
||||||
ui->mirDCCorrTrackTime->setValue(m_settings.m_mirDcCorrTrackTimeIndex);
|
|
||||||
ui->mirDCCorrTrackTimeText->setText(tr("%1us").arg(m_settings.m_mirDcCorrIndex * 3));
|
|
||||||
ui->samplerate->setCurrentIndex(m_settings.m_devSampleRateIndex);
|
ui->samplerate->setCurrentIndex(m_settings.m_devSampleRateIndex);
|
||||||
|
|
||||||
ui->decim->setCurrentIndex(m_settings.m_log2Decim);
|
ui->decim->setCurrentIndex(m_settings.m_log2Decim);
|
||||||
ui->fcPos->setCurrentIndex((int) m_settings.m_fcPos);
|
ui->fcPos->setCurrentIndex((int) m_settings.m_fcPos);
|
||||||
|
|
||||||
ui->gr->setValue(m_settings.m_gainRedctionIndex);
|
if (m_gains.size() > 0)
|
||||||
|
{
|
||||||
|
int dist = abs(m_settings.m_gain - m_gains[0]);
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
char grStrChr[20];
|
for (uint i = 1; i < m_gains.size(); i++)
|
||||||
|
{
|
||||||
|
if (abs(m_settings.m_gain - m_gains[i]) < dist)
|
||||||
|
{
|
||||||
|
dist = abs(m_settings.m_gain - m_gains[i]);
|
||||||
|
pos = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sprintf(grStrChr, "%03d:%02d-%02d-%02d",
|
ui->gainText->setText(tr("%1.%2").arg(m_gains[pos] / 10).arg(abs(m_gains[pos] % 10)));
|
||||||
m_settings.m_gainRedctionIndex,
|
ui->gain->setMaximum(m_gains.size() - 1);
|
||||||
24 - m_lnaGr[m_settings.m_frequencyBandIndex][m_settings.m_gainRedctionIndex],
|
ui->gain->setEnabled(true);
|
||||||
19 - m_mixerGr[m_settings.m_frequencyBandIndex][m_settings.m_gainRedctionIndex],
|
ui->gain->setValue(pos);
|
||||||
59 - m_bbGr[m_settings.m_frequencyBandIndex][m_settings.m_gainRedctionIndex]);
|
}
|
||||||
|
else
|
||||||
ui->grText->setText(QString(grStrChr));
|
{
|
||||||
|
ui->gain->setMaximum(0);
|
||||||
|
ui->gain->setEnabled(false);
|
||||||
|
ui->gain->setValue(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDRPlayGui::sendSettings()
|
void SDRPlayGui::sendSettings()
|
||||||
|
@ -616,8 +298,8 @@ void SDRPlayGui::on_centerFrequency_changed(quint64 value)
|
||||||
|
|
||||||
void SDRPlayGui::on_ppm_valueChanged(int value)
|
void SDRPlayGui::on_ppm_valueChanged(int value)
|
||||||
{
|
{
|
||||||
m_settings.m_LOppmTenths = value;
|
m_settings.m_LOppmCorrection = value;
|
||||||
ui->ppmText->setText(QString("%1").arg(QString::number(m_settings.m_LOppmTenths/10.0, 'f', 1)));
|
ui->ppmText->setText(QString("%1").arg(QString::number(m_settings.m_LOppmCorrection/10.0, 'f', 1)));
|
||||||
sendSettings();
|
sendSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -735,24 +417,22 @@ void SDRPlayGui::on_record_toggled(bool checked)
|
||||||
// ====================================================================
|
// ====================================================================
|
||||||
|
|
||||||
unsigned int SDRPlaySampleRates::m_rates[m_nb_rates] = {
|
unsigned int SDRPlaySampleRates::m_rates[m_nb_rates] = {
|
||||||
2000, // 0
|
1536000, // 0
|
||||||
2048, // 1
|
2000000, // 1
|
||||||
2304, // 2
|
2048000, // 2
|
||||||
2400, // 3
|
2304000, // 3
|
||||||
3072, // 4
|
2400000, // 4
|
||||||
3200, // 5
|
3072000, // 5
|
||||||
4000, // 6
|
3200000, // 6
|
||||||
4096, // 7
|
4000000, // 7
|
||||||
4608, // 8
|
4096000, // 8
|
||||||
4800, // 9
|
4608000, // 9
|
||||||
5000, // 10
|
4800000, // 10
|
||||||
6000, // 11
|
5000000, // 11
|
||||||
6144, // 12
|
6000000, // 12
|
||||||
8000, // 13
|
6144000, // 13
|
||||||
8192, // 14
|
8000000, // 14
|
||||||
9216, // 15
|
8192000, // 15
|
||||||
9600, // 16
|
|
||||||
10000, // 17
|
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int SDRPlaySampleRates::getRate(unsigned int rate_index)
|
unsigned int SDRPlaySampleRates::getRate(unsigned int rate_index)
|
||||||
|
@ -788,14 +468,14 @@ unsigned int SDRPlaySampleRates::getNbRates()
|
||||||
// ====================================================================
|
// ====================================================================
|
||||||
|
|
||||||
unsigned int SDRPlayBandwidths::m_bw[m_nb_bw] = {
|
unsigned int SDRPlayBandwidths::m_bw[m_nb_bw] = {
|
||||||
200, // 0
|
200000, // 0
|
||||||
300, // 1
|
300000, // 1
|
||||||
600, // 2
|
600000, // 2
|
||||||
1536, // 3
|
1536000, // 3
|
||||||
5000, // 4
|
5000000, // 4
|
||||||
6000, // 5
|
6000000, // 5
|
||||||
7000, // 6
|
7000000, // 6
|
||||||
8000, // 7
|
8000000, // 7
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int SDRPlayBandwidths::getBandwidth(unsigned int bandwidth_index)
|
unsigned int SDRPlayBandwidths::getBandwidth(unsigned int bandwidth_index)
|
||||||
|
@ -831,10 +511,10 @@ unsigned int SDRPlayBandwidths::getNbBandwidths()
|
||||||
// ====================================================================
|
// ====================================================================
|
||||||
|
|
||||||
unsigned int SDRPlayIF::m_if[m_nb_if] = {
|
unsigned int SDRPlayIF::m_if[m_nb_if] = {
|
||||||
0, // 0
|
0, // 0
|
||||||
450, // 1
|
450000, // 1
|
||||||
1620, // 2
|
1620000, // 2
|
||||||
2048, // 3
|
2048000, // 3
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int SDRPlayIF::getIF(unsigned int if_index)
|
unsigned int SDRPlayIF::getIF(unsigned int if_index)
|
||||||
|
@ -945,31 +625,3 @@ unsigned int SDRPlayBands::getNbBands()
|
||||||
{
|
{
|
||||||
return SDRPlayBands::m_nb_bands;
|
return SDRPlayBands::m_nb_bands;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ====================================================================
|
|
||||||
|
|
||||||
const char* SDRPlayDCCorr::m_dcCorrName[m_nb_dcCorrs] = {
|
|
||||||
"None", // 0
|
|
||||||
"Per1", // 1
|
|
||||||
"Per2", // 2
|
|
||||||
"Per3", // 3
|
|
||||||
"1Shot", // 4
|
|
||||||
"Cont", // 5
|
|
||||||
};
|
|
||||||
|
|
||||||
QString SDRPlayDCCorr::getDCCorrName(unsigned int dcCorr_index)
|
|
||||||
{
|
|
||||||
if (dcCorr_index < m_nb_dcCorrs)
|
|
||||||
{
|
|
||||||
return QString(m_dcCorrName[dcCorr_index]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return QString(m_dcCorrName[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int SDRPlayDCCorr::getNbDCCorrs()
|
|
||||||
{
|
|
||||||
return SDRPlayDCCorr::m_nb_dcCorrs;
|
|
||||||
}
|
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#define PLUGINS_SAMPLESOURCE_SDRPLAY_SDRPLAYGUI_H_
|
#define PLUGINS_SAMPLESOURCE_SDRPLAY_SDRPLAYGUI_H_
|
||||||
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
#include <vector>
|
||||||
#include "plugin/plugingui.h"
|
#include "plugin/plugingui.h"
|
||||||
|
|
||||||
#include "sdrplayinput.h"
|
#include "sdrplayinput.h"
|
||||||
|
@ -56,18 +57,13 @@ private:
|
||||||
SDRPlaySettings m_settings;
|
SDRPlaySettings m_settings;
|
||||||
QTimer m_updateTimer;
|
QTimer m_updateTimer;
|
||||||
QTimer m_statusTimer;
|
QTimer m_statusTimer;
|
||||||
|
std::vector<int> m_gains;
|
||||||
DeviceSampleSource* m_sampleSource;
|
DeviceSampleSource* m_sampleSource;
|
||||||
FileRecord *m_fileSink; //!< File sink to record device I/Q output
|
FileRecord *m_fileSink; //!< File sink to record device I/Q output
|
||||||
int m_sampleRate;
|
int m_sampleRate;
|
||||||
quint64 m_deviceCenterFrequency; //!< Center frequency in device
|
quint64 m_deviceCenterFrequency; //!< Center frequency in device
|
||||||
int m_lastEngineState;
|
int m_lastEngineState;
|
||||||
|
|
||||||
static const unsigned int m_nbGRValues = 103;
|
|
||||||
static const unsigned int m_nbBands = 8;
|
|
||||||
static unsigned int m_bbGr[m_nbBands][m_nbGRValues];
|
|
||||||
static unsigned int m_lnaGr[m_nbBands][m_nbGRValues];
|
|
||||||
static unsigned int m_mixerGr[m_nbBands][m_nbGRValues];
|
|
||||||
|
|
||||||
void displaySettings();
|
void displaySettings();
|
||||||
void sendSettings();
|
void sendSettings();
|
||||||
void updateSampleRateAndFrequency();
|
void updateSampleRateAndFrequency();
|
||||||
|
@ -82,13 +78,11 @@ private slots:
|
||||||
void on_dcOffset_toggled(bool checked);
|
void on_dcOffset_toggled(bool checked);
|
||||||
void on_iqImbalance_toggled(bool checked);
|
void on_iqImbalance_toggled(bool checked);
|
||||||
void on_fBand_currentIndexChanged(int index);
|
void on_fBand_currentIndexChanged(int index);
|
||||||
void on_mirDCCorr_currentIndexChanged(int index);
|
|
||||||
void on_mirDCCorrTrackTime_valueChanged(int value);
|
|
||||||
void on_bandwidth_currentIndexChanged(int index);
|
void on_bandwidth_currentIndexChanged(int index);
|
||||||
void on_samplerate_currentIndexChanged(int index);
|
void on_samplerate_currentIndexChanged(int index);
|
||||||
void on_decim_currentIndexChanged(int index);
|
void on_decim_currentIndexChanged(int index);
|
||||||
void on_fcPos_currentIndexChanged(int index);
|
void on_fcPos_currentIndexChanged(int index);
|
||||||
void on_gr_valueChanged(int value);
|
void on_gain_valueChanged(int value);
|
||||||
void on_startStop_toggled(bool checked);
|
void on_startStop_toggled(bool checked);
|
||||||
void on_record_toggled(bool checked);
|
void on_record_toggled(bool checked);
|
||||||
};
|
};
|
||||||
|
@ -102,7 +96,7 @@ public:
|
||||||
static unsigned int getRateIndex(unsigned int rate);
|
static unsigned int getRateIndex(unsigned int rate);
|
||||||
static unsigned int getNbRates();
|
static unsigned int getNbRates();
|
||||||
private:
|
private:
|
||||||
static const unsigned int m_nb_rates = 18;
|
static const unsigned int m_nb_rates = 16;
|
||||||
static unsigned int m_rates[m_nb_rates];
|
static unsigned int m_rates[m_nb_rates];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -139,13 +133,4 @@ private:
|
||||||
static const char* m_bandName[m_nb_bands];
|
static const char* m_bandName[m_nb_bands];
|
||||||
};
|
};
|
||||||
|
|
||||||
class SDRPlayDCCorr {
|
|
||||||
public:
|
|
||||||
static QString getDCCorrName(unsigned int dcCorr_index);
|
|
||||||
static unsigned int getNbDCCorrs();
|
|
||||||
private:
|
|
||||||
static const unsigned int m_nb_dcCorrs = 6;
|
|
||||||
static const char* m_dcCorrName[m_nb_dcCorrs];
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* PLUGINS_SAMPLESOURCE_SDRPLAY_SDRPLAYGUI_H_ */
|
#endif /* PLUGINS_SAMPLESOURCE_SDRPLAY_SDRPLAYGUI_H_ */
|
||||||
|
|
|
@ -35,7 +35,16 @@
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>3</number>
|
<number>3</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="margin">
|
<property name="leftMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
<number>2</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -201,7 +210,7 @@
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>0.0</string>
|
<string>0</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
@ -219,13 +228,17 @@
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="gridLayout_corr">
|
<layout class="QGridLayout" name="gridLayout_corr">
|
||||||
<item row="1" column="2">
|
<item row="1" column="7">
|
||||||
<widget class="ButtonSwitch" name="iqImbalance">
|
<widget class="QComboBox" name="fBand">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Automatic IQ imbalance correction</string>
|
<string>Frequency band</string>
|
||||||
</property>
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="corrLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>IQ</string>
|
<string>Auto</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -252,24 +265,20 @@
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="2">
|
||||||
<widget class="QLabel" name="corrLabel">
|
<widget class="ButtonSwitch" name="iqImbalance">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Automatic IQ imbalance correction</string>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Auto</string>
|
<string>IQ</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="6">
|
<item row="1" column="6">
|
||||||
<widget class="QComboBox" name="fBand">
|
<widget class="QLabel" name="fBandLabel">
|
||||||
<property name="toolTip">
|
<property name="text">
|
||||||
<string>Frequency band</string>
|
<string>Band</string>
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="7">
|
|
||||||
<widget class="QComboBox" name="ifFrequency">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>IF frequency in kHz</string>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -287,53 +296,7 @@
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>3</number>
|
<number>3</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="6">
|
|
||||||
<widget class="QComboBox" name="bandwidth">
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>70</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>IF bandwidth in kHz</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="4">
|
<item row="0" column="4">
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="5">
|
|
||||||
<widget class="QLabel" name="bandwidthLabel">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>BW </string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="7">
|
|
||||||
<widget class="QLabel" name="bandwidthUnit">
|
|
||||||
<property name="text">
|
|
||||||
<string>kHz</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="8">
|
|
||||||
<spacer name="horizontalSpacer_3">
|
<spacer name="horizontalSpacer_3">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
|
@ -346,75 +309,130 @@
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="2">
|
||||||
<widget class="QComboBox" name="mirDCCorr">
|
<widget class="QComboBox" name="bandwidth">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>70</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>MirSDR DC auto tracking</string>
|
<string>IF bandwidth in kHz</string>
|
||||||
</property>
|
|
||||||
<property name="currentText" stdset="0">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="currentIndex">
|
|
||||||
<number>-1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maxVisibleItems">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QDial" name="mirDCCorrTrackTime">
|
<widget class="QLabel" name="bandwidthLabel">
|
||||||
<property name="maximumSize">
|
<property name="sizePolicy">
|
||||||
<size>
|
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||||
<width>24</width>
|
<horstretch>0</horstretch>
|
||||||
<height>24</height>
|
<verstretch>0</verstretch>
|
||||||
</size>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="text">
|
||||||
<string>MirSDR DC auto tracking time in uS</string>
|
<string>BW </string>
|
||||||
</property>
|
|
||||||
<property name="minimum">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
|
||||||
<number>63</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<number>35</number>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2">
|
<item row="0" column="3">
|
||||||
<widget class="QLabel" name="mirDCCorrTrackTimeText">
|
<widget class="QLabel" name="bandwidthUnit">
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>42</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>105uS</string>
|
<string>kHz</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
</widget>
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
</item>
|
||||||
|
<item row="0" column="6">
|
||||||
|
<widget class="QComboBox" name="ifFrequency">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>IF frequency in kHz</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="5">
|
||||||
|
<widget class="QLabel" name="ifFrequencyLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>IF</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="7">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>kHz</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="gridLayout_decim" columnstretch="0,0,0,0,0,0,0,0">
|
<layout class="QGridLayout" name="gridLayout_decim" columnstretch="0,0,0,0,0,0,0,0,0">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>3</number>
|
<number>3</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="3">
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="samplerate">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>70</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Sample rate in kS/s</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="8">
|
||||||
|
<spacer name="fcPosRightSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="7">
|
||||||
|
<widget class="QComboBox" name="fcPos">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Relative position of device center frequency</string>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Inf</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Sup</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Cen</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="6">
|
||||||
|
<widget class="QLabel" name="label_fcPos">
|
||||||
|
<property name="text">
|
||||||
|
<string>Fp</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="4">
|
||||||
<widget class="QLabel" name="label_decim">
|
<widget class="QLabel" name="label_decim">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Dec</string>
|
<string>Dec</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="4">
|
<item row="0" column="5">
|
||||||
<widget class="QComboBox" name="decim">
|
<widget class="QComboBox" name="decim">
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
|
@ -465,61 +483,6 @@
|
||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="5">
|
|
||||||
<widget class="QLabel" name="label_fcPos">
|
|
||||||
<property name="text">
|
|
||||||
<string>Fp</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="6">
|
|
||||||
<widget class="QComboBox" name="fcPos">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Relative position of device center frequency</string>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>Inf</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>Sup</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>Cen</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="7">
|
|
||||||
<spacer name="fcPosRightSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QComboBox" name="samplerate">
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>70</width>
|
|
||||||
<height>16777215</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Sample rate in kS/s</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="samplerateLabel">
|
<widget class="QLabel" name="samplerateLabel">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
|
@ -540,6 +503,19 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="3">
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -555,21 +531,21 @@
|
||||||
<number>3</number>
|
<number>3</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QSlider" name="gr">
|
<widget class="QSlider" name="gain">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Gain reduction</string>
|
<string>Tuner gain</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>102</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="pageStep">
|
<property name="pageStep">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="value">
|
<property name="value">
|
||||||
<number>35</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
|
@ -577,7 +553,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2">
|
<item row="0" column="2">
|
||||||
<widget class="QLabel" name="grText">
|
<widget class="QLabel" name="gainText">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
|
@ -585,10 +561,10 @@
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Gain reduction:LNA-Mixer-BaseBand gains in dB</string>
|
<string>Tuner gain in dB</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>035:24-19-59</string>
|
<string>---</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
@ -596,9 +572,9 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="grLabel">
|
<widget class="QLabel" name="gainLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>GR</string>
|
<string>Gain</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -652,6 +628,26 @@
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../../sdrbase/resources/res.qrc"/>
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
|
<include location="../../../sdrbase/resources/res.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|
|
@ -34,10 +34,9 @@ MESSAGE_CLASS_DEFINITION(SDRPlayInput::MsgReportSDRPlay, Message)
|
||||||
SDRPlayInput::SDRPlayInput(DeviceSourceAPI *deviceAPI) :
|
SDRPlayInput::SDRPlayInput(DeviceSourceAPI *deviceAPI) :
|
||||||
m_deviceAPI(deviceAPI),
|
m_deviceAPI(deviceAPI),
|
||||||
m_settings(),
|
m_settings(),
|
||||||
|
m_dev(0),
|
||||||
m_sdrPlayThread(0),
|
m_sdrPlayThread(0),
|
||||||
m_deviceDescription("SDRPlay"),
|
m_deviceDescription("SDRPlay")
|
||||||
m_samplesPerPacket(4096),
|
|
||||||
m_mirStreamRunning(false)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,68 +50,142 @@ bool SDRPlayInput::init(const Message& cmd)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDRPlayInput::start(int device)
|
bool SDRPlayInput::start(uint32_t device)
|
||||||
{
|
{
|
||||||
mir_sdr_ErrT r;
|
|
||||||
QMutexLocker mutexLocker(&m_mutex);
|
QMutexLocker mutexLocker(&m_mutex);
|
||||||
|
|
||||||
|
if (m_dev != 0)
|
||||||
|
{
|
||||||
|
stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
char vendor[256];
|
||||||
|
char product[256];
|
||||||
|
char serial[256];
|
||||||
|
int res;
|
||||||
|
int numberOfGains;
|
||||||
|
|
||||||
if (!m_sampleFifo.setSize(96000 * 4))
|
if (!m_sampleFifo.setSize(96000 * 4))
|
||||||
{
|
{
|
||||||
qCritical("SDRPlayInput::start: could not allocate SampleFifo");
|
qCritical("SDRPlayInput::start: could not allocate SampleFifo");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((res = mirisdr_open(&m_dev, device)) < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: could not open SDRPlay #%d: %s", device, strerror(errno));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
vendor[0] = '\0';
|
||||||
|
product[0] = '\0';
|
||||||
|
serial[0] = '\0';
|
||||||
|
|
||||||
|
if ((res = mirisdr_get_device_usb_strings(m_dev, vendor, product, serial)) < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: error accessing USB device");
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
qWarning("SDRPlayInput::start: open: %s %s, SN: %s", vendor, product, serial);
|
||||||
|
m_deviceDescription = QString("%1 (SN %2)").arg(product).arg(serial);
|
||||||
|
|
||||||
|
if ((res = mirisdr_set_sample_rate(m_dev, 2048000)) < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: could not set sample rate: 2048kS/s");
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((res = mirisdr_set_center_freq(m_dev, m_settings.m_centerFrequency)) < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: could not set frequency to: %lu Hz", m_settings.m_centerFrequency);
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((res = mirisdr_set_sample_format(m_dev, "336_S16"))) // sample format S12
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: could not set sample format: rc: %d", res);
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((res = mirisdr_set_transfer(m_dev, "BULK")) < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: could not set USB Bulk mode: rc: %d", res);
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((res = mirisdr_set_if_freq(m_dev, SDRPlayIF::m_if[m_settings.m_ifFrequencyIndex])) < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: could not set IF frequency at index %d: rc: %d", m_settings.m_ifFrequencyIndex, res);
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((res = mirisdr_set_bandwidth(m_dev, SDRPlayBandwidths::m_bw[m_settings.m_bandwidthIndex])) < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: could not set bandwidth at index %d: rc: %d", m_settings.m_bandwidthIndex, res);
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((res = mirisdr_set_tuner_gain_mode(m_dev, 1)) < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: error setting tuner gain mode");
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
numberOfGains = mirisdr_get_tuner_gains(m_dev, 0);
|
||||||
|
|
||||||
|
if (numberOfGains < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: error getting number of gain values supported");
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
qDebug("SDRPlayInput::start: supported gain values: %d", numberOfGains);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_gains.resize(numberOfGains);
|
||||||
|
|
||||||
|
if (mirisdr_get_tuner_gains(m_dev, &m_gains[0]) < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: error getting gain values");
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
qDebug() << "SDRPlayInput::start: " << m_gains.size() << "gains";
|
||||||
|
MsgReportSDRPlay *message = MsgReportSDRPlay::create(m_gains);
|
||||||
|
getOutputMessageQueueToGUI()->push(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((res = mirisdr_reset_buffer(m_dev)) < 0)
|
||||||
|
{
|
||||||
|
qCritical("SDRPlayInput::start: could not reset USB EP buffers: %s", strerror(errno));
|
||||||
|
stop();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if((m_sdrPlayThread = new SDRPlayThread(&m_sampleFifo)) == 0)
|
if((m_sdrPlayThread = new SDRPlayThread(&m_sampleFifo)) == 0)
|
||||||
{
|
{
|
||||||
qFatal("SDRPlayInput::start: failed to create thread");
|
qFatal("SDRPlayInput::start: failed to create thread");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int agcSetPoint = -m_settings.m_gainRedctionIndex;
|
m_sdrPlayThread->startWork();
|
||||||
double sampleRateMHz = SDRPlaySampleRates::getRate(m_settings.m_devSampleRateIndex) / 1e3;
|
|
||||||
double frequencyMHz = m_settings.m_centerFrequency / 1e6;
|
|
||||||
int infoOverallGr;
|
|
||||||
|
|
||||||
r = mir_sdr_DCoffsetIQimbalanceControl(1, 0);
|
mutexLocker.unlock();
|
||||||
if (r != mir_sdr_Success)
|
|
||||||
{
|
|
||||||
qCritical("SDRPlayInput::start: mir_sdr_DCoffsetIQimbalanceControl failed with code %d", (int) r);
|
|
||||||
}
|
|
||||||
|
|
||||||
r = mir_sdr_AgcControl(mir_sdr_AGC_DISABLE, agcSetPoint, 0, 0, 0, 0, 1);
|
applySettings(m_settings, true);
|
||||||
if (r != mir_sdr_Success)
|
|
||||||
{
|
|
||||||
qCritical("SDRPlayInput::start: mir_sdr_AgcControl failed with code %d", (int) r);
|
|
||||||
}
|
|
||||||
|
|
||||||
qDebug("SDRPlayInput::start: sampleRateMHz: %lf frequencyMHz: %lf", sampleRateMHz, frequencyMHz);
|
|
||||||
|
|
||||||
mir_sdr_DebugEnable(1);
|
|
||||||
|
|
||||||
r = mir_sdr_StreamInit(
|
|
||||||
&agcSetPoint,
|
|
||||||
sampleRateMHz,
|
|
||||||
frequencyMHz,
|
|
||||||
mir_sdr_BW_1_536,
|
|
||||||
mir_sdr_IF_Zero,
|
|
||||||
1, /* LNA */
|
|
||||||
&infoOverallGr,
|
|
||||||
0, /* use internal gr tables according to band */
|
|
||||||
&m_samplesPerPacket,
|
|
||||||
SDRPlayThread::streamCallback,
|
|
||||||
SDRPlayInput::callbackGC,
|
|
||||||
0);
|
|
||||||
|
|
||||||
if (r != mir_sdr_Success)
|
|
||||||
{
|
|
||||||
qCritical("SDRPlayInput::start: mir_sdr_StreamInit failed with code %d", (int) r);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
qDebug("SDRPlayInput::start: Mir stream started: samplesPerPacket: %d", m_samplesPerPacket);
|
|
||||||
m_mirStreamRunning = true;
|
|
||||||
m_sdrPlayThread->startWork();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDRPlayInput::stop()
|
void SDRPlayInput::stop()
|
||||||
|
@ -293,11 +366,11 @@ bool SDRPlayInput::applySettings(const SDRPlaySettings& settings, bool force)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((m_settings.m_LOppmTenths != settings.m_LOppmTenths) || force)
|
if ((m_settings.m_LOppmCorrection != settings.m_LOppmCorrection) || force)
|
||||||
{
|
{
|
||||||
m_settings.m_LOppmTenths = settings.m_LOppmTenths;
|
m_settings.m_LOppmCorrection = settings.m_LOppmCorrection;
|
||||||
|
|
||||||
mir_sdr_ErrT r = mir_sdr_SetPpm(m_settings.m_LOppmTenths / 10.0);
|
mir_sdr_ErrT r = mir_sdr_SetPpm(m_settings.m_LOppmCorrection / 10.0);
|
||||||
|
|
||||||
if (r != mir_sdr_Success)
|
if (r != mir_sdr_Success)
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,8 +20,9 @@
|
||||||
#include <dsp/devicesamplesource.h>
|
#include <dsp/devicesamplesource.h>
|
||||||
|
|
||||||
#include "sdrplaysettings.h"
|
#include "sdrplaysettings.h"
|
||||||
#include <mirsdrapi-rsp.h>
|
#include <mirisdr.h>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
class DeviceSourceAPI;
|
class DeviceSourceAPI;
|
||||||
class SDRPlayThread;
|
class SDRPlayThread;
|
||||||
|
@ -52,14 +53,19 @@ public:
|
||||||
MESSAGE_CLASS_DECLARATION
|
MESSAGE_CLASS_DECLARATION
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static MsgReportSDRPlay* create()
|
const std::vector<int>& getGains() const { return m_gains; }
|
||||||
|
|
||||||
|
static MsgReportSDRPlay* create(const std::vector<int>& gains)
|
||||||
{
|
{
|
||||||
return new MsgReportSDRPlay();
|
return new MsgReportSDRPlay(gains);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
MsgReportSDRPlay() :
|
std::vector<int> m_gains;
|
||||||
Message()
|
|
||||||
|
MsgReportSDRPlay(const std::vector<int>& gains) :
|
||||||
|
Message(),
|
||||||
|
m_gains(gains)
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -67,7 +73,7 @@ public:
|
||||||
virtual ~SDRPlayInput();
|
virtual ~SDRPlayInput();
|
||||||
|
|
||||||
virtual bool init(const Message& message);
|
virtual bool init(const Message& message);
|
||||||
virtual bool start(int device);
|
virtual bool start(uint32_t device);
|
||||||
virtual void stop();
|
virtual void stop();
|
||||||
|
|
||||||
virtual const QString& getDeviceDescription() const;
|
virtual const QString& getDeviceDescription() const;
|
||||||
|
@ -78,17 +84,14 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool applySettings(const SDRPlaySettings& settings, bool force);
|
bool applySettings(const SDRPlaySettings& settings, bool force);
|
||||||
void reinitMirSDR(mir_sdr_ReasonForReinitT reasonForReinit);
|
|
||||||
static void callbackGC(unsigned int gRdB, unsigned int lnaGRdB, void *cbContext);
|
|
||||||
|
|
||||||
DeviceSourceAPI *m_deviceAPI;
|
DeviceSourceAPI *m_deviceAPI;
|
||||||
QMutex m_mutex;
|
QMutex m_mutex;
|
||||||
SDRPlaySettings m_settings;
|
SDRPlaySettings m_settings;
|
||||||
|
mirisdr_dev_t* m_dev;
|
||||||
SDRPlayThread* m_sdrPlayThread;
|
SDRPlayThread* m_sdrPlayThread;
|
||||||
QString m_deviceDescription;
|
QString m_deviceDescription;
|
||||||
|
std::vector<int> m_gains;
|
||||||
int m_samplesPerPacket;
|
|
||||||
bool m_mirStreamRunning;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* PLUGINS_SAMPLESOURCE_SDRPLAY_SDRPLAYINPUT_H_ */
|
#endif /* PLUGINS_SAMPLESOURCE_SDRPLAY_SDRPLAYINPUT_H_ */
|
||||||
|
|
|
@ -27,11 +27,10 @@ SDRPlaySettings::SDRPlaySettings()
|
||||||
void SDRPlaySettings::resetToDefaults()
|
void SDRPlaySettings::resetToDefaults()
|
||||||
{
|
{
|
||||||
m_centerFrequency = 7040*1000;
|
m_centerFrequency = 7040*1000;
|
||||||
m_LOppmTenths = 0;
|
m_gain = 0;
|
||||||
|
m_LOppmCorrection = 0;
|
||||||
m_frequencyBandIndex = 0;
|
m_frequencyBandIndex = 0;
|
||||||
m_ifFrequencyIndex = 0;
|
m_ifFrequencyIndex = 0;
|
||||||
m_mirDcCorrIndex = 0;
|
|
||||||
m_mirDcCorrTrackTimeIndex = 1;
|
|
||||||
m_bandwidthIndex = 0;
|
m_bandwidthIndex = 0;
|
||||||
m_devSampleRateIndex = 0;
|
m_devSampleRateIndex = 0;
|
||||||
m_gainRedctionIndex = 35;
|
m_gainRedctionIndex = 35;
|
||||||
|
@ -45,18 +44,17 @@ QByteArray SDRPlaySettings::serialize() const
|
||||||
{
|
{
|
||||||
SimpleSerializer s(1);
|
SimpleSerializer s(1);
|
||||||
|
|
||||||
s.writeS32(1, m_LOppmTenths);
|
s.writeS32(1, m_LOppmCorrection);
|
||||||
s.writeU32(2, m_frequencyBandIndex);
|
s.writeU32(2, m_frequencyBandIndex);
|
||||||
s.writeU32(3, m_ifFrequencyIndex);
|
s.writeU32(3, m_ifFrequencyIndex);
|
||||||
s.writeU32(4, m_mirDcCorrIndex);
|
s.writeS32(4, m_gain);
|
||||||
s.writeU32(5, m_mirDcCorrTrackTimeIndex);
|
s.writeU32(5, m_bandwidthIndex);
|
||||||
s.writeU32(6, m_bandwidthIndex);
|
s.writeU32(6, m_devSampleRateIndex);
|
||||||
s.writeU32(7, m_devSampleRateIndex);
|
s.writeU32(7, m_gainRedctionIndex);
|
||||||
s.writeU32(8, m_gainRedctionIndex);
|
s.writeU32(8, m_log2Decim);
|
||||||
s.writeU32(9, m_log2Decim);
|
s.writeS32(9, (int) m_fcPos);
|
||||||
s.writeS32(10, (int) m_fcPos);
|
s.writeBool(10, m_dcBlock);
|
||||||
s.writeBool(11, m_dcBlock);
|
s.writeBool(11, m_iqCorrection);
|
||||||
s.writeBool(12, m_iqCorrection);
|
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
|
@ -75,19 +73,18 @@ bool SDRPlaySettings::deserialize(const QByteArray& data)
|
||||||
{
|
{
|
||||||
int intval;
|
int intval;
|
||||||
|
|
||||||
d.readS32(1, &m_LOppmTenths, 0);
|
d.readS32(1, &m_LOppmCorrection, 0);
|
||||||
d.readU32(2, &m_frequencyBandIndex, 0);
|
d.readU32(2, &m_frequencyBandIndex, 0);
|
||||||
d.readU32(3, &m_ifFrequencyIndex, 0);
|
d.readU32(3, &m_ifFrequencyIndex, 0);
|
||||||
d.readU32(4, &m_mirDcCorrIndex, 0);
|
d.readS32(4, &m_gain, 0);
|
||||||
d.readU32(5, &m_mirDcCorrTrackTimeIndex, 1);
|
d.readU32(5, &m_bandwidthIndex, 0);
|
||||||
d.readU32(6, &m_bandwidthIndex, 0);
|
d.readU32(6, &m_devSampleRateIndex, 0);
|
||||||
d.readU32(7, &m_devSampleRateIndex, 0);
|
d.readU32(7, &m_gainRedctionIndex, 35);
|
||||||
d.readU32(8, &m_gainRedctionIndex, 35);
|
d.readU32(8, &m_log2Decim, 0);
|
||||||
d.readU32(9, &m_log2Decim, 0);
|
d.readS32(9, &intval, 0);
|
||||||
d.readS32(10, &intval, 0);
|
|
||||||
m_fcPos = (fcPos_t) intval;
|
m_fcPos = (fcPos_t) intval;
|
||||||
d.readBool(11, &m_dcBlock, false);
|
d.readBool(10, &m_dcBlock, false);
|
||||||
d.readBool(12, &m_iqCorrection, false);
|
d.readBool(11, &m_iqCorrection, false);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,10 @@ struct SDRPlaySettings {
|
||||||
} fcPos_t;
|
} fcPos_t;
|
||||||
|
|
||||||
uint64_t m_centerFrequency;
|
uint64_t m_centerFrequency;
|
||||||
int32_t m_LOppmTenths;
|
qint32 m_gain;
|
||||||
|
int32_t m_LOppmCorrection;
|
||||||
uint32_t m_frequencyBandIndex;
|
uint32_t m_frequencyBandIndex;
|
||||||
uint32_t m_ifFrequencyIndex;
|
uint32_t m_ifFrequencyIndex;
|
||||||
uint32_t m_mirDcCorrIndex;
|
|
||||||
uint32_t m_mirDcCorrTrackTimeIndex;
|
|
||||||
uint32_t m_bandwidthIndex;
|
uint32_t m_bandwidthIndex;
|
||||||
uint32_t m_devSampleRateIndex;
|
uint32_t m_devSampleRateIndex;
|
||||||
uint32_t m_gainRedctionIndex;
|
uint32_t m_gainRedctionIndex;
|
||||||
|
|
Loading…
Reference in New Issue