Basic touch buttons example for Hexiwear
Dependencies: Hexi_KW40Z
Diff: main.cpp
- Revision:
- 0:f7ef26f17610
- Child:
- 1:80e17bcc26e4
diff -r 000000000000 -r f7ef26f17610 main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Sep 19 02:51:26 2016 +0000
@@ -0,0 +1,90 @@
+#include "mbed.h"
+#include "Hexi_KW40Z.h"
+
+#define LED_ON 0
+#define LED_OFF 1
+
+void StartHaptic(void);
+void StopHaptic(void const *n);
+void HandleButtons(hexi_buttons_t button);
+
+kw40z_callbacks_t callbacks =
+{
+ .buttons = HandleButtons,
+ .alert = NULL,
+ .passkey = NULL,
+ .notifications = NULL,
+};
+
+DigitalOut redLed(LED1);
+DigitalOut greenLed(LED2);
+DigitalOut blueLed(LED3);
+DigitalOut haptic(PTB9);
+
+/* Define timer for haptic feedback */
+RtosTimer hapticTimer(StopHaptic, osTimerOnce);
+
+/* Instantiate the Hexi KW40Z Driver (UART TX, UART RX) */
+KW40Z kw40z_device(PTE24, PTE25);
+
+int main()
+{
+ /* Register callbacks to application functions */
+ kw40z_device.attach(&callbacks);
+
+ while (true) {
+ Thread::wait(500);
+ }
+}
+
+void HandleButtons(hexi_buttons_t button)
+{
+ StartHaptic();
+
+ switch(button)
+ {
+ case pressUp:
+ redLed = LED_ON;
+ greenLed = LED_OFF;
+ blueLed = LED_OFF;
+ break;
+
+ case pressDown:
+ redLed = LED_OFF;
+ greenLed = LED_ON;
+ blueLed = LED_OFF;
+ break;
+
+ case pressLeft:
+ redLed = LED_OFF;
+ greenLed = LED_OFF;
+ blueLed = LED_ON;
+ break;
+
+ case pressRight:
+ redLed = LED_ON;
+ greenLed = LED_ON;
+ blueLed = LED_OFF;
+ break;
+
+ case slide:
+ redLed = LED_ON;
+ greenLed = LED_ON;
+ blueLed = LED_ON;
+ break;
+
+ default:
+ break;
+ }
+}
+
+void StartHaptic(void)
+{
+ hapticTimer.start(50);
+ haptic = 1;
+}
+
+void StopHaptic(void const *n) {
+ haptic = 0;
+ hapticTimer.stop();
+}