📄 mm32ev.c
字号:
/*************************************************************************************
FUNCTION: mm_LocReg_rej
DESCRIPTION:
MM Location registration reject , DOWNLINK
Triggered by MNMM_LOCATION_REGISTRATION_REJ primitive
ARGUMENTS PASSED:
None.
RETURN VALUE:
None
Revision History:
Modification Tracking
Modifier Date Number Description of Changes
------------------------- ------------ ---------- ------------------------------
Chen Xiangli 08/06/2003 Initial version.
**************************************************************************************/
void mm_LocReg_rej( void )
{
_BOOL ret;
OUT_PRIEVT->buf_adr = m_hntbuf();
ret = mm_unpack_dld(mm_loc_reg_rej_msgtype ,sizeof(mm_loc_reg_rej_msgtype)/sizeof(MM_INFOELE));
m_frebuf( (U1 *)IN_DLDEVT->msg_adr );
if (ret)
{
OUT_PRIEVT->add_dat = IN_MSGDAT->dat[3] & ~BIT8; //dat[0]: protocol ID
//dat[1]: message type
//dat[2]: information element type ID ,CAUSE :0x08
//dat[3]: cause content
if(OUT_PRIEVT->add_dat > 1)
{
m_frebuf(OUT_PRIEVT->buf_adr);
return;
}
}
else
{
m_frebuf( OUT_PRIEVT->buf_adr );
return;
}
m_frebuf( OUT_PRIEVT->buf_adr ); //not uesed at the following , so free the buffer.
OUT_PRIEVT->buf_adr = ZERO;
OUT_PRIEVT->inf_len = ZERO_WORD;
OUT_PRIEVT->inf_adr = ZERO;
mm_pri_req(MMMN_LOCATION_REGISTRATION_REJ);
mm_stop_time( TM303PON ); /*
60s , Start at: location registration request
Stop at: 1.Location registration ack
2.Location registration reject
*/
Mm_bLocReg = FALSE;
switch ( OUT_PRIEVT->add_dat ) /* Cause*/
{
case 0 : /* Location registration retry possible*/
mm_set_time( TM304PON ); /*
100s , start at: Location registrtion reject reception ,adn retry possible
stop at: N/A
*/
Mm_sts = ST_LOCREG_R;
break;
case 1 : /* Location regstration retry impossible*/
Mm_sts = ST_NULL;
break;
}
}
/*
Function: MM Function request response , DOWNLINK
Modifier Date
Chenxl 2003/8/6
*/
/*************************************************************************************
FUNCTION: mm_fnc_rep
DESCRIPTION:
MM Function request response , DOWNLINK
Triggered by MNMM_FUNCTION_REP primitive
ARGUMENTS PASSED:
None.
RETURN VALUE:
None
Revision History:
Modification Tracking
Author Date Number Description of Changes
------------------------- ------------ ---------- ------------------------------
Chen Xiangli 08/06/2003 Initial version.
**************************************************************************************/
void mm_fnc_rep( void )
{
_BOOL ret;
U1 chk = 0;
U1 *p;
const MM_INFOELE* pInfoEle;
if (!( Mm_tim & TM301PON )) /* Timer TM301P has been time out ,or it's something wrong */
{
m_frebuf( (U1 *)IN_DLDEVT->msg_adr );
return;
}
mm_stop_time( TM301PON ); /*
1s , start at: MM function request transmission
stop at: MM function request response reception
*/
OUT_PRIEVT->buf_adr = m_hntbuf();
ret = mm_unpack_dld(mm_fnc_rep_msgtype , sizeof(mm_fnc_rep_msgtype)/sizeof(MM_INFOELE));
m_frebuf( (U1 *)IN_DLDEVT->msg_adr );
if ( !ret )
{
m_frebuf( OUT_PRIEVT->buf_adr );
mm_pri_req(MMMN_FUNCTION_REQ_FAIL);
return;
}
p = OUT_PRIEVT->inf_adr;
while(p < (OUT_PRIEVT->inf_adr + OUT_PRIEVT->inf_len))
{
if(p[0] & 0x80) //single octet
{
if ((p[0] & 0xF0) == (MMINFOELE_ACTIVE_AUTH & 0xF0)) // active authentication,
{ //which is used to identify whether or not authentication is performed during communication
chk |= BIT2;
p++;
}
}
else /* multiple octet */
{
switch ( p[0] )
{
case MMINFOELE_AUTHTYPE:
chk |= BIT1;
break;
case MMINFOELE_PAGING_AREA:
chk |= BIT3;
break;
}
pInfoEle = (MM_INFOELE*)mm_search_info_ele(p[0] ,mm_fnc_rep_msgtype , sizeof(mm_fnc_rep_msgtype)/sizeof(MM_INFOELE));
if(NULL == pInfoEle) //must something wrong
{
m_frebuf( OUT_PRIEVT->buf_adr );
return;
}
if(pInfoEle->binfo_len_fixed)
p = (U1*)pInfoEle->info_len;
else
p += p[1]+2;
}
}
if (( Mm_fncrq & chk ) != Mm_fncrq ) /*Function Request Response is not equal to the request content*/
{
m_frebuf(OUT_PRIEVT->buf_adr);
mm_pri_req(MMMN_FUNCTION_REQ_FAIL);
return;
}
mm_pri_req(MMMN_FUNCTION_RES);
}
/*************************************************************************************
FUNCTION: mm_tm_301p
DESCRIPTION:
MM Timer 301P Time out procedure
ARGUMENTS PASSED:
None.
RETURN VALUE:
None
Revision History:
Modification Tracking
Author Date Number Description of Changes
------------------------- ------------ ---------- ------------------------------
Chen Xiangli 08/06/2003 Initial version.
**************************************************************************************/
void mm_tm_301p( void )
{
Mm_tim &= ~TM301PON;
OUT_PRIEVT->buf_adr = ZERO;
OUT_PRIEVT->inf_len = ZERO_WORD;
OUT_PRIEVT->inf_adr = ZERO;
mm_pri_req(MMMN_FUNCTION_REQ_FAIL);
}
/*************************************************************************************
FUNCTION: mm_tm_303p
DESCRIPTION:
MM Timer 303p time out procedure
ARGUMENTS PASSED:
None.
RETURN VALUE:
None
Revision History:
Modification Tracking
Author Date Number Description of Changes
------------------------- ------------ ---------- ------------------------------
Chen Xiangli 08/06/2003 Initial version.
**************************************************************************************/
void mm_tm_303p( void )
{
Mm_tim &= ~TM303PON;
OUT_PRIEVT->buf_adr = ZERO;
OUT_PRIEVT->inf_len = ZERO_WORD;
OUT_PRIEVT->inf_adr = ZERO;
mm_pri_req(MMMN_LOCATION_REGISTRATION_FAIL);
}
/*************************************************************************************
FUNCTION: mm_tm_304p
DESCRIPTION:
MM Timer 304p time out procedure
ARGUMENTS PASSED:
None.
RETURN VALUE:
None
Revision History:
Modification Tracking
Author Date Number Description of Changes
------------------------- ------------ ---------- ------------------------------
Chen Xiangli 08/06/2003 Initial version.
**************************************************************************************/
void mm_tm_304p( void )
{
Mm_tim &= ~TM304PON;
mm_LocReg_req();
}
/*************************************************************************************
FUNCTION: mm_init
DESCRIPTION:
MM Initialization
Triggered by EINITL3 event
ARGUMENTS PASSED:
None.
RETURN VALUE:
None
Revision History:
Modification Tracking
Author Date Number Description of Changes
------------------------- ------------ ---------- ------------------------------
Chen Xiangli 08/06/2003 Initial version.
**************************************************************************************/
void mm_init( void )
{
mm_stop_time( 0xff );
Mm_bLocReg = FALSE;
}
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -