aboutsummaryrefslogtreecommitdiff
path: root/elegoo.go
diff options
context:
space:
mode:
Diffstat (limited to 'elegoo.go')
-rw-r--r--elegoo.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/elegoo.go b/elegoo.go
new file mode 100644
index 0000000..a7ed182
--- /dev/null
+++ b/elegoo.go
@@ -0,0 +1,28 @@
+package elegoo
+
+import (
+ "bufio"
+ "io"
+
+ "github.com/dim13/cobs"
+ proto "github.com/golang/protobuf/proto"
+)
+
+//go:generate sh -c "protoc --go_out=. --nanopb_out=elegoo/ *.proto"
+
+func Send(w io.Writer, pb proto.Message) error {
+ buf := new(proto.Buffer)
+ if err := buf.EncodeMessage(pb); err != nil {
+ return err
+ }
+ _, err := w.Write(cobs.Encode(buf.Bytes()))
+ return err
+}
+
+func Recv(buf *bufio.Reader, pb proto.Message) error {
+ block, err := buf.ReadBytes(0)
+ if err != nil {
+ return err
+ }
+ return proto.NewBuffer(cobs.Decode(block)).DecodeMessage(pb)
+}