00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef ROHC_COMP_SCHEMES_RFC4996_H
00028 #define ROHC_COMP_SCHEMES_RFC4996_H
00029
00030 #include <stdint.h>
00031 #include <stddef.h>
00032 #include <stdbool.h>
00033
00034
00035 struct rohc_comp_ctxt;
00036
00037
00038
00039 int c_static_or_irreg8(const uint8_t context_value,
00040 const uint8_t packet_value,
00041 uint8_t *const rohc_data,
00042 const size_t rohc_max_len,
00043 int *const indicator)
00044 __attribute__((warn_unused_result, nonnull(3, 5)));
00045 int c_static_or_irreg16(const uint16_t packet_value,
00046 const bool is_static,
00047 uint8_t *const rohc_data,
00048 const size_t rohc_max_len,
00049 int *const indicator)
00050 __attribute__((warn_unused_result, nonnull(3, 5)));
00051
00052
00053 int c_zero_or_irreg16(const uint16_t packet_value,
00054 uint8_t *const rohc_data,
00055 const size_t rohc_max_len,
00056 int *const indicator)
00057 __attribute__((warn_unused_result, nonnull(2, 4)));
00058 int c_zero_or_irreg32(const uint32_t packet_value,
00059 uint8_t *const rohc_data,
00060 const size_t rohc_max_len,
00061 int *const indicator)
00062 __attribute__((warn_unused_result, nonnull(2, 4)));
00063
00064
00065 int variable_length_32_enc(const uint32_t old_value,
00066 const uint32_t new_value,
00067 const size_t nr_bits_63,
00068 const size_t nr_bits_16383,
00069 uint8_t *const rohc_data,
00070 const size_t rohc_max_len,
00071 int *const indicator)
00072 __attribute__((nonnull(5, 7), warn_unused_result));
00073
00074
00075 void c_field_scaling(uint32_t *const scaled_value,
00076 uint32_t *const residue_field,
00077 const uint32_t scaling_factor,
00078 const uint32_t unscaled_value)
00079 __attribute__((nonnull(1, 2)));
00080
00081
00082 bool rsf_index_enc_possible(const uint8_t rsf_flags)
00083 __attribute__((warn_unused_result, const));
00084 unsigned int rsf_index_enc(const uint8_t rsf_flags)
00085 __attribute__((warn_unused_result, const));
00086
00087
00088 int c_optional_ip_id_lsb(const int behavior,
00089 const uint16_t ip_id_nbo,
00090 const uint16_t ip_id_offset,
00091 const size_t nr_bits_wlsb,
00092 uint8_t *const rohc_data,
00093 const size_t rohc_max_len,
00094 int *const indicator)
00095 __attribute__((warn_unused_result, nonnull(5, 7)));
00096
00097
00098 int dscp_encode(const uint8_t context_value,
00099 const uint8_t packet_value,
00100 uint8_t *const rohc_data,
00101 const size_t rohc_max_len,
00102 int *const indicator)
00103 __attribute__((warn_unused_result, nonnull(3, 5)));
00104
00105 #endif
00106