Graduation Thesis, use Nucleo and X-Nucleo BLE

Dependencies:   PulseSensor GSM Thermometer KalmanFilter

Revision:
17:b7c2db3e7282
Parent:
16:0325e647496f
Child:
18:a9d67c51715e
--- a/Application/main.cpp	Wed May 23 17:33:11 2018 +0000
+++ b/Application/main.cpp	Thu May 24 17:37:31 2018 +0000
@@ -29,14 +29,18 @@
 
 /* ======================= VARIABLES ========================= */
 /* GLOBAL VARIABLES */
-static float          currentTemperature   = 39.6;
-static uint8_t        currentHRMCounter    = 80;
-static float       sendCombinedTempAndHR;
+static float    currentTemperature  = 39.6;
+static uint16_t currentHRMCounter   = 80;
+static float    sendCombinedTempAndHR;
+static uint16_t sendCombinedHRAndTemp;
 
 /* PRIVATE VARIABLES */
 uint8_t HRM_increasement = 1;
 uint8_t cnt;
 
+uint8_t startSendFloat = 0;
+uint8_t saveFloat;
+
 /* No need to display the device name */
 //const static char     DEVICE_NAME[] = "BODY SENSOR";
 
@@ -45,17 +49,16 @@
                                        HealthCareService::USER_DATA_SERVICE_UUID,
                                        HealthCareService::DEVICE_INFO_SERVICE_UUID
                                        };
+                                       
+uint8_t htsPosition = HealthCareService::HealthCareService::TEMPERATURE_LOCATION_FINGER;
+uint8_t hrmPosition = HealthCareService::HealthCareService::HRM_LOCATION_FINGER;                                       
 
 /* STRUCTS/CLASSESS */
+HealthCareService       *HealthCareServicePtr;
+
+//PulseSensor              PulseSensor();
 static EventQueue        eventQueue(EVENTS_EVENT_SIZE * 20);
-HealthCareService       *HealthCareServicePtr;
-//PulseSensor              PulseSensor();
-
 Serial                   serial(USBTX, USBRX);
-
-uint8_t htsPosition = HealthCareService::HealthCareService::TEMPERATURE_LOCATION_FINGER;
-uint8_t hrmPosition = HealthCareService::HealthCareService::HRM_LOCATION_FINGER;
-
 /* ================== FUNCTION PROTOTYPES ==================== */
 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *);
 void onBleInitError(BLE &ble, ble_error_t error);
@@ -96,20 +99,58 @@
 void main_event(void) {
     /* Do blocking calls or whatever is necessary for sensor polling.
        In our case, we simply update the Temperature measurement. */
-    currentTemperature = (currentTemperature + 0.16 > 67.79) ? 35.69 : currentTemperature + 1.18;
-    currentHRMCounter  = (currentHRMCounter + 1 > 120) ? 80 : (currentHRMCounter + HRM_increasement);
+    /* TODO Read temperature */
+    currentTemperature = (currentTemperature + 0.16 > 42.79) ? 35.69 : currentTemperature + 1.18;
+    
+    /* TODO Read Heart Rate */
+    currentHRMCounter  = (currentHRMCounter + 1 > 120) ? 75 : (currentHRMCounter + HRM_increasement);
+    
+    /* TODO Update Service data */
     updatePayload();
     
     /* sendCombinedTempAndHR = (currentTemperature * 100)* 1000 + currentHRMCounter */
     sendCombinedTempAndHR  = currentTemperature * 1000; /* Temperature float to int conversion */
     sendCombinedTempAndHR  = sendCombinedTempAndHR + (float)(currentHRMCounter/100.0); 
+    
+    switch (startSendFloat) {
+        case 0: /* sendCombinedHRAndTemp = (currentHRMCounter * 100) + currentTemperature */
+                /* Because the maximum size of HRM Value is 2 bytes */
+                sendCombinedHRAndTemp  = currentHRMCounter * 100;
+                uint16_t tempTemp = currentTemperature * 100;
+                saveFloat = tempTemp % 100;
+                sendCombinedHRAndTemp  = sendCombinedHRAndTemp + (uint8_t)currentTemperature; 
+        break;
+        
+        case 1: sendCombinedHRAndTemp  = currentHRMCounter * 100;
+                sendCombinedHRAndTemp  = sendCombinedHRAndTemp + (uint8_t)13;    
+        break;
+        
+        case 2: sendCombinedHRAndTemp  = currentHRMCounter * 100;
+                sendCombinedHRAndTemp  = sendCombinedHRAndTemp + (uint8_t)10; 
+        break;
+        
+        case 3: sendCombinedHRAndTemp  = currentHRMCounter * 100;
+                sendCombinedHRAndTemp  = sendCombinedHRAndTemp + (uint8_t)saveFloat; 
+        break;
+        
+        case 4: sendCombinedHRAndTemp  = currentHRMCounter * 100;
+                sendCombinedHRAndTemp  = sendCombinedHRAndTemp + (uint8_t)20; 
+                startSendFloat         = 0;
+        break;
+        
+        default: break;
+    }   
 //    printf("sendCombinedTempAndHR %d\r\n", sendCombinedTempAndHR);
 //    printf("sendCombinedTempAndHR %.2f\r\n\r\n", (float)sendCombinedTempAndHR);
+//    printf("currentHRMCounter %d\r\n", currentHRMCounter);
+//    printf("currentTemperature %d\r\n", (uint8_t)currentTemperature);
+//    printf("sendCombinedHRAndTemp %d\r\n", sendCombinedHRAndTemp);
+    
     if (BLE::Instance().gap().getState().connected) {
         HealthCareServicePtr->updateTemperature(sendCombinedTempAndHR);
-        HealthCareServicePtr->updateHeartRate(currentHRMCounter);        
+        HealthCareServicePtr->updateHeartRate(sendCombinedHRAndTemp);        
     }
-
+    startSendFloat++;
 }
 
 void periodicCallback(void) {