gui.c 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. #include "include.h"
  2. #include "gui.h"
  3. #if (GUI_SELECT != GUI_NO)
  4. gui_box_t box_cb;
  5. void gui_init(void)
  6. {
  7. memset(&box_cb, 0, sizeof(box_cb));
  8. #if ((GUI_SELECT == GUI_LEDSEG_7P7S)||(GUI_SELECT == GUI_LEDSEG_6C6S))
  9. timer1_irq_init();
  10. #endif
  11. #if (GUI_SELECT & DISPLAY_LEDSEG)
  12. ledseg_init();
  13. #endif
  14. }
  15. //100ms调用一次
  16. AT(.com_text.display)
  17. void gui_box_isr(void)
  18. {
  19. if (box_cb.times > 0) {
  20. box_cb.times--;
  21. }
  22. if (box_cb.flicker.counter) {
  23. box_cb.flicker.counter--;
  24. if (box_cb.flicker.counter == 0) {
  25. box_cb.flicker.sta = (box_cb.flicker.sta) ? 0 : 1;
  26. if (box_cb.flicker.times != 0xff) {
  27. if (box_cb.flicker.times > 0) {
  28. box_cb.flicker.times--;
  29. } else {
  30. memset(&box_cb.flicker, 0, sizeof(box_cb.flicker));
  31. }
  32. }
  33. box_cb.flicker.counter = box_cb.flicker.preval;
  34. }
  35. }
  36. }
  37. AT(.text.gui)
  38. void gui_box_flicker_set(u8 cnt, u8 times, u8 pos)
  39. {
  40. box_cb.flicker.times = times;
  41. box_cb.flicker.counter = cnt;
  42. box_cb.flicker.preval = cnt;
  43. box_cb.flicker.sta = 0;
  44. box_cb.flicker.pos = pos;
  45. }
  46. void gui_box_flicker_clr(void)
  47. {
  48. memset(&box_cb.flicker, 0, sizeof(box_cb.flicker));
  49. }
  50. AT(.text.gui)
  51. bool gui_box_process(void)
  52. {
  53. if (box_cb.times == 0) {
  54. if (box_cb.sta == GUI_BOX_INPUTNUM) {
  55. if (!box_cb.event) {
  56. box_cb.event = 1;
  57. box_cb.sta = GUI_BOX_NULL;
  58. return false;
  59. }
  60. }
  61. box_cb.sta = GUI_BOX_NULL; //控件显示时间到,回到主界面显示
  62. }
  63. if (box_cb.sta != box_cb.disp_sta || box_cb.update) {
  64. box_cb.disp_sta = box_cb.sta;
  65. box_cb.update = 0;
  66. return true;
  67. }
  68. return false;
  69. }
  70. //显示控件
  71. AT(.text.gui)
  72. void gui_box_display(void)
  73. {
  74. switch (box_cb.disp_sta) {
  75. case GUI_BOX_INPUTNUM:
  76. case GUI_BOX_NUMBOX:
  77. gui_display(DISP_NUM);
  78. break;
  79. case GUI_BOX_VOLBOX:
  80. gui_display(DISP_VOL);
  81. break;
  82. case GUI_BOX_CHANBOX:
  83. gui_display(DISP_FQ_CHAN);
  84. break;
  85. case GUI_BOX_EQ:
  86. gui_display(DISP_EQ);
  87. break;
  88. case GUI_BOX_MODEPLAY:
  89. gui_display(DISP_MODEPLAY);
  90. break;
  91. case GUI_BOX_FREQ:
  92. gui_display(DISP_FREQ);
  93. break;
  94. }
  95. }
  96. //控件清除
  97. AT(.text.gui)
  98. void gui_box_clear(void)
  99. {
  100. memset(&box_cb, 0, sizeof(box_cb));
  101. }
  102. //显示音量控件
  103. AT(.text.gui)
  104. void gui_box_show_vol(void)
  105. {
  106. bsp_sys_unmute();
  107. box_cb.sta = GUI_BOX_VOLBOX;
  108. box_cb.times = BOX_TIMES;
  109. box_cb.update = 1;
  110. gui_display(DISP_VOL); //立刻显示
  111. }
  112. //显示EQ控件
  113. AT(.text.gui)
  114. void gui_box_show_eq(void)
  115. {
  116. box_cb.sta = GUI_BOX_EQ;
  117. box_cb.times = BOX_TIMES;
  118. box_cb.update = 1;
  119. }
  120. //显示PLAYMODE控件
  121. AT(.text.gui)
  122. void gui_box_show_playmode(void)
  123. {
  124. box_cb.sta = GUI_BOX_MODEPLAY;
  125. box_cb.times = BOX_TIMES;
  126. box_cb.update = 1;
  127. gui_display(DISP_MODEPLAY);
  128. }
  129. //显示数字控件
  130. AT(.text.gui)
  131. void gui_box_show_num(u16 num)
  132. {
  133. box_cb.number = num;
  134. box_cb.sta = GUI_BOX_NUMBOX;
  135. box_cb.times = BOX_TIMES;
  136. box_cb.update = 1;
  137. gui_display(DISP_NUM);
  138. }
  139. //显示频道控件
  140. AT(.text.gui)
  141. void gui_box_show_chan(void)
  142. {
  143. box_cb.sta = GUI_BOX_CHANBOX;
  144. box_cb.times = BOX_TIMES;
  145. box_cb.update = 1;
  146. }
  147. //显示输入数字控件
  148. AT(.text.gui)
  149. void gui_box_show_inputnum(u8 number)
  150. {
  151. int max_num = IR_INPUT_NUM_MAX;
  152. if (number == (KEY_NUM_P100 - KEY_NUM_0)) {
  153. number = 100;
  154. max_num *= 10;
  155. }
  156. if (box_cb.sta != GUI_BOX_INPUTNUM || box_cb.number > max_num) {
  157. box_cb.number = number;
  158. box_cb.sta = GUI_BOX_INPUTNUM;
  159. } else {
  160. if (number == 100) {
  161. box_cb.number += number;
  162. } else {
  163. box_cb.number = (box_cb.number * 10) + number;
  164. }
  165. }
  166. box_cb.times = BOX_TIMES;
  167. box_cb.update = 1;
  168. }
  169. //显示频率控件
  170. AT(.text.gui)
  171. void gui_box_show_freq(void)
  172. {
  173. box_cb.sta = GUI_BOX_FREQ;
  174. box_cb.times = BOX_TIMES;
  175. box_cb.update = 1;
  176. }
  177. #if MUSIC_PLAYDEV_BOX_EN
  178. //显示播放设备控件
  179. AT(.text.gui)
  180. void gui_box_show_playdev(void)
  181. {
  182. box_cb.sta = GUI_BOX_PLAYDEV;
  183. box_cb.times = BOX_TIMES;
  184. box_cb.update = 1;
  185. gui_display(DISP_PLAYDEV);
  186. }
  187. #endif // MUSIC_PLAYDEV_BOX_EN
  188. #endif