From facbaab1953f9ab355fb3a3259dc0acbaabd9cc5 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Fri, 21 Feb 2014 11:25:07 +0100 Subject: 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 --- uisimulator/common/sim_tasks.c | 58 ++++++++++++++++++++++++++++++++++++++++++ uisimulator/common/sim_tasks.h | 1 + uisimulator/common/stubs.c | 7 ----- 3 files changed, 59 insertions(+), 7 deletions(-) (limited to 'uisimulator/common') 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 -- cgit v1.2.3