OSDN Git Service

DMAドライバ. DrFSマイナーチェンジ
[vaneos/DivergeMirror.git] / kernel / time.c
1 /*
2         time.c
3         C standard Library
4         (C) 2015 VOSystems.
5 */
6
7 #include<time.h>
8
9 struct tm ttime;
10
11 time_t time(time_t* timer)
12 {
13         if(timer!=NULL)
14         {
15                 return *timer;
16         }
17         time_t ntime;
18         unsigned char gtime[7];
19         GetTimeFromRTC(gtime);
20         int time[7];
21         int i;
22         for(i=0;i<7;i++){
23                 time[i]=hex2dec_bcd(gtime[i]);
24         }
25         int year=1970-time[6]*100+time[5];
26         
27         ntime+=time[0];//sec
28         ntime+=time[1]*60;//min
29         ntime+=time[2]*60*60;//hour
30         ntime+=time[3]*60*60*24;//day
31         ntime+=time[4]*60*60*24*30;//mon
32         ntime+=year*60*60*24*30*12;//year from 2010
33         return ntime;
34 }
35
36 struct tm* localtime(time_t* timer)
37 {
38         
39         ttime.tm_year=DivideU64_2(*timer,(60*60*24*30*12));//year from 1970
40         timer-=ttime.tm_year*(60*60*24*30*12);
41         
42         ttime.tm_mon=DivideU64_2(*timer,(60*60*24*30));//mon
43         timer-=ttime.tm_mon*(60*60*24*30);
44         
45         ttime.tm_mday=DivideU64_2(*timer,(60*60*24));//day
46         timer-=ttime.tm_mday*(60*60*24);
47         
48         ttime.tm_hour=DivideU64_2(*timer,(60*60));//hour
49         timer-=ttime.tm_hour*(60*60);
50         
51         ttime.tm_min=DivideU64_2(*timer,60);//min
52         timer-=ttime.tm_min*(60);
53         
54         ttime.tm_sec=*timer;//sec
55         /*
56         ttime.tm_year=*timer/(60*60*24*30*12);//year from 1970
57         timer-=ttime.tm_year*(60*60*24*30*12);
58         
59         ttime.tm_mon=*timer/(60*60*24*30);//mon
60         timer-=ttime.tm_mon*(60*60*24*30);
61         
62         ttime.tm_mday=*timer/(60*60*24);//day
63         timer-=ttime.tm_mday*(60*60*24);
64         
65         ttime.tm_hour=*timer/(60*60);//hour
66         timer-=ttime.tm_hour*(60*60);
67         
68         ttime.tm_min=*timer/60;//min
69         timer-=ttime.tm_min*(60);
70         
71         ttime.tm_sec=*timer;//sec*/
72         return &ttime;
73 }