Repository: incubator-mynewt-newt
Updated Branches:
  refs/heads/develop a8d6065d9 -> 28cb03fd8


newtmgr - add ability to log in / out bytes.


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/28cb03fd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/28cb03fd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/28cb03fd

Branch: refs/heads/develop
Commit: 28cb03fd80297f6ecb7f9184e53f7f78cd7468d4
Parents: a8d6065
Author: Christopher Collins <ccoll...@apache.org>
Authored: Wed Oct 12 16:46:37 2016 -0700
Committer: Christopher Collins <ccoll...@apache.org>
Committed: Wed Oct 12 16:46:37 2016 -0700

----------------------------------------------------------------------
 newtmgr/nmutil/nmutil.go        | 74 ++++++++++++++++++++++++++++++++++++
 newtmgr/transport/connserial.go |  7 ++++
 2 files changed, 81 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/28cb03fd/newtmgr/nmutil/nmutil.go
----------------------------------------------------------------------
diff --git a/newtmgr/nmutil/nmutil.go b/newtmgr/nmutil/nmutil.go
new file mode 100644
index 0000000..5b63ed6
--- /dev/null
+++ b/newtmgr/nmutil/nmutil.go
@@ -0,0 +1,74 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package nmutil
+
+import (
+       "encoding/hex"
+       "fmt"
+       "os"
+       "time"
+)
+
+var PacketTraceDir string
+var traceFile *os.File
+
+// @return                      true if the file can be used;
+//                              false otherwise.
+func ensureTraceFileOpen() bool {
+       if traceFile != nil {
+               return true
+       }
+       if PacketTraceDir == "" {
+               return false
+       }
+
+       now := time.Now()
+       secs := now.Unix()
+
+       filename := fmt.Sprintf("%s/%d", PacketTraceDir, secs)
+
+       var err error
+       traceFile, err = os.Create(filename)
+       if err != nil {
+               return false
+       }
+
+       return true
+}
+
+func LogIncoming(bytes []byte) {
+       if !ensureTraceFileOpen() {
+               return
+       }
+
+       fmt.Fprintf(traceFile, "Incoming:\n%s\n", hex.Dump(bytes))
+}
+
+func LogOutgoing(bytes []byte) {
+       if !ensureTraceFileOpen() {
+               return
+       }
+
+       fmt.Fprintf(traceFile, "Outgoing:\n%s\n", hex.Dump(bytes))
+}
+
+func LogMessage(msg string) {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/28cb03fd/newtmgr/transport/connserial.go
----------------------------------------------------------------------
diff --git a/newtmgr/transport/connserial.go b/newtmgr/transport/connserial.go
index 11ceadc..223e1db 100644
--- a/newtmgr/transport/connserial.go
+++ b/newtmgr/transport/connserial.go
@@ -32,6 +32,7 @@ import (
        "github.com/tarm/serial"
 
        "mynewt.apache.org/newt/newtmgr/config"
+       "mynewt.apache.org/newt/newtmgr/nmutil"
        "mynewt.apache.org/newt/util"
 )
 
@@ -70,6 +71,8 @@ func (cs *ConnSerial) ReadPacket() (*Packet, error) {
        for scanner.Scan() {
                line := []byte(scanner.Text())
 
+               nmutil.LogIncoming(line)
+
                for {
                        if len(line) > 1 && line[0] == '\r' {
                                line = line[1:]
@@ -87,6 +90,7 @@ func (cs *ConnSerial) ReadPacket() (*Packet, error) {
 
                data, err := base64.StdEncoding.DecodeString(base64Data)
                if err != nil {
+                       nmutil.LogMessage("base64 decode error\n")
                        return nil, util.NewNewtError(
                                fmt.Sprintf("Couldn't decode base64 string: 
%s\n"+
                                        "Packet hex dump:\n%s",
@@ -113,6 +117,7 @@ func (cs *ConnSerial) ReadPacket() (*Packet, error) {
                full := cs.currentPacket.AddBytes(data)
                if full {
                        if crc16.Crc16(cs.currentPacket.GetBytes()) != 0 {
+                               nmutil.LogMessage("CRC error\n")
                                return nil, util.NewNewtError("CRC error")
                        }
 
@@ -130,6 +135,7 @@ func (cs *ConnSerial) ReadPacket() (*Packet, error) {
        if err == nil {
                // Scanner hit EOF, so we'll need to create a new one.  This 
only
                // happens on timeouts.
+               nmutil.LogMessage("Timeout reading from serial connection\n")
                err = util.NewNewtError("Timeout reading from serial 
connection")
                cs.scanner = bufio.NewScanner(cs.serialChannel)
        }
@@ -137,6 +143,7 @@ func (cs *ConnSerial) ReadPacket() (*Packet, error) {
 }
 
 func (cs *ConnSerial) writeData(bytes []byte) {
+       nmutil.LogOutgoing(bytes)
        log.Debugf("Writing %+v to data channel", bytes)
        cs.serialChannel.Write(bytes)
 }

Reply via email to