mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-28 16:14:20 +08:00
Merge pull request #4314 from mysterywolf/mktime1
[bug][localtime]解决底层驱动格林威治时间与当地时间混乱使用的问题
This commit is contained in:
+18
-18
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include <s3c24x0.h>
|
||||
|
||||
// #define RTC_DEBUG
|
||||
@@ -125,27 +125,27 @@ static rt_size_t rtc_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t
|
||||
|
||||
static rt_err_t rtc_control(rt_device_t dev, int cmd, void *args)
|
||||
{
|
||||
struct tm tm, *tm_ptr;
|
||||
struct tm tm, *tm_ptr;
|
||||
time_t *time;
|
||||
RT_ASSERT(dev != RT_NULL);
|
||||
RT_ASSERT(dev != RT_NULL);
|
||||
|
||||
time = (time_t *)args;
|
||||
switch (cmd)
|
||||
{
|
||||
case RT_DEVICE_CTRL_RTC_GET_TIME:
|
||||
/* read device */
|
||||
rt_hw_rtc_get(&tm);
|
||||
*((rt_time_t *)args) = mktime(&tm);
|
||||
break;
|
||||
time = (time_t *)args;
|
||||
switch (cmd)
|
||||
{
|
||||
case RT_DEVICE_CTRL_RTC_GET_TIME:
|
||||
/* read device */
|
||||
rt_hw_rtc_get(&tm);
|
||||
*((rt_time_t *)args) = timegm(&tm);
|
||||
break;
|
||||
|
||||
case RT_DEVICE_CTRL_RTC_SET_TIME:
|
||||
tm_ptr = localtime(time);
|
||||
/* write device */
|
||||
rt_hw_rtc_set(tm_ptr);
|
||||
break;
|
||||
}
|
||||
case RT_DEVICE_CTRL_RTC_SET_TIME:
|
||||
/* write device */
|
||||
tm_ptr = gmtime(time);
|
||||
rt_hw_rtc_set(tm_ptr);
|
||||
break;
|
||||
}
|
||||
|
||||
return RT_EOK;
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
void rt_hw_rtc_init(void)
|
||||
|
||||
Reference in New Issue
Block a user