mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-12 16:08:36 -07:00
122 lines
4.1 KiB
C
122 lines
4.1 KiB
C
#include "../uhf_app_i.h"
|
|
#include "../uhf_module.h"
|
|
|
|
void uhf_settings_set_module_baudrate(VariableItem* item) {
|
|
M100Module* uhf_module = variable_item_get_context(item);
|
|
uint8_t index = variable_item_get_current_value_index(item);
|
|
if(index >= BAUD_RATES_COUNT) {
|
|
return;
|
|
}
|
|
uint32_t baudrate = BAUD_RATES[index];
|
|
m100_set_baudrate(uhf_module, baudrate);
|
|
char text_buf[10];
|
|
snprintf(text_buf, sizeof(text_buf), "%lu", uhf_module->baudrate);
|
|
variable_item_set_current_value_text(item, text_buf);
|
|
}
|
|
|
|
void uhf_settings_set_module_powerdb(VariableItem* item) {
|
|
M100Module* uhf_module = variable_item_get_context(item);
|
|
uint8_t index = variable_item_get_current_value_index(item);
|
|
if(index >= POWER_DBM_COUNT) {
|
|
return;
|
|
}
|
|
uint16_t power = POWER_DBM[index];
|
|
m100_set_transmitting_power(uhf_module, power);
|
|
char text_buf[10];
|
|
snprintf(text_buf, sizeof(text_buf), "%ddBm", uhf_module->transmitting_power);
|
|
variable_item_set_current_value_text(item, text_buf);
|
|
}
|
|
|
|
void uhf_settings_set_module_working_region(VariableItem* item) {
|
|
M100Module* uhf_module = variable_item_get_context(item);
|
|
uint8_t index = variable_item_get_current_value_index(item);
|
|
if(index >= WORKING_REGIONS_COUNT) {
|
|
return;
|
|
}
|
|
WorkingRegion region = WORKING_REGIONS[index];
|
|
m100_set_working_region(uhf_module, region);
|
|
variable_item_set_current_value_text(item, WORKING_REGIONS_STR[index]);
|
|
}
|
|
|
|
uint8_t uhf_settings_get_module_baudrate_index(M100Module* module) {
|
|
for(uint8_t i = 0; i < BAUD_RATES_COUNT; i++) {
|
|
if(BAUD_RATES[i] == module->baudrate) {
|
|
return i;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
uint8_t uhf_settings_get_module_power_index(M100Module* module) {
|
|
for(uint8_t i = 0; i < BAUD_RATES_COUNT; i++) {
|
|
if(POWER_DBM[i] == module->transmitting_power) {
|
|
return i;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
uint8_t uhf_settings_get_module_working_region_index(M100Module* module) {
|
|
for(uint8_t i = 0; i < WORKING_REGIONS_COUNT; i++) {
|
|
if(WORKING_REGIONS[i] == module->region) {
|
|
return i;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void uhf_scene_settings_on_enter(void* ctx) {
|
|
UHFApp* uhf_app = ctx;
|
|
M100Module* uhf_module = uhf_app->worker->module;
|
|
VariableItem* item;
|
|
VariableItemList* variable_item_list = uhf_app->variable_item_list;
|
|
|
|
uint8_t value_index = uhf_settings_get_module_baudrate_index(uhf_module);
|
|
char text_buf[10];
|
|
snprintf(text_buf, sizeof(text_buf), "%lu", uhf_module->baudrate);
|
|
item = variable_item_list_add(
|
|
variable_item_list,
|
|
"Baudrate:",
|
|
BAUD_RATES_COUNT,
|
|
uhf_settings_set_module_baudrate,
|
|
uhf_module);
|
|
|
|
variable_item_set_current_value_text(item, text_buf);
|
|
variable_item_set_current_value_index(item, value_index);
|
|
|
|
value_index = uhf_settings_get_module_power_index(uhf_module);
|
|
item = variable_item_list_add(
|
|
variable_item_list,
|
|
"Power(DBM):",
|
|
POWER_DBM_COUNT,
|
|
uhf_settings_set_module_powerdb,
|
|
uhf_module);
|
|
snprintf(text_buf, sizeof(text_buf), "%ddBm", uhf_module->transmitting_power);
|
|
variable_item_set_current_value_text(item, text_buf);
|
|
variable_item_set_current_value_index(item, value_index);
|
|
|
|
value_index = uhf_settings_get_module_working_region_index(uhf_module);
|
|
item = variable_item_list_add(
|
|
variable_item_list,
|
|
"Region:",
|
|
WORKING_REGIONS_COUNT,
|
|
uhf_settings_set_module_working_region,
|
|
uhf_module);
|
|
variable_item_set_current_value_text(item, WORKING_REGIONS_STR[value_index]);
|
|
variable_item_set_current_value_index(item, value_index);
|
|
|
|
view_dispatcher_switch_to_view(uhf_app->view_dispatcher, UHFViewVariableItemList);
|
|
}
|
|
|
|
bool uhf_scene_settings_on_event(void* ctx, SceneManagerEvent event) {
|
|
UHFApp* uhf_app = ctx;
|
|
UNUSED(uhf_app);
|
|
UNUSED(event);
|
|
return false;
|
|
}
|
|
|
|
void uhf_scene_settings_on_exit(void* ctx) {
|
|
UHFApp* uhf_app = ctx;
|
|
variable_item_list_set_selected_item(uhf_app->variable_item_list, 0);
|
|
variable_item_list_reset(uhf_app->variable_item_list);
|
|
} |