1
0
Fork 0
ESP8266 part of the f105-motor-demo project (see f105-motor-demo_stm32)
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 
Ondřej Hruška 4a3c814e57 removed old shitz, added html src 9 anos atrás
..
.gitignore Added files 9 anos atrás
.travis.yml Added files 9 anos atrás
LICENSE Added files 9 anos atrás
Makefile Added files 9 anos atrás
README.md Added files 9 anos atrás
dec_sm.dot Added files 9 anos atrás
enc_sm.dot Added files 9 anos atrás
greatest.h Added files 9 anos atrás
heatshrink.c Added files 9 anos atrás
heatshrink_common.h Added files 9 anos atrás
heatshrink_config.h Added files 9 anos atrás
heatshrink_decoder.c Added files 9 anos atrás
heatshrink_decoder.h Added files 9 anos atrás
heatshrink_encoder.c Added files 9 anos atrás
heatshrink_encoder.h Added files 9 anos atrás
test_heatshrink_dynamic.c Added files 9 anos atrás
test_heatshrink_dynamic_theft.c Added files 9 anos atrás
test_heatshrink_static.c Added files 9 anos atrás

README.md

heatshrink

A data compression/decompression library for embedded/real-time systems.

Key Features:

  • Low memory usage (as low as 50 bytes)
    It is useful for some cases with less than 50 bytes, and useful for many general cases with < 300 bytes.
  • Incremental, bounded CPU use
    You can chew on input data in arbitrarily tiny bites. This is a useful property in hard real-time environments.
  • Can use either static or dynamic memory allocation
    The library doesn't impose any constraints on memory management.
  • ISC license
    You can use it freely, even for commercial purposes.

Getting Started:

There is a standalone command-line program, heatshrink, but the encoder and decoder can also be used as libraries, independent of each other. To do so, copy heatshrink_common.h, heatshrink_config.h, and either heatshrink_encoder.c or heatshrink_decoder.c (and their respective header) into your project.

Dynamic allocation is used by default, but in an embedded context, you probably want to statically allocate the encoder/decoder. Set HEATSHRINK_DYNAMIC_ALLOC to 0 in heatshrink_config.h.

More Information and Benchmarks:

heatshrink is based on LZSS, since it's particularly suitable for compression in small amounts of memory. It can use an optional, small index to make compression significantly faster, but otherwise can run in under 100 bytes of memory. The index currently adds 2^(window size+1) bytes to memory usage for compression, and temporarily allocates 512 bytes on the stack during index construction.

For more information, see the blog post for an overview, and the heatshrink_encoder.h / heatshrink_decoder.h header files for API documentation.

Build Status

Build Status