blob: 4d2501b9cc4cda7845e64973d6f22710128df926 [file] [log] [blame]
Pravin Kumarvel0a4a6c12016-10-17 11:00:57 +05301/* egprs_rlc_compression.h
2 * Routines for EGPRS RLC bitmap compression handling
3 */
4
5#pragma once
6
7struct egprs_compress_node;
sivasankari8adfcd02017-01-16 15:41:21 +05308#define MOD64(X) (((X) + 64) & 0x3F)
Pravin Kumarvel0a4a6c12016-10-17 11:00:57 +05309
10/* Singleton to manage the EGPRS compression algorithm. */
11class egprs_compress
12{
13public:
14 static int decompress_crbb(int8_t compress_bmap_len,
15 bool start, const uint8_t *orig_buf,
16 bitvec *dest);
17 egprs_compress();
sivasankari8adfcd02017-01-16 15:41:21 +053018 int osmo_t4_compress(struct bitvec *bv);
19 static int compress_rbb(struct bitvec *urbb_vec, struct bitvec *crbb_vec,
20 uint8_t *uclen_crbb, uint8_t max_bits);
Pravin Kumarvel0a4a6c12016-10-17 11:00:57 +053021
22private:
23 egprs_compress_node *ones_list;
24 egprs_compress_node *zeros_list;
25
26 void decode_tree_init(void);
27 static egprs_compress *s_instance;
28 static egprs_compress*instance();
29 egprs_compress_node *create_tree_node(void *);
30 void build_codewords(egprs_compress_node *root, const char *cdwd[]);
31 /* singleton class, so this private destructor is left unimplemented. */
32 ~egprs_compress();
33};