Class header for the AT42QT1010 device.

Dependents:   AT42QT1010_Hello_world

Committer:
jnagendran3
Date:
Mon Oct 20 21:42:49 2014 +0000
Revision:
2:401cf3c2dffc
Parent:
1:7eca199a5506
Fixed interrupt data burst issue

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jnagendran3 0:261b3a1a05c4 1 #ifndef AT42QT1010_H
jnagendran3 0:261b3a1a05c4 2 #define AT42QT1010_H
jnagendran3 0:261b3a1a05c4 3
jnagendran3 0:261b3a1a05c4 4 #include "mbed.h"
jnagendran3 0:261b3a1a05c4 5
jnagendran3 0:261b3a1a05c4 6 ///Class for the AT42QT1010 Capactitive Touch Sensor
jnagendran3 0:261b3a1a05c4 7 class AT42QT1010 {
jnagendran3 0:261b3a1a05c4 8
jnagendran3 0:261b3a1a05c4 9 public:
jnagendran3 0:261b3a1a05c4 10 /**Define the device without use of the on-board LED*/
jnagendran3 0:261b3a1a05c4 11 explicit AT42QT1010(PinName);
jnagendran3 0:261b3a1a05c4 12 /**Define the device using both breakout I/O pins. Requires manual modification to the breakout before use.*/
jnagendran3 0:261b3a1a05c4 13 explicit AT42QT1010(PinName, PinName);
jnagendran3 0:261b3a1a05c4 14 ~AT42QT1010();
jnagendran3 0:261b3a1a05c4 15 /**Writes to the LED, if defined.
jnagendran3 0:261b3a1a05c4 16 @param state 0 or 1 to power the LED
jnagendran3 0:261b3a1a05c4 17 */
jnagendran3 0:261b3a1a05c4 18 void write(int state);
jnagendran3 0:261b3a1a05c4 19 /**Take in the current value being output by the device.*/
jnagendran3 0:261b3a1a05c4 20 int read();
jnagendran3 0:261b3a1a05c4 21 /**Shorthand for read().*/
jnagendran3 0:261b3a1a05c4 22 operator int(){return _data;}
jnagendran3 1:7eca199a5506 23 /**Initiate interrupts for the rising edge of data.
jnagendran3 0:261b3a1a05c4 24 @param fpr Function pointer to interrupt routine.
jnagendran3 0:261b3a1a05c4 25 */
jnagendran3 2:401cf3c2dffc 26 void attach_rise(void (*fpr)(void));
jnagendran3 2:401cf3c2dffc 27 /**Initiate interrupts for the falling edge of data.
jnagendran3 2:401cf3c2dffc 28 @param fpr Function pointer to interrupt routine.
jnagendran3 2:401cf3c2dffc 29 */
jnagendran3 2:401cf3c2dffc 30 void attach_fall(void (*fpr)(void));
jnagendran3 0:261b3a1a05c4 31 private:
jnagendran3 0:261b3a1a05c4 32 InterruptIn _data;
jnagendran3 0:261b3a1a05c4 33 DigitalOut *_led_state;
jnagendran3 0:261b3a1a05c4 34 };
jnagendran3 0:261b3a1a05c4 35
jnagendran3 0:261b3a1a05c4 36 AT42QT1010::AT42QT1010(PinName data) : _data(data) {
jnagendran3 0:261b3a1a05c4 37 _led_state=NULL;
jnagendran3 0:261b3a1a05c4 38 }
jnagendran3 0:261b3a1a05c4 39
jnagendran3 0:261b3a1a05c4 40 AT42QT1010::AT42QT1010(PinName data, PinName led_pin) : _data(data){
jnagendran3 0:261b3a1a05c4 41 _led_state = (DigitalOut *) new DigitalOut(led_pin);
jnagendran3 0:261b3a1a05c4 42 }
jnagendran3 0:261b3a1a05c4 43
jnagendran3 0:261b3a1a05c4 44 AT42QT1010::~AT42QT1010(){
jnagendran3 0:261b3a1a05c4 45 if(_led_state!=NULL){
jnagendran3 0:261b3a1a05c4 46 delete _led_state;
jnagendran3 0:261b3a1a05c4 47 }
jnagendran3 0:261b3a1a05c4 48 }
jnagendran3 0:261b3a1a05c4 49
jnagendran3 0:261b3a1a05c4 50 void AT42QT1010::write(int state){
jnagendran3 0:261b3a1a05c4 51 if(_led_state!=NULL){
jnagendran3 0:261b3a1a05c4 52 if(state!=0) (*_led_state)=1;
jnagendran3 0:261b3a1a05c4 53 else (*_led_state)=0;
jnagendran3 0:261b3a1a05c4 54 }
jnagendran3 0:261b3a1a05c4 55 }
jnagendran3 0:261b3a1a05c4 56
jnagendran3 0:261b3a1a05c4 57 int AT42QT1010::read(){
jnagendran3 0:261b3a1a05c4 58 return _data;
jnagendran3 0:261b3a1a05c4 59 }
jnagendran3 0:261b3a1a05c4 60
jnagendran3 2:401cf3c2dffc 61 void AT42QT1010::attach_rise(void (*fpr)(void)){
jnagendran3 0:261b3a1a05c4 62 _data.rise(fpr);
jnagendran3 0:261b3a1a05c4 63 }
jnagendran3 2:401cf3c2dffc 64 void AT42QT1010::attach_fall(void (*fpr)(void)){
jnagendran3 2:401cf3c2dffc 65 _data.fall(fpr);
jnagendran3 2:401cf3c2dffc 66 }
jnagendran3 0:261b3a1a05c4 67
jnagendran3 0:261b3a1a05c4 68 #endif