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
}