summaryrefslogtreecommitdiff
path: root/uisimulator/play.c
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator/play.c')
-rw-r--r--uisimulator/play.c94
1 files changed, 51 insertions, 43 deletions
diff --git a/uisimulator/play.c b/uisimulator/play.c
index f9877134eb..735597962e 100644
--- a/uisimulator/play.c
+++ b/uisimulator/play.c
@@ -26,6 +26,7 @@
26#include <button.h> 26#include <button.h>
27#include "kernel.h" 27#include "kernel.h"
28#include "tree.h" 28#include "tree.h"
29#include "debug.h"
29 30
30#include "id3.h" 31#include "id3.h"
31 32
@@ -33,63 +34,70 @@
33#include "x11/mpegplay.h" 34#include "x11/mpegplay.h"
34#endif 35#endif
35 36
36#define LINE_Y 8 /* initial line */ 37#define LINE_Y 1 /* initial line */
37#define LINE_HEIGTH 8 /* line height in pixels */
38 38
39void playtune(char *dir, char *file) 39void playtune(char *dir, char *file)
40{ 40{
41 char buffer[256]; 41 char buffer[256];
42 int fd; 42 int fd;
43 mp3entry mp3; 43 mp3entry mp3;
44 bool good=1; 44 bool good=1;
45 45
46 sprintf(buffer, "%s/%s", dir, file); 46 sprintf(buffer, "%s/%s", dir, file);
47 47
48 if(mp3info(&mp3, buffer)) { 48 if(mp3info(&mp3, buffer)) {
49 debugf("id3 failure!"); 49 DEBUGF("id3 failure!");
50 good=0; 50 good=0;
51 } 51 }
52 lcd_clear_display();
52#ifdef HAVE_LCD_BITMAP 53#ifdef HAVE_LCD_BITMAP
53 lcd_clear_display(); 54 lcd_setmargins(0,0);
54 if(!good) { 55 lcd_setfont(0);
55 lcd_puts(0, 0, "[no id3 info]", 0); 56#endif
56 } 57
57 else { 58 if(!good) {
58 lcd_puts(0, 0, "[id3 info]", 0); 59 lcd_puts(0, 0, "[no id3 info]");
59 lcd_puts(0, LINE_Y, mp3.title?mp3.title:"", 0); 60 }
60 lcd_puts(0, LINE_Y+1*LINE_HEIGTH, mp3.album?mp3.album:"", 0); 61 else {
61 lcd_puts(0, LINE_Y+2*LINE_HEIGTH, mp3.artist?mp3.artist:"", 0); 62#ifdef HAVE_LCD_BITMAP
63 lcd_puts(0, 0, "[id3 info]");
64 lcd_puts(0, LINE_Y, mp3.title?mp3.title:"");
65 lcd_puts(0, LINE_Y+1, mp3.album?mp3.album:"");
66 lcd_puts(0, LINE_Y+2, mp3.artist?mp3.artist:"");
62 67
63 sprintf(buffer, "%d ms", mp3.length); 68 sprintf(buffer, "%d ms", mp3.length);
64 lcd_puts(0, LINE_Y+3*LINE_HEIGTH, buffer, 0); 69 lcd_puts(0, LINE_Y+3, buffer);
65 70
66 sprintf(buffer, "%d kbits", mp3.bitrate); 71 sprintf(buffer, "%d kbits", mp3.bitrate);
67 lcd_puts(0, LINE_Y+4*LINE_HEIGTH, buffer, 0); 72 lcd_puts(0, LINE_Y+4, buffer);
68 73
69 sprintf(buffer, "%d Hz", mp3.frequency); 74 sprintf(buffer, "%d Hz", mp3.frequency);
70 lcd_puts(0, LINE_Y+5*LINE_HEIGTH, buffer, 0); 75 lcd_puts(0, LINE_Y+5, buffer);
71 } 76#else
72 lcd_update(); 77 lcd_puts(0, 0, mp3.artist?mp3.artist:"<no artist>");
78 lcd_puts(0, 1, mp3.title?mp3.title:"<no title>");
73#endif 79#endif
80 }
81 lcd_update();
74 82
75#ifdef MPEG_PLAY 83#ifdef MPEG_PLAY
76 sprintf(buffer, "%s/%s", dir, file); 84 sprintf(buffer, "%s/%s", dir, file);
77 mpeg_play(buffer); 85 mpeg_play(buffer);
78 return; 86 return;
79#endif 87#endif
80 88
81 while(1) { 89 while(1) {
82 int key = button_get(); 90 int key = button_get();
83 91
84 if(!key) { 92 if(!key) {
85 sleep(30); 93 sleep(30);
86 continue; 94 continue;
87 } 95 }
88 switch(key) { 96 switch(key) {
89 case BUTTON_OFF: 97 case BUTTON_OFF:
90 case BUTTON_LEFT: 98 case BUTTON_LEFT:
91 return; 99 return;
92 break; 100 break;
101 }
93 } 102 }
94 }
95} 103}