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