gui.c 4.6 KB

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