machine: avoid bytes package in USB logic

This greatly cuts down on compile time (by about 5x for small programs)
and also makes the program a whole lot smaller. Overall it cuts down
`make smoke-test` in the drivers repository by half (from 160s to 80s).

This will probably also fix the timeout issue in the Playground:
https://github.com/tinygo-org/playground/issues/7
Этот коммит содержится в:
Ayke van Laethem 2020-01-17 21:40:09 +01:00 коммит произвёл Ron Evans
родитель c698e99880
коммит 4ee7bf00e1

Просмотреть файл

@ -3,7 +3,6 @@
package machine package machine
import ( import (
"bytes"
"errors" "errors"
"runtime/volatile" "runtime/volatile"
) )
@ -348,18 +347,18 @@ const cdcSize = iadDescriptorSize +
// Bytes returns CDCDescriptor data. // Bytes returns CDCDescriptor data.
func (d CDCDescriptor) Bytes() []byte { func (d CDCDescriptor) Bytes() []byte {
buf := bytes.NewBuffer(make([]byte, 0)) var buf []byte
buf.Write(d.iad.Bytes()) buf = append(buf, d.iad.Bytes()...)
buf.Write(d.cif.Bytes()) buf = append(buf, d.cif.Bytes()...)
buf.Write(d.header.Bytes()) buf = append(buf, d.header.Bytes()...)
buf.Write(d.controlManagement.Bytes()) buf = append(buf, d.controlManagement.Bytes()...)
buf.Write(d.functionalDescriptor.Bytes()) buf = append(buf, d.functionalDescriptor.Bytes()...)
buf.Write(d.callManagement.Bytes()) buf = append(buf, d.callManagement.Bytes()...)
buf.Write(d.cifin.Bytes()) buf = append(buf, d.cifin.Bytes()...)
buf.Write(d.dif.Bytes()) buf = append(buf, d.dif.Bytes()...)
buf.Write(d.out.Bytes()) buf = append(buf, d.out.Bytes()...)
buf.Write(d.in.Bytes()) buf = append(buf, d.in.Bytes()...)
return buf.Bytes() return buf
} }
// MSCDescriptor is not used yet. // MSCDescriptor is not used yet.