diff options
| author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-06-29 23:01:10 +0000 |
|---|---|---|
| committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-06-29 23:01:10 +0000 |
| commit | 392f3853b15c94dc0f7fd149777312b033feeea3 (patch) | |
| tree | edfa45e767b8c0b91c5d65e9ee23a31ab93a678c | |
| parent | 43eda43c20578de75f1811072c7a398da4a891e5 (diff) | |
| download | rockbox-392f3853b15c94dc0f7fd149777312b033feeea3.zip rockbox-392f3853b15c94dc0f7fd149777312b033feeea3.tar.gz rockbox-392f3853b15c94dc0f7fd149777312b033feeea3.tar.bz2 rockbox-392f3853b15c94dc0f7fd149777312b033feeea3.tar.xz | |
Added USB insertion handling
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1259 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/backlight.c | 12 | ||||
| -rw-r--r-- | firmware/mpeg.c | 32 |
2 files changed, 37 insertions, 7 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c index e47a58a..db19022 100644 --- a/firmware/backlight.c +++ b/firmware/backlight.c @@ -24,6 +24,7 @@ #include "i2c.h" #include "debug.h" #include "rtc.h" +#include "usb.h" #define BACKLIGHT_ON 1 #define BACKLIGHT_OFF 2 @@ -55,6 +56,7 @@ void backlight_thread(void) #endif } break; + case BACKLIGHT_OFF: #ifdef HAVE_RTC rtc_write(0x13, 0x00); @@ -62,6 +64,16 @@ void backlight_thread(void) PADR &= ~0x40; #endif break; + + case SYS_USB_CONNECTED: + /* Tell the USB thread that we are safe */ + DEBUGF("backlight_thread got SYS_USB_CONNECTED\n"); + usb_acknowledge(SYS_USB_CONNECTED_ACK); + + /* Wait until the system reboots */ + while(1) + yield(); + break; } } } diff --git a/firmware/mpeg.c b/firmware/mpeg.c index fb53585..815de99 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c @@ -25,6 +25,7 @@ #include "debug.h" #include "kernel.h" #include "thread.h" +#include "usb.h" #include "panic.h" #include "file.h" #include "mpeg.h" @@ -471,6 +472,17 @@ struct mp3entry* mpeg_current_track(void) return &(id3tags[0].id3); } +static void stop_playing(void) +{ + /* Stop the current stream */ + playing = false; + filling = false; + if(mpeg_file >= 0) + close(mpeg_file); + mpeg_file = -1; + stop_dma(); +} + static void mpeg_thread(void) { struct event ev; @@ -526,13 +538,7 @@ static void mpeg_thread(void) case MPEG_STOP: DEBUGF("MPEG_STOP\n"); - /* Stop the current stream */ - playing = false; - filling = false; - if(mpeg_file >= 0) - close(mpeg_file); - mpeg_file = -1; - stop_dma(); + stop_playing(); break; case MPEG_PAUSE: @@ -683,6 +689,18 @@ static void mpeg_thread(void) yield(); /* To be safe */ } break; + + case SYS_USB_CONNECTED: + stop_playing(); + + /* Tell the USB thread that we are safe */ + DEBUGF("mpeg_thread got SYS_USB_CONNECTED\n"); + usb_acknowledge(SYS_USB_CONNECTED_ACK); + + /* Wait until the system reboots */ + while(1) + yield(); + break; } } } |