Merge branch 'master' of gitlab:wintermute/hackover2013-badge-firmware
[hackover2013-badge-firmware.git] / sysinit.c
index 94784b6..0385a21 100644 (file)
--- a/sysinit.c
+++ b/sysinit.c
@@ -39,6 +39,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
 
 #include "sysinit.h"
 
 
   DWORD get_fattime ()
   {
-    // ToDo!
-    return 0;
+    DWORD tmr = 0;
+
+    // tmr =  (((DWORD)rtcYear - 80) << 25)
+       //      | ((DWORD)rtcMon << 21)
+    //      | ((DWORD)rtcMday << 16)
+    //      | (WORD)(rtcHour << 11)
+    //      | (WORD)(rtcMin << 5)
+    //      | (WORD)(rtcSec >> 1);
+
+    return tmr;
   }
 #endif
 
@@ -298,3 +307,61 @@ int puts(const char * str)
 
   return 0;
 }
+
+// Override printf here if we're using Crossworks for ARM
+// so that we can still use the custom libc libraries.
+// For Codelite and compiling from the makefile (Yagarto, etc.)
+// this is done in /core/libc
+
+#ifdef __CROSSWORKS_ARM
+
+/**************************************************************************/
+/*! 
+    @brief  Outputs a formatted string on the DBGU stream. Format arguments
+            are given in a va_list instance.
+
+    @param[in]  pFormat
+                Format string
+    @param[in]  ap
+                Argument list
+*/
+/**************************************************************************/
+signed int vprintf(const char *pFormat, va_list ap)
+{
+  char pStr[CFG_PRINTF_MAXSTRINGSIZE];
+  char pError[] = "stdio.c: increase CFG_PRINTF_MAXSTRINGSIZE\r\n";
+  
+  // Write formatted string in buffer
+  if (vsprintf(pStr, pFormat, ap) >= CFG_PRINTF_MAXSTRINGSIZE) {
+    
+    puts(pError);
+    while (1); // Increase CFG_PRINTF_MAXSTRINGSIZE
+  }
+  
+  // Display string
+  return puts(pStr);
+}
+
+/**************************************************************************/
+/*! 
+    @brief  Outputs a formatted string on the DBGU stream, using a 
+            variable number of arguments
+
+    @param[in]  pFormat
+                Format string
+*/
+/**************************************************************************/
+signed int printf(const char *pFormat, ...)
+{
+    va_list ap;
+    signed int result;
+
+    // Forward call to vprintf
+    va_start(ap, pFormat);
+    result = vprintf(pFormat, ap);
+    va_end(ap);
+
+    return result;
+}
+
+#endif
This page took 0.025119 seconds and 4 git commands to generate.