//Source file: ui_interfaces.idl
//Date:  25 March 2003
//User Interaction Interfaces for 3GPP TS 29.198-05 V4.6.0


#ifndef __UI_INTERFACES_DEFINED
#define __UI_INTERFACES_DEFINED



#include "osa.idl"
#include "ui_data.idl"
#include "gcc_interfaces.idl"
#include "mpcc_interfaces.idl"

module org {
	
	module csapi {
		
		
		
		module ui {
			
			interface IpUI;
			interface IpAppUI;
			interface IpUICall;
			interface IpAppUICall;
			
			struct TpUIIdentifier {
				IpUI UIRef;
				TpSessionID UserInteractionSessionID;
			};
			
			struct TpUICallIdentifier {
				IpUICall UICallRef;
				TpSessionID UserInteractionSessionID;
			};
			
			enum TpUITargetObjectType {

				P_UI_TARGET_OBJECT_CALL,
				P_UI_TARGET_OBJECT_MULTI_PARTY_CALL,
				P_UI_TARGET_OBJECT_CALL_LEG				
			};
			
			union TpUITargetObject switch(TpUITargetObjectType) {
				case P_UI_TARGET_OBJECT_CALL: cc::gccs::TpCallIdentifier Call;
				case P_UI_TARGET_OBJECT_MULTI_PARTY_CALL: cc::mpccs::TpMultiPartyCallIdentifier MultiPartyCall;
				case P_UI_TARGET_OBJECT_CALL_LEG: cc::mpccs::TpCallLegIdentifier CallLeg;
			};
			
			
			
			interface IpAppUIManager : IpInterface {
				
				void userInteractionAborted (
					in TpUIIdentifier userInteraction	
					);
					
				
				IpAppUI reportNotification (
					in TpUIIdentifier userInteraction,	
					in TpUIEventInfo eventInfo,	
					in TpAssignmentID assignmentID	
					);
					
				
				void userInteractionNotificationInterrupted ();
					
				
				void userInteractionNotificationContinued ();
					
				
				IpAppUI reportEventNotification (
					in TpUIIdentifier userInteraction,	
					in TpUIEventNotificationInfo eventNotificationInfo,	
					in TpAssignmentID assignmentID	
					);
					
			};
			
			
			
			interface IpUIManager : IpService {
				
				TpUIIdentifier createUI (
					in IpAppUI appUI,	
					in TpAddress userAddress	
					)					
					raises (TpCommonExceptions, P_INVALID_NETWORK_STATE, P_INVALID_INTERFACE_TYPE);
					
				
				TpUICallIdentifier createUICall (
					in IpAppUICall appUI,	
					in TpUITargetObject uiTargetObject	
					)					
					raises (TpCommonExceptions, P_INVALID_NETWORK_STATE, P_INVALID_INTERFACE_TYPE);
					
				
				TpAssignmentID createNotification (
					in IpAppUIManager appUIManager,	
					in TpUIEventCriteria eventCriteria	
					)					
					raises (TpCommonExceptions, P_INVALID_CRITERIA, P_INVALID_INTERFACE_TYPE);
					
				
				void destroyNotification (
					in TpAssignmentID assignmentID	
					)					
					raises (TpCommonExceptions, P_INVALID_ASSIGNMENT_ID);
					
				
				void changeNotification (
					in TpAssignmentID assignmentID,	
					in TpUIEventCriteria eventCriteria	
					)					
					raises (TpCommonExceptions, P_INVALID_ASSIGNMENT_ID, P_INVALID_CRITERIA);
					
				
				TpUIEventCriteriaResultSet getNotification ()					
					raises (TpCommonExceptions);
					
			};
			
			
			
			interface IpAppUI : IpInterface {
				
