HERMES Modem
Hermes ARQ/Broadcast modem
Loading...
Searching...
No Matches
Macros | Functions | Variables
arith.c File Reference
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
Include dependency graph for arith.c:

Macros

#define NUM_SYMBOLS   38
 
#define CODE_BITS   32
 
#define MAX_CODE   ((1ULL << CODE_BITS) - 1)
 
#define HALF   (1ULL << (CODE_BITS - 1))
 
#define QUARTER   (HALF >> 1)
 
#define THREE_QUARTERS   (HALF + QUARTER)
 
#define BUFFER_SIZE   4096
 
#define MAX_ENCODE_BITS   (BUFFER_SIZE * 8)
 
#define MAX_PENDING   1024
 

Functions

void init_model ()
 
int find_index (char c)
 
void bw_init (BitWriter *bw, uint8_t *buf)
 
void bw_write_bit (BitWriter *bw, int bit)
 
int bw_bytes (BitWriter *bw)
 
void br_init (BitReader *br, uint8_t *buf, int len)
 
int br_read_bit (BitReader *br)
 
int arithmetic_encode (const char *msg, uint8_t *output)
 
int arithmetic_decode (uint8_t *input, int max_len, char *output, int max_output)
 

Variables

char symbols [NUM_SYMBOLS]
 
uint64_t cum_freq [NUM_SYMBOLS+1]
 

Macro Definition Documentation

◆ BUFFER_SIZE

#define BUFFER_SIZE   4096

◆ CODE_BITS

#define CODE_BITS   32

◆ HALF

#define HALF   (1ULL << (CODE_BITS - 1))

◆ MAX_CODE

#define MAX_CODE   ((1ULL << CODE_BITS) - 1)

◆ MAX_ENCODE_BITS

#define MAX_ENCODE_BITS   (BUFFER_SIZE * 8)

◆ MAX_PENDING

#define MAX_PENDING   1024

◆ NUM_SYMBOLS

#define NUM_SYMBOLS   38

◆ QUARTER

#define QUARTER   (HALF >> 1)

◆ THREE_QUARTERS

#define THREE_QUARTERS   (HALF + QUARTER)

Function Documentation

◆ arithmetic_decode()

int arithmetic_decode ( uint8_t *  input,
int  max_len,
char *  output,
int  max_output 
)

◆ arithmetic_encode()

int arithmetic_encode ( const char *  msg,
uint8_t *  output 
)

◆ br_init()

void br_init ( BitReader *  br,
uint8_t *  buf,
int  len 
)

◆ br_read_bit()

int br_read_bit ( BitReader *  br)

◆ bw_bytes()

int bw_bytes ( BitWriter *  bw)

◆ bw_init()

void bw_init ( BitWriter *  bw,
uint8_t *  buf 
)

◆ bw_write_bit()

void bw_write_bit ( BitWriter *  bw,
int  bit 
)

◆ find_index()

int find_index ( char  c)

◆ init_model()

void init_model ( void  )

Variable Documentation

◆ cum_freq

uint64_t cum_freq[NUM_SYMBOLS+1]

◆ symbols

char symbols[NUM_SYMBOLS]
Initial value:
= {
'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'0','1','2','3','4','5','6','7','8','9','-',
'\0'
}