libosmogsm 1.7.0
Osmocom GSM library
|
ITU-T I.460 sub-channel multiplexer + demultiplexer. More...
#include <errno.h>
#include <osmocom/core/bits.h>
#include <osmocom/core/utils.h>
#include <osmocom/core/msgb.h>
#include <osmocom/gsm/i460_mux.h>
ITU-T I.460 sub-channel multiplexer + demultiplexer.
References osmo_i460_subchan::demux, len, osmo_i460_subchan_demux::out_bitbuf, and osmo_i460_subchan_demux::out_bitbuf_size.
Referenced by osmo_i460_subchan_add().
|
static |
References osmo_i460_subchan::demux, len, OSMO_ASSERT, osmo_ubit2pbit(), osmo_i460_subchan_demux::out_bitbuf, osmo_i460_subchan_demux::out_bitbuf_size, osmo_i460_subchan_demux::out_cb_bits, osmo_i460_subchan_demux::out_cb_bytes, osmo_i460_subchan_demux::out_idx, and osmo_i460_subchan_demux::user_data.
Referenced by demux_subchan_extract_bits().
|
static |
References osmo_i460_subchan::bit_offset, data, demux_subchan_append_bit(), len, OSMO_ASSERT, OSMO_I460_RATE_16k, OSMO_I460_RATE_32k, OSMO_I460_RATE_64k, OSMO_I460_RATE_8k, and osmo_i460_subchan::rate.
Referenced by osmo_i460_demux_in().
|
static |
References ARRAY_SIZE, len, OSMO_I460_RATE_NONE, osmo_i460_subchan::rate, osmo_i460_timeslot::schan, ts, and osmo_i460_subchan::ts.
Referenced by osmo_i460_subchan_add().
|
static |
|
static |
provide one byte with the subchan-specific bits of given sub-channel.
[in] | schan | sub-channel that is to provide bits \parma[out] mask bitmask of those bits filled in |
References osmo_i460_subchan::bit_offset, len, mux_schan_provide_bit(), OSMO_ASSERT, OSMO_I460_RATE_16k, OSMO_I460_RATE_32k, OSMO_I460_RATE_64k, OSMO_I460_RATE_8k, and osmo_i460_subchan::rate.
Referenced by mux_timeslot_provide_bits().
|
static |
References ARRAY_SIZE, len, mux_subchan_provide_bits(), OSMO_I460_RATE_NONE, osmo_i460_subchan::rate, osmo_i460_timeslot::schan, ts, and osmo_i460_subchan::ts.
Referenced by osmo_i460_mux_out().
Data from E1 timeslot into de-multiplexer.
[in] | ts | timeslot state |
[in] | data | input data bytes as received from E1/T1 |
[in] | data_len | length of data in bytes |
References ARRAY_SIZE, data, osmo_i460_subchan::demux, demux_subchan_extract_bits(), len, 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.
|
static |
References OSMO_I460_RATE_64k, osmo_i460_subchan_count(), and ts.
Referenced by osmo_i460_demux_in().
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.
int osmo_i460_mux_out | ( | struct osmo_i460_timeslot * | ts, |
uint8_t * | out, | ||
size_t | out_len | ||
) |
Data from E1 timeslot into de-multiplexer.
[in] | ts | timeslot state |
[out] | out | caller-provided buffer where to store generated output bytes |
[in] | out_len | number of bytes to be stored at out |
References len, mux_timeslot_provide_bits(), and osmo_i460_subchan::ts.
struct osmo_i460_subchan * osmo_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
[in] | ctx | talloc context from where to allocate the internal buffer |
[in] | ts | timeslot to which to add a sub-channel |
[in] | chd | description of the sub-channel to be added |
References alloc_bitbuf(), osmo_i460_subchan::bit_offset, osmo_i460_subchan::demux, find_unused_subchan_idx(), osmo_i460_subchan_mux::in_cb_queue_empty, len, osmo_i460_subchan::mux, osmo_i460_subchan_demux::out_cb_bits, osmo_i460_subchan_demux::out_cb_bytes, osmo_i460_subchan::rate, osmo_i460_timeslot::schan, subchan_reset(), osmo_i460_subchan::ts, osmo_i460_subchan_demux::user_data, and osmo_i460_subchan_mux::user_data.
|
static |
References ARRAY_SIZE, len, OSMO_I460_RATE_NONE, and ts.
Referenced by osmo_i460_has_single_64k_schan().
void osmo_i460_subchan_del | ( | struct osmo_i460_subchan * | schan | ) |
References subchan_reset().
void osmo_i460_ts_init | ( | struct osmo_i460_timeslot * | ts | ) |
initialize an I.460 timeslot
References ARRAY_SIZE, len, osmo_i460_timeslot::schan, subchan_reset(), and osmo_i460_subchan::ts.
|
static |