@ -8,12 +8,15 @@
# include <sys/mman.h>
# include <arpa/inet.h>
# include <string.h>
# include "espfs.h"
# include "espfsformat.h"
//Heatshrink
# ifdef ESPFS_HEATSHRINK
# include "heatshrink_common.h"
# include "heatshrink_config.h"
# include "heatshrink_encoder.h"
# endif
//Routines to convert host format to the endianness used in the xtensa
@ -33,6 +36,7 @@ int htoxl(int in) {
return * ( ( int * ) r ) ;
}
# ifdef ESPFS_HEATSHRINK
size_t compressHeatshrink ( char * in , int insize , char * out , int outsize , int level ) {
char * inp = in ;
char * outp = out ;
@ -77,6 +81,7 @@ size_t compressHeatshrink(char *in, int insize, char *out, int outsize, int leve
heatshrink_encoder_free ( enc ) ;
return r ;
}
# endif
int handleFile ( int f , char * name , int compression , int level ) {
char * fdat , * cdat ;
@ -93,9 +98,11 @@ int handleFile(int f, char *name, int compression, int level) {
if ( compression = = COMPRESS_NONE ) {
csize = size ;
cdat = fdat ;
# ifdef ESPFS_HEATSHRINK
} else if ( compression = = COMPRESS_HEATSHRINK ) {
cdat = malloc ( size * 2 ) ;
csize = compressHeatshrink ( fdat , size , cdat , size * 2 , level ) ;
# endif
} else {
fprintf ( stderr , " Unknown compression - %d \n " , compression ) ;
exit ( 1 ) ;
@ -151,15 +158,21 @@ int main(int argc, char **argv) {
int serr ;
int rate ;
int err = 0 ;
int compType = 1 ; //default compression type - heatshrink
int compType ; //default compression type - heatshrink
int compLvl = - 1 ;
# ifdef ESPFS_HEATSHRINK
compType = COMPRESS_HEATSHRINK ;
# else
compType = COMPRESS_NONE ;
# endif
for ( x = 1 ; x < argc ; x + + ) {
if ( strcmp ( argv [ x ] , " -c " ) = = 0 & & argc > = x - 2 ) {
compType = atoi ( argv [ x = 1 ] ) ;
compType = atoi ( argv [ x + 1 ] ) ;
x + + ;
} else if ( strcmp ( argv [ x ] , " -l " ) = = 0 & & argc > = x - 2 ) {
compLvl = atoi ( argv [ x = 1 ] ) ;
compLvl = atoi ( argv [ x + 1 ] ) ;
if ( compLvl < 1 | | compLvl > 9 ) err = 1 ;
x + + ;
} else {
@ -170,8 +183,13 @@ int main(int argc, char **argv) {
if ( err ) {
fprintf ( stderr , " %s - Program to create espfs images \n " , argv [ 0 ] ) ;
fprintf ( stderr , " Usage: \n find | %s [-c compressor] [-l compression_level] > out.espfs \n " , argv [ 0 ] ) ;
fprintf ( stderr , " Compressors: \n 0 - None \n 1 - Heatshrink(defautl \n " ) ;
fprintf ( stderr , " Compression level: 1 is worst but low RAM usage, higher is better compression \n but uses more ram on decompression. -1 = compressors default. \n " ) ;
fprintf ( stderr , " Compressors: \n " ) ;
# ifdef ESPFS_HEATSHRINK
fprintf ( stderr , " 0 - None \n 1 - Heatshrink(default) \n " ) ;
# else
fprintf ( stderr , " 0 - None(default) \n " ) ;
# endif
fprintf ( stderr , " \n Compression level: 1 is worst but low RAM usage, higher is better compression \n but uses more ram on decompression. -1 = compressors default. \n " ) ;
exit ( 0 ) ;
}