|
@@ -897,9 +897,33 @@ DRESULT disk_ioctl(BYTE drv, BYTE ctrl, void *buff)
|
|
return RES_OK;
|
|
return RES_OK;
|
|
}
|
|
}
|
|
|
|
|
|
-rt_time_t get_fattime(void)
|
|
|
|
|
|
+DWORD get_fattime(void)
|
|
{
|
|
{
|
|
- return time(RT_NULL);
|
|
|
|
|
|
+ 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
|
|
#if _FS_REENTRANT
|