bsp_lrc.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "include.h"
  2. #if MUSIC_LRC_EN
  3. u8 lrc_buf[512] AT(.lrc_buf);
  4. char lrc_lfn[100] AT(.lrc_buf);
  5. extern char fname_buf[100];
  6. AT(.text.lrc.init)
  7. void bsp_lrc_init(void)
  8. {
  9. f_msc.lrc_sta = 0;
  10. if (!(f_msc.fname[99] & FB_GOT_FLN)) {
  11. fs_get_filename(f_msc.fname, sizeof(fname_buf)); //获取长文件名
  12. f_msc.fname[99] |= FB_GOT_FLN;
  13. }
  14. memcpy(lrc_lfn, f_msc.fname, sizeof(fname_buf));
  15. if (fs_open_lrc(lrc_lfn) == FR_OK) {
  16. f_msc.lrc_sta = 1;
  17. f_msc.lrc_encoding = lrc_init(lrc_buf);
  18. if (f_msc.lrc_sta == LRC_FNAME_DISP_SECS) {
  19. f_msc.lrc_update = music_get_lrc(fname_buf, lrc_cur_lable_time());
  20. if (f_msc.lrc_update) {
  21. #if GUI_LCD_EN
  22. if (f_msc.lrc_encoding != LRC_GBK) {
  23. utf16_convert_to_gbk(fname_buf, 48);
  24. fname_buf[99] |= FB_GBK;
  25. }
  26. #endif // GUI_LCD_EN
  27. }
  28. }
  29. printf("got lrc file: %d, %d\n", f_msc.lrc_sta, f_msc.lrc_encoding);
  30. }
  31. }
  32. AT(.text.lrc)
  33. void bsp_lrc_get_content(void)
  34. {
  35. u32 mtime;
  36. if (f_msc.lrc_sta == LRC_FNAME_DISP_SECS) {
  37. mtime = music_get_cur_time() + 3;
  38. if (music_get_lrc(fname_buf, mtime)) {
  39. f_msc.lrc_update = 1;
  40. #if GUI_LCD_EN
  41. if (f_msc.lrc_encoding != LRC_GBK) {
  42. utf16_convert_to_gbk(fname_buf, 48);
  43. fname_buf[99] |= FB_GBK;
  44. }
  45. #endif // GUI_LCD_EN
  46. printf("[%02d:%02d.%d] %s\n", mtime/600, (mtime%600)/10, mtime%10, fname_buf);
  47. }
  48. }
  49. }
  50. AT(.text.lrc)
  51. void bsp_lrc_sta_process(void)
  52. {
  53. if (f_msc.lrc_sta && (f_msc.lrc_sta != LRC_FNAME_DISP_SECS)) {
  54. f_msc.lrc_sta++;
  55. if (f_msc.lrc_sta == LRC_FNAME_DISP_SECS) {
  56. if (lrc_first_lable_time() <= music_get_cur_time()) {
  57. f_msc.lrc_update = music_get_lrc(fname_buf, lrc_first_lable_time());
  58. if (f_msc.lrc_update) {
  59. #if GUI_LCD_EN
  60. if (f_msc.lrc_encoding != LRC_GBK) {
  61. utf16_convert_to_gbk(fname_buf, 48);
  62. fname_buf[99] |= FB_GBK;
  63. }
  64. #endif // GUI_LCD_EN
  65. }
  66. } else {
  67. f_msc.lrc_sta = LRC_FNAME_DISP_SECS - 1;
  68. }
  69. }
  70. }
  71. }
  72. AT(.text.lrc)
  73. bool bsp_lrc_is_ready(void)
  74. {
  75. if (f_msc.lrc_sta == LRC_FNAME_DISP_SECS) {
  76. return true;
  77. }
  78. return false;
  79. }
  80. #endif // MUSIC_LRC_EN