uhf_scene_settings.c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "../uhf_app_i.h"
  2. #include "../uhf_module.h"
  3. void uhf_settings_set_module_baudrate(VariableItem* item) {
  4. M100Module* uhf_module = variable_item_get_context(item);
  5. uint8_t index = variable_item_get_current_value_index(item);
  6. uint32_t baudrate = BAUD_RATES[index];
  7. m100_set_baudrate(uhf_module, baudrate);
  8. char text_buf[10];
  9. snprintf(text_buf, sizeof(text_buf), "%lu", uhf_module->baudrate);
  10. variable_item_set_current_value_text(item, text_buf);
  11. }
  12. uint8_t uhf_settings_get_module_baudrate_index(M100Module* module) {
  13. uint32_t baudrate = module->baudrate;
  14. for(uint8_t i = 0; i < sizeof(BAUD_RATES); i++) {
  15. if(BAUD_RATES[i] == baudrate) {
  16. return i;
  17. }
  18. }
  19. return 0;
  20. }
  21. uint8_t uhf_settings_get_module_power_index(M100Module* module) {
  22. uint16_t power = module->transmitting_power;
  23. for(uint8_t i = 0; i < sizeof(POWER_DBM); i++) {
  24. if(POWER_DBM[i] == power) {
  25. return i;
  26. }
  27. }
  28. return 0;
  29. }
  30. void uhf_scene_settings_on_enter(void* ctx) {
  31. furi_assert(ctx != NULL, "ctx is NULL in uhf_scene_settings_on_enter");
  32. UHFApp* uhf_app = ctx;
  33. M100Module* uhf_module = uhf_app->worker->module;
  34. VariableItem* item;
  35. VariableItemList* variable_item_list = uhf_app->variable_item_list;
  36. uint8_t value_index = uhf_settings_get_module_baudrate_index(uhf_module);
  37. char text_buf[10];
  38. snprintf(text_buf, sizeof(text_buf), "%lu", uhf_module->baudrate);
  39. item = variable_item_list_add(
  40. variable_item_list,
  41. "Baudrate:",
  42. sizeof(BAUD_RATES),
  43. uhf_settings_set_module_baudrate,
  44. uhf_module);
  45. variable_item_set_current_value_text(item, text_buf);
  46. variable_item_set_current_value_index(item, value_index);
  47. item = variable_item_list_add(
  48. variable_item_list, "Power(DBM):", sizeof(POWER_DBM), m100_set_power, uhf_module);
  49. view_dispatcher_switch_to_view(uhf_app->view_dispatcher, UHFViewVariableItemList);
  50. }
  51. bool uhf_scene_settings_on_event(void* ctx, SceneManagerEvent event) {
  52. UHFApp* uhf_app = ctx;
  53. UNUSED(uhf_app);
  54. UNUSED(event);
  55. return false;
  56. }
  57. void uhf_scene_settings_on_exit(void* ctx) {
  58. UHFApp* uhf_app = ctx;
  59. variable_item_list_set_selected_item(uhf_app->variable_item_list, 0);
  60. variable_item_list_reset(uhf_app->variable_item_list);
  61. }