76typedef enum : uint16_t {
137typedef enum : uint8_t {
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
ra8_rar5_dims_t
Alphabet sizes and fixed scratch dimensions of the RAR5 decoder.
@ k_ra8_rar5_ldc
Low-distance alphabet size.
@ k_ra8_rar5_max_filters
Pending data-filter records per member.
@ k_ra8_rar5_huff_total
NC+DC+LDC+RC combined length-table size.
@ k_ra8_rar5_bc
Bit-length pre-table alphabet size.
@ k_ra8_rar5_rc
Repeat-length alphabet size.
@ k_ra8_rar5_refill_bytes
Streaming bit-reader packed-byte window.
@ k_ra8_rar5_dc
Distance-slot alphabet size.
@ k_ra8_rar5_delta_scratch
Delta-filter reorder buffer (in-place bound).
@ k_ra8_rar5_nc
Main alphabet size (literals+len+rep+filter).
@ k_ra8_rar5_old_dist
Remembered recent match distances.
ra8_err_t ra8_rar5_decompress(const ra8_rar_t *rar, uint64_t data_off, uint64_t pack_size, uint8_t *out, size_t out_cap, uint64_t unp_size, ra8_rar5_state_t *st, size_t *got)
Decompress one RAR5-packed member into the caller's output buffer.
ra8_rar5_filter_kind_t
The RAR5 data-filter kinds ra8_rar5_filter_t::type can take.
@ k_ra8_rar5_filter_delta
Per-channel byte-delta de-interleave.
@ k_ra8_rar5_filter_arm
32-bit ARM BL branch-target transform.
@ k_ra8_rar5_filter_e8e9
x86 E8+E9 call/jmp-target transform.
@ k_ra8_rar5_filter_e8
x86 E8 call-target absolute->relative.
Clean-room, read-only RAR archive walker (RAR4 + RAR5 headers, STORE data).
One canonical Huffman decode table (shared by all five RAR5 alphabets).
uint32_t pos[16]
First num index per bit length.
uint32_t len[16]
Left-aligned upper-limit code per bit length.
uint16_t max
Alphabet size (populated slot count).
uint16_t num[k_ra8_rar5_nc]
Symbol per canonical code slot.
One pending RAR5 data filter recorded during decode, applied after.
uint8_t channels
Delta channel count (1..32); unused otherwise.
uint32_t len
Length of the transformed range in bytes.
uint8_t type
Filter kind (ra8_rar5_filter_kind_t).
uint64_t start
Absolute output offset the filter transforms from.
Caller-owned zero-heap scratch for one ra8_rar5_decompress call.
ra8_rar5_dtab_t ld
Main literal/length/rep/filter table.
uint64_t consumed
Bits consumed from the packed stream.
bool overrun
A read past the packed member ran dry.
uint8_t delta[k_ra8_rar5_delta_scratch]
Delta reorder.
uint64_t base
Absolute offset of the packed member.
ra8_rar5_dtab_t bd
Bit-length pre-table.
uint64_t packlen
Packed member length in bytes.
uint64_t old_dist[k_ra8_rar5_old_dist]
Recent-distance ring.
uint8_t refill[k_ra8_rar5_refill_bytes]
Refill window.
ra8_rar5_filter_t filters[k_ra8_rar5_max_filters]
Pending filters.
bool tables_ready
A table block was parsed.
uint16_t filter_count
Filters pending.
uint64_t fetched
Packed bytes pulled from the backing.
uint32_t refill_pos
Next byte to consume from refill.
ra8_rar5_dtab_t dd
Distance-slot table.
uint32_t nbits
Valid bits currently in acc.
ra8_rar5_dtab_t ldd
Low-distance table.
uint32_t last_length
Length of the last match.
const ra8_rar_t * rar
Archive backing for packed-byte refill.
ra8_rar5_dtab_t rd
Repeat-length table.
uint64_t acc
MSB-first bit accumulator.
uint32_t refill_len
Valid bytes in refill.
One open RAR archive: the backing plus the detected generation.