/***********************************************************
Copyright (C), LGC Wireless.
File Name:		isdn_if.h
Description:	ISDN interface declaration for wxc2main
Version:		v9.0.0
Author:			Gengxin Chen
Create Date:	2008-1-17
History:
	<author>	<date>		<version>		<desc>
	
************************************************************/
#ifndef _ISDN_IF_H
#define _ISDN_IF_H

#include "isdn_msg.h"
#include "isdn_inc.h"


/************************************************************
ISDN Module parameter structure
************************************************************/

//Send to upper layer primitives, save data to structure
typedef int f_isdn_setup_ind(Pst *pst, IsdnSetup *ptr);	//Setup indication
typedef int f_isdn_setup_cnf(Pst *pst, IsdnConn *ptr);		//Setup confirm
typedef int f_isdn_proc_ind(Pst *pst, IsdnCallProc *ptr);	//Proceeding indication
typedef int f_isdn_alert_ind(Pst *pst, IsdnAlert *ptr);	//Alerting indication
typedef int f_isdn_disc_ind(Pst *pst, IsdnDisc *ptr);		//Disconnect indication
typedef int f_isdn_rel_ind(Pst *pst, IsdnRel *ptr);		//Release indication
typedef int f_isdn_rel_cnf(Pst *pst, IsdnRelComp *ptr);	//Release confirm
typedef int f_isdn_rel_cnf_err(Pst *pst, IsdnRelComp *ptr);	//Release confirm error
typedef int f_isdn_prog_ind(Pst *pst, IsdnProg *ptr);		//Progress indication
typedef int f_isdn_info_ind(Pst *pst, IsdnInfo *ptr);		//Info indication
typedef int f_isdn_minfo_ind(Pst *pst, IsdnSetupAck *ptr);	//More info indication	//IsdnSetupAck »ò IsdnInfo
typedef int f_isdn_noti_ind(Pst *pst, IsdnNoti *ptr);		//Notify indication
typedef int f_isdn_stat_ind(Pst *pst, IsdnStatus *ptr);		//Status indication
typedef int f_isdn_stat_ind_err(Pst *pst, IsdnStatus *ptr);	//Status indication(error)
typedef int f_isdn_resu_ind(Pst *pst, IsdnResuRejReq *ptr);		//Resume indication
typedef int f_isdn_rej_ind(Pst *pst, IsdnResuRejReq *ptr);	//Reject indication
typedef int f_Isdn_susp_ind(Pst *pst, IsdnSusp *ptr);		//Suspend indication
typedef int f_isdn_restart_req(Pst *pst, IsdnRestart *ptr);		//Restart request
typedef int f_isdn_rest_cnf(Pst *pst, IsdnRestAck *ptr);		//Restart confirm
typedef int f_isdn_timeout_ind(Pst *pst);			//TIMEOUT
typedef int f_isdn_reattempt_ind(Pst *pst);		//REATTEMPT
//ansi
typedef int f_isdn_service_ind(Pst *pst, IsdnService *ptr);	//Service
typedef int f_isdn_service_cnf(Pst *pst, IsdnServAck *ptr);	//Service Ack
typedef int f_isdn_ser_timeout_ind(Pst *pst);		//Service TIMEOUT

typedef struct _isdn_eventhandle_struct
{
	f_isdn_setup_ind		*h_isdn_setup_ind;
	f_isdn_setup_cnf		*h_isdn_setup_cnf;
	f_isdn_proc_ind			*h_isdn_proc_ind;
	f_isdn_alert_ind		*h_isdn_alert_ind;
	f_isdn_disc_ind			*h_isdn_disc_ind;
	f_isdn_rel_ind			*h_isdn_rel_ind;
	f_isdn_rel_cnf			*h_isdn_rel_cnf;
	f_isdn_rel_cnf_err		*h_isdn_rel_cnf_err;
	f_isdn_prog_ind			*h_isdn_prog_ind;
	f_isdn_info_ind			*h_isdn_info_ind;
	f_isdn_minfo_ind		*h_isdn_minfo_ind;
	f_isdn_noti_ind			*h_isdn_noti_ind;
	f_isdn_stat_ind			*h_isdn_stat_ind;
	f_isdn_stat_ind_err		*h_isdn_stat_ind_err;
	f_isdn_resu_ind			*h_isdn_resu_ind;
	f_isdn_rej_ind			*h_isdn_rej_ind;
//	f_isdn_susp_ind			*h_isdn_susp_ind;
	f_isdn_restart_req		*h_isdn_restart_req;
	f_isdn_rest_cnf		*h_isdn_rest_cnf;
	f_isdn_timeout_ind		*h_isdn_timeout_ind;
	f_isdn_reattempt_ind	*h_isdn_reattempt_ind;

	//ansi
	f_isdn_service_ind		*h_isdn_service_ind;
	f_isdn_service_cnf		*h_isdn_service_cnf;
	f_isdn_ser_timeout_ind	*h_isdn_ser_timeout_ind;

}ISDN_EventHandle_struct;

typedef struct _isdn_sap_attrib_
{
	ISDN_EventHandle_struct event_handle;
}ISDN_Sap_Attrib_;



/************************************************************
ISDN Module interface
************************************************************/

//Receive upper layer interface primitives
extern int isdn_setup_req(Pst *pst, IsdnSetup *ptr);			//Setup request
extern int isdn_setup_resp(Pst *pst, IsdnConn *ptr);			//Setup response
//extern int isdn_setup_comp_req(Pst *pst, IsdnConnAck *ptr);	//Setup complete request
extern int isdn_call_proc_req(Pst *pst, IsdnCallProc *ptr);			//Proceeding request
extern int isdn_alert_req(Pst *pst, IsdnAlert *ptr);			//Alerting request
extern int isdn_disc_req(Pst *pst, IsdnDisc *ptr);				//Disconnect request
extern int isdn_rel_req(Pst *pst, IsdnRel *ptr);				//Release request
extern int isdn_rej_req(Pst *pst, IsdnRelComp *ptr);			//Reject request
extern int isdn_prog_req(Pst *pst, IsdnProg *ptr);				//Progress request
extern int isdn_info_req(Pst *pst, IsdnInfo *ptr);				//Infomation request
extern int isdn_m_info_req(Pst *pst, IsdnSetupAck *ptr);		//More Infomation request	//IsdnSetupAck »ò IsdnInfo
extern int isdn_noti_req(Pst *pst, IsdnNoti *ptr);				//Notify request
extern int isdn_rej_req(Pst *pst, IsdnRelComp *ptr);			//Reject request
extern int isdn_resu_resp(Pst *pst, IsdnResuResp *ptr);		//Resume response
extern int isdn_resu_rej_req(Pst *pst, IsdnResuRejReq *ptr);	//Resume reject request
extern int isdn_susp_resp(Pst *pst, IsdnSusp *ptr);			//Suspend response
extern int isdn_susp_rej_req(Pst *pst, IsdnSuspRejReq *ptr);	//Suspend reject request
extern int isdn_restart_req(Pst *pst, IsdnRestart *ptr);		//Restart request
extern int isdn_m_restart_req(Pst *pst, IsdnRestart *ptr);	//Management restart request
extern int isdn_restart_cnf(Pst *pst, IsdnRestAck *ptr);		//Restart confirm
extern int isdn_timeout(Pst *pst);			//Time out
//ansi
extern int isdn_service_bc_req(Pst *pst, IsdnService *ptr);		//maintenance B-channel SERVICE request
extern int isdn_service_bc_rsp(Pst *pst, IsdnServAck *ptr);	//maintenance B-channel SERVICE response


#endif
