/**************************************************************************** * Copyright (C) 2010 * by Dimok * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any * damages arising from the use of this software. * * Permission is granted to anyone to use this software for any * purpose, including commercial applications, and to alter it and * redistribute it freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you * must not claim that you wrote the original software. If you use * this software in a product, an acknowledgment in the product * documentation would be appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and * must not be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source * distribution. * * for WiiXplorer 2010 ***************************************************************************/ #ifndef DEVICE_HANDLER_HPP_ #define DEVICE_HANDLER_HPP_ #include "PartitionHandle.h" enum { SD = 0, USB1, USB2, USB3, USB4, USB5, USB6, USB7, USB8, MAXDEVICES }; const char DeviceName[MAXDEVICES][6] = { "sd", "usb1", "usb2", "usb3", "usb4", "usb5", "usb6", "usb7", "usb8", }; class DeviceHandler { public: static DeviceHandler * Instance(); static void DestroyInstance(); bool MountAll(); void UnMountAll(); bool Mount(int dev); bool IsInserted(int dev); void UnMount(int dev); //! Individual Mounts/UnMounts... bool MountSD(); bool MountAllUSB(bool spinUp = true); bool MountUSB(int part, bool spinUp = true); bool SD_Inserted() { if(sd) return sd->IsInserted(); return false; }; bool USB_Inserted() { if(usb) return usb->IsInserted(); return false; }; void UnMountSD() { if(sd) delete sd; sd = NULL; }; void UnMountUSB(int pos); void UnMountAllUSB(); PartitionHandle * GetSDHandle() const { return sd; }; PartitionHandle * GetUSBHandle() const { return usb; }; static int GetUSBFilesystemType(int part); static int PathToDriveType(const char * path); static const char * GetFSName(int dev); static const char * PathToFSName(const char * path) { return GetFSName(PathToDriveType(path)); }; static const DISC_INTERFACE * GetUSBInterface(); static bool SetUSBPort(int port, bool spinup = true); static void SetUSBPortFromPartition(int part); private: DeviceHandler() : sd(0), usb(0) { }; ~DeviceHandler(); static DeviceHandler *instance; PartitionHandle * sd; PartitionHandle * gca; PartitionHandle * gcb; PartitionHandle * usb; }; #endif