diff --git a/src/capwap/cw_put_image_data.c b/src/capwap/cw_put_image_data.c new file mode 100644 index 00000000..ac9bbbb3 --- /dev/null +++ b/src/capwap/cw_put_image_data.c @@ -0,0 +1,26 @@ + +#include "capwap.h" + + + +int cw_put_image_data(uint8_t *dst,FILE *infile) +{ + int bytes = fread(dst+1,1,1024,infile); + + if (ferror(infile)){ + cw_put_byte(dst+0,5); + return 1; + } + + if ( feof(infile)){ + /* Last image block */ + cw_put_byte(dst,2); + } + else{ + cw_put_byte(dst,1); + } + + return bytes+1; +} + + diff --git a/src/capwap/lw_put_image_data.c b/src/capwap/lw_put_image_data.c new file mode 100644 index 00000000..8622ea59 --- /dev/null +++ b/src/capwap/lw_put_image_data.c @@ -0,0 +1,25 @@ +#include "lwapp.h" + +int lw_put_image_data(uint8_t *dst,FILE *infile) +{ + if ( feof(infile)){ + lw_put_byte(dst+0,1); + return 1; + } + + int bytes = fread(dst+3,1,LW_BLOCKSIZE_IMAGE_DATA,infile); + + if ( ferror(infile)) { + lw_put_byte(dst+0,5); + return 1; + } + + lw_put_byte(dst,3); + + uint16_t checksum = lw_checksum(dst+3,bytes); + lw_put_word(dst+1,checksum); + + return bytes+3; +} + +