Files at this revision

API Documentation at this revision

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
--- /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;
+    }
+}
--- /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__ */