88 lines
2.3 KiB
C
88 lines
2.3 KiB
C
#include <atmel_start.h>
|
|
#include <hpl_sleep.h>
|
|
#include "watch-library/watch.h"
|
|
#include "mars_clock.h"
|
|
|
|
Watch watch;
|
|
bool locked = true;
|
|
|
|
void calendar_callback(struct calendar_descriptor *const calendar) {
|
|
}
|
|
|
|
static void mode_callback() {
|
|
locked = !locked;
|
|
gpio_set_pin_level(GREEN, !locked);
|
|
}
|
|
|
|
static void light_callback() {
|
|
if (locked) return;
|
|
struct calendar_date_time date_time;
|
|
calendar_get_date_time(&CALENDAR_0, &date_time);
|
|
date_time.time.min = (date_time.time.min + 1) % 60;
|
|
watch_set_date_time(date_time);
|
|
update_display(&watch, date_time);
|
|
}
|
|
|
|
static void alarm_callback() {
|
|
if (locked) return;
|
|
struct calendar_date_time date_time;
|
|
calendar_get_date_time(&CALENDAR_0, &date_time);
|
|
date_time.time.sec = 0;
|
|
watch_set_date_time(date_time);
|
|
update_display(&watch, date_time);
|
|
}
|
|
|
|
static void tick_callback() {
|
|
struct calendar_date_time date_time;
|
|
calendar_get_date_time(&CALENDAR_0, &date_time);
|
|
update_display(&watch, date_time);
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
atmel_start_init();
|
|
|
|
gpio_set_pin_level(RED, false);
|
|
gpio_set_pin_direction(RED, GPIO_DIRECTION_OUT);
|
|
gpio_set_pin_function(RED, GPIO_PIN_FUNCTION_OFF);
|
|
gpio_set_pin_level(GREEN, false);
|
|
gpio_set_pin_direction(GREEN, GPIO_DIRECTION_OUT);
|
|
gpio_set_pin_function(GREEN, GPIO_PIN_FUNCTION_OFF);
|
|
|
|
watch_init(&watch);
|
|
|
|
watch_enable_display(&watch);
|
|
watch_display_pixel(&watch, 1, 16);
|
|
|
|
watch_enable_buttons(&watch);
|
|
watch_register_button_callback(&watch, BTN_MODE, &mode_callback);
|
|
watch_register_button_callback(&watch, BTN_ALARM, &alarm_callback);
|
|
watch_register_button_callback(&watch, BTN_LIGHT, &light_callback);
|
|
|
|
watch_enable_date_time(&watch);
|
|
struct calendar_date_time date_time;
|
|
date_time.date.year = 1; // reference year is 2020, add this to that.
|
|
date_time.date.month = 5;
|
|
date_time.date.day = 2;
|
|
date_time.time.hour = 7;
|
|
date_time.time.min = 15;
|
|
date_time.time.sec = 0;
|
|
watch_set_date_time(date_time);
|
|
/* struct calendar_alarm alarm;
|
|
alarm.cal_alarm.mode = REPEAT;
|
|
alarm.cal_alarm.datetime = date_time;
|
|
alarm.cal_alarm.datetime.time.sec = 0;
|
|
alarm.cal_alarm.option = CALENDAR_ALARM_MATCH_SEC;
|
|
alarm.callback = calendar_callback;
|
|
calendar_set_alarm(&CALENDAR_0, &alarm, &calendar_callback);
|
|
*/
|
|
update_display(&watch, date_time);
|
|
watch_enable_tick(tick_callback);
|
|
|
|
while (1) {
|
|
sleep(4);
|
|
}
|
|
|
|
return 0;
|
|
}
|