libosmogsm  1.6.0
Osmocom GSM library
i460_mux.h File Reference
#include <stdint.h>
#include <osmocom/core/bits.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/msgb.h>

Go to the source code of this file.

Data Structures

struct  osmo_i460_subchan_demux
 
struct  osmo_i460_subchan_mux
 
struct  osmo_i460_subchan
 
struct  osmo_i460_timeslot
 
struct  osmo_i460_schan_desc
 description of a sub-channel; passed by caller More...
 

Typedefs

typedef void(* out_cb_bits_t) (struct osmo_i460_subchan *schan, void *user_data, const ubit_t *bits, unsigned int num_bits)
 
typedef void(* out_cb_bytes_t) (struct osmo_i460_subchan *schan, void *user_data, const uint8_t *bytes, unsigned int num_bytes)
 
typedef void(* in_cb_queue_empty_t) (struct osmo_i460_subchan *schan, void *user_data)
 

Enumerations

enum  osmo_i460_rate {
  OSMO_I460_RATE_NONE,
  OSMO_I460_RATE_64k,
  OSMO_I460_RATE_32k,
  OSMO_I460_RATE_16k,
  OSMO_I460_RATE_8k
}
 

Functions

void osmo_i460_demux_in (struct osmo_i460_timeslot *ts, const uint8_t *data, size_t data_len)
 Data from E1 timeslot into de-multiplexer. More...
 
void osmo_i460_mux_enqueue (struct osmo_i460_subchan *schan, struct msgb *msg)
 enqueue a to-be-transmitted message buffer containing unpacked bits More...
 
int osmo_i460_mux_out (struct osmo_i460_timeslot *ts, uint8_t *out, size_t out_len)
 Data from E1 timeslot into de-multiplexer. More...
 
void osmo_i460_ts_init (struct osmo_i460_timeslot *ts)
 initialize an I.460 timeslot More...
 
struct osmo_i460_subchanosmo_i460_subchan_add (void *ctx, struct osmo_i460_timeslot *ts, const struct osmo_i460_schan_desc *chd)
 add a new sub-channel to the given timeslot More...
 
void osmo_i460_subchan_del (struct osmo_i460_subchan *schan)
 

Detailed Description

ITU-T I.460 sub-channel multiplexer + demultiplexer

Typedef Documentation

◆ in_cb_queue_empty_t

typedef void(* in_cb_queue_empty_t) (struct osmo_i460_subchan *schan, void *user_data)

◆ out_cb_bits_t

typedef void(* out_cb_bits_t) (struct osmo_i460_subchan *schan, void *user_data, const ubit_t *bits, unsigned int num_bits)

◆ out_cb_bytes_t

typedef void(* out_cb_bytes_t) (struct osmo_i460_subchan *schan, void *user_data, const uint8_t *bytes, unsigned int num_bytes)

Enumeration Type Documentation

◆ osmo_i460_rate

Enumerator
OSMO_I460_RATE_NONE 
OSMO_I460_RATE_64k 
OSMO_I460_RATE_32k 
OSMO_I460_RATE_16k 
OSMO_I460_RATE_8k 

Function Documentation

◆ osmo_i460_demux_in()

void osmo_i460_demux_in ( struct osmo_i460_timeslot ts,
const uint8_t *  data,
size_t  data_len 
)

Data from E1 timeslot into de-multiplexer.

Parameters
[in]tstimeslot state
[in]datainput data bytes as received from E1/T1
[in]data_lenlength of data in bytes

References ARRAY_SIZE, data, osmo_i460_subchan::demux, demux_subchan_extract_bits(), osmo_i460_has_single_64k_schan(), OSMO_I460_RATE_NONE, osmo_pbit2ubit(), osmo_i460_subchan_demux::out_cb_bits, osmo_i460_subchan_demux::out_cb_bytes, osmo_i460_subchan::rate, ts, and osmo_i460_subchan_demux::user_data.

◆ osmo_i460_mux_enqueue()

void osmo_i460_mux_enqueue ( struct osmo_i460_subchan schan,
struct msgb msg 
)

enqueue a to-be-transmitted message buffer containing unpacked bits

References msg, msgb_enqueue(), msgb_length(), osmo_i460_subchan::mux, OSMO_ASSERT, and osmo_i460_subchan_mux::tx_queue.

◆ osmo_i460_mux_out()

int osmo_i460_mux_out ( struct osmo_i460_timeslot ts,
uint8_t *  out,
size_t  out_len 
)

Data from E1 timeslot into de-multiplexer.

Parameters
[in]tstimeslot state
[out]outcaller-provided buffer where to store generated output bytes
[in]out_lennumber of bytes to be stored at out

References mux_timeslot_provide_bits(), and osmo_i460_subchan::ts.

◆ osmo_i460_subchan_add()

◆ osmo_i460_subchan_del()

void osmo_i460_subchan_del ( struct osmo_i460_subchan schan)

References subchan_reset().

◆ osmo_i460_ts_init()

void osmo_i460_ts_init ( struct osmo_i460_timeslot ts)

initialize an I.460 timeslot

References ARRAY_SIZE, osmo_i460_timeslot::schan, subchan_reset(), and osmo_i460_subchan::ts.