]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - armsrc/util.c
Implement version information storage and retrieval for the bootrom and the osimage.
[proxmark3-svn] / armsrc / util.c
index 8a3da63a898f5dae60299ef4f8502c50dd0c56b7..650ba22bacb31914c142ffeee9a0a882c940fb3b 100644 (file)
@@ -52,6 +52,19 @@ int strlen(char *str)
        return l;\r
 }\r
 \r
+char* strncat(char *dest, const char *src, unsigned int n)\r
+{\r
+       unsigned int dest_len = strlen(dest);\r
+       unsigned int i;\r
+       \r
+       for (i = 0 ; i < n && src[i] != '\0' ; i++)\r
+               dest[dest_len + i] = src[i];\r
+       dest[dest_len + i] = '\0';\r
+       \r
+       return dest;\r
+}\r
+\r
+\r
 void LEDsoff()\r
 {\r
        LED_A_OFF();\r
@@ -222,3 +235,37 @@ void SpinDelay(int ms)
   // convert to uS and call microsecond delay function\r
        SpinDelayUs(ms*1000);\r
 }\r
+\r
+/* Similar to FpgaGatherVersion this formats stored version information\r
+ * into a string representation. It takes a pointer to the struct version_information,\r
+ * verifies the magic properties, then stores a formatted string, prefixed by\r
+ * prefix in dst.
+ */\r
+void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_information)\r
+{\r
+       struct version_information *v = (struct version_information*)version_information;\r
+       dst[0] = 0;\r
+       strncat(dst, prefix, len);\r
+       if(v->magic != VERSION_INFORMATION_MAGIC) {\r
+               strncat(dst, "Missing/Invalid version information", len);\r
+               return;\r
+       }\r
+       if(v->versionversion != 1) {\r
+               strncat(dst, "Version information not understood", len);\r
+               return;\r
+       }\r
+       if(!v->present) {\r
+               strncat(dst, "Version information not available", len);\r
+               return;\r
+       }\r
+       \r
+       strncat(dst, v->svnversion, len);\r
+       if(v->clean == 0) {\r
+               strncat(dst, "-unclean", len);\r
+       } else if(v->clean == 2) {\r
+               strncat(dst, "-suspect", len);\r
+       }\r
+       \r
+       strncat(dst, " ", len);\r
+       strncat(dst, v->buildtime, len);\r
+}\r
Impressum, Datenschutz