📄 mn80pub2.c
字号:
U1 i, n;
n = 0;
LA1n = 0;
LA2n = 0;
LA3n = 0;
LA4n = 0;
LA5n = 0;
LA6n = 0;
LA1n = Mn_PHakkoGrpLA1(LAGroup);
n = LA1n;
if ( n == CCHMonReg )
{
goto end_set;
}
LA2n = Mn_PHakkoGrpLA2(&LAGroup[n], LA2Csid);
if ( LA2n > 0 )
{
n += LA2n;
if ( n == CCHMonReg )
{
goto end_set;
}
LA3n = Mn_PHakkoGrpLA3(&LAGroup[n], LA2Csid);
}
if ( LA3n > 0 )
{
n += LA3n;
if ( n == CCHMonReg )
{
goto end_set;
}
}
LA4n = Mn_PHakkoGrpLA4(&LAGroup[n]);
if ( LA4n > 0 )
{
n += LA4n;
if ( n == CCHMonReg )
{
goto end_set;
}
}
LA5n = Mn_PHakkoGrpLA5(&LAGroup[n], LA5Csid);
if ( LA5n > 0 )
{
n += LA5n;
if ( n == CCHMonReg )
{
goto end_set;
}
LA6n = Mn_PHakkoGrpLA6(&LAGroup[n], LA5Csid);
}
if ( LA6n > 0 )
{
n += LA6n;
}
CCHMonReg = n;
end_set:
for ( i = 0; i < CCHMonReg; i++ )
{
move_up_b((U1*)&CCHMonTable[i], (U1*)&LAGroup[i],
sizeof(MN_CCHMONREC));
}
}
U1 Mn_PHakkoGrpLA1(MN_CCHMONREC *LAGroup)
{
U1 i, n;
MN_CCHMONREC *LASort;
U1 BaseLvl;
BaseLvl = Sys_initdl1[16];
LASort = LAGroup;
for ( n = 0, i = 0; i < CCHMonReg; i++ )
{
if ( Mn_AreaCmp(Sys_pbsid, (U1*)CCHMonTable[i].Csid)
&& (CCHMonTable[i].Rssi >= BaseLvl) )
{
move_up_b((U1*)&LAGroup[n], (U1*)&CCHMonTable[i],
sizeof(MN_CCHMONREC));
n++;
}
}
if ( n == 0 ) {
return ( n );
}
return ( n );
}
U1 Mn_PHakkoGrpLA2(MN_CCHMONREC *LAGroup, U1 *LA2Csid)
{
U1 i, n;
MN_CCHMONREC *LASort;
LASort = LAGroup;
for ( n = 0, i = 0; i < CCHMonReg; i++ )
{
if ( !(Mn_AreaCmp(Sys_pbsid, (U1*)CCHMonTable[i].Csid))
&& (CCHMonTable[i].Rssi >= Sys_initdl1[16]) )
{
move_up_b(LA2Csid, (U1*)&CCHMonTable[i].Csid, 6);
n = 1;
break;
}
}
if ( n == 0 )
{
return ( n );
}
for ( n = 0,i = 0; i < CCHMonReg; i++ )
{
if ( Mn_AreaCmp(LA2Csid,(U1*) CCHMonTable[i].Csid)
&& (CCHMonTable[i].Rssi >= Sys_initdl1[16]) )
{
move_up_b((U1*)&LAGroup[n], (U1*)&CCHMonTable[i],
sizeof(MN_CCHMONREC));
n++;
}
}
return ( n );
}
U1 Mn_PHakkoGrpLA3(MN_CCHMONREC *LAGroup, U1 *LA2Csid)
{
U1 i, n;
U1 LA3Csid[6];
MN_CCHMONREC *LASort;
LASort = LAGroup;
for ( n = 0, i = 0; i < CCHMonReg; i++ )
{
if ( !(Mn_AreaCmp(Sys_pbsid,(U1*) CCHMonTable[i].Csid))
&& !(Mn_AreaCmp(LA2Csid, (U1*)CCHMonTable[i].Csid))
&& (CCHMonTable[i].Rssi >= Sys_initdl1[16]) )
{
move_up_b(LA3Csid, (U1*)&CCHMonTable[i].Csid, 6);
n = 1;
break;
}
}
if ( n == 0 )
{
return ( n );
}
for ( n = 0,i = 0; i < CCHMonReg; i++ )
{
if ( Mn_AreaCmp(LA3Csid, (U1*)CCHMonTable[i].Csid)
&& (CCHMonTable[i].Rssi >= Sys_initdl1[16]) )
{
move_up_b((U1*)&LAGroup[n], (U1*)&CCHMonTable[i],
sizeof(MN_CCHMONREC));
n++;
}
}
return ( n );
}
U1 Mn_PHakkoGrpLA4(MN_CCHMONREC *LAGroup)
{
U1 i, n;
MN_CCHMONREC *LASort;
U1 BaseLvl;
BaseLvl = Sys_initdl1[16];
LASort = LAGroup;
for ( n = 0, i = 0; i < CCHMonReg; i++ )
{
if ( Mn_AreaCmp(Sys_pbsid, (U1*)CCHMonTable[i].Csid)
&& (CCHMonTable[i].Rssi < BaseLvl) ) {
move_up_b((U1*)&LAGroup[n], (U1*)&CCHMonTable[i],
sizeof(MN_CCHMONREC));
n++;
}
}
if ( n == 0 ) {
return ( n );
}
return ( n );
}
U1 Mn_PHakkoGrpLA5(MN_CCHMONREC *LAGroup, U1 *LA5Csid)
{
U1 i, n;
MN_CCHMONREC *LASort;
LASort = LAGroup;
for ( n = 0, i = 0; i < CCHMonReg; i++ )
{
if ( !(Mn_AreaCmp(Sys_pbsid, (U1*)CCHMonTable[i].Csid))
&& (CCHMonTable[i].Rssi < Sys_initdl1[16]) )
{
move_up_b(LA5Csid, (U1*)&CCHMonTable[i].Csid, 6);
n = 1;
break;
}
}
if ( n == 0 )
{
return ( n );
}
for ( n = 0,i = 0; i < CCHMonReg; i++ )
{
if ( Mn_AreaCmp(LA5Csid, (U1*)CCHMonTable[i].Csid)
&& (CCHMonTable[i].Rssi < Sys_initdl1[16]) ) {
move_up_b((U1*)&LAGroup[n], (U1*)&CCHMonTable[i],
sizeof(MN_CCHMONREC));
n++;
}
}
return ( n );
}
U1 Mn_PHakkoGrpLA6(MN_CCHMONREC *LAGroup, U1 *LA5Csid)
{
U1 i, n;
U1 LA6Csid[6];
MN_CCHMONREC *LASort;
LASort = LAGroup;
for ( n = 0, i = 0; i < CCHMonReg; i++ )
{
if ( !(Mn_AreaCmp(Sys_pbsid, (U1*)CCHMonTable[i].Csid))
&& !(Mn_AreaCmp(LA5Csid, (U1*)CCHMonTable[i].Csid))
&& (CCHMonTable[i].Rssi < Sys_initdl1[16]) )
{
move_up_b(LA6Csid, (U1*)&CCHMonTable[i].Csid, 6);
n = 1;
break;
}
}
if ( n == 0 )
{
return ( n );
}
for ( n = 0,i = 0; i < CCHMonReg; i++ )
{
if ( Mn_AreaCmp(LA6Csid, (U1*)CCHMonTable[i].Csid)
&& (CCHMonTable[i].Rssi < Sys_initdl1[16]) )
{
move_up_b((U1*)&LAGroup[n], (U1*)&CCHMonTable[i],
sizeof(MN_CCHMONREC));
n++;
}
}
return ( n );
}
U1 Mn_PWaitCCHMonChk(void)
{
if(WReMonTimN || WPubMon == ON)
{
A_count = 0;
return ( NG );
}
if ( pc_rssi < (U1)(CCHh_CSlev + Sys_initdl1[14]))
{
A_count++;
if(A_count >= 2)
{
A_count = 0;
WReMonTimN = 0;
ClvlSum[PHS_PUBLIC_STS] = (BYTE)pc_rssi;
Mn_PWaitCCHMonReq2();
return ( OK );
}
}
else
A_count = 0;
return ( NG );
}
void Mn_PWaitCCHMonReq2(void)
{
Mn_PCCHTimStp(PHS_PUBLIC_STS);
if ( WReMonTimN == 0 )
{
Mn_settim(TIWMONIT1);
}
CCHMonReg = 0;
cch_m_req2(CCHEST,(U1)(WaitCS[PHS_PUBLIC_STS].CCHno-1),Sys_pbsid[7],LOW,OFF);
Mn_settim(TICCHMON);
WPubMon = ON;
#ifdef SIMU_ON_PC
SendUart2L1(SIMTSKDTW , WPUBMON , 0 , &WPubMon , 1);
#endif
CCHInfo.Moni = PHS_PUBLIC_STS;
}
void Mn_PWaitCCHMonTo(void)
{
cch_m_stp2();
CCHInfo.Moni = 0xFF;
Mn_PCCHMonitor2();
WPubMon = OFF;
#ifdef SIMU_ON_PC
SendUart2L1(SIMTSKDTW , WPUBMON , 0 , &WPubMon , 1);
#endif
if ( CCHMonReg == 0 )
{
;
}
else
{
if(Mn_GetFeature(FEATURE_SEAMLESS,FEATURE_LOW_CS_PREFER))
Mn_LowCSPrefer_Sort(1); /*In standy mode, prefer Location Registration*/
else
{
Mn_RSSIMonRegSet();
Mn_PWaitPriCSMonSort(CCHMonTable, CCHMonReg);
}
if (!cmp_up_b((U1*)WaitCS[PHS_PUBLIC_STS].Csid, (U1*)CCHMonTable[0].Csid, 5)
&& (WaitCS[PHS_PUBLIC_STS].Csid[5] == (CCHMonTable[0].Csid[5] & 0x03)))
{
return;
}
if (CCHMonTable[0].Rssi < (Sys_pbsid[8] + 15))
return;
if(!PubNgAreaChk((U1*)CCHMonTable[0].Csid))
return;
pbs_sel_retry = 0;
A_short = ON;
if ( WReMonTim & BIT1 )
{
m_stptim(T1S, TIWMONIT1, PHS_PUBLIC_STS);
WReMonTim = 0;
WReMonTimN = 0;
}
#ifdef _DEBUG_TC6_
_SendStringToUart("WaitCCH\n",sizeof("WaitCCH\n"));
#endif
Mn_PNextPBSCCHEstReq( CCHEST, ON );
}
}
U1 Mn_PFstPBSCCHEstReqInit(void)
{
U1 ret;
pbs_sel_retry = 0;
switch ( CCHFact[PHS_PUBLIC_STS] )
{
case CCHEST :
Mn_PWaitPriCSMonSort(CCHMonTable, CCHMonReg);
break;
case CCHCAL :
Mn_PHakkoCSMonSort();
if ( Sys_initdl1[18] & BIT2 )
{
Mn_PRegulCSMonSort(CCHCAL);
}
break;
case CCHINC :
break;
case CCHLOC :
reg_fail = ON;
move_up_b(LocNgCS,(U1*)WaitCS[PHS_PUBLIC_STS].Csid,6);
break;
default :
return ( NG );
break;
}
ret = Mn_PBSSelReTrySet( CCHFact[PHS_PUBLIC_STS] );
if ( ret == OK )
{
#ifdef _DEBUG_TC6_
_SendStringToUart("FSTPB\n",sizeof("FSTPB\n"));
#endif
Mn_PNextPBSCCHEstReq( CCHFact[PHS_PUBLIC_STS], ON );
}
return ( ret );
}
U1 Mn_PBSSelReTry( U1 CCHfactor )
{
U1 ret;
pbs_sel_retry++;
ret = Mn_PBSSelReTrySet( CCHfactor );
if ( ret == OK )
{
#ifdef _DEBUG_TC6_
_SendStringToUart("PBSSel\n",sizeof("PBSSel\n"));
#endif
ret = Mn_PNextPBSCCHEstReq( CCHfactor, ON );
}
return ( ret );
}
U1 Mn_PBSSelReTrySet( U1 CCHfactor )
{
U1 i;
if ( pbs_sel_retry >= PBS_RETRY13 )
{
return ( NG );
}
for ( i = pbs_sel_retry; i < CCHMonReg; i++ )
{
if( CCHfactor == CCHCAL)
{
if(CallKind & 0x80)
{
if ((!cmp_up_b(TriedPBSid, (U1*)&CCHMonTable[i].Csid[0], 5))
&& (TriedPBSid[5] == (CCHMonTable[i].Csid[5] & 0x03)))
continue;
}
}
if( CCHfactor == CCHINC)
{
if ((!cmp_up_b(TriedPBSid, (U1*)&CCHMonTable[i].Csid[0], 5))
&& (TriedPBSid[5] == (CCHMonTable[i].Csid[5] & 0x03)))
continue;
}
if ( PubNgAreaChk((U1*)CCHMonTable[i].Csid) )
{
if ( CCHfactor == CCHLOC )
{
if (Mn_AreaCmp(LocNgCS, (U1*)CCHMonTable[i].Csid))
break;
}
else
{
break;
}
}
}
pbs_sel_retry = i;
if (( pbs_sel_retry < CCHMonReg )
&& ( pbs_sel_retry < PBS_RETRY13 ))
{
return ( OK );
}
else
{
return ( NG );
}
}
U1 Mn_PNextPBSCCHEstReq( U1 CCHfactor, U1 Mode )
{
U1 n;
U1 BCCHflg;
U1 ret;
#ifdef SIMU_ON_PC
U1 buf[14];
#endif
ret = OK;
if ( Mode == ON )
{
Sleep_Control(BSLPREL);
#ifdef PROT_TEST
HisOut(0x00,0xfe,0x0d,0x00,0x00);
#endif
WReMonTimN |= BIT8;
Mn_PCCHTimStp(PHS_PUBLIC_STS);
WReMonTimN &= ~BIT8;
Mn_PCsyncCounterClear();
if ( !(Mn_AreaCmp((U1*)WaitCS[PHS_PUBLIC_STS].Csid,
(U1*)CCHMonTable[pbs_sel_retry].Csid)) )
{
ret = 2;
}
move_up_b((U1*)WaitCS[PHS_PUBLIC_STS].Csid, (U1*)CCHMonTable[pbs_sel_retry].Csid, 6);
WaitCS[PHS_PUBLIC_STS].GrpFlg = CCHMonTable[pbs_sel_retry].GrpFlg;
WaitCS[PHS_PUBLIC_STS].Gain = CCHMonTable[pbs_sel_retry].Gain;
}
BCCHflg = ON;
switch ( CCHfactor )
{
case CCHINC :
if ( Sys_initdl1[18] & BIT3 )
{
BCCHflg = OFF;
}
break;
case CCHCAL :
if ( Sys_initdl1[18] & BIT2 )
{
BCCHflg = OFF;
}
if(RegulCS[PHS_PUBLIC_STS].Kind & 0x18)
{
BCCHflg = ON;
}
break;
case CCHLOC :
if ( Sys_initdl1[18] & BIT1 )
{
BCCHflg = OFF;
}
if(RegulCS[PHS_PUBLIC_STS].Kind & 0x06)
{
BCCHflg = ON;
}
break;
case CCHEST :
default :
break;
}
if ( BCCHflg == ON )
{
RadioFlag[PHS_PUBLIC_STS] = ON;
for (n = 0; n < 3; n++)
{
SysInfFlag[PHS_PUBLIC_STS][n] = OFF;
}
RegulCS[PHS_PUBLIC_STS].Kind &= ~0x0a;
if ( CCHfactor != CCHINC )
{
RtMmVer[PHS_PUBLIC_STS] = OFF;
}
}
if ( BCCHflg == ON )
{
move_up_b(Sys_bcch[1][PHS_PUBLIC_STS],SYSIFDF[PHS_PUBLIC_STS],8);
#ifdef SIMU_ON_PC
SendUart2L1( SIMTSKDTW , SYSBCCH , (BYTE)(&Sys_bcch[1][PHS_PUBLIC_STS][0]-&Sys_bcch[0][0][0]) , Sys_bcch[1][PHS_PUBLIC_STS] , 8);
#endif
}
cch_est_req((U1)(WaitCS[PHS_PUBLIC_STS].CCHno-1),
(U1*)WaitCS[PHS_PUBLIC_STS].Csid, WaitCS[PHS_PUBLIC_STS].Gain);
#ifdef EXT_IO
HisOut(6,0xda,0x00,0x00,(U1*)WaitCS[PHS_PUBLIC_STS].Csid);
#endif
ReaVal = 0;
CCHFact[PHS_PUBLIC_STS] = CCHfactor;
#ifdef _DEBUG_TC6_
_SendStringToUart("Est T BG\n",sizeof("Est T BG\n"));
#endif
Mn_settim(TICCHEST);
if ( !CCHShortTim[PHS_PUBLIC_STS] )
{
Mn_settim(TICCHSHT);
}
if ( BCCHflg == ON )
{
Mn_state.public_mod = ST_PP_REPORT;
#ifdef SIMU_ON_PC
SendUart2L1(SIMTSKDTW , MNSTATE , 0 , (BYTE*)&Mn_state.public_mod , 1);
#endif
}
else
{
Mn_state.public_mod = ST_PP_WAIT;
#ifdef SIMU_ON_PC
SendUart2L1(SIMTSKDTW , MNSTATE , 0 ,(BYTE*)&Mn_state.public_mod , 1);
#endif
}
return ( ret );
}
void Mn_PRegulCSMonSort( U1 CCHfactor )
{
MN_CCHMONREC Group[20],
RegulGroup[20];
U1 i, j, k, n;
n = OFF;
if ( (CCHfactor == CCHCAL)
&& (RegulCS[PHS_PUBLIC_STS].GrpFlg == ON) && (RegulCS[PHS_PUBLIC_STS].Kind & 0x18) )
{
for ( i = 0; i < CCHMonReg; i++ )
{
if ( Mn_AreaCmp((U1*)RegulCS[PHS_PUBLIC_STS].Csid, (U1*)CCHMonTable[i].Csid) )
{
n = ON;
break;
}
}
}
else if ( (CCHfactor == CCHLOC)
&& (RegulCS[PHS_PUBLIC_STS].GrpFlg == ON) && (RegulCS[PHS_PUBLIC_STS].Kind & 0x06) )
{
for ( i = 0; i < CCHMonReg; i++ )
{
if ( Mn_AreaCmp((U1*)RegulCS[PHS_PUBLIC_STS].Csid, (U1*)CCHMonTable[i].Csid) )
{
n = ON;
break;
}
}
}
if ( n == OFF )
{
return;
}
for ( i = 0, j = 0, k = 0; i < CCHMonReg; i++ )
{
if ( Mn_AreaCmp((U1*)RegulCS[PHS_PUBLIC_STS].Csid, (U1*)CCHMonTable[i].Csid) )
{
move_up_b((U1*)&RegulGroup[k], (U1*)&CCHMonTable[i],
sizeof(MN_CCHMONREC));
k++;
}
else
{
move_up_b((U1*)&Group[j], (U1*)&CCHMonTable[i],
sizeof(MN_CCHMONREC));
j++;
}
}
for ( i = 0, n = 0; n < j; i++, n++ )
{
move_up_b((U1*)&CCHMonTable[i], (U1*)&Group[n],
sizeof(MN_CCHMONREC));
}
for ( i = j, n = 0; n < k; i++, n++ )
{
move_up_b((U1*)&CCHMonTable[i], (U1*)&RegulGroup[n],
sizeof(MN_CCHMONREC));
}
}
void Mn_PCHRssiChk(void)
{
#ifdef _DEBUG_TC6_
_SendStringToUart("Mn_PCHRssiChk\n",sizeof("Mn_PCHRssiChk\n"));
#endif
if (CCHEstTim[phs_mode])
{
m_stptim(T100MS, TICCHEST, phs_mode);
CCHEstTim[phs_mode] = OFF;
Mn_PCsyncCountStart();
}
if (CsyncTim[phs_mode])
{
m_stptim(T100MS, TICSYNC, phs_mode);
CsyncTim[phs_mode] = OFF;
}
if ((SLEEP_STS[phs_mode] == OFF) || RadioFlag[phs_mode])
{
Mn_settim(TICSYNC);
}
UwCrc_Err = 0;
if(SLEEP_STS[phs_mode] == OFF)
CsyncCount[phs_mode] = Sys_csynctim[phs_mode];
Mn_PSELRSSIChk();
if(Mn_state.public_mod == ST_PP_WAIT && SLEEP_STS[phs_mode] != OFF)
{
if ( Mn_PWaitCCHMonChk() == OK )
{
return;
}
}
}
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -