aboutsummaryrefslogtreecommitdiff
path: root/elegoo.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-12-13 00:33:03 +0100
committerDimitri Sokolyuk <demon@dim13.org>2017-12-13 00:33:03 +0100
commit4f954f2daed0cb4f9c522002221a706e01c3e31e (patch)
treea32e713c093ba2da686d82eb0bc163b64be33cd8 /elegoo.go
parent34c4c1a7145c8c224392ca36f70225bf00b418fd (diff)
split
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)
+}