@@ -22,9 +22,6 @@ import (
22
22
"encoding/binary"
23
23
"hash/crc32"
24
24
"io"
25
- "io/ioutil"
26
- "log"
27
- "os"
28
25
"strconv"
29
26
30
27
"github.com/arduino/arduino-cloud-cli/internal/lzss"
@@ -86,10 +83,7 @@ func (e *encoder) Write(binaryData []byte) (int, error) {
86
83
}
87
84
88
85
// Compress the compiled binary
89
- compressed , err := e .compress (& binaryData )
90
- if err != nil {
91
- return 0 , err
92
- }
86
+ compressed := lzss .Encode (binaryData )
93
87
94
88
// Prepend magic number and version field to payload
95
89
var binDataComplete []byte
@@ -98,12 +92,12 @@ func (e *encoder) Write(binaryData []byte) (int, error) {
98
92
binDataComplete = append (binDataComplete , compressed ... )
99
93
//log.Println("binDataComplete is", len(binDataComplete), "bytes length")
100
94
101
- headerSize , err := e .writeHeader (& binDataComplete )
95
+ headerSize , err := e .writeHeader (binDataComplete )
102
96
if err != nil {
103
97
return headerSize , err
104
98
}
105
99
106
- payloadSize , err := e .writePayload (& binDataComplete )
100
+ payloadSize , err := e .writePayload (binDataComplete )
107
101
if err != nil {
108
102
return payloadSize , err
109
103
}
@@ -117,23 +111,19 @@ func (e *encoder) Close() error {
117
111
return e .w .Flush ()
118
112
}
119
113
120
- func (e * encoder ) writeHeader (binDataComplete * []byte ) (int , error ) {
114
+ func (e * encoder ) writeHeader (binDataComplete []byte ) (int , error ) {
121
115
122
- //
123
116
// Write the length of the content
124
- //
125
117
lengthAsBytes := make ([]byte , 4 )
126
- binary .LittleEndian .PutUint32 (lengthAsBytes , uint32 (len (* binDataComplete )))
118
+ binary .LittleEndian .PutUint32 (lengthAsBytes , uint32 (len (binDataComplete )))
127
119
128
120
n , err := e .w .Write (lengthAsBytes )
129
121
if err != nil {
130
122
return n , err
131
123
}
132
124
133
- //
134
125
// Calculate the checksum for binDataComplete
135
- //
136
- crc := crc32 .ChecksumIEEE (* binDataComplete )
126
+ crc := crc32 .ChecksumIEEE (binDataComplete )
137
127
138
128
// encode the checksum uint32 value as 4 bytes
139
129
crcAsBytes := make ([]byte , 4 )
@@ -147,52 +137,6 @@ func (e *encoder) writeHeader(binDataComplete *[]byte) (int, error) {
147
137
return len (lengthAsBytes ) + len (crcAsBytes ), nil
148
138
}
149
139
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 )
198
142
}
0 commit comments