summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérémy Dufour2012-11-20 18:23:48 +0100
committerJérémy Dufour2012-11-21 17:09:59 +0100
commit2123940b593032986a1abd33327e5487399a06ad (patch)
tree7c26238025f128f11b72004d2b2ac0f24f89bce1
parentfc90ebb66f8e3153683c7de77747a8e7dbdf3f32 (diff)
common/include: add a common function to read version, refs #3452
-rw-r--r--common/include/spid_img_desc.h39
1 files changed, 38 insertions, 1 deletions
diff --git a/common/include/spid_img_desc.h b/common/include/spid_img_desc.h
index c90ca1a56d..591b4001a8 100644
--- a/common/include/spid_img_desc.h
+++ b/common/include/spid_img_desc.h
@@ -22,8 +22,10 @@
#ifndef __KERNEL__
#include <stdint.h>
-#endif /* __KERNEL__ */
#include <string.h>
+#else /* !__KERNEL__ */
+#include <linux/string.h>
+#endif /* __KERNEL__ */
#define SPIDCOM_IMG_DESC_IMG_NAME_0 "image 0"
#define SPIDCOM_IMG_DESC_IMG_NAME_1 "image 1"
@@ -248,4 +250,39 @@ spidcom_image_desc_load (spidcom_image_desc_generic_t *img_desc)
}
}
+/**
+ * Fill the version depending on the header type.
+ * \param img_desc the generic image descriptor
+ * \param version a allocated string (must be the biggest length of version
+ * from all spidcom image descriptor
+ * \return version size used (16 or 64)
+ *
+ * @note the version string may or may not be null terminated, it is just
+ * copied directly from the version field of the image descriptor.
+ */
+static inline int
+spidcom_image_desc_read_version (spidcom_image_desc_generic_t *img_desc,
+ char *version)
+{
+ int version_size;
+ char *version_addr;
+ switch (img_desc->type)
+ {
+ case SPIDCOM_IMG_DESC_IMAGE_TYPE_300:
+ version_addr = img_desc->img_300.version;
+ version_size = sizeof (img_desc->img_300.version);
+ break;
+ case SPIDCOM_IMG_DESC_IMAGE_TYPE_200:
+ version_addr = img_desc->img_200.version;
+ version_size = sizeof (img_desc->img_200.version);
+ break;
+ default:
+ strcpy (version, "UnknowID");
+ version_size = strlen (version);
+ return version_size;
+ }
+ strncpy (version, version_addr, version_size);
+ return version_size;
+}
+
#endif /* __SPID_IMG_DESC_H */