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_COMMON_SDVL_H
00028 #define ROHC_COMMON_SDVL_H
00029
00030 #include <stdlib.h>
00031 #include <stdint.h>
00032 #ifdef __KERNEL__
00033 # include <linux/types.h>
00034 #else
00035 # include <stdbool.h>
00036 #endif
00037
00038
00039
00040
00041
00042
00043
00044
00045 typedef enum
00046 {
00047
00048 ROHC_SDVL_MAX_BITS_IN_1_BYTE = 7U,
00049
00050 ROHC_SDVL_MAX_BITS_IN_2_BYTES = 14U,
00051
00052 ROHC_SDVL_MAX_BITS_IN_3_BYTES = 21U,
00053
00054 ROHC_SDVL_MAX_BITS_IN_4_BYTES = 29U,
00055 } rohc_sdvl_max_bits_t;
00056
00057
00058
00059
00060
00061
00062 bool sdvl_can_value_be_encoded(const uint32_t value)
00063 __attribute__((warn_unused_result, const));
00064 bool sdvl_can_length_be_encoded(const size_t bits_nr)
00065 __attribute__((warn_unused_result, const));
00066
00067 size_t sdvl_get_min_len(const size_t nr_min_required, const size_t nr_encoded)
00068 __attribute__((warn_unused_result, const));
00069
00070 size_t sdvl_get_encoded_len(const uint32_t value)
00071 __attribute__((warn_unused_result, const));
00072
00073 bool sdvl_encode(uint8_t *const packet,
00074 const size_t packet_max_len,
00075 size_t *const packet_len,
00076 const uint32_t value,
00077 const size_t bits_nr)
00078 __attribute__((warn_unused_result, nonnull(1, 3)));
00079
00080 bool sdvl_encode_full(uint8_t *const packet,
00081 const size_t packet_max_len,
00082 size_t *const packet_len,
00083 const uint32_t value)
00084 __attribute__((warn_unused_result, nonnull(1, 3)));
00085
00086 size_t sdvl_decode(const uint8_t *const data,
00087 const size_t length,
00088 uint32_t *const value,
00089 size_t *const bits_nr)
00090 __attribute__((warn_unused_result, nonnull(1, 3, 4)));
00091
00092 #endif
00093