//Source file: mpcc_data.idl
//Date:  14 February 2002
//Multi Party Call Control Data Types for ETSI ES 201 915-4 v.1.2.1, Parlay 3.1


#ifndef __MPCC_DATA_DEFINED
#define __MPCC_DATA_DEFINED



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

module org {
	
	module csapi {
		
		module cc {
			
			
			
			enum TpCallAppInfoType {

				
				P_CALL_APP_UNDEFINED,
				
				P_CALL_APP_ALERTING_MECHANISM,
				
				P_CALL_APP_NETWORK_ACCESS_TYPE,
				
				P_CALL_APP_TELE_SERVICE,
				
				P_CALL_APP_BEARER_SERVICE,
				
				P_CALL_APP_PARTY_CATEGORY,
				
				P_CALL_APP_PRESENTATION_ADDRESS,
				
				P_CALL_APP_GENERIC_INFO,
				
				P_CALL_APP_ADDITIONAL_ADDRESS,
				P_CALL_APP_ORIGINAL_DESTINATION_ADDRESS,
				P_CALL_APP_REDIRECTING_ADDRESS				
			};
			
			
			
			union TpCallAppInfo switch(TpCallAppInfoType) {
				case P_CALL_APP_ALERTING_MECHANISM: TpCallAlertingMechanism CallAppAlertingMechanism;
				case P_CALL_APP_NETWORK_ACCESS_TYPE: TpCallNetworkAccessType CallAppNetworkAccessType;
				case P_CALL_APP_TELE_SERVICE: TpCallTeleService CallAppTeleService;
				case P_CALL_APP_BEARER_SERVICE: TpCallBearerService CallAppBearerService;
				case P_CALL_APP_PARTY_CATEGORY: TpCallPartyCategory CallAppPartyCategory;
				case P_CALL_APP_PRESENTATION_ADDRESS: TpAddress CallAppPresentationAddress;
				case P_CALL_APP_GENERIC_INFO: TpString CallAppGenericInfo;
				case P_CALL_APP_ADDITIONAL_ADDRESS: TpAddress CallAppAdditionalAddress;
				case P_CALL_APP_ORIGINAL_DESTINATION_ADDRESS: TpAddress CallAppOriginalDestinationAddress;
				case P_CALL_APP_REDIRECTING_ADDRESS: TpAddress CallAppRedirectingAddress;
				default: short Dummy;	
			};
			
			
			
			typedef sequence <TpCallAppInfo> TpCallAppInfoSet;
			
			
			
			enum TpCallEventType {

				
				P_CALL_EVENT_UNDEFINED,
				
				P_CALL_EVENT_ORIGINATING_CALL_ATTEMPT,
				
				P_CALL_EVENT_ORIGINATING_CALL_ATTEMPT_AUTHORISED,
				
				P_CALL_EVENT_ADDRESS_COLLECTED,
				
				P_CALL_EVENT_ADDRESS_ANALYSED,
				
				P_CALL_EVENT_ORIGINATING_SERVICE_CODE,
				
				P_CALL_EVENT_ORIGINATING_RELEASE,
				
				P_CALL_EVENT_TERMINATING_CALL_ATTEMPT,
				
				P_CALL_EVENT_TERMINATING_CALL_ATTEMPT_AUTHORISED,
				
				P_CALL_EVENT_ALERTING,
				
				P_CALL_EVENT_ANSWER,
				
				P_CALL_EVENT_TERMINATING_RELEASE,
				
				P_CALL_EVENT_REDIRECTED,
				
				P_CALL_EVENT_TERMINATING_SERVICE_CODE,
				P_CALL_EVENT_QUEUED				
			};
			
			
			
			union TpCallAdditionalEventInfo switch(TpCallEventType) {
				case P_CALL_EVENT_ADDRESS_COLLECTED: TpAddress CollectedAddress;
				case P_CALL_EVENT_ADDRESS_ANALYSED: TpAddress CalledAddress;
				case P_CALL_EVENT_ORIGINATING_SERVICE_CODE: TpCallServiceCode OriginatingServiceCode;
				case P_CALL_EVENT_ORIGINATING_RELEASE: TpReleaseCause OriginatingReleaseCause;
				case P_CALL_EVENT_TERMINATING_RELEASE: TpReleaseCause TerminatingReleaseCause;
				case P_CALL_EVENT_REDIRECTED: TpAddress ForwardAddress;
				case P_CALL_EVENT_TERMINATING_SERVICE_CODE: TpCallServiceCode TerminatingServiceCode;
				default: short Dummy;	
			};
			
			
			
