⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mn80.h

📁 phs 源代码 小灵通协议源代码 phs source code
💻 H
字号:
/*-------------------------------------------------------------------------
*       Copyright (C) 2003 UTStarcom Telecom Co., Ltd.
*       All rights reserved.
*
*       Filename:     Mn80.h
*       Module:
*       Description:  none
*       Version:
*       History:
*                 Author               Date                    Description
*               ------------     ---------           ---------------
*               Sanyo                                                Initial version
*               Yang Yajiang          05/23/2003           Modify forARM( alignment problem )
*
*-------------------------------------------------------------------------*/
#ifndef _MN_H
#define _MN_H
#ifdef __cplusplus
	extern "C" {
#endif
//#include	"l1_exf80.h"										/* #GRP-01	*/
#include 	"sysdef.h"
#include	"_Define.h"
#include	"Mn80Sts.h"
#ifdef SIMU_ON_PC
#include	"simu_define.h"
#endif

//#define	NULL        0x00
#define	NONE		0xFF
#define	WAIT_RADIO	3
#define	HOLD		2
#define	END			0x0000
#define	SRCH		0xFFFF

//Mn_state group , Added by chenxl
enum
{
	PHS_PUBLIC_STS	= 0,
	PHS_PRIVATE_STS = 1,
	PHS_PS2PS_STS = 2,
	PHS_COMMON_STS = 3
};


//Added by chenxl
typedef enum
{
	CALLMODE_OUT 	= 1,
	CALLMODE_IN	= 2,
	CALLMODE_LOCREG = 3
}enumCALLMODE;



/* FEATURE DEFINION */
#define FEATURE_SEAMLESS			1		/*Seamless feature ID*/
#define FEATURE_POWER_OFF_REG		1		/*Power off registration subfeature ID*/
											/*It also server as the feature mask bit*/
#define FEATURE_LOW_CS_PREFER		2		/*low power CS prefered subfeature ID*/
											/*It also server as the feature mask bit*/
											/* don't change it unless you're sure*/

#define	TOTC309P	90
#define	TORCHDIS	20
#define	TOCCHSHT	18
#define	TORETRY		5


#define	TICCHMON	(U2)0x81
#define	TICSYNC		(U2)0x82
#define	TIACCALL	(U2)0x85
#define TIACLOC		(U2)0x86
#define	TITC309P	(U2)0x8A
#define	TITCHFRE	(U2)0x8B
#define	TIHANDOV	(U2)0x8C
#define	TICCHEST	(U2)0x96
#define	TICCHSHT	(U2)0x97
#define	TIRETRY		(U2)0x98
#define	TIPAGE		(U2)0x9B

#define	TIWMONIT1	(U2)0x9D
#define	PBS_RETRY13	13

#define	SLEEP_MASK		0x03


#define	BSLPREL		0
#define	BSLPFORV	1
#define	SLEEP_OFF	0xFF




#define	MONITOR_LEAST	0x2c


#define CCHEST		0
#define CCHCAL		1
#define CCHINC		2
#define CCHLOC		3



#define J0_SNDCMP 	0xA1
#define	J0_DENTATU	0x04


#define	OJ			0
#define	MJ			1


#define BCD13		0x10
#define BCD13K		0x40


#define OHOME		0
#define OPUBLIC		1


#define MJIG		0x04
#define MOFFU		0x20
#define MSD			0x40
#define MGRP		0x80


#define	ISYSINFO	0x31
#define	ISYSOPT		0x3C
#define	IINPPSNUM	0x01
#define	IINPCDNUM	0x02


#define SON			25

#define SBY			0
#define LOW			1
#define MEDI		2
#define HIGH		3


#define PRIERR		0xF1
#define SEQERR		0xF2
#define PARERR		0xF3


#define DL_REL_STAT		0x01
#define DL_SET_STAT		0x04


#define	N(X)		(I2)(Sys_bcch[0][X][1])
#define	NGROUP(X)	(I2)((Sys_bcch[0][X][2] >> 4) & 0x0F)
#define	NBS(X)		(I2)(Sys_bcch[0][X][3] & 0x07)
#define	NSG(X)		(I2)((Sys_bcch[0][X][3] >> 3) & 0x07)
#define	NOFSET(X)	(I2)((Sys_bcch[0][X][4] >> 6) & 0x03)	/* Noffset		*/
#define	NPCH(X)		(I2)((Sys_bcch[0][X][4] >> 3) & 0x07)
#define	NSUB(X)		(I2)(Sys_bcch[0][X][4] & 0x07)
#define	NLOFSET(X)	(I2)(Sys_bcch[0][X][5])					/* Noffset		*/
#define	SLTNO(X)	(I2)((Sys_bcch[0][X][6] >> 6) & 0x03)	//absolute slot number
#define	CNTCRY(X)	(Sys_bcch[0][X][6] & 0x03)


#define	ACCYCINT(X)	(X ? ((Sys_hsinfo[5] & 0x0F) << 2) : ((Sys_psinfo[5] & 0x0F) << 2))



#define	MAX_RETRY	0x04

#define NG_AREA_NUM	0x03

#ifdef SIMU_ON_PC     /*zch for protocol simulator */
#pragma pack( push, mnheader,1)
#endif

#ifndef SIMU_ON_PC
__packed
#endif
typedef struct {
	U1		*nxt;
	U2		qno;
	U1		msg[MSGDAT_SZ];
} M_MSB;



#ifndef SIMU_ON_PC
__packed
#endif
typedef struct {
	U1		*next_po;
	U1		lst_len;
	U1		msg_len;
	U1		msg[L3_MSGSZ];
} M_MSB_L2;

#ifndef SIMU_ON_PC
__packed
#endif
typedef struct {
	U2		pno;
	U2		event[8];
} MN_EVB;


#ifndef SIMU_ON_PC
__packed
#endif
typedef struct {
	U2		evt_code;
	U2		pri_code;
	void	(*Module)();
} MN_EVENTREC;


#ifndef SIMU_ON_PC
__packed
#endif
typedef struct {
	U1		Csid[6];							/* CS-ID					*/
	U1		Rssi;
	U1		Gain;
	U1		Endflg;
	U1		Locflg;
	U1		GrpFlg;
} MN_CCHMONREC;


#ifndef SIMU_ON_PC
__packed
#endif
typedef struct {
	U1		Csid[6];							/* CS-ID					*/
	U1		GrpFlg;
	U1		FreqNo;
	U1		Kind;
} MN_REGULCS;

#ifndef SIMU_ON_PC
	__packed
#endif
typedef struct {

	U1		CompFlg;
	U1		GrpFlg;
	U1		FrqNo;
	U1		Retry;
} MN_LOCINF;


#ifndef SIMU_ON_PC
__packed
#endif
typedef struct {
	U1		Moni;
	U1		Main;
} MN_CCH;


#ifndef SIMU_ON_PC
__packed
#endif
typedef struct {
	U1		infCnt;
	U1		mCnt;
	U1		id[10];
	U1		len[10];
	U1		om[10];
} MN_INFTBL;

#ifndef SIMU_ON_PC
__packed
#endif
typedef struct		//added by chenxl 2003/8/13
{
	U2 	evt_cod;
	U2 	pri_cod;
	U1*	buf_adr;
	U2 	inf_len;
	U1*	inf_adr;
	U1	add_dat;
	U1	dmy3;
}L3_MN_EVT;		//The event code struct in Sys_work[] , come from or send to MM , CC and RT.



#ifndef SIMU_ON_PC
__packed
#endif
typedef struct	//added by chenxl 2003/8/13
{
	U2 	evt_cod;
	U2	dl_typ;
	U2	dl_id;
	U2	dl_sou;
	U1*	msg_adr;
	U2	add_dat[2];
}L3C_MN_EVT;	//The event code struct in Sys_work[] , come from or send to L3


#ifndef SIMU_ON_PC
__packed
#endif
typedef struct	//added by chenxl 	2003/8/13
{
	U2	evt_cod;
	U2	null1;
	U2	null2;
	U2	add_dat;
	U2	dont_care[4];
}L1_MN_EVT;	//The event code struct in Sys_work[] , come from L1



#ifndef SIMU_ON_PC
__packed
#endif
typedef struct	//Added by chenxl 2003/8/13
{
	U2 	evt_cod;
	U2	ch;		//SACCH/FACCH
	U2	dmy;
	U2	tr_req;
	U1*	msg_adr;
	U2	evt1;
	U2 	evt2;
}L2_MN_EVT;	//L2 will not dispatch the event to MNG directly , always relayed by L3C


#ifndef SIMU_ON_PC
__packed
#endif
typedef struct	//added by chenxl	2003/8/13
{

	U2		evt_cod;
	M_MSB	*msg_adr;
	U2		add_dat;
	U2		dont_care[4];
}PM_MN_EVT;	//The event code struct in Sys_work[] , come from PM


#ifndef SIMU_ON_PC
__packed
#endif
typedef struct {		//added by chenxl
	U2	evt_cod;
	U2	pri_cod;
	U1	msg_dat[6];
	U1	dmy[6];			/* :***For 16bit CPU Changed By Y.Kawata ***/
} RT_MN_LCHEVT;


#ifndef SIMU_ON_PC
__packed
#endif
typedef struct	//added by chenxl
{
	U2 	tim_id;
	U2	tim_info[7];
}MN_TIMER_EVT;	//The event code struct in Sys_work[] , come from the MN Timer


#ifndef SIMU_ON_PC
__packed
#endif
typedef struct		//Added by chenxl
{
	U2	in_evt[8];	// 0~15
	U2	tsk_id;		// 16,17
	U2	out_evt[8];	// 18~33
	M_MSB	*msg_adr;	//34~37
	TEV_PRM_ST tim_inf;
}MN_SYSWRK;

#ifndef SIMU_ON_PC
__packed
#endif
typedef	struct{
	BYTE	SlotInf;
	BYTE	Rssi;
	BYTE	Csid[6];
	BYTE	RxData[8];
} CCH_MON_INF;

//#ifdef SIMU_ON_PC
#define CCH_MON_BUF_MAX	240
typedef	struct{
	CCH_MON_INF	CsInf[CCH_MON_BUF_MAX];
} CCH_MON_LIST;
//#endif


#ifdef SIMU_ON_PC   /*zch for protocol simulator */
#pragma pack( pop, mnheader,1 )
#endif

#ifdef _ON_SANYO_
#define SYS_WORK		((MN_SYSWRK*)Sys_work)	//Added 
#else
#define SYS_WORK		((MN_SYSWRK*)&mn_syswork)
#endif

#define MN_IN_EVT(st)	((st*)SYS_WORK->in_evt)	//((st*)SYS_WORK->in_evt)	//Added by chenxl
#define MN_OUT_EVT(st)	((st*)SYS_WORK->out_evt)	//	((st*)SYS_WORK->out_evt)


//add by Qian Aidong for support Lucent network FEAL32 algorithm.  START
#define FealN 32		/* FEAL-N value	*/

// Noted by Yang Yajiang
void 	  Mm_FEAL32enc(U1 *, U1 *, U1 *); //add for supporting Lucent network 2001-11-26
void	Mn_FealExkey(U1 *, U1 [][2]);
void	Mn_FealF(U1 *, U1 *, U1 *);
void	Mn_FealFK(U1 *, U1 *, U1 *);
U1		Mn_FealS0(U1, U1);
U1		Mn_FealS1(U1, U1);
//add by Qian aidong END



#ifdef _ON_SANYO_
void	Mn_SMain(void);
#else
void	Mn_SMain(void*);
#endif
_BOOL Mn_SSchEvTbl(MN_EVENTREC** ppEvtTbl);		//Modified by chenxl
void	Mn_SSeparate(MN_EVENTREC** ppEvtTbl);
void	Sleep_Pch_Set(U1);
void	Sleep_Pch_Select(void);
void	Sleep_Control(U1);
void	Mn_MInitial(void);
void	Mn_MInitData1(void);
void	Mn_MInitData2(void);
void	Mn_MInitData3(void);
void	Mn_MInitData4(void);
void	Mn_MInitData5(void);
void	Mn_PSNumMake(U1,U1,U1 *,U1);
void	Mn_PAreaBitMask(void);
void	Mn_SReset(void);
void	Mn_InitData(void);
void	Mn_InitL3L2(void);
U1		Mn_InfChk(MN_INFTBL* pInfoTbl , U1 *msg_ptr, U1 length);
U1		So_MsgChk(U1 *, U1);
void	err_dsp(M_MSB *);
void	exec_uap(M_MSB *);
void	Mn_settim(U2);
void	PubAreaNoMake(BYTE*,BYTE*,BYTE);
BYTE	PubNgAreaChk(BYTE*);
void	PubNgAreaSet(BYTE*,BYTE);
void	PubNgAreaClr(void);
void	Mn_HakDLRrcv(void);
U1	Mn_Rtdeffunc(void);


void	Mn_PCCHEstablish(void);

void	Mn_CCH_M_REQ(U1);
void	Mn_PCCHFail(void);
void	Mn_CCHMisInit(void);
void	Mn_PCCHLiberate(void);
void	Mn_PCCHReEstab(void);
void	Mn_PCCHTimStp(U1);
void	Mn_PCCHTimUp(void);
void	Mn_PCsyncOut(void);
void	Mn_PCsyncTimStart(void);
void	Mn_PCsyncCount(void);
void	Mn_PCsyncCounterClear(void);
void	Mn_PCsyncTimerClear(void);
void	Mn_PCsyncCountStart(void);
void	Mn_PCsyncRssiChk(void);
void	Mn_CCHQualDsp(void);
void	Mn_CCHMonRegSet2(CCH_MON_INF* p);
void	Mn_RSSIMonRegSet(void);
U1		Mn_PPsnoCmp(void);
void	Mn_SysCsInfSet(void);
void	Mn_LCHMsgSet(enumCALLMODE);
void	Mn_IncomCallDsp(void);
void	Mn_PSELRSSIChk(void);
void	Mn_UwCrcErrChk(void);
void	Mn_Atimerstop(void);


void	Mn_PCCHMonitor2(void);
void	Mn_PCCHMonTo(void);
void	Mn_PPBSReSelect(void);
void	Mn_ti_page(void);
U1		Mn_AreaCmp(U1 *,U1 *);
U1		Mn_AreaNoCmp(U1 *);
void	Mn_PRadioInfo(void);
void	Mn_PSysInfo(void);
U1		Mn_PSys2InfoChk(void);
U1		Mn_PSysInfoChk(void);
void	Mn_PSysRegulChk(void);
void	Mn_PCCHEstComp(void);
void	Mn_PCCHEstCompWait(void);
void	Mn_PCCHEstCompLink(void);
U1		Mn_PUBCallReglChk(void);
void	Mn_Retry(void);
U1		Mn_CCHMoniNG(void);
void	Mn_MoveCCHFail(void);
U1 		Mn_GetFeature(U1 feature, U1 subfeature); /*Get feature configuration*/


void	Mn_PCallSet(void);
void	Mn_PIncomCall(void);
void	Mn_PIncomRs(void);

void	Mn_PReRadioInfo(void);
void	Mn_PReSysInfo(void);
U1		Mn_PBCCHRcvChk(void);
U1		Mn_PCCHReEstComp(void);

void	Mn_PLink(void);
void	Mn_PLinkNG(void);
void	Mn_PSamePeriod(void);
void	Mn_PTchL1Err(void);

/* #ALG -> */
void 	Mn_PHakkoCSMonSort(void);
void 	Mn_PWaitPriCSMonSort(MN_CCHMONREC *,U1);
U1		Mn_PHakkoGrpLA1(MN_CCHMONREC *);
U1		Mn_PHakkoGrpLA2(MN_CCHMONREC *, U1 *);
U1		Mn_PHakkoGrpLA3(MN_CCHMONREC *, U1 *);
U1		Mn_PHakkoGrpLA4(MN_CCHMONREC *);
U1		Mn_PHakkoGrpLA5(MN_CCHMONREC *, U1 *);
U1		Mn_PHakkoGrpLA6(MN_CCHMONREC *, U1 *);
U1		Mn_PWaitCCHMonChk(void);
void	Mn_PWaitCCHMonReq2(void);
void	Mn_PWaitCCHMonTo(void);
U1		Mn_PFstPBSCCHEstReqInit(void);
U1		Mn_PBSSelReTrySet(U1);
U1		Mn_PBSSelReTry(U1);
U1	 	Mn_PNextPBSCCHEstReq(U1, U1);
void 	Mn_PRegulCSMonSort(U1);
void Mn_PCHRssiChk(void);
void Mn_LowCSPrefer_Sort(U1); /*Low Power CS Prefer sort*/

/*--------------------------------------------------------------*/
/*		[ MN80PUB3.C	]		*/
/*--------------------------------------------------------------*/
void	Mn_PCallDLSet(void);
void	Mn_PCallDefInfo(void);
void	Mn_PCallRTFncRes(void);
void	Mn_PCallMMFncRes(void);
void	Mn_PCallMMCtf(void);
void	Mn_PCallSetAcp(void);
void	Mn_PProgress(void);
void	Mn_PCallDLF(void);
void	Mn_PCCCall(void);
void	Mn_PCCRspns(void);
void	Mn_PTchDLRrcv(void);
void	Mn_PTchDLSrcv(void);
void	Mn_PIncomDLSet(void);
void	Mn_PIncomSet(void);
void	Mn_PFuncReqNG(void);
void	Mn_PIncomAlertRq(void);
void	Mn_PIncomRsRq(void);
void	Mn_PIncomRsDp(void);
void	Mn_PIncomDLF(void);

void	Mn_PFacReq(void);
void	Mn_PFacDsp(void);
void	Mn_PDialReq(void);
void	Mn_PCCValDsp(void);
void	Mn_PRTOptReq(void);
void	Mn_PRTOptDsp(void);
void	Mn_PCCOptReq(void);
void	Mn_PCCOptDsp(void);
void	Mn_PThruDsp(void);
void	Mn_RTFncSet(void);
void	Mn_DLDsp(void);
void	Mn_SCHEstDsp(void);
void	Mn_TCHEndDsp(void);
void	Mn_BearCapaSet(U1 *, U1);
void	Mn_PMailUUISet(void);
void	Mn_PMailUUIUAPSet(void);
void	Mn_Tch1RelReq(U1,U1);
void	Mn_LLCInfoSet(U1 *,U1);

/*------------------------------------------------------*/
/*		[ MN80PUB4.C ]		*/
/*------------------------------------------------------*/
void	Mn_PZoneInfo(void);
void	Mn_PDLinkRDsp(void);
void	Mn_PTchChange(void);
void	Mn_PTchChgIns(void);
void	Mn_PTchChgStp(void);
void	Mn_PTchChgRelease(void);
void	Mn_PTchChgRegul(void);
void	Mn_PTchChgSync(void);
void	Mn_PTchChgEnd(void);
void	Mn_PTchChgNG(void);
void	Mn_PSyncBstrcv(void);
void	Mn_PHORCall(void);
U1		Mn_PsnoBcdToIa5(U1 *,U1 *,U1);
void	Mn_PHOTimOut(void);
void	Mn_PTchSyncOK(void);
void	Mn_PTchSyncNG(void);
void	Mn_PTchModori(void);
void	Mn_PTchRReq(void);
void	Mn_PCutReq(void);
void	Mn_PRadCutReq(void);
void	Mn_PCutDsp(void);
void	Mn_PReleaseDsp(void);
void	Mn_PReleaseReq(void);
void	Mn_PReleaseEnd(void);
void	Mn_PLinkCut(void);
void	Mn_PRadioCut(void);
void	Mn_PRadioEnd(void);
void	Mn_PRadioRelease(void);
void	Mn_PTC309PTo(void);
void	Mn_PRadioInit(void);
void	Mn_Bst_Ho(void);
void	Mn_PLocHakInit(void);
void	Mn_PLocHakRel(void);
BYTE 	Mn_HakLocCut(void);
void	Mn_PowerSearch(void);
void	Mn_HTCHDatReq(void);

/*--------------------------------------------------------------*/
/*		[ MN80PUB5.C ]					*/
/*--------------------------------------------------------------*/
void	Mn_PLocReg(void);
U1		Mn_PLocReglChk(void);
void	Mn_PAccTimer(void);
void	Mn_PLocSyncNG(void);
void	Mn_PLocDLSet(void);
void	Mn_PLocAcpt(void);
void	Mn_PLocNG(void);
void	Mn_PLocDLNG(void);
void	Mn_PLocRRel(void);
void	Mn_PLocFrcRel(void);
void	Mn_PLocFrcInit(void);
BYTE	Mn_PCallReLoc(void);
BYTE	Mn_EstCallLoc(void);
BYTE	Mn_RInitCallLoc(BYTE);
void	Mn_PBSRetryCheck(void);
void	Mn_RetryNgSet(void);
void	Mn_HTxComp(void);

U1*	Mn_GetSpecState(U1 mod);			//Added by chenxl
void MnBearerSet(U1 *mes,U2 len,U1 *des);

#ifdef SIMU_ON_PC

void ph_ini_req(void);					//Simulator of L1
//void cch_m_req(BYTE kind, BYTE freq, BYTE thresh, BYTE gain, BYTE flg);
void cch_m_req2(BYTE kind, BYTE freq, BYTE thresh, BYTE gain, BYTE flg);
//void cch_m_stp(void);
void cch_m_stp2(void);
//void cch_est_req(BYTE freq, BYTE *cs_id, BYTE gain);
//void slp_t_req( WORD xtal_cnt, BYTE id );
void slp_c_req( BYTE cmd );
void own_pch_req( BYTE frame_cnt );
void another_cch_get(void);
//void RfInit(void);

#endif //endof SIMU_ON_PC

#ifdef __cplusplus
	}
#endif
#endif	//_MN_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -