*Changed some functions.

*Fixed one bug that you couldnt get to FormatMenu
*Added USB functions, not yet implemented (they dont work under cIOS249/cIOS222, only under IOS36 (original). right now function only works if partition 1 is fat/fat32)
This commit is contained in:
dimok321 2009-05-15 20:03:19 +00:00
parent d15e8218a4
commit feda5a7ba6
5 changed files with 114 additions and 82 deletions

55
source/fatmounter.c Normal file
View File

@ -0,0 +1,55 @@
#include <fat.h>
#include <ogc/lwp_watchdog.h>
#include <ogc/mutex.h>
#include <ogc/usbstorage.h>
#include <sdcard/wiisd_io.h>
#include <sys/dir.h>
#define CACHE 8
int USBDevice_Init()
{
//right now only mounts first partition and only under IOS36
__io_usbstorage.startup();
if (fatMountSimple("USB", &__io_usbstorage, 0, CACHE)) {
return 1;
}
return -1;
}
void USBDevice_deInit()
{
//First unmount all the devs...
fatUnmount("USB");
//...and then shutdown em!
__io_usbstorage.shutdown();
}
int isSdInserted()
{
return __io_wiisd.isInserted();
}
int SDCard_Init()
{
//mount SD if inserted
__io_wiisd.startup();
if (!isSdInserted()){
return -1;
}
if (fatMount("SD", &__io_wiisd, 0, CACHE)) {
return 1;
}
return -1;
}
void SDCard_deInit()
{
//First unmount all the devs...
fatUnmount("SD");
//...and then shutdown em!
__io_wiisd.shutdown();
}

19
source/fatmounter.h Normal file
View File

@ -0,0 +1,19 @@
#ifndef _FATMOUNTER_H_
#define _FATMOUNTER_H_
#ifdef __cplusplus
extern "C"
{
#endif
int USBDevice_Init();
void USBDevice_deInit();
int isSdInserted();
int SDCard_Init();
void SDCard_deInit();
#ifdef __cplusplus
}
#endif
#endif

View File

@ -24,15 +24,13 @@
#include "main.h" #include "main.h"
#include "http.h" #include "http.h"
#include "dns.h" #include "dns.h"
#include "fatmounter.h"
#include "disc.h" #include "disc.h"
#include "wbfs.h" #include "wbfs.h"
#include "sys.h" #include "sys.h"
#include "video2.h" #include "video2.h"
#include "wpad.h" #include "wpad.h"
#include "cfg.h" #include "cfg.h"
#include <sdcard/wiisd_io.h>
#include <fat.h>
/* Constants */ /* Constants */
@ -70,8 +68,7 @@ void ExitApp()
StopGX(); StopGX();
ShutdownAudio(); ShutdownAudio();
fatUnmount("SD"); SDCard_deInit();
__io_wiisd.shutdown();
//WPAD_Flush(0); //WPAD_Flush(0);
//WPAD_Disconnect(0); //WPAD_Disconnect(0);
@ -109,19 +106,15 @@ int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
s32 ret2; s32 ret2;
__io_wiisd.startup(); SDCard_Init();
fatMountSimple("SD", &__io_wiisd);
CFG_Load(argc, argv); CFG_Load(argc, argv);
DefaultSettings(); DefaultSettings();
fatUnmount("SD"); SDCard_deInit();
__io_wiisd.shutdown();
/* Load Custom IOS */ /* Load Custom IOS */
if(Settings.cios == ios222) { if(Settings.cios == ios222) {
@ -139,8 +132,7 @@ main(int argc, char *argv[])
SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0); SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
} }
__io_wiisd.startup(); SDCard_Init();
fatMountSimple("SD", &__io_wiisd);
Sys_Init(); Sys_Init();
//Video_SetMode(); //Video_SetMode();

View File

@ -5,7 +5,6 @@
* menu.cpp * menu.cpp
* Menu flow routines - handles all menu logic * Menu flow routines - handles all menu logic
***************************************************************************/ ***************************************************************************/
#include <gccore.h> #include <gccore.h>
#include <ogcsys.h> #include <ogcsys.h>
#include <stdio.h> #include <stdio.h>
@ -13,8 +12,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <wiiuse/wpad.h> #include <wiiuse/wpad.h>
#include <fat.h>
#include <sdcard/wiisd_io.h>
#include <stdio.h> //CLOCK #include <stdio.h> //CLOCK
#include <time.h> //CLOCK #include <time.h> //CLOCK
#include <dirent.h> #include <dirent.h>
@ -40,6 +37,7 @@
#include "libwiigui/gui_customoptionbrowser.h" #include "libwiigui/gui_customoptionbrowser.h"
#include "libwiigui/gui_gamebrowser.h" #include "libwiigui/gui_gamebrowser.h"
#include "mp3s.h" #include "mp3s.h"
#include "fatmounter.h"
#define MAX_CHARACTERS 38 #define MAX_CHARACTERS 38
@ -110,33 +108,6 @@ static void ResumeGui();
extern const u8 data1; extern const u8 data1;
//libfat helper functions
int isSdInserted() { return __io_wiisd.isInserted(); }
//Initialise SD CARD
int SDCard_Init()
{
__io_wiisd.startup();
if (!isSdInserted()){
printf("No SD card inserted!");
return -1;
} if (!fatMountSimple ("SD", &__io_wiisd)){
printf("Failed to mount front SD card!");
return -1;
}
return 1;
}
void SDCARD_deInit()
{
//First unmount all the devs...
fatUnmount ("SD");
//...and then shutdown em!
__io_wiisd.shutdown();
}
bool findfile(const char * filename, const char * path) bool findfile(const char * filename, const char * path)
{ {
DIR *dir; DIR *dir;
@ -897,7 +868,7 @@ int GameWindowPrompt()
if(btn1.GetState() == STATE_CLICKED) { //boot if(btn1.GetState() == STATE_CLICKED) { //boot
choice = 1; choice = 1;
SDCARD_deInit(); SDCard_deInit();
} }
else if(btn2.GetState() == STATE_CLICKED) { //back else if(btn2.GetState() == STATE_CLICKED) { //back
@ -2001,7 +1972,6 @@ static int MenuInstall()
char *name; char *name;
static char buffer[MAX_CHARACTERS + 4]; static char buffer[MAX_CHARACTERS + 4];
GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol); GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, vol);
//GuiImageData battery(battery_png); //GuiImageData battery(battery_png);
@ -2016,7 +1986,6 @@ static int MenuInstall()
snprintf(imgPath, sizeof(imgPath), "%sbattery_bar.png", CFG.theme_path); snprintf(imgPath, sizeof(imgPath), "%sbattery_bar.png", CFG.theme_path);
GuiImageData batteryBar(imgPath, battery_bar_png); GuiImageData batteryBar(imgPath, battery_bar_png);
#ifdef HW_RVL #ifdef HW_RVL
int i = 0, level; int i = 0, level;
char txt[3]; char txt[3];
@ -2245,6 +2214,7 @@ static int MenuInstall()
static int MenuDiscList() static int MenuDiscList()
{ {
datagB=0; datagB=0;
int menu = MENU_NONE, dataef=0; int menu = MENU_NONE, dataef=0;
char imgPath[100]; char imgPath[100];
@ -2492,7 +2462,6 @@ static int MenuDiscList()
clockTime.SetPosition(THEME.clock_x, THEME.clock_y); clockTime.SetPosition(THEME.clock_x, THEME.clock_y);
clockTime.SetFont(fontClock); clockTime.SetFont(fontClock);
HaltGui(); HaltGui();
GuiWindow w(screenwidth, screenheight); GuiWindow w(screenwidth, screenheight);
@ -2669,9 +2638,11 @@ static int MenuDiscList()
else if(sdcardBtn.GetState() == STATE_CLICKED) else if(sdcardBtn.GetState() == STATE_CLICKED)
{ {
__io_wiisd.shutdown(); SDCard_deInit();
__io_wiisd.startup(); USBDevice_deInit();
break; SDCard_Init();
USBDevice_Init();
sdcardBtn.ResetState();
} }
else if(DownloadBtn.GetState() == STATE_CLICKED) else if(DownloadBtn.GetState() == STATE_CLICKED)
@ -3080,7 +3051,7 @@ static int MenuDiscList()
} }
} }
HaltGui(); HaltGui();
#ifdef HW_RVL #ifdef HW_RVL
for(i=0; i < 4; i++) for(i=0; i < 4; i++)
@ -3154,14 +3125,6 @@ static int MenuFormat()
GuiTrigger trigHome; GuiTrigger trigHome;
trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0); trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
GuiText titleTxt("Select the Partition", 18, (GXColor){0, 0, 0, 255});
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(10,40);
GuiText titleTxt2("you want to format:", 18, (GXColor){0, 0, 0, 255});
titleTxt2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt2.SetPosition(20,60);
GuiImage poweroffBtnImg(&btnpwroff); GuiImage poweroffBtnImg(&btnpwroff);
GuiImage poweroffBtnImgOver(&btnpwroffOver); GuiImage poweroffBtnImgOver(&btnpwroffOver);
poweroffBtnImg.SetWidescreen(CFG.widescreen); poweroffBtnImg.SetWidescreen(CFG.widescreen);
@ -3181,8 +3144,8 @@ static int MenuFormat()
exitBtnImg.SetWidescreen(CFG.widescreen); exitBtnImg.SetWidescreen(CFG.widescreen);
exitBtnImgOver.SetWidescreen(CFG.widescreen); exitBtnImgOver.SetWidescreen(CFG.widescreen);
GuiButton exitBtn(btnhome.GetWidth(), btnhome.GetHeight()); GuiButton exitBtn(btnhome.GetWidth(), btnhome.GetHeight());
exitBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); exitBtn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
exitBtn.SetPosition(240, 367); exitBtn.SetPosition(0, -10);
exitBtn.SetImage(&exitBtnImg); exitBtn.SetImage(&exitBtnImg);
exitBtn.SetImageOver(&exitBtnImgOver); exitBtn.SetImageOver(&exitBtnImgOver);
exitBtn.SetSoundOver(&btnSoundOver); exitBtn.SetSoundOver(&btnSoundOver);
@ -3235,11 +3198,10 @@ static int MenuFormat()
GuiOptionBrowser optionBrowser(THEME.selection_w, THEME.selection_h, &options, CFG.theme_path, bg_options_png, 1, 0); GuiOptionBrowser optionBrowser(THEME.selection_w, THEME.selection_h, &options, CFG.theme_path, bg_options_png, 1, 0);
optionBrowser.SetPosition(THEME.selection_x, THEME.selection_y); optionBrowser.SetPosition(THEME.selection_x, THEME.selection_y);
optionBrowser.SetAlignment(ALIGN_LEFT, ALIGN_CENTRE); optionBrowser.SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
optionBrowser.SetCol2Position(200);
HaltGui(); HaltGui();
GuiWindow w(screenwidth, screenheight); GuiWindow w(screenwidth, screenheight);
w.Append(&titleTxt);
w.Append(&titleTxt2);
w.Append(&poweroffBtn); w.Append(&poweroffBtn);
w.Append(&exitBtn); w.Append(&exitBtn);
@ -3881,7 +3843,11 @@ static int MenuSettings()
if ( result == 1 ) if ( result == 1 )
{ strncpy(CFG.covers_path, entered, sizeof(CFG.covers_path)); { strncpy(CFG.covers_path, entered, sizeof(CFG.covers_path));
WindowPrompt("Coverpath Changed",0,"OK",0,0,0); WindowPrompt("Coverpath Changed",0,"OK",0,0,0);
cfg_save_global(); if(isSdInserted() == 1) {
cfg_save_global();
} else {
WindowPrompt("No SD-Card inserted!", "Insert a SD-Card to save.", "OK", 0,0,0);
}
} }
} }
else else
@ -3913,7 +3879,11 @@ static int MenuSettings()
{ {
strncpy(CFG.disc_path, entered, sizeof(CFG.disc_path)); strncpy(CFG.disc_path, entered, sizeof(CFG.disc_path));
WindowPrompt("Discpath Changed",0,"OK",0,0,0); WindowPrompt("Discpath Changed",0,"OK",0,0,0);
cfg_save_global(); if(isSdInserted() == 1) {
cfg_save_global();
} else {
WindowPrompt("No SD-Card inserted!", "Insert a SD-Card to save.", "OK", 0,0,0);
}
} }
} }
else else
@ -3945,7 +3915,11 @@ static int MenuSettings()
{ {
strncpy(CFG.theme_path, entered, sizeof(CFG.theme_path)); strncpy(CFG.theme_path, entered, sizeof(CFG.theme_path));
WindowPrompt("Themepath Changed",0,"OK",0,0,0); WindowPrompt("Themepath Changed",0,"OK",0,0,0);
cfg_save_global(); if(isSdInserted() == 1) {
cfg_save_global();
} else {
WindowPrompt("No SD-Card inserted!", "Insert a SD-Card to save.", "OK", 0,0,0);
}
/////load new theme////////////// /////load new theme//////////////
mainWindow->Remove(bgImg); mainWindow->Remove(bgImg);
CFG_Load1(); CFG_Load1();
@ -4434,13 +4408,11 @@ static int MenuCheck()
VIDEO_WaitVSync (); VIDEO_WaitVSync ();
ret2 = WBFS_Init(WBFS_DEVICE_USB); ret2 = WBFS_Init(WBFS_DEVICE_USB);
if (ret2 < 0) if (ret2 < 0)
{ {
//shutdown SD //shutdown SD
fatUnmount("SD"); SDCard_deInit();
__io_wiisd.shutdown();
//initialize WiiMote for Prompt //initialize WiiMote for Prompt
Wpad_Init(); Wpad_Init();
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
@ -4468,8 +4440,7 @@ static int MenuCheck()
Wpad_Init(); Wpad_Init();
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight); WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
__io_wiisd.startup(); SDCard_Init();
fatMountSimple("SD", &__io_wiisd);
} }
if (ret2 < 0) { if (ret2 < 0) {
WindowPrompt ("ERROR:","USB-Device not found!", "ok", 0,0,0); WindowPrompt ("ERROR:","USB-Device not found!", "ok", 0,0,0);
@ -4479,8 +4450,7 @@ static int MenuCheck()
Wpad_Init(); Wpad_Init();
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight); WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
__io_wiisd.startup(); SDCard_Init();
fatMountSimple("SD", &__io_wiisd);
} }
ret2 = Disc_Init(); ret2 = Disc_Init();
@ -4490,7 +4460,6 @@ static int MenuCheck()
} }
ret2 = WBFS_Open(); ret2 = WBFS_Open();
if (ret2 < 0) { if (ret2 < 0) {
choice = WindowPrompt("No WBFS partition found!", choice = WindowPrompt("No WBFS partition found!",
@ -4523,11 +4492,9 @@ static int MenuCheck()
//Spieleliste laden //Spieleliste laden
__Menu_GetEntries(); __Menu_GetEntries();
if(menu == MENU_NONE)
menu = MENU_DISCLIST; menu = MENU_DISCLIST;
return menu; return menu;
} }

View File

@ -1,7 +1,5 @@
#include <stdio.h> #include <stdio.h>
#include <ogcsys.h> #include <ogcsys.h>
#include <fat.h>
#include <sdcard/wiisd_io.h>
#include "sys.h" #include "sys.h"
#include "wpad.h" #include "wpad.h"
@ -10,6 +8,7 @@
#include "disc.h" #include "disc.h"
#include "wbfs.h" #include "wbfs.h"
#include "video.h" #include "video.h"
#include "fatmounter.h"
/* Constants */ /* Constants */
#define CERTS_LEN 0x280 #define CERTS_LEN 0x280
@ -52,8 +51,8 @@ int Sys_IosReload(int IOS)
{ {
s32 ret; s32 ret;
fatUnmount("SD"); SDCard_deInit();
__io_wiisd.shutdown(); USBDevice_deInit();
WPAD_Flush(0); WPAD_Flush(0);
WPAD_Disconnect(0); WPAD_Disconnect(0);
@ -74,7 +73,7 @@ int Sys_IosReload(int IOS)
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight); WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight);
if(IOS == 249 || IOS == 222) { if(IOS == 249 || IOS == 222 || IOS == 223) {
ret = WBFS_Init(WBFS_DEVICE_USB); ret = WBFS_Init(WBFS_DEVICE_USB);
ret = Disc_Init(); ret = Disc_Init();
ret = WBFS_Open(); ret = WBFS_Open();