mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 21:22:39 -05:00
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 AMS_OF_SIZE
|
||||||
|
|
||||||
#undef HAVE_MULTIDRIVE
|
|
||||||
#undef NUM_DRIVES
|
|
||||||
#undef HAVE_HOTSWAP
|
|
||||||
#undef HAVE_HOTSWAP_STORAGE_AS_MAIN
|
#undef HAVE_HOTSWAP_STORAGE_AS_MAIN
|
||||||
#undef HAVE_STORAGE_FLUSH
|
#undef HAVE_STORAGE_FLUSH
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ static int mouse_coords = 0;
|
||||||
#else
|
#else
|
||||||
#define USB_KEY SDLK_u
|
#define USB_KEY SDLK_u
|
||||||
#endif
|
#endif
|
||||||
|
#define EXT_KEY SDLK_e
|
||||||
|
|
||||||
#if defined(IRIVER_H100_SERIES) || defined (IRIVER_H300_SERIES)
|
#if defined(IRIVER_H100_SERIES) || defined (IRIVER_H300_SERIES)
|
||||||
int _remote_type=REMOTETYPE_H100_LCD;
|
int _remote_type=REMOTETYPE_H100_LCD;
|
||||||
|
|
@ -322,6 +323,12 @@ static void button_event(int key, bool pressed)
|
||||||
sim_trigger_usb(usb_connected);
|
sim_trigger_usb(usb_connected);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
#ifdef HAVE_MULTIDRIVE
|
||||||
|
case EXT_KEY:
|
||||||
|
if (!pressed)
|
||||||
|
sim_trigger_external(!storage_present(1));
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if (CONFIG_PLATFORM & PLATFORM_PANDORA)
|
#if (CONFIG_PLATFORM & PLATFORM_PANDORA)
|
||||||
case SDLK_LCTRL:
|
case SDLK_LCTRL:
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,10 @@ enum {
|
||||||
SIM_SCREENDUMP,
|
SIM_SCREENDUMP,
|
||||||
SIM_USB_INSERTED,
|
SIM_USB_INSERTED,
|
||||||
SIM_USB_EXTRACTED,
|
SIM_USB_EXTRACTED,
|
||||||
|
#ifdef HAVE_MULTIDRIVE
|
||||||
|
SIM_EXT_INSERTED,
|
||||||
|
SIM_EXT_EXTRACTED,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
void sim_thread(void)
|
void sim_thread(void)
|
||||||
|
|
@ -95,6 +99,15 @@ void sim_thread(void)
|
||||||
* do it here anyway but don't depend on the acks */
|
* do it here anyway but don't depend on the acks */
|
||||||
queue_broadcast(SYS_USB_DISCONNECTED, 0);
|
queue_broadcast(SYS_USB_DISCONNECTED, 0);
|
||||||
break;
|
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:
|
default:
|
||||||
DEBUGF("sim_tasks: unhandled event: %ld\n", ev.id);
|
DEBUGF("sim_tasks: unhandled event: %ld\n", ev.id);
|
||||||
break;
|
break;
|
||||||
|
|
@ -155,3 +168,48 @@ void usb_wait_for_disconnect(struct event_queue *q)
|
||||||
return;
|
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_tasks_init(void);
|
||||||
void sim_trigger_screendump(void);
|
void sim_trigger_screendump(void);
|
||||||
void sim_trigger_usb(bool inserted);
|
void sim_trigger_usb(bool inserted);
|
||||||
|
void sim_trigger_external(bool inserted);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -395,10 +395,3 @@ void touchpad_enable_device(bool en)
|
||||||
(void)en;
|
(void)en;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (CONFIG_STORAGE & STORAGE_MMC)
|
|
||||||
bool mmc_touched(void)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue