CCSDS 124.0-B-1 C 1.0.0
CCSDS 124.0-B-1 Lossless Compression
Loading...
Searching...
No Matches
ccsds124.h File Reference

CCSDS 124.0-B-1 Compression Library - Public API. More...

#include <stdint.h>
#include <stddef.h>

Go to the source code of this file.

Data Structures

struct  ccsds124_params_t
 Compression parameters for a single packet. More...
 
struct  ccsds124_decompress_result_t
 Decompression result with accuracy guarantee status. More...
 
struct  bitvector
 Fixed-length bit vector structure. More...
 
struct  bitbuffer
 Variable-length bit buffer structure. More...
 
struct  ccsds124_compressor
 Compressor state structure. More...
 
struct  bitreader_t
 Bit reader structure for sequential reading. More...
 
struct  ccsds124_decompressor
 Decompressor state structure. More...
 

Macros

#define CCSDS124_VERSION_MAJOR   1
 
#define CCSDS124_VERSION_MINOR   0
 
#define CCSDS124_VERSION_PATCH   0
 
#define CCSDS124_OK   0
 
#define CCSDS124_ERROR_INVALID_ARG   -1
 
#define CCSDS124_ERROR_OVERFLOW   -2
 
#define CCSDS124_ERROR_UNDERFLOW   -3
 
#define CCSDS124_STATUS_UNGUARANTEED   1
 
#define CCSDS124_STATUS_TRUNCATED_LENGTH   2
 
#define CCSDS124_MAX_PACKET_LENGTH   65535U
 
#define CCSDS124_MAX_PACKET_BYTES   (((CCSDS124_MAX_PACKET_LENGTH) + 7U) / 8U)
 
#define CCSDS124_MAX_ROBUSTNESS   7U
 
#define CCSDS124_MAX_HISTORY   16U
 
#define CCSDS124_MAX_VT_HISTORY   16U
 
#define CCSDS124_MAX_OUTPUT_BYTES   ((CCSDS124_MAX_PACKET_BYTES) * 12U)
 

Typedefs

typedef struct bitvector bitvector_t
 
typedef struct bitbuffer bitbuffer_t
 
typedef struct ccsds124_compressor ccsds124_compressor_t
 
typedef struct ccsds124_decompressor ccsds124_decompressor_t
 

Functions

int bitvector_init (bitvector_t *bv, size_t num_bits)
 Initialize a bit vector with specified length.
 
void bitvector_zero (bitvector_t *bv)
 Set all bits to zero.
 
void bitvector_copy (bitvector_t *dest, const bitvector_t *src)
 Copy bit vector contents.
 
static int bitvector_get_bit (const bitvector_t *bv, size_t pos)
 Get bit value at position (inline for performance).
 
static void bitvector_set_bit (bitvector_t *bv, size_t pos, int value)
 Set bit value at position (inline for performance).
 
void bitvector_xor (bitvector_t *result, const bitvector_t *a, const bitvector_t *b)
 Bitwise XOR operation.
 
void bitvector_or (bitvector_t *result, const bitvector_t *a, const bitvector_t *b)
 Bitwise OR operation.
 
void bitvector_and (bitvector_t *result, const bitvector_t *a, const bitvector_t *b)
 Bitwise AND operation.
 
void bitvector_not (bitvector_t *result, const bitvector_t *a)
 Bitwise NOT operation.
 
void bitvector_left_shift (bitvector_t *result, const bitvector_t *a)
 Left shift by one bit.
 
void bitvector_reverse (bitvector_t *result, const bitvector_t *a)
 Reverse bit order.
 
size_t bitvector_hamming_weight (const bitvector_t *bv)
 Count number of set bits (Hamming weight).
 
int bitvector_equals (const bitvector_t *a, const bitvector_t *b)
 Compare two bit vectors for equality.
 
int bitvector_from_bytes (bitvector_t *bv, const uint8_t *data, size_t num_bytes)
 Load bit vector from byte array.
 
int bitvector_to_bytes (const bitvector_t *bv, uint8_t *data, size_t num_bytes)
 Store bit vector to byte array.
 
void bitbuffer_init (bitbuffer_t *bb)
 Initialize bit buffer to empty state.
 
void bitbuffer_clear (bitbuffer_t *bb)
 Clear bit buffer contents.
 
int bitbuffer_append_bit (bitbuffer_t *bb, int bit)
 Append a single bit to buffer.
 
int bitbuffer_append_bits (bitbuffer_t *bb, const uint8_t *data, size_t num_bits)
 Append multiple bits from byte array.
 
int bitbuffer_append_value (bitbuffer_t *bb, uint32_t value, size_t num_bits)
 Append multiple bits from a value directly to accumulator.
 
int bitbuffer_append_bitvector (bitbuffer_t *bb, const bitvector_t *bv)
 Append all bits from a bit vector.
 
size_t bitbuffer_size (const bitbuffer_t *bb)
 Get number of bits in buffer.
 
size_t bitbuffer_to_bytes (const bitbuffer_t *bb, uint8_t *data, size_t max_bytes)
 Convert bit buffer to byte array.
 
void ccsds124_update_build (bitvector_t *build, const bitvector_t *input, const bitvector_t *prev_input, int new_mask_flag, size_t t)
 Update build vector (CCSDS Equation 6).
 
void ccsds124_update_mask (bitvector_t *mask, const bitvector_t *input, const bitvector_t *prev_input, const bitvector_t *build_prev, int new_mask_flag)
 Update mask vector (CCSDS Equation 7).
 
void ccsds124_compute_change (bitvector_t *change, const bitvector_t *mask, const bitvector_t *prev_mask, size_t t)
 Compute change vector (CCSDS Equation 8).
 
int ccsds124_count_encode (bitbuffer_t *output, uint32_t A)
 Counter encoding (CCSDS Section 5.2.2, Equation 9).
 
int ccsds124_rle_encode (bitbuffer_t *output, const bitvector_t *input)
 Run-length encoding (CCSDS Section 5.2.3, Equation 10).
 
int ccsds124_bit_extract (bitbuffer_t *output, const bitvector_t *data, const bitvector_t *mask)
 Bit extraction (CCSDS Section 5.2.4, Equation 11).
 
int ccsds124_bit_extract_forward (bitbuffer_t *output, const bitvector_t *data, const bitvector_t *mask)
 Bit extraction in forward order (LSB to MSB).
 
int ccsds124_compressor_init (ccsds124_compressor_t *comp, size_t F, const bitvector_t *initial_mask, uint8_t robustness, int pt_limit, int ft_limit, int rt_limit)
 Initialize compressor state.
 
void ccsds124_compressor_reset (ccsds124_compressor_t *comp)
 Reset compressor to initial state.
 
int ccsds124_compress_packet (ccsds124_compressor_t *comp, const bitvector_t *input, bitbuffer_t *output, const ccsds124_params_t *params)
 Compress a single input packet.
 
int ccsds124_compress (ccsds124_compressor_t *comp, const uint8_t *input_data, size_t input_size, uint8_t *output_buffer, size_t output_buffer_size, size_t *output_size)
 Compress entire input data stream.
 
void ccsds124_compute_robustness_window (bitvector_t *Xt, const ccsds124_compressor_t *comp, const bitvector_t *current_change)
 Compute robustness window Xₜ.
 
uint8_t ccsds124_compute_effective_robustness (const ccsds124_compressor_t *comp, const bitvector_t *current_change)
 Compute effective robustness Vₜ.
 
int ccsds124_has_positive_updates (const bitvector_t *Xt, const bitvector_t *mask)
 Check for positive mask updates (eₜ flag).
 
int ccsds124_compute_ct_flag (const ccsds124_compressor_t *comp, uint8_t Vt, int current_new_mask_flag)
 Compute cₜ flag for multiple mask updates.
 
void bitreader_init (bitreader_t *reader, const uint8_t *data, size_t num_bits)
 Initialize bit reader.
 
int bitreader_read_bit (bitreader_t *reader)
 Read a single bit.
 
uint32_t bitreader_read_bits (bitreader_t *reader, size_t num_bits)
 Read multiple bits as unsigned value.
 
size_t bitreader_position (const bitreader_t *reader)
 Get current bit position.
 
size_t bitreader_remaining (const bitreader_t *reader)
 Get remaining bits.
 
void bitreader_align_byte (bitreader_t *reader)
 Skip to next byte boundary.
 
int ccsds124_count_decode (bitreader_t *reader, uint32_t *value)
 Counter decoding (inverse of ccsds124_count_encode).
 
int ccsds124_rle_decode (bitreader_t *reader, bitvector_t *result, size_t length)
 Run-length decoding (inverse of ccsds124_rle_encode).
 
int ccsds124_bit_insert (bitreader_t *reader, bitvector_t *data, const bitvector_t *mask)
 Bit insertion (inverse of ccsds124_bit_extract).
 
int ccsds124_decompressor_init (ccsds124_decompressor_t *decomp, size_t F, const bitvector_t *initial_mask, uint8_t robustness)
 Initialize decompressor state.
 
void ccsds124_decompressor_reset (ccsds124_decompressor_t *decomp)
 Reset decompressor to initial state.
 
int ccsds124_decompressor_notify_packet_loss (ccsds124_decompressor_t *decomp, uint32_t lost_count)
 Notify decompressor of packet loss.
 
int ccsds124_decompress_packet (ccsds124_decompressor_t *decomp, bitreader_t *reader, bitvector_t *output)
 Decompress a single compressed packet.
 
int ccsds124_decompress_packet_checked (ccsds124_decompressor_t *decomp, const uint8_t *data, size_t num_bits, bitvector_t *output, ccsds124_decompress_result_t *result)
 Decompress a single packet with accuracy guarantee checking.
 
int ccsds124_discover_packet_length (const uint8_t *data, size_t num_bits, uint32_t *packet_length)
 Discover packet length (F) from a compressed packet.
 
int ccsds124_decompress (ccsds124_decompressor_t *decomp, const uint8_t *input_data, size_t input_size, uint8_t *output_buffer, size_t output_buffer_size, size_t *output_size)
 Decompress entire compressed data stream.
 
const char * ccsds124_version_string (void)
 Get version string.
 
const char * ccsds124_error_string (int error_code)
 Get error message for error code.
 

Detailed Description

CCSDS 124.0-B-1 Compression Library - Public API.

Definition in file ccsds124.h.