//Source file: gcc_interfaces.idl
//Date:  14 February 2002
//Generic Call Control Interfaces for ETSI ES 201 915-4 v.1.2.1, Parlay 3.1


#ifndef __GCC_INTERFACES_DEFINED
#define __GCC_INTERFACES_DEFINED



#include "osa.idl"
#include "common_cc_data.idl"
#include "gcc_data.idl"

module org {
	
	module csapi {
		
		module cc {
			
			module gccs {

				interface IpCall;
				
				struct TpCallIdentifier {
					IpCall CallReference;
					TpSessionID CallSessionID;
				};
				
				
				
				interface IpAppCall : IpInterface {
					
					void routeRes (
						in TpSessionID callSessionID,	
						in TpCallReport eventReport,	
						in TpSessionID callLegSessionID	
						);
						
					
					void routeErr (
						in TpSessionID callSessionID,	
						in TpCallError errorIndication,	
						in TpSessionID callLegSessionID	
						);
						
					
					void getCallInfoRes (
						in TpSessionID callSessionID,	
						in TpCallInfoReport callInfoReport	
						);
						
					
					void getCallInfoErr (
						in TpSessionID callSessionID,	
						in TpCallError errorIndication	
						);
						
					
					void superviseCallRes (
						in TpSessionID callSessionID,	
						in TpCallSuperviseReport report,	
						in TpDuration usedTime	
						);
						
					
					void superviseCallErr (
						in TpSessionID callSessionID,	
						in TpCallError errorIndication	
						);
						
					
					void callFaultDetected (
						in TpSessionID callSessionID,	
						in TpCallFault fault	
						);
						
					
					void getMoreDialledDigitsRes (
						in TpSessionID callSessionID,	
						in TpString digits	
						);
						
					
					void getMoreDialledDigitsErr (
						in TpSessionID callSessionID,	
						in TpCallError errorIndication	
						);
						
					
					void callEnded (
						in TpSessionID callSessionID,	
						in TpCallEndedReport report	
						);
						
				};
				
				
				
				interface IpCall : IpService {
					
					TpSessionID routeReq (
						in TpSessionID callSessionID,	
						in TpCallReportRequestSet responseRequested,	
						in TpAddress targetAddress,	
						in TpAddress originatingAddress,	
						in TpAddress originalDestinationAddress,	
						in TpAddress redirectingAddress,	
						in TpCallAppInfoSet appInfo	
						)						
						raises (TpCommonExceptions, P_INVALID_SESSION_ID, P_INVALID_ADDRESS, P_UNSUPPORTED_ADDRESS_PLAN, P_INVALID_NETWORK_STATE, P_INVALID_CRITERIA, P_INVALID_EVENT_TYPE);
						
					
					void release (
						in TpSessionID callSessionID,	
						in TpCallReleaseCause cause	
						)						
						raises (TpCommonExceptions, P_INVALID_SESSION_ID, P_INVALID_NETWORK_STATE);
						
					
					void deassignCall (
						in TpSessionID callSessionID	
						)						
						raises (TpCommonExceptions, P_INVALID_SESSION_ID);
						
					
					void getCallInfoReq (
						in TpSessionID callSessionID,	
						in TpCallInfoType callInfoRequested	
						)						
						raises (TpCommonExceptions, P_INVALID_SESSION_ID);
						
					
					void setCallChargePlan (
						in TpSessionID callSessionID,	
						in TpCallChargePlan callChargePlan	
						)						
						raises (TpCommonExceptions,P_INVALID_SESSION_ID);
						
					
					void setAdviceOfCharge (
						in TpSessionID callSessionID,	
						in TpAoCInfo aOCInfo,	
						in TpDuration tariffSwitch	
						)						
						raises (TpCommonExceptions, P_INVALID_SESSION_ID);
						
					
					void getMoreDialledDigitsReq (
						in TpSessionID callSessionID,	
						in TpInt32 length	
						)						
						raises (TpCommonExceptions, P_INVALID_SESSION_ID);
						
					
					void superviseCallReq (
						in TpSessionID callSessionID,	
						in TpDuration time,	
						in TpCallSuperviseTreatment treatment	
						)						
						raises (TpCommonExceptions, P_INVALID_SESSION_ID);
						
				};
				
				
				
				interface IpAppCallControlManager : IpInterface {
					
					void callAborted (
						in TpSessionID callReference	
						);
						
					
					IpAppCall callEventNotify (
						in TpCallIdentifier callReference,	
						in TpCallEventInfo eventInfo,	
						in TpAssignmentID assignmentID	
						);
						
					
					void callNotificationInterrupted ();
						
					
					void callNotificationContinued ();
						
					
					void callOverloadEncountered (
						in TpAssignmentID assignmentID	
						);
						
					
					void callOverloadCeased (
						in TpAssignmentID assignmentID	
						);
						
				};
				
				
				
				interface IpCallControlManager : IpService {
					
					TpCallIdentifier createCall (
						in IpAppCall appCall	
						)						
						raises (TpCommonExceptions, P_INVALID_INTERFACE_TYPE);
						
					
					TpAssignmentID enableCallNotification (
						in IpAppCallControlManager appCallControlManager,	
						in TpCallEventCriteria eventCriteria	
						)						
						raises (TpCommonExceptions, P_INVALID_CRITERIA, P_INVALID_INTERFACE_TYPE, P_INVALID_EVENT_TYPE);
						
					
					void disableCallNotification (
						in TpAssignmentID assignmentID	
						)						
						raises (TpCommonExceptions, P_INVALID_ASSIGNMENT_ID);
						
					
					TpAssignmentID setCallLoadControl (
						in TpDuration duration,	
						in TpCallLoadControlMechanism mechanism,	
						in TpCallTreatment treatment,	
						in TpAddressRange addressRange	
						)						
						raises (TpCommonExceptions, P_INVALID_ADDRESS, P_UNSUPPORTED_ADDRESS_PLAN);
						
					
					void changeCallNotification (
						in TpAssignmentID assignmentID,	
						in TpCallEventCriteria eventCriteria	
						)						
						raises (TpCommonExceptions, P_INVALID_ASSIGNMENT_ID, P_INVALID_CRITERIA, P_INVALID_EVENT_TYPE);
						
					
					TpCallEventCriteriaResultSet getCriteria ()						
						raises (TpCommonExceptions);
						
				};
				
				
			};
			
		};
		
	};
	
};

#endif
