libosmo-netif  1.2.0.67-9ee4
Osmocom network interface library
osmux_input.c File Reference

Osmocom multiplex protocol helpers (input) More...

#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/timer.h>
#include <osmocom/core/timer_compat.h>
#include <osmocom/core/select.h>
#include <osmocom/core/talloc.h>
#include <osmocom/core/logging.h>
#include <osmocom/netif/amr.h>
#include <osmocom/netif/rtp.h>
#include <osmocom/netif/osmux.h>
#include <arpa/inet.h>

Data Structures

struct  osmux_batch
 
struct  osmux_circuit
 
struct  osmux_input_state
 

Macros

#define DELTA_RTP_MSG   20000
 
#define DELTA_RTP_TIMESTAMP   160
 

Functions

static uint32_t osmux_ft_dummy_size (uint8_t amr_ft, uint8_t batch_factor)
 
static int osmux_circuit_enqueue (struct osmux_circuit *circuit, struct msgb *msg, uint8_t batch_factor)
 
static void osmux_circuit_dequeue (struct osmux_circuit *circuit, struct msgb *msg)
 
static void osmux_circuit_del_msgs (struct osmux_batch *batch, struct osmux_circuit *circuit)
 
static int osmux_batch_put (struct osmux_batch *batch, struct osmux_input_state *state)
 
static void osmux_encode_dummy (struct osmux_batch *batch, uint8_t batch_factor, struct osmux_input_state *state)
 
static struct msgb * osmux_build_batch (struct osmux_batch *batch, uint32_t batch_size, uint8_t batch_factor)
 
void osmux_xfrm_input_deliver (struct osmux_in_handle *h)
 
static void osmux_batch_timer_expired (void *data)
 
static int osmux_rtp_amr_payload_len (struct amr_hdr *amrh, uint32_t amr_len)
 
static int osmux_circuit_get_last_stored_amr_ft (struct osmux_circuit *circuit)
 
static int osmux_replay_lost_packets (struct osmux_circuit *circuit, struct rtp_hdr *cur_rtph, int batch_factor)
 
static struct osmux_circuitosmux_batch_find_circuit (struct osmux_batch *batch, int ccid)
 
static void osmux_batch_del_circuit (struct osmux_batch *batch, struct osmux_circuit *circuit)
 
static int osmux_batch_add (struct osmux_batch *batch, uint32_t batch_factor, struct msgb *msg, struct rtp_hdr *rtph, int ccid)
 
int osmux_xfrm_input (struct osmux_in_handle *h, struct msgb *msg, int ccid)
 
static int osmux_xfrm_input_talloc_destructor (struct osmux_in_handle *h)
 
struct osmux_in_handleosmux_xfrm_input_alloc (void *ctx)
 Allocate a new osmux in handle (osmux source, tx side) More...
 
void osmux_xfrm_input_init (struct osmux_in_handle *h) OSMO_DEPRECATED("Use osmux_xfrm_input_alloc() instead")
 
int osmux_xfrm_input_set_batch_factor (struct osmux_in_handle *h, uint8_t batch_factor)
 
void osmux_xfrm_input_set_batch_size (struct osmux_in_handle *h, uint16_t batch_size)
 
void osmux_xfrm_input_set_initial_seqnum (struct osmux_in_handle *h, uint8_t osmux_seqnum)
 
void osmux_xfrm_input_set_deliver_cb (struct osmux_in_handle *h, void(*deliver_cb)(struct msgb *msg, void *data), void *data)
 
void * osmux_xfrm_input_get_deliver_cb_data (struct osmux_in_handle *h)
 
int osmux_xfrm_input_open_circuit (struct osmux_in_handle *h, int ccid, int dummy)
 
void osmux_xfrm_input_close_circuit (struct osmux_in_handle *h, int ccid)
 
void osmux_xfrm_input_fini (struct osmux_in_handle *h) OSMO_DEPRECATED("Use talloc_free() instead")
 

Variables

static void * osmux_ctx
 

Detailed Description

Osmocom multiplex protocol helpers (input)