/elec/propeller-clock

To get this branch, use:
bzr branch http://bzr.ed.am/elec/propeller-clock
58 by edam
removed Bounce library and updated/fixed new code
1
/*
2
 * button.h
3
 *
4
 * Copyright (C) 2011 Tim Marston <tim@ed.am> and Dan Marston.
5
 *
6
 * This file is part of propeller-clock (hereafter referred to as "this
7
 * program"). See http://ed.am/dev/software/arduino/propeller-clock for more
8
 * information.
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU Lesser General Public License as published
12
 * by the Free Software Foundation, either version 3 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 * GNU Lesser General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU Lesser General Public License
21
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
 */
23
#ifndef _BUTTON_H_
24
#define _BUTTON_H_
25
26
56 by edam
updated software to include drawing abstraction infrastructure
27
#include <map>
28
58 by edam
removed Bounce library and updated/fixed new code
29
56 by edam
updated software to include drawing abstraction infrastructure
30
class Button
31
{
32
public:
33
34
	/**
35
	 * Constructor.
36
	 *
37
	 * @param pin the pin to monitor
38
	 */
39
	Button( int pin );
40
41
	/**
42
	 * Add a duration at which the specified event id should be triggered.
43
	 *
44
	 * @oaram duration the time at which the event should be triggered
45
	 * @param event_id a unique identifier for the event (not 0)
46
	 */
47
	void add_event_at( int duration, int event_id );
48
49
	/**
50
	 * Update internal state
51
	 */
52
	int update();
53
54
	/**
55
	 * Retrieve the event id of the event that was triggered at the last
56
	 * update, if there was one.
57
	 *
58
	 * @return event id, or 0
59
	 */
60
	int get_triggered_event();
61
62
protected:
63
64
	/** pin */
65
	int _pin;
66
58 by edam
removed Bounce library and updated/fixed new code
67
	/** current state */
68
	bool _state;
69
70
	/** time when current state began */
71
	unsigned long _state_millis;
72
73
	/** milliseconds that have been accountred for (in terms of
74
	 * triggering events) since current state began */
75
	unsigned long _state_duration;
56 by edam
updated software to include drawing abstraction infrastructure
76
77
	/** triggered event */
78
	int _event_id;
79
80
	/** press events durations -> event ids */
81
	std::map< int, int > _press_events;
82
83
};
58 by edam
removed Bounce library and updated/fixed new code
84
85
86
#endif //_BUTTON_H_