Loading...
Searching...
No Matches
ecu_fr_old.c File Reference
`#include <stdbool.h>`
`#include <string.h>`
`#include <stdint.h>`
`#include <errno.h>`
`#include <osmocom/core/bitvec.h>`
`#include <osmocom/codec/gsm610_bits.h>`
`#include <osmocom/codec/codec.h>`
`#include <osmocom/codec/ecu.h>`

## Macros

#define | GSM610_XMAXC_REDUCE 4
#define | GSM610_XMAXC_LEN 6

## Functions

static bool | reduce_xmaxcr (struct bitvec *frame_bitvec, const unsigned int index)
| Reduce the XMAXC field.
static bool | reduce_xmaxcr_all (struct bitvec *frame_bitvec)
| Reduce all XMAXC fields in the frame.
static int | conceal_frame (uint8_t *frame)
void | osmo_ecu_fr_reset (struct osmo_ecu_fr_state *state, const uint8_t *frame)
| To be called when a good frame is received.
int | osmo_ecu_fr_conceal (struct osmo_ecu_fr_state *state, uint8_t *frame)
| To be called when a bad frame is received.

## Macro Definition Documentation

## GSM610_XMAXC_LEN

#define GSM610_XMAXC_LEN 6

## GSM610_XMAXC_REDUCE

#define GSM610_XMAXC_REDUCE 4

## Function Documentation

## conceal_frame()

static int conceal_frame | ( | uint8_t * | frame | ) |

static

References bitvec_alloc(), bitvec_free(), bitvec_pack(), bitvec_unpack(), GSM_FR_BYTES, len, osmo_fr_check_sid(), and reduce_xmaxcr_all().

Referenced by osmo_ecu_fr_conceal().

## osmo_ecu_fr_conceal()

int osmo_ecu_fr_conceal | ( | struct osmo_ecu_fr_state * | state,
|  | uint8_t * | frame
| ) |  |

To be called when a bad frame is received.

This function will then generate a replacement frame that can be used to conceal the dropout.

Parameters

  [in] | state | The state object for the ECU
  [out] | frame | The buffer to fill with GSM_FR_BYTES of replacement frame

Returns
  0 if the frame was successfully filled

References conceal_frame(), osmo_ecu_fr_state::frame_backup, GSM_FR_BYTES, and osmo_ecu_fr_state::subsequent_lost_frame.

## osmo_ecu_fr_reset()

void osmo_ecu_fr_reset | ( | struct osmo_ecu_fr_state * | state,
|  | const uint8_t * | frame
| ) |  |

To be called when a good frame is received.

This function will then create a backup of the frame and reset the internal state.

Parameters

  [in] | state | The state object for the ECU
  [out] | frame | The valid frame (GSM_FR_BYTES bytes in RTP payload format)

References osmo_ecu_fr_state::frame_backup, GSM_FR_BYTES, and osmo_ecu_fr_state::subsequent_lost_frame.

## reduce_xmaxcr()

static bool reduce_xmaxcr | ( | struct bitvec * | frame_bitvec,
|  | const unsigned int | index
| ) |  |

static

Reduce the XMAXC field.

When the XMAXC field reaches zero the function will return true.

References bitvec_read_field(), bitvec_write_field(), GSM610_XMAXC_LEN, and GSM610_XMAXC_REDUCE.

Referenced by reduce_xmaxcr_all().

## reduce_xmaxcr_all()

static bool reduce_xmaxcr_all | ( | struct bitvec * | frame_bitvec | ) |

static

Reduce all XMAXC fields in the frame.

When all XMAXC fields reach zero, then the function will return true.

References GSM610_RTP_XMAXC00, GSM610_RTP_XMAXC10, GSM610_RTP_XMAXC20, GSM610_RTP_XMAXC30, and reduce_xmaxcr().

Referenced by conceal_frame().