Here
Dependencies: Hexi_KW40Z Hexi_OLED_SSD1351 nRF24L01 FXOS8700
Diff: main.cpp
- Revision:
- 15:77b6655d401b
- Parent:
- 12:8db1b8fb5866
--- a/main.cpp Mon Apr 10 16:46:59 2017 +0000 +++ b/main.cpp Mon Apr 10 22:06:57 2017 +0000 @@ -8,6 +8,7 @@ #include "string.h" #include "images.h" + #define NAME "RB" #define LED_ON 0 @@ -21,7 +22,7 @@ void accelero(void); void drawAccel(void); void displayHome(); -void screenHandler(uint8_t screen); + DigitalOut redLed(LED1,1); @@ -44,7 +45,6 @@ /*Create a Thread to handle sending BLE Sensor Data */ Thread txThread; - // Text Buffer char text1[20]; // Text Buffer for dynamic value displayed char text2[20]; // Text Buffer for dynamic value displayed @@ -53,18 +53,17 @@ float accel_data[3]; // Storage for the data from the sensor float accel_rms=0.0; // RMS value from the sensor -float ax, ay, az; // Integer value from the sensor to be displayed -uint8_t timer = 30; uint8_t screenNum=0; bool prefix=0; -bool accelerometer = false; +bool alert = false; +uint8_t previous; +bool trigger = false; bool sentMessageDisplayedFlag=0; char rxData[TRANSFER_SIZE]; char txData[TRANSFER_SIZE]; int16_t x=0,y=0,z=0; // Pointer for the image to be displayed -const uint8_t *SafeBMP = HexiSafe96_bmp; const uint8_t *HeartBMP = HeartRate_bmp; const uint8_t *FallBMP = FallDet_bmp; const uint8_t *FallPageBMP = FallDetPage_bmp; @@ -78,69 +77,60 @@ { // All screens other than 1 have either and enter button // or a home buttom. - if(screenNum != 1) { + if(screenNum != 0) { StartHaptic(); switch(screenNum) { - case 0: { - screenNum++; - screenHandler(screenNum); + case 1: { + screenNum = screenNum + 2; + break; } case 2: { screenNum = screenNum + 2; - screenHandler(screenNum); + trigger = true; break; } - case 3: { - screenNum = screenNum + 2; - screenHandler(screenNum); - break; - } - case 4: - case 5: { - accelerometer = false; + case 3: + case 4: { screenNum = 0; break; } - case 6: { - screenNum = 0; + case 5: { + screenNum = previous; + alert = false; break; } default: { break; } } - screenHandler(screenNum); } } //Back Button void ButtonLeft(void) { - StartHaptic(); - if(screenNum > 0) { + + if(screenNum > 0 && screenNum != 5) { + StartHaptic(); //Allow user to go back to correct screen based on srceen number - //Refer to screenHandler for screen numbers - if(screenNum == 3 || screenNum == 4 || screenNum == 5) { + if(screenNum == 2 || screenNum == 3 || screenNum == 4) { screenNum = screenNum - 2; - accelerometer = false; } else { screenNum--; } } else { - screenNum = 6; + screenNum = 5; } - screenHandler(screenNum); } //Advances to Heartrate only when user //is on Hexisafe screen void ButtonUp(void) { - if (screenNum == 1) { + if (screenNum == 0) { StartHaptic(); screenNum++; - screenHandler(screenNum); } @@ -150,10 +140,10 @@ //is on Hexisafe screen void ButtonDown(void) { - if (screenNum == 1) { + if (screenNum == 0) { StartHaptic(); screenNum= screenNum + 2; - screenHandler(screenNum); + } } @@ -189,6 +179,9 @@ kw40z_device.attach_buttonDown(&ButtonDown); oled_text_properties_t textProperties = {0}; oled.SetTextProperties(&textProperties); + + uint8_t num = 0; + displayHome(); //Passcode kw40z_device.attach_passkey(&PassKey); @@ -197,11 +190,7 @@ textProperties.fontColor = COLOR_WHITE; textProperties.alignParam = OLED_TEXT_ALIGN_CENTER; - //txThread.start(txTask); /*Start transmitting Sensor Tag Data */ - - //Displays the Home Screen - displayHome(); - //bool trigger = 0; + txThread.start(txTask); /*Start transmitting Sensor Tag Data */ while (true) { accel.acquire_accel_data_g(accel_data); @@ -209,11 +198,62 @@ x = accel_data[0] *10000; y = accel_data[1] *10000; z = accel_data[2] *10000; - printf("x = %4.4f y = %4.4f z = %4.4f\n\rx = %i y = %i z = %i\n\r",accel_data[0],accel_data[1],accel_data[2],x,y,z); - if(screenNum == 5) { - drawAccel(); + printf("Screen = %i Num = %i alert = %d\n\r %i\n\r",screenNum,num,alert,x); + if(accel_rms*10 > 12.4) + { + oled.DrawImage(AlertBMP,0,0); + previous = screenNum; + num = screenNum - 1; + screenNum = 5; + alert = true; } - Thread::wait(300); + if((screenNum != num && alert == false) || screenNum == 4) { + switch(screenNum) { + case 0: { + displayHome(); + num = screenNum; + break; + } + case 1: { + //Switching to HeartBMP + oled.DrawImage(HeartBMP,0,0); + num = screenNum; + break; + } + case 2: { + //Switching to FallBMP + oled.DrawImage(FallBMP,0,0); + num = screenNum; + break; + } + case 3: { + //Switching to HeartPageBMP + oled.DrawImage(HeartPageBMP,0,0); + num = screenNum; + break; + } + case 4: { + //Switching to FallPageBMP + if(trigger == true) { + oled.DrawBox (23,18,50 ,50 , COLOR_BLACK); + trigger = false; + } + drawAccel(); + num = screenNum; + break; + } + case 5: { + //Switching to alarm + oled.DrawImage(AlertBMP,0,0); + num = screenNum; + break; + } + default: { + break; + } + } + } + Thread::wait(100); } @@ -238,56 +278,6 @@ oled.DrawImage(HomeBMP,0,0); } - -void screenHandler(uint8_t screen) -{ - //Switching screens - switch(screen) { - case 0: { - displayHome(); - break; - } - case 1: { - //Switching to SafeBMP - oled.DrawImage(SafeBMP,0,0); - break; - } - case 2: { - //Switching to HeartBMP - oled.DrawImage(HeartBMP,0,0); - break; - } - case 3: { - //Switching to FallBMP - oled.DrawImage(FallBMP,0,0); - break; - } - case 4: { - //Switching to HeartPageBMP - oled.DrawImage(HeartPageBMP,0,0); - break; - } - case 5: { - //Switching to FallPageBMP - oled.DrawBox (23,18,50 ,50 , COLOR_BLACK); - break; - } - case 6: { - //Switching to alarm - oled.DrawImage(AlertBMP,0,0); - break; - } - default: { - break; - } - } - - - //Append Initials to txData[2:3]. - //strcat(txData,NAME); - -} - void drawAccel(void) { @@ -324,14 +314,12 @@ // txTask() transmits the sensor data void txTask(void) { - while (true) { - //UpdateSensorData(); kw40z_device.SendSetApplicationMode(GUI_CURRENT_APP_SENSOR_TAG); - //Send Accel Data. kw40z_device.SendAccel(x,y,z); + Thread::wait(1000); } }