summaryrefslogtreecommitdiffstats
path: root/uisimulator/common
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2014-02-21 11:25:07 +0100
committerThomas Martitz <kugel@rockbox.org>2014-02-23 20:23:51 +0100
commitfacbaab1953f9ab355fb3a3259dc0acbaabd9cc5 (patch)
treec1fa92517f9eca705f66a1b88667aa41b3299fe3 /uisimulator/common
parent77f19f75eb3661b3e3966da20effa2631ed380f1 (diff)
downloadrockbox-facbaab1953f9ab355fb3a3259dc0acbaabd9cc5.tar.gz
rockbox-facbaab1953f9ab355fb3a3259dc0acbaabd9cc5.tar.bz2
rockbox-facbaab1953f9ab355fb3a3259dc0acbaabd9cc5.zip
simulator: Simulate external storage for HAVE_MULTIDRIVE.
The virtual external storage can be inserted/extracted with the e key. This has little effect because there is no way to access the storage (yet, a later commit will change this). Except on ondio where the mmc needs to be extracted before entering USB (like on real target). Change-Id: I523402832f3b4ae71e0603b281aba4fb8592a897
Diffstat (limited to 'uisimulator/common')
-rw-r--r--uisimulator/common/sim_tasks.c58
-rw-r--r--uisimulator/common/sim_tasks.h1
-rw-r--r--uisimulator/common/stubs.c7
3 files changed, 59 insertions, 7 deletions
diff --git a/uisimulator/common/sim_tasks.c b/uisimulator/common/sim_tasks.c
index 46e893b437..1299a69302 100644
--- a/uisimulator/common/sim_tasks.c
+++ b/uisimulator/common/sim_tasks.c
@@ -40,6 +40,10 @@ enum {
SIM_SCREENDUMP,
SIM_USB_INSERTED,
SIM_USB_EXTRACTED,
+#ifdef HAVE_MULTIDRIVE
+ SIM_EXT_INSERTED,
+ SIM_EXT_EXTRACTED,
+#endif
};
void sim_thread(void)
@@ -95,6 +99,15 @@ void sim_thread(void)
* do it here anyway but don't depend on the acks */
queue_broadcast(SYS_USB_DISCONNECTED, 0);
break;
+#ifdef HAVE_MULTIDRIVE
+ case SIM_EXT_INSERTED:
+ case SIM_EXT_EXTRACTED:
+ queue_broadcast(ev.id == SIM_EXT_INSERTED ?
+ SYS_HOTSWAP_INSERTED : SYS_HOTSWAP_EXTRACTED, 0);
+ sleep(HZ/20);
+ queue_broadcast(SYS_FS_CHANGED, 0);
+ break;
+#endif /* HAVE_MULTIDRIVE */
default:
DEBUGF("sim_tasks: unhandled event: %ld\n", ev.id);
break;
@@ -155,3 +168,48 @@ void usb_wait_for_disconnect(struct event_queue *q)
return;
}
}
+
+#ifdef HAVE_MULTIDRIVE
+static bool is_ext_inserted;
+
+void sim_trigger_external(bool inserted)
+{
+ if (inserted)
+ queue_post(&sim_queue, SIM_EXT_INSERTED, 0);
+ else
+ queue_post(&sim_queue, SIM_EXT_EXTRACTED, 0);
+ is_ext_inserted = inserted;
+}
+
+bool hostfs_present(int drive)
+{
+ return drive > 0 ? is_ext_inserted : true;
+}
+
+bool hostfs_removable(int drive)
+{
+ return drive > 0;
+}
+
+#ifdef HAVE_MULTIVOLUME
+bool volume_removable(int volume)
+{
+ /* volume == drive for now */
+ return hostfs_removable(volume);
+}
+
+bool volume_present(int volume)
+{
+ /* volume == drive for now */
+ return hostfs_present(volume);
+}
+#endif
+
+#if (CONFIG_STORAGE & STORAGE_MMC)
+bool mmc_touched(void)
+{
+ return hostfs_present(1);
+}
+#endif
+
+#endif
diff --git a/uisimulator/common/sim_tasks.h b/uisimulator/common/sim_tasks.h
index dfecd4448e..2bcd09d114 100644
--- a/uisimulator/common/sim_tasks.h
+++ b/uisimulator/common/sim_tasks.h
@@ -28,5 +28,6 @@
void sim_tasks_init(void);
void sim_trigger_screendump(void);
void sim_trigger_usb(bool inserted);
+void sim_trigger_external(bool inserted);
#endif
diff --git a/uisimulator/common/stubs.c b/uisimulator/common/stubs.c
index 480c2a90d8..18f60ce6b3 100644
--- a/uisimulator/common/stubs.c
+++ b/uisimulator/common/stubs.c
@@ -395,10 +395,3 @@ void touchpad_enable_device(bool en)
(void)en;
}
#endif
-
-#if (CONFIG_STORAGE & STORAGE_MMC)
-bool mmc_touched(void)
-{
- return false;
-}
-#endif