raynard omongbale / Mbed OS hexiwear_Bluetooth_Moonshot

Dependencies:   Hexi_OLED_SSD1351

Committer:
raynard
Date:
Fri Jul 26 13:37:55 2019 +0000
Revision:
0:a84d2425acba
watch

Who changed what in which revision?

UserRevisionLine numberNew contents of line
raynard 0:a84d2425acba 1 #include "mbed.h"
raynard 0:a84d2425acba 2 #include "Hexi_KW40Z.h"
raynard 0:a84d2425acba 3 #include "Hexi_OLED_SSD1351.h"
raynard 0:a84d2425acba 4 #include "OLED_types.h"
raynard 0:a84d2425acba 5 #include "OpenSans_Font.h"
raynard 0:a84d2425acba 6 #include "string.h"
raynard 0:a84d2425acba 7 #include <stdio.h>
raynard 0:a84d2425acba 8 #include <stdlib.h>
raynard 0:a84d2425acba 9 #include <string.h>
raynard 0:a84d2425acba 10
raynard 0:a84d2425acba 11
raynard 0:a84d2425acba 12 #define LED_ON 0
raynard 0:a84d2425acba 13 #define LED_OFF 1
raynard 0:a84d2425acba 14 #define MPL3115A2_I2C_ADDRESS (0x60<<1)
raynard 0:a84d2425acba 15
raynard 0:a84d2425acba 16 void StartHaptic(void);
raynard 0:a84d2425acba 17 void StopHaptic(void const *n);
raynard 0:a84d2425acba 18
raynard 0:a84d2425acba 19
raynard 0:a84d2425acba 20
raynard 0:a84d2425acba 21 DigitalOut redLed(LED1,1);
raynard 0:a84d2425acba 22 DigitalOut greenLed(LED2,1);
raynard 0:a84d2425acba 23 DigitalOut WHITELed(LED3,1);
raynard 0:a84d2425acba 24 DigitalOut haptic(PTB9);
raynard 0:a84d2425acba 25 DigitalOut sensorPowerEn(PTB12);
raynard 0:a84d2425acba 26 DigitalOut powerEN (PTB12);
raynard 0:a84d2425acba 27 DigitalOut led1(LED_GREEN); // RGB LED
raynard 0:a84d2425acba 28 Serial pc(USBTX,USBRX); // Serial interface
raynard 0:a84d2425acba 29
raynard 0:a84d2425acba 30 char text[20]; // Text Buffer for dynamic value displayed
raynard 0:a84d2425acba 31 char text1[20]; // Text Buffer for dynamic value displayed
raynard 0:a84d2425acba 32 char text2[20]; // Text Buffer for dynamic value displayed
raynard 0:a84d2425acba 33 char text3[20]; // Text Buffer for dynamic value displayed
raynard 0:a84d2425acba 34 char text4[20]; // Text Buffer for dynamic value displayed
raynard 0:a84d2425acba 35
raynard 0:a84d2425acba 36 /* Define timer for haptic feedback */
raynard 0:a84d2425acba 37 RtosTimer hapticTimer(StopHaptic, osTimerOnce);
raynard 0:a84d2425acba 38
raynard 0:a84d2425acba 39 /* Instantiate the Hexi KW40Z Driver (UART TX, UART RX) */
raynard 0:a84d2425acba 40 KW40Z kw40z_device(PTE24, PTE25);
raynard 0:a84d2425acba 41
raynard 0:a84d2425acba 42 /* Instantiate the SSD1351 OLED Driver */
raynard 0:a84d2425acba 43 SSD1351 oled(PTB22,PTB21,PTC13,PTB20,PTE6, PTD15); /* (MOSI,SCLK,POWER,CS,RST,DC) */
raynard 0:a84d2425acba 44 //void page_1(void);
raynard 0:a84d2425acba 45
raynard 0:a84d2425acba 46
raynard 0:a84d2425acba 47
raynard 0:a84d2425acba 48
raynard 0:a84d2425acba 49 /****************************Call Back Functions*******************************/
raynard 0:a84d2425acba 50
raynard 0:a84d2425acba 51
raynard 0:a84d2425acba 52 void ButtonRight(void)
raynard 0:a84d2425acba 53 {
raynard 0:a84d2425acba 54 StartHaptic();
raynard 0:a84d2425acba 55 pc.printf("opoooooooo");
raynard 0:a84d2425acba 56
raynard 0:a84d2425acba 57 }
raynard 0:a84d2425acba 58
raynard 0:a84d2425acba 59 void ButtonLeft(void)
raynard 0:a84d2425acba 60 {
raynard 0:a84d2425acba 61 StartHaptic();
raynard 0:a84d2425acba 62
raynard 0:a84d2425acba 63 }
raynard 0:a84d2425acba 64
raynard 0:a84d2425acba 65 void ButtonDown(void)
raynard 0:a84d2425acba 66 {
raynard 0:a84d2425acba 67
raynard 0:a84d2425acba 68 StartHaptic();
raynard 0:a84d2425acba 69 pc.printf("down");
raynard 0:a84d2425acba 70
raynard 0:a84d2425acba 71 }
raynard 0:a84d2425acba 72
raynard 0:a84d2425acba 73 void ButtonUp(void)
raynard 0:a84d2425acba 74 {
raynard 0:a84d2425acba 75 StartHaptic();
raynard 0:a84d2425acba 76 pc.printf("up once");
raynard 0:a84d2425acba 77
raynard 0:a84d2425acba 78 }
raynard 0:a84d2425acba 79
raynard 0:a84d2425acba 80 void ButtonSlide(void)
raynard 0:a84d2425acba 81 {
raynard 0:a84d2425acba 82 StartHaptic();
raynard 0:a84d2425acba 83 }
raynard 0:a84d2425acba 84 void PassKey(void)
raynard 0:a84d2425acba 85 {
raynard 0:a84d2425acba 86 StartHaptic();
raynard 0:a84d2425acba 87 strcpy((char *) text,"PAIR CODE");
raynard 0:a84d2425acba 88 oled.TextBox((uint8_t *)text,0,25,95,18);
raynard 0:a84d2425acba 89
raynard 0:a84d2425acba 90 /* Display Bond Pass Key in a 95px by 18px textbox at x=0,y=40 */
raynard 0:a84d2425acba 91 sprintf(text,"%d", kw40z_device.GetPassKey());
raynard 0:a84d2425acba 92 oled.TextBox((uint8_t *)text,0,40,95,18);
raynard 0:a84d2425acba 93 }
raynard 0:a84d2425acba 94
raynard 0:a84d2425acba 95 /***********************End of Call Back Functions*****************************/
raynard 0:a84d2425acba 96
raynard 0:a84d2425acba 97
raynard 0:a84d2425acba 98
raynard 0:a84d2425acba 99
raynard 0:a84d2425acba 100
raynard 0:a84d2425acba 101 /********************************Main******************************************/
raynard 0:a84d2425acba 102
raynard 0:a84d2425acba 103
raynard 0:a84d2425acba 104 int pages[5];
raynard 0:a84d2425acba 105
raynard 0:a84d2425acba 106 int row_count = 0;
raynard 0:a84d2425acba 107
raynard 0:a84d2425acba 108 void pag_1(){
raynard 0:a84d2425acba 109
raynard 0:a84d2425acba 110
raynard 0:a84d2425acba 111 pc.printf("page1\n");
raynard 0:a84d2425acba 112 }
raynard 0:a84d2425acba 113 void pag_2(){
raynard 0:a84d2425acba 114
raynard 0:a84d2425acba 115
raynard 0:a84d2425acba 116 pc.printf("page2\n");
raynard 0:a84d2425acba 117 }
raynard 0:a84d2425acba 118
raynard 0:a84d2425acba 119 void pag_3(){
raynard 0:a84d2425acba 120
raynard 0:a84d2425acba 121
raynard 0:a84d2425acba 122 pc.printf("page3\n");
raynard 0:a84d2425acba 123 }
raynard 0:a84d2425acba 124
raynard 0:a84d2425acba 125 void pag_4(){
raynard 0:a84d2425acba 126
raynard 0:a84d2425acba 127
raynard 0:a84d2425acba 128 pc.printf("page4\n");
raynard 0:a84d2425acba 129 }
raynard 0:a84d2425acba 130 void pag_5(){
raynard 0:a84d2425acba 131
raynard 0:a84d2425acba 132
raynard 0:a84d2425acba 133 pc.printf("page5\n");
raynard 0:a84d2425acba 134 }
raynard 0:a84d2425acba 135 void switch_page (int count)
raynard 0:a84d2425acba 136 {
raynard 0:a84d2425acba 137 //This function checks
raynard 0:a84d2425acba 138 //the int value of the count to determine what page to load to the screen
raynard 0:a84d2425acba 139 switch (count) {
raynard 0:a84d2425acba 140 //checks and calls appropriate function
raynard 0:a84d2425acba 141 case 0:
raynard 0:a84d2425acba 142 // pull first page function
raynard 0:a84d2425acba 143 pag_1();
raynard 0:a84d2425acba 144 break;
raynard 0:a84d2425acba 145
raynard 0:a84d2425acba 146 case 1:
raynard 0:a84d2425acba 147 // pull 2nd page function
raynard 0:a84d2425acba 148 pag_2();
raynard 0:a84d2425acba 149 break;
raynard 0:a84d2425acba 150
raynard 0:a84d2425acba 151 case 2:
raynard 0:a84d2425acba 152 // pull 3rd page function
raynard 0:a84d2425acba 153 pag_3();
raynard 0:a84d2425acba 154 break;
raynard 0:a84d2425acba 155
raynard 0:a84d2425acba 156 case 3:
raynard 0:a84d2425acba 157 // pull 4th page function
raynard 0:a84d2425acba 158 pag_4();
raynard 0:a84d2425acba 159 break;
raynard 0:a84d2425acba 160
raynard 0:a84d2425acba 161
raynard 0:a84d2425acba 162 case 4:
raynard 0:a84d2425acba 163 // pull 5th page function
raynard 0:a84d2425acba 164 pag_5();
raynard 0:a84d2425acba 165 break;
raynard 0:a84d2425acba 166
raynard 0:a84d2425acba 167 default:
raynard 0:a84d2425acba 168 // Do nothing
raynard 0:a84d2425acba 169 break;
raynard 0:a84d2425acba 170
raynard 0:a84d2425acba 171 }
raynard 0:a84d2425acba 172
raynard 0:a84d2425acba 173 }
raynard 0:a84d2425acba 174
raynard 0:a84d2425acba 175 void ButtonTouch()
raynard 0:a84d2425acba 176 {
raynard 0:a84d2425acba 177 StartHaptic();
raynard 0:a84d2425acba 178
raynard 0:a84d2425acba 179 // typedef int(*pageFunction)();
raynard 0:a84d2425acba 180 // pageFunction page_1 = pag_1;
raynard 0:a84d2425acba 181
raynard 0:a84d2425acba 182
raynard 0:a84d2425acba 183 switch_page(row_count);
raynard 0:a84d2425acba 184 if (row_count > 4) row_count = 4;
raynard 0:a84d2425acba 185
raynard 0:a84d2425acba 186 row_count++;
raynard 0:a84d2425acba 187 }
raynard 0:a84d2425acba 188
raynard 0:a84d2425acba 189
raynard 0:a84d2425acba 190 void ButtonTouch2()
raynard 0:a84d2425acba 191 {
raynard 0:a84d2425acba 192 StartHaptic();
raynard 0:a84d2425acba 193
raynard 0:a84d2425acba 194 // typedef int(*pageFunction)();
raynard 0:a84d2425acba 195 // pageFunction page_1 = pag_1;
raynard 0:a84d2425acba 196
raynard 0:a84d2425acba 197
raynard 0:a84d2425acba 198
raynard 0:a84d2425acba 199 if (row_count > 4) row_count = 4;
raynard 0:a84d2425acba 200 row_count--;
raynard 0:a84d2425acba 201 switch_page(row_count);
raynard 0:a84d2425acba 202 }
raynard 0:a84d2425acba 203
raynard 0:a84d2425acba 204 int main()
raynard 0:a84d2425acba 205 {
raynard 0:a84d2425acba 206
raynard 0:a84d2425acba 207
raynard 0:a84d2425acba 208
raynard 0:a84d2425acba 209 //kw40z_device.ToggleAdvertisementMode();
raynard 0:a84d2425acba 210 /* Register callbacks to application functions */
raynard 0:a84d2425acba 211 kw40z_device.attach_buttonLeft(&ButtonLeft);
raynard 0:a84d2425acba 212 kw40z_device.attach_buttonRight(&ButtonRight);
raynard 0:a84d2425acba 213 kw40z_device.attach_passkey(&PassKey);
raynard 0:a84d2425acba 214 kw40z_device.attach_buttonDown(&ButtonDown);
raynard 0:a84d2425acba 215 kw40z_device.attach_buttonUp(&ButtonUp);
raynard 0:a84d2425acba 216 kw40z_device.PageIndex(&ButtonTouch);
raynard 0:a84d2425acba 217 kw40z_device.PageIndex2(&ButtonTouch2);
raynard 0:a84d2425acba 218
raynard 0:a84d2425acba 219
raynard 0:a84d2425acba 220 /* Turn on the backlight of the OLED Display */
raynard 0:a84d2425acba 221 oled.DimScreenON();
raynard 0:a84d2425acba 222 /* Fills the screen with solid black */
raynard 0:a84d2425acba 223 oled.FillScreen(COLOR_BLACK);
raynard 0:a84d2425acba 224 /* Get OLED Class Default Text Properties */
raynard 0:a84d2425acba 225 oled_text_properties_t textProperties = {0};
raynard 0:a84d2425acba 226 oled.GetTextProperties(&textProperties);
raynard 0:a84d2425acba 227 oled.FillScreen(COLOR_BLACK);
raynard 0:a84d2425acba 228
raynard 0:a84d2425acba 229 while (true) {
raynard 0:a84d2425acba 230
raynard 0:a84d2425acba 231 Thread::wait(0.1);
raynard 0:a84d2425acba 232 WHITELed = !kw40z_device.GetAdvertisementMode(); /*Indicate BLE Advertisment Mode*/
raynard 0:a84d2425acba 233 Thread::wait(50);
raynard 0:a84d2425acba 234 }
raynard 0:a84d2425acba 235 }
raynard 0:a84d2425acba 236
raynard 0:a84d2425acba 237 /******************************End of Main*************************************/
raynard 0:a84d2425acba 238
raynard 0:a84d2425acba 239
raynard 0:a84d2425acba 240 void StartHaptic(void)
raynard 0:a84d2425acba 241 {
raynard 0:a84d2425acba 242 hapticTimer.start(50);
raynard 0:a84d2425acba 243 haptic = 1;
raynard 0:a84d2425acba 244 }
raynard 0:a84d2425acba 245
raynard 0:a84d2425acba 246 void StopHaptic(void const *n)
raynard 0:a84d2425acba 247 {
raynard 0:a84d2425acba 248 haptic = 0;
raynard 0:a84d2425acba 249 hapticTimer.stop();
raynard 0:a84d2425acba 250 }
raynard 0:a84d2425acba 251
raynard 0:a84d2425acba 252
raynard 0:a84d2425acba 253