DesignForAmputee hw 5 project

Dependencies:   mbed BLE_API nRF51822

Revision:
1:dbfe14952cdc
Parent:
0:6a0d0bc31c4c
Child:
3:436ef162bf2d
--- a/main.cpp	Mon Nov 03 21:55:38 2014 +0000
+++ b/main.cpp	Thu Nov 06 05:29:21 2014 +0000
@@ -1,21 +1,70 @@
 #include "mbed.h"
-
-DigitalOut myled(LED1);
-DigitalOut power(A0);
-
-AnalogIn tempPin(A1);
-float temp;
-Serial pc(USBTX, USBRX);
-
-
-int main() {
-    while(1) {
-        myled = 1;
-        wait(0.2);
-        myled = 0;
-        wait(0.2);
-        power = 1;
-        temp = tempPin.read();
-        pc.printf("%f\n",temp);
+#include "BLEDevice.h"
+ 
+#include "UARTService.h"
+ 
+#define NEED_CONSOLE_OUTPUT 0 /* Set this if you need debug messages on the console;
+                               * it will have an impact on code-size and power consumption. */
+ 
+#if NEED_CONSOLE_OUTPUT
+#define DEBUG(...) { printf(__VA_ARGS__); }
+#else
+#define DEBUG(...) /* nothing */
+#endif /* #if NEED_CONSOLE_OUTPUT */
+ 
+BLEDevice  ble;
+DigitalOut led1(LED1);
+ 
+UARTService *uartServicePtr;
+ 
+void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
+{
+    DEBUG("Disconnected!\n\r");
+    DEBUG("Restarting the advertising process\n\r");
+    ble.startAdvertising();
+}
+ 
+void onDataWritten(const GattCharacteristicWriteCBParams *params)
+{
+    if ((uartServicePtr != NULL) && (params->charHandle == uartServicePtr->getTXCharacteristicHandle())) {
+        uint16_t bytesRead = params->len;
+        DEBUG("received %u bytes\n\r", bytesRead);
+        ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), params->data, bytesRead);
     }
 }
+ 
+void periodicCallback(void)
+{
+    led1 = !led1;
+}
+ 
+int main(void)
+{
+    led1 = 1;
+    Ticker ticker;
+    ticker.attach(periodicCallback, 1);
+ 
+    DEBUG("Initialising the nRF51822\n\r");
+    ble.init();
+    ble.onDisconnection(disconnectionCallback);
+    ble.onDataWritten(onDataWritten);
+ 
+    /* setup advertising */
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
+    ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
+                                     (const uint8_t *)"pgao", sizeof("pgao") - 1);
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,
+                                     (const uint8_t *)UARTServiceUUID_reversed, sizeof(UARTServiceUUID_reversed));
+ 
+    ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
+    ble.startAdvertising();
+ 
+    UARTService uartService(ble);
+    uartServicePtr = &uartService;
+ 
+    while (true) {
+        ble.waitForEvent();
+    }
+}
+ 
\ No newline at end of file