e

Dependencies:   BLE_API mbed nRF51822

Fork of UART_TEMPLATE by daniel veilleux

Committer:
tucanae47
Date:
Mon Mar 07 22:01:43 2016 +0000
Revision:
1:b4a5d773230e
Parent:
0:442c7a6f1978
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tucanae47 1:b4a5d773230e 1
Daniel Veilleux 0:442c7a6f1978 2
Daniel Veilleux 0:442c7a6f1978 3 #include "mbed.h"
Daniel Veilleux 0:442c7a6f1978 4 #include "BLEDevice.h"
Daniel Veilleux 0:442c7a6f1978 5
Daniel Veilleux 0:442c7a6f1978 6
tucanae47 1:b4a5d773230e 7 #define SENSOR_READ_INTERVAL_S (0.5F)
tucanae47 1:b4a5d773230e 8 #define ADV_INTERVAL_MS (1000UL)
tucanae47 1:b4a5d773230e 9 #define DEVICE_NAME ("SOYNORDIC") // This can be read AFTER connecting to the device.
tucanae47 1:b4a5d773230e 10 #define SHORT_NAME ("HACKDEMO") // Keep this short: max 8 chars if a 128bit UUID is also advertised.
Daniel Veilleux 0:442c7a6f1978 11
Daniel Veilleux 0:442c7a6f1978 12
tucanae47 1:b4a5d773230e 13 DigitalOut led1(LED1);
tucanae47 1:b4a5d773230e 14 DigitalOut led2(LED2);
tucanae47 1:b4a5d773230e 15 BLEDevice m_ble;
Daniel Veilleux 0:442c7a6f1978 16
Daniel Veilleux 0:442c7a6f1978 17
tucanae47 1:b4a5d773230e 18
tucanae47 1:b4a5d773230e 19
tucanae47 1:b4a5d773230e 20
Daniel Veilleux 0:442c7a6f1978 21
Daniel Veilleux 0:442c7a6f1978 22
Daniel Veilleux 0:442c7a6f1978 23 /**
Daniel Veilleux 0:442c7a6f1978 24 * This callback is scheduled to be called periodically via a low-priority interrupt.
Daniel Veilleux 0:442c7a6f1978 25 */
Daniel Veilleux 0:442c7a6f1978 26 void periodicCallback(void)
Daniel Veilleux 0:442c7a6f1978 27 {
tucanae47 1:b4a5d773230e 28 led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */
tucanae47 1:b4a5d773230e 29 led2 = !led2;
Daniel Veilleux 0:442c7a6f1978 30 }
Daniel Veilleux 0:442c7a6f1978 31
Daniel Veilleux 0:442c7a6f1978 32
Daniel Veilleux 0:442c7a6f1978 33
Daniel Veilleux 0:442c7a6f1978 34
Daniel Veilleux 0:442c7a6f1978 35 int main(void)
Daniel Veilleux 0:442c7a6f1978 36 {
Daniel Veilleux 0:442c7a6f1978 37 Ticker ticker;
Daniel Veilleux 0:442c7a6f1978 38
Daniel Veilleux 0:442c7a6f1978 39
tucanae47 1:b4a5d773230e 40
Daniel Veilleux 0:442c7a6f1978 41 ticker.attach(periodicCallback, SENSOR_READ_INTERVAL_S);
Daniel Veilleux 0:442c7a6f1978 42
Daniel Veilleux 0:442c7a6f1978 43 m_ble.init();
tucanae47 1:b4a5d773230e 44
Daniel Veilleux 0:442c7a6f1978 45 // Set the TX power in dBm units.
Daniel Veilleux 0:442c7a6f1978 46 // Possible values (in decreasing order): 4, 0, -4, -8, -12, -16, -20.
tucanae47 1:b4a5d773230e 47 m_ble.setTxPower(4);
tucanae47 1:b4a5d773230e 48
Daniel Veilleux 0:442c7a6f1978 49
Daniel Veilleux 0:442c7a6f1978 50 // Setup advertising (GAP stuff).
tucanae47 1:b4a5d773230e 51 m_ble.setDeviceName(DEVICE_NAME);
tucanae47 1:b4a5d773230e 52 m_ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
tucanae47 1:b4a5d773230e 53
Daniel Veilleux 0:442c7a6f1978 54 m_ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
Daniel Veilleux 0:442c7a6f1978 55
tucanae47 1:b4a5d773230e 56 m_ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
Daniel Veilleux 0:442c7a6f1978 57 (const uint8_t *)SHORT_NAME,
Daniel Veilleux 0:442c7a6f1978 58 (sizeof(SHORT_NAME) - 1));
tucanae47 1:b4a5d773230e 59
Daniel Veilleux 0:442c7a6f1978 60
tucanae47 1:b4a5d773230e 61
Daniel Veilleux 0:442c7a6f1978 62 m_ble.setAdvertisingInterval(Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(ADV_INTERVAL_MS));
Daniel Veilleux 0:442c7a6f1978 63 m_ble.startAdvertising();
Daniel Veilleux 0:442c7a6f1978 64
tucanae47 1:b4a5d773230e 65
Daniel Veilleux 0:442c7a6f1978 66 while (true) {
Daniel Veilleux 0:442c7a6f1978 67 m_ble.waitForEvent();
Daniel Veilleux 0:442c7a6f1978 68 }
Daniel Veilleux 0:442c7a6f1978 69 }