ROHC compression/decompression library
Data Structures | Macros | Functions
rohc_comp_internals.h File Reference

Internal structures for ROHC compression. More...

#include "rohc_internal.h"
#include "rohc_traces_internal.h"
#include "rohc_packets.h"
#include "rohc_comp.h"
#include "schemes/comp_wlsb.h"
#include "net_pkt.h"
#include "feedback.h"
#include <stdbool.h>
Include dependency graph for rohc_comp_internals.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  rohc_comp
 The ROHC compressor. More...
 
struct  rohc_comp_profile
 The ROHC compression profile. More...
 
struct  rohc_comp_ctxt
 The ROHC compression context. More...
 

Macros

#define C_NUM_PROFILES   7U
 
#define CHANGE_TO_IR_COUNT   1700
 
#define CHANGE_TO_IR_TIME   1000U
 
#define CHANGE_TO_FO_COUNT   700
 
#define CHANGE_TO_FO_TIME   500U
 
#define MAX_IR_COUNT   3U
 
#define MAX_CR_COUNT   MAX_IR_COUNT
 
#define MAX_FO_COUNT   3U
 
#define ROHC_INIT_TS_STRIDE_MIN   3U
 
#define ROHC_LIST_DEFAULT_L   5U
 Default number of transmission for lists to become a reference list. More...
 
#define rohc_comp_warn(context, format, ...)
 
#define rohc_comp_debug(context, format, ...)
 
#define rohc_comp_dump_buf(context, descr, buf, buf_len)
 
#define ROHC_MAX_MRRU   65535
 

Functions

void rohc_comp_change_mode (struct rohc_comp_ctxt *const context, const rohc_mode_t new_mode)
 Change the mode of the context. More...
 
void rohc_comp_change_state (struct rohc_comp_ctxt *const context, const rohc_comp_state_t new_state)
 Change the state of the context. More...
 
void rohc_comp_periodic_down_transition (struct rohc_comp_ctxt *const context, const struct rohc_ts pkt_time)
 Periodically change the context state after a certain number of packets. More...
 
bool rohc_comp_reinit_context (struct rohc_comp_ctxt *const context)
 Re-initialize the given context. More...
 
bool rohc_comp_feedback_parse_opts (const struct rohc_comp_ctxt *const context, const uint8_t *const packet, const size_t packet_len, const uint8_t *const feedback_data, const size_t feedback_data_len, size_t opts_present[ROHC_FEEDBACK_OPT_MAX], uint32_t *const sn_bits, size_t *const sn_bits_nr, uint8_t crc_in_packet, size_t crc_pos_from_end)
 Parse FEEDBACK-2 options. More...
 

Detailed Description

Internal structures for ROHC compression.

Author
Didier Barvaux didie.nosp@m.r.ba.nosp@m.rvaux.nosp@m.@tou.nosp@m.louse.nosp@m..viv.nosp@m.eris..nosp@m.com
Didier Barvaux didie.nosp@m.r@ba.nosp@m.rvaux.nosp@m..org

Macro Definition Documentation

◆ C_NUM_PROFILES

#define C_NUM_PROFILES   7U

The number of ROHC profiles ready to be used

◆ CHANGE_TO_FO_COUNT

#define CHANGE_TO_FO_COUNT   700

The default maximal number of packets sent in > FO states (= SO state) before changing back the state to FO (periodic refreshes)

◆ CHANGE_TO_FO_TIME

#define CHANGE_TO_FO_TIME   500U

The default maximal delay (in ms) spent in > FO states (= SO state) before changing back the state to FO (periodic refreshes)

◆ CHANGE_TO_IR_COUNT

#define CHANGE_TO_IR_COUNT   1700

The default maximal number of packets sent in > IR states (= FO and SO states) before changing back the state to IR (periodic refreshes)

◆ CHANGE_TO_IR_TIME

#define CHANGE_TO_IR_TIME   1000U

The default maximal delay (in ms) spent in > IR states (= FO and SO states) before changing back the state to IR (periodic refreshes)

◆ MAX_CR_COUNT

#define MAX_CR_COUNT   MAX_IR_COUNT

The minimal number of packets that must be sent while in CR state before being able to switch to the FO state

◆ MAX_FO_COUNT

#define MAX_FO_COUNT   3U

The minimal number of packets that must be sent while in FO state before being able to switch to the SO state

◆ MAX_IR_COUNT

#define MAX_IR_COUNT   3U

The minimal number of packets that must be sent while in IR state before being able to switch to the FO state

◆ rohc_comp_debug

#define rohc_comp_debug (   context,
  format,
  ... 
)
Value:
rohc_debug((context)->compressor, ROHC_TRACE_COMP, \
(context)->profile->id, \
format, ##__VA_ARGS__)
Definition: rohc_traces.h:83
#define rohc_debug(entity_struct, entity, profile, format,...)
Definition: rohc_traces_internal.h:61

Print a debug trace for the given compression context

◆ rohc_comp_dump_buf

#define rohc_comp_dump_buf (   context,
  descr,
  buf,
  buf_len 
)
Value:
do { \
if(((context)->compressor->features & ROHC_COMP_FEATURE_DUMP_PACKETS) != 0) { \
rohc_dump_buf((context)->compressor->trace_callback, \
(context)->compressor->trace_callback_priv, \
descr, buf, buf_len); \
} \
} while(0)
Definition: rohc_traces.h:61
Definition: rohc_traces.h:83
Definition: rohc_comp.h:234

Dump a buffer for the given compression context

◆ rohc_comp_warn

#define rohc_comp_warn (   context,
  format,
  ... 
)
Value:
rohc_warning((context)->compressor, ROHC_TRACE_COMP, \
(context)->profile->id, \
format, ##__VA_ARGS__)
Definition: rohc_traces.h:83
#define rohc_warning(entity_struct, entity, profile, format,...)
Definition: rohc_traces_internal.h:71

Print a warning trace for the given compression context

◆ ROHC_INIT_TS_STRIDE_MIN

#define ROHC_INIT_TS_STRIDE_MIN   3U

The minimal number of packets that must be sent while in INIT_STRIDE state before being able to switch to the SEND_SCALED state

◆ ROHC_LIST_DEFAULT_L

#define ROHC_LIST_DEFAULT_L   5U

Default number of transmission for lists to become a reference list.

The minimal number of times of compressed list shall be sent to become a reference list. L is the name specified in the RFC.

◆ ROHC_MAX_MRRU

#define ROHC_MAX_MRRU   65535

The maximal value for MRRU

Function Documentation

◆ rohc_comp_change_mode()

void rohc_comp_change_mode ( struct rohc_comp_ctxt *const  context,
const rohc_mode_t  new_mode 
)

Change the mode of the context.

Parameters
contextThe compression context
new_modeThe new mode the context must enter in

◆ rohc_comp_change_state()

void rohc_comp_change_state ( struct rohc_comp_ctxt *const  context,
const rohc_comp_state_t  new_state 
)

Change the state of the context.

Parameters
contextThe compression context
new_stateThe new state the context must enter in

◆ rohc_comp_feedback_parse_opts()

bool rohc_comp_feedback_parse_opts ( const struct rohc_comp_ctxt *const  context,
const uint8_t *const  packet,
const size_t  packet_len,
const uint8_t *const  feedback_data,
const size_t  feedback_data_len,
size_t  opts_present[ROHC_FEEDBACK_OPT_MAX],
uint32_t *const  sn_bits,
size_t *const  sn_bits_nr,
uint8_t  crc_in_packet,
size_t  crc_pos_from_end 
)

Parse FEEDBACK-2 options.

Parameters
contextThe ROHC decompression context
packetThe whole feedback packet with CID bits
packet_lenThe length of the whole feedback packet with CID bits
feedback_dataThe feedback data without the CID bits
feedback_data_lenThe length of the feedback data without the CID bits
[out]opts_presentWhether options are present or not
[out]sn_bitsin: the SN bits collected in base header out: the SN bits collected in base header and options
[out]sn_bits_nrin: the number of SN bits collected in base header out: the number of SN bits collected in base header and options
crc_in_packetThe CRC of the feedback packet
crc_pos_from_endThe position of the CRC byte from the end of the feedback packet
Returns
true if feedback options were successfully parsed, false if feedback options were malformed or CRC is wrong

◆ rohc_comp_periodic_down_transition()

void rohc_comp_periodic_down_transition ( struct rohc_comp_ctxt *const  context,
const struct rohc_ts  pkt_time 
)

Periodically change the context state after a certain number of packets.

Parameters
contextThe compression context
pkt_timeThe time of packet arrival

◆ rohc_comp_reinit_context()

bool rohc_comp_reinit_context ( struct rohc_comp_ctxt *const  context)

Re-initialize the given context.

Make the context restart its initialization with decompressor, ie. it goes in the lowest compression state.

Parameters
contextThe compression context to re-initialize
Returns
true in case of success, false otherwise