			struct TpCallNotificationScope {
				TpAddressRange DestinationAddress;
				TpAddressRange OriginatingAddress;
			};
			
			
			
			struct TpCallNotificationReportScope {
				TpAddress DestinationAddress;
				TpAddress OriginatingAddress;
			};
			
			
			
			typedef sequence<TpReleaseCause> TpReleaseCauseSet;
			
			
			
			union TpAdditionalCallEventCriteria switch(TpCallEventType) {
				case P_CALL_EVENT_ADDRESS_COLLECTED: TpInt32 MinAddressLength;
				case P_CALL_EVENT_ORIGINATING_SERVICE_CODE: TpCallServiceCodeSet OriginatingServiceCode;
				case P_CALL_EVENT_ORIGINATING_RELEASE: TpReleaseCauseSet OriginatingReleaseCauseSet;
				case P_CALL_EVENT_TERMINATING_RELEASE: TpReleaseCauseSet TerminatingReleaseCauseSet;
				case P_CALL_EVENT_TERMINATING_SERVICE_CODE: TpCallServiceCodeSet TerminatingServiceCode;
				default: short Dummy;	
			};
			
			
			
			struct TpCallEventRequest {
				TpCallEventType CallEventType;
				TpAdditionalCallEventCriteria AdditionalCallEventCriteria;
				TpCallMonitorMode CallMonitorMode;
			};
			
			
			
			typedef sequence <TpCallEventRequest> TpCallEventRequestSet;
			
			
			
			struct TpCallNotificationRequest {
				TpCallNotificationScope CallNotificationScope;
				TpCallEventRequestSet CallEventsRequested;
			};
			
			
			
			struct TpNotificationRequested {
				TpCallNotificationRequest AppCallNotificationRequest;
				TpInt32 AssignmentID;
			};
			
			
			
			typedef sequence <TpNotificationRequested> TpNotificationRequestedSet;
			
			enum TpCallLegAttachMechanism {

				P_CALLLEG_ATTACH_IMPLICITLY,
				P_CALLLEG_ATTACH_EXPLICITLY				
			};
			
			
			
			struct TpCallLegConnectionProperties {
				TpCallLegAttachMechanism AttachMechanism;
			};
			
			
			
			const TpInt32 P_CALL_LEG_INFO_UNDEFINED = 0;
			
			
			const TpInt32 P_CALL_LEG_INFO_TIMES = 1;
			
			
			const TpInt32 P_CALL_LEG_INFO_RELEASE_CAUSE = 2;
			
			
			const TpInt32 P_CALL_LEG_INFO_ADDRESS = 4;
			
			
			const TpInt32 P_CALL_LEG_INFO_APPINFO = 8;
			
			
			typedef TpInt32 TpCallLegInfoType;
			
			
			
			struct TpCallLegInfoReport {
				TpCallLegInfoType CallLegInfoType;
				TpDateAndTime CallLegStartTime;
				TpDateAndTime CallLegConnectedToResourceTime;
				TpDateAndTime CallLegConnectedToAddressTime;
				TpDateAndTime CallLegEndTime;
				TpAddress ConnectedAddress;
				TpReleaseCause CallLegReleaseCause;
				TpCallAppInfoSet CallAppInfo;
			};
			
			struct TpCallEventInfo {
				TpCallEventType CallEventType;
				TpCallAdditionalEventInfo AdditionalCallEventInfo;
				TpCallMonitorMode CallMonitorMode;
				TpDateAndTime CallEventTime;
			};
			
			
			
			struct TpCallNotificationInfo {
				TpCallNotificationReportScope CallNotificationReportScope;
				TpCallAppInfoSet CallAppInfo;
				TpCallEventInfo CallEventInfo;
			};
			
			typedef TpInt32 TpCallLegSuperviseTreatment;
			
			const TpInt32 P_CALL_LEG_SUPERVISE_RELEASE = 1;
			const TpInt32 P_CALL_LEG_SUPERVISE_RESPOND = 2;
			const TpInt32 P_CALL_LEG_SUPERVISE_APPLY_TONE = 4;
		};
		
	};
	
};

#endif
