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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
#include "project.h"
uint32_t up_time, down_time,usb_up_time,usb_down_time;
int locked;
void
state_show (void)
{
#ifndef SLIM
char buf[17];
uint32_t t;
int d, h, m, s;
t = up_time ? up_time : down_time;
d = t / 86400;
t -= d * 86400;
h = t / 3600;
t -= h * 3600;
m = t / 60;
t -= m * 60;
s = t;
snprintf (buf, sizeof (buf), "%4s%3d %02d:%02d:%02d",
up_time ? "up" : "down", d, h, m, s);
//lcd_write (buf, 0, 0);
lcd_write (have_key ? " Key " : "No Key", 0, 1);
lcd_write (locked ? " Locked " : "UnLocked", 8, 1);
#endif
}
void
state_tick (void)
{
if (host_has_power)
{
down_time = 0;
up_time++;
}
else
{
down_time++;
up_time = 0;
locked = 0;
}
if ((down_time > POWER_RETENTION_TIME) && have_key)
{
key_wipe ();
}
if (usb_running)
{
usb_down_time = 0;
usb_up_time++;
}
else
{
usb_down_time++;
usb_up_time = 0;
locked = 0;
}
if ((usb_down_time > USB_RETENTION_TIME) && have_key)
{
key_wipe ();
}
state_show ();
}
void
state_init (void)
{
down_time = 0;
up_time = 0;
locked = 0;
}
|