Basic BLE comm Control Led using On/Off Command

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_LoopbackUART by Bluetooth Low Energy

Files at this revision

API Documentation at this revision

Comitter:
adarsh5723
Date:
Mon Nov 10 03:54:49 2014 +0000
Parent:
12:51e2c29e3019
Commit message:
Complete Demo.; Added functionality to read LDR data, power on and off the lamp

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Sun Nov 09 23:51:54 2014 +0000
+++ b/main.cpp	Mon Nov 10 03:54:49 2014 +0000
@@ -32,20 +32,24 @@
 #define ON 1960
 #define OFF 40
 #define PULSE_WIDTH 2000
+#define OUTPUT_LENGTH 35
 
 BLEDevice  ble;
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
-DigitalOut pwm_out(P0_30);
+DigitalOut pwmOut(P0_30);
 
 AnalogIn ldr0(P0_1);
 AnalogIn ldr1(P0_2);
 AnalogIn ldr2(P0_3);
 AnalogIn ldr3(P0_4);
 
+int threshold = 0;
+
+char output[50] = "LDR0 = w x y z";
 
 UARTService *uartServicePtr;
-#define TIMER 1
+#define TIMER 0
 //Creating timer Instance
 
 Ticker ticker;
@@ -60,6 +64,27 @@
     ble.startAdvertising();
 }
 
+void getValuesofLDR()
+{
+    if (ldr0.read() < 0.7f)
+        output[7] = '0';
+    else
+        output[7] = '1';
+    if (ldr0.read() < 0.7f)
+        output[9] = '0';
+    else
+        output[9] = '1';
+    if (ldr0.read() < 0.7f)
+        output[11] = '0';
+    else
+        output[11] = '1';
+    if (ldr0.read() < 0.7f)
+        output[13] = '0';
+    else
+        output[13] = '1';
+ 
+}
+
 void onDataWritten(const GattCharacteristicWriteCBParams *params)
 {
     char *str = 0;
@@ -79,11 +104,32 @@
         *(str + count) = '\0';
         DEBUG("payload = %s\n\r",str);
         if (strncmp(str,"On",bytesRead) == 0)
+        {
             led2 = 1;
-        else
+            pwmOut = 1;
+            bytesRead = 7;
+            strncpy((char *)params->data,"Lamp On", bytesRead);
+        }    
+        else if (strncmp(str,"Off",bytesRead) == 0)
+        {
             led2 = 0;
-        free(str);    
-        strcpy((char *)params->data,"SPOPOPOSP");
+            pwmOut = 0;
+            bytesRead = 7;
+            strncpy((char *)params->data,"Lamp Off", bytesRead);
+        }
+        else if (strncmp(str,"Read",bytesRead) == 0)
+        {
+            bytesRead = 13;
+            getValuesofLDR();    
+            strncpy((char *)params->data,output,bytesRead);
+            
+        }
+        else
+        {
+            bytesRead = 14;
+            strncpy((char *)params->data,"Invalid Entry", bytesRead);
+        }    
+        free(str);
         ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), params->data, bytesRead);
     }
 }
@@ -113,12 +159,17 @@
 int main(void)
 {
     led1 = 1;
-    ticker.attach(periodicCallback, 0.000001f);
     DEBUG("Initialising the nRF51822\n\r");
+    //ticker.attach(periodicCallback, 0.00001f);
     ble.init();
+    
+    DEBUG("Initialising the nRF51822_1\n\r");
     ble.onDisconnection(disconnectionCallback);
+    
+    DEBUG("Initialising the nRF51822_2\n\r");
     ble.onDataWritten(onDataWritten);
 
+    DEBUG("Initialising the nRF51822_3\n\r");
     /* setup advertising */
     ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
     ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
@@ -133,6 +184,7 @@
     UARTService uartService(ble);
     uartServicePtr = &uartService;
 
+    DEBUG("Initialising the nRF51822_4\n\r");
     while (true) {
         ble.waitForEvent();
     }