uhf_scene_settings.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #include "../uhf_app_i.h"
  2. #include "../uhf_module.h"
  3. void uhf_settings_set_module_baudrate(VariableItem* item) {
  4. M100Module* module = variable_item_get_context(item);
  5. uint8_t index = variable_item_get_current_value_index(item);
  6. if(index >= BAUD_RATES_COUNT) {
  7. return;
  8. }
  9. uint32_t baudrate = BAUD_RATES[index];
  10. m100_set_baudrate(module, baudrate);
  11. char text_buf[10];
  12. snprintf(text_buf, sizeof(text_buf), "%lu", module->uart->baudrate);
  13. variable_item_set_current_value_text(item, text_buf);
  14. }
  15. void uhf_settings_set_module_powerdb(VariableItem* item) {
  16. M100Module* uhf_module = variable_item_get_context(item);
  17. uint8_t index = variable_item_get_current_value_index(item);
  18. if(index >= POWER_DBM_COUNT) {
  19. return;
  20. }
  21. uint16_t power = POWER_DBM[index];
  22. m100_set_transmitting_power(uhf_module, power);
  23. char text_buf[10];
  24. snprintf(text_buf, sizeof(text_buf), "%ddBm", uhf_module->transmitting_power);
  25. variable_item_set_current_value_text(item, text_buf);
  26. }
  27. void uhf_settings_set_module_working_region(VariableItem* item) {
  28. M100Module* uhf_module = variable_item_get_context(item);
  29. uint8_t index = variable_item_get_current_value_index(item);
  30. if(index >= WORKING_REGIONS_COUNT) {
  31. return;
  32. }
  33. WorkingRegion region = WORKING_REGIONS[index];
  34. m100_set_working_region(uhf_module, region);
  35. variable_item_set_current_value_text(item, WORKING_REGIONS_STR[index]);
  36. }
  37. uint8_t uhf_settings_get_module_baudrate_index(M100Module* module) {
  38. for(uint8_t i = 0; i < BAUD_RATES_COUNT; i++) {
  39. if(BAUD_RATES[i] == module->uart->baudrate) {
  40. return i;
  41. }
  42. }
  43. return 0;
  44. }
  45. uint8_t uhf_settings_get_module_power_index(M100Module* module) {
  46. for(uint8_t i = 0; i < BAUD_RATES_COUNT; i++) {
  47. if(POWER_DBM[i] == module->transmitting_power) {
  48. return i;
  49. }
  50. }
  51. return 0;
  52. }
  53. uint8_t uhf_settings_get_module_working_region_index(M100Module* module) {
  54. for(uint8_t i = 0; i < WORKING_REGIONS_COUNT; i++) {
  55. if(WORKING_REGIONS[i] == module->region) {
  56. return i;
  57. }
  58. }
  59. return 0;
  60. }
  61. void uhf_scene_settings_on_enter(void* ctx) {
  62. UHFApp* uhf_app = ctx;
  63. M100Module* uhf_module = uhf_app->worker->module;
  64. VariableItem* item;
  65. VariableItemList* variable_item_list = uhf_app->variable_item_list;
  66. uint8_t value_index = uhf_settings_get_module_baudrate_index(uhf_module);
  67. char text_buf[10];
  68. snprintf(text_buf, sizeof(text_buf), "%lu", uhf_module->uart->baudrate);
  69. item = variable_item_list_add(
  70. variable_item_list,
  71. "Baudrate:",
  72. BAUD_RATES_COUNT,
  73. uhf_settings_set_module_baudrate,
  74. uhf_module);
  75. variable_item_set_current_value_text(item, text_buf);
  76. variable_item_set_current_value_index(item, value_index);
  77. value_index = uhf_settings_get_module_power_index(uhf_module);
  78. item = variable_item_list_add(
  79. variable_item_list,
  80. "Power(DBM):",
  81. POWER_DBM_COUNT,
  82. uhf_settings_set_module_powerdb,
  83. uhf_module);
  84. snprintf(text_buf, sizeof(text_buf), "%ddBm", uhf_module->transmitting_power);
  85. variable_item_set_current_value_text(item, text_buf);
  86. variable_item_set_current_value_index(item, value_index);
  87. value_index = uhf_settings_get_module_working_region_index(uhf_module);
  88. item = variable_item_list_add(
  89. variable_item_list,
  90. "Region:",
  91. WORKING_REGIONS_COUNT,
  92. uhf_settings_set_module_working_region,
  93. uhf_module);
  94. variable_item_set_current_value_text(item, WORKING_REGIONS_STR[value_index]);
  95. variable_item_set_current_value_index(item, value_index);
  96. view_dispatcher_switch_to_view(uhf_app->view_dispatcher, UHFViewVariableItemList);
  97. }
  98. bool uhf_scene_settings_on_event(void* ctx, SceneManagerEvent event) {
  99. UHFApp* uhf_app = ctx;
  100. UNUSED(uhf_app);
  101. UNUSED(event);
  102. return false;
  103. }
  104. void uhf_scene_settings_on_exit(void* ctx) {
  105. UHFApp* uhf_app = ctx;
  106. variable_item_list_set_selected_item(uhf_app->variable_item_list, 0);
  107. variable_item_list_reset(uhf_app->variable_item_list);
  108. }