//Source file: osa.idl
//Date:  14 March 2002
//Common Data Types for ETSI ES 201 915-2 v.1.2.1, Parlay 3.1


#ifndef __OSA_DEFINED
#define __OSA_DEFINED



module org {
	
	module csapi {
		
		
		
		enum TpAddressError {

			
			P_ADDRESS_INVALID_UNDEFINED,
			
			P_ADDRESS_INVALID_MISSING,
			
			P_ADDRESS_INVALID_MISSING_ELEMENT,
			
			P_ADDRESS_INVALID_OUT_OF_RANGE,
			
			P_ADDRESS_INVALID_INCOMPLETE,
			
			P_ADDRESS_INVALID_CANNOT_DECODE			
		};
		
		
		
		enum TpAddressPlan {

			
			P_ADDRESS_PLAN_NOT_PRESENT,
			
			P_ADDRESS_PLAN_UNDEFINED,
			
			P_ADDRESS_PLAN_IP,
			
			P_ADDRESS_PLAN_MULTICAST,
			
			P_ADDRESS_PLAN_UNICAST,
			
			P_ADDRESS_PLAN_E164,
			
			P_ADDRESS_PLAN_AESA,
			
			P_ADDRESS_PLAN_URL,
			
			P_ADDRESS_PLAN_NSAP,
			
			P_ADDRESS_PLAN_SMTP,
			
			P_ADDRESS_PLAN_MSMAIL,
			
			P_ADDRESS_PLAN_X400,
			P_ADDRESS_PLAN_SIP,
			P_ADDRESS_PLAN_ANY			
		};
		
		
		
		enum TpAddressPresentation {

			
			P_ADDRESS_PRESENTATION_UNDEFINED,
			
			P_ADDRESS_PRESENTATION_ALLOWED,
			
			P_ADDRESS_PRESENTATION_RESTRICTED,
			
			P_ADDRESS_PRESENTATION_ADDRESS_NOT_AVAILABLE			
		};
		
		
		
		enum TpAddressScreening {

			
			P_ADDRESS_SCREENING_UNDEFINED,
			
			P_ADDRESS_SCREENING_USER_VERIFIED_PASSED,
			
			P_ADDRESS_SCREENING_USER_NOT_VERIFIED,
			
			P_ADDRESS_SCREENING_USER_VERIFIED_FAILED,
			
			P_ADDRESS_SCREENING_NETWORK			
		};
		
		
		
		typedef boolean TpBoolean;
		
		
		
		typedef float TpFloat;
		
		
		
		typedef long TpInt32;
		
		
		
		const TpInt32 P_METHOD_NOT_SUPPORTED = 22;
		
		
		const TpInt32 P_NO_CALLBACK_ADDRESS_SET = 17;
		
		
		const TpInt32 P_RESOURCES_UNAVAILABLE = 13;
		
		
		const TpInt32 P_TASK_CANCELLED = 15;
		
		
		const TpInt32 P_TASK_REFUSED = 14;
		
		
		typedef TpInt32 TpAssignmentID;
		
		
		
		typedef TpInt32 TpDuration;
		
		exception TpGeneralException {
			TpInt32 ExceptionType;
		};
		
		
		
		typedef TpInt32 TpSessionID;
		
		typedef sequence <TpSessionID> TpSessionIDSet;
		
		
		
		typedef string TpString;
		
		
		
		exception P_INVALID_ASSIGNMENT_ID {
			TpString ExtraInformation;
		};
		
		
		
		exception P_INVALID_TIME_AND_DATE_FORMAT {
			TpString ExtraInformation;
		};
		
		
		
		exception P_INVALID_EVENT_TYPE {
			TpString ExtraInformation;
		};
		
		
		
		exception P_INVALID_INTERFACE_NAME {
			TpString ExtraInformation;
		};
		
		
		
		exception P_INVALID_INTERFACE_TYPE {
			TpString ExtraInformation;
		};
		
		
		
		exception P_UNKNOWN_SUBSCRIBER {
			TpString ExtraInformation;
		};
		
		
		
		exception P_INFORMATION_NOT_AVAILABLE {
			TpString ExtraInformation;
		};
		
		
		
		struct TpAddress {
			
			TpAddressPlan Plan;
			
			TpString AddrString;
			TpString Name;
			
			TpAddressPresentation Presentation;
			
			TpAddressScreening Screening;
			
			TpString SubAddressString;
		};
		
		
		struct TpAddressRange {
			TpAddressPlan Plan;
			TpString AddrString;
			TpString Name;
			TpString SubAddressString;
		};
		
		
		
		typedef sequence <TpAddress> TpAddressSet;
		
		
		
		typedef TpString TpPrice;
		
		
		
		typedef TpString TpDate;
		
		
		
		typedef TpString TpDateAndTime;
		
		
		
		typedef TpString TpTime;
		
		
		
		typedef TpString TpURL;
		
		
		
		typedef TpString TpLanguage;
		
		
		
		enum TpCallAoCOrderCategory {

			
			P_CHARGE_ADVICE_INFO,
			
			P_CHARGE_PER_TIME,
			
			P_CHARGE_NETWORK			
		};
		
		
		
		struct TpCAIElements {
			TpInt32 UnitsPerInterval;
			TpInt32 SecondsPerTimeInterval;
			TpInt32 ScalingFactor;
			TpInt32 UnitIncrement;
			TpInt32 UnitsPerDataInterval;
			TpInt32 SegmentsPerDataInterval;
			TpInt32 InitialSecsPerTimeInterval;
			
			
		};
		
		
		
		struct TpChargeAdviceInfo {
			
			TpCAIElements CurrentCAI;
			
			TpCAIElements NextCAI;
			
			
		};
		
		
		
		struct TpChargePerTime {
			TpInt32 InitialCharge;
			TpInt32 CurrentChargePerMinute;
			TpInt32 NextChargePerMinute;
			
		};
		
		
		
		union TpAoCOrder switch(TpCallAoCOrderCategory) {
			case P_CHARGE_ADVICE_INFO: TpChargeAdviceInfo ChargeAdviceInfo;
			case P_CHARGE_PER_TIME: TpChargePerTime ChargePerTime;
			case P_CHARGE_NETWORK: TpString NetworkCharge;
		};
		
		
		
		struct TpAoCInfo {
			
			TpAoCOrder ChargeOrder;
			TpString Currency;
			
			
		};
		
		
		
		exception P_INVALID_NETWORK_STATE {
			TpString ExtraInformation;
		};
		
		
		
		exception P_INVALID_CRITERIA {
			TpString ExtraInformation;
		};
		
		
		
		const TpInt32 P_INVALID_STATE = 744;
		exception P_INVALID_SESSION_ID {
			TpString ExtraInformation;
		};
		
		exception P_SET_LENGTH_EXCEEDED {
			TpString ExtraInformation;
		};
		
		exception TpCommonExceptions {
			TpInt32 ExceptionType;
			TpString ExtraInformation;
		};
		
		exception P_INVALID_CURRENCY {
			TpString ExtraInformation;
		};
		
		exception P_INVALID_AMOUNT {
			TpString ExtraInformation;
		};
		
		
		
		struct TpTimeInterval {
			TpDateAndTime StartTime;
			TpDateAndTime StopTime;
		};
		
		
		
		exception P_APPLICATION_NOT_ACTIVATED {
			TpString ExtraInformation;
		};
		
		exception P_INVALID_ADDRESS {
			TpString ExtraInformation;
		};
		
		typedef octet TpOctet;
		
		typedef sequence <TpOctet> TpOctetSet;
		
		exception P_UNSUPPORTED_ADDRESS_PLAN {
			TpString ExtraInformation;
		};
		
		exception P_UNAUTHORISED_PARAMETER_VALUE {
			TpString ExtraInformation;
		};
		
		typedef string TpLongString;
		
		typedef any TpAny;
		
		typedef TpString TpAttributeType;
		
		const TpAttributeType P_STRING = "P_STRING";
		const TpAttributeType P_INT32 = "P_INT32";
		const TpAttributeType P_FLOAT = "P_FLOAT";
		struct TpAttribute {
			TpString AttributeName;
			TpAttributeType AttributeType;
			TpAny AttributeValue;
		};
		
		typedef sequence <TpAttribute> TpAttributeList;
		
		typedef sequence <TpAttribute> TpAttributeSet;

		

		interface IpInterface {
		};
		
		
		
		interface IpService : IpInterface {
			
			void setCallback (
				in IpInterface appInterface	
				)				
				raises (TpCommonExceptions, P_INVALID_INTERFACE_TYPE);
				
			
			void setCallbackWithSessionID (
				in IpInterface appInterface,	
				in TpSessionID sessionID	
				)				
				raises (TpCommonExceptions, P_INVALID_SESSION_ID, P_INVALID_INTERFACE_TYPE);
				
		};
		
		
		
	};
	
};

#endif
