You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2016/05/20 01:04:28 UTC

[5/6] incubator-mynewt-newt git commit: Support timeouts on newtmgr connections

Support timeouts on newtmgr connections


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/commit/dc7f93f6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/dc7f93f6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/dc7f93f6

Branch: refs/heads/develop
Commit: dc7f93f6c17bf61a23d37e6c4d16db8fac07e213
Parents: 4943963
Author: spoonofpower <sp...@gmail.com>
Authored: Fri Apr 29 19:00:26 2016 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Thu May 19 18:00:32 2016 -0700

----------------------------------------------------------------------
 newtmgr/transport/conn.go       | 13 +++++++++++--
 newtmgr/transport/connserial.go |  8 +++++---
 2 files changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/dc7f93f6/newtmgr/transport/conn.go
----------------------------------------------------------------------
diff --git a/newtmgr/transport/conn.go b/newtmgr/transport/conn.go
index a774b38..42d22a4 100644
--- a/newtmgr/transport/conn.go
+++ b/newtmgr/transport/conn.go
@@ -21,13 +21,14 @@ package transport
 
 import (
 	"bytes"
+	"time"
 
 	"mynewt.apache.org/newt/newtmgr/config"
 	"mynewt.apache.org/newt/util"
 )
 
 type Conn interface {
-	Open(cp config.NewtmgrConnProfile) error
+	Open(cp config.NewtmgrConnProfile, timeout time.Duration) error
 	ReadPacket() (*Packet, error)
 	WritePacket(pkt *Packet) error
 }
@@ -68,13 +69,21 @@ func (pkt *Packet) TrimEnd(count int) {
 }
 
 func NewConn(cp config.NewtmgrConnProfile) (Conn, error) {
+	return newConn(cp, 0)
+}
+
+func NewConnWithTimeout(cp config.NewtmgrConnProfile, readTimeout time.Duration) (Conn, error) {
+	return newConn(cp, readTimeout)
+}
+
+func newConn(cp config.NewtmgrConnProfile, readTimeout time.Duration) (Conn, error) {
 	// Based on ConnProfile, instantiate the right type of conn object, that
 	// implements the conn interface.
 	var c Conn
 	switch cp.Type() {
 	case "serial":
 		c = &ConnSerial{}
-		if err := c.Open(cp); err != nil {
+		if err := c.Open(cp, readTimeout); err != nil {
 			return nil, err
 		}
 	default:

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/dc7f93f6/newtmgr/transport/connserial.go
----------------------------------------------------------------------
diff --git a/newtmgr/transport/connserial.go b/newtmgr/transport/connserial.go
index b221e77..e9cb9f6 100644
--- a/newtmgr/transport/connserial.go
+++ b/newtmgr/transport/connserial.go
@@ -24,6 +24,7 @@ import (
 	"encoding/base64"
 	"encoding/binary"
 	"fmt"
+	"time"
 
 	log "github.com/Sirupsen/logrus"
 	"github.com/joaojeronimo/go-crc16"
@@ -41,12 +42,13 @@ type ConnSerial struct {
 	serialChannel *serial.Port
 }
 
-func (cs *ConnSerial) Open(cp config.NewtmgrConnProfile) error {
+func (cs *ConnSerial) Open(cp config.NewtmgrConnProfile, readTimeout time.Duration) error {
 	var err error
 
 	c := &serial.Config{
-		Name: cp.ConnString(),
-		Baud: 115200,
+		Name:        cp.ConnString(),
+		Baud:        115200,
+		ReadTimeout: readTimeout,
 	}
 
 	cs.serialChannel, err = serial.OpenPort(c)