oRTP: include/ortp/telephonyevents.h File Reference

# include/ortp/telephonyevents.h File Reference

Receiving and sending telephone events (RFC2833). More...

`#include <ortp/rtpsession.h>`

Go to the source code of this file.

## Data Structures
struct | _telephone_event
## Defines
#define | TELEPHONY_EVENTS_ALLOCATED_SIZE (4*sizeof(telephone_event_t))
#define | TEV_DTMF_0 (0)
#define | TEV_DTMF_1 (1)
#define | TEV_DTMF_2 (2)
#define | TEV_DTMF_3 (3)
#define | TEV_DTMF_4 (4)
#define | TEV_DTMF_5 (5)
#define | TEV_DTMF_6 (6)
#define | TEV_DTMF_7 (7)
#define | TEV_DTMF_8 (8)
#define | TEV_DTMF_9 (9)
#define | TEV_DTMF_STAR (10)
#define | TEV_DTMF_POUND (11)
#define | TEV_DTMF_A (12)
#define | TEV_DTMF_B (13)
#define | TEV_DTMF_C (14)
#define | TEV_DTMF_D (15)
#define | TEV_FLASH (16)
## Typedefs
typedef struct _telephone_event | telephone_event_t
## Functions
int | rtp_session_telephone_events_supported (RtpSession *session)
int | rtp_session_send_telephone_events_supported (RtpSession *session)
int | rtp_session_recv_telephone_events_supported (RtpSession *session)
mblk_t * | rtp_session_create_telephone_event_packet (RtpSession *session, int start)
int | rtp_session_add_telephone_event (RtpSession *session, mblk_t *packet, uint8_t event, int end, uint8_t volume, uint16_t duration)
int | rtp_session_read_telephone_event (RtpSession *session, mblk_t *packet, telephone_event_t **tab)
int | rtp_session_send_dtmf (RtpSession *session, char dtmf, uint32_t userts)
int | rtp_session_send_dtmf2 (RtpSession *session, char dtmf, uint32_t userts, int duration)
void | rtp_session_check_telephone_events (RtpSession *session, mblk_t *m0)

## Detailed Description

Receiving and sending telephone events (RFC2833).

## Function Documentation

int rtp_session_add_telephone_event | ( | RtpSession * | session,
|  | mblk_t * | packet,
|  | uint8_t | event,
|  | int | end,
|  | uint8_t | volume,
|  | uint16_t | duration |
| ) |  |  |

Parameters:

  | session | a rtp session.
  | packet | a rtp packet as a mblk_t
  | event | the event type as described in rfc2833, ie one of the TEV_* macros.
  | end | a boolean to indicate if the end bit should be set. (end of tone)
  | volume | the volume of the telephony tone, as described in rfc2833
  | duration | the duration of the telephony tone, in timestamp unit.

Adds a named telephony event to a rtp packet previously allocated using rtp_session_create_telephone_event_packet().

Returns:
  0 on success.

mblk_t* rtp_session_create_telephone_event_packet | ( | RtpSession * | session,
|  | int | start |
| ) |  |  |

Allocates a new rtp packet to be used to add named telephony events. The application can use then rtp_session_add_telephone_event() to add named events to the packet. Finally the packet has to be sent with rtp_session_sendm_with_ts().

Parameters:

  | session | a rtp session.
  | start | boolean to indicate if the marker bit should be set.

Returns:
  a message block containing the rtp packet if successfull, NULL if the rtp session cannot support telephony event (because the rtp profile it is bound to does not include a telephony event payload type).

References _RtpSession::snd, _RtpSession::ssrc, and _RtpSession::telephone_events_pt.

int rtp_session_read_telephone_event | ( | RtpSession * | session,
|  | mblk_t * | packet,
|  | telephone_event_t ** | tab |
| ) |  |  |

Reads telephony events from a rtp packet. * points to the beginning of the event buffer.

Parameters:

  | session | a rtp session from which telephony events are received.
  | packet | a rtp packet as a mblk_t.
  | tab | the address of a pointer.

Returns:
  the number of events in the packet if successfull, 0 if the packet did not contain telephony events.

References _RtpSession::rcv, and _RtpSession::telephone_events_pt.

int rtp_session_recv_telephone_events_supported | ( | RtpSession * | session | ) |

Tells whether telephone event payload type is supported for receiving within the context of the rtp session.

Parameters:

  | session | a rtp session

Returns:
  the payload type number used for telephony events if found, -1 if not found.

int rtp_session_send_dtmf | ( | RtpSession * | session,
|  | char | dtmf,
|  | uint32_t | userts |
| ) |  |  |

This functions creates telephony events packets for dtmf and sends them. It uses rtp_session_create_telephone_event_packet() and rtp_session_add_telephone_event() to create them and finally rtp_session_sendm_with_ts() to send them.

Parameters:

  | session | a rtp session
  | dtmf | a character meaning the dtmf (ex: '1', '#' , '9' ...)
  | userts | the timestamp

Returns:
  0 if successfull, -1 if the session cannot support telephony events or if the dtmf given as argument is not valid.

int rtp_session_send_dtmf2 | ( | RtpSession * | session,
|  | char | dtmf,
|  | uint32_t | userts,
|  | int | duration |
| ) |  |  |

A variation of rtp_session_send_dtmf() with duration specified.

Parameters:

  | session | a rtp session
  | dtmf | a character meaning the dtmf (ex: '1', '#' , '9' ...)
  | userts | the timestamp
  | duration | duration of the dtmf in timestamp units

Returns:
  0 if successfull, -1 if the session cannot support telephony events or if the dtmf given as argument is not valid.

References _RtpSession::rtp.

int rtp_session_send_telephone_events_supported | ( | RtpSession * | session | ) |

Tells whether telephone event payload type is supported for send within the context of the rtp session.

Parameters:

  | session | a rtp session

Returns:
  the payload type number used for telephony events if found, -1 if not found.

References _RtpSession::profile, _RtpSession::snd, and _RtpSession::telephone_events_pt.

int rtp_session_telephone_events_supported | ( | RtpSession * | session | ) |

Tells whether telephony events payload type is supported within the context of the rtp session.

Parameters:

  | session | a rtp session

Returns:
  the payload type number used for telephony events if found, -1 if not found.

References _RtpSession::profile, _RtpSession::rcv, _RtpSession::snd, and _RtpSession::telephone_events_pt.