/******************************************************************** Copyright ?2007 LGC Wireless, Inc. All rights reserved File Name: aifg_msg.h Description: Definition of message structure of AIFG module Version: v9.0.0 Author: Roy Jiang Create Date: 2007-3-6 History: 2007-3-6 v9.0.0 Create *********************************************************************/ #ifndef _WXC2_AIFG_MSG_H #define _WXC2_AIFG_MSG_H #include "aifg_ie.h" #define AIFG_MAX_MSG_IE 24 /**********************************PUBLIC**********************************/ //local message id typedef enum { //DTAP AIFG_MSG_ID_TRANSPARENT_DTAP = 0x00, //TRANSPARENT Dtap message at BSC side //RR AIFG_MSG_ID_PAGING_RESP = 0x01, //Paging response AIFG_MSG_ID_RR_HO_CMD = 0x02, //RR Handover command //MM AIFG_MSG_ID_IMSI_DETACH_IND = 0x03, //IMSI detach indication AIFG_MSG_ID_LU_ACCEPT = 0x04, //Location updating accept AIFG_MSG_ID_LU_REJECT = 0x05, //Location updating reject AIFG_MSG_ID_LU_REQUEST = 0x06, //Location updating request AIFG_MSG_ID_AUTH_REJECT = 0x07, //Authentication reject AIFG_MSG_ID_AUTH_REQUEST = 0x08, //Authentication request AIFG_MSG_ID_AUTH_RESPONSE = 0x09, //Authentication response AIFG_MSG_ID_ID_REQUEST = 0x0A, //Identity request AIFG_MSG_ID_ID_RESPONSE = 0x0B, //Identity response AIFG_MSG_ID_TMSI_REALLOC_CMD = 0x0C, //TMSI reallocation command AIFG_MSG_ID_TMSI_REALLOC_CMP = 0x0D, //TMSI reallocation complete AIFG_MSG_ID_CM_ACCEPT = 0x0E, //CM service accept AIFG_MSG_ID_CM_REJECT = 0x0F, //CM service reject AIFG_MSG_ID_CM_ABORT = 0x10, //CM service abort AIFG_MSG_ID_CM_REQUEST = 0x11, //CM service request AIFG_MSG_ID_CM_PROMPT = 0x12, //CM service prompt AIFG_MSG_ID_CM_REEST_REQUEST = 0x13, //CM re-establishment request AIFG_MSG_ID_ABORT = 0x14, //Abort AIFG_MSG_ID_MM_NULL = 0x15, //MM NULL AIFG_MSG_ID_MM_STATUS = 0x16, //MM status AIFG_MSG_ID_MM_INFO = 0x17, //MM information //CC AIFG_MSG_ID_ALERTING = 0x18, //Alerting AIFG_MSG_ID_CALL_CONFIRMED = 0x19, //Call confirmed AIFG_MSG_ID_CALL_PROCEEDING = 0x1A, //Call proceeding AIFG_MSG_ID_CONNECT = 0x1B, //Connect AIFG_MSG_ID_CONNECT_ACK = 0x1C, //Connect ack AIFG_MSG_ID_EMERGENCY_SETUP = 0x1D, //Emergency setup AIFG_MSG_ID_PROGRESS = 0x1E, //Progress AIFG_MSG_ID_SETUP = 0x1F, //Setup AIFG_MSG_ID_MODIFY = 0x20, //Modify AIFG_MSG_ID_MODIFY_CMP = 0x21, //Modify complete AIFG_MSG_ID_MODIFY_REJECT = 0x22, //Modify reject AIFG_MSG_ID_USER_INFO = 0x23, //User information AIFG_MSG_ID_HOLD = 0x24, //Hold AIFG_MSG_ID_HOLD_ACK = 0x25, //Hold ack AIFG_MSG_ID_HOLD_REJECT = 0x26, //Hold reject AIFG_MSG_ID_RETRIEVE = 0x27, //Retrieve AIFG_MSG_ID_RETRIEVE_ACK = 0x28, //Retrieve ack AIFG_MSG_ID_RETRIEVE_REJECT = 0x29, //Retrieve reject AIFG_MSG_ID_DISCONNECT = 0x2A, //Disconnect AIFG_MSG_ID_RELEASE = 0x2B, //Release AIFG_MSG_ID_RELEASE_CMP = 0x2C, //Release complete AIFG_MSG_ID_CONGESTION_CTRL = 0x2D, //Congestion control AIFG_MSG_ID_NOTIFY = 0x2E, //Notify AIFG_MSG_ID_STATUS = 0x2F, //Status AIFG_MSG_ID_STATUS_ENQ = 0x30, //Status enquiry AIFG_MSG_ID_START_DTMF = 0x31, //Start DTMF AIFG_MSG_ID_STOP_DTMF = 0x32, //Stop DTMF AIFG_MSG_ID_STOP_DTMF_ACK = 0x33, //Stop DTMF ack AIFG_MSG_ID_START_DTMF_ACK = 0x34, //Start DTMF ack AIFG_MSG_ID_START_DTMF_REJECT = 0x35, //Start DTMF reject AIFG_MSG_ID_FACILITY = 0x36, //Facility //SS AIFG_MSG_ID_FACILITY_SS = 0x37, //Facility SS AIFG_MSG_ID_REGISTER = 0x38, //Register AIFG_MSG_ID_RELEASE_CMP_SS = 0x39, //Release Completed SS //SMS AIFG_MSG_ID_RP_DATA = 0x3A, //RP-DATA AIFG_MSG_ID_RP_ACK = 0x3B, //RP-ACK AIFG_MSG_ID_RP_ERROR = 0x3C, //RP-ERROR AIFG_MSG_ID_RP_SMMA = 0x3D, //RP-SMMA //BSSMAP //Global AIFG_MSG_ID_BLOCK = 0x3E, //Block AIFG_MSG_ID_BLOCK_ACK = 0x3F, //Blocking ack AIFG_MSG_ID_UNBLOCK = 0x40, //Unblock AIFG_MSG_ID_UNBLOCK_ACK = 0x41, //Unblocking ack AIFG_MSG_ID_CC_GROUP_BLK = 0x42, //Circuit group block AIFG_MSG_ID_CC_GROUP_BLK_ACK = 0x43, //Circuit group block ack AIFG_MSG_ID_CC_GROUP_UNBLK = 0x44, //Circuit group unblock AIFG_MSG_ID_CC_GROUP_UNBLK_ACK = 0x45, //Circuit group unblock ack AIFG_MSG_ID_RESRC_REQ = 0x46, //Resource request AIFG_MSG_ID_RESRC_IND = 0x47, //Resource indication AIFG_MSG_ID_RESET = 0x48, //Reset AIFG_MSG_ID_RESET_ACK = 0x49, //Reset ack AIFG_MSG_ID_PAGING = 0x4A, //Paging AIFG_MSG_ID_OVERLOAD = 0x4B, //Overload AIFG_MSG_ID_RESET_CC = 0x4C, //Reset circuit AIFG_MSG_ID_RESET_CC_ACK = 0x4D, //Reset circuit ack AIFG_MSG_ID_HO_CAN_ENQ = 0x4E, //Handover candidate enquire AIFG_MSG_ID_HO_CAN_RESP = 0x4F, //Handover candidate response //Dedicated AIFG_MSG_ID_ASSIGN_REQ = 0x50, //Assign request AIFG_MSG_ID_ASSIGN_CMP = 0x51, //Assign complete AIFG_MSG_ID_ASSIGN_FAIL = 0x52, //Assign failure AIFG_MSG_ID_HO_REQUEST = 0x53, //Handover request AIFG_MSG_ID_HO_REQUIRED = 0x54, //Handover required AIFG_MSG_ID_HO_REQ_ACK = 0x55, //Handover request ack AIFG_MSG_ID_HO_CMD = 0x56, //Handover command AIFG_MSG_ID_HO_CMP = 0x57, //Handover complete AIFG_MSG_ID_HO_SUC = 0x58, //Handover succeeded AIFG_MSG_ID_HO_FAIL = 0x59, //Handover failure AIFG_MSG_ID_HO_PERFORMED = 0x5A, //Handover performed AIFG_MSG_ID_HO_REQ_REJ = 0x5B, //Handover required reject AIFG_MSG_ID_HO_DETECT = 0x5C, //Handover detect AIFG_MSG_ID_CLR_CMD = 0x5D, //Clear command AIFG_MSG_ID_CLR_CMP = 0x5E, //Clear complete AIFG_MSG_ID_CLR_REQ = 0x5F, //Clear request AIFG_MSG_ID_SAPI_REJ = 0x60, //SAPI 'n' reject AIFG_MSG_ID_CONFUSION = 0x61, //Confusion AIFG_MSG_ID_SUSPEND = 0x62, //Suspend AIFG_MSG_ID_RESUME = 0x63, //Resume AIFG_MSG_ID_LOC_INFO_CMD = 0x64, //Location information command AIFG_MSG_ID_LOC_INFO_RPT = 0x65, //Location information report AIFG_MSG_ID_MSC_INVK_TRACE = 0x66, //MSC invoke trace AIFG_MSG_ID_BSC_INVK_TRACE = 0x67, //BSC invoke trace AIFG_MSG_ID_UNEQUIP_CC = 0x68, //Unequipped circuit AIFG_MSG_ID_CHANGE_CC = 0x69, //Change circuit AIFG_MSG_ID_CHANGE_CC_ACK = 0x6A, //Change circuit ack AIFG_MSG_ID_CIPHER_MODE_CMD = 0x6B, //Cipher mode command AIFG_MSG_ID_CM_UPDATE = 0x6C, //Classmark update AIFG_MSG_ID_CIPHER_MODE_CMP = 0x6D, //Cipher mode complete AIFG_MSG_ID_QUEUE_IND = 0x6E, //Queueing indication AIFG_MSG_ID_L3_INFO = 0x6F, //Complete layer 3 information AIFG_MSG_ID_CLASSMARK_REQ = 0x70, //Classmark request AIFG_MSG_ID_CIPHER_MODE_REJ = 0x71, //Cipher mode reject AIFG_MSG_ID_LOAD_IND = 0x72, //Load indication AIFG_MSG_ID_LSA_INFO = 0x73, //LSA INFORMATION AIFG_MSG_ID_IGNORED_MSG = 0xFF, //Ignored message, no need to process }aifg_msg_id; typedef enum { AIFG_MSG_DTAP = 1, AIFG_MSG_BSSMAP = 0, }aifg_msg_protocol; typedef enum { //There are protocol defined, see GSM 04.08 AIFG_PD_DTAP_MM = 0x05, AIFG_PD_DTAP_CC = 0x03, AIFG_PD_DTAP_SS = 0x0B, AIFG_PD_DTAP_SMS = 0x09, //These are module defined AIFG_PD_BSSMAP_GLOBAL = 0xF0, AIFG_PD_BSSMAP_DEDICATED = 0xF1, }aifg_pd; //Message struct for encode----------------------------------------------------- //DTAP-------------------------------------------------------------------------- typedef struct{ aifg_ie_dt_lai lai; aifg_ie_mobileId mobileId; aifg_ie_dt_followOnProceed followOnProceed; aifg_ie_dt_CTSPermission CTSPermission; }aifg_msg_dt_luAccept; typedef struct{ aifg_ie_dt_rejectCause rejectCause; }aifg_msg_dt_cmReject; typedef aifg_msg_dt_cmReject aifg_msg_dt_luReject; typedef aifg_msg_dt_cmReject aifg_msg_dt_abort; typedef aifg_msg_dt_cmReject aifg_msg_dt_mmStatus; typedef struct{ aifg_ie_dt_luType luType; aifg_ie_dt_lai lai; aifg_ie_dt_cipherKey cipherKey; aifg_ie_mobileId mobileId; aifg_ie_dt_cmInfo1 cmInfo1; }aifg_msg_dt_LURequest; typedef struct{ aifg_ie_dt_cipherKey cipherKey; aifg_ie_dt_authRAND authRAND; }aifg_msg_dt_authRequest; typedef struct{ aifg_ie_dt_authSRES authSRES; }aifg_msg_dt_authResp; typedef struct{ aifg_ie_dt_idType idType; }aifg_msg_dt_idRequest; typedef struct{ aifg_ie_mobileId mobileId; }aifg_msg_dt_idResp; typedef struct{ aifg_ie_dt_cmInfo1 cmInfo1; aifg_ie_mobileId mobileId; }aifg_msg_dt_imsiDetachInd; typedef struct{ aifg_ie_dt_lai lai; aifg_ie_mobileId mobileId; }aifg_msg_dt_tmsiCmd; typedef struct{ aifg_ie_dt_cipherKey cipherKey; aifg_ie_dt_cmInfo2 cmInfo2; aifg_ie_mobileId mobileId; aifg_ie_dt_lai lai; }aifg_msg_dt_cmReEstReq; typedef struct{ aifg_ie_dt_cmType cmType; aifg_ie_dt_cipherKey cipherKey; aifg_ie_dt_cmInfo2 cmInfo2; aifg_ie_mobileId mobileId; aifg_ie_dt_priority priority; }aifg_msg_dt_cmRequest; typedef struct{ aifg_ie_dt_nwName fullName; aifg_ie_dt_nwName shortName; aifg_ie_dt_timeZone timeZone; aifg_ie_dt_tzTime tzTime; aifg_ie_dt_lsaId lsaId; }aifg_msg_dt_mmInfo; //cc typedef struct{ aifg_ie_dt_facility facility; aifg_ie_dt_progInd progInd; aifg_ie_dt_uu uu; }aifg_msg_dt_alert; typedef struct{ aifg_ie_dt_rpInd rpInd; aifg_ie_dt_bc bc1; aifg_ie_dt_bc bc2; aifg_ie_dt_cause cause; aifg_ie_dt_ccCap ccCap; }aifg_msg_dt_callConfirm; typedef struct{ aifg_ie_dt_rpInd rpInd; aifg_ie_dt_bc bc1; aifg_ie_dt_bc bc2; aifg_ie_dt_facility facility; aifg_ie_dt_progInd progInd; aifg_ie_dt_priority priority; }aifg_msg_dt_callProceed; typedef struct{ aifg_ie_dt_facility facility; aifg_ie_dt_progInd progInd; aifg_ie_dt_connNum connNum; aifg_ie_dt_connSubAddr connSubAddr; aifg_ie_dt_uu uu; }aifg_msg_dt_connect; typedef struct{ aifg_ie_dt_bc bc; }aifg_msg_dt_eSetup; typedef struct{ aifg_ie_dt_progInd progInd; aifg_ie_dt_uu uu; }aifg_msg_dt_progress; typedef struct{ aifg_ie_dt_rpInd bc_rpInd; aifg_ie_dt_bc bc1; aifg_ie_dt_bc bc2; aifg_ie_dt_facility facility; aifg_ie_dt_progInd progInd; aifg_ie_dt_signal signal; aifg_ie_dt_callingNum callingNum; aifg_ie_dt_callingSubAddr callingSubAddr; aifg_ie_dt_calledNum calledNum; aifg_ie_dt_calledSubAddr calledSubAddr; aifg_ie_dt_redirNum redirNum; aifg_ie_dt_redirSubAddr redirSubAddr; aifg_ie_dt_rpInd llc_rpInd; aifg_ie_dt_loComp loComp1; aifg_ie_dt_loComp loComp2; aifg_ie_dt_rpInd hlc_rpInd; aifg_ie_dt_hiComp hiComp1; aifg_ie_dt_hiComp hiComp2; aifg_ie_dt_uu uu; aifg_ie_dt_priority priority; aifg_ie_dt_alertPattern alertPattern; }aifg_msg_dt_setup; typedef struct{ aifg_ie_dt_bc bc; aifg_ie_dt_loComp loComp; aifg_ie_dt_hiComp hiComp; aifg_ie_dt_revCallDir revCallDir; }aifg_msg_dt_modify; typedef aifg_msg_dt_modify aifg_msg_dt_modifyCmp; typedef struct{ aifg_ie_dt_bc bc; aifg_ie_dt_cause cause; aifg_ie_dt_loComp loComp; aifg_ie_dt_hiComp hiComp; }aifg_msg_dt_modifyRej; typedef struct{ aifg_ie_dt_uu uu; aifg_ie_dt_moreData moreData; }aifg_msg_dt_userInfo; typedef struct{ aifg_ie_dt_cause cause; }aifg_msg_dt_holdRej; typedef aifg_msg_dt_holdRej aifg_msg_dt_retrieveRej; typedef struct{ aifg_ie_dt_cause cause; aifg_ie_dt_facility facility; aifg_ie_dt_progInd progInd; aifg_ie_dt_uu uu; aifg_ie_dt_ssVer ssVer; }aifg_msg_dt_disconnect; typedef struct{ aifg_ie_dt_cause cause1; aifg_ie_dt_cause cause2; aifg_ie_dt_facility facility; aifg_ie_dt_uu uu; }aifg_msg_dt_release; typedef struct{ aifg_ie_dt_cause cause; aifg_ie_dt_facility facility; aifg_ie_dt_uu uu; }aifg_msg_dt_releaseCmp; typedef struct{ aifg_ie_dt_congestLevel congestLevel; aifg_ie_dt_cause cause; }aifg_msg_dt_congestCtrl; typedef struct{ aifg_ie_dt_notificationInd notificationInd; }aifg_msg_dt_notify; typedef struct{ aifg_ie_dt_cause cause; aifg_ie_dt_callStat callStat; aifg_ie_dt_auxStat auxStat; }aifg_msg_dt_status; typedef struct{ aifg_ie_dt_keypad keypad; }aifg_msg_dt_startDTMF; typedef aifg_msg_dt_startDTMF aifg_msg_dt_startDTMF_ack; typedef aifg_msg_dt_holdRej aifg_msg_dt_startDTMF_rej; typedef struct{ aifg_ie_dt_facility facility; }aifg_msg_dt_facility; typedef struct{ aifg_ie_dt_cipherKey cipherKey; aifg_ie_dt_cmInfo2 cmInfo2; aifg_ie_mobileId mobileId; }aifg_msg_dt_pagingResp; typedef struct{ aifg_ie_dt_cause cause; aifg_ie_dt_facility facility; }aifg_msg_dt_releaseCompSS; typedef struct{ aifg_ie_dt_facility facility; aifg_ie_dt_ssVer ssVer; }aifg_msg_dt_register; typedef struct{ aifg_ie_dt_facility facility; }aifg_msg_dt_facilitySS; typedef struct{ BYTE ref; aifg_ie_dt_rpAddr moAddr; aifg_ie_dt_rpAddr mtAddr; aifg_ie_dt_rpUD data; }aifg_msg_dt_rpData; typedef struct{ BYTE ref; }aifg_msg_dt_rpSMMA; typedef struct{ BYTE ref; aifg_ie_dt_rpUD data; }aifg_msg_dt_rpAck; typedef struct{ BYTE ref; aifg_ie_dt_rpCause cause; aifg_ie_dt_rpUD data; }aifg_msg_dt_rpError; //BSSMAP---------------------------------------------------------------------- typedef struct{ BYTE id; //message id union{ aifg_msg_dt_LURequest luRequest; aifg_msg_dt_cmRequest cmRequest; aifg_msg_dt_cmReEstReq cmReEstReq; aifg_msg_dt_imsiDetachInd imsiDetachInd; aifg_msg_dt_pagingResp pagingResp; }msg; }aifg_msg_bm_l3msg; typedef struct { aifg_ie_bm_channelType channelType; aifg_ie_bm_L3HeaderInfo l3HeaderInfo; aifg_ie_bm_priority priority; aifg_ie_bm_cic cic; aifg_ie_bm_dtx dtxFlag; aifg_ie_bm_bandUsed bandUsed; aifg_ie_bm_cmInfo2 cm2; aifg_ie_bm_groupRef groupRef; aifg_ie_bm_talkerFlag talkerFlag; aifg_ie_bm_cfgEvoInd cfgEvoInd; }aifg_msg_bm_assignReq; typedef struct { aifg_ie_bm_rrCause rrCause; aifg_ie_bm_cic cic; aifg_ie_bm_cellId cellId; aifg_ie_bm_chosenChannel chosenChannel; aifg_ie_bm_chosenEncrypt chosenEncrypt; aifg_ie_bm_circuitPool circuitPool; aifg_ie_bm_speechVer speechVer; aifg_ie_bm_lsaId lsaId; }aifg_msg_bm_assignComplete; typedef struct { aifg_ie_bm_rrCause rrCause; aifg_ie_bm_cause cause; aifg_ie_bm_circuitPool circuitPool; aifg_ie_bm_circuitPoolList circuitPoolList; }aifg_msg_bm_assignFailure; typedef struct { aifg_ie_bm_cic cic; aifg_ie_bm_cause cause; aifg_ie_bm_connRelReq connRelReq; }aifg_msg_bm_block; typedef struct { aifg_ie_bm_cic cic; }aifg_msg_bm_blockAck; typedef aifg_msg_bm_blockAck aifg_msg_bm_unblock; typedef aifg_msg_bm_blockAck aifg_msg_bm_unblockAck; typedef struct { aifg_ie_bm_channelType channelType; aifg_ie_bm_encryptInfo encryptInfo; union{ BYTE ind; aifg_ie_bm_cmInfo1 cm1; aifg_ie_bm_cmInfo2 cm2; }cmInfo; aifg_ie_bm_cellId servingCellId; aifg_ie_bm_priority priority; aifg_ie_bm_cic cic; aifg_ie_bm_dtx dtxFlag; aifg_ie_bm_cellId targetCellId; aifg_ie_bm_bandUsed bandUsed; aifg_ie_bm_cause cause; // aifg_ie_bm_cmInfo3 cm3; aifg_ie_bm_curChannelType1 curChannelType1; aifg_ie_bm_speechVer speechVer; aifg_ie_bm_groupRef gourpRef; aifg_ie_bm_talkerFlag talkerFlag; aifg_ie_bm_cfgEvoInd cfgEvoInd; aifg_ie_bm_chosenEncrypt chosenEncrypt; aifg_ie_bm_bssOldtoNew bssOldtoNew; aifg_ie_bm_lsaInfo lsaInfo; }aifg_msg_bm_HORequest; typedef struct { aifg_ie_bm_cause cause; aifg_ie_bm_respReq respReq; aifg_ie_bm_cidList prefer_cidList; aifg_ie_bm_circuitPoolList circuitPoolList; aifg_ie_bm_curChannelType1 curChannelType1; aifg_ie_bm_speechVer speechVer; aifg_ie_bm_queuingInd queuingInd; aifg_ie_bm_bssOldtoNew bssOldtoNew; }aifg_msg_bm_HORequired; typedef struct { struct{ BYTE *ptr; BYTE len; }l3Info; aifg_ie_bm_chosenChannel chosenChannel; aifg_ie_bm_chosenEncrypt chosenEncrypt; aifg_ie_bm_circuitPool circuitPool; aifg_ie_bm_speechVer speechVer; aifg_ie_bm_cic cic; aifg_ie_bm_lsaId lsaId; }aifg_msg_bm_HORequestAck; typedef struct { struct{ BYTE *ptr; BYTE len; }l3Info; aifg_ie_bm_cellId cellId; }aifg_msg_bm_HOCmd; typedef struct { aifg_ie_bm_rrCause rrCause; }aifg_msg_bm_HOComplete; typedef struct { aifg_ie_bm_msNum msNum; aifg_ie_bm_cidList cidList; aifg_ie_bm_cellId cellId; }aifg_msg_bm_HOCandidateEnq; typedef struct { aifg_ie_bm_msNum msNum; aifg_ie_bm_cellId cellId; }aifg_msg_bm_HOCandidateResp; typedef struct { aifg_ie_bm_cause cause; aifg_ie_bm_rrCause rrCause; aifg_ie_bm_circuitPool circuitPool; aifg_ie_bm_circuitPoolList circuitPoolList; }aifg_msg_bm_HOFailure; typedef struct { aifg_ie_bm_periodicity periodicity; aifg_ie_bm_resrcIndMethod resrcIndMethod; aifg_ie_bm_cellId cellId; aifg_ie_bm_extResourceInd extResrcInd; }aifg_msg_bm_resrcReq; typedef struct { aifg_ie_bm_resrcIndMethod resrcIndMethod; aifg_ie_bm_resrcAvail resrcAvail; aifg_ie_bm_cellId cellId; aifg_ie_bm_totalResrc totalResrc; }aifg_msg_bm_resrcInd; typedef struct { aifg_ie_bm_imsi imsi; aifg_ie_bm_tmsi tmsi; aifg_ie_bm_cidList cidList; aifg_ie_bm_channelNeeded channelNeeded; aifg_ie_bm_eMLPP eMLPP; }aifg_msg_bm_paging; typedef struct { aifg_ie_bm_cause cause; }aifg_msg_bm_clearReq; typedef struct { aifg_ie_bm_L3HeaderInfo l3HeaderInfo; aifg_ie_bm_cause cause; }aifg_msg_bm_clearCmd; typedef aifg_msg_bm_clearReq aifg_msg_bm_reset; typedef struct { aifg_ie_bm_cause cause; aifg_ie_bm_cellId cellId; aifg_ie_bm_chosenChannel chosenChannel; aifg_ie_bm_chosenEncrypt chosenEncrypt; aifg_ie_bm_speechVer speechVer; aifg_ie_bm_lsaId lsaId; }aifg_msg_bm_HOPerformed; typedef struct { aifg_ie_bm_cause cause; aifg_ie_bm_cellId cellId; }aifg_msg_bm_overload; typedef struct { aifg_ie_bm_traceType traceType; aifg_ie_bm_triggerId tiggerId; aifg_ie_bm_traceRef traceRef; aifg_ie_bm_transId transId; aifg_ie_mobileId mobileId; aifg_ie_bm_omcId omcId; }aifg_msg_bm_mscInvokeTrace; typedef struct { aifg_ie_bm_traceType traceType; aifg_ie_bm_fowardInd forwardInd; aifg_ie_bm_triggerId tiggerId; aifg_ie_bm_traceRef traceRef; aifg_ie_bm_transId transId; aifg_ie_bm_omcId omcId; }aifg_msg_bm_bscInvokeTrace; typedef struct { aifg_ie_bm_cmInfo2 cm2; // aifg_ie_bm_cmInfo3 cm3; }aifg_msg_bm_cmUpdate; typedef struct { aifg_ie_bm_L3HeaderInfo l3HeaderInfo; aifg_ie_bm_encryptInfo encryptInfo; aifg_ie_bm_cipherRespMode cipherRespMode; }aifg_msg_bm_cipherModeCmd; typedef struct { struct{ BYTE flag; BYTE *ptr; BYTE len; }l3Info; aifg_ie_bm_chosenEncrypt chosenEncrypt; }aifg_msg_bm_cipherModeComplete; typedef struct { struct{ BYTE *ptr; BYTE len; }l3Info; // aifg_msg_bm_l3msg l3Info; aifg_ie_bm_cellId cellId; aifg_ie_bm_chosenChannel chosenChannel; aifg_ie_bm_lsaIdList lsaIdList; aifg_ie_bm_locInfo locInfo; }aifg_msg_bm_completeL3Info; typedef struct { aifg_ie_bm_dlci dlci; aifg_ie_bm_cause cause; }aifg_msg_bm_SAPI_n_Reject; typedef aifg_msg_bm_clearReq aifg_msg_bm_HOReject; typedef struct { aifg_ie_bm_cic cic; aifg_ie_bm_cause cause; }aifg_msg_bm_resetCircuit; typedef struct { aifg_ie_bm_cic cic; }aifg_msg_bm_resetCircuitAck; typedef struct { aifg_ie_bm_cause cause; aifg_ie_bm_cic cic; aifg_ie_bm_cicList cicList; }aifg_msg_bm_circuitGrpBlk; typedef struct { aifg_ie_bm_cic cic; aifg_ie_bm_cicList cicList; }aifg_msg_bm_circuitGrpBlkAck; typedef aifg_msg_bm_circuitGrpBlkAck aifg_msg_bm_circuitGrpUnblk; typedef aifg_msg_bm_circuitGrpBlkAck aifg_msg_bm_circuitGrpUnblkAck; typedef struct { aifg_ie_bm_cause cause; aifg_ie_bm_diagnostics diagnostics; }aifg_msg_bm_confusion; typedef aifg_msg_bm_circuitGrpBlkAck aifg_msg_bm_unequippedCircuit; typedef aifg_msg_bm_clearReq aifg_msg_bm_cipherModeReject; typedef struct { aifg_ie_bm_timeId timeInd; aifg_ie_bm_cellId cellId; aifg_ie_bm_cidList cidList; aifg_ie_bm_resrcSit resrcSit; aifg_ie_bm_cause cause; }aifg_msg_bm_loadIndication; typedef struct { aifg_ie_bm_dlci dlci; }aifg_msg_bm_suspend; typedef aifg_msg_bm_suspend aifg_msg_bm_resume; typedef aifg_msg_bm_clearReq aifg_msg_bm_changeCircuit; typedef aifg_msg_bm_resetCircuitAck aifg_msg_bm_changeCircuitAck; typedef struct { aifg_ie_bm_lsaInfo lsaInfo; }aifg_msg_bm_lsaInfo; typedef struct { aifg_ie_bm_locInfo locInfo; }aifg_msg_bm_locCmd; typedef struct { aifg_ie_bm_locInfo locInfo; aifg_ie_bm_cause cause; }aifg_msg_bm_locReport; typedef struct { aifg_msg_id id; aifg_pd pd; int app_port; int aif_port; int trace_flag; //0 - off, 1 - on union{ //BSSMAP aifg_msg_bm_assignReq assignReq; aifg_msg_bm_assignComplete assignComplete; aifg_msg_bm_assignFailure assignFailure; aifg_msg_bm_block block; aifg_msg_bm_blockAck blockAck; aifg_msg_bm_unblock unblock; aifg_msg_bm_unblockAck unblockAck; aifg_msg_bm_HORequired HORequired; aifg_msg_bm_HORequest HORequest; aifg_msg_bm_HORequestAck HORequestAck; aifg_msg_bm_HOCmd HOCmd; aifg_msg_bm_HOComplete HOComplete; aifg_msg_bm_HOCandidateEnq HOCandidateEnq; aifg_msg_bm_HOCandidateResp HOCandidateResp; aifg_msg_bm_HOFailure HOFailure; aifg_msg_bm_HOPerformed HOPerformed; aifg_msg_bm_HOReject HOReject; aifg_msg_bm_resrcReq resourceReq; aifg_msg_bm_resrcInd resourceInd; aifg_msg_bm_paging paging; aifg_msg_bm_clearReq clearReq; aifg_msg_bm_clearCmd clearCmd; aifg_msg_bm_reset reset; aifg_msg_bm_overload overload; aifg_msg_bm_mscInvokeTrace mscInvokeTrace; aifg_msg_bm_bscInvokeTrace bscInvokeTrace; aifg_msg_bm_cmUpdate cmUpdate; aifg_msg_bm_cipherModeCmd cipherModeCmd; aifg_msg_bm_cipherModeComplete cipherModeComplete; aifg_msg_bm_cipherModeReject cipherModeReject; aifg_msg_bm_completeL3Info completeL3Info; aifg_msg_bm_SAPI_n_Reject SAPI_n_Reject; aifg_msg_bm_resetCircuit resetCircuit; aifg_msg_bm_resetCircuitAck resetCircuitAck; aifg_msg_bm_circuitGrpBlk ccGroupBlock; aifg_msg_bm_circuitGrpBlkAck ccGroupBlockAck; aifg_msg_bm_circuitGrpUnblk ccGroupUnblock; aifg_msg_bm_circuitGrpUnblkAck ccGroupUnblockAck; aifg_msg_bm_confusion confusion; aifg_msg_bm_unequippedCircuit unequippedCircuit; aifg_msg_bm_loadIndication loadInd; aifg_msg_bm_suspend suspend; aifg_msg_bm_resume resume; aifg_msg_bm_changeCircuit changeCircuit; aifg_msg_bm_changeCircuitAck changeCircuitAck; aifg_msg_bm_lsaInfo lsaInfo; aifg_msg_bm_locCmd locCmd; aifg_msg_bm_locReport locReport; //DTAP aifg_msg_dt_luAccept luAccept; aifg_msg_dt_cmReject cmReject; aifg_msg_dt_luReject luReject; aifg_msg_dt_abort abort; aifg_msg_dt_mmStatus mmStatus; aifg_msg_dt_LURequest luRequest; aifg_msg_dt_authRequest authRequest; aifg_msg_dt_authResp authResp; aifg_msg_dt_idRequest idRequest; aifg_msg_dt_idResp idResp; aifg_msg_dt_imsiDetachInd IMSI_ind; aifg_msg_dt_tmsiCmd tmsiCmd; aifg_msg_dt_cmReEstReq cmReEst_Request; aifg_msg_dt_cmRequest cmRequest; aifg_msg_dt_mmInfo mmInfo; aifg_msg_dt_alert alert; aifg_msg_dt_callConfirm callConfirm; aifg_msg_dt_callProceed callProceed; aifg_msg_dt_connect connect; aifg_msg_dt_eSetup eSetup; aifg_msg_dt_progress progress; aifg_msg_dt_setup setup; aifg_msg_dt_modify modify; aifg_msg_dt_modifyCmp modifyCmp; aifg_msg_dt_modifyRej modifyRej; aifg_msg_dt_userInfo userInfo; aifg_msg_dt_holdRej holdRej; aifg_msg_dt_retrieveRej retrieveRej; aifg_msg_dt_disconnect disconnect; aifg_msg_dt_release release; aifg_msg_dt_releaseCmp releaseCmp; aifg_msg_dt_congestCtrl congestCtrl; aifg_msg_dt_notify notify; aifg_msg_dt_status status; aifg_msg_dt_startDTMF startDTMF; aifg_msg_dt_startDTMF_ack startDTMF_ack; aifg_msg_dt_startDTMF_rej startDTMF_rej; aifg_msg_dt_facility facility; aifg_msg_dt_facilitySS facilitySS; aifg_msg_dt_register registerSS; aifg_msg_dt_releaseCompSS releaseCompSS; aifg_msg_dt_rpData rpData; aifg_msg_dt_rpSMMA rpSMMA; aifg_msg_dt_rpAck rpAck; aifg_msg_dt_rpError rpError; //for transparently DTAP message transfer in BSC struct { BYTE *ptr; BYTE len; }dtap_msg; }msg; }aifg_msg_t; //Message struct for decode----------------------------------------------------- enum{AIFG_LOW_BITS = 0, AIFG_HIGH_BITS}; typedef struct { BYTE iei; BYTE *ptr; BYTE hi_lo_flag; }aifg_ie_ptr; //DTAP------------------------------------- typedef struct { aifg_ie_ptr cipherKeySeq; aifg_ie_ptr authParamRAND; }aifg_msg_predecode_dt_authReq; typedef struct { aifg_ie_ptr authParamSRES; }aifg_msg_predecode_dt_authResp; typedef struct { aifg_ie_ptr cipherKeySeq; aifg_ie_ptr cm2; aifg_ie_ptr mobileId; aifg_ie_ptr lai; aifg_ie_ptr id; }aifg_msg_predecode_dt_cmReEstReq; typedef struct { aifg_ie_ptr rejCause; }aifg_msg_predecode_dt_cmRej; typedef struct { aifg_ie_ptr rejCause; }aifg_msg_predecode_dt_abort; typedef struct { aifg_ie_ptr type; aifg_ie_ptr cipherKeySeq; aifg_ie_ptr cm2; aifg_ie_ptr mobileId; aifg_ie_ptr priority; }aifg_msg_predecode_dt_cmReq; typedef struct { aifg_ie_ptr type; }aifg_msg_predecode_dt_idReq; typedef struct { aifg_ie_ptr mobileId; }aifg_msg_predecode_dt_idResp; typedef struct { aifg_ie_ptr cm1; aifg_ie_ptr mobileId; }aifg_msg_predecode_dt_imsiDetachInd; typedef struct { aifg_ie_ptr lai; aifg_ie_ptr mobileId; aifg_ie_ptr followOnProc; aifg_ie_ptr ctsPerm; }aifg_msg_predecode_dt_luAccept; typedef struct { aifg_ie_ptr rejCause; }aifg_msg_predecode_dt_luReject; typedef struct { aifg_ie_ptr type; aifg_ie_ptr cipherKeySeq; aifg_ie_ptr lai; aifg_ie_ptr cm1; aifg_ie_ptr mobileId; }aifg_msg_predecode_dt_LURequest; typedef struct { aifg_ie_ptr fullNetworkName; aifg_ie_ptr shortNetworkName; aifg_ie_ptr timeZone; aifg_ie_ptr timeZoneAndTime; aifg_ie_ptr lsaId; }aifg_msg_predecode_dt_mmInfo; typedef struct { aifg_ie_ptr rejCause; }aifg_msg_predecode_dt_mmStatus; typedef struct { aifg_ie_ptr lai; aifg_ie_ptr mobileId; }aifg_msg_predecode_dt_tmsiReallocCmd; typedef struct { aifg_ie_ptr facility; aifg_ie_ptr progressInd; aifg_ie_ptr user_user; aifg_ie_ptr ssVer; }aifg_msg_predecode_dt_alert; typedef struct { aifg_ie_ptr reptInd; aifg_ie_ptr bearCap1; aifg_ie_ptr bearCap2; aifg_ie_ptr cause; aifg_ie_ptr ccCap; }aifg_msg_predecode_dt_callConfirm; typedef struct { aifg_ie_ptr reptInd; aifg_ie_ptr bearCap1; aifg_ie_ptr bearCap2; aifg_ie_ptr facility; aifg_ie_ptr progressInd; aifg_ie_ptr priority; }aifg_msg_predecode_dt_callProceed; typedef struct { aifg_ie_ptr congestLev; aifg_ie_ptr cause; }aifg_msg_predecode_dt_congestCtrl; typedef struct { aifg_ie_ptr facility; aifg_ie_ptr progressInd; aifg_ie_ptr connNum; aifg_ie_ptr connSubaddr; aifg_ie_ptr user_user; aifg_ie_ptr ssVer; }aifg_msg_predecode_dt_connect; typedef struct { aifg_ie_ptr cause; aifg_ie_ptr facility; aifg_ie_ptr progressInd; aifg_ie_ptr user_user; aifg_ie_ptr allowAct; aifg_ie_ptr ssVer; }aifg_msg_predecode_dt_disconnect; typedef struct { aifg_ie_ptr bearCap; }aifg_msg_predecode_dt_emergSetup; typedef struct { aifg_ie_ptr facility; aifg_ie_ptr ssVer; }aifg_msg_predecode_dt_facility; typedef struct { aifg_ie_ptr bearCap; aifg_ie_ptr lowLComp; aifg_ie_ptr highLComp; aifg_ie_ptr revCallSetDir; }aifg_msg_predecode_dt_modify; typedef aifg_msg_predecode_dt_modify aifg_msg_predecode_dt_modifyComp; typedef struct { aifg_ie_ptr bearCap; aifg_ie_ptr cause; aifg_ie_ptr lowLComp; aifg_ie_ptr highLComp; }aifg_msg_predecode_dt_modifyRej; typedef struct { aifg_ie_ptr progressInd; aifg_ie_ptr user_user; }aifg_msg_predecode_dt_progress; typedef struct { aifg_ie_ptr cause1; aifg_ie_ptr cause2; aifg_ie_ptr facility; aifg_ie_ptr user_user; aifg_ie_ptr ssVer; }aifg_msg_predecode_dt_release; typedef struct { aifg_ie_ptr cause; aifg_ie_ptr facility; aifg_ie_ptr user_user; aifg_ie_ptr ssVer; }aifg_msg_predecode_dt_releaseComp; typedef struct { aifg_ie_ptr reptInd_bc; aifg_ie_ptr bearCap1; aifg_ie_ptr bearCap2; aifg_ie_ptr facility; aifg_ie_ptr progressInd; aifg_ie_ptr signal; aifg_ie_ptr callingBCD; aifg_ie_ptr callingSubaddr; aifg_ie_ptr calledBCD; aifg_ie_ptr calledSubaddr; aifg_ie_ptr redirBCD; aifg_ie_ptr redirSubaddr; aifg_ie_ptr reptInd_llc; aifg_ie_ptr lowLComp1; aifg_ie_ptr lowLComp2; aifg_ie_ptr reptInd_hlc; aifg_ie_ptr highLComp1; aifg_ie_ptr highLComp2; aifg_ie_ptr user_user; aifg_ie_ptr priority; aifg_ie_ptr alert; aifg_ie_ptr ssVer; aifg_ie_ptr clirSuppr; aifg_ie_ptr clirInvo; aifg_ie_ptr ccCap; }aifg_msg_predecode_dt_setup; typedef struct { aifg_ie_ptr keypadFacility; }aifg_msg_predecode_dt_startDTMF; typedef aifg_msg_predecode_dt_startDTMF aifg_msg_predecode_dt_startDTMFAck; typedef struct { aifg_ie_ptr cause; aifg_ie_ptr callState; aifg_ie_ptr auxState; }aifg_msg_predecode_dt_status; typedef struct { aifg_ie_ptr user_user; aifg_ie_ptr moreDate; }aifg_msg_predecode_dt_userInfo; typedef struct { aifg_ie_ptr cause; }aifg_msg_predecode_dt_holdRej; typedef aifg_msg_predecode_dt_holdRej aifg_msg_predecode_dt_retieveRej; typedef aifg_msg_predecode_dt_holdRej aifg_msg_predecode_dt_startDTMFRej; typedef struct { aifg_ie_ptr notifyInd; }aifg_msg_predecode_dt_notify; typedef struct { aifg_ie_ptr cipherKeySeq; aifg_ie_ptr cm2; aifg_ie_ptr mobileId; }aifg_msg_predecode_dt_pagingResp; typedef struct { aifg_ie_ptr facility; }aifg_msg_predecode_dt_facilitySS; typedef struct { aifg_ie_ptr facility; aifg_ie_ptr ssVer; }aifg_msg_predecode_dt_register; typedef struct { aifg_ie_ptr cause; aifg_ie_ptr facility; }aifg_msg_predecode_dt_releaseCompSS; typedef struct{ BYTE ref; aifg_ie_ptr moAddr; aifg_ie_ptr mtAddr; aifg_ie_ptr data; }aifg_msg_predecode_dt_rpData; typedef struct{ BYTE ref; }aifg_msg_predecode_dt_rpSMMA; typedef struct{ BYTE ref; aifg_ie_ptr data; }aifg_msg_predecode_dt_rpAck; typedef struct{ BYTE ref; aifg_ie_ptr cause; aifg_ie_ptr data; }aifg_msg_predecode_dt_rpError; //BSSMAP typedef struct { BYTE id; //message id union{ aifg_msg_predecode_dt_LURequest luRequest; aifg_msg_predecode_dt_cmReq cmRequest; aifg_msg_predecode_dt_cmReEstReq cmReEstReq; aifg_msg_predecode_dt_imsiDetachInd imsiDetachInd; aifg_msg_predecode_dt_pagingResp pagingResp; }msg; }aifg_msg_predecode_l3msg; typedef struct { aifg_ie_ptr channelType; aifg_ie_ptr l3HeaderInfo; aifg_ie_ptr priority; aifg_ie_ptr cic; aifg_ie_ptr dtxFlag; aifg_ie_ptr bandUsed; aifg_ie_ptr cmInfo2; aifg_ie_ptr groupRef; aifg_ie_ptr talkerFlag; aifg_ie_ptr cfgEvoInd; }aifg_msg_predecode_bm_assignReq; typedef struct { aifg_ie_ptr rrcause; aifg_ie_ptr cic; aifg_ie_ptr cellId; aifg_ie_ptr chosenChannel; aifg_ie_ptr chosenEncrypt; aifg_ie_ptr circuitPool; aifg_ie_ptr speechVer; aifg_ie_ptr lsaId; }aifg_msg_predecode_bm_assignComp; typedef struct { aifg_ie_ptr cause; aifg_ie_ptr rrcause; aifg_ie_ptr circuitPool; aifg_ie_ptr circuitPoolList; }aifg_msg_predecode_bm_assignFail; typedef struct { aifg_ie_ptr cic; aifg_ie_ptr cause; aifg_ie_ptr connectionRelReq; }aifg_msg_predecode_bm_block; typedef struct { aifg_ie_ptr cic; }aifg_msg_predecode_bm_blockAck; typedef aifg_msg_predecode_bm_blockAck aifg_msg_predecode_bm_unBlock; typedef aifg_msg_predecode_bm_blockAck aifg_msg_predecode_bm_unBlockAck; typedef struct { aifg_ie_ptr channelType; aifg_ie_ptr encryptInfo; aifg_ie_ptr cmInfo1; aifg_ie_ptr cmInfo2; aifg_ie_ptr serving_cellId; aifg_ie_ptr priority; aifg_ie_ptr cic; aifg_ie_ptr dtxFlag; aifg_ie_ptr target_cellId; aifg_ie_ptr bandUsed; aifg_ie_ptr cause; aifg_ie_ptr cmInfo3; aifg_ie_ptr curChanneltype1; aifg_ie_ptr speechVer; aifg_ie_ptr groupCallRef; aifg_ie_ptr talkerFlag; aifg_ie_ptr cfgEvoInd; aifg_ie_ptr chosenEncrypt; aifg_ie_ptr oldBssToNew; aifg_ie_ptr lsaInfo; }aifg_msg_predecode_bm_HORequest; typedef struct { aifg_ie_ptr cause; aifg_ie_ptr respReq; aifg_ie_ptr cellIdList; aifg_ie_ptr circuitPoolList; aifg_ie_ptr curChannelType1; aifg_ie_ptr speechVer; aifg_ie_ptr queInd; aifg_ie_ptr oldBssToNew; }aifg_msg_predecode_bm_HORequired; typedef struct { struct{ BYTE *ptr; BYTE len; }l3Info; aifg_ie_ptr chosenChannel; aifg_ie_ptr chosenEncrypt; aifg_ie_ptr circuitPool; aifg_ie_ptr speechVer; aifg_ie_ptr cic; aifg_ie_ptr lsaId; }aifg_msg_predecode_bm_HORequestAck; typedef struct { aifg_msg_predecode_l3msg l3msg; aifg_ie_ptr cellId; }aifg_msg_predecode_bm_HOCmd; typedef struct { aifg_ie_ptr rrcause; }aifg_msg_predecode_bm_HOComp; typedef struct { aifg_ie_ptr msNum; aifg_ie_ptr cellIdList; aifg_ie_ptr cellId; }aifg_msg_predecode_bm_HOCandEnq; typedef struct { aifg_ie_ptr msNum; aifg_ie_ptr cellId; }aifg_msg_predecode_bm_HOCandResp; typedef aifg_msg_predecode_bm_assignFail aifg_msg_predecode_bm_HOFail; typedef struct { aifg_ie_ptr periodicity; aifg_ie_ptr resrcIndMethod; aifg_ie_ptr cellId; aifg_ie_ptr extResrcInd; }aifg_msg_predecode_bm_resrcReq; typedef struct { aifg_ie_ptr resrcIndMethod; aifg_ie_ptr resrcAvail; aifg_ie_ptr cellId; aifg_ie_ptr totalResrc; }aifg_msg_predecode_bm_resrcInd; typedef struct { aifg_ie_ptr imsi; aifg_ie_ptr tmsi; aifg_ie_ptr cellIdList; aifg_ie_ptr channelNeeded; aifg_ie_ptr eMLPPpri; }aifg_msg_predecode_bm_paging; typedef struct { aifg_ie_ptr cause; }aifg_msg_predecode_bm_clearReq; typedef struct { aifg_ie_ptr l3HeaderInfo; aifg_ie_ptr cause; }aifg_msg_predecode_bm_clearCmd; typedef struct { aifg_ie_ptr cause; }aifg_msg_predecode_bm_reset; typedef struct { aifg_ie_ptr cause; aifg_ie_ptr cellId; aifg_ie_ptr chosenChannel; aifg_ie_ptr chosenEncrypt; aifg_ie_ptr speechVer; aifg_ie_ptr lsaId; }aifg_msg_predecode_bm_HOPreformed; typedef struct { aifg_ie_ptr cause; aifg_ie_ptr cellId; }aifg_msg_predecode_bm_overload; typedef struct { aifg_ie_ptr traceType; aifg_ie_ptr triggerId; aifg_ie_ptr traceRef; aifg_ie_ptr transId; aifg_ie_ptr mobileId; aifg_ie_ptr omcId; }aifg_msg_predecode_bm_mscInvokeTrace; typedef struct { aifg_ie_ptr traceType; aifg_ie_ptr forwardInd; aifg_ie_ptr triggerId; aifg_ie_ptr traceRef; aifg_ie_ptr transId; aifg_ie_ptr omcId; }aifg_msg_predecode_bm_bscInvokeTrace; typedef struct { aifg_ie_ptr cmInfo2; aifg_ie_ptr cmInfo3; }aifg_msg_predecode_bm_cmUpdate; typedef struct { aifg_ie_ptr l3HeaderInfo; aifg_ie_ptr encryptInfo; aifg_ie_ptr cipherRespMode; }aifg_msg_predecode_bm_cipherModeCmd; typedef struct { aifg_ie_ptr l3MsgCont; aifg_ie_ptr chosenEncrypt; }aifg_msg_predecode_bm_cipherModeComp; typedef struct { aifg_ie_ptr cellId; aifg_msg_predecode_l3msg l3msg; aifg_ie_ptr chosenChannel; aifg_ie_ptr lsaIdList; aifg_ie_ptr locInfo; }aifg_msg_predecode_bm_completeL3Info; typedef struct { aifg_ie_ptr dlci; aifg_ie_ptr cause; }aifg_msg_predecode_bm_sapi_n_rej; typedef struct { aifg_ie_ptr cause; }aifg_msg_predecode_bm_HORequiredRej; typedef struct { aifg_ie_ptr cic; aifg_ie_ptr cause; }aifg_msg_predecode_bm_resetCircuit; typedef struct { aifg_ie_ptr cic; }aifg_msg_predecode_bm_resetCircuitAck; typedef struct { aifg_ie_ptr cause; aifg_ie_ptr cic; aifg_ie_ptr cicList; }aifg_msg_predecode_bm_circuitGrpBlk; typedef struct { aifg_ie_ptr cic; aifg_ie_ptr cicList; }aifg_msg_predecode_bm_circuitGrpBlkAck; typedef struct { aifg_ie_ptr cic; aifg_ie_ptr cicList; }aifg_msg_predecode_bm_circuitGrpUnblk; typedef struct { aifg_ie_ptr cic; aifg_ie_ptr cicList; }aifg_msg_predecode_bm_circuitGrpUnblkAck; typedef struct { aifg_ie_ptr cause; aifg_ie_ptr diagnostics; }aifg_msg_predecode_bm_confusion; typedef struct { aifg_ie_ptr cic; aifg_ie_ptr cicList; }aifg_msg_predecode_bm_unequipCircuit; typedef struct { aifg_ie_ptr cause; }aifg_msg_predecode_bm_cipherModeRej; typedef struct { aifg_ie_ptr timeInd; aifg_ie_ptr cellId; aifg_ie_ptr cellIdList; aifg_ie_ptr resrcSit; aifg_ie_ptr cause; }aifg_msg_predecode_bm_loadInd; typedef struct { aifg_ie_ptr dlci; }aifg_msg_predecode_bm_suspend; typedef struct { aifg_ie_ptr dlci; }aifg_msg_predecode_bm_resume; typedef struct { aifg_ie_ptr cause; }aifg_msg_predecode_bm_changeCircuit; typedef struct { aifg_ie_ptr circuitId; }aifg_msg_predecode_bm_changeCircuitAck; typedef struct { aifg_ie_ptr lsaInfo; }aifg_msg_predecode_bm_lsaInfo; typedef struct { aifg_ie_ptr locInfo; }aifg_msg_predecode_bm_locInfoCmd; typedef struct { aifg_ie_ptr locInfo; aifg_ie_ptr cause; }aifg_msg_predecode_bm_locInfoRep; typedef struct{ aifg_msg_id id; int ti; //ti of the message. used only in dtap message aifg_pd pd; //Protocol discriminator int aif_port; int app_port; //port number of upper layer application int cause; //for release indication int trace_flag; //0 - off, 1 - on int tg_id; //trunk group id union{ //BSSMAP aifg_msg_predecode_bm_assignReq assignReq; //assign request aifg_msg_predecode_bm_assignComp assignComplete; //assign complete aifg_msg_predecode_bm_assignFail assignFailure; //assign failure aifg_msg_predecode_bm_block block; //block aifg_msg_predecode_bm_blockAck blockAck; //block ack aifg_msg_predecode_bm_unBlock unblock; //unblock aifg_msg_predecode_bm_unBlockAck unBlockAck; //unblock ack aifg_msg_predecode_bm_HORequest HORequest; //Handover request aifg_msg_predecode_bm_HORequired HORequired; //HANDOVER REQUIRED aifg_msg_predecode_bm_HORequestAck HORequestAck; //Handover request ack aifg_msg_predecode_bm_HOCmd HOCmd; //HANDOVER COMMAND aifg_msg_predecode_bm_HOComp HOComplete; //HANDOVER COMPLETE aifg_msg_predecode_bm_HOCandEnq HOCandEnq; //HANDOVER CANDIDATE ENQUIRE aifg_msg_predecode_bm_HOCandResp HOCandResp; //HANDOVER CANDIDATE RESPONSE aifg_msg_predecode_bm_HOFail HOFailure; //HANDOVER FAILURE aifg_msg_predecode_bm_resrcReq resrcReq; //RESOURCE REQUEST aifg_msg_predecode_bm_resrcInd resrcInd; //RESOURCE INDICATION aifg_msg_predecode_bm_paging paging; //PAGING aifg_msg_predecode_bm_clearReq clearReq; //CLEAR REQUEST aifg_msg_predecode_bm_clearCmd clearCmd; //CLEAR COMMAND aifg_msg_predecode_bm_reset reset; //RESET aifg_msg_predecode_bm_HOPreformed HOPerformed; //HANDOVER PERFORMED aifg_msg_predecode_bm_overload overload; //OVERLOAD aifg_msg_predecode_bm_mscInvokeTrace mscTrace; //MSC INVOKE TRACE aifg_msg_predecode_bm_bscInvokeTrace bscTrace; //BSC INVOKE TRACE aifg_msg_predecode_bm_cmUpdate cmUpdate; //CLASSMARK UPDATE aifg_msg_predecode_bm_cipherModeCmd cipherModeCmd; //CIPHER MODE COMMAND aifg_msg_predecode_bm_cipherModeComp cipherModeComp; //CIPHER MODE COMPLETE aifg_msg_predecode_bm_completeL3Info completeL3Info; //COMPLETE LAYER 3 INFORMATION aifg_msg_predecode_bm_sapi_n_rej sapi_n_rej; //SAPI "n" REJECT aifg_msg_predecode_bm_HORequiredRej HORequiredRej; //HANDOVER REQUIRED REJECT aifg_msg_predecode_bm_resetCircuit resetCircuit; //RESET CIRCUIT aifg_msg_predecode_bm_resetCircuitAck resetCircuitAck; //RESET CIRCUIT ACK aifg_msg_predecode_bm_circuitGrpBlk ccGroupBlock; //CIRCUIT GROUP BLOCK aifg_msg_predecode_bm_circuitGrpBlkAck ccGroupBlockAck; //CIRCUIT GROUP BLOCK ACK aifg_msg_predecode_bm_circuitGrpUnblk ccGroupUnblock; //CIRCUIT GROUP UNBLOCK aifg_msg_predecode_bm_circuitGrpUnblkAck ccGroupUnblockAck; //CIRCUIT GROUP UNBLOCK ACK aifg_msg_predecode_bm_confusion confusion; //CONFUSION aifg_msg_predecode_bm_unequipCircuit upequipCircuit; //UNEQUIPPED CIRCUIT aifg_msg_predecode_bm_cipherModeRej cipherModeRej; //CIPHER MODE REJECT aifg_msg_predecode_bm_loadInd loadInd; //LOAD INDICATION aifg_msg_predecode_bm_suspend suspend; //SUSPEND aifg_msg_predecode_bm_resume resume; //RESUME aifg_msg_predecode_bm_changeCircuit changeCC; //CHANGE CIRCUIT aifg_msg_predecode_bm_changeCircuitAck changeCCAck; //CHANGE CIRCUIT ACK aifg_msg_predecode_bm_lsaInfo lsaInfo; //LSA INFORMATION aifg_msg_predecode_bm_locInfoCmd locInfoCmd; //Location Information Command aifg_msg_predecode_bm_locInfoRep locInfoReport; //Location Information Report //DTAP aifg_msg_predecode_dt_authReq authReq; //Authentication request aifg_msg_predecode_dt_authResp authResp; //Authentication response aifg_msg_predecode_dt_cmReEstReq cmReEstReq; //CM Re-establishment request aifg_msg_predecode_dt_cmRej cmRej; //CM service reject aifg_msg_predecode_dt_abort abort; //Abort aifg_msg_predecode_dt_cmReq cmReq; //CM service request aifg_msg_predecode_dt_idReq idReq; //Identity request aifg_msg_predecode_dt_idResp idResp; //Identity response aifg_msg_predecode_dt_imsiDetachInd imsiDetach; //IMSI detach indication aifg_msg_predecode_dt_luAccept luAccept; //Location updating accept aifg_msg_predecode_dt_luReject luReject; //Location updating reject aifg_msg_predecode_dt_LURequest luRequest; //Location updating request aifg_msg_predecode_dt_mmInfo mmInfo; //MM information aifg_msg_predecode_dt_mmStatus mmStatus; //MM Status aifg_msg_predecode_dt_tmsiReallocCmd tmsiReallocCmd; //TMSI reallocation command aifg_msg_predecode_dt_alert alert; //Alert aifg_msg_predecode_dt_callConfirm callConfirm; //Call confirmed aifg_msg_predecode_dt_callProceed callProceed; //Call proceeding aifg_msg_predecode_dt_congestCtrl congestCtrl; //Congestion control aifg_msg_predecode_dt_connect connect; //Connect aifg_msg_predecode_dt_disconnect disconnect; //Disconnect aifg_msg_predecode_dt_emergSetup eSetup; //Emergency Setup aifg_msg_predecode_dt_facility facility; //Facility aifg_msg_predecode_dt_holdRej holdRej; //Hold Reject aifg_msg_predecode_dt_modify modify; //Modify aifg_msg_predecode_dt_modifyComp modifyComplete; //Modify complete aifg_msg_predecode_dt_modifyRej modifyRej; //Modify Reject aifg_msg_predecode_dt_notify notify; //Notify aifg_msg_predecode_dt_progress progress; //Progress aifg_msg_predecode_dt_release release; //Release aifg_msg_predecode_dt_releaseComp releaseComp; //Release complete aifg_msg_predecode_dt_retieveRej retrieveRej; //Retrieve Reject aifg_msg_predecode_dt_setup setup; //Setup aifg_msg_predecode_dt_startDTMF startDTMF; //Start DTMF aifg_msg_predecode_dt_startDTMFAck startDTMFAck; //Start DTMF Ack aifg_msg_predecode_dt_startDTMFRej startDTMFRej; //Start DTMF Rej aifg_msg_predecode_dt_status status; //Status aifg_msg_predecode_dt_userInfo userInfo; //User information aifg_msg_predecode_dt_facilitySS facilitySS; //Facility SS aifg_msg_predecode_dt_register registerSS; //Register aifg_msg_predecode_dt_releaseCompSS releaseCompSS; //Release complete SS aifg_msg_predecode_dt_rpData rpData; //RP DATA aifg_msg_predecode_dt_rpSMMA rpSMMA; //RP SMMA aifg_msg_predecode_dt_rpAck rpAck; //RP ACK aifg_msg_predecode_dt_rpError rpError; //RP ERROR //for transparently DTAP message transfer in BSC struct { BYTE *ptr; BYTE len; }dtap_msg; }msg; }aifg_msg_pre_decoded; #endif