mirror of https://gerrit.osmocom.org/libosmocore
Add ubit <-> sbit convertors
Move functions for conversion between soft and unpacked bits to main library as they are generally useful.
This commit is contained in:
parent
93bc64f99d
commit
d8fb14226f
|
@ -42,6 +42,9 @@ int osmo_ubit2pbit(pbit_t *out, const ubit_t *in, unsigned int num_bits);
|
|||
|
||||
int osmo_pbit2ubit(ubit_t *out, const pbit_t *in, unsigned int num_bits);
|
||||
|
||||
void osmo_ubit2sbit(sbit_t *out, const ubit_t *in, unsigned int num_bits);
|
||||
void osmo_sbit2ubit(ubit_t *out, const sbit_t *in, unsigned int num_bits);
|
||||
|
||||
int osmo_ubit2pbit_ext(pbit_t *out, unsigned int out_ofs,
|
||||
const ubit_t *in, unsigned int in_ofs,
|
||||
unsigned int num_bits, int lsb_mode);
|
||||
|
|
24
src/bits.c
24
src/bits.c
|
@ -61,6 +61,30 @@ int osmo_ubit2pbit(pbit_t *out, const ubit_t *in, unsigned int num_bits)
|
|||
return outptr - out;
|
||||
}
|
||||
|
||||
/*! \brief convert unpacked bits to soft bits
|
||||
* \param[out] out output buffer of soft bits
|
||||
* \param[in] in input buffer of unpacked bits
|
||||
* \param[in] num_bits number of bits
|
||||
*/
|
||||
void osmo_ubit2sbit(sbit_t *out, const ubit_t *in, unsigned int num_bits)
|
||||
{
|
||||
unsigned int i;
|
||||
for (i = 0; i < num_bits; i++)
|
||||
out[i] = in[i] ? -127 : 127;
|
||||
}
|
||||
|
||||
/*! \brief convert soft bits to unpacked bits
|
||||
* \param[out] out output buffer of unpacked bits
|
||||
* \param[in] in input buffer of soft bits
|
||||
* \param[in] num_bits number of bits
|
||||
*/
|
||||
void osmo_sbit2ubit(ubit_t *out, const sbit_t *in, unsigned int num_bits)
|
||||
{
|
||||
unsigned int i;
|
||||
for (i = 0; i < num_bits; i++)
|
||||
out[i] = in[i] < 0;
|
||||
}
|
||||
|
||||
/*! \brief convert packed bits to unpacked bits, return length in bytes
|
||||
* \param[out] out output buffer of unpacked bits
|
||||
* \param[in] in input buffer of packed bits
|
||||
|
|
|
@ -339,25 +339,6 @@ fill_random(ubit_t *b, int n)
|
|||
b[i] = random() & 1;
|
||||
}
|
||||
|
||||
static void
|
||||
ubit_to_sbit(sbit_t *dst, ubit_t *src, int n)
|
||||
{
|
||||
int i;
|
||||
for (i=0; i<n; i++)
|
||||
dst[i] = src[i] ? -127 : 127;
|
||||
}
|
||||
|
||||
static void sbit_to_ubit(ubit_t *dst, sbit_t *src, int n) __attribute__((unused));
|
||||
|
||||
static void
|
||||
sbit_to_ubit(ubit_t *dst, sbit_t *src, int n)
|
||||
{
|
||||
int i;
|
||||
for (i=0; i<n; i++)
|
||||
dst[i] = src[i] < 0;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
const struct conv_test_vector *tst;
|
||||
|
@ -424,7 +405,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
printf("[..] Decoding: ");
|
||||
|
||||
ubit_to_sbit(bs, bu0, l);
|
||||
osmo_ubit2sbit(bs, bu0, l);
|
||||
|
||||
l = osmo_conv_decode(tst->code, bs, bu1);
|
||||
if (l != 0) {
|
||||
|
@ -459,7 +440,7 @@ int main(int argc, char *argv[])
|
|||
return -1;
|
||||
}
|
||||
|
||||
ubit_to_sbit(bs, bu1, l);
|
||||
osmo_ubit2sbit(bs, bu1, l);
|
||||
|
||||
l = osmo_conv_decode(tst->code, bs, bu1);
|
||||
if (l != 0) {
|
||||
|
|
Loading…
Reference in New Issue