				void sendInfoRes (
					in TpSessionID userInteractionSessionID,	
					in TpAssignmentID assignmentID,	
					in TpUIReport response	
					);
					
				
				void sendInfoErr (
					in TpSessionID userInteractionSessionID,	
					in TpAssignmentID assignmentID,	
					in TpUIError error	
					);
					
				
				void sendInfoAndCollectRes (
					in TpSessionID userInteractionSessionID,	
					in TpAssignmentID assignmentID,	
					in TpUIReport response,	
					in TpString collectedInfo	
					);
					
				
				void sendInfoAndCollectErr (
					in TpSessionID userInteractionSessionID,	
					in TpAssignmentID assignmentID,	
					in TpUIError error	
					);
					
				
				void userInteractionFaultDetected (
					in TpSessionID userInteractionSessionID,	
					in TpUIFault fault	
					);
					
			};
			
			
			
			interface IpUI : IpService {
				
				TpAssignmentID sendInfoReq (
					in TpSessionID userInteractionSessionID,	
					in TpUIInfo info,	
					in TpLanguage language,	
					in TpUIVariableInfoSet variableInfo,	
					in TpInt32 repeatIndicator,	
					in TpUIResponseRequest responseRequested	
					)					
					raises (TpCommonExceptions,P_INVALID_SESSION_ID,P_INVALID_NETWORK_STATE,P_ILLEGAL_ID,P_ID_NOT_FOUND);
					
				
				TpAssignmentID sendInfoAndCollectReq (
					in TpSessionID userInteractionSessionID,	
					in TpUIInfo info,	
					in TpLanguage language,	
					in TpUIVariableInfoSet variableInfo,	
					in TpUICollectCriteria criteria,	
					in TpUIResponseRequest responseRequested	
					)					
					raises (TpCommonExceptions,P_INVALID_SESSION_ID,P_INVALID_NETWORK_STATE,P_ILLEGAL_ID,P_ID_NOT_FOUND,P_INVALID_CRITERIA,P_ILLEGAL_RANGE,P_INVALID_COLLECTION_CRITERIA);
					
				
				void release (
					in TpSessionID userInteractionSessionID	
					)					
					raises (TpCommonExceptions,P_INVALID_SESSION_ID);
					
			};
			
			
			
			interface IpAppUICall : IpAppUI {
				
				void recordMessageRes (
					in TpSessionID userInteractionSessionID,	
					in TpAssignmentID assignmentID,	
					in TpUIReport response,	
					in TpInt32 messageID	
					);
					
				
				void recordMessageErr (
					in TpSessionID userInteractionSessionID,	
					in TpAssignmentID assignmentID,	
					in TpUIError error	
					);
					
				
				void deleteMessageRes (
					in TpSessionID usrInteractionSessionID,	
					in TpUIReport response,	
					in TpAssignmentID assignmentID	
					);
					
				
				void deleteMessageErr (
					in TpSessionID usrInteractionSessionID,	
					in TpUIError error,	
					in TpAssignmentID assignmentID	
					);
					
				
				void abortActionRes (
					in TpSessionID userInteractionSessionID,	
					in TpAssignmentID assignmentID	
					);
					
				
				void abortActionErr (
					in TpSessionID userInteractionSessionID,	
					in TpAssignmentID assignmentID,	
					in TpUIError error	
					);
					
			};
			
			
			
			interface IpUICall : IpUI {
				
				TpAssignmentID recordMessageReq (
					in TpSessionID userInteractionSessionID,	
					in TpUIInfo info,	
					in TpUIMessageCriteria criteria	
					)					
					raises (TpCommonExceptions,P_INVALID_SESSION_ID,P_INVALID_NETWORK_STATE,P_ILLEGAL_ID,P_ID_NOT_FOUND,P_INVALID_CRITERIA);
					
				
				TpAssignmentID deleteMessageReq (
					in TpSessionID usrInteractionSessionID,	
					in TpInt32 messageID	
					)					
					raises (TpCommonExceptions,P_INVALID_SESSION_ID,P_ILLEGAL_ID,P_ID_NOT_FOUND);
					
				
				void abortActionReq (
					in TpSessionID userInteractionSessionID,	
					in TpAssignmentID assignmentID	
					)					
					raises (TpCommonExceptions,P_INVALID_SESSION_ID,P_INVALID_ASSIGNMENT_ID);
					
			};
			
			
		};
		
	};
	
};

#endif
