Add frequency correction (WIP).

This commit is contained in:
Clayton Smith 2015-07-26 10:45:24 -04:00 committed by Jared Boone
parent 0ed607b6dd
commit 9dd41ed48d
3 changed files with 89 additions and 2 deletions

View file

@ -117,7 +117,8 @@ void set_direction(const rf::Direction new_direction) {
} }
bool set_tuning_frequency(const rf::Frequency frequency) { bool set_tuning_frequency(const rf::Frequency frequency) {
const auto tuning_config = tuning::config::create(frequency); rf::Frequency corrected_frequency = frequency * (1000000 - 10) / 1000000;
const auto tuning_config = tuning::config::create(corrected_frequency);
if( tuning_config.is_valid() ) { if( tuning_config.is_valid() ) {
first_if.disable(); first_if.disable();

View file

@ -98,6 +98,47 @@ SetDateTimeModel SetDateTimeView::form_collect() {
}; };
} }
SetFrequencyCorrectionView::SetFrequencyCorrectionView(
NavigationView& nav
) {
button_ok.on_select = [&nav, this](Button&){
const auto model = this->form_collect();
nav.pop();
},
button_cancel.on_select = [&nav](Button&){
nav.pop();
},
add_children({ {
&text_title,
&field_ppm,
&text_ppm,
&button_ok,
&button_cancel,
} });
SetFrequencyCorrectionModel model {
0
};
form_init(model);
}
void SetFrequencyCorrectionView::focus() {
button_cancel.focus();
}
void SetFrequencyCorrectionView::form_init(const SetFrequencyCorrectionModel model) {
field_ppm.set_value(model.ppm);
}
SetFrequencyCorrectionModel SetFrequencyCorrectionView::form_collect() {
return {
.ppm = static_cast<int8_t>(field_ppm.value()),
};
}
AboutView::AboutView(NavigationView& nav) { AboutView::AboutView(NavigationView& nav) {
add_children({ { add_children({ {
&text_title, &text_title,
@ -115,8 +156,9 @@ void AboutView::focus() {
} }
SetupMenuView::SetupMenuView(NavigationView& nav) { SetupMenuView::SetupMenuView(NavigationView& nav) {
add_items<2>({ { add_items<3>({ {
{ "Date/Time", [&nav](){ nav.push(new SetDateTimeView { nav }); } }, { "Date/Time", [&nav](){ nav.push(new SetDateTimeView { nav }); } },
{ "Frequency Correction", [&nav](){ nav.push(new SetFrequencyCorrectionView { nav }); } },
{ "Touch", [&nav](){ nav.push(new NotImplementedView { nav }); } }, { "Touch", [&nav](){ nav.push(new NotImplementedView { nav }); } },
} }); } });
on_left = [&nav](){ nav.pop(); }; on_left = [&nav](){ nav.pop(); };

View file

@ -132,6 +132,50 @@ private:
SetDateTimeModel form_collect(); SetDateTimeModel form_collect();
}; };
struct SetFrequencyCorrectionModel {
int8_t ppm;
};
class SetFrequencyCorrectionView : public View {
public:
std::function<void(SetFrequencyCorrectionModel)> on_ok;
std::function<void()> on_cancel;
SetFrequencyCorrectionView(NavigationView& nav);
void focus() override;
private:
Text text_title {
{ 5 * 8, 7 * 16, 20 * 8, 16 },
"Frequency Correction"
};
NumberField field_ppm {
{ 11 * 8, 9 * 16 },
3,
{ -50, 50 },
1,
'0',
};
Text text_ppm {
{ 15 * 8, 9 * 16, 3 * 8, 16 },
"PPM",
};
Button button_ok {
{ 4 * 8, 13 * 16, 8 * 8, 24 },
"OK",
};
Button button_cancel {
{ 18 * 8, 13 * 16, 8 * 8, 24 },
"Cancel",
};
void form_init(const SetFrequencyCorrectionModel model);
SetFrequencyCorrectionModel form_collect();
};
class AboutView : public View { class AboutView : public View {
public: public:
AboutView(NavigationView& nav); AboutView(NavigationView& nav);