B.4 IDL for MBMS RTP streaming delivery Service API

26.3473GPPApplication Programming Interface and URLMultimedia Broadcast/Multicast Service (MBMS)Release 17TS

#include "EmbmsCommonTypes.idl"

module PacketService

{

//Forward Declaration

interface ILTEPacketServiceCallback;

/**

* @name PacketErrorCode

* @brief List of the errors for Packet service

*/

enum PacketErrorCode

{

PACKET_INVALID_SERVICE, /**< Invalid service ID */

PACKET_UNKNOWN_ERROR /**< Unknown error */

MISSING_PARAMETER /**< parameter is missing */

NON_SUPPORTED_SERVICE_TYPE /**< non supported service type */

};

/**

* @name StalledReasonCode

* @brief List of the reasons for Packet service stalled notification

*/

enum StalledReasonCode

{

RADIO_CONFLICT, /**< Radio frequency conflict */

END_OF_SESSION, /**< End of session schedule */

OUT_OF_COVERAGE, /**< Out of EMBMS coverage */

OUT_OF_SERVICE, /**< Out of service */

BEARER_UNAVAILABLE, /**< Bearer not available */

STALLED_UNKNOWN_REASON /**< Unknown reason */

};

/**

* @name ServiceType

* @brief List of service types

*/

enum ServiceType

{

RTP /**< Service Type for RTP */

TRANSPARENT /**< Service Type for TRANSPARENT */

TRANSPARENT-ROM /**< Service Type for TRANSPARENT and ROM */

};

/**

* @name RegisterPacketAppData

* @brief Packet Application registration information

*/

struct RegisterPacketAppData

{

string ServiceType; /** The requested service type)

string appId; /**< The application ID used during the registration */

any platformSpecificAppContext; /**< The platformSpecificAppContext provides

a platform-specific Application context

object to enable the API implementation to get extra information

about the application. */

sequence<string> serviceClassList; /**< List of service classes */

};

/**

* @name PacketServiceClassList

* @brief ServiceClass information which the Application is interested in. It is for setPacketServiceClassFilter API.

*/

typedef sequence<string> PacketServiceClassList;

/**

* @name ServiceNameLang

* @brief Name and language information

*/

struct ServiceNameLang

{

string name; /**< Name */

string lang; /**< Language */

};

/**

* @name PacketServiceInfo

* @brief Packet service information

*/

struct PacketServiceInfo

{

sequence<ServiceNameLang> serviceNameList; /**< List of Service name and language */

string serviceClass; /**< Service class */

string serviceId; /**< Service ID */

string serviceLanguage; /**< Service language */

EmbmsCommonTypes::ServiceAvailabilityType serviceBroadcastAvailability; /**< Service availability */

string sdpUri; /**< SDP URI used by Packet player */

string interfaceName; /**< The network interface name used by the Packet player to receive the data described in the SDP. */

EmbmsCommonTypes::Date activeServicePeriodStartTime; /**< The current/next active Packet service start time, when Packet data

starts being broadcast over the air */

EmbmsCommonTypes::Date activeServicePeriodEndTime; /**< The current/next active Packet service end time, when Packet data

stops being broadcast over the air */

sequence<long> SAIList; /**< Service Area IDs based on current location of the device*/

};

/**

* @name PacketServices

* @brief List of Packet service info objects

*/

typedef sequence<PacketServiceInfo> PacketServices;

/**

* @name StartPacketServiceData

* @brief Start Packet service information. It is used by StartPacketService API.

*/

struct StartPacketServiceData

{

string serviceId; /**< Streaming service Id from PacketServiceInfo */

};

/**

* @name StopPacketServiceData

* @brief Stop Packet service information.

* It is used by the StopPacketService API.

*/

struct StopPacketServiceData

{

string serviceId; /**< Streaming service ID from PacketServiceInfo */

};

/**

* @name ServiceStartedNotification

* @brief Packet service started information. It is used by the ServiceStartedNotification API.

*/

struct ServiceStartedNotification

{

string serviceId; /**< Streaming service Id from PacketServiceInfo */

};

/**

* @name ServiceStoppedNotification

* @brief Packet service stopped information. It is used by the ServiceStoppedNotification API.

*/

struct ServiceStoppedNotification

{

string serviceId; /**< Streaming service Id from PacketServiceInfo */

};

/**

* @name PacketServiceErrorNotification

* @brief Packet service error information. It is used by the PacketServiceErrorNotification API.

*/

struct PacketServiceErrorNotification

{

string serviceId; /**< Packet service Id from PacketServiceInfo */

PacketErrorCode errorCode; /**< Packet service error Id */

string errorMsg; /**< error message */

};

/**

* @name ServiceStalledNotification

* @brief Packet service stalled information. It is used by the ServiceStalledNotification API.

*/

struct ServiceStalledNotification

{

string serviceId; /**< Packet service ID from PacketServiceInfo */

StalledReasonCode reason; /**< Packet service stalled reason ID */

};

/**

* @name RegisterPacketResponseNotification

* @brief Packet Application registeration response information

*/

struct RegisterPacketResponseNotification

{

EmbmsCommonTypes::RegResponseCode value; /**< Result of registeration value as defined in RegResponseCode */

string message; /**< message described the result */

};

interface ILTEPacketService

{

/**

@name getVersion

@brief Retrieves the version of the current Packet service interface implementation

@return Interface version

**/

string getVersion();

/**

@name registerPacketApp

@brief Application registers a callback listener with the EMBMS client

@param[in] regInfo information required for application registration.

@param[in] cb callback listener

@see RegisterPacketAppData

@see registerPacketResponse()

@return ResultCode

**/

EmbmsCommonTypes::ResultCode registerPacketApp(in RegisterPacketAppData regInfo, in ILTEPacketServiceCallback callBack);

/**

@name deregisterPacketApp

@brief Application deregisters with the EMBMS client

@pre Application calls register

@return ResultCode

**/

EmbmsCommonTypes::ResultCode deregisterPacketApp();

/**

@name startPacketService

@brief Start receiving Packet data over broadcast

@param[in] StartPacketService Parameters for starting the Packet services API

@pre Application is registered for Packet service

@see StartPacketServiceData

@see serviceStarted()

@see packetServiceError()

@return ResultCode

**/

EmbmsCommonTypes::ResultCode startPacketService(in StartPacketServiceData serviceInfo);

/**

@name stopPacketService

@brief Stop receiving Packet data over broadcast

@param[in] StopPacketService Parameters for stoping the Packet services API

@pre Application is registered for Packet service

@see serviceStopped()

@see StopPacketServiceData

@return ResultCode

**/

EmbmsCommonTypes::ResultCode stopPacketService(in StopPacketServiceData serviceInfo);

/**

@name setPacketServiceClassFilter

@brief Application sets a filter on Packet services in which it is interested

@param[in] serviceClassInfo List of service class filters requested by the application

@pre Application is registered successfully with Packet service

@see serviceUpdate()

@see getPacketServices()

@return ResultCode

**/

EmbmsCommonTypes::ResultCode setPacketServiceClassFilter(in PacketServiceClassList serviceClassList);

/**

@name getPacketServices

@brief Retrieves the list of Packet services defined in the USD.

List of services is filtered by the service class filter,

if a filter has been set by the application.

@param[out] PacketServices List of filtered Packet services

@pre Application is registered for Packet service and received packetServiceListUpdate notification

@see PacketServices

@see packetServiceListUpdate()

@return ResultCode

**/

EmbmsCommonTypes::ResultCode getPacketServices(out PacketServices services);

};

interface ILTEPacketServiceCallback

{

/**

@name registerPacketResponse

@brief The response to the application Packet service register API.

@param Notification Parameters for registering a Packet response

@pre Application called registerPacketApp

@see RegisterPacketResponseNotification

@see registerPacketApp()

**/

void registerPacketResponse(in RegisterPacketResponseNotification info);

/**

@name serviceStarted

@brief Notification to application that Packet service is started and

media player may be initialized for playback

@param Notification Parameters for service started notification.

ServiceStartedNotification previously defined.

@pre Application is registered for Packet service and called startPacketService

@see ServiceStartedNotification

**/

void serviceStarted(in ServiceStartedNotification notification);

/**

@name serviceStopped

@brief Notification to application that Packet service is stopped and

media player may be stopped for playback

@param Notification Parameters for service started notification

@pre Application is registered for Packet service and called stopPacketService

@see ServiceStoppedNotification

**/

void serviceStopped(in ServiceStoppedNotification notification);

/**

@name packetServiceError

@brief Notification to application when there is an error with broadcast download of service

@param Notification Parameters for service error notification

@pre Application is registered for Packet service and called startPacketService

@see PacketServiceErrorNotification

**/

void packetServiceError(in PacketServiceErrorNotification notification);

/**

@name serviceStalled

@brief Notification to application when there is a temporary disruption of

the broadcast download of service

@param Notification Parameters for Packet service stalled notification

@pre Application is registered for Packet service and called startPacketService

@see ServiceStalledNotification

**/

void serviceStalled(in ServiceStalledNotification notification);

/**

@name packetServiceListUpdate

@brief Notification to application on an update that is available for Packet services.

Update may be due to the received USD or the network configuration.

@pre Application is registered for Packet service.

@post call getPacketServices()

**/

void packetServiceListUpdate();

};

};

Annex C (informative) :
IANA registration for MBMS URLs