MSG File src/inet/transportlayer/rtp/RtpInterfacePacket.msg

Name

Type

Description

RtpIfpType

enum

An enumeration to distinguish the different functions of the RtpInterfacePacket.

RtpControlMsg

message

(no description)

RtpControlInfo

class

base class

RtpSessionControlInfo

class

base class

RtpCiEnterSession

class

App to Rtp

RtpCiSessionEntered

class

Rtp to App

RtpCiSenderControl

class

App to Rtp

RtpCiSenderStatus

class

Rtp to App

RtpCiLeaveSession

class

App to Rtp

RtpCiSessionLeft

class

Rtp to App

RtpCiCreateSenderModule

class

App to Rtp

RtpCiSenderModuleCreated

class

Rtp to App

RtpCiDeleteSenderModule

class

App to Rtp

RtpCiSenderModuleDeleted

class

Rtp to App

Source code

//
// Copyright (C) 2008 OpenSim Ltd.
// Copyright (C) 2001 Matthias Oppitz <[email protected]>
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//

import inet.common.INETDefs;
import inet.networklayer.contract.ipv4.Ipv4Address;
import inet.transportlayer.rtp.RtpSenderControlMessage;
import inet.transportlayer.rtp.RtpSenderStatusMessage;

namespace inet::rtp;

//
// An enumeration to distinguish the different functions of the
// RtpInterfacePacket.
//
enum RtpIfpType
{
    RTP_IFP_ENTER_SESSION = 1;
    RTP_IFP_SESSION_ENTERED = 2;
    RTP_IFP_CREATE_SENDER_MODULE = 3;
    RTP_IFP_SENDER_MODULE_CREATED = 4;
    RTP_IFP_DELETE_SENDER_MODULE = 5;
    RTP_IFP_SENDER_MODULE_DELETED = 6;
    RTP_IFP_SENDER_CONTROL = 7;
    RTP_IFP_SENDER_STATUS = 8;
    RTP_IFP_LEAVE_SESSION = 9;
    RTP_IFP_SESSION_LEFT = 10;
};

//
// The next classes are used for communication between an ~RtpApplication
// and an RTPLayer module. Its offers functionality for starting and stopping of an
// rtp session, transmission of files and feedback about the success of the
// operations.

message RtpControlMsg
{
};

// base class
class RtpControlInfo extends cObject
{
    RtpIfpType type;
};

// base class
class RtpSessionControlInfo extends RtpControlInfo
{
    uint32_t ssrc;
};

// App to ~Rtp
class RtpCiEnterSession extends RtpControlInfo
{
    type = RTP_IFP_ENTER_SESSION;
    string commonName;
    string profileName;
    int bandwidth;
    Ipv4Address destinationAddress;
    int port;
};

// ~Rtp to App
class RtpCiSessionEntered extends RtpSessionControlInfo
{
    type = RTP_IFP_SESSION_ENTERED;
};

// App to ~Rtp
class RtpCiSenderControl extends RtpSessionControlInfo
{
    type = RTP_IFP_SENDER_CONTROL;
    // from ~RtpSenderControlMessage:
    RtpSenderControlMessageCommands command;
    float commandParameter1;
    float commandParameter2;
}

// ~Rtp to App
class RtpCiSenderStatus extends RtpSessionControlInfo
{
    type = RTP_IFP_SENDER_STATUS;
    // from ~RtpSenderStatusMessage:
    RtpSenderStatus status;
    uint32_t timeStamp;
};

// App to ~Rtp
class RtpCiLeaveSession extends RtpControlInfo
{
    type = RTP_IFP_LEAVE_SESSION;
    // TODO do I need any sesson identifier?
};

// ~Rtp to App
class RtpCiSessionLeft extends RtpControlInfo
{
    type = RTP_IFP_SESSION_LEFT;
    // TODO do I need any sesson identifier?
};

// App to ~Rtp
class RtpCiCreateSenderModule extends RtpSessionControlInfo
{
    type = RTP_IFP_CREATE_SENDER_MODULE;
    int payloadType;
    string fileName;
};

// ~Rtp to App
class RtpCiSenderModuleCreated extends RtpSessionControlInfo
{
    type = RTP_IFP_SENDER_MODULE_CREATED;
};

// App to ~Rtp
class RtpCiDeleteSenderModule extends RtpSessionControlInfo
{
    type = RTP_IFP_DELETE_SENDER_MODULE;
};

// ~Rtp to App
class RtpCiSenderModuleDeleted extends RtpSessionControlInfo
{
    type = RTP_IFP_SENDER_MODULE_DELETED;
};