You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by pa...@apache.org on 2016/10/18 22:48:59 UTC
[1/2] incubator-mynewt-newt git commit: write notes on the magic
number here and test long images (> 64k)
Repository: incubator-mynewt-newt
Updated Branches:
refs/heads/develop 0558d537a -> f544ec6fb
write notes on the magic number here and test long images (> 64k)
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/dba476ce
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/dba476ce
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/dba476ce
Branch: refs/heads/develop
Commit: dba476ce79f3041c62f72cbf6cb744fe24349c64
Parents: 0558d53
Author: paulfdietrich <pa...@yahoo.com>
Authored: Tue Oct 18 15:38:28 2016 -0700
Committer: paulfdietrich <pa...@yahoo.com>
Committed: Tue Oct 18 15:39:20 2016 -0700
----------------------------------------------------------------------
newtmgr/cli/image.go | 26 ++++++++++++++++++++++++++
newtmgr/transport/connserial.go | 11 ++++++++++-
2 files changed, 36 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/dba476ce/newtmgr/cli/image.go
----------------------------------------------------------------------
diff --git a/newtmgr/cli/image.go b/newtmgr/cli/image.go
index c8ca761..c2e94ed 100644
--- a/newtmgr/cli/image.go
+++ b/newtmgr/cli/image.go
@@ -253,6 +253,32 @@ func imageUploadCmd(cmd *cobra.Command, args []string) {
if profile.Type() == "ble" {
mtu = uint32((transport.BleMTU - 33) * 3 / 4)
} else {
+ /* since this possibly gets base 64 encoded, we want
+ * to ensure that the payload leaving this layer is 91
+ * bytes or less (91 bytes plus 2 byte crc will encode
+ * to 124 with 4 bytes of header
+ * left over */
+
+ /* 00000000 02 00 00 4f 00 01 00 01 a2 64 64 61 74 61 58 40 |...O.....ddataX@|
+ * 00000010 00 f0 5a f8 0e 4b 1c 70 0e 4b 5a 88 12 05 10 0f |..Z..K.p.KZ.....|
+ * 00000020 59 88 0d 4a 0a 40 5a 80 59 88 0c 4a 0a 40 5a 80 |Y..J.@Z.Y..J.@Z.|
+ * 00000030 19 1c 80 22 d2 01 4b 88 13 42 fc d1 05 49 02 02 |..."..K..B...I..|
+ * 00000040 48 88 05 4b 03 40 13 43 4b 80 00 f0 5d f8 10 bd |H..K.@.CK...]...|
+ * 00000050 63 6f 66 66 1a 00 01 5d b8 |coff..x|
+ */
+
+ /* from this dump we can see the following
+ * 1) newtmgr hdr 8 bytes
+ * 2) cbor wrapper up to data (and length) 8 bytes
+ * 3) cbor data 64 bytes
+ * 4) offset tag 4 bytes
+ * 5) offsert value 3 (safely say 5 bytes since it could be bigger
+ * than uint16_t
+ * That makes 25 bytes plus the data needs to fit in 91 bytes
+ */
+
+ /* however, something is not calcualated properly as we
+ * can only do 66 bytes here. Use 64 for power of 2 */
mtu = 64
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/dba476ce/newtmgr/transport/connserial.go
----------------------------------------------------------------------
diff --git a/newtmgr/transport/connserial.go b/newtmgr/transport/connserial.go
index b7aaf4f..37514a0 100644
--- a/newtmgr/transport/connserial.go
+++ b/newtmgr/transport/connserial.go
@@ -212,13 +212,22 @@ func (cs *ConnSerial) WritePacket(pkt *Packet) error {
totlen := len(base64Data)
for written < totlen {
+ /* write the packet stat designators. They are
+ * different whether we are starting a new packet or continuing one */
if written == 0 {
cs.writeData([]byte{6, 9})
} else {
cs.writeData([]byte{4, 20})
}
- writeLen := util.Min(120, totlen-written)
+ /* ensure that the total frame fits into 128 bytes.
+ * base 64 is 3 ascii to 4 base 64 byte encoding. so
+ * the number below should be a multiple of 4. Also,
+ * we need to save room for the header (2 byte) and
+ * carriage return (and possibly LF 2 bytes), */
+
+ /* all totaled, 124 bytes should work */
+ writeLen := util.Min(124, totlen-written)
writeBytes := base64Data[written : written+writeLen]
cs.writeData(writeBytes)
[2/2] incubator-mynewt-newt git commit: more documentation for the
first packet
Posted by pa...@apache.org.
more documentation for the first packet
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/f544ec6f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/f544ec6f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/f544ec6f
Branch: refs/heads/develop
Commit: f544ec6fb3d45e0a685541952c70eabf949c26ff
Parents: dba476c
Author: paulfdietrich <pa...@yahoo.com>
Authored: Tue Oct 18 15:48:35 2016 -0700
Committer: paulfdietrich <pa...@yahoo.com>
Committed: Tue Oct 18 15:48:35 2016 -0700
----------------------------------------------------------------------
newtmgr/cli/image.go | 11 +++++++++++
1 file changed, 11 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/f544ec6f/newtmgr/cli/image.go
----------------------------------------------------------------------
diff --git a/newtmgr/cli/image.go b/newtmgr/cli/image.go
index c2e94ed..7bcb879 100644
--- a/newtmgr/cli/image.go
+++ b/newtmgr/cli/image.go
@@ -295,6 +295,17 @@ func imageUploadCmd(cmd *cobra.Command, args []string) {
if currOff == 0 {
/* we need extra space to encode the image size */
if blockSz > (mtu - 8) {
+ /*
+ * to encode the image size, we write clen=val in CBOR.
+ * From below (for up to 2G images, you can see that it
+ * will take up to 9 bytes. (starts at 63.. ends at e8)
+ * 00000040 7d c4 00 00 7d c4 00 00 63 6c 65 6e 1a 00 01 5d |}...}...clen...]|
+ * 00000050 e8 63 6f 66 66 00 |.coff.|
+ * However, since the offset is zero, we will use less
+ * bytes (we budgeted for 5 bytes but will only use 1
+ */
+
+ /* to make these powers of 2, just go with 8 bytes */
blockSz = mtu - 8
}
}