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
This commit is contained in:
parent
77f19f75eb
commit
facbaab195
5 changed files with 66 additions and 10 deletions
|
@ -29,9 +29,6 @@
|
|||
|
||||
#undef AMS_OF_SIZE
|
||||
|
||||
#undef HAVE_MULTIDRIVE
|
||||
#undef NUM_DRIVES
|
||||
#undef HAVE_HOTSWAP
|
||||
#undef HAVE_HOTSWAP_STORAGE_AS_MAIN
|
||||
#undef HAVE_STORAGE_FLUSH
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@ static int mouse_coords = 0;
|
|||
#else
|
||||
#define USB_KEY SDLK_u
|
||||
#endif
|
||||
#define EXT_KEY SDLK_e
|
||||
|
||||
#if defined(IRIVER_H100_SERIES) || defined (IRIVER_H300_SERIES)
|
||||
int _remote_type=REMOTETYPE_H100_LCD;
|
||||
|
@ -322,6 +323,12 @@ static void button_event(int key, bool pressed)
|
|||
sim_trigger_usb(usb_connected);
|
||||
}
|
||||
return;
|
||||
#ifdef HAVE_MULTIDRIVE
|
||||
case EXT_KEY:
|
||||
if (!pressed)
|
||||
sim_trigger_external(!storage_present(1));
|
||||
return;
|
||||
#endif
|
||||
#endif
|
||||
#if (CONFIG_PLATFORM & PLATFORM_PANDORA)
|
||||
case SDLK_LCTRL:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue