ROHC compression/decompression library
Functions
feedback_create.c File Reference

Functions to create ROHC feedback. More...

#include "feedback_create.h"
#include "crc.h"
#include "rohc_debug.h"
#include "rohc_bit_ops.h"
#include "sdvl.h"
#include <string.h>
#include <assert.h>
Include dependency graph for feedback_create.c:

Functions

static bool f_append_cid (struct d_feedback *const feedback, const uint16_t cid, const rohc_cid_type_t cid_type, size_t *const cid_len)
 Append the CID to the feedback packet. More...
 
void f_feedback1 (const uint32_t sn_bits, struct d_feedback *const feedback)
 Build a FEEDBACK-1 packet. More...
 
bool f_feedback2 (const rohc_profile_t profile_id, const enum rohc_feedback_ack_type ack_type, const rohc_mode_t mode, const uint32_t sn_bits, const size_t sn_bits_nr, struct d_feedback *const feedback)
 Build a FEEDBACK-2 packet. More...
 
bool f_add_option (struct d_feedback *const feedback, const enum rohc_feedback_opt opt_type, const uint8_t *const data, const size_t data_len)
 Add an option data to the FEEDBACK-2 packet. More...
 
uint8_t * f_wrap_feedback (struct d_feedback *const feedback, const uint16_t cid, const rohc_cid_type_t cid_type, const rohc_feedback_crc_t protect_with_crc, const uint8_t *const crc_table, size_t *const final_size)
 Wrap the feedback packet and add a CRC option if specified. More...
 

Detailed Description

Functions to create ROHC feedback.

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

Function Documentation

bool f_add_option ( struct d_feedback *const  feedback,
const enum rohc_feedback_opt  opt_type,
const uint8_t *const  data,
const size_t  data_len 
)

Add an option data to the FEEDBACK-2 packet.

Parameters
feedbackThe feedback packet to which the option must be added
opt_typeThe type of option to add
dataThe option data
data_lenThe length of option data (in bytes)
Returns
true if the option is successfully added, false otherwise
static bool f_append_cid ( struct d_feedback *const  feedback,
const uint16_t  cid,
const rohc_cid_type_t  cid_type,
size_t *const  cid_len 
)
static

Append the CID to the feedback packet.

Parameters
feedbackThe feedback packet to which the CID must be appended
cidThe Context ID (CID) to append
cid_typeThe type of CID used for the feedback
[out]cid_lenThe length of the add-CID or large CID field
Returns
Whether the CID is successfully appended or not
void f_feedback1 ( const uint32_t  sn_bits,
struct d_feedback *const  feedback 
)

Build a FEEDBACK-1 packet.

Parameters
sn_bitsThe LSB of the Sequence Number (SN) the feedback packet is associated with
feedbackThe feedback packet to build
bool f_feedback2 ( const rohc_profile_t  profile_id,
const enum rohc_feedback_ack_type  ack_type,
const rohc_mode_t  mode,
const uint32_t  sn_bits,
const size_t  sn_bits_nr,
struct d_feedback *const  feedback 
)

Build a FEEDBACK-2 packet.

Parameters
profile_idThe ID of the decompression profile that builds the feedback
ack_typeThe type of acknowledgement:
modeThe mode in which ROHC operates:
sn_bitsThe LSB of the Sequence Number (SN) the feedback packet is associated with
sn_bits_nrThe number of SN LSB
feedbackThe feedback packet to build
Returns
true if the packet is successfully built, false otherwise
uint8_t* f_wrap_feedback ( struct d_feedback *const  feedback,
const uint16_t  cid,
const rohc_cid_type_t  cid_type,
const rohc_feedback_crc_t  protect_with_crc,
const uint8_t *const  crc_table,
size_t *const  final_size 
)

Wrap the feedback packet and add a CRC option if specified.

Warning
CID may be greater than MAX_CID if the context was not found and generated a No Context feedback; it must however respect CID type
Parameters
feedbackThe feedback packet to which the CID must be appended
cidThe Context ID (CID) to append
cid_typeThe type of CID used for the feedback
protect_with_crcWhether the CRC option must be added or not
crc_tableThe pre-computed table for fast CRC computation
final_sizeOUT: The final size of the feedback packet
Returns
The feedback packet if successful, NULL otherwise