C_svc.idl



#ifndef __PROSPECT_SUBSCRIPTION_IDLFILE_C_svc_idl__
#define __PROSPECT_SUBSCRIPTION_IDLFILE_C_svc_idl__




///////////////////////////////////////////////////////////////////////
//
// Common Service Management Type Definitions
// Description: Types common to all trial 1 IDL definitions related to
// service management.
// Created: 29/7/96
// By: D.Lewis, A.DaCruz
//
///////////////////////////////////////////////////////////////////////
// Modifications:
//	Date: 29/7/96
//	By: D.Lewis
//	Reason: initial version based on TINA/TANGRAM accounting and
//		subscription models.
//	Date: 13/9/96
//     	By: T.Tiropanis
//     	Reason: Added struct t_SvcRef
//	Date: 2/10/96
//     	By: T.Tiropanis
//     	Reason: Changed definition of struct t_SvcRef;
//		added type t_SvcRefList
//	Date: 22/10/96
//     	By: T.Tiropanis
//     	Reason: Changed all identifiers with SVC to Svc
//	Date: 22/10/96
//     	By: T.Tiropanis
//     	Reason: Added Personal Profile definition
//
//	Date: 5/9/97
//	By: D.Lewis
//	Reason:
//		- in struct t_PersonalProfile replace "t_KeyRef Key_ref"
//		  with "boolean security_on"
//
///////////////////////////////////////////////////////////////////////




#include "C_typ.idl"




///////////////////////////////////////////////////////////////////////
// Identifier for services. These need only be unique within the scope
// of a specific service provider.

typedef string			t_SvcId;
typedef sequence  t_SvcId 	t_SvcIdList;



///////////////////////////////////////////////////////////////////////
// Globally unique identifier for service providers.

typedef string				t_SvcProviderId;
typedef sequence  t_SvcProviderId 	t_SvcProviderIdList;



///////////////////////////////////////////////////////////////////////
// Service Type represents the type of a service rather than its
// contents, i.e. the service type should characterise the media and
// mode of deleivery of the service. The type refers to a service
// (taken from possibly several service templates offered by a
// provider) subscribed to by a cusotmer.
// Since it is currently not possible to completely enumerate this type
// a string is used instead.
// Possible string values are for trial 1 are :
//
//		TesSelfPacedCourse
//		TesInteactiveCourse
//		MmcAudioOnlyService
//		MmcFullService
//		HmService
//		GsService
//		VpnService

typedef string	t_SvcType;



///////////////////////////////////////////////////////////////////////
// This structure indicate the terminal type.
// Since it is currently not possible to completely enumerate this type
// a string is used instead.
// Possible string values are for trial 1 are :
//
//		PC,
//		Workstation,
//		TVset,
//		Videotelephone,
//		Cellularphone,
//		PBX,
//		VideoServer,
//		VideoBridge,
//		Telephone,
//		G4Fax,
//		IpRouter,
//		IpMcRouter

typedef string	t_TermType;



///////////////////////////////////////////////////////////////////////
// The following is used to determine the limitation of available QoS.
// Since it is currently not possible to completely enumerate this type
// a string is used instead.
// Possible string values are for trial 1 are :
//
//		NapTypeFixed,
//		NapTypeWireless

typedef string	t_NapType;



///////////////////////////////////////////////////////////////////////
// The following is for further studies.

typedef string	t_NapInfo;



///////////////////////////////////////////////////////////////////////
// Terminal presentation technology.
// Since it is currently not possible to completely enumerate this type
// a string is used instead.
// The original TANGRAM model suggested enumerations such as X11R6,
// WINDOWS95, MHEG, however fro trial 1 it is suggested that
// presentation support could be classified as WWW MIME types. This is
// for further study in A3.2

typedef string	t_PresentationSupport;



///////////////////////////////////////////////////////////////////////
// This structure contains information about the minimal required
// configuration of a service. This is used to specify a configuration
// for a particular service session.

struct t_RequiredConfiguration {

	t_TermType		term_type;
	t_NapType		nap_type;
	t_PresentationSupport	presentation_support;
};



///////////////////////////////////////////////////////////////////////
// Terminal Capability (e.g. Multimedia Capability with Audio-video
// connections, stereo, 3D video, synchronisation). The use of this
// structure is for further study for trial 1

typedef string			t_TermCap;



///////////////////////////////////////////////////////////////////////
// This information is used as a clue to select an appropriate
// terminal for a specific service. While t_TermType is physical
// ("what the terminal is (e.g. a PC)"), this is more logical
// ("what the terminal can do (e.g. audio-video display)").


struct t_TermConnAttributes { // Connection attributes

	boolean		has_connection_control_capabilities;
			// if no, then the followings are not applicable.

	string		supported_codings; // MPEG, etc.
	string		maximal_bandwidth;
	string		total_bandwidth;
	string		maximal_no_of_connections;
	string		maximal_qos;
};



struct t_TermServAttributes { // Service attributes

	boolean		has_svc_control_capabilities;
			// If no, then the followings are not applicable.

	string		supported_svcs;
	string		maximal_svc_processing_performance;
	string		maximal_no_of_svc_sessions;
};


struct t_TermAttributes {

	t_TermConnAttributes	term_conn_attr;
	t_TermServAttributes	term_serv_attr;
	boolean			is_portable;
};



///////////////////////////////////////////////////////////////////////
// Terminal Information with respect to service control, i.e. what the
// terminal can do, e.g. MPEG Terminal, Video Server, Database,
// Multimedia Document Server.

struct t_TermInfo {

	t_TermCap	term_cap;
			// What the terminal can do.

	t_TermAttributes term_attr;
			// And its restrictions/QoS.
};




///////////////////////////////////////////////////////////////////////
//	Description:	Definition of the some common definitions used
//			in the context of the Subscription Registrar
//			Computational Object.



struct t_Person {

	string		name;
	string		address;
	string		tel_no;
	};




///////////////////////////////////////////////////////////////////////
// Personal Profile Definition

struct t_PersonalProfile {

	t_Person	user_profile;
	t_UserId	user_id;
	t_Password	user_passwd;
	boolean		security_on;
};



///////////////////////////////////////////////////////////////////////
// The following is used to present an available service with
// information
// of the mininal required configuration.

struct t_SvcInfo {

	t_SvcId				svc_id;
	t_SvcType			svc_type;
	t_RequiredConfiguration		required_configuration;
};


typedef sequence  t_SvcInfo 		t_SvcList;




///////////////////////////////////////////////////////////////////////
//
// Service Reference. This type describes the service reference as they
// are returned from a UA when a service is selected.
// A service reference includes: the URL of
// the web page that the end-user's browser is to access, the mime type
// that describes the required plug-in and the list of interface
// references (i.e. USM interface reference) that must be known to
// the end-user application CO (UAP).

 
struct t_SvcRef {

        string		type;
        string		value;
};
 

typedef sequence  t_SvcRef 		t_SvcRefList;


//
// End of Common Service Definitions
///////////////////////////////////////////////////////////////////////




#endif