Sensor Watch  0.0.0
A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.
watch_rtc.h
1 /*
2  * MIT License
3  *
4  * Copyright (c) 2020 Joey Castillo
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 #ifndef _WATCH_RTC_H_INCLUDED
25 #define _WATCH_RTC_H_INCLUDED
27 
28 #include "watch.h"
29 #include "hpl_calendar.h"
30 
41 
42 #define WATCH_RTC_REFERENCE_YEAR (2020)
43 
44 typedef union {
45  struct {
46  uint32_t second : 6; // 0-59
47  uint32_t minute : 6; // 0-59
48  uint32_t hour : 5; // 0-23
49  uint32_t day : 5; // 1-31
50  uint32_t month : 4; // 1-12
51  uint32_t year : 6; // 0-63 (representing 2020-2083)
52  } unit;
53  uint32_t reg; // the bit-packed value as expected by the RTC peripheral's CLOCK register.
55 
56 typedef enum watch_rtc_alarm_match {
57  ALARM_MATCH_DISABLED = 0,
58  ALARM_MATCH_SS,
59  ALARM_MATCH_MMSS,
60  ALARM_MATCH_HHMMSS,
61 } watch_rtc_alarm_match;
62 
67 
77 
83 
99 void watch_rtc_register_alarm_callback(ext_irq_cb_t callback, watch_date_time alarm_time, watch_rtc_alarm_match mask);
100 
104 
112 void watch_rtc_register_tick_callback(ext_irq_cb_t callback);
113 
117 
133 void watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequency);
134 
138 void watch_rtc_disable_periodic_callback(uint8_t frequency);
139 
145 
149 
153 __attribute__((deprecated("Use watch_rtc_set_date_time function instead")))
154 void watch_set_date_time(struct calendar_date_time date_time);
155 
159 __attribute__((deprecated("Use the watch_rtc_get_date_time function instead")))
160 void watch_get_date_time(struct calendar_date_time *date_time);
161 
166 __attribute__((deprecated("Use the watch_rtc_register_tick_callback function instead")))
167 void watch_register_tick_callback(ext_irq_cb_t callback);
168 
170 #endif
void watch_rtc_disable_all_periodic_callbacks(void)
Disables all periodic callbacks, including the once-per-second tick callback.
watch_date_time watch_rtc_get_date_time(void)
Returns the date and time.
bool _watch_rtc_is_enabled(void)
Called by main.c to check if the RTC is enabled. You may call this function, but outside of app_init,...
void watch_rtc_disable_periodic_callback(uint8_t frequency)
Disables the tick callback for the given period.
void watch_rtc_disable_tick_callback(void)
Disables the tick callback for the given period.
void watch_rtc_disable_alarm_callback(void)
Disables the alarm callback.
void watch_rtc_register_tick_callback(ext_irq_cb_t callback)
Registers a "tick" callback that will be called once per second.
__attribute__((deprecated("Use watch_rtc_set_date_time function instead"))) void watch_set_date_time(struct calendar_date_time date_time)
Sets the system date and time.
void watch_rtc_register_alarm_callback(ext_irq_cb_t callback, watch_date_time alarm_time, watch_rtc_alarm_match mask)
Registers an alarm callback that will be called when the RTC time matches the target time,...
void watch_rtc_disable_matching_periodic_callbacks(uint8_t mask)
Disables tick callbacks for the given periods (as a bitmask).
void watch_rtc_set_date_time(watch_date_time date_time)
Sets the date and time.
void watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequency)
Registers a callback that will be called at a configurable period.
Definition: watch_rtc.h:44