aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-09-03 00:54:03 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-09-03 00:54:03 +0200
commit528d38d82ff62aaa282812ae8b7a9fcc30691213 (patch)
tree2b7cf33df29aa80b2a4811b9a0f0603e4058f64f /main.go
parent3ee2c48a1d5599c4e6754636d1755b1e1e897301 (diff)
Add fsm
Diffstat (limited to 'main.go')
-rw-r--r--main.go75
1 files changed, 3 insertions, 72 deletions
diff --git a/main.go b/main.go
index ce4ea93..166b336 100644
--- a/main.go
+++ b/main.go
@@ -6,14 +6,13 @@ import (
"bufio"
"io"
"log"
- "time"
"github.com/dim13/cobs"
"github.com/golang/protobuf/proto"
"github.com/tarm/serial"
)
-func Write(w io.Writer, pb proto.Message) error {
+func Send(w io.Writer, pb proto.Message) error {
buf := new(proto.Buffer)
if err := buf.EncodeMessage(pb); err != nil {
return err
@@ -22,7 +21,7 @@ func Write(w io.Writer, pb proto.Message) error {
return err
}
-func Read(buf *bufio.Reader, pb proto.Message) error {
+func Recv(buf *bufio.Reader, pb proto.Message) error {
block, err := buf.ReadBytes(0)
if err != nil {
return err
@@ -30,43 +29,6 @@ func Read(buf *bufio.Reader, pb proto.Message) error {
return proto.NewBuffer(cobs.Decode(block)).DecodeMessage(pb)
}
-func Reader(r io.Reader) <-chan *Events {
- c := make(chan *Events)
- buf := bufio.NewReader(r)
- go func() {
- for {
- event := &Events{}
- if err := Read(buf, event); err != nil {
- if err == io.ErrUnexpectedEOF {
- continue
- }
- log.Println("ERR", err)
- return
- }
- log.Println("<-", event)
- c <- event
- }
- }()
- return c
-}
-
-func Writer(w io.Writer) chan<- *Command {
- c := make(chan *Command)
- go func() {
- for command := range c {
- log.Println("->", command)
- if err := Write(w, command); err != nil {
- if err == io.ErrUnexpectedEOF {
- continue
- }
- log.Println("ERR", err)
- return
- }
- }
- }()
- return c
-}
-
func main() {
conf := &serial.Config{
//Name: "/dev/tty.usbmodem1421",
@@ -80,36 +42,5 @@ func main() {
}
defer s.Close()
- w := Writer(s)
-
- go func() {
- for i := 30; i < 140; i += 10 {
- w <- &Command{Direction: uint32(i)}
- time.Sleep(100 * time.Millisecond)
- }
- for i := 140; i > 30; i -= 10 {
- w <- &Command{Direction: uint32(i)}
- time.Sleep(100 * time.Millisecond)
- }
- w <- &Command{Direction: 85}
- }()
-
- for event := range Reader(s) {
- if event.SensorC || event.Distance < 20 {
- //w <- &Command{Stop: true}
- }
- }
-
- /* log.Println("send motor")
- Write(s, &Command{SpeedL: 200, SpeedR: 200, StopAfter: 1000})
- time.Sleep(time.Second)
-
- log.Println("send motor turn")
- time.Sleep(time.Second)
- Write(s, &Command{SpeedL: -250, SpeedR: 250, StopAfter: 500})
-
- log.Println("send motor turn")
- time.Sleep(time.Second)
- Write(s, &Command{SpeedL: 250, SpeedR: -250, StopAfter: 500})
- */
+ NewFSM(s).Start()
}