blob: 155cca765f73da3985a851bb654b268690e8e4d2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
/*
* example_usage.c
*
*/
#define bit_clr(a,b) ((a) &=~(1<<(b)))
#define bit_set(a,b) ((a) |= (1<<(b)))
#define bit_tst(a,b) ((a) & (1<<(b)))
#define bit_change(a,b) ((a) ^= (1<<(b)))
#include <stdio.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define Soft_UART_TX_PORT PORTD
#define Soft_UART_TX_DDR DDRD
#define Soft_UART_TX_PIN 3
#define Soft_UART_Baud 9600
#include "Soft_UART_Timer1.h"
#include "r503.h"
static inline void uart_write(const char *s)
{
for (; *s; s++) {
Soft_UART_send_byte(*s);
}
Soft_UART_send_byte('\r');
Soft_UART_send_byte('\n');
}
int main(void)
{
struct fpm_cfg cfg;
cli();
Soft_UART_init();
bit_set(DDRB,5);
sei();
fpm_init();
fpm_get_cfg(&cfg);
if (fpm_get_count() == 0) {
// todo: check against capacity in prod
if (fpm_enroll(1)) {
fpm_led_on(BLUE);
_delay_ms(500);
fpm_led_off();
_delay_ms(500);
} else {
fpm_led_on(RED);
_delay_ms(500);
fpm_led_off();
_delay_ms(500);
}
}
while (1)
{
if (fpm_match()) {
fpm_led_on(BLUE);
_delay_ms(500);
fpm_led_off();
_delay_ms(500);
}
_delay_ms(2000);
}
return 0;
}
|