mirror of https://gerrit.osmocom.org/libosmocore
51 lines
1.7 KiB
C
51 lines
1.7 KiB
C
#pragma once
|
|
|
|
#include <osmocom/core/bits.h>
|
|
|
|
/* See Section 5.1.2.1 of ITU-T V.110 */
|
|
#define MAX_D_BITS 48
|
|
#define MAX_E_BITS 7
|
|
#define MAX_S_BITS 9
|
|
#define MAX_X_BITS 2
|
|
|
|
/*! a 'decoded' representation of a single V.110 frame. contains unpacket D, E, S and X bits */
|
|
struct osmo_v110_decoded_frame {
|
|
ubit_t d_bits[MAX_D_BITS];
|
|
ubit_t e_bits[MAX_E_BITS];
|
|
ubit_t s_bits[MAX_S_BITS];
|
|
ubit_t x_bits[MAX_X_BITS];
|
|
};
|
|
|
|
int osmo_v110_decode_frame(struct osmo_v110_decoded_frame *fr, const ubit_t *ra_bits, size_t n_bits);
|
|
int osmo_v110_encode_frame(ubit_t *ra_bits, size_t n_bits, const struct osmo_v110_decoded_frame *fr);
|
|
|
|
void osmo_v110_ubit_dump(FILE *outf, const ubit_t *fr, size_t in_len);
|
|
|
|
|
|
/*! enum for each supported V.110 synchronous RA1 function (one for each user bitrate) */
|
|
enum osmo_v100_sync_ra1_rate {
|
|
OSMO_V110_SYNC_RA1_600,
|
|
OSMO_V110_SYNC_RA1_1200,
|
|
OSMO_V110_SYNC_RA1_2400,
|
|
OSMO_V110_SYNC_RA1_4800,
|
|
OSMO_V110_SYNC_RA1_7200,
|
|
OSMO_V110_SYNC_RA1_9600,
|
|
OSMO_V110_SYNC_RA1_12000,
|
|
OSMO_V110_SYNC_RA1_14400,
|
|
OSMO_V110_SYNC_RA1_19200,
|
|
OSMO_V110_SYNC_RA1_24000,
|
|
OSMO_V110_SYNC_RA1_28800,
|
|
OSMO_V110_SYNC_RA1_38400,
|
|
_NUM_OSMO_V110_SYNC_RA1
|
|
};
|
|
|
|
int osmo_v110_sync_ra1_get_user_data_chunk_bitlen(enum osmo_v100_sync_ra1_rate rate);
|
|
int osmo_v110_sync_ra1_get_user_data_rate(enum osmo_v100_sync_ra1_rate rate);
|
|
int osmo_v110_sync_ra1_get_intermediate_rate(enum osmo_v100_sync_ra1_rate rate);
|
|
|
|
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);
|
|
|
|
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);
|