Files
svc.ems/plat/xapp/src/xap_provider.h
2024-09-27 15:39:34 +08:00

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