Basic touch buttons example for Hexiwear

Dependencies:   Hexi_KW40Z

Revision:
0:f7ef26f17610
Child:
1:80e17bcc26e4
--- /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();
+}