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/01/19 00:28:35 UTC

incubator-mynewt-newt git commit: Start encoding imgmgr newt command payloads in json.

Repository: incubator-mynewt-newt
Updated Branches:
  refs/heads/master 23ba0ca97 -> ef2be9404


Start encoding imgmgr newt command payloads in json.


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

Branch: refs/heads/master
Commit: ef2be9404886c32136560f7ef455f5272bda0774
Parents: 23ba0ca
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Mon Jan 18 15:27:58 2016 -0800
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Mon Jan 18 15:27:58 2016 -0800

----------------------------------------------------------------------
 newtmgr/newtmgr.go            |  6 +--
 newtmgr/protocol/imageboot.go | 94 +++++++++-----------------------------
 newtmgr/protocol/imagelist.go | 22 ++++-----
 3 files changed, 34 insertions(+), 88 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/ef2be940/newtmgr/newtmgr.go
----------------------------------------------------------------------
diff --git a/newtmgr/newtmgr.go b/newtmgr/newtmgr.go
index be51412..90d7e0a 100644
--- a/newtmgr/newtmgr.go
+++ b/newtmgr/newtmgr.go
@@ -441,9 +441,9 @@ func imageBootCmd(cmd *cobra.Command, args []string) {
 		nmUsage(cmd, err)
 	}
 	if len(args) == 0 {
-		fmt.Println("    Test image :", iRsp.TestImage)
-		fmt.Println("    Main image :", iRsp.MainImage)
-		fmt.Println("    Active img :", iRsp.ActiveImage)
+		fmt.Println("    Test image :", iRsp.Test)
+		fmt.Println("    Main image :", iRsp.Main)
+		fmt.Println("    Active img :", iRsp.Active)
 	}
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/ef2be940/newtmgr/protocol/imageboot.go
----------------------------------------------------------------------
diff --git a/newtmgr/protocol/imageboot.go b/newtmgr/protocol/imageboot.go
index f3e3152..e16d7cc 100644
--- a/newtmgr/protocol/imageboot.go
+++ b/newtmgr/protocol/imageboot.go
@@ -16,26 +16,25 @@
 package protocol
 
 import (
-	"encoding/binary"
-	"strconv"
-	"strings"
+	"encoding/json"
 
+	"fmt"
 	"git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/util"
 )
 
 type ImageBoot struct {
-	BootTarget  string
-	TestImage   string
-	MainImage   string
-	ActiveImage string
+	BootTarget string
+	Test       string
+	Main       string
+	Active     string
 }
 
 func NewImageBoot() (*ImageBoot, error) {
 	s := &ImageBoot{}
 	s.BootTarget = ""
-	s.TestImage = ""
-	s.MainImage = ""
-	s.ActiveImage = ""
+	s.Test = ""
+	s.Main = ""
+	s.Active = ""
 	return s, nil
 }
 
@@ -52,51 +51,16 @@ func (i *ImageBoot) EncodeWriteRequest() (*NmgrReq, error) {
 	nmr.Len = 0
 
 	if i.BootTarget != "" {
-		verArray := strings.Split(i.BootTarget, ".")
-		major, err := strconv.ParseUint(verArray[0], 10, 8)
-		if err != nil {
-			return nil, util.NewNewtError("Invalid version string")
-		}
-		minor, err := strconv.ParseUint(verArray[1], 10, 8)
-		if err != nil {
-			return nil, util.NewNewtError("Invalid version string")
-		}
-
-		var revision uint64 = 0
-		if len(verArray) > 2 {
-			revision, err = strconv.ParseUint(verArray[2], 10, 16)
-			if err != nil {
-				return nil, util.NewNewtError("Invalid version string")
-			}
+		type BootReq struct {
+			Test string `json:"test"`
 		}
 
-		var buildNum uint64 = 0
-		if len(verArray) > 3 {
-			buildNum, err = strconv.ParseUint(verArray[3], 10, 32)
-			if err != nil {
-				return nil, util.NewNewtError("Invalid version string")
-			}
+		bReq := &BootReq{
+			Test: i.BootTarget,
 		}
-
-		u8b := make([]byte, 1)
-		u16b := make([]byte, 2)
-		u32b := make([]byte, 4)
-		data := make([]byte, 0)
-
-		u8b[0] = byte(major)
-		data = append(data, u8b...)
-
-		u8b[0] = byte(minor)
-		data = append(data, u8b...)
-
-		binary.BigEndian.PutUint16(u16b, uint16(revision))
-		data = append(data, u16b...)
-
-		binary.BigEndian.PutUint32(u32b, uint32(buildNum))
-		data = append(data, u32b...)
-
+		data, _ := json.Marshal(bReq)
 		nmr.Data = data
-		nmr.Len = 8
+		nmr.Len = uint16(len(data))
 		nmr.Op = NMGR_OP_WRITE
 	}
 	return nmr, nil
@@ -105,27 +69,13 @@ func (i *ImageBoot) EncodeWriteRequest() (*NmgrReq, error) {
 func DecodeImageBootResponse(data []byte) (*ImageBoot, error) {
 	i := &ImageBoot{}
 
-	var idx int = 0
-	for len(data) >= 8 {
-		major := uint8(data[0])
-		minor := uint8(data[1])
-		revision := binary.BigEndian.Uint16(data[2:4])
-		buildNum := binary.BigEndian.Uint32(data[4:8])
-		data = data[8:]
-
-		versStr := ImageVersStr(major, minor, revision, buildNum)
-		switch idx {
-		case 0:
-			i.TestImage = versStr
-		case 1:
-			i.MainImage = versStr
-		case 2:
-			i.ActiveImage = versStr
-		default:
-			/* XXXX? */
-		}
-		idx++
+	if len(data) == 0 {
+		return i, nil
+	}
+	err := json.Unmarshal(data, &i)
+	if err != nil {
+		return nil, util.NewNewtError(fmt.Sprintf("Invalid incoming json: %s",
+			err.Error()))
 	}
-
 	return i, nil
 }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/ef2be940/newtmgr/protocol/imagelist.go
----------------------------------------------------------------------
diff --git a/newtmgr/protocol/imagelist.go b/newtmgr/protocol/imagelist.go
index 6598e40..024dfe5 100644
--- a/newtmgr/protocol/imagelist.go
+++ b/newtmgr/protocol/imagelist.go
@@ -16,8 +16,10 @@
 package protocol
 
 import (
-	"encoding/binary"
+	"encoding/json"
 	"fmt"
+
+	"git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/util"
 )
 
 type ImageList struct {
@@ -62,18 +64,12 @@ func (i *ImageList) EncodeWriteRequest() (*NmgrReq, error) {
 }
 
 func DecodeImageListResponse(data []byte) (*ImageList, error) {
-	i := &ImageList{}
-
-	for len(data) >= 8 {
-		major := uint8(data[0])
-		minor := uint8(data[1])
-		revision := binary.BigEndian.Uint16(data[2:4])
-		buildNum := binary.BigEndian.Uint32(data[4:8])
-		data = data[8:]
+	list := &ImageList{}
 
-		versStr := ImageVersStr(major, minor, revision, buildNum)
-		i.Images = append(i.Images, versStr)
+	err := json.Unmarshal(data, &list)
+	if err != nil {
+		return nil, util.NewNewtError(fmt.Sprintf("Invalid incoming json: %s",
+			err.Error()))
 	}
-
-	return i, nil
+	return list, nil
 }