📄 mn80pub1.c
字号:
#ifndef PM_ONPC
#ifdef __cplusplus
extern "C"{
#endif
#include "phs_def.h"
#include "mn80.h"
#include "mn80ext.h"
//#include "l1_fnc80.h"
//#include "biosapi.h"
#define csid_mirr(mirr_data) ((mirr_data&0x80)>>7)|((mirr_data&0x40)>>5)|((mirr_data&0x20)>>3)\
|((mirr_data&0x10)>>1)|((mirr_data&0x08)<<1)|((mirr_data&0x04)<<3)\
|((mirr_data&0x02)<<5)|((mirr_data&0x01)<<7) //Which is defined in l1_fnc80.h
void Mn_PCCHMonitor2(void)
{
U1 cc;
U2 i;
int n;
CCH_MON_INF moni;
#ifdef EXT_IO
BYTE mnghis[6];
#endif
/*
#ifdef SIMU_ON_PC
SendUart2L1( SIMTSKDTR , CCHMCNT , 0 , 0);
//Here wait the response data from L1 of CchMonCount
CchMonCount = ? ;
SendUart2L1( SIMTSKDTR , CLIST , 0 , 0);
//Here wait the response data from L1 of CList struct
move_up_b( (U1*)&CList , ? , sizeof(CList) );
#endif
*/
for(i = 0; i < CchMonCount; i++)
{
move_up_b( (U1*)&moni, (U1*)&CList.CsInf[i], sizeof(CCH_MON_INF) );
for(cc = 0; cc < 6; cc++)
moni.Csid[cc] = csid_mirr(moni.Csid[cc]);
moni.Csid[5] = (moni.Csid[5] >> 6) & 0x03;
if (cmp_up_b(PBSid, CLSCSID, 6))
{
if (!cmp_up_b(PBSid,(U1*) moni.Csid, 5)
&& PBSid[5] == (moni.Csid[5] & 0x03))
{
if(moni.Rssi >= CCHs_CSlev)
{
moni.Rssi = CCHs_CSlev;
}
else
{
moni.Rssi = CCHh_CSlev;
} /* #189 end */
}
}
if (!(cmp_up_b(Sys_napbs[PHS_PUBLIC_STS], (U1*)moni.Csid, 5))
&& Sys_napbs[PHS_PUBLIC_STS][5] == (moni.Csid[5] & 0x03))
{
if(moni.Rssi >= CCHs_CSlev)
{
moni.Rssi = CCHs_CSlev;
}
else
{
moni.Rssi = CCHh_CSlev;
}
}
if (CCHFact[PHS_PUBLIC_STS] == CCHINC)
{
if (!Mn_AreaCmp((U1*)WaitCS[PHS_PUBLIC_STS].Csid, (U1*)moni.Csid))
continue;
}
if(Ich_end_monF == BIT8)
if (!Mn_AreaCmp(LocNgCS, (U1*)moni.Csid))
continue;
if(Sys_initdl1[12] & 0x10)
{
if (cmp_up_b(Sys_pbsid, (U1*)moni.Csid, 5) ||
Sys_pbsid[5] != (moni.Csid[5] & 0x03))
{
continue;
}
}
if (!(moni.Csid[0] & BIT8))
{
continue;
}
if ((Sys_carrier[1] == (((U1)(moni.Csid[0] << 1) ) | ((U1)(moni.Csid[1] >> 7)))) &&
(Sys_carrier[2] == WaitCS[PHS_PUBLIC_STS].CCHno))
{
Mn_CCHMonRegSet2(&moni);
ReaVal = 0;
}
}
#ifdef EXT_IO
for (n = 0; n < CCHMonReg; n++)
{
move_up_b(mnghis,(U1*)&CCHMonTable[n].Csid[1],5);
mnghis[5] = CCHMonTable[n].Rssi;
HisOut(6,0x41,ECCH_MON , Mn_state.public_mod , mnghis);
}
#endif
}
void Mn_PPBSReSelect(void)
{
Mn_PCsyncCounterClear();
MaxLCHCnt = 4;
CCHGain = LOW;
WaitCS[PHS_PUBLIC_STS].CCHno = Sys_carrier[2];
if((CCHFact[phs_mode] == CCHCAL) || (CCHFact[phs_mode] == CCHINC))
RetryCount = 20;
else
RetryCount = MAX_RETRY;
CCHMonReg = 0;
Mn_CCH_M_REQ(OFF);
Mn_state.public_mod = ST_PP_CCH_MON;
#ifdef SIMU_ON_PC
SendUart2L1(SIMTSKDTW , MNSTATE , 0 , (BYTE*)&Mn_state.public_mod , 1);
#endif
}
void Mn_ti_page(void)
{
ti_page = OFF;
}
U1 Mn_AreaCmp(U1 *srcCsid,U1 *dstCsid)
{ /* #199 97.01.30 */
U1 n;
for (n = 0; n < 6; n++)
{
if ((srcCsid[n] ^ dstCsid[n]) & BitMask[n])
{
return ( OFF );
}
}
return ( ON );
}
U1 Mn_AreaNoCmp(U1 *ChkCsid)
{
U1 n;
for (n = 0; n < 6; n++)
{
if ((ChkCsid[n] ^ Sys_pbsid[n]) & BitMask[n])
{
return ( OFF );
}
}
return ( ON );
}
void Mn_PRadioInfo(void) //L1 -> L3(L3C) -> MNG
{
U1 n;
Sys_initdl1[18] = 0x07;
#ifdef SIMU_ON_PC
SendUart2L1( SIMTSKDTW , SYSINIT , 18 , &Sys_initdl1[18] , 1);
#endif
Mn_PCsyncRssiChk();
if (CCHEstTim[phs_mode])
{
m_stptim(T100MS, TICCHEST, phs_mode);
CCHEstTim[phs_mode] = OFF;
Mn_PCsyncCountStart();
}
if(Mn_InEvtCod[1] == L1_BCCHB)
{
return;
}
RadioFlag[phs_mode] = OFF;
move_up_b(Sys_bcch[0][phs_mode], Sys_cch, 8);
#ifdef SIMU_ON_PC
SendUart2L1( SIMTSKDTW , SYSBCCH , (BYTE)(&Sys_bcch[0][phs_mode][0]-&Sys_bcch[0][0][0]), Sys_bcch[0][phs_mode] , 8);
#endif
Sleep_Pch_Select();
if (CNTCRY(PHS_PUBLIC_STS) == 0x02 && Sys_prinfo[7] & 0x010)
{
Sys_initdl1[18] = 0x00;
#ifdef SIMU_ON_PC
SendUart2L1( SIMTSKDTW , SYSINIT , 18 , &Sys_initdl1[18] , 1);
#endif
if (((IncGroup[PHS_PUBLIC_STS] % 2) && (Sys_prinfo[7] & 0x020))
|| (!(IncGroup[PHS_PUBLIC_STS] % 2) && !(Sys_prinfo[7] & 0x020)))
{
RadioFlag[PHS_PUBLIC_STS] = OFF;
}
else
{
Sleep_Control(BSLPREL);
#ifdef PROT_TEST
HisOut(0x00,0xfe,0x07,0x00,0x00);
#endif
another_cch_get();
RadioFlag[PHS_PUBLIC_STS] = ON;
for (n = 0; n < 3; n++) /* #225 */
{
SysInfFlag[phs_mode][n] = OFF;
if (n == 0)
{
move_up_b(Sys_bcch[1][phs_mode], SYSIFDF[phs_mode], 8);
#ifdef SIMU_ON_PC
SendUart2L1( SIMTSKDTW , SYSBCCH , (BYTE)(&Sys_bcch[1][phs_mode][0]-&Sys_bcch[0][0][0]) , Sys_bcch[1][phs_mode] , 8);
#endif
}
} /* #225 end */
return;
}
}
if(!(Sys_pbsid[6] & 0x0F))
{
Sys_pbsid[6] |= (Sys_bcch[0][phs_mode][2] & 0x0f);
Mn_PAreaBitMask();
} /* #205 嘆 end */
for (n = 0; n < 3; n++)
{
if (Sys_bcch[0][phs_mode][6] & (0x08 << n))
{
if (SysInfFlag[phs_mode][n] == OFF)
{
SysInfFlag[phs_mode][n] = HOLD;
}
else if(SysInfFlag[phs_mode][n] == WAIT_RADIO)
{
SysInfFlag[phs_mode][n] = ON;
}
}
else
{
SysInfFlag[phs_mode][n] = OFF;
if (n == 0)
{
move_up_b(Sys_bcch[1][phs_mode], SYSIFDF[phs_mode], 8);
#ifdef SIMU_ON_PC
SendUart2L1( SIMTSKDTW , SYSBCCH , (BYTE)(&Sys_bcch[1][phs_mode][0]-&Sys_bcch[0][0][0]) , Sys_bcch[1][phs_mode] , 8);
#endif
}
}
}
if (!(SysInfFlag[phs_mode][0]
| SysInfFlag[phs_mode][1]
| SysInfFlag[phs_mode][2]))
{
Mn_PCCHEstComp();
}
else if (SysInfFlag[phs_mode][0] > ON
|| SysInfFlag[phs_mode][1] > ON
|| SysInfFlag[phs_mode][2] > ON)
{
}
else
{
if ( Mn_PSysInfoChk() == OK )
{
Mn_PCCHEstComp();
}
}
}
void Mn_PSysInfo(void)
{
U1 n;
#ifdef SIMU_ON_PC
U1 buf[14];
#endif
Mn_PCsyncRssiChk();
if (CCHEstTim[phs_mode])
{
m_stptim(T100MS, TICCHEST, phs_mode);
CCHEstTim[phs_mode] = OFF;
Mn_PCsyncCountStart();
}
if(L1_BCCHB == Mn_InEvtCod[1])
{
return;
}
n = Mn_InEvtCod[0] - ESYSINFO;
if (RadioFlag[phs_mode])
{
SysInfFlag[phs_mode][n] = WAIT_RADIO;
move_up_b(Sys_bcch[n + 1][phs_mode] , Sys_cch , 8);
#ifdef SIMU_ON_PC
SendUart2L1( SIMTSKDTW , SYSBCCH , (BYTE)(&Sys_bcch[n+1][phs_mode][0]-&Sys_bcch[0][0][0]) , Sys_bcch[n+1][phs_mode] , 8);
#endif
return;
}
if (Sys_bcch[0][phs_mode][6] & (0x08 << n))
{
SysInfFlag[phs_mode][n] = ON;
move_up_b(Sys_bcch[n + 1][phs_mode], Sys_cch, 8);
#ifdef SIMU_ON_PC
SendUart2L1( SIMTSKDTW , SYSBCCH , (BYTE)(&Sys_bcch[n+1][phs_mode][0]-&Sys_bcch[0][0][0]) , Sys_bcch[n+1][phs_mode] , 8);
#endif
if(Sys_bcch[n + 1][phs_mode][7] & 0x01)
{
switch (Sys_cch[7] & 0x07)
{
case 0x01:
SysStsTim[phs_mode][0] = 50;
break;
case 0x03:
SysStsTim[phs_mode][1] = 50;
break;
case 0x05:
break;
}
}
if ( Mn_PSysInfoChk() == OK )
{
Mn_PCCHEstComp();
}
}
else
{
SysInfFlag[phs_mode][n] = OFF;
}
}
U1 Mn_PSys2InfoChk(void)
{
RtMmVer[phs_mode] = 0x00;
if (SysInfFlag[phs_mode][1] != ON)
{
return(OK);
}
if(Sys_initdl1[9] | Sys_initdl1[10])
{
if((Sys_initdl1[9] != Sys_bcch[2][phs_mode][1]) ||
(Sys_initdl1[10] != Sys_bcch[2][phs_mode][2]))
{
return(NG);
}
}
if ((Sys_bcch[2][phs_mode][4] & 0x07) == 0x00)
{
return(NG);
}
RtMmVer[phs_mode] = Sys_bcch[2][phs_mode][4];
return(OK);
}
U1 Mn_PSysInfoChk(void)
{
U1 n;
if ( Mn_PSys2InfoChk() )
{
if (phs_mode == PHS_PUBLIC_STS)
{
Mn_PBSRetryCheck();
}
return ( NG );
}
if (SysInfFlag[phs_mode][0] != ON)
{
goto chk_lab;
}
if (Sys_psinfo[2] & BIT5)
{
ReaVal = 0x04;
move_up_b(Sys_napbs[PHS_PUBLIC_STS], (U1*)WaitCS[phs_mode].Csid, 6);
if (cmp_up_b(PBSid, CLSCSID, 6))
{
for (n = 0; n < CCHMonReg; n++)
{
if (!cmp_up_b(PBSid, (U1*)CCHMonTable[n].Csid, 6))
{
CCHMonTable[n].Locflg = OFF;
break;
}
}
move_up_b(PBSid, CLSCSID, 6);
}
Mn_PBSRetryCheck();
return ( NG );
}
Mn_PSysRegulChk();
switch (CCHFact[phs_mode])
{
case CCHEST:
break;
case CCHCAL:
if ( Mn_PUBCallReglChk() == NG )
{
ReaVal = 0x35;
Mn_PBSRetryCheck();
return ( NG );
}
break;
case CCHINC:
default:
break;
}
chk_lab :
if (SysInfFlag[phs_mode][0] > ON
|| SysInfFlag[phs_mode][1] > ON
|| SysInfFlag[phs_mode][2] > ON)
{
return ( NG );
}
return ( OK );
}
void Mn_PSysRegulChk(void)
{
U1 PriPS;
U1 j;
/* #J01-MNG20 */
PriPS = Sys_pri;
if (PriPS & BIT1)
{
RegulCS[phs_mode].Kind &= ~0x02;
if (Sys_bcch[1][phs_mode][5] & BIT8)
{
if (cmp_up_b((U1*)RegulCS[phs_mode].Csid,(U1*) WaitCS[phs_mode].Csid, 6))
{
move_up_b((U1*)RegulCS[phs_mode].Csid, (U1*)WaitCS[phs_mode].Csid, 6);
RegulCS[phs_mode].GrpFlg = WaitCS[phs_mode].GrpFlg;
RegulCS[phs_mode].FreqNo = WaitCS[phs_mode].CCHno;
RegulCS[phs_mode].Kind = 0;
}
RegulCS[phs_mode].Kind |= 0x02;
}
RegulCS[phs_mode].Kind &= ~0x08;
if (Sys_bcch[1][phs_mode][5] & BIT7)
{
if (cmp_up_b((U1*)RegulCS[phs_mode].Csid,(U1*)WaitCS[phs_mode].Csid, 6))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -