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

124 lines
3.0 KiB
C

#ifndef _PAL_H_
#define _PAL_H_
#include "../public/src/include/public.h"
#define PROTO_AIF 0
#define PROTO_ISUP 1
#define PROTO_BICC 2
#define PROTO_ISDN 3
#define PROTO_TUP 4
#define PROTO_SIP 5
#define PROTO_MGC 6
#define MAX_PROTO_TYPE 7
#define VARIANT_ITU 0
#define VARIANT_ANSI 1
#define VARIANT_ETSI 2
#define VARIANT_UK 3
#define VARIANT_QSIG 4
#define DUAL_SEIZURE_REATTEMPT 0 /* Re-attempt on detection of dual seizure */
#define DUAL_SEIZURE_CONTINUE 1 /* Continue the call on detection of dual seizure */
#define CTRL_PLAT_0 0
#define CTRL_PLAT_1 1
#define PAL_MAX_CALLBACK 64
#define PAL_MAX_SAP 16
#define PAL_MAX_CG 256
#define PAL_MAX_CIRCUIT 256
#define PAL_DOMAIN_LEN 32
typedef struct sap_attribute {
void *event_handle[PAL_MAX_CALLBACK];
} sap_attrib_struct;
/* Non-Facility Associated Signalling */
struct nfas_info {
u8 flag;
u32 prim_link;
u32 backup_link;
};
typedef struct cg_attribute {
u8 protocol;
u8 variant;
u8 priority; //0: re-attempt; 1: continue
u8 network_id;
u32 dpc;
u32 opc;
char dest_domain[PAL_DOMAIN_LEN]; //for sip
char local_domain[PAL_DOMAIN_LEN]; //for sip
struct nfas_info nfas;
u32 tg_id;
} cg_attrib_struct;
typedef struct circuit_attribute {
u8 plat_id;
u8 cic_range;
u32 head_cic;
u32 link_id; //for isdn
u8 user_network_if; //for isdn
u8 d_chnl; //for isdn
} circuit_attrib_struct;
typedef struct pal_sap {
u8 id;
u8 enable;
sap_attrib_struct attrib;
} pal_sap_struct;
typedef struct pal_circuitgroup {
u8 id;
u8 enable;
u8 sap_id;
u8 circuit_num;
cg_attrib_struct attrib;
} pal_cg_struct;
typedef struct pal_circuit {
u8 id;
u8 enable;
u8 cg_id;
circuit_attrib_struct attrib;
} pal_circuit_struct;
typedef struct _pst_struct
{
u16 cg_id;
u32 tg_id;
u32 cic;
u32 sp_proc_id;
u32 su_proc_id;
int trace_flag;
} Pst;
/* Upper layer interface */
extern u8 *pal_version(void);
extern char* pal_error(void);
extern int pal_bind_sap(sap_attrib_struct *attrib);
extern int pal_create_cg(u8 sap_id, cg_attrib_struct *attrib);
extern int pal_delete_cg(int cg_id);
extern int pal_modify_cg(int cg_id, cg_attrib_struct *attrib);
extern int pal_create_circuit(int cg_id, circuit_attrib_struct *attrib);
extern int pal_delete_circuit(int circuit_id);
/* Lower layer interface */
extern void *pal_get_handler(u32 cg_id);
extern const pal_sap_struct *pal_sap_ptr(u8 sap_id);
extern const pal_cg_struct *pal_cg_ptr(u32 cg_id);
extern const pal_circuit_struct *pal_circuit_ptr(u32 circuit_id);
extern const pal_cg_struct *pal_ss7_find_cg(u8 ni, u32 dpc, u32 opc);
extern const pal_cg_struct *pal_isdn_find_cg(u32 link_id);
extern const pal_cg_struct *pal_sip_find_cg(char *domain, char *their_domain);
extern const pal_circuit_struct *pal_locate_circuit(u32 cg_id, u32 cic);
extern const pal_circuit_struct *pal_ss7_find_circuit(u8 ni, u32 dpc, u32 opc, u32 cic);
extern const pal_circuit_struct *pal_isdn_find_circuit(u32 link_id, u32 cic);
extern const pal_circuit_struct *pal_isdn_find_circuit_of_link(u32 link_id);
#endif