uhf_scene_settings.c 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. void uhf_settings_set_module_powerdb(VariableItem* item) {
  13. UNUSED(item);
  14. }
  15. uint8_t uhf_settings_get_module_baudrate_index(M100Module* module) {
  16. uint32_t baudrate = module->baudrate;
  17. for(uint8_t i = 0; i < sizeof(BAUD_RATES); i++) {
  18. if(BAUD_RATES[i] == baudrate) {
  19. return i;
  20. }
  21. }
  22. return 0;
  23. }
  24. uint8_t uhf_settings_get_module_power_index(M100Module* module) {
  25. uint16_t power = module->transmitting_power;
  26. for(uint8_t i = 0; i < sizeof(POWER_DBM); i++) {
  27. if(POWER_DBM[i] == power) {
  28. return i;
  29. }
  30. }
  31. return 0;
  32. }
  33. void uhf_scene_settings_on_enter(void* ctx) {
  34. UHFApp* uhf_app = ctx;
  35. M100Module* uhf_module = uhf_app->worker->module;
  36. VariableItem* item;
  37. VariableItemList* variable_item_list = uhf_app->variable_item_list;
  38. uint8_t value_index = uhf_settings_get_module_baudrate_index(uhf_module);
  39. char text_buf[10];
  40. snprintf(text_buf, sizeof(text_buf), "%lu", uhf_module->baudrate);
  41. item = variable_item_list_add(
  42. variable_item_list,
  43. "Baudrate:",
  44. sizeof(BAUD_RATES),
  45. uhf_settings_set_module_baudrate,
  46. uhf_module);
  47. variable_item_set_current_value_text(item, text_buf);
  48. variable_item_set_current_value_index(item, value_index);
  49. item = variable_item_list_add(
  50. variable_item_list,
  51. "Power(DBM):",
  52. sizeof(POWER_DBM),
  53. uhf_settings_set_module_powerdb,
  54. uhf_module);
  55. view_dispatcher_switch_to_view(uhf_app->view_dispatcher, UHFViewVariableItemList);
  56. }
  57. bool uhf_scene_settings_on_event(void* ctx, SceneManagerEvent event) {
  58. UHFApp* uhf_app = ctx;
  59. UNUSED(uhf_app);
  60. UNUSED(event);
  61. return false;
  62. }
  63. void uhf_scene_settings_on_exit(void* ctx) {
  64. UHFApp* uhf_app = ctx;
  65. variable_item_list_set_selected_item(uhf_app->variable_item_list, 0);
  66. variable_item_list_reset(uhf_app->variable_item_list);
  67. }