e

Dependencies:   BLE_API mbed nRF51822

Fork of UART_TEMPLATE by daniel veilleux

Files at this revision

API Documentation at this revision

Comitter:
tucanae47
Date:
Mon Mar 07 22:01:43 2016 +0000
Parent:
0:442c7a6f1978
Commit message:
a

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Mon Dec 15 21:05:18 2014 -0800
+++ b/main.cpp	Mon Mar 07 22:01:43 2016 +0000
@@ -1,113 +1,23 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+
 
 #include "mbed.h"
 #include "BLEDevice.h"
-#include "UARTService.h"
-#include "nrf_temp.h"
-
-#define MAX_REPLY_LEN           (UARTService::BLE_UART_SERVICE_MAX_DATA_LEN)
-#define SENSOR_READ_INTERVAL_S  (0.5F) 
-#define ADV_INTERVAL_MS         (1000UL)
-#define UART_BAUD_RATE          (19200UL)
-#define DEVICE_NAME             ("DEMO SENSOR") // This can be read AFTER connecting to the device.
-#define SHORT_NAME              ("HACKDEMO")    // Keep this short: max 8 chars if a 128bit UUID is also advertised.
-
-#define DEBUG(...)              { m_serial_port.printf(__VA_ARGS__); }
 
 
-BLEDevice   m_ble;
-Serial      m_serial_port(p9, p11);  // TX pin, RX pin
-DigitalOut  m_cmd_led(LED1);
-DigitalOut  m_error_led(LED2);
-AnalogIn    m_analog_in(p1);
-uint16_t    m_analog_in_value;
-UARTService *m_uart_service_ptr;
-
-
-/**
- * This callback is used whenever a disconnection occurs.
- */
-void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
-{
-    switch (reason) {
-    case Gap::REMOTE_USER_TERMINATED_CONNECTION:
-        DEBUG("Disconnected (REMOTE_USER_TERMINATED_CONNECTION)\n\r");
-        break;
-    case Gap::LOCAL_HOST_TERMINATED_CONNECTION:
-        DEBUG("Disconnected (LOCAL_HOST_TERMINATED_CONNECTION)\n\r");
-        break;
-    case Gap::CONN_INTERVAL_UNACCEPTABLE:
-        DEBUG("Disconnected (CONN_INTERVAL_UNACCEPTABLE)\n\r");
-        break;
-    }
-
-    DEBUG("Restarting the advertising process\n\r");
-    m_ble.startAdvertising();
-}
+#define SENSOR_READ_INTERVAL_S  (0.5F) 
+#define ADV_INTERVAL_MS         (1000UL)
+#define DEVICE_NAME             ("SOYNORDIC") // This can be read AFTER connecting to the device.
+#define SHORT_NAME              ("HACKDEMO")    // Keep this short: max 8 chars if a 128bit UUID is also advertised.
 
 
-/**
- * This callback is used whenever the host writes data to one of our GATT characteristics.
- */
-void dataWrittenCallback(const GattCharacteristicWriteCBParams *params)
-{
-    // Ensure that initialization is finished and the host has written to the TX characteristic.
-    if ((m_uart_service_ptr != NULL) && (params->charHandle == m_uart_service_ptr->getTXCharacteristicHandle())) {
-        uint8_t  buf[MAX_REPLY_LEN];
-        uint32_t len = 0;
-
-        if (1 == params->len) {
-            switch (params->data[0]) {
-            case '0':
-                m_cmd_led = 0;
-                len = snprintf((char*) buf, MAX_REPLY_LEN, "OK");
-                break;
-            case '1':
-                m_cmd_led = 1;
-                len = snprintf((char*) buf, MAX_REPLY_LEN, "OK");
-                break;
-            case 'a':
-                len = snprintf((char*) buf, MAX_REPLY_LEN, "%d", m_analog_in_value);
-                break;
-            default:
-                len = snprintf((char*) buf, MAX_REPLY_LEN, "ERROR: Unknown char");
-                break;
-            }
-        }
-        else
-        {
-            len = snprintf((char*) buf, MAX_REPLY_LEN, "ERROR: Invalid len");
-        }
-
-        m_ble.updateCharacteristicValue(m_uart_service_ptr->getRXCharacteristicHandle(), buf, len);
-
-        DEBUG("%d bytes received from host\n\r", params->len);
-    }
-}
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+BLEDevice   m_ble;
 
 
-/**
- * This callback is used whenever a write to a GATT characteristic causes data to be sent to the host.
- */
-void dataSentCallback(unsigned count)
-{
-    // NOTE: The count always seems to be 1 regardless of data.
-    DEBUG("%d bytes sent to host\n\r", count);
-}
+
+
+
 
 
 /**
@@ -115,78 +25,44 @@
  */
 void periodicCallback(void)
 {
-    m_analog_in_value = m_analog_in.read_u16();
+    led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */
+    led2 = !led2;
 }
 
 
-void error(ble_error_t err, uint32_t line)
-{
-    m_error_led = 1;
-    DEBUG("Error %d on line number %d\n\r", err, line);
-}
 
 
 int main(void)
 {
-    ble_error_t err;
     Ticker      ticker;
 
-    m_serial_port.baud(UART_BAUD_RATE);
 
-    DEBUG("Initialising\n\r");
-
-    m_cmd_led      = 0;
-    m_error_led    = 0;
-    m_analog_in_value    = 0;
-
+  
     ticker.attach(periodicCallback, SENSOR_READ_INTERVAL_S);
 
     m_ble.init();
-    m_ble.onDisconnection(disconnectionCallback);
-    m_ble.onDataWritten(dataWrittenCallback);
-    m_ble.onDataSent(dataSentCallback);
-
+  
     // Set the TX power in dBm units.
     // Possible values (in decreasing order): 4, 0, -4, -8, -12, -16, -20.
-    err = m_ble.setTxPower(4);
-    if (BLE_ERROR_NONE != err) {
-        error(err, __LINE__);
-    }
+    m_ble.setTxPower(4);
+   
 
     // Setup advertising (GAP stuff).
-    err = m_ble.setDeviceName(DEVICE_NAME);
-    if (BLE_ERROR_NONE != err) {
-        error(err, __LINE__);
-    }
-
-    err = m_ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
-    if (BLE_ERROR_NONE != err) {
-        error(err, __LINE__);
-    }
-
+    m_ble.setDeviceName(DEVICE_NAME);
+    m_ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
+    
     m_ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
 
-    err = m_ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
+    m_ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
                                                 (const uint8_t *)SHORT_NAME,
                                                 (sizeof(SHORT_NAME) - 1));
-    if (BLE_ERROR_NONE != err) {
-        error(err, __LINE__);
-    }
+   
 
-    err = m_ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,
-                                                (const uint8_t *)UARTServiceUUID_reversed,
-                                                sizeof(UARTServiceUUID_reversed));
-    if (BLE_ERROR_NONE != err) {
-        error(err, __LINE__);
-    }
-
+ 
     m_ble.setAdvertisingInterval(Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(ADV_INTERVAL_MS));
     m_ble.startAdvertising();
 
-    // Create a UARTService object (GATT stuff).
-    UARTService uartService(m_ble);
-    m_uart_service_ptr = &uartService;
-
+  
     while (true) {
         m_ble.waitForEvent();
     }