183 lines
5.0 KiB
C
183 lines
5.0 KiB
C
/* XAP provider head file */
|
|
/* Written by Liu Zhiguo 2003-08-26 */
|
|
/* Version 1.0 */
|
|
/* -------------------------------- */
|
|
|
|
#include "../../public/src/include/includes.h"
|
|
#include "../../public/src/include/pub_fmt.h"
|
|
#include "../../sccp/src/include/sccp.h"
|
|
#include "../../tcap/src/include/tcap_head.h"
|
|
#include "../../tcap/src/include/tcap_public.h"
|
|
#include "../../tcap/src/include/tcap_struct.h"
|
|
#include "ixap.h"
|
|
#include "mapp/map_const.h"
|
|
#include "mapp/map_public.h"
|
|
#include "mapp/map_code.h"
|
|
#include "mapp/map_coding.h"
|
|
#include "mapp/is41_code.h"
|
|
#include "mapp/map_struct.h"
|
|
#include "mapp/map_acn.h"
|
|
#include "mapp/map_dlgpdu.h"
|
|
|
|
#ifndef _PROVIDER_H
|
|
#define _PROVIDER_H
|
|
|
|
#define XAP_MAP_SSN 1 // ssn is used for map
|
|
#define XAP_CAP_SSN 2 // ssn is used for cap
|
|
#define XAP_IS41_SSN 3 // ssn is used for is41
|
|
|
|
#define XAP_VM_KEY 0xa0e00000
|
|
#define XAP_VM_PERM 0664
|
|
#define XAP_INTER_KEY 0xa0f00000
|
|
#define XAP_INTER_PERM 0664
|
|
|
|
#define MAX_XAP_SSN 16
|
|
#define XAP_OPEN_LEN 128
|
|
#define XAP_ACN_LEN 7 // xap acn length
|
|
#define XAP_ACN_NUM 50 // acn buffer length
|
|
#define XAP_OPR_NUM 80 // operation length
|
|
|
|
#define XAP_ASCIN_LEN 1024
|
|
#define XAP_ASCOUT_LEN 4096
|
|
#define XAP_WTDOG_LEN 256
|
|
|
|
#define XAP_INIT 0x00
|
|
#define XAP_IDLE 0x01
|
|
#define XAP_WFUR 0x02 // wait for user requests
|
|
#define XAP_WFCBI 0x03 // wait for check begin indicate
|
|
#define XAP_DLG_INITIATED 0x05
|
|
#define XAP_DLG_PENDING 0x04 // dialogue pending
|
|
#define XAP_DLG_ACCEPTED 0x06
|
|
#define XAP_DLG_ESTABLISHED 0x07
|
|
#define XAP_DLG_SUSPEND 0x08
|
|
#define XAP_DLG_HALT 0x09
|
|
|
|
/* the state of SSM */
|
|
#define SSM_IDLE 0x00
|
|
#define SSM_WFRESPONSE 0x01 // wait for response
|
|
#define SSM_WFCONFIRM 0x02
|
|
|
|
/* the flag of requesting map SSM */
|
|
#define SERVICE_INVOKED 0x01
|
|
#define RESULT_RECEIVED 0x02
|
|
#define PARTIAL_RESULT_RECEIVED 0x03
|
|
#define NEGATIVE_RESULT_RECEIVED 0x04
|
|
#define LINKED_REQUEST_RECEIVED 0x05
|
|
#define LINKED_SERVICE_INVOKED 0x06
|
|
#define USER_REJECT_RECEIVED 0x07
|
|
#define PROVIDER_REJECT_RECEIVED 0x08
|
|
#define TIMER_EXPIRY 0x09
|
|
#define TERMINATED 0x0a
|
|
|
|
/* the flag of performing map SSM */
|
|
#define SERVICE_INVOCATION_RECEIVED 0x01
|
|
#define RESPONSE_ISSUED 0x02
|
|
#define GUARD_TIMER 0x03
|
|
|
|
#define SUSPEND_TIME 1
|
|
#define DLGPEND_TIME 180
|
|
#define XAPP_TIMERHZ 100
|
|
|
|
#define XAPP_PRIVATE_TCAP 1
|
|
#define XAPP_OPER_FAMILY 9
|
|
|
|
typedef struct xap_acn_info // store info about application context name
|
|
{
|
|
u8 buf_len;
|
|
u8 acn[XAP_ACN_NUM]; // acn buffer
|
|
u8 acn_ver[XAP_ACN_NUM]; // acn version buffer
|
|
} xap_acn_info;
|
|
|
|
typedef struct xap_opr_info // store info about opration code
|
|
{
|
|
u8 buf_len;
|
|
u8 opr_code[XAP_OPR_NUM]; // operation code buffer
|
|
u8 opr_class[XAP_OPR_NUM]; // operation class buffer
|
|
u32 opr_timer[XAP_OPR_NUM]; // operation timer buffer
|
|
} xap_opr_info;
|
|
|
|
|
|
typedef struct xap_inter_struct // xap interface structure
|
|
{
|
|
u8 mcc[2];
|
|
u8 mnc0;
|
|
u8 cc[2];
|
|
u8 ndc[3];
|
|
u8 inter_prefix[2];
|
|
u8 national_prefix[2];
|
|
u8 local_prefix[2];
|
|
u8 mnc[2];//expend mnc from 1 byte to 2 bytes
|
|
|
|
/* mscid is special use for CDMA */
|
|
u8 mscidToNum[256][14];
|
|
/* mscid is special use for CDMA */
|
|
|
|
// define for the ssn control
|
|
u8 regssn_len;
|
|
u8 reg_ssn[MAX_XAP_SSN];
|
|
u8 regssn_flag[MAX_XAP_SSN]; // indicate if the register SSN is MAP or CAP ssn
|
|
u8 open_head[MAX_XAP_SSN];
|
|
u8 open_tail[MAX_XAP_SSN];
|
|
u32 open_did[MAX_XAP_SSN][XAP_OPEN_LEN];
|
|
} xap_inter_struct;
|
|
|
|
typedef struct xap_debug_struct
|
|
{
|
|
char *start_time; // time of module start
|
|
u32 monitor_did; // the dialogue id for monitored
|
|
u8 error_switch;
|
|
u8 map_switch;
|
|
u8 cap_switch;
|
|
u8 send_control; // control if can send xap message
|
|
u8 ascin_buf[XAP_ASCIN_LEN];
|
|
u8 ascout_buf[XAP_ASCOUT_LEN];
|
|
u32 watch_dog[XAP_WTDOG_LEN];
|
|
} xap_debug_struct;
|
|
|
|
typedef struct psmvm_data // xap provider state machine data
|
|
{
|
|
u8 xap_flag; // 0: empty; 1: map primitive; 2: cap primitive
|
|
u8 psm_state;
|
|
u8 sub_state1;
|
|
u8 delimiter_flag;
|
|
u8 acn;
|
|
u8 acn_ver;
|
|
u8 msg_type;
|
|
u8 msg_flag;
|
|
u32 port_id;
|
|
u32 suspend_timer;
|
|
u8 data_count;
|
|
u8 recv_bsa_count;
|
|
u8 opr_state[MAX_INVOKEID];
|
|
u8 opr_code[MAX_INVOKEID];
|
|
u8 opr_class[MAX_INVOKEID];
|
|
} psmvm_data;
|
|
|
|
typedef struct xapp_vm_data // XAP provider virtue machine structure
|
|
{
|
|
struct psmvm_data psm_data;
|
|
u8 recvcom_flag; // USER=>XAPP
|
|
u8 recvopr_flag; // USER=>XAPP 0: has not data 1: has data 2: has partial data
|
|
u8 sendcom_flag; // XAPP=>USER
|
|
u8 sendopr_flag; // XAPP=>USER
|
|
u32 recvopr_site; // USER=>XAPP 0: has not data 1: has data 2: has partial data
|
|
struct MapComSrv_struct recvcom_data;
|
|
struct MapOprData_struct recvopr_data;
|
|
struct MapComSrv_struct sendcom_data;
|
|
struct MapOprData_struct sendopr_data;
|
|
struct CSLdlg_struct tcap_data;
|
|
struct MapDlg_struct map_dlg;
|
|
} xapp_vm_data;
|
|
|
|
typedef struct xap_vm_struct
|
|
{
|
|
int grantdid;
|
|
struct xapp_vm_data xap_data[MAX_DIALOGUEID];
|
|
struct xap_debug_struct debug_data;
|
|
} xap_vm_struct;
|
|
|
|
struct xap_vm_struct *xap_vm_ptr;
|
|
struct xap_inter_struct *xap_inter_ptr;
|
|
|
|
#endif
|