Annotate AgbRfu_LinkManager.c with local defines

This commit is contained in:
PikalaxALT
2020-02-10 12:20:55 -05:00
parent b9f1132aa6
commit 371f9fda6e
2 changed files with 78 additions and 43 deletions
+14
View File
@@ -11,6 +11,20 @@
//Note: This value uses the item defined by AgbRFU_LL.h.
#define MODE_P_C_SWITCH 2 // Start Link Manager in parent-child switching mode.
// Value of lman.p_c_switch_flag
#define PCSWITCH_1ST_SC_START 0x01
#define PCSWITCH_1ST_SC 0x02
#define PCSWITCH_2ND_SP_START 0x03
#define PCSWITCH_2ND_SP 0x04
#define PCSWITCH_3RD_SC_START 0x05
#define PCSWITCH_3RD_SC 0x06
#define PCSWITCH_CP 0x07
#define PCSWITCH_SC_LOCK 0x08
#define PCSWITCH_FORCE_SP_START 0x09
// Period for which parent-child switching search specified
#define PCSWITCH_ALL_PERIOD 180 // Entire cycle 180 frames
#define PCSWITCH_SP_PERIOD 40 // Child period 40 frames
// Error code returned by Link Manager API (rfu_LMAN_...return value of function)
#define LMAN_ERROR_MANAGER_BUSY 1 // Link Manager is already running.
+64 -43
View File
@@ -2,6 +2,21 @@
#include "librfu.h"
#include "link_rfu.h"
// Constant used by rfu_LMAN_checkRecvChildName
#define RN_ACCEPT 0x01 // Child device acceptance OK flag
#define RN_NAME_TIMER_CLEAR 0x02 // Name receive timer clear flag
#define RN_DISCONNECT 0x04 // Child device disconnect flag
// Constant used by lman.linkRecovery_start_flag in rfu_LMAN_linkWatcher
#define LINK_RECOVERY_OFF 0x00 // Link recovery OFF
#define LINK_RECOVERY_START 0x01 // Link recovery start
#define LINK_RECOVERY_EXE 0x02 // Link recovery running
#define LINK_RECOVERY_IMPOSSIBLE 0x04 // Link recovery not possible
// value of lman.fastSearchParent_flag
#define FSP_ON 0x01
#define FSP_START 0x02
LINK_MANAGER lman;
static void rfu_LMAN_clearVariables(void);
@@ -83,7 +98,7 @@ void rfu_LMAN_initializeRFU(INIT_PARAM *init_parameters)
lman.NI_failCounter_limit = init_parameters->NI_failCounter_limit;
if (init_parameters->fastSearchParent_flag)
{
lman.fastSearchParent_flag = 1;
lman.fastSearchParent_flag = FSP_ON;
}
}
@@ -142,7 +157,7 @@ u8 rfu_LMAN_establishConnection(u8 parent_child, u16 connect_period, u16 name_ac
}
if (parent_child > 1)
{
lman.pcswitch_flag = 1;
lman.pcswitch_flag = PCSWITCH_1ST_SC_START;
parent_child = MODE_PARENT;
connect_period = 0;
}
@@ -159,7 +174,7 @@ u8 rfu_LMAN_establishConnection(u8 parent_child, u16 connect_period, u16 name_ac
lman.state = LMAN_STATE_START_SEARCH_PARENT;
if (lman.fastSearchParent_flag)
{
lman.fastSearchParent_flag = 2;
lman.fastSearchParent_flag = FSP_START;
}
}
lman.parent_child = parent_child;
@@ -212,7 +227,7 @@ u8 rfu_LMAN_CHILD_connectParent(u16 parentId, u16 connect_period)
lman.connect_period = connect_period;
if (lman.pcswitch_flag != 0)
{
lman.pcswitch_flag = 7;
lman.pcswitch_flag = PCSWITCH_CP;
}
return 0;
}
@@ -543,21 +558,21 @@ void rfu_LMAN_manager_entity(u32 rand)
static void rfu_LMAN_settingPCSWITCH(u32 rand)
{
if (lman.pcswitch_flag == 5)
if (lman.pcswitch_flag == PCSWITCH_3RD_SC_START)
{
lman.parent_child = MODE_PARENT;
lman.state = LMAN_STATE_START_SEARCH_CHILD;
lman.connect_period = lman.pcswitch_period_bak;
if (lman.connect_period)
{
lman.pcswitch_flag = 6;
lman.pcswitch_flag = PCSWITCH_3RD_SC;
}
else
{
lman.pcswitch_flag = 1;
lman.pcswitch_flag = PCSWITCH_1ST_SC_START;
}
}
if (lman.pcswitch_flag == 1)
if (lman.pcswitch_flag == PCSWITCH_1ST_SC_START)
{
lman.parent_child = MODE_PARENT;
lman.state = LMAN_STATE_START_SEARCH_CHILD;
@@ -565,18 +580,18 @@ static void rfu_LMAN_settingPCSWITCH(u32 rand)
lman.pcswitch_period_bak = 140 - lman.connect_period;
if (lman.connect_period)
{
lman.pcswitch_flag = 2;
lman.pcswitch_flag = PCSWITCH_1ST_SC;
}
else
{
lman.pcswitch_flag = 3;
lman.pcswitch_flag = PCSWITCH_2ND_SP_START;
}
}
if (lman.pcswitch_flag == 3)
if (lman.pcswitch_flag == PCSWITCH_2ND_SP_START)
{
lman.parent_child = MODE_CHILD;
lman.connect_period = 40;
lman.pcswitch_flag = 4;
lman.connect_period = PCSWITCH_SP_PERIOD;
lman.pcswitch_flag = PCSWITCH_2ND_SP;
lman.state = LMAN_STATE_START_SEARCH_PARENT;
}
}
@@ -640,9 +655,12 @@ static void rfu_LMAN_REQ_callback(u16 reqCommandId, u16 reqResult)
case ID_SP_START_REQ:
if (reqResult == 0)
{
if (lman.fastSearchParent_flag == 1 && lman.connect_period > 1)
if (lman.fastSearchParent_flag == FSP_ON)
{
lman.connect_period--;
if (lman.connect_period > 1)
{
lman.connect_period--;
}
}
lman.state = lman.next_state = LMAN_STATE_POLL_SEARCH_PARENT;
}
@@ -661,7 +679,7 @@ static void rfu_LMAN_REQ_callback(u16 reqCommandId, u16 reqResult)
rfu_REQ_endSearchParent();
rfu_waitREQComplete();
lman.state = LMAN_STATE_START_SEARCH_PARENT;
lman.fastSearchParent_flag = 1;
lman.fastSearchParent_flag = FSP_ON;
}
}
if (lman.connect_period && --lman.connect_period == 0)
@@ -681,10 +699,10 @@ static void rfu_LMAN_REQ_callback(u16 reqCommandId, u16 reqResult)
rfu_LMAN_occureCallback(LMAN_MSG_SEARCH_PARENT_PERIOD_EXPIRED, 0);
}
}
else if (lman.pcswitch_flag != 7)
else if (lman.pcswitch_flag != PCSWITCH_CP)
{
lman.state = LMAN_STATE_START_SEARCH_CHILD;
lman.pcswitch_flag = 5;
lman.pcswitch_flag = PCSWITCH_3RD_SC_START;
}
}
break;
@@ -721,7 +739,7 @@ static void rfu_LMAN_REQ_callback(u16 reqCommandId, u16 reqResult)
lman.param[0] = status;
if (lman.pcswitch_flag)
{
lman.pcswitch_flag = 3;
lman.pcswitch_flag = PCSWITCH_2ND_SP_START;
lman.state = LMAN_STATE_START_SEARCH_PARENT;
}
}
@@ -864,15 +882,15 @@ static void rfu_LMAN_REQ_callback(u16 reqCommandId, u16 reqResult)
{
if (gRfuLinkStatus->parentChild == MODE_NEUTRAL)
{
if (lman.pcswitch_flag == 8)
if (lman.pcswitch_flag == PCSWITCH_SC_LOCK)
{
lman.connect_period = lman.pcswitch_period_bak;
lman.pcswitch_flag = 6;
lman.pcswitch_flag = PCSWITCH_3RD_SC;
lman.state = LMAN_STATE_POLL_SEARCH_CHILD;
}
else if (lman.state != LMAN_STATE_POLL_SEARCH_CHILD && lman.state != LMAN_STATE_END_SEARCH_CHILD)
{
lman.pcswitch_flag = 1;
lman.pcswitch_flag = PCSWITCH_1ST_SC_START;
lman.state = LMAN_STATE_START_SEARCH_CHILD;
}
}
@@ -915,7 +933,7 @@ static void rfu_LMAN_REQ_callback(u16 reqCommandId, u16 reqResult)
}
if (reqResult != 0)
{
if (reqCommandId == ID_SP_START_REQ && reqResult != 0 && lman.pcswitch_flag == 4)
if (reqCommandId == ID_SP_START_REQ && reqResult != 0 && lman.pcswitch_flag == PCSWITCH_2ND_SP)
{
gRfuLinkStatus->parentChild = MODE_PARENT;
gRfuLinkStatus->connSlotFlag = 0xF;
@@ -1015,7 +1033,7 @@ static void rfu_LMAN_PARENT_checkRecvChildName(void)
{
if (gRfuSlotStatusNI[i]->recv.dataType == 1) // Game identification information
{
flags = 0x02;
flags = RN_NAME_TIMER_CLEAR;
for (ptr = lman.acceptable_serialNo_list; *ptr != 0xFFFF; ptr++)
{
if (gRfuLinkStatus->partner[i].serialNo == *ptr)
@@ -1023,27 +1041,27 @@ static void rfu_LMAN_PARENT_checkRecvChildName(void)
lman.acceptSlot_flag |= tgtSlot;
lman.acceptCount++;
newAcceptSlot |= tgtSlot;
flags |= 0x01;
flags |= RN_ACCEPT;
break;
}
}
if (!(flags & 0x01))
if (!(flags & RN_ACCEPT))
{
flags |= 0x04;
flags |= RN_DISCONNECT;
}
}
}
else if (--lman.nameAcceptTimer.count[i] == 0)
{
flags = 0x06;
flags = RN_NAME_TIMER_CLEAR | RN_DISCONNECT;
}
if (flags & 0x02)
if (flags & RN_NAME_TIMER_CLEAR)
{
lman.nameAcceptTimer.active &= ~tgtSlot;
lman.nameAcceptTimer.count[i] = 0;
rfu_clearSlot(TYPE_NI_RECV, i);
}
if (flags & 0x04)
if (flags & RN_DISCONNECT)
{
lman.reserveDisconnectSlot_flag |= tgtSlot;
}
@@ -1056,10 +1074,13 @@ static void rfu_LMAN_PARENT_checkRecvChildName(void)
}
if (lman.reserveDisconnectSlot_flag)
{
flags = 0x01;
if (gRfuLinkStatus->sendSlotUNIFlag && ((lman.parentAck_flag & lman.acceptSlot_flag) != lman.acceptSlot_flag))
flags = 1;
if (gRfuLinkStatus->sendSlotUNIFlag)
{
flags = 0x00;
if (((lman.parentAck_flag & lman.acceptSlot_flag) != lman.acceptSlot_flag))
{
flags = 0;
}
}
if (flags)
{
@@ -1078,20 +1099,20 @@ static void rfu_LMAN_PARENT_checkRecvChildName(void)
}
else
{
if (lman.pcswitch_flag == 2)
if (lman.pcswitch_flag == PCSWITCH_1ST_SC)
{
lman.pcswitch_flag = 3;
lman.pcswitch_flag = PCSWITCH_2ND_SP_START;
lman.state = LMAN_STATE_START_SEARCH_PARENT;
}
else
{
lman.pcswitch_flag = 1;
lman.pcswitch_flag = PCSWITCH_1ST_SC_START;
lman.state = LMAN_STATE_START_SEARCH_CHILD;
}
if (lman.acceptSlot_flag)
{
lman.connect_period = 0;
lman.pcswitch_flag = 8;
lman.pcswitch_flag = PCSWITCH_SC_LOCK;
lman.state = LMAN_STATE_START_SEARCH_CHILD;
}
}
@@ -1319,7 +1340,7 @@ static u8 rfu_LMAN_setFastSearchParent(u8 enable_flag)
}
if (enable_flag)
{
lman.fastSearchParent_flag = 1;
lman.fastSearchParent_flag = FSP_ON;
}
else
{
@@ -1356,23 +1377,23 @@ void rfu_LMAN_forceChangeSP(void)
switch (lman.state)
{
case LMAN_STATE_START_SEARCH_CHILD:
lman.pcswitch_flag = 3;
lman.pcswitch_flag = PCSWITCH_2ND_SP_START;
lman.state = LMAN_STATE_START_SEARCH_PARENT;
break;
case LMAN_STATE_POLL_SEARCH_CHILD:
lman.pcswitch_flag = 2;
lman.pcswitch_flag = PCSWITCH_1ST_SC;
lman.connect_period = 1;
break;
case LMAN_STATE_END_SEARCH_CHILD:
case LMAN_STATE_WAIT_RECV_CHILD_NAME:
lman.pcswitch_flag = 2;
lman.pcswitch_flag = PCSWITCH_1ST_SC;
break;
case LMAN_STATE_START_SEARCH_PARENT:
case LMAN_STATE_POLL_SEARCH_PARENT:
lman.connect_period = 40;
lman.connect_period = PCSWITCH_SP_PERIOD;
break;
case LMAN_STATE_END_SEARCH_PARENT:
lman.connect_period = 40;
lman.connect_period = PCSWITCH_SP_PERIOD;
lman.state = LMAN_STATE_POLL_SEARCH_PARENT;
break;
}