Arduino-RTC
Real-Time Clock (RTC) library for Arduino
Main Page
Related Pages
Classes
Files
File List
File Members
eu_dst.h
Go to the documentation of this file.
1
/*
2
* (c)2012 Michael Duane Rice All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are
6
* met:
7
*
8
* Redistributions of source code must retain the above copyright notice, this
9
* list of conditions and the following disclaimer. Redistributions in binary
10
* form must reproduce the above copyright notice, this list of conditions
11
* and the following disclaimer in the documentation and/or other materials
12
* provided with the distribution. Neither the name of the copyright holders
13
* nor the names of contributors may be used to endorse or promote products
14
* derived from this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26
* POSSIBILITY OF SUCH DAMAGE.
27
*/
28
51
#ifndef EU_DST_H
52
#define EU_DST_H
53
54
#include "
time.h
"
55
56
int
eu_dst
(
const
time_t
* timer, int32_t* z)
57
{
58
struct
tm
tmptr;
59
uint8_t month, mday, hour, day_of_week, d;
60
int
n;
61
62
// Obtain the variables
63
gmtime_r
(timer, &tmptr);
64
month = tmptr.
tm_mon
;
65
day_of_week = tmptr.
tm_wday
;
66
mday = tmptr.
tm_mday
- 1;
67
hour = tmptr.
tm_hour
;
68
69
if
((month >
MARCH
) && (month <
OCTOBER
))
70
return
ONE_HOUR
;
71
72
if
(month <
MARCH
)
73
return
0;
74
75
if
(month >
OCTOBER
)
76
return
0;
77
78
// Determine mday of last Sunday
79
n = tmptr.
tm_mday
- 1;
80
n -= day_of_week;
81
n += 7;
82
d = n % 7;
83
n = 31 - d;
84
n /= 7;
85
d = d + 7 * n;
86
if
(month ==
MARCH
) {
87
if
(d < mday)
88
return
0;
89
if
(d > mday)
90
return
ONE_HOUR
;
91
if
(hour < 1)
92
return
0;
93
return
ONE_HOUR
;
94
}
95
if
(d < mday)
96
return
ONE_HOUR
;
97
if
(d > mday)
98
return
0;
99
if
(hour < 1)
100
return
ONE_HOUR
;
101
return
0;
102
}
103
#endif
tm::tm_mday
int8_t tm_mday
Day in Month [1-31].
Definition:
time.h:40
MARCH
Definition:
time.h:80
time.h
ONE_HOUR
#define ONE_HOUR
Definition:
time.h:148
gmtime_r
struct tm * gmtime_r(const time_t *timer, struct tm *timeptr)
Definition:
gmtime_r.cpp:33
time_t
uint32_t time_t
Definition:
time.h:30
tm::tm_hour
int8_t tm_hour
Hours [0-23].
Definition:
time.h:39
tm::tm_wday
int8_t tm_wday
Days since Sunday [0-6].
Definition:
time.h:41
tm
Definition:
time.h:36
OCTOBER
Definition:
time.h:87
tm::tm_mon
int8_t tm_mon
0-11 Months since January [0-11].
Definition:
time.h:42
eu_dst
int eu_dst(const time_t *timer, int32_t *z)
Definition:
eu_dst.h:56
src
Hardware
AVR
eu_dst.h
Generated on Sat Oct 14 2017 03:08:57 for Arduino-RTC by
1.8.11