76 lines
2.0 KiB
C++
76 lines
2.0 KiB
C++
#pragma once
|
|
|
|
#include "Preset.h"
|
|
|
|
#include <tt_hal_radio.h>
|
|
#include <lvgl.h>
|
|
|
|
class ParameterInput;
|
|
|
|
class SettingsView {
|
|
static constexpr Modulation FIRST_MODULATION = MODULATION_NONE;
|
|
static constexpr Modulation LAST_MODULATION = MODULATION_LRFHSS;
|
|
static constexpr size_t MAX_RADIOS = 32;
|
|
static constexpr size_t MAX_MODEMS = LAST_MODULATION + 1;
|
|
static constexpr size_t MAX_PARAMS = RADIO_NARROWGRID + 1;
|
|
|
|
RadioHandle radioSelected = nullptr;
|
|
RadioStateSubscriptionId radioStateSubId = -1;
|
|
Modulation modemsAvailable[MAX_MODEMS] = {};
|
|
size_t modemsAvailableCount = 0;
|
|
RadioParameter paramsAvailable[MAX_PARAMS] = {};
|
|
ParameterInput* paramInputs[MAX_PARAMS] = {0};
|
|
size_t paramsAvailableCount = 0;
|
|
|
|
LinkedList<Preset*> presets;
|
|
LinkedList<Preset*> presetsByModulation[MAX_MODEMS];
|
|
|
|
lv_obj_t* mainPanel = nullptr;
|
|
lv_obj_t* deviceForm = nullptr;
|
|
lv_obj_t* radioDropdown = nullptr;
|
|
lv_obj_t* radioSwitch = nullptr;
|
|
lv_obj_t* radioStateLabel = nullptr;
|
|
lv_obj_t* modemDropdown = nullptr;
|
|
lv_obj_t* modemPresetDropdown = nullptr;
|
|
|
|
lv_obj_t* propertiesForm = nullptr;
|
|
|
|
public:
|
|
LinkedList<RadioHandle> radios;
|
|
|
|
void addPreset(Preset* preset);
|
|
void queryRadios();
|
|
void getRadioNames(Str &names, const char* const separator);
|
|
|
|
int getModemAvailableIndex(Modulation m);
|
|
|
|
lv_obj_t* initParameterFormGeneric(lv_obj_t *parent, const Modulation modem);
|
|
|
|
void selectModulation(int modemIndex);
|
|
void selectPreset(int presetIndex);
|
|
|
|
void onParameterInput();
|
|
void updatePresets();
|
|
|
|
void selectRadio(int index);
|
|
|
|
lv_obj_t *initDeviceForm(lv_obj_t *parent);
|
|
|
|
void updateSelectedRadioState(RadioState state);
|
|
bool enableSelectedRadio(bool enable);
|
|
|
|
void activateConfig();
|
|
void deactivateConfig();
|
|
|
|
void initUi(lv_obj_t *parent);
|
|
|
|
void setVisible(bool visible);
|
|
|
|
explicit SettingsView(lv_obj_t *parent) {
|
|
queryRadios();
|
|
initUi(parent);
|
|
}
|
|
|
|
|
|
};
|