summaryrefslogtreecommitdiff
path: root/libcpu
diff options
context:
space:
mode:
authorgary.li.wenchao.4 <[email protected]>2010-02-10 08:25:45 +0000
committergary.li.wenchao.4 <[email protected]>2010-02-10 08:25:45 +0000
commit43907c8b79266ae1247c7d0a2a76fe03ca43edbc (patch)
treee95d9e07c5f47377ff2070149a8c83666e9b9a7d /libcpu
parent881d6a82d4e10b570deb9250a17834a0349d476a (diff)
Fixed head file of rtc.c
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@400 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'libcpu')
-rw-r--r--libcpu/arm/s3c24x0/rtc.c40
-rw-r--r--libcpu/arm/s3c24x0/rtc.h15
2 files changed, 28 insertions, 27 deletions
diff --git a/libcpu/arm/s3c24x0/rtc.c b/libcpu/arm/s3c24x0/rtc.c
index bd75fdb012..a1ba7bb254 100644
--- a/libcpu/arm/s3c24x0/rtc.c
+++ b/libcpu/arm/s3c24x0/rtc.c
@@ -15,25 +15,24 @@
#include <rtthread.h>
#include <time.h>
#include <s3c24x0.h>
+#include "rtc.h"
-#define BCD2BIN(n) (((((n) >> 4) & 0x0F) * 10) + ((n) & 0x0F))
-#define BIN2BCD(n) ((((n) / 10) << 4) | ((n) % 10))
/**
* This function get rtc time
*/
-void rt_hw_rtc_get(struct tm *ti)
+void rt_hw_rtc_get(struct rtc_time *ti)
{
rt_uint8_t sec, min, hour, mday, wday, mon, year;
/* enable access to RTC registers */
- RTCCON |= 0x01;
+ RTCCON |= RTC_ENABLE;
/* read RTC registers */
do
{
- sec = BCDSEC;
- min = BCDMIN;
+ sec = BCDSEC;
+ min = BCDMIN;
hour = BCDHOUR;
mday = BCDDATE;
wday = BCDDAY;
@@ -58,7 +57,7 @@ void rt_hw_rtc_get(struct tm *ti)
/**
* This function set rtc time
*/
-void rt_hw_rtc_set(struct tm *ti)
+void rt_hw_rtc_set(struct rtc_time *ti)
{
rt_uint8_t sec, min, hour, mday, wday, mon, year;
@@ -67,8 +66,8 @@ void rt_hw_rtc_set(struct tm *ti)
wday = BIN2BCD(ti->tm_wday);
mday = BIN2BCD(ti->tm_mday);
hour = BIN2BCD(ti->tm_hour);
- min = BIN2BCD(ti->tm_min);
- sec = BIN2BCD(ti->tm_sec);
+ min = BIN2BCD(ti->tm_min);
+ sec = BIN2BCD(ti->tm_sec);
/* enable access to RTC registers */
RTCCON |= 0x01;
@@ -79,7 +78,7 @@ void rt_hw_rtc_set(struct tm *ti)
BCDHOUR = hour;
BCDDATE = mday;
BCDDAY = wday;
- BCDMON = mon;
+ BCDMON = mon;
BCDYEAR = year;
/* disable access to RTC registers */
@@ -103,25 +102,25 @@ static rt_err_t rt_rtc_open(rt_device_t dev, rt_uint16_t oflag)
static rt_size_t rt_rtc_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size)
{
- return 0;
+ return RT_EOK;
}
static rt_err_t rt_rtc_control(rt_device_t dev, rt_uint8_t cmd, void *args)
{
- struct tm* ti;
+ struct rtc_time* time;
RT_ASSERT(dev != RT_NULL);
- ti = (struct tm*)args;
+ time = (struct rtc_time*)args;
switch (cmd)
{
case RT_DEVICE_CTRL_RTC_GET_TIME:
/* read device */
- rt_hw_rtc_get(ti);
+ rt_hw_rtc_get(time);
break;
case RT_DEVICE_CTRL_RTC_SET_TIME:
/* write device */
- rt_hw_rtc_set(ti);
+ rt_hw_rtc_set(time);
break;
}
@@ -145,7 +144,6 @@ void rt_hw_rtc_init(void)
rt_device_register(&rtc, "rtc", RT_DEVICE_FLAG_RDWR);
- return;
}
time_t time(time_t* t)
@@ -185,7 +183,7 @@ void set_date(rt_uint32_t year, rt_uint32_t month, rt_uint32_t day)
rt_rtc_control(device, RT_DEVICE_CTRL_RTC_SET_TIME, &ti);
}
}
-FINSH_FUNCTION_EXPORT(set_date, set date)
+FINSH_FUNCTION_EXPORT(set_date, set date(year, month, day))
void set_time(rt_uint32_t hour, rt_uint32_t minute, rt_uint32_t second)
{
@@ -197,20 +195,20 @@ void set_time(rt_uint32_t hour, rt_uint32_t minute, rt_uint32_t second)
{
rt_rtc_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &ti);
ti.tm_hour = hour;
- ti.tm_min = minute;
+ ti.tm_min = minute;
ti.tm_sec = second;
rt_rtc_control(device, RT_DEVICE_CTRL_RTC_SET_TIME, &ti);
}
}
-FINSH_FUNCTION_EXPORT(set_time, set second)
+FINSH_FUNCTION_EXPORT(set_time, set time(hour, minute, second))
-void list_date()
+void list_date(void)
{
time_t now;
time(&now);
rt_kprintf("%s\n", ctime(&now));
}
-FINSH_FUNCTION_EXPORT(list_date, set date)
+FINSH_FUNCTION_EXPORT(list_date, list date)
#endif
diff --git a/libcpu/arm/s3c24x0/rtc.h b/libcpu/arm/s3c24x0/rtc.h
index ef052b8acd..8332e079bf 100644
--- a/libcpu/arm/s3c24x0/rtc.h
+++ b/libcpu/arm/s3c24x0/rtc.h
@@ -8,17 +8,20 @@
#define RTC_DEBUG
-#define RTC_ENABLE 0x01
-#define RTC_DISABLE 0x02
+#define RTC_ENABLE 0x01
+#define RTC_DISABLE 0x02
+
+#define BCD2BIN(n) (((((n) >> 4) & 0x0F) * 10) + ((n) & 0x0F))
+#define BIN2BCD(n) ((((n) / 10) << 4) | ((n) % 10))
+
+#define LEAPS_THRU_END_OF(y) ((y)/4 - (y)/100 + (y)/400)
+#define LEAP_YEAR(year) ((!(year % 4) && (year % 100)) || !(year % 400))
static const unsigned char days_in_month[] =
{
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
-#define LEAPS_THRU_END_OF(y) ((y)/4 - (y)/100 + (y)/400)
-#define LEAP_YEAR(year) ((!(year % 4) && (year % 100)) || !(year % 400))
-
struct rtc_time
{
int tm_sec;
@@ -35,6 +38,6 @@ struct rtc_time
void rt_hw_rtc_get (struct rtc_time *tmp);
void rt_hw_rtc_set (struct rtc_time *tmp);
void rt_hw_rtc_reset (void);
-void rt_rtc_time_to_tm(rt_uint32_t time, struct rtc_time *tm);
+void rt_rtc_time_to_tm(rt_uint32_t time, struct tm *tm);
#endif