fix fattime different from elmfat definition
@@ -897,9 +897,33 @@ DRESULT disk_ioctl(BYTE drv, BYTE ctrl, void *buff)
return RES_OK;
}
-rt_time_t get_fattime(void)
-{
- return time(RT_NULL);
+DWORD get_fattime(void)
+{
+ time_t now;
+ struct tm *p_tm;
+ struct tm tm_now;
+ DWORD fat_time;
+
+ /* get current time */
+ now = time(RT_NULL);
+
+ /* lock scheduler. */
+ rt_enter_critical();
+ /* converts calendar time time into local time. */
+ p_tm = localtime(&now);
+ /* copy the statically located variable */
+ memcpy(&tm_now, p_tm, sizeof(struct tm));
+ /* unlock scheduler. */
+ rt_exit_critical();
+
+ fat_time = (DWORD)(tm_now.tm_year - 80) << 25 |
+ (DWORD)(tm_now.tm_mon + 1) << 21 |
+ (DWORD)tm_now.tm_mday << 16 |
+ (DWORD)tm_now.tm_hour << 11 |
+ (DWORD)tm_now.tm_min << 5 |
+ (DWORD)tm_now.tm_sec / 2 ;
+
+ return fat_time;
}
#if _FS_REENTRANT
