Skip to content

Commit 15538a9

Browse files
committed
LF: Support write LF config
When setting LF freq, the "lf config" and "hw setlfdivisor" will both be called. Change some UI
1 parent 466cd0e commit 15538a9

File tree

5 files changed

+661
-505
lines changed

5 files changed

+661
-505
lines changed

module/lf.cpp

+36-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
#include "lf.h"
22

3+
const LF::Config LF::defaultConfig;
4+
35
LF::LF(Ui::MainWindow *ui, Util *addr, QWidget *parent): QObject(parent)
46
{
57
this->parent = parent;
68
util = addr;
79
this->ui = ui;
810

911
configPattern = new QRegularExpression("(\\d+)|Yes|No");
12+
currConfig = defaultConfig;
1013
}
1114

1215
void LF::read()
@@ -43,7 +46,7 @@ void LF::tune()
4346
if(Util::getClientType() == Util::CLIENTTYPE_OFFICIAL)
4447
util->execCMD("hw tune l");
4548
else if(Util::getClientType() == Util::CLIENTTYPE_ICEMAN)
46-
util->execCMD("lf tune"); // TODO: if freq is set, append it as a parameter
49+
util->execCMD("lf tune --divisor " + QString::number(currConfig.divisor));
4750
Util::gotoRawTab();
4851
}
4952

@@ -108,9 +111,39 @@ void LF::getConfig()
108111
syncWithUI();
109112
}
110113

111-
void LF::setConfig()
114+
void LF::setConfig(LF::Config config)
112115
{
116+
currConfig = config;
117+
if(Util::getClientType() == Util::CLIENTTYPE_OFFICIAL)
118+
{
119+
util->execCMDWithOutput(QString("lf config")
120+
+ " q " + QString::number(currConfig.divisor)
121+
+ " b " + QString::number(currConfig.bitPerSample)
122+
+ " d " + QString::number(currConfig.decimation)
123+
+ " a " + QString(currConfig.averaging ? "1" : "0")
124+
+ " t " + QString::number(currConfig.triggerThreshold)
125+
+ " s " + QString::number(currConfig.samplesToSkip),
126+
500);
127+
util->execCMDWithOutput("hw setlfdivisor " + QString::number(currConfig.divisor), 500);
128+
}
129+
else if(Util::getClientType() == Util::CLIENTTYPE_ICEMAN)
130+
{
131+
util->execCMDWithOutput(QString("lf config")
132+
+ " -a " + QString(currConfig.averaging ? "1" : "0")
133+
+ " -b " + QString::number(currConfig.bitPerSample)
134+
+ " --dec " + QString::number(currConfig.decimation)
135+
+ " --divisor " + QString::number(currConfig.divisor)
136+
+ " -s " + QString::number(currConfig.samplesToSkip)
137+
+ " -t " + QString::number(currConfig.triggerThreshold),
138+
500);
139+
util->execCMDWithOutput("hw setlfdivisor -d " + QString::number(currConfig.divisor), 500);
140+
}
141+
}
113142

143+
void LF::resetConfig()
144+
{
145+
setConfig(defaultConfig);
146+
getConfig();
114147
}
115148

116149
float LF::divisor2Freq(uint8_t divisor)
@@ -125,7 +158,7 @@ uint8_t LF::freq2Divisor(float freq)
125158

126159
void LF::syncWithUI()
127160
{
128-
ui->LF_Conf_freqDivisorBox->setValue(currConfig.divisor);
161+
ui->LF_Conf_freqDivisorBox->setValue(currConfig.divisor); // will trigger valueChanged()
129162
ui->LF_Conf_bitPerSampleBox->setValue(currConfig.bitPerSample);
130163
ui->LF_Conf_decimationBox->setValue(currConfig.decimation);
131164
ui->LF_Conf_averagingBox->setChecked(currConfig.averaging);

module/lf.h

+13-1
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,26 @@ class LF : public QObject
2222
uint16_t samplesToSkip;
2323
};
2424

25+
static constexpr Config defaultConfig =
26+
{
27+
95,
28+
8,
29+
1,
30+
true,
31+
0,
32+
0
33+
};
34+
2535
void read();
2636
void sniff();
2737
void search();
2838
void tune();
2939
void getConfig();
30-
void setConfig();
40+
void setConfig(LF::Config config);
41+
void resetConfig();
3142
static float divisor2Freq(uint8_t divisor);
3243
static uint8_t freq2Divisor(float freq);
44+
3345
private:
3446
QWidget* parent;
3547
Ui::MainWindow *ui;

ui/mainwindow.cpp

+24
Original file line numberDiff line numberDiff line change
@@ -1337,5 +1337,29 @@ void MainWindow::contextMenuEvent(QContextMenuEvent *event)
13371337

13381338
void MainWindow::on_LF_Conf_getButton_clicked()
13391339
{
1340+
setState(false);
13401341
lf->getConfig();
1342+
setState(true);
1343+
}
1344+
1345+
void MainWindow::on_LF_Conf_setButton_clicked()
1346+
{
1347+
LF::Config config;
1348+
setState(false);
1349+
config.divisor = ui->LF_Conf_freqDivisorBox->value();
1350+
config.bitPerSample = ui->LF_Conf_bitPerSampleBox->value();
1351+
config.decimation = ui->LF_Conf_decimationBox->value();
1352+
config.averaging = ui->LF_Conf_averagingBox->isChecked();
1353+
config.triggerThreshold = ui->LF_Conf_thresholdBox->value();
1354+
config.samplesToSkip = ui->LF_Conf_skipsBox->value();
1355+
lf->setConfig(config);
1356+
Util::gotoRawTab();
1357+
setState(true);
1358+
}
1359+
1360+
void MainWindow::on_LF_Conf_resetButton_clicked()
1361+
{
1362+
setState(false);
1363+
lf->resetConfig();
1364+
setState(true);
13411365
}

ui/mainwindow.h

+4
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,10 @@ private slots:
199199

200200
void on_LF_Conf_getButton_clicked();
201201

202+
void on_LF_Conf_setButton_clicked();
203+
204+
void on_LF_Conf_resetButton_clicked();
205+
202206
private:
203207
Ui::MainWindow* ui;
204208
QButtonGroup* MFCardTypeBtnGroup;

0 commit comments

Comments
 (0)