Los Putacos / Mbed OS WearableDevice_Nucleo

Dependencies:   MPU9250_SPI SDFileSystem XBeeLib

Revision:
29:ab809198c1ba
Parent:
28:c7e977a19564
--- a/event.cpp	Tue Dec 19 10:15:19 2017 +0000
+++ b/event.cpp	Fri Feb 16 18:30:19 2018 +0000
@@ -12,25 +12,52 @@
 //-----------------------------------------------------------------
 // Includes
 #include "event.h"
+
+//-----------------------------------------------------------------
+
+//-----------------------------------------------------------------
+void ReadBattery(void)
+{
+    Battery_Status = VSense.read()/0.21 - 3;        // Read Voltage Level above Critial Value (> 3V)
+    Power_Consumption = ISense.read() * 3.3;        // Read Current Level and calculate Power_Consumption
+    PC.printf("Battery_Status = %.3fV - %.3fmW\n", Battery_Status + 3, Power_Consumption);      // Show Total Voltage Level
+
+    if (Battery_Status > 1) {   // More than 1V Voltage Difference
+        LED_Red1 = 0;           // Turn ON both Red LEDs
+        LED_Red2 = 0;
+    } else if ((Battery_Status > 0.25) && (Battery_Status < 1)) {       // Between 0.25V and 1V Voltage Difference
+        LED_Red1 = 0;       // Turn ON one Red LEDs
+        LED_Red2 = 1;
+    } else {
+        LED_Red1 = 1;       // Turn off both Red LEDs
+        LED_Red2 = 1;
+    }
+}
 //-----------------------------------------------------------------
 
 //-----------------------------------------------------------------
 void ReceiveCommand(void)
 {
-    if (Socket_TCP.recv(Data_Buffer, sizeof Data_Buffer) > 0) {
-        PC.printf("Socket Data Received! - %s\n", Data_Buffer);
+    response = Socket_TCP.connect("192.168.43.96", 8080);       // Connect to TCP Server at 192.168.43.96/8080
 
-        if (strlen(Data_Buffer) == 9) {         // Check Package Length (correct: len = 9)
-            if ((Data_Buffer[0] == '#') && (Data_Buffer[6] == ',')) {       // Check for "#" and "," at specific Positions
-                if (strstr(Data_Buffer, DeviceNr) != NULL) {                // Check for valid DeviceNr in Package
-                    Time_Buffer[0] = Data_Buffer[7];
-                    Time_Buffer[1] = Data_Buffer[8];
-                    Requested_Time = atoi(Time_Buffer);                     // Requested Time by received Package
-
-                    CheckCommandDone_Flag = 1;
-                    PC.printf("Requested Time: %d\n", Requested_Time);
-                    memset(Data_Buffer, 0, sizeof(Data_Buffer));            // Clear Data_Buffer
-                    Ticker_ReceiveCommand.detach();
+    if (0 == response) {            // Server Available & Connection Successful
+        if (Socket_TCP.recv(Data_Buffer, sizeof Data_Buffer) > 0) {         // TCP Socket Data Available
+            if (strlen(Data_Buffer) == 9) {                                 // Check Package Length (correct: len = 9)
+                if ((Data_Buffer[0] == '#') && (Data_Buffer[6] == ',')) {       // Check for "#" and "," at specific Positions
+                    if (strstr(Data_Buffer, DeviceNr) != NULL) {                // Check for valid DeviceNr in Package
+                        Ticker_ReadBattery.detach();            // Stop "ReadBattery" Thread                    
+                        Ticker_ReceiveCommand.detach();         // Stop "ReceiveCommand" Thread
+                        
+                        Time_Buffer[0] = Data_Buffer[7];        // Read 1st Time Byte from Buffer
+                        Time_Buffer[1] = Data_Buffer[8];        // Read 2nd Time Byte from Buffer
+                        Requested_Time = atoi(Time_Buffer);     // Requested Time by Command
+                        
+                        PC.printf("\nCommand Received - Requested Time: %d\n", Requested_Time);
+                        Buzzer = 0.5;       // Enable Buzzer at 50% DutyCycle
+                        wait(0.5);          // Pause for Buzzing
+                        Buzzer = 0;         // Disable Buzzer
+                        CheckCommandDone_Flag = 1;              // Set Flag for Measurement Start
+                    }
                 }
             }
         }
@@ -44,21 +71,20 @@
     Time_Data = TimeStamp.read_ms();        // Read TimeStamp Data
 
     if (Time_Data <= Requested_Time * 1000) {       // Check Time Elapsed
-        imu.read_acc();
+        imu.read_acc();         // Read Accelerometer Data
 
-        Data_Storage_MIC[writePointer_MIC++] = micro.read_u16();    // Store Microphone Data
-        Data_Storage[writePointer++] = imu.accelerometer_data[2];   // Store Z-Axis Accelerometer Data
-        Data_Storage[writePointer++] = imu.accelerometer_data[1];   // Store Y-Axis Accelerometer Data
-        Data_Storage[writePointer++] = imu.accelerometer_data[0];   // Store X-Axis Accelerometer Data
-        Data_Storage[writePointer++] = Time_Data;                   // Store Time Data
+        Data_Storage_MIC[writePointer_MIC++] = Micro_1.read_u16();      // Store Microphone Data
+        Data_Storage[writePointer++] = imu.accelerometer_data[2];       // Store Z-Axis Accelerometer Data
+        Data_Storage[writePointer++] = imu.accelerometer_data[1];       // Store Y-Axis Accelerometer Data
+        Data_Storage[writePointer++] = imu.accelerometer_data[0];       // Store X-Axis Accelerometer Data
+        Data_Storage[writePointer++] = Time_Data;                       // Store Time Data
     } else {
-        Ticker_IMU.detach();        // Detach Timer to Stop "ReadIMU"
+        Ticker_IMU.detach();        // Stop "ReadIMU" Thread
         TimeStamp.stop();           // Stop TimeStamp
         TimeStamp.reset();          // Reset TimeStamp
 
-        TimeStamp.start();
-        ReadIMUDone_Flag = 1;
-        PC.printf("Measurement Done!\n");
+        TimeStamp.start();          // Start TimeStamp
+        ReadIMUDone_Flag = 1;       // Set Flag for Sending Start
     }
 }
 //-----------------------------------------------------------------