Basic output of force sensor data to serial, in form "value1/n"

Dependencies:   mbed BLE_API nRF51822

Revision:
6:dac42d8a8752
Parent:
5:19acba8bb777
--- a/main.cpp	Tue Nov 25 03:28:30 2014 +0000
+++ b/main.cpp	Tue Nov 25 04:57:36 2014 +0000
@@ -16,8 +16,6 @@
 BLEDevice  ble;
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
-
-DigitalOut powerSwitch(P0_0);
  
 AnalogIn strut1Force(P0_1);
 AnalogIn strut2Force(P0_2);
@@ -26,6 +24,12 @@
 AnalogIn seatForce(P0_5);
 AnalogIn cupBottomForce(P0_6);
 AnalogIn sensors[6] = {strut1Force, strut2Force, strut3Force, strut4Force, seatForce, cupBottomForce};
+
+static volatile bool  triggerSensorPolling = false;
+
+float sensorValues[6];
+ 
+char buffer[6];
  
 UARTService *uartServicePtr;
  
@@ -36,8 +40,11 @@
     ble.startAdvertising();
 }
  
+ 
 void onDataWritten(const GattCharacteristicWriteCBParams *params)
 {
+    //doSomething
+    /*
     if ((uartServicePtr != NULL) && (params->charHandle == uartServicePtr->getTXCharacteristicHandle())) {
         uint16_t bytesRead = params->len;
         DEBUG("received %u bytes\n\r", bytesRead);
@@ -52,18 +59,20 @@
         char buffer[4];
         DEBUG("%1.2f,%1.2f,%1.2f,%1.2f,%1.2f,%1.2f\n", strut1Force.read(), strut2Force.read(), strut3Force.read(), strut4Force.read(), seatForce.read(), cupBottomForce.read());
 //        sprintf(buffer, "%1.2f,%1.2f,%1.2f,%1.2f\n", strut1Force.read(), strut2Force.read(), strut3Force.read(), strut4Force.read());
-        ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t *)buffer, sizeof(&buffer));
+        //ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t *)buffer, sizeof(&buffer));
         for(int i=0; i <= 5; i++) 
         {
-            sprintf(buffer, "%1.2f\n", i+0.1);
+            sprintf(buffer, "%1.2f\n", sensors[i].read());
             ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t *)buffer, sizeof(&buffer));
         }
     }
+    */
 }
  
 void periodicCallback(void)
 {
     led1 = !led1;
+    triggerSensorPolling = true;
 }
  
 int main(void)
@@ -71,7 +80,6 @@
     
     led1 = 1;
     led2 = 0;
-    powerSwitch = 0;
     Ticker ticker;
     ticker.attach(periodicCallback, 1);
  
@@ -95,6 +103,20 @@
     uartServicePtr = &uartService;
  
     while (true) {
+        if(triggerSensorPolling /*&& ble.getGapState().connected*/ && uartServicePtr != NULL) {
+            triggerSensorPolling = false; 
+            
+            for(int i = 0; i < 6; i++) {
+                sensorValues[i] = sensors[i].read()*100;
+                if(sensorValues[i] == 100) sensorValues[i] = 99;
+            
+                sprintf(buffer, "%d%2.0f", i,sensorValues[i]);
+                ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), (uint8_t *)buffer, sizeof(&buffer));
+            }
+            DEBUG("trying to write values:\n%1.2f,%1.2f,%1.2f,%1.2f,%1.2f,%1.2f\n", strut1Force.read(), strut2Force.read(), strut3Force.read(), strut4Force.read(), seatForce.read(), cupBottomForce.read());
+
+            // do something
+        }
         ble.waitForEvent();
     }
 }