00001 #ifndef DCFTIME_H
00002 #define DCFTIME_H
00003
00013 #include "boole.h"
00014
00015
00016
00017
00018 #ifndef DCF_RATE
00019 #define DCF_RATE 244
00020 #endif
00021 #if (DCF_RATE < 100) || (250 < DCF_RATE)
00022 #error DCF_RATE should be between 100 and 250
00023 #endif
00024
00025 typedef unsigned int dcf_second;
00026 typedef unsigned int dcf_minute;
00027 typedef unsigned int dcf_hour;
00028 typedef unsigned int dcf_dayofmonth;
00029 typedef unsigned int dcf_year;
00030 typedef boolean dcf_is_dst;
00033 enum dcf_dayofweek_enum {
00034 dcf_monday = 1,
00035 dcf_tuesday,
00036 dcf_wednesday,
00037 dcf_thursday,
00038 dcf_friday,
00039 dcf_saturday,
00040 dcf_sunday,
00041 };
00043 typedef enum dcf_dayofweek_enum dcf_dayofweek;
00044
00046 enum dcf_month_enum {
00047 dcf_january = 1,
00048 dcf_february,
00049 dcf_march,
00050 dcf_april,
00051 dcf_may,
00052 dcf_june,
00053 dcf_july,
00054 dcf_august,
00055 dcf_september,
00056 dcf_october,
00057 dcf_november,
00058 dcf_december
00059 };
00061 typedef enum dcf_month_enum dcf_month;
00062
00064 struct dcf_time_struct {
00065 dcf_second second;
00066 dcf_minute minute;
00067 dcf_hour hour;
00068 dcf_is_dst is_dst;
00069 };
00071 typedef struct dcf_time_struct dcf_time;
00072
00074 struct dcf_date_struct {
00075 dcf_dayofweek dayofweek;
00076 dcf_dayofmonth dayofmonth;
00077 dcf_month month;
00078 dcf_year year;
00079 };
00081 typedef struct dcf_date_struct dcf_date;
00082
00084 struct dcf_datetime_struct {
00085 dcf_time time;
00086 dcf_date date;
00087 boolean is_valid;
00088 boolean has_signal;
00089 };
00091 typedef struct dcf_datetime_struct dcf_datetime;
00092
00096 void dcf_init(void);
00097
00105 void dcf_signal(boolean signal);
00106
00111 dcf_datetime dcf_current_datetime(void);
00112
00118 const char* dcf_dayofweek_name(dcf_dayofweek dow);
00119
00125 const char* dcf_is_dst_name(dcf_is_dst dst);
00126
00127 #endif