Revision 0:ab95649b3f54, committed 2017-09-30
- Comitter:
- nguyenmanhthao996tn
- Date:
- Sat Sep 30 09:12:15 2017 +0000
- Commit message:
- Worked version
Changed in this revision
Button_Control.cpp | Show annotated file Show diff for this revision Revisions of this file |
Button_Control.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r ab95649b3f54 Button_Control.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Button_Control.cpp Sat Sep 30 09:12:15 2017 +0000 @@ -0,0 +1,72 @@ +#include "Button_Control.h" + +Button::Button(void) +{ + Button(BUTTON_0_PIN, BUTTON_1_PIN, BUTTON_2_PIN); +} + +Button::Button(PinName Button0, PinName Button1, PinName Button2) +{ + this->Btn0 = new InterruptIn(Button0); + this->Btn1 = new InterruptIn(Button1); + this->Btn2 = new InterruptIn(Button2); + + memset(&flags, 0, sizeof(ButtonFlagsAddress)); +} + +void Button::SetBtn0Callback(void (*btn0_Callback)(void)) +{ + this->Btn0->rise(btn0_Callback); +} + +void Button::SetBtn0Flag(bool *btn0_Flag) +{ + flags._btn0_Flag = btn0_Flag; + *btn0_Flag = false; + this->Btn0->rise(btn0UpdateFlag); +} + +void Button::SetBtn1Callback(void (*btn1_Callback)(void)) +{ + this->Btn1->rise(btn1_Callback); +} + +void Button::SetBtn1Flag(bool *btn1_Flag) +{ + flags._btn1_Flag = btn1_Flag; + *btn1_Flag = false; + this->Btn1->rise(btn1UpdateFlag); +} + +void Button::SetBtn2Callback(void (*btn2_Callback)(void)) +{ + this->Btn2->rise(btn2_Callback); +} + +void Button::SetBtn2Flag(bool *btn2_Flag) +{ + flags._btn2_Flag = btn2_Flag; + *btn2_Flag = false; + this->Btn2->rise(btn2UpdateFlag); +} + +void btn0UpdateFlag(void) +{ + if (flags._btn0_Flag != NULL) { + *(flags._btn0_Flag) = true; + } +} + +void btn1UpdateFlag(void) +{ + if (flags._btn1_Flag != NULL) { + *(flags._btn1_Flag) = true; + } +} + +void btn2UpdateFlag(void) +{ + if (flags._btn2_Flag != NULL) { + *(flags._btn2_Flag) = true; + } +}
diff -r 000000000000 -r ab95649b3f54 Button_Control.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Button_Control.h Sat Sep 30 09:12:15 2017 +0000 @@ -0,0 +1,34 @@ +#ifndef __BUTTON_CONTROL__ +#define __BUTTON_CONTROL__ + +/*********** Libraries ***********/ +#include "mbed.h" +#include "PinConfiguration.h" + +/*********** Variables ***********/ +typedef struct { + bool *_btn0_Flag, *_btn1_Flag, *_btn2_Flag; +} ButtonFlagsAddress; +static ButtonFlagsAddress flags; + +void btn0UpdateFlag(void); +void btn1UpdateFlag(void); +void btn2UpdateFlag(void); + +class Button +{ +private: + InterruptIn *Btn0, *Btn1, *Btn2; +public: + Button(void); + Button(PinName Button0, PinName Button1, PinName Button2); + + void SetBtn0Callback(void (*btn0_Callback)(void)); + void SetBtn0Flag(bool *btn0_Flag); + void SetBtn1Callback(void (*btn1_Callback)(void)); + void SetBtn1Flag(bool *btn1_Flag); + void SetBtn2Callback(void (*btn2_Callback)(void)); + void SetBtn2Flag(bool *btn2_Flag); +}; + +#endif /* __BUTTON_CONTROL__ */