Graduation Thesis, use Nucleo and X-Nucleo BLE
Dependencies: PulseSensor GSM Thermometer KalmanFilter
Diff: Application/main.cpp
- 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) {