@@ -22,9 +22,6 @@ import (
2222 "encoding/binary"
2323 "hash/crc32"
2424 "io"
25- "io/ioutil"
26- "log"
27- "os"
2825 "strconv"
2926
3027 "github.com/arduino/arduino-cloud-cli/internal/lzss"
@@ -86,10 +83,7 @@ func (e *encoder) Write(binaryData []byte) (int, error) {
8683 }
8784
8885 // Compress the compiled binary
89- compressed , err := e .compress (& binaryData )
90- if err != nil {
91- return 0 , err
92- }
86+ compressed := lzss .Encode (binaryData )
9387
9488 // Prepend magic number and version field to payload
9589 var binDataComplete []byte
@@ -98,12 +92,12 @@ func (e *encoder) Write(binaryData []byte) (int, error) {
9892 binDataComplete = append (binDataComplete , compressed ... )
9993 //log.Println("binDataComplete is", len(binDataComplete), "bytes length")
10094
101- headerSize , err := e .writeHeader (& binDataComplete )
95+ headerSize , err := e .writeHeader (binDataComplete )
10296 if err != nil {
10397 return headerSize , err
10498 }
10599
106- payloadSize , err := e .writePayload (& binDataComplete )
100+ payloadSize , err := e .writePayload (binDataComplete )
107101 if err != nil {
108102 return payloadSize , err
109103 }
@@ -117,23 +111,19 @@ func (e *encoder) Close() error {
117111 return e .w .Flush ()
118112}
119113
120- func (e * encoder ) writeHeader (binDataComplete * []byte ) (int , error ) {
114+ func (e * encoder ) writeHeader (binDataComplete []byte ) (int , error ) {
121115
122- //
123116 // Write the length of the content
124- //
125117 lengthAsBytes := make ([]byte , 4 )
126- binary .LittleEndian .PutUint32 (lengthAsBytes , uint32 (len (* binDataComplete )))
118+ binary .LittleEndian .PutUint32 (lengthAsBytes , uint32 (len (binDataComplete )))
127119
128120 n , err := e .w .Write (lengthAsBytes )
129121 if err != nil {
130122 return n , err
131123 }
132124
133- //
134125 // Calculate the checksum for binDataComplete
135- //
136- crc := crc32 .ChecksumIEEE (* binDataComplete )
126+ crc := crc32 .ChecksumIEEE (binDataComplete )
137127
138128 // encode the checksum uint32 value as 4 bytes
139129 crcAsBytes := make ([]byte , 4 )
@@ -147,52 +137,6 @@ func (e *encoder) writeHeader(binDataComplete *[]byte) (int, error) {
147137 return len (lengthAsBytes ) + len (crcAsBytes ), nil
148138}
149139
150- func (e * encoder ) writePayload (data * []byte ) (int , error ) {
151-
152- // write the payload
153- payloadSize , err := e .w .Write (* data )
154- if err != nil {
155- return payloadSize , err
156- }
157-
158- return payloadSize , nil
159- }
160-
161- func (e * encoder ) compress (data * []byte ) ([]byte , error ) {
162-
163- // create a tmp file for input
164- inputFile , err := ioutil .TempFile ("" , "ota-lzss-input" )
165- if err != nil {
166- log .Fatal (err )
167- return nil , err
168- }
169- defer os .Remove (inputFile .Name ())
170-
171- // create a tmp file for output
172- outputFile , err := ioutil .TempFile ("" , "ota-lzss-output" )
173- if err != nil {
174- log .Fatal (err )
175- return nil , err
176- }
177- defer os .Remove (outputFile .Name ())
178-
179- // write data in the input file
180- ioutil .WriteFile (inputFile .Name (), * data , 644 )
181- if err != nil {
182- log .Fatal (err )
183- return nil , err
184- }
185-
186- // Compress the binary data using LZSS
187- lzss .Encode (inputFile .Name (), outputFile .Name ())
188-
189- // reads compressed data from output file and write it into
190- // the writer
191- compressed , err := ioutil .ReadFile (outputFile .Name ())
192- if err != nil {
193- log .Fatal (err )
194- return nil , err
195- }
196-
197- return compressed , nil
140+ func (e * encoder ) writePayload (data []byte ) (int , error ) {
141+ return e .w .Write (data )
198142}
0 commit comments