summaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c55
1 files changed, 26 insertions, 29 deletions
diff --git a/main.c b/main.c
index ba0c254..ece3165 100644
--- a/main.c
+++ b/main.c
@@ -38,16 +38,16 @@
#define BACK_UNLOCK_INT PCINT22
#define BTN_INT_VEC PCINT2_vect
-enum {
+enum CTRL {
NONE = 0,
- FLOCK = 1,
- BLOCK = 2,
- FUNLOCK = 3,
- BUNLOCK = 4,
+ LOCKF = 1,
+ LOCKB = 2,
+ ULOCKF = 3,
+ ULOCKB = 4,
ENROLL = 5
};
-static volatile int cmd = NONE;
+static volatile enum CTRL cmd = NONE;
static inline void lock(void)
{
@@ -102,6 +102,16 @@ int main(void)
WDTCSR |= (1 << WDCE) | (1 << WDE);
WDTCSR = 0x00;
+ fpm_init();
+
+ /* servo */
+ TCCR1A |= (1 << WGM11);
+ TCCR1B |= (1 << WGM12) | (1 << WGM13);
+ TCCR1B |= (1 << CS11);
+ ICR1 = PWM_TOP;
+ TCCR1A |= (1 << COM1A1);
+ SERVO_DDR |= (1 << SERVO_PIN);
+
/* battery check */
LED_DDR |= (1 << LED_PIN);
LED_PORT &= ~(1 << LED_PIN);
@@ -122,37 +132,26 @@ int main(void)
PCMSK2 |= ((1 << FRONT_LOCK_INT) | (1 << ENROLL_INT) |
(1 << BACK_LOCK_INT) | (1 << BACK_UNLOCK_INT));
- /* servo */
- TCCR1A |= (1 << WGM11);
- TCCR1B |= (1 << WGM12) | (1 << WGM13);
- TCCR1B |= (1 << CS11);
- ICR1 = PWM_TOP;
- TCCR1A |= (1 << COM1A1);
- SERVO_DDR |= (1 << SERVO_PIN);
-
- fpm_init();
flash();
for (;;) {
- cli();
-
switch(cmd) {
- case FLOCK:
+ case LOCKF:
lock();
fpm_led(FLASH, RED, 1);
break;
- case BLOCK:
+ case LOCKB:
lock();
break;
- case FUNLOCK:
+ case ULOCKF:
if (fpm_match()) {
- unlock();
fpm_led(BREATHE, BLUE, 1);
+ unlock();
} else {
fpm_led(BREATHE, RED, 1);
}
break;
- case BUNLOCK:
+ case ULOCKB:
unlock();
fpm_led(FLASH, BLUE, 1);
break;
@@ -178,6 +177,7 @@ int main(void)
sleep_bod_disable();
sei();
sleep_cpu();
+ cli();
sleep_disable();
}
@@ -195,10 +195,7 @@ static inline int is_pressed(uint8_t btn)
ISR(FPM_INT_VEC)
{
- cli();
- if (is_pressed(FRONT_UNLOCK_PIN))
- cmd = FUNLOCK;
- sei();
+ cmd = ULOCKF;
}
ISR(BTN_INT_VEC)
@@ -206,11 +203,11 @@ ISR(BTN_INT_VEC)
cli();
if (is_pressed(FRONT_LOCK_PIN))
- cmd = FLOCK;
+ cmd = LOCKF;
else if (is_pressed(BACK_LOCK_PIN))
- cmd = BLOCK;
+ cmd = LOCKB;
else if (is_pressed(BACK_UNLOCK_PIN))
- cmd = BUNLOCK;
+ cmd = ULOCKB;
else if (is_pressed(ENROLL_PIN))
cmd = ENROLL;