Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions gc/wiiuse/wiiuse.h
Original file line number Diff line number Diff line change
Expand Up @@ -720,8 +720,8 @@ WIIUSE_EXPORT extern const char* wiiuse_version();
#ifndef GEKKO
WIIUSE_EXPORT extern struct wiimote_t** wiiuse_init(int wiimotes);
#else
WIIUSE_EXPORT extern int wiiuse_accept(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, u8 *name, struct wiimote_t *(*assign_cb)(wiimote_listen *wml, u8 err));
WIIUSE_EXPORT extern int wiiuse_connect(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, u8 *name, struct wiimote_t *(*assign_cb)(wiimote_listen *wml, u8 err));
WIIUSE_EXPORT extern int wiiuse_accept(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, const u8 *name, struct wiimote_t *(*assign_cb)(wiimote_listen *wml, u8 err));
WIIUSE_EXPORT extern int wiiuse_connect(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, const u8 *name, struct wiimote_t *(*assign_cb)(wiimote_listen *wml, u8 err));
WIIUSE_EXPORT extern struct wiimote_t** wiiuse_init(int wiimotes, wii_event_cb event_cb);
WIIUSE_EXPORT extern void wiiuse_sensorbar_enable(int enable);
#endif
Expand Down
12 changes: 10 additions & 2 deletions libogc/system.c
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ extern void __reset(u32 reset_code);

extern u32 __IPC_ClntInit(void);
extern u32 __PADDisableRecalibration(s32 disable);
extern u32 __WPADClearActiveList(void);

extern void __console_init_ex(void *conbuffer,int tgt_xstart,int tgt_ystart,int tgt_stride,int con_xres,int con_yres,int con_stride);

Expand Down Expand Up @@ -1189,8 +1190,15 @@ void SYS_ResetSystem(s32 reset,u32 reset_code,s32 force_menu)

__dsp_shutdown();

if(reset==SYS_SHUTDOWN) {
ret = __PADDisableRecalibration(TRUE);
switch(reset) {
case SYS_SHUTDOWN:
ret = __PADDisableRecalibration(TRUE);
break;
case SYS_POWEROFF:
case SYS_POWEROFF_STANDBY:
case SYS_POWEROFF_IDLE:
__WPADClearActiveList();
break;
}

while(__call_resetfuncs(FALSE)==0);
Expand Down
4 changes: 2 additions & 2 deletions wiiuse/io_wii.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ void __wiiuse_sensorbar_enable(int enable)
IRQ_Restore(level);
}

int wiiuse_accept(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, u8 *name, struct wiimote_t *(*assign_cb)(wiimote_listen *wml, u8 err))
int wiiuse_accept(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, const u8 *name, struct wiimote_t *(*assign_cb)(wiimote_listen *wml, u8 err))
{
s32 err;

Expand Down Expand Up @@ -205,7 +205,7 @@ int wiiuse_accept(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, u8 *name
return 0;
}

int wiiuse_connect(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, u8 *name, struct wiimote_t *(*assign_cb)(wiimote_listen *wml, u8 err))
int wiiuse_connect(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, const u8 *name, struct wiimote_t *(*assign_cb)(wiimote_listen *wml, u8 err))
{
s32 err;

Expand Down
40 changes: 37 additions & 3 deletions wiiuse/wpad.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,40 @@ static s32 __wpad_onreset(s32 final)
return 1;
}

u32 __WPADClearActiveList(void)
{
u32 level,ret;

_CPU_ISR_Disable(level);

if(CONF_GetPadDevices(&__wpad_devs) < 0) {
ret = 1;
goto err;
}

__wpads_active = 0;
__wpads_used = 0;
memset(__wpad_devs.active,0,sizeof(__wpad_devs.active));
memset(&__wpad_guests,0,sizeof(__wpad_guests));
memset(__wpad_guest_keys,0,sizeof(__wpad_guest_keys));

if(CONF_SetPadDevices(&__wpad_devs) < 0) {
ret = 1;
goto err;
}

if(CONF_SetPadGuestDevices(&__wpad_guests) < 0) {
ret = 1;
goto err;
}

ret = CONF_SaveChanges();

err:
_CPU_ISR_Restore(level);
return ret;
}

static void __wpad_def_powcb(s32 chan)
{
SYS_DoPowerCB();
Expand Down Expand Up @@ -939,7 +973,7 @@ static s8 __wpad_connreqCB(void *arg,struct bd_addr *pad_addr,u8 *cod,u8 link_ty
int slot = WPAD_MAX_DEVICES;
int confslot = CONF_PAD_MAX_ACTIVE;
struct bd_addr bdaddr;
u8 *name = NULL;
const u8 *name = NULL;

WIIUSE_DEBUG("__wpad_connreqCB");
_CPU_ISR_Disable(level);
Expand All @@ -950,7 +984,7 @@ static s8 __wpad_connreqCB(void *arg,struct bd_addr *pad_addr,u8 *cod,u8 link_ty
confslot = GetActiveSlot(pad_addr);
if (confslot < CONF_PAD_MAX_ACTIVE) {
BD_ADDR_FROM_BYTES(&bdaddr,__wpad_devs.active[confslot].bdaddr);
name = (u8 *)__wpad_devs.active[confslot].name;
name = (const u8 *)__wpad_devs.active[confslot].name;
WIIUSE_DEBUG("Active pad '%s' found in slot %d", name, confslot);
if (!(__wpads_used & (1<<confslot)) || bd_addr_cmp(pad_addr,&bdaddr))
slot = confslot;
Expand All @@ -962,7 +996,7 @@ static s8 __wpad_connreqCB(void *arg,struct bd_addr *pad_addr,u8 *cod,u8 link_ty
for(i=0; i<CONF_PAD_MAX_REGISTERED; i++) {
BD_ADDR_FROM_BYTES(&bdaddr,__wpad_devs.registered[i].bdaddr);
if(bd_addr_cmp(pad_addr,&bdaddr)) {
name = (u8 *)__wpad_devs.registered[i].name;
name = (const u8 *)__wpad_devs.registered[i].name;
WIIUSE_DEBUG("Registered pad '%s' found in slot %d", name, i);

// Not active, try to make active
Expand Down