Skip to content

Commit 909c642

Browse files
committed
Update encoder
1 parent 4653690 commit 909c642

File tree

1 file changed

+8
-64
lines changed

1 file changed

+8
-64
lines changed

internal/ota/encoder.go

+8-64
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)