refactoring

This commit is contained in:
hg
2013-01-29 12:39:36 +01:00
parent 6970336f53
commit 314c6eba8d
10 changed files with 677 additions and 365 deletions

75
src/validLed.c Normal file
View File

@ -0,0 +1,75 @@
#include <stdint.h>
#include <avr/io.h>
#include "main.h"
#define VALID_LED_REG_DIR DDRB
#define VALID_LED_REG PORTB
#define VALID_LED PB0
#define DARK_SWITCH_REG_DIR DDRD
#define DARK_SWITCH_OUT_REG PORTD
#define DARK_SWITCH_IN_REG PIND
#define DARK_SWITCH PD7
uint8_t isNotDark() {
return DARK_SWITCH_IN_REG & (1 << DARK_SWITCH);
}
static inline void validLedEnable() {
PORTB |= (1 << PB0);
}
static inline void validLedDisable() {
PORTB &= ~(1 << PB0);
}
void validLedInit() {
// validLed
VALID_LED_REG_DIR |= (1 << VALID_LED);
// dark switch
DARK_SWITCH_REG_DIR &= ~(1 << DARK_SWITCH);
// pull-up on
DARK_SWITCH_OUT_REG |= (1 << DARK_SWITCH);
}
void validLedEngine(uint8_t valid) {
static uint8_t ledToggle = 0;
uint8_t light = isNotDark();
switch (valid) {
case 0:
validLedDisable();
break;
case 1:
if (ledToggle != 0) {
ledToggle = 0;
validLedDisable();
} else {
ledToggle = 1;
if (light != 0) {
validLedEnable();
} else {
validLedDisable();
}
}
break;
case 2:
if (light != 0) {
validLedEnable();
} else {
validLedDisable();
}
break;
}
}