Basic touch buttons example for Hexiwear

Dependencies:   Hexi_KW40Z

Committer:
cotigac
Date:
Mon Sep 19 02:51:26 2016 +0000
Revision:
0:f7ef26f17610
Child:
1:80e17bcc26e4
Basic buttons example for Hexiwear

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cotigac 0:f7ef26f17610 1 #include "mbed.h"
cotigac 0:f7ef26f17610 2 #include "Hexi_KW40Z.h"
cotigac 0:f7ef26f17610 3
cotigac 0:f7ef26f17610 4 #define LED_ON 0
cotigac 0:f7ef26f17610 5 #define LED_OFF 1
cotigac 0:f7ef26f17610 6
cotigac 0:f7ef26f17610 7 void StartHaptic(void);
cotigac 0:f7ef26f17610 8 void StopHaptic(void const *n);
cotigac 0:f7ef26f17610 9 void HandleButtons(hexi_buttons_t button);
cotigac 0:f7ef26f17610 10
cotigac 0:f7ef26f17610 11 kw40z_callbacks_t callbacks =
cotigac 0:f7ef26f17610 12 {
cotigac 0:f7ef26f17610 13 .buttons = HandleButtons,
cotigac 0:f7ef26f17610 14 .alert = NULL,
cotigac 0:f7ef26f17610 15 .passkey = NULL,
cotigac 0:f7ef26f17610 16 .notifications = NULL,
cotigac 0:f7ef26f17610 17 };
cotigac 0:f7ef26f17610 18
cotigac 0:f7ef26f17610 19 DigitalOut redLed(LED1);
cotigac 0:f7ef26f17610 20 DigitalOut greenLed(LED2);
cotigac 0:f7ef26f17610 21 DigitalOut blueLed(LED3);
cotigac 0:f7ef26f17610 22 DigitalOut haptic(PTB9);
cotigac 0:f7ef26f17610 23
cotigac 0:f7ef26f17610 24 /* Define timer for haptic feedback */
cotigac 0:f7ef26f17610 25 RtosTimer hapticTimer(StopHaptic, osTimerOnce);
cotigac 0:f7ef26f17610 26
cotigac 0:f7ef26f17610 27 /* Instantiate the Hexi KW40Z Driver (UART TX, UART RX) */
cotigac 0:f7ef26f17610 28 KW40Z kw40z_device(PTE24, PTE25);
cotigac 0:f7ef26f17610 29
cotigac 0:f7ef26f17610 30 int main()
cotigac 0:f7ef26f17610 31 {
cotigac 0:f7ef26f17610 32 /* Register callbacks to application functions */
cotigac 0:f7ef26f17610 33 kw40z_device.attach(&callbacks);
cotigac 0:f7ef26f17610 34
cotigac 0:f7ef26f17610 35 while (true) {
cotigac 0:f7ef26f17610 36 Thread::wait(500);
cotigac 0:f7ef26f17610 37 }
cotigac 0:f7ef26f17610 38 }
cotigac 0:f7ef26f17610 39
cotigac 0:f7ef26f17610 40 void HandleButtons(hexi_buttons_t button)
cotigac 0:f7ef26f17610 41 {
cotigac 0:f7ef26f17610 42 StartHaptic();
cotigac 0:f7ef26f17610 43
cotigac 0:f7ef26f17610 44 switch(button)
cotigac 0:f7ef26f17610 45 {
cotigac 0:f7ef26f17610 46 case pressUp:
cotigac 0:f7ef26f17610 47 redLed = LED_ON;
cotigac 0:f7ef26f17610 48 greenLed = LED_OFF;
cotigac 0:f7ef26f17610 49 blueLed = LED_OFF;
cotigac 0:f7ef26f17610 50 break;
cotigac 0:f7ef26f17610 51
cotigac 0:f7ef26f17610 52 case pressDown:
cotigac 0:f7ef26f17610 53 redLed = LED_OFF;
cotigac 0:f7ef26f17610 54 greenLed = LED_ON;
cotigac 0:f7ef26f17610 55 blueLed = LED_OFF;
cotigac 0:f7ef26f17610 56 break;
cotigac 0:f7ef26f17610 57
cotigac 0:f7ef26f17610 58 case pressLeft:
cotigac 0:f7ef26f17610 59 redLed = LED_OFF;
cotigac 0:f7ef26f17610 60 greenLed = LED_OFF;
cotigac 0:f7ef26f17610 61 blueLed = LED_ON;
cotigac 0:f7ef26f17610 62 break;
cotigac 0:f7ef26f17610 63
cotigac 0:f7ef26f17610 64 case pressRight:
cotigac 0:f7ef26f17610 65 redLed = LED_ON;
cotigac 0:f7ef26f17610 66 greenLed = LED_ON;
cotigac 0:f7ef26f17610 67 blueLed = LED_OFF;
cotigac 0:f7ef26f17610 68 break;
cotigac 0:f7ef26f17610 69
cotigac 0:f7ef26f17610 70 case slide:
cotigac 0:f7ef26f17610 71 redLed = LED_ON;
cotigac 0:f7ef26f17610 72 greenLed = LED_ON;
cotigac 0:f7ef26f17610 73 blueLed = LED_ON;
cotigac 0:f7ef26f17610 74 break;
cotigac 0:f7ef26f17610 75
cotigac 0:f7ef26f17610 76 default:
cotigac 0:f7ef26f17610 77 break;
cotigac 0:f7ef26f17610 78 }
cotigac 0:f7ef26f17610 79 }
cotigac 0:f7ef26f17610 80
cotigac 0:f7ef26f17610 81 void StartHaptic(void)
cotigac 0:f7ef26f17610 82 {
cotigac 0:f7ef26f17610 83 hapticTimer.start(50);
cotigac 0:f7ef26f17610 84 haptic = 1;
cotigac 0:f7ef26f17610 85 }
cotigac 0:f7ef26f17610 86
cotigac 0:f7ef26f17610 87 void StopHaptic(void const *n) {
cotigac 0:f7ef26f17610 88 haptic = 0;
cotigac 0:f7ef26f17610 89 hapticTimer.stop();
cotigac 0:f7ef26f17610 90 }