libosmoisdn 1.10.0.10-24ad1
Osmocom ISDN library
|
#include <stdint.h>
#include <errno.h>
#include <osmocom/core/bits.h>
#include <osmocom/isdn/v110.h>
Data Structures | |
struct | osmo_v110_sync_ra1 |
Macros | |
#define | F 1 |
Functions | |
int | osmo_v110_decode_frame (struct osmo_v110_decoded_frame *fr, const ubit_t *ra_bits, size_t n_bits) |
Decode a 80-bit V.110 frame present as 80 ubits into a struct osmo_v110_decoded_frame. More... | |
int | osmo_v110_encode_frame (ubit_t *ra_bits, size_t n_bits, const struct osmo_v110_decoded_frame *fr) |
Encode a struct osmo_v110_decoded_frame into an 80-bit V.110 frame as ubits. More... | |
void | osmo_v110_ubit_dump (FILE *outf, const ubit_t *fr, size_t in_len) |
Print a encoded V.110 frame in the same table-like structure as the spec. More... | |
static int | v110_adapt_600_to_IR8000 (struct osmo_v110_decoded_frame *fr, const ubit_t *d_in, size_t in_len) |
Adapt from 6 synchronous 600bit/s input bits to a decoded V.110 frame. More... | |
static int | v110_adapt_IR8000_to_600 (ubit_t *d_out, size_t out_len, const struct osmo_v110_decoded_frame *fr) |
static int | v110_adapt_1200_to_IR8000 (struct osmo_v110_decoded_frame *fr, const ubit_t *d_in, size_t in_len) |
Adapt from 12 synchronous 1200bit/s input bits to a decoded V.110 frame. More... | |
static int | v110_adapt_IR8000_to_1200 (ubit_t *d_out, size_t out_len, const struct osmo_v110_decoded_frame *fr) |
static int | v110_adapt_2400_to_IR8000 (struct osmo_v110_decoded_frame *fr, const ubit_t *d_in, size_t in_len) |
Adapt from 24 synchronous 2400bit/s input bits to a decoded V.110 frame. More... | |
static int | v110_adapt_IR8000_to_2400 (ubit_t *d_out, size_t out_len, const struct osmo_v110_decoded_frame *fr) |
static int | v110_adapt_Nx3600_to_IR (struct osmo_v110_decoded_frame *fr, const ubit_t *d_in, size_t in_len) |
Adapt from 36 synchronous N x 3600bit/s input bits to a decoded V.110 frame. More... | |
static int | v110_adapt_IR_to_Nx3600 (ubit_t *d_out, size_t out_len, const struct osmo_v110_decoded_frame *fr) |
static int | v110_adapt_Nx4800_to_IR (struct osmo_v110_decoded_frame *fr, const ubit_t *d_in, size_t in_len) |
Adapt from 48 synchronous N x 4800bit/s input bits to a decoded V.110 frame. More... | |
static int | v110_adapt_IR_to_Nx4800 (ubit_t *d_out, size_t out_len, const struct osmo_v110_decoded_frame *fr) |
static int | v110_adapt_Nx12000_to_IR (struct osmo_v110_decoded_frame *fr, const ubit_t *d_in, size_t in_len) |
Adapt from 30 synchronous N x 12000bit/s input bits to a decoded V.110 frame. More... | |
static int | v110_adapt_IR_to_Nx12000 (ubit_t *d_out, size_t out_len, const struct osmo_v110_decoded_frame *fr) |
int | osmo_v110_sync_ra1_get_user_data_chunk_bitlen (enum osmo_v100_sync_ra1_rate rate) |
obtain the size (in number of bits) of the user data bits in one V.110 frame for specified RA1 rate More... | |
int | osmo_v110_sync_ra1_get_user_data_rate (enum osmo_v100_sync_ra1_rate rate) |
obtain the user data rate (in bits/s) for specified RA1 rate More... | |
int | osmo_v110_sync_ra1_get_intermediate_rate (enum osmo_v100_sync_ra1_rate rate) |
obtain the intermediate rate (in bits/s) for specified RA1 rate More... | |
int | osmo_v110_sync_ra1_user_to_ir (enum osmo_v100_sync_ra1_rate rate, struct osmo_v110_decoded_frame *fr, const ubit_t *d_in, size_t in_len) |
perform V.110 RA1 function in user rate -> intermediate rate direction. More... | |
int | osmo_v110_sync_ra1_ir_to_user (enum osmo_v100_sync_ra1_rate rate, ubit_t *d_out, size_t out_len, const struct osmo_v110_decoded_frame *fr) |
perform V.110 RA1 function in intermediate rate -> user rate direction. More... | |
Variables | |
const ubit_t | osmo_v110_e1e2e3 [_NUM_OSMO_V110_SYNC_RA1][3] |
E1/E2/E3 bit values as per Table 5/V.110. More... | |
static const struct osmo_v110_sync_ra1 | osmo_v110_sync_ra1_def [_NUM_OSMO_V110_SYNC_RA1] |
#define F 1 |
int osmo_v110_decode_frame | ( | struct osmo_v110_decoded_frame * | fr, |
const ubit_t * | ra_bits, | ||
size_t | n_bits | ||
) |
Decode a 80-bit V.110 frame present as 80 ubits into a struct osmo_v110_decoded_frame.
[out] | fr | caller-allocated output data structure, filled by this function |
[in] | ra_bits | One V.110 frame as 80 unpacked bits. |
[in] | n_bits | number of unpacked bits provided in ra_bits |
References osmo_v110_decoded_frame::d_bits, osmo_v110_decoded_frame::e_bits, osmo_v110_decoded_frame::s_bits, and osmo_v110_decoded_frame::x_bits.
int osmo_v110_encode_frame | ( | ubit_t * | ra_bits, |
size_t | n_bits, | ||
const struct osmo_v110_decoded_frame * | fr | ||
) |
Encode a struct osmo_v110_decoded_frame into an 80-bit V.110 frame as ubits.
[out] | ra_bits | caller-provided output buffer at leat 80 ubits large |
[in] | n_bits | length of ra_bits. Must be at least 80. |
[in] | input | data structure |
References osmo_v110_decoded_frame::d_bits, osmo_v110_decoded_frame::e_bits, osmo_v110_decoded_frame::s_bits, and osmo_v110_decoded_frame::x_bits.
int osmo_v110_sync_ra1_get_intermediate_rate | ( | enum osmo_v100_sync_ra1_rate | rate | ) |
obtain the intermediate rate (in bits/s) for specified RA1 rate
References _NUM_OSMO_V110_SYNC_RA1, osmo_v110_sync_ra1::intermediate_rate, and osmo_v110_sync_ra1_def.
int osmo_v110_sync_ra1_get_user_data_chunk_bitlen | ( | enum osmo_v100_sync_ra1_rate | rate | ) |
obtain the size (in number of bits) of the user data bits in one V.110 frame for specified RA1 rate
References _NUM_OSMO_V110_SYNC_RA1, osmo_v110_sync_ra1_def, and osmo_v110_sync_ra1::user_data_chunk_bits.
Referenced by v110_ta_build_frame(), and v110_ta_handle_frame().
int osmo_v110_sync_ra1_get_user_data_rate | ( | enum osmo_v100_sync_ra1_rate | rate | ) |
obtain the user data rate (in bits/s) for specified RA1 rate
References _NUM_OSMO_V110_SYNC_RA1, osmo_v110_sync_ra1::data_rate, and osmo_v110_sync_ra1_def.
int osmo_v110_sync_ra1_ir_to_user | ( | enum osmo_v100_sync_ra1_rate | rate, |
ubit_t * | d_out, | ||
size_t | out_len, | ||
const struct osmo_v110_decoded_frame * | fr | ||
) |
perform V.110 RA1 function in intermediate rate -> user rate direction.
[in] | rate | specification of the user bitrate |
[out] | d_out | caller-allocated output user data (unpacked bits) |
[out] | out_len | length of d_out output buffer |
[in] | fr | [decoded] V.110 frame used as input |
References _NUM_OSMO_V110_SYNC_RA1, osmo_v110_sync_ra1::adapt_ir_to_user, and osmo_v110_sync_ra1_def.
Referenced by v110_ta_handle_frame().
int osmo_v110_sync_ra1_user_to_ir | ( | enum osmo_v100_sync_ra1_rate | rate, |
struct osmo_v110_decoded_frame * | fr, | ||
const ubit_t * | d_in, | ||
size_t | in_len | ||
) |
perform V.110 RA1 function in user rate -> intermediate rate direction.
[in] | rate | specification of the user bitrate |
[out] | fr | caller-allocated output buffer for the [decoded] V.110 frame generated |
[in] | d_in | input user data (unpacked bits) |
[in] | in_len | length of user input data (in number of bits) |
References _NUM_OSMO_V110_SYNC_RA1, osmo_v110_sync_ra1::adapt_user_to_ir, and osmo_v110_sync_ra1_def.
Referenced by v110_ta_build_frame().
void osmo_v110_ubit_dump | ( | FILE * | outf, |
const ubit_t * | fr, | ||
size_t | in_len | ||
) |
Print a encoded V.110 frame in the same table-like structure as the spec.
outf | output FILE stream to which to dump | |
[in] | fr | unpacked bits to dump |
[in] | in_len | length of unpacked bits available at fr. |
|
static |
Adapt from 12 synchronous 1200bit/s input bits to a decoded V.110 frame.
[out] | fr | caller-allocated output frame to which E+D bits are stored |
[in] | d_in | input user bits |
[in] | in_len | number of bits in d_in. Must be 12. |
References osmo_v110_decoded_frame::d_bits, osmo_v110_decoded_frame::e_bits, osmo_v110_e1e2e3_set, and OSMO_V110_SYNC_RA1_1200.
|
static |
Adapt from 24 synchronous 2400bit/s input bits to a decoded V.110 frame.
[out] | fr | caller-allocated output frame to which E+D bits are stored |
[in] | d_in | input user bits |
[in] | in_len | number of bits in d_in. Must be 24. |
References osmo_v110_decoded_frame::d_bits, osmo_v110_decoded_frame::e_bits, osmo_v110_e1e2e3_set, and OSMO_V110_SYNC_RA1_2400.
|
static |
Adapt from 6 synchronous 600bit/s input bits to a decoded V.110 frame.
[out] | fr | caller-allocated output frame to which E+D bits are stored |
[in] | d_in | input user bits |
[in] | in_len | number of bits in d_in. Must be 6. |
References osmo_v110_decoded_frame::d_bits, osmo_v110_decoded_frame::e_bits, osmo_v110_e1e2e3_set, and OSMO_V110_SYNC_RA1_600.
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Adapt from 30 synchronous N x 12000bit/s input bits to a decoded V.110 frame.
[out] | fr | caller-allocated output frame to which E+D bits are stored |
[in] | d_in | input user bits |
[in] | in_len | number of bits in d_in. Must be 30. |
References osmo_v110_decoded_frame::d_bits, osmo_v110_decoded_frame::e_bits, F, OSMO_ASSERT, osmo_v110_e1e2e3_set, and OSMO_V110_SYNC_RA1_12000.
|
static |
Adapt from 36 synchronous N x 3600bit/s input bits to a decoded V.110 frame.
[out] | fr | caller-allocated output frame to which E+D bits are stored |
[in] | d_in | input user bits |
[in] | in_len | number of bits in d_in. Must be 36. |
References osmo_v110_decoded_frame::d_bits, osmo_v110_decoded_frame::e_bits, F, OSMO_ASSERT, osmo_v110_e1e2e3_set, and OSMO_V110_SYNC_RA1_7200.
|
static |
Adapt from 48 synchronous N x 4800bit/s input bits to a decoded V.110 frame.
[out] | fr | caller-allocated output frame to which E+D bits are stored |
[in] | d_in | input user bits |
[in] | in_len | number of bits in d_in. Must be 48. |
References osmo_v110_decoded_frame::d_bits, osmo_v110_decoded_frame::e_bits, osmo_v110_e1e2e3_set, and OSMO_V110_SYNC_RA1_4800.
const ubit_t osmo_v110_e1e2e3[_NUM_OSMO_V110_SYNC_RA1][3] |
E1/E2/E3 bit values as per Table 5/V.110.
|
static |