fix fattime different from elmfat definition

This commit is contained in:
xools 2017-04-16 16:13:15 -07:00
parent e979b8a8b9
commit 5b50c7e41b
1 changed files with 26 additions and 2 deletions

View File

@ -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