Skip to content

Commit d0d0191

Browse files
committed
Fix some race conditions
1 parent e096919 commit d0d0191

7 files changed

Lines changed: 133 additions & 40 deletions

File tree

gc/bte/bte.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ typedef s32 (*btecallback)(s32 result,void *userdata);
141141

142142
void BTE_Init(void);
143143
void BTE_Shutdown(void);
144+
void BTE_Stop(void);
144145
s32 BTE_InitCore(btecallback cb);
145146
s32 BTE_ApplyPatch(btecallback cb);
146147
s32 BTE_InitSub(btecallback cb);

gc/wiiuse/wpad.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ enum {
4646
WPAD_CHAN_5,
4747
WPAD_MAX_DEVICES,
4848
};
49+
50+
// Compatibility with old apps
51+
#define WPAD_MAX_WIIMOTES WPAD_MAX_DEVICES
4952

5053
#define WPAD_BUTTON_2 0x0001
5154
#define WPAD_BUTTON_1 0x0002
@@ -188,7 +191,7 @@ s32 WPAD_Search(void);
188191
s32 WPAD_StopSearch(void);
189192
s32 WPAD_StartPairing(void);
190193
s32 WPAD_WipeSavedControllers(void);
191-
void WPAD_Shutdown(void);
194+
s32 WPAD_Shutdown(void);
192195
void WPAD_SetIdleTimeout(u32 seconds);
193196
void WPAD_SetPowerButtonCallback(WPADShutdownCallback cb);
194197
void WPAD_SetBatteryDeadCallback(WPADShutdownCallback cb);

lwbt/bte.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,15 @@ void BTE_Init(void)
399399
SYS_SetPeriodicAlarm(btstate.timer_svc,&tb,&tb,bt_alarmhandler, NULL);
400400
}
401401

402+
void BTE_Stop(void)
403+
{
404+
u32 level;
405+
406+
_CPU_ISR_Disable(level);
407+
hci_cmd_complete(NULL);
408+
_CPU_ISR_Restore(level);
409+
}
410+
402411
void BTE_Shutdown(void)
403412
{
404413
u32 level;

lwbt/hci.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1767,6 +1767,7 @@ void hci_event_handler(struct pbuf *p)
17671767
hci_conn_request_evt(p);
17681768
break;
17691769
case HCI_DISCONNECTION_COMPLETE:
1770+
printf("HCI_DISCONNECTION_COMPLETE\n");
17701771
switch(((u8_t*)p->payload)[0]) {
17711772
case HCI_SUCCESS:
17721773
for(link=hci_active_links;link!=NULL;link=link->next) {

lwbt/l2cap.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,6 +1427,8 @@ void lp_disconnect_ind(struct bd_addr *bdaddr,u8_t reason)
14271427
struct l2cap_pcb *pcb, *tpcb;
14281428
err_t ret;
14291429

1430+
printf("lp_disconnect_ind\n");
1431+
14301432
(void)ret;
14311433

14321434
for(pcb = l2cap_active_pcbs; pcb != NULL;) {

wiiuse/io_wii.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,12 @@ int wiiuse_register(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, struct
129129
memset(wml->name, 0, sizeof(wml->name));
130130
wml->assign_cb = assign_cb;
131131
if(wml->sock==NULL)
132+
{
133+
printf("wml->sock was null\n");
132134
wml->sock = bte_new();
135+
}
136+
else
137+
printf("err: %d / state: %d / bdaddr: %02x:%02x:%02x:%02x:%02x:%02x\n", wml->sock->err, wml->sock->state, wml->sock->bdaddr.addr[5], wml->sock->bdaddr.addr[4], wml->sock->bdaddr.addr[3], wml->sock->bdaddr.addr[2], wml->sock->bdaddr.addr[1], wml->sock->bdaddr.addr[0]);
133138

134139
bte_arg(wml->sock,wml);
135140
bte_received(wml->sock,__wiiuse_receive);
@@ -171,7 +176,7 @@ int wiiuse_connect(struct wiimote_listen_t *wml, struct bd_addr *bdaddr, u8 *nam
171176

172177
void wiiuse_disconnect(struct wiimote_t *wm)
173178
{
174-
//printf("wiiuse_disconnect\n");
179+
printf("wiiuse_disconnect\n");
175180

176181
if(wm==NULL || wm->sock==NULL) return;
177182

0 commit comments

Comments
 (0)