summaryrefslogtreecommitdiffstats
path: root/watch-library/hardware
diff options
context:
space:
mode:
Diffstat (limited to 'watch-library/hardware')
-rwxr-xr-xwatch-library/hardware/main.c7
-rw-r--r--watch-library/hardware/watch/watch_adc.c2
-rw-r--r--watch-library/hardware/watch/watch_deepsleep.c14
-rw-r--r--watch-library/hardware/watch/watch_extint.c8
-rw-r--r--watch-library/hardware/watch/watch_led.c10
-rw-r--r--watch-library/hardware/watch/watch_private.c15
-rw-r--r--watch-library/hardware/watch/watch_rtc.c37
-rw-r--r--watch-library/hardware/watch/watch_uart.c67
8 files changed, 12 insertions, 148 deletions
diff --git a/watch-library/hardware/main.c b/watch-library/hardware/main.c
index eb372cc4..d1eee168 100755
--- a/watch-library/hardware/main.c
+++ b/watch-library/hardware/main.c
@@ -66,6 +66,13 @@ int main(void) {
// Watch library code. Set initial parameters for the device and enable the RTC.
_watch_init();
+ // if date/time register is 0 (power on reset state), default year to 2022.
+ watch_date_time date_time = watch_rtc_get_date_time();
+ if (date_time.reg == 0) {
+ date_time.unit.year = 2;
+ watch_rtc_set_date_time(date_time);
+ }
+
// User code. Give the app a chance to enable and set up peripherals.
app_setup();
diff --git a/watch-library/hardware/watch/watch_adc.c b/watch-library/hardware/watch/watch_adc.c
index c8c4d65a..476f0cbb 100644
--- a/watch-library/hardware/watch/watch_adc.c
+++ b/watch-library/hardware/watch/watch_adc.c
@@ -36,7 +36,7 @@ static uint16_t _watch_get_analog_value(uint16_t channel) {
}
ADC->SWTRIG.bit.START = 1;
- while (!ADC->INTFLAG.bit.RESRDY);
+ while (!ADC->INTFLAG.bit.RESRDY); // wait for "result ready" flag
return ADC->RESULT.reg;
}
diff --git a/watch-library/hardware/watch/watch_deepsleep.c b/watch-library/hardware/watch/watch_deepsleep.c
index e3f654f2..ae2ad31d 100644
--- a/watch-library/hardware/watch/watch_deepsleep.c
+++ b/watch-library/hardware/watch/watch_deepsleep.c
@@ -69,7 +69,7 @@ void watch_register_extwake_callback(uint8_t pin, ext_irq_cb_t callback, bool le
// disable the RTC
RTC->MODE2.CTRLA.bit.ENABLE = 0;
- while (RTC->MODE2.SYNCBUSY.bit.ENABLE);
+ while (RTC->MODE2.SYNCBUSY.bit.ENABLE); // wait for RTC to be disabled
// update the configuration
RTC->MODE2.TAMPCTRL.reg = config;
@@ -192,15 +192,3 @@ void watch_enter_backup_mode(void) {
// go into backup sleep mode (5). when we exit, the reset controller will take over.
sleep(5);
}
-
-// deprecated
-void watch_enter_shallow_sleep(bool display_on) {
- if (display_on) watch_enter_sleep_mode();
- else watch_enter_deep_sleep_mode();
-}
-
-// deprecated
-void watch_enter_deep_sleep(void) {
- watch_register_extwake_callback(BTN_ALARM, NULL, true);
- watch_enter_backup_mode();
-}
diff --git a/watch-library/hardware/watch/watch_extint.c b/watch-library/hardware/watch/watch_extint.c
index 5924b646..13e8eaa3 100644
--- a/watch-library/hardware/watch/watch_extint.c
+++ b/watch-library/hardware/watch/watch_extint.c
@@ -101,11 +101,3 @@ void watch_register_interrupt_callback(const uint8_t pin, ext_irq_cb_t callback,
ext_irq_register(pin, callback);
}
-
-inline void watch_register_button_callback(const uint8_t pin, ext_irq_cb_t callback) {
- watch_register_interrupt_callback(pin, callback, INTERRUPT_TRIGGER_RISING);
-}
-
-inline void watch_enable_buttons(void) {
- watch_enable_external_interrupts();
-}
diff --git a/watch-library/hardware/watch/watch_led.c b/watch-library/hardware/watch/watch_led.c
index 52174b54..5e2d8ecf 100644
--- a/watch-library/hardware/watch/watch_led.c
+++ b/watch-library/hardware/watch/watch_led.c
@@ -34,16 +34,6 @@ void watch_disable_leds(void) {
_watch_disable_tcc();
}
-void watch_enable_led(bool unused) {
- (void)unused;
- watch_enable_leds();
-}
-
-void watch_disable_led(bool unused) {
- (void)unused;
- watch_disable_leds();
-}
-
void watch_set_led_color(uint8_t red, uint8_t green) {
if (hri_tcc_get_CTRLA_reg(TCC0, TCC_CTRLA_ENABLE)) {
uint32_t period = hri_tcc_get_PER_reg(TCC0, TCC_PER_MASK);
diff --git a/watch-library/hardware/watch/watch_private.c b/watch-library/hardware/watch/watch_private.c
index 241ff40a..e4a03926 100644
--- a/watch-library/hardware/watch/watch_private.c
+++ b/watch-library/hardware/watch/watch_private.c
@@ -35,7 +35,7 @@ void _watch_init(void) {
// Use switching regulator for lower power consumption.
SUPC->VREG.bit.SEL = 1;
- while(!SUPC->STATUS.bit.VREGRDY);
+ while(!SUPC->STATUS.bit.VREGRDY); // wait for voltage regulator to become ready
// check the battery voltage...
watch_enable_adc();
@@ -63,7 +63,7 @@ void _watch_init(void) {
SUPC->BOD33.bit.LEVEL = 34; // Detect brownout at 2.6V (1.445V + level * 34mV)
SUPC->BOD33.bit.ACTION = 0x2; // Generate an interrupt when BOD33 is triggered
SUPC->BOD33.bit.HYST = 0; // Disable hysteresis
- while(!SUPC->STATUS.bit.B33SRDY);
+ while(!SUPC->STATUS.bit.B33SRDY); // wait for BOD33 to sync
// Enable interrupt on BOD33 detect
SUPC->INTENSET.bit.BOD33DET = 1;
@@ -198,7 +198,7 @@ void _watch_enable_usb(void) {
// assign DFLL to GCLK1
GCLK->GENCTRL[1].reg = GCLK_GENCTRL_SRC(GCLK_GENCTRL_SRC_DFLL48M) | GCLK_GENCTRL_DIV(1) | GCLK_GENCTRL_GENEN;// | GCLK_GENCTRL_OE;
- while (GCLK->SYNCBUSY.bit.GENCTRL1);
+ while (GCLK->SYNCBUSY.bit.GENCTRL1); // wait for generator control 1 to sync
// assign GCLK1 to USB
hri_gclk_write_PCHCTRL_reg(GCLK, USB_GCLK_ID, GCLK_PCHCTRL_GEN_GCLK1_Val | GCLK_PCHCTRL_CHEN);
@@ -260,15 +260,6 @@ int _read(void) {
return 0;
}
-// Alternate function that outputs to the debug UART. useful for debugging USB issues.
-// int _write(int file, char *ptr, int len) {
-// (void)file;
-// int pos = 0;
-// while(pos < len) watch_debug_putc(ptr[pos++]);
-
-// return 0;
-// }
-
void USB_Handler(void) {
tud_int_handler(0);
}
diff --git a/watch-library/hardware/watch/watch_rtc.c b/watch-library/hardware/watch/watch_rtc.c
index 28360523..8382e571 100644
--- a/watch-library/hardware/watch/watch_rtc.c
+++ b/watch-library/hardware/watch/watch_rtc.c
@@ -160,40 +160,3 @@ void RTC_Handler(void) {
RTC->MODE2.INTFLAG.reg = RTC_MODE2_INTFLAG_ALARM0;
}
}
-
-///////////////////////
-// Deprecated functions
-
-void watch_set_date_time(struct calendar_date_time date_time) {
- RTC_MODE2_CLOCK_Type val;
-
- val.bit.SECOND = date_time.time.sec;
- val.bit.MINUTE = date_time.time.min;
- val.bit.HOUR = date_time.time.hour;
- val.bit.DAY = date_time.date.day;
- val.bit.MONTH = date_time.date.month;
- val.bit.YEAR = (uint8_t)(date_time.date.year - WATCH_RTC_REFERENCE_YEAR);
-
- RTC->MODE2.CLOCK.reg = val.reg;
-
- _sync_rtc();
-}
-
-void watch_get_date_time(struct calendar_date_time *date_time) {
- _sync_rtc();
- RTC_MODE2_CLOCK_Type val = RTC->MODE2.CLOCK;
-
- date_time->time.sec = val.bit.SECOND;
- date_time->time.min = val.bit.MINUTE;
- date_time->time.hour = val.bit.HOUR;
- date_time->date.day = val.bit.DAY;
- date_time->date.month = val.bit.MONTH;
- date_time->date.year = val.bit.YEAR + WATCH_RTC_REFERENCE_YEAR;
-}
-
-void watch_register_tick_callback(ext_irq_cb_t callback) {
- tick_callbacks[7] = callback;
- NVIC_ClearPendingIRQ(RTC_IRQn);
- NVIC_EnableIRQ(RTC_IRQn);
- RTC->MODE2.INTENSET.reg = RTC_MODE2_INTENSET_PER7;
-}
diff --git a/watch-library/hardware/watch/watch_uart.c b/watch-library/hardware/watch/watch_uart.c
index c8e0600d..3aee7e3d 100644
--- a/watch-library/hardware/watch/watch_uart.c
+++ b/watch-library/hardware/watch/watch_uart.c
@@ -116,70 +116,3 @@ char watch_uart_getc(void) {
io_read(uart_io, &retval, 1);
return retval;
}
-
-// Begin deprecated functions
-
- /*
- * UART methods are Copyright (c) 2014-2017, Alex Taradov <alex@taradov.com>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "peripheral_clk_config.h"
-
-void watch_enable_debug_uart(uint32_t baud) {
- uint64_t br = (uint64_t)65536 * ((CONF_CPU_FREQUENCY * 4) - 16 * baud) / (CONF_CPU_FREQUENCY * 4);
-
- gpio_set_pin_direction(A2, GPIO_DIRECTION_OUT);
- gpio_set_pin_function(A2, PINMUX_PB02C_SERCOM3_PAD0);
-
- MCLK->APBCMASK.reg |= MCLK_APBCMASK_SERCOM3;
-
- GCLK->PCHCTRL[SERCOM3_GCLK_ID_CORE].reg = GCLK_PCHCTRL_GEN(0) | GCLK_PCHCTRL_CHEN;
- while (0 == (GCLK->PCHCTRL[SERCOM3_GCLK_ID_CORE].reg & GCLK_PCHCTRL_CHEN));
-
- SERCOM3->USART.CTRLA.reg =
- SERCOM_USART_CTRLA_DORD | SERCOM_USART_CTRLA_MODE(1/*USART_INT_CLK*/) |
- SERCOM_USART_CTRLA_RXPO(1/*PAD1*/) | SERCOM_USART_CTRLA_TXPO(0/*PAD0*/);
-
- SERCOM3->USART.CTRLB.reg = SERCOM_USART_CTRLB_RXEN | SERCOM_USART_CTRLB_TXEN |
- SERCOM_USART_CTRLB_CHSIZE(0/*8 bits*/);
-
- SERCOM3->USART.BAUD.reg = (uint16_t)br;
-
- SERCOM3->USART.CTRLA.reg |= SERCOM_USART_CTRLA_ENABLE;
-}
-
-void watch_debug_putc(char c) {
- while (!(SERCOM3->USART.INTFLAG.reg & SERCOM_USART_INTFLAG_DRE));
- SERCOM3->USART.DATA.reg = c;
-}
-
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-void watch_debug_puts(char *s) {
- while (*s) watch_debug_putc(*s++);
-}
-#pragma GCC diagnostic pop