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

📄 cdmatcap.c

📁 <B>CDMA的MAP协议及以下层协议的解析
💻 C
字号:
#include "stdlib.h"#include "asn1.h"#include "CDMA_ext.h"#include "CDMAtcap.h"#include "ss7Msg.h"#include "simslog.h"#include "CDMA_tcap_def.c"#include "CDMA_tcap_def.h"#include "CDMA_map_def.c"#include "CDMA_map_def.h"#include "CDMA_pos.h"int DecodeOperationEle(unsigned char *msgbuf, int msglen, int *msgptr, TYPE_DECODE_DEF *typeDecodeDef,                       ELEMENT_DEF *elementDef, DECODED_ELEMENT *decodedMsg,                       DECODE_CONTEXT *context, int *curPos){    context->op = decodedMsg[*curPos].u.strVal[1];	return 0;}int DecodeOpArgList(unsigned char *msgbuf, int msglen, int *msgptr, TYPE_DECODE_DEF *typeDecodeDef,                    ELEMENT_DEF *elementDef, DECODED_ELEMENT *decodedMsg,                    DECODE_CONTEXT *context, int *curPos, ARG_LIST *argList){	for (; argList->op != END_PARA; argList++) {		if (argList->op == context->op)	{			if(!argList->opArgs) { return -1; }			else {				/* the following is modified by fanyonggang */			   if( argList->opArgs->type == -1 ) { return 0;}			   else 			   	 return typeDecodeDef[argList->opArgs->type].decodeFunc(msgbuf, msglen, msgptr, typeDecodeDef,			   		argList->opArgs, decodedUsrPartMsg, context, &usrPartcurPos);			}		}	}   return 0;}/* 解码函数:Invoke类型Op的Parameter,是一个ANY类型,DEPENDS ON Operation和SSN */int DecodeCdmaInvokeParameterEle (unsigned char *msgbuf, int msglen, int *msgptr, TYPE_DECODE_DEF *typeDecodeDef,                              ELEMENT_DEF *elementDef, DECODED_ELEMENT *decodedMsg,                              DECODE_CONTEXT *context, int *curPos){	int result;	int pos=0;	TYPE_DECODE_DEF cdmaTypeDecodeDef[]= { CDMA_EXT_TYPE_DECODE_DEF};	int ormsgptr = *msgptr;	pos = posIndex[CDMA_POS_OPCODE];	if(pos <= 0)  return 0;		DecodeOperationEle(msgbuf, msglen, &ormsgptr, typeDecodeDef, elementDef, decodedMsg, context, &pos);		result = DecodeOpArgList(msgbuf, msglen, msgptr, cdmaTypeDecodeDef,			elementDef, decodedTCAPMsg, context, curPos, CDMA_REQ_OP_ARRAY);		return 1;}/* 解码函数:Result类型Op的Parameter,是一个ANY类型,DEPENDS ON Operation和SSN */int DecodeCdmaResultParameterEle (unsigned char *msgbuf, int msglen, int *msgptr, TYPE_DECODE_DEF *typeDecodeDef,                              ELEMENT_DEF *elementDef, DECODED_ELEMENT *decodedMsg,                              DECODE_CONTEXT *context, int *curPos){	TYPE_DECODE_DEF cdmaTypeDecodeDef[]= { CDMA_EXT_TYPE_DECODE_DEF};    return DecodeChoiceEle (msgbuf, msglen, msgptr, cdmaTypeDecodeDef, CDMA_Reponse_Param_Arg,     			                decodedUsrPartMsg, context, &usrPartcurPos);	    			               	}/* * @ func: DecodeTcapMsg * @ note: decodedTCAPMsg 和 decodedMapMsg 中 第一个位置(即索引号为0的地方用于解码无此参数指针项) * @ param: context 解码上下文,其中的参数来自SCCP层解码结果 * @ param: msgbuf 原始信令存储位置指针 * @ param: msglen 原始信令MSU长度 * @ param: msgptr 当前解码位置指针 * @ return: 1为正常, 其他异常 */ int DecodeCdmaTcapMsg(unsigned char *msgbuf, int msglen, int *msgptr, DECODE_CONTEXT *context){	int i, ret;		TYPE_DECODE_DEF CdmaTcapTypeDecodeDef[] = { CDMA_TCAP_TYPE_DECODE_DEF } ;				for(i=0;i<MAX_POS_INDEX;i++) posIndex[i]=0;			tcapcurPos=1; usrPartcurPos=1; 	    	ret =  DecodeASN1(msgbuf, msglen, msgptr, CdmaTcapTypeDecodeDef, cdma_tcap_ElementDef,		decodedTCAPMsg, context, &tcapcurPos) ; 					return ret;	}

⌨️ 快捷键说明

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