Xbeat beta code as published by Andre Moehl ( http://mbed.org/users/hoppel/ ) With a slightly modified serial port definition

Dependencies:   mbed

Committer:
n0p
Date:
Fri Feb 04 08:31:00 2011 +0000
Revision:
0:badcd0d61c7b

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
n0p 0:badcd0d61c7b 1 /*
n0p 0:badcd0d61c7b 2 *
n0p 0:badcd0d61c7b 3 * This program is free software; you can redistribute it and/or modify
n0p 0:badcd0d61c7b 4 * it under the terms of the GNU General Public License as published by
n0p 0:badcd0d61c7b 5 * the Free Software Foundation; either version 3 of the License, or
n0p 0:badcd0d61c7b 6 * (at your option) any later version.
n0p 0:badcd0d61c7b 7 *
n0p 0:badcd0d61c7b 8 * This program is distributed in the hope that it will be useful,
n0p 0:badcd0d61c7b 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
n0p 0:badcd0d61c7b 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
n0p 0:badcd0d61c7b 11 * GNU General Public License for more details.
n0p 0:badcd0d61c7b 12 *
n0p 0:badcd0d61c7b 13 * You should have received a copy of the GNU General Public License
n0p 0:badcd0d61c7b 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
n0p 0:badcd0d61c7b 15 *
n0p 0:badcd0d61c7b 16 * @file button.cpp
n0p 0:badcd0d61c7b 17 * @author Andre Moehl
n0p 0:badcd0d61c7b 18 * @date 01/2011
n0p 0:badcd0d61c7b 19 * @brief Button Class definition
n0p 0:badcd0d61c7b 20 */
n0p 0:badcd0d61c7b 21
n0p 0:badcd0d61c7b 22 /*--- Includes ------------------------*/
n0p 0:badcd0d61c7b 23 #include "button.h"
n0p 0:badcd0d61c7b 24
n0p 0:badcd0d61c7b 25 /*--- Functions -----------------------*/
n0p 0:badcd0d61c7b 26 //Contructor
n0p 0:badcd0d61c7b 27 Button::Button(PinName pin, const char *name): DigitalIn(pin,name)
n0p 0:badcd0d61c7b 28 {
n0p 0:badcd0d61c7b 29 _counter = 0;
n0p 0:badcd0d61c7b 30 _samples = 10;
n0p 0:badcd0d61c7b 31 set_debounce_us(1000);
n0p 0:badcd0d61c7b 32 }
n0p 0:badcd0d61c7b 33
n0p 0:badcd0d61c7b 34 // sets Sample for debounce
n0p 0:badcd0d61c7b 35 void Button::set_samples(int i)
n0p 0:badcd0d61c7b 36 {
n0p 0:badcd0d61c7b 37 _samples = i;
n0p 0:badcd0d61c7b 38 }
n0p 0:badcd0d61c7b 39
n0p 0:badcd0d61c7b 40 // set debounce time
n0p 0:badcd0d61c7b 41 void Button::set_debounce_us(int i)
n0p 0:badcd0d61c7b 42 {
n0p 0:badcd0d61c7b 43 _ticker.attach_us(this, &Button::_callback, i);
n0p 0:badcd0d61c7b 44 }
n0p 0:badcd0d61c7b 45
n0p 0:badcd0d61c7b 46 // return the final state
n0p 0:badcd0d61c7b 47 int Button::read()
n0p 0:badcd0d61c7b 48 {
n0p 0:badcd0d61c7b 49 return _shadow;
n0p 0:badcd0d61c7b 50 }
n0p 0:badcd0d61c7b 51
n0p 0:badcd0d61c7b 52 //overwrite fuction from derived "DigitalIn"
n0p 0:badcd0d61c7b 53 Button::operator int()
n0p 0:badcd0d61c7b 54 {
n0p 0:badcd0d61c7b 55 return read();
n0p 0:badcd0d61c7b 56 }
n0p 0:badcd0d61c7b 57
n0p 0:badcd0d61c7b 58
n0p 0:badcd0d61c7b 59 // counts the oscillations of the button
n0p 0:badcd0d61c7b 60 void Button::_callback(void)
n0p 0:badcd0d61c7b 61 {
n0p 0:badcd0d61c7b 62 if (DigitalIn::read())
n0p 0:badcd0d61c7b 63 {
n0p 0:badcd0d61c7b 64 if (_counter < _samples) _counter++;
n0p 0:badcd0d61c7b 65 if (_counter == _samples) _shadow = 1;
n0p 0:badcd0d61c7b 66 }
n0p 0:badcd0d61c7b 67 else {
n0p 0:badcd0d61c7b 68 if (_counter > 0) _counter--;
n0p 0:badcd0d61c7b 69 if (_counter == 0) _shadow = 0;
n0p 0:badcd0d61c7b 70 }
n0p 0:badcd0d61c7b 71 }
n0p 0:badcd0d61c7b 72
n0p 0:badcd0d61c7b 73