Skip to content

Commit fe8fcb1

Browse files
committed
fix: [sio2man] make sdk1.3.x comapt flags sticky
1 parent 9a07436 commit fe8fcb1

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

iop/system/sio2man/src/exports.tab

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ DECLARE_EXPORT(sio2_data_in)
153153
DECLARE_EXPORT(sio2_stat_set)
154154
DECLARE_EXPORT(sio2_stat_get)
155155
DECLARE_EXPORT(sio2_pad_transfer_init_possiblysdk13x) // originally sio2_pad_transfer_init
156-
DECLARE_EXPORT(sio2_pad_transfer_init_possiblysdk13x) // originally sio2_mc_transfer_init
156+
DECLARE_EXPORT(sio2_mc_transfer_init_possiblysdk13x) // originally sio2_mc_transfer_init
157157
DECLARE_EXPORT(sio2_transfer)
158158
DECLARE_EXPORT(sio2_transfer_reset)
159159
DECLARE_EXPORT(sio2_ctrl_set2)

iop/system/sio2man/src/sio2man.c

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ struct sio2man_internal_data
4040
int m_intr_sema;
4141
int m_transfer_semaphore;
4242
// Unofficial: backwards compatibility for libraries using 1.3 SDK
43-
int m_sdk13x_flag;
43+
int m_sdk13x_curflag;
44+
int m_sdk13x_totalflag;
4445
sio2_mtap_change_slot_cb_t m_mtap_change_slot_cb;
4546
sio2_mtap_get_slot_max_cb_t m_mtap_get_slot_max_cb;
4647
sio2_mtap_get_slot_max2_cb_t m_mtap_get_slot_max2_cb;
@@ -311,7 +312,8 @@ int _start(int ac, char **av)
311312
if ( g_sio2man_data.m_inited )
312313
return 1;
313314
g_sio2man_data.m_inited = 1;
314-
g_sio2man_data.m_sdk13x_flag = 0;
315+
g_sio2man_data.m_sdk13x_curflag = 0;
316+
g_sio2man_data.m_sdk13x_totalflag = 3;
315317
// Unofficial: remove unneeded thread priority argument handler
316318
// Unofficial: use setters instead of setting variable directly
317319
sio2_mtap_change_slot_set(NULL);
@@ -409,7 +411,7 @@ int sio2_transfer(sio2_transfer_data_t *td)
409411
sio2_set_ctrl_1();
410412
sio2_wait_for_intr();
411413
recv_td(td);
412-
if ( g_sio2man_data.m_sdk13x_flag )
414+
if ( g_sio2man_data.m_sdk13x_curflag )
413415
sio2_transfer_reset();
414416
#ifdef SIO2LOG
415417
log_flush(0);
@@ -426,18 +428,24 @@ void sio2_pad_transfer_init(void)
426428
#ifdef SIO2LOG
427429
log_default(LOG_PAD_READY);
428430
#endif
429-
g_sio2man_data.m_sdk13x_flag = 0;
431+
g_sio2man_data.m_sdk13x_curflag = 0;
430432
}
431433

432434
void sio2_pad_transfer_init_possiblysdk13x(void)
433435
{
434436
sio2_pad_transfer_init();
435-
g_sio2man_data.m_sdk13x_flag = 1;
437+
g_sio2man_data.m_sdk13x_curflag |= g_sio2man_data.m_sdk13x_totalflag & 1;
438+
}
439+
440+
void sio2_mc_transfer_init_possiblysdk13x(void)
441+
{
442+
sio2_pad_transfer_init();
443+
g_sio2man_data.m_sdk13x_curflag |= g_sio2man_data.m_sdk13x_totalflag & 2;
436444
}
437445

438446
void sio2_transfer_reset(void)
439447
{
440-
g_sio2man_data.m_sdk13x_flag = 0;
448+
g_sio2man_data.m_sdk13x_curflag = 0;
441449
SignalSema(g_sio2man_data.m_transfer_semaphore);
442450
#ifdef SIO2LOG
443451
log_default(LOG_RESET);
@@ -491,7 +499,7 @@ void sio2_mtap_update_slots_set(sio2_mtap_update_slots_t cb)
491499

492500
int sio2_mtap_change_slot(s32 *arg)
493501
{
494-
g_sio2man_data.m_sdk13x_flag = 0;
502+
g_sio2man_data.m_sdk13x_totalflag &= ~g_sio2man_data.m_sdk13x_curflag;
495503
// Unofficial: unconditionally call callback
496504
return g_sio2man_data.m_mtap_change_slot_cb(arg);
497505
}

0 commit comments

Comments
 (0)