aboutsummaryrefslogtreecommitdiffstats
path: root/src/egprs_rlc_compression.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/egprs_rlc_compression.h')
-rw-r--r--src/egprs_rlc_compression.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/egprs_rlc_compression.h b/src/egprs_rlc_compression.h
new file mode 100644
index 0000000..c5f0f1a
--- /dev/null
+++ b/src/egprs_rlc_compression.h
@@ -0,0 +1,29 @@
+/* egprs_rlc_compression.h
+ * Routines for EGPRS RLC bitmap compression handling
+ */
+
+#pragma once
+
+struct egprs_compress_node;
+
+/* Singleton to manage the EGPRS compression algorithm. */
+class egprs_compress
+{
+public:
+ static int decompress_crbb(int8_t compress_bmap_len,
+ bool start, const uint8_t *orig_buf,
+ bitvec *dest);
+ egprs_compress();
+
+private:
+ egprs_compress_node *ones_list;
+ egprs_compress_node *zeros_list;
+
+ void decode_tree_init(void);
+ static egprs_compress *s_instance;
+ static egprs_compress*instance();
+ egprs_compress_node *create_tree_node(void *);
+ void build_codewords(egprs_compress_node *root, const char *cdwd[]);
+ /* singleton class, so this private destructor is left unimplemented. */
+ ~egprs_compress();
+};