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)
 Append the CID to the feedback packet.
void f_feedback1 (const uint32_t sn, struct d_feedback *const feedback)
 Build a FEEDBACK-1 packet.
bool f_feedback2 (const rohc_ack_type_t ack_type, const rohc_mode_t mode, const uint32_t sn, struct d_feedback *const feedback)
 Build a FEEDBACK-2 packet.
bool f_add_option (struct d_feedback *const feedback, const rohc_feedback_opt_t opt_type, const unsigned char *const data, const size_t data_len)
 Add an option data to the FEEDBACK-2 packet.
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.

Detailed Description

Functions to create ROHC feedback.

Author:
Didier Barvaux <didier.barvaux@toulouse.viveris.com>
Didier Barvaux <didier@barvaux.org>

Function Documentation

bool f_add_option ( struct d_feedback *const  feedback,
const rohc_feedback_opt_t  opt_type,
const unsigned char *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 
) [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
Returns:
Whether the CID is successfully appended or not
void f_feedback1 ( const uint32_t  sn,
struct d_feedback *const  feedback 
)

Build a FEEDBACK-1 packet.

Parameters:
snThe Sequence Number (SN) the feedback packet is associated with
feedbackThe feedback packet to build
bool f_feedback2 ( const rohc_ack_type_t  ack_type,
const rohc_mode_t  mode,
const uint32_t  sn,
struct d_feedback *const  feedback 
)

Build a FEEDBACK-2 packet.

Parameters:
ack_typeThe type of acknowledgement:
modeThe mode in which ROHC operates:
snThe Sequence Number (SN) the feedback packet is associated with, zero if unknown
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