software opt

Dependencies:   Hexi_KW40Z Hexi_OLED_SSD1351

Fork of Hexi_BLE_Time by Adam S

Committer:
nrithya
Date:
Tue Jun 12 05:15:38 2018 +0000
Revision:
10:64e12acdeab5
Parent:
9:c8e4e6d4cdd0
Child:
11:6776aca68628
token[3] parsed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khuang 0:c80666325948 1 #include "mbed.h"
khuang 0:c80666325948 2 #include "Hexi_KW40Z.h"
khuang 0:c80666325948 3 #include "Hexi_OLED_SSD1351.h"
khuang 0:c80666325948 4 #include "OLED_types.h"
khuang 0:c80666325948 5 #include "OpenSans_Font.h"
khuang 0:c80666325948 6 #include "string.h"
astamb 5:0076f669169f 7 #include "time.h"
astamb 9:c8e4e6d4cdd0 8 #include <sstream>
astamb 9:c8e4e6d4cdd0 9
khuang 0:c80666325948 10
khuang 0:c80666325948 11 #define LED_ON 0
khuang 0:c80666325948 12 #define LED_OFF 1
cotigac 3:c2ab3a0de448 13
khuang 0:c80666325948 14 void StartHaptic(void);
khuang 0:c80666325948 15 void StopHaptic(void const *n);
astamb 9:c8e4e6d4cdd0 16 void resetBLE(void);
astamb 9:c8e4e6d4cdd0 17 void displayTime(void);
khuang 0:c80666325948 18
xihan94 4:20d4eebfa986 19 Serial pc(USBTX, USBRX);
xihan94 4:20d4eebfa986 20
khuang 0:c80666325948 21 DigitalOut redLed(LED1,1);
khuang 0:c80666325948 22 DigitalOut greenLed(LED2,1);
khuang 0:c80666325948 23 DigitalOut blueLed(LED3,1);
khuang 0:c80666325948 24 DigitalOut haptic(PTB9);
khuang 0:c80666325948 25
khuang 0:c80666325948 26 /* Define timer for haptic feedback */
khuang 0:c80666325948 27 RtosTimer hapticTimer(StopHaptic, osTimerOnce);
khuang 0:c80666325948 28
khuang 0:c80666325948 29 /* Instantiate the Hexi KW40Z Driver (UART TX, UART RX) */
khuang 0:c80666325948 30 KW40Z kw40z_device(PTE24, PTE25);
khuang 0:c80666325948 31
khuang 0:c80666325948 32 /* Instantiate the SSD1351 OLED Driver */
khuang 0:c80666325948 33 SSD1351 oled(PTB22,PTB21,PTC13,PTB20,PTE6, PTD15); /* (MOSI,SCLK,POWER,CS,RST,DC) */
khuang 0:c80666325948 34
khuang 1:a0d9eeedb771 35 /*Create a Thread to handle sending BLE Sensor Data */
khuang 1:a0d9eeedb771 36 Thread txThread;
astamb 5:0076f669169f 37 Thread broadcastThread;
astamb 9:c8e4e6d4cdd0 38 Thread resetBLE_Thread;
astamb 9:c8e4e6d4cdd0 39 Thread displayTime_Thread;
astamb 9:c8e4e6d4cdd0 40
astamb 9:c8e4e6d4cdd0 41 /*Create a Timer to reset BLE */
astamb 9:c8e4e6d4cdd0 42 Timer BLE_clock;
khuang 0:c80666325948 43
khuang 1:a0d9eeedb771 44 /* Text Buffer */
khuang 1:a0d9eeedb771 45 char text[20];
astamb 5:0076f669169f 46 char time_text[20];
astamb 5:0076f669169f 47 char date_text[25];
khuang 1:a0d9eeedb771 48
cotigac 3:c2ab3a0de448 49 uint8_t battery = 100;
cotigac 3:c2ab3a0de448 50 uint8_t light = 0;
cotigac 3:c2ab3a0de448 51 uint16_t humidity = 4500;
cotigac 3:c2ab3a0de448 52 uint16_t temperature = 2000;
cotigac 3:c2ab3a0de448 53 uint16_t pressure = 9000;
cotigac 3:c2ab3a0de448 54 uint16_t x = 0;
cotigac 3:c2ab3a0de448 55 uint16_t y = 5000;
cotigac 3:c2ab3a0de448 56 uint16_t z = 10000;
cotigac 3:c2ab3a0de448 57
astamb 9:c8e4e6d4cdd0 58 float current_time;
astamb 9:c8e4e6d4cdd0 59 float alert_time = 0;
astamb 9:c8e4e6d4cdd0 60 double float_time = 1528686283;
astamb 9:c8e4e6d4cdd0 61 char buffer[16];
astamb 9:c8e4e6d4cdd0 62 int new_reading = 0;
astamb 9:c8e4e6d4cdd0 63 int BLE_status = 0;
astamb 9:c8e4e6d4cdd0 64 char time_buffer[30];
astamb 9:c8e4e6d4cdd0 65 char *smallbuff;
astamb 9:c8e4e6d4cdd0 66 std::time_t timeinfo;
astamb 9:c8e4e6d4cdd0 67 int LA_GMT = 25200;
astamb 9:c8e4e6d4cdd0 68 int second_dec = 0;
astamb 9:c8e4e6d4cdd0 69 int second_1d = 0;
astamb 9:c8e4e6d4cdd0 70 int second_2d = 0;
astamb 9:c8e4e6d4cdd0 71 int minute_1d = 0;
astamb 9:c8e4e6d4cdd0 72 int minute_2d = 0;
astamb 9:c8e4e6d4cdd0 73 int hour_1d = 0;
astamb 9:c8e4e6d4cdd0 74 int hour_2d = 0;
astamb 9:c8e4e6d4cdd0 75 char newtime_text[10];
astamb 9:c8e4e6d4cdd0 76 char *token[10];
astamb 9:c8e4e6d4cdd0 77
khuang 1:a0d9eeedb771 78 /****************************Call Back Functions*******************************/
astamb 5:0076f669169f 79
astamb 5:0076f669169f 80
khuang 0:c80666325948 81 void ButtonRight(void)
khuang 0:c80666325948 82 {
khuang 0:c80666325948 83 StartHaptic();
khuang 0:c80666325948 84 kw40z_device.ToggleAdvertisementMode();
khuang 0:c80666325948 85 }
khuang 0:c80666325948 86
khuang 0:c80666325948 87 void ButtonLeft(void)
khuang 0:c80666325948 88 {
khuang 0:c80666325948 89 StartHaptic();
khuang 0:c80666325948 90 kw40z_device.ToggleAdvertisementMode();
astamb 5:0076f669169f 91
khuang 0:c80666325948 92 }
khuang 0:c80666325948 93
astamb 5:0076f669169f 94
khuang 0:c80666325948 95 void PassKey(void)
khuang 0:c80666325948 96 {
khuang 0:c80666325948 97 StartHaptic();
khuang 0:c80666325948 98 strcpy((char *) text,"PAIR CODE");
khuang 1:a0d9eeedb771 99 oled.TextBox((uint8_t *)text,0,25,95,18);
khuang 0:c80666325948 100
khuang 0:c80666325948 101 /* Display Bond Pass Key in a 95px by 18px textbox at x=0,y=40 */
khuang 0:c80666325948 102 sprintf(text,"%d", kw40z_device.GetPassKey());
khuang 0:c80666325948 103 oled.TextBox((uint8_t *)text,0,40,95,18);
khuang 0:c80666325948 104 }
khuang 1:a0d9eeedb771 105
xihan94 4:20d4eebfa986 106 // Key modification: use the alert functionality enabled by the host-ble interface
xihan94 4:20d4eebfa986 107 // to define our own command.
xihan94 4:20d4eebfa986 108 void AlertReceived(uint8_t *data, uint8_t length)
xihan94 4:20d4eebfa986 109 {
astamb 9:c8e4e6d4cdd0 110 redLed = !redLed;
astamb 9:c8e4e6d4cdd0 111 alert_time = BLE_clock.read();
astamb 9:c8e4e6d4cdd0 112
astamb 9:c8e4e6d4cdd0 113 /*
astamb 9:c8e4e6d4cdd0 114 data[17] = 0;
astamb 9:c8e4e6d4cdd0 115 data[18] = 0;
xihan94 4:20d4eebfa986 116 data[19] = 0;
astamb 9:c8e4e6d4cdd0 117 data[20] = 0;
astamb 9:c8e4e6d4cdd0 118 */
astamb 9:c8e4e6d4cdd0 119 // pc.printf("%s\r\n", data);
astamb 9:c8e4e6d4cdd0 120 // pc.printf("%i\r\n", data);
xihan94 4:20d4eebfa986 121
astamb 9:c8e4e6d4cdd0 122 sprintf(buffer, "%s", data);
astamb 9:c8e4e6d4cdd0 123 sscanf(buffer, "%lf", &float_time);
astamb 9:c8e4e6d4cdd0 124 // pc.printf("%s\r\n", Result);
astamb 9:c8e4e6d4cdd0 125 redLed = !redLed;
astamb 9:c8e4e6d4cdd0 126 new_reading = 1;
astamb 9:c8e4e6d4cdd0 127
astamb 9:c8e4e6d4cdd0 128
astamb 9:c8e4e6d4cdd0 129
astamb 9:c8e4e6d4cdd0 130 /*
astamb 6:ae8a23b0735b 131 if (data) {
astamb 6:ae8a23b0735b 132 blueLed = LED_OFF;
astamb 6:ae8a23b0735b 133 greenLed = LED_ON;
astamb 6:ae8a23b0735b 134 wait_ms(1000);
astamb 6:ae8a23b0735b 135 greenLed = LED_OFF;
astamb 6:ae8a23b0735b 136 blueLed = LED_ON;
astamb 6:ae8a23b0735b 137 }
astamb 9:c8e4e6d4cdd0 138 */
astamb 6:ae8a23b0735b 139
astamb 6:ae8a23b0735b 140 /*
xihan94 4:20d4eebfa986 141 // data (our command) must 20 bytes long.
xihan94 4:20d4eebfa986 142 // CMD for turning on: 'ledonledonledonledon'
xihan94 4:20d4eebfa986 143 if (data[4] == 'n') {
xihan94 4:20d4eebfa986 144 greenLed = LED_ON;
xihan94 4:20d4eebfa986 145 redLed = LED_ON;
xihan94 4:20d4eebfa986 146 blueLed = LED_ON;
xihan94 4:20d4eebfa986 147 pc.printf("on\n\r", data);
xihan94 4:20d4eebfa986 148
xihan94 4:20d4eebfa986 149 // CMD for turning off: 'ledoffledoffledoffled'
xihan94 4:20d4eebfa986 150 } else if (data[4] == 'f') {
xihan94 4:20d4eebfa986 151 greenLed = LED_OFF;
xihan94 4:20d4eebfa986 152 redLed = LED_OFF;
xihan94 4:20d4eebfa986 153 blueLed = LED_OFF;
xihan94 4:20d4eebfa986 154 pc.printf("off\n\r", data);
xihan94 4:20d4eebfa986 155 }
astamb 6:ae8a23b0735b 156 */
astamb 5:0076f669169f 157
xihan94 4:20d4eebfa986 158 }
khuang 1:a0d9eeedb771 159 /***********************End of Call Back Functions*****************************/
khuang 1:a0d9eeedb771 160
khuang 1:a0d9eeedb771 161 /********************************Main******************************************/
khuang 1:a0d9eeedb771 162
khuang 0:c80666325948 163 int main()
khuang 0:c80666325948 164 {
cotigac 3:c2ab3a0de448 165 /* Register callbacks to application functions */
cotigac 3:c2ab3a0de448 166 kw40z_device.attach_buttonLeft(&ButtonLeft);
cotigac 3:c2ab3a0de448 167 kw40z_device.attach_buttonRight(&ButtonRight);
cotigac 3:c2ab3a0de448 168 kw40z_device.attach_passkey(&PassKey);
xihan94 4:20d4eebfa986 169 kw40z_device.attach_alert(&AlertReceived);
astamb 5:0076f669169f 170
astamb 5:0076f669169f 171
xihan94 4:20d4eebfa986 172 pc.printf("hello\n\r");
xihan94 4:20d4eebfa986 173
khuang 0:c80666325948 174 /* Turn on the backlight of the OLED Display */
khuang 0:c80666325948 175 oled.DimScreenON();
khuang 0:c80666325948 176
khuang 0:c80666325948 177 /* Fills the screen with solid black */
khuang 0:c80666325948 178 oled.FillScreen(COLOR_BLACK);
cotigac 3:c2ab3a0de448 179
cotigac 3:c2ab3a0de448 180 /* Get OLED Class Default Text Properties */
cotigac 3:c2ab3a0de448 181 oled_text_properties_t textProperties = {0};
cotigac 3:c2ab3a0de448 182 oled.GetTextProperties(&textProperties);
khuang 0:c80666325948 183
khuang 0:c80666325948 184 /* Change font color to Blue */
khuang 0:c80666325948 185 textProperties.fontColor = COLOR_BLUE;
khuang 0:c80666325948 186 oled.SetTextProperties(&textProperties);
khuang 0:c80666325948 187
khuang 0:c80666325948 188 /* Display Bluetooth Label at x=17,y=65 */
khuang 0:c80666325948 189 strcpy((char *) text,"BLUETOOTH");
khuang 0:c80666325948 190 oled.Label((uint8_t *)text,17,65);
khuang 0:c80666325948 191
khuang 0:c80666325948 192 /* Change font color to white */
khuang 0:c80666325948 193 textProperties.fontColor = COLOR_WHITE;
khuang 0:c80666325948 194 textProperties.alignParam = OLED_TEXT_ALIGN_CENTER;
khuang 0:c80666325948 195 oled.SetTextProperties(&textProperties);
khuang 0:c80666325948 196
khuang 1:a0d9eeedb771 197 /* Display Label at x=22,y=80 */
khuang 0:c80666325948 198 strcpy((char *) text,"Tap Below");
khuang 0:c80666325948 199 oled.Label((uint8_t *)text,22,80);
astamb 5:0076f669169f 200
astamb 5:0076f669169f 201 // txThread.start(txTask); /*Start transmitting Sensor Tag Data */
astamb 5:0076f669169f 202
astamb 9:c8e4e6d4cdd0 203 resetBLE_Thread.start(resetBLE);
astamb 9:c8e4e6d4cdd0 204
astamb 9:c8e4e6d4cdd0 205 // displayTime_Thread.start(displayTime);
astamb 9:c8e4e6d4cdd0 206
astamb 9:c8e4e6d4cdd0 207
astamb 9:c8e4e6d4cdd0 208
astamb 5:0076f669169f 209 int counter = 0;
astamb 5:0076f669169f 210 int status = 0;
khuang 0:c80666325948 211
astamb 9:c8e4e6d4cdd0 212 BLE_clock.reset();
astamb 9:c8e4e6d4cdd0 213 BLE_clock.start();
astamb 9:c8e4e6d4cdd0 214
astamb 9:c8e4e6d4cdd0 215 float start_time = BLE_clock.read();
astamb 9:c8e4e6d4cdd0 216
astamb 9:c8e4e6d4cdd0 217 int int_time = float_time - LA_GMT;
astamb 9:c8e4e6d4cdd0 218
astamb 9:c8e4e6d4cdd0 219 char date_text[20];
astamb 9:c8e4e6d4cdd0 220 char time_text[10];
astamb 9:c8e4e6d4cdd0 221
astamb 9:c8e4e6d4cdd0 222
astamb 9:c8e4e6d4cdd0 223
astamb 9:c8e4e6d4cdd0 224
astamb 9:c8e4e6d4cdd0 225
khuang 1:a0d9eeedb771 226 while (true)
khuang 1:a0d9eeedb771 227 {
astamb 5:0076f669169f 228 counter += 1;
astamb 5:0076f669169f 229 status = !kw40z_device.GetAdvertisementMode(); /*Indicate BLE Advertisment Mode*/
astamb 5:0076f669169f 230 blueLed = status;
astamb 6:ae8a23b0735b 231
astamb 9:c8e4e6d4cdd0 232 if (status != BLE_status) {
astamb 9:c8e4e6d4cdd0 233 if (status == 1) {
astamb 9:c8e4e6d4cdd0 234 pc.printf("[%f] BLE is off.\r\n",BLE_clock.read());
astamb 9:c8e4e6d4cdd0 235 BLE_status = 1;
astamb 9:c8e4e6d4cdd0 236 }
astamb 9:c8e4e6d4cdd0 237 else {
astamb 9:c8e4e6d4cdd0 238 pc.printf("[%f] BLE is on.\r\n",BLE_clock.read(), status);
astamb 9:c8e4e6d4cdd0 239 BLE_status = 0;
astamb 9:c8e4e6d4cdd0 240 }
astamb 9:c8e4e6d4cdd0 241 }
astamb 9:c8e4e6d4cdd0 242
astamb 9:c8e4e6d4cdd0 243 if (new_reading == 1) {
astamb 9:c8e4e6d4cdd0 244 pc.printf("New time: %lf\r\n", float_time);
astamb 9:c8e4e6d4cdd0 245 int_time = float_time - LA_GMT;
astamb 9:c8e4e6d4cdd0 246
astamb 9:c8e4e6d4cdd0 247 new_reading = 0;
nrithya 10:64e12acdeab5 248 /*minute_2d = (int)time_text[3];
astamb 9:c8e4e6d4cdd0 249 minute_1d = (int)time_text[4];
astamb 9:c8e4e6d4cdd0 250 second_2d = (int)time_text[6];
astamb 9:c8e4e6d4cdd0 251 second_1d = (int)time_text[7];
nrithya 10:64e12acdeab5 252 second_dec = 0;*/
nrithya 10:64e12acdeab5 253
nrithya 10:64e12acdeab5 254 hour_2d=token[3][0]-'0';
nrithya 10:64e12acdeab5 255 hour_1d=token[3][1]-'0';
nrithya 10:64e12acdeab5 256 minute_2d=token[3][4]-'0';
nrithya 10:64e12acdeab5 257 minute_1d=token[3][5]-'0';
nrithya 10:64e12acdeab5 258 second_2d=token[3][7]-'0';
nrithya 10:64e12acdeab5 259 second_1d=token[3][8]-'0';
astamb 9:c8e4e6d4cdd0 260 }
astamb 5:0076f669169f 261
astamb 9:c8e4e6d4cdd0 262
astamb 5:0076f669169f 263
astamb 9:c8e4e6d4cdd0 264 time_t timeinfo =(time_t) int_time;
astamb 9:c8e4e6d4cdd0 265 timeinfo=(time_t)int_time;
astamb 9:c8e4e6d4cdd0 266 sprintf(buffer,"%s",ctime(&timeinfo));
astamb 5:0076f669169f 267
astamb 5:0076f669169f 268
astamb 9:c8e4e6d4cdd0 269 token[0] = strtok(buffer, " ");
astamb 9:c8e4e6d4cdd0 270
astamb 9:c8e4e6d4cdd0 271 // Keep printing tokens while one of the
astamb 9:c8e4e6d4cdd0 272 // delimiters present in str[].
astamb 9:c8e4e6d4cdd0 273 int i=0;
astamb 9:c8e4e6d4cdd0 274 while (token[i] != NULL) {
astamb 9:c8e4e6d4cdd0 275 // printf("[%d] %s\r\n", i, token[i]);
astamb 9:c8e4e6d4cdd0 276 i++;
astamb 9:c8e4e6d4cdd0 277 token[i] = strtok(NULL, " ");
astamb 9:c8e4e6d4cdd0 278 }
astamb 9:c8e4e6d4cdd0 279
astamb 9:c8e4e6d4cdd0 280 // Updating time
astamb 9:c8e4e6d4cdd0 281 second_dec++;
astamb 9:c8e4e6d4cdd0 282
astamb 9:c8e4e6d4cdd0 283 if (second_dec>9) {
astamb 9:c8e4e6d4cdd0 284 second_1d++;
astamb 9:c8e4e6d4cdd0 285 second_dec = 0;
astamb 9:c8e4e6d4cdd0 286 }
astamb 9:c8e4e6d4cdd0 287
astamb 9:c8e4e6d4cdd0 288 if (second_1d>9) {
astamb 9:c8e4e6d4cdd0 289 second_2d++;
astamb 9:c8e4e6d4cdd0 290 second_1d = 0;
astamb 9:c8e4e6d4cdd0 291 second_dec = 0;
astamb 9:c8e4e6d4cdd0 292 }
astamb 9:c8e4e6d4cdd0 293
astamb 9:c8e4e6d4cdd0 294 if (second_2d*10 + second_1d > 59) {
astamb 9:c8e4e6d4cdd0 295 minute_1d++;
astamb 9:c8e4e6d4cdd0 296 second_2d = 0;
astamb 9:c8e4e6d4cdd0 297 second_1d = 0;
astamb 9:c8e4e6d4cdd0 298 second_dec = 0;
astamb 9:c8e4e6d4cdd0 299 }
astamb 9:c8e4e6d4cdd0 300
astamb 9:c8e4e6d4cdd0 301 if (minute_1d>9) {
astamb 9:c8e4e6d4cdd0 302 minute_2d++;
astamb 9:c8e4e6d4cdd0 303 minute_1d = 0;
astamb 9:c8e4e6d4cdd0 304 second_2d = 0;
astamb 9:c8e4e6d4cdd0 305 second_1d = 0;
astamb 9:c8e4e6d4cdd0 306 second_dec = 0;
astamb 9:c8e4e6d4cdd0 307 }
astamb 9:c8e4e6d4cdd0 308
astamb 9:c8e4e6d4cdd0 309 if (minute_2d*10 + minute_1d > 59) {
astamb 9:c8e4e6d4cdd0 310 hour_1d++;
astamb 9:c8e4e6d4cdd0 311 minute_2d = 0;
astamb 9:c8e4e6d4cdd0 312 minute_1d = 0;
astamb 9:c8e4e6d4cdd0 313 second_2d = 0;
astamb 9:c8e4e6d4cdd0 314 second_1d = 0;
astamb 9:c8e4e6d4cdd0 315 second_dec = 0;
astamb 9:c8e4e6d4cdd0 316 }
astamb 9:c8e4e6d4cdd0 317
astamb 9:c8e4e6d4cdd0 318 if (hour_1d > 9) {
astamb 9:c8e4e6d4cdd0 319 hour_2d++;
astamb 9:c8e4e6d4cdd0 320 hour_1d = 0;
astamb 9:c8e4e6d4cdd0 321 }
astamb 9:c8e4e6d4cdd0 322
astamb 9:c8e4e6d4cdd0 323 if (hour_2d == 2 && hour_1d > 3) {
astamb 9:c8e4e6d4cdd0 324 hour_2d = 0;
astamb 9:c8e4e6d4cdd0 325 hour_1d = 0;
astamb 9:c8e4e6d4cdd0 326 minute_2d = 0;
astamb 9:c8e4e6d4cdd0 327 minute_1d = 0;
astamb 9:c8e4e6d4cdd0 328 second_2d = 0;
astamb 9:c8e4e6d4cdd0 329 second_1d = 0;
astamb 9:c8e4e6d4cdd0 330 second_dec = 0;
astamb 9:c8e4e6d4cdd0 331 }
astamb 9:c8e4e6d4cdd0 332
astamb 9:c8e4e6d4cdd0 333 sprintf(newtime_text, "%d%d:%d%d:%d%d.%d", hour_2d, hour_1d, minute_2d, minute_1d, second_2d, second_1d, second_dec);
astamb 9:c8e4e6d4cdd0 334
astamb 9:c8e4e6d4cdd0 335 sprintf(date_text,"%s %s %s",token[1],token[2],token[4]);
astamb 9:c8e4e6d4cdd0 336 strcpy(time_text,token[3]);
astamb 9:c8e4e6d4cdd0 337
astamb 9:c8e4e6d4cdd0 338 oled.TextBox((uint8_t *)time_text,2,2, 91, 15);
astamb 9:c8e4e6d4cdd0 339 // Label((uint8_t *)date_text,20,20);
astamb 9:c8e4e6d4cdd0 340
astamb 9:c8e4e6d4cdd0 341
astamb 9:c8e4e6d4cdd0 342
astamb 9:c8e4e6d4cdd0 343 Thread::wait(100);
astamb 5:0076f669169f 344
khuang 1:a0d9eeedb771 345 }
khuang 1:a0d9eeedb771 346 }
khuang 1:a0d9eeedb771 347
khuang 1:a0d9eeedb771 348 /******************************End of Main*************************************/
khuang 1:a0d9eeedb771 349
khuang 1:a0d9eeedb771 350 void StartHaptic(void) {
khuang 0:c80666325948 351 hapticTimer.start(50);
khuang 0:c80666325948 352 haptic = 1;
khuang 0:c80666325948 353 }
khuang 0:c80666325948 354
khuang 0:c80666325948 355 void StopHaptic(void const *n) {
khuang 0:c80666325948 356 haptic = 0;
khuang 0:c80666325948 357 hapticTimer.stop();
khuang 0:c80666325948 358 }
khuang 1:a0d9eeedb771 359
astamb 9:c8e4e6d4cdd0 360 void resetBLE(void) {
astamb 9:c8e4e6d4cdd0 361
astamb 9:c8e4e6d4cdd0 362 current_time = BLE_clock.read();
astamb 9:c8e4e6d4cdd0 363
astamb 9:c8e4e6d4cdd0 364 if (current_time - alert_time > 60) {
astamb 9:c8e4e6d4cdd0 365 pc.printf("Haven't received new data in 60 seconds. Resetting BLE\r\n");
astamb 9:c8e4e6d4cdd0 366 kw40z_device.ToggleAdvertisementMode();
astamb 9:c8e4e6d4cdd0 367 Thread::wait(500);
astamb 9:c8e4e6d4cdd0 368 int status = !kw40z_device.GetAdvertisementMode(); /*Indicate BLE Advertisment Mode*/
astamb 9:c8e4e6d4cdd0 369
astamb 9:c8e4e6d4cdd0 370 while (status == 1) {
astamb 9:c8e4e6d4cdd0 371 StartHaptic();
astamb 9:c8e4e6d4cdd0 372 kw40z_device.ToggleAdvertisementMode();
astamb 9:c8e4e6d4cdd0 373 Thread::wait(5000);
astamb 9:c8e4e6d4cdd0 374 }
astamb 9:c8e4e6d4cdd0 375 }
astamb 9:c8e4e6d4cdd0 376
astamb 9:c8e4e6d4cdd0 377
astamb 9:c8e4e6d4cdd0 378 }
astamb 9:c8e4e6d4cdd0 379
astamb 9:c8e4e6d4cdd0 380 void displayTime(void) {
astamb 9:c8e4e6d4cdd0 381
astamb 9:c8e4e6d4cdd0 382 // Reminder to move the clock commands from main while(1) to here
astamb 9:c8e4e6d4cdd0 383
astamb 9:c8e4e6d4cdd0 384 }
astamb 9:c8e4e6d4cdd0 385