summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-06-29 23:01:10 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-06-29 23:01:10 +0000
commit392f3853b15c94dc0f7fd149777312b033feeea3 (patch)
treeedfa45e767b8c0b91c5d65e9ee23a31ab93a678c
parent43eda43c20578de75f1811072c7a398da4a891e5 (diff)
downloadrockbox-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.c12
-rw-r--r--firmware/mpeg.c32
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;
}
}
}