You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2016/08/24 00:53:42 UTC

[28/50] [abbrv] incubator-mynewt-core git commit: boot, imgmgr; return the slot number for test image.

boot, imgmgr; return the slot number for test image.


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

Branch: refs/heads/master
Commit: cc0317c4b122f318064f3be8f11288ae08f74488
Parents: c29be5a
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Wed Aug 17 12:56:16 2016 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Fri Aug 19 15:11:49 2016 -0700

----------------------------------------------------------------------
 libs/bootutil/include/bootutil/bootutil_misc.h |  2 +-
 libs/bootutil/src/bootutil_misc.c              | 31 +++++++++++++++++----
 libs/imgmgr/src/imgmgr_boot.c                  | 13 ++++++---
 3 files changed, 36 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/cc0317c4/libs/bootutil/include/bootutil/bootutil_misc.h
----------------------------------------------------------------------
diff --git a/libs/bootutil/include/bootutil/bootutil_misc.h b/libs/bootutil/include/bootutil/bootutil_misc.h
index e8834db..389366b 100644
--- a/libs/bootutil/include/bootutil/bootutil_misc.h
+++ b/libs/bootutil/include/bootutil/bootutil_misc.h
@@ -21,7 +21,7 @@
 #define __BOOTUTIL_MISC_H_
 
 struct image_version;
-int boot_vect_read_test(struct image_version *out_ver);
+int boot_vect_read_test(int *slot);
 int boot_vect_read_main(struct image_version *out_ver);
 int boot_vect_write_test(int slot);
 int boot_vect_write_main(struct image_version *ver);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/cc0317c4/libs/bootutil/src/bootutil_misc.c
----------------------------------------------------------------------
diff --git a/libs/bootutil/src/bootutil_misc.c b/libs/bootutil/src/bootutil_misc.c
index 3885af9..e353b62 100644
--- a/libs/bootutil/src/bootutil_misc.c
+++ b/libs/bootutil/src/bootutil_misc.c
@@ -30,14 +30,35 @@
  * Retrieves from the boot vector the version number of the test image (i.e.,
  * the image that has not been proven stable, and which will only run once).
  *
- * @param out_ver           On success, the test version gets written here.
+ * @param slot              On success, the slot number of image to boot.
  *
  * @return                  0 on success; nonzero on failure.
  */
 int
-boot_vect_read_test(struct image_version *out_ver)
+boot_vect_read_test(int *slot)
 {
-    return 0;
+    const struct flash_area *fap;
+    struct boot_img_trailer bit;
+    int i;
+    int rc;
+    uint32_t off;
+
+    for (i = FLASH_AREA_IMAGE_1; i <= FLASH_AREA_IMAGE_1; i++) {
+        rc = flash_area_open(i, &fap);
+        if (rc) {
+            continue;
+        }
+        off = fap->fa_size - sizeof(struct boot_img_trailer);
+        rc = flash_area_read(fap, off, &bit, sizeof(bit));
+        if (rc) {
+            continue;
+        }
+        if (bit.bit_start == BOOT_IMG_MAGIC) {
+            *slot = i;
+            return 0;
+        }
+    }
+    return -1;
 }
 
 /**
@@ -50,7 +71,7 @@ boot_vect_read_test(struct image_version *out_ver)
 int
 boot_vect_read_main(struct image_version *out_ver)
 {
-    return 0;
+    return -1;
 }
 
 /**
@@ -85,7 +106,7 @@ boot_vect_write_test(int slot)
 int
 boot_vect_write_main(struct image_version *ver)
 {
-    return 0;
+    return -1;
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/cc0317c4/libs/imgmgr/src/imgmgr_boot.c
----------------------------------------------------------------------
diff --git a/libs/imgmgr/src/imgmgr_boot.c b/libs/imgmgr/src/imgmgr_boot.c
index c0277b1..c252b9c 100644
--- a/libs/imgmgr/src/imgmgr_boot.c
+++ b/libs/imgmgr/src/imgmgr_boot.c
@@ -63,6 +63,7 @@ imgr_boot_read(struct nmgr_jbuf *njb)
 {
     int rc;
     struct json_encoder *enc;
+    int slot;
     struct image_version ver;
     struct json_value jv;
     uint8_t hash[IMGMGR_HASH_LEN];
@@ -71,9 +72,12 @@ imgr_boot_read(struct nmgr_jbuf *njb)
 
     json_encode_object_start(enc);
 
-    rc = boot_vect_read_test(&ver);
+    rc = boot_vect_read_test(&slot);
     if (!rc) {
-        imgr_ver_jsonstr(enc, "test", &ver);
+        rc = imgr_read_info(slot, &ver, hash);
+        if (!rc) {
+            imgr_ver_jsonstr(enc, "test", &ver);
+        }
     }
 
     rc = boot_vect_read_main(&ver);
@@ -161,14 +165,15 @@ imgr_boot2_read(struct nmgr_jbuf *njb)
     struct image_version ver;
     struct json_value jv;
     uint8_t hash[IMGMGR_HASH_LEN];
+    int slot;
 
     enc = &njb->njb_enc;
 
     json_encode_object_start(enc);
 
-    rc = boot_vect_read_test(&ver);
+    rc = boot_vect_read_test(&slot);
     if (!rc) {
-        rc = imgr_find_by_ver(&ver, hash);
+        rc = imgr_read_info(slot, &ver, hash);
         if (rc >= 0) {
             imgr_hash_jsonstr(enc, "test", hash);
         }