Indoor positioning. Central unit.

Dependencies:   aconno_SEGGER_RTT

Committer:
dbartolovic
Date:
Wed Mar 07 11:43:39 2018 +0000
Revision:
2:1b85a28b1e68
Parent:
1:2bdc506d8baa
Central module now sends messages as soon as it receives them.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jurica238814 0:07a75b2fae14 1 /*
jurica238814 0:07a75b2fae14 2 *
jurica238814 0:07a75b2fae14 3 *
jurica238814 0:07a75b2fae14 4 */
jurica238814 0:07a75b2fae14 5
jurica238814 0:07a75b2fae14 6 #include "tasks.h"
jurica238814 0:07a75b2fae14 7 #include "aconno_ble.h"
jurica238814 0:07a75b2fae14 8
jurica238814 0:07a75b2fae14 9 #if DEBUG_LED
jurica238814 0:07a75b2fae14 10 extern DigitalOut advLed;
jurica238814 0:07a75b2fae14 11 extern DigitalOut scanLed;
jurica238814 0:07a75b2fae14 12 extern DigitalOut periodicLed;
jurica238814 0:07a75b2fae14 13 #endif
jurica238814 0:07a75b2fae14 14
dbartolovic 1:2bdc506d8baa 15
dbartolovic 1:2bdc506d8baa 16 // BLE global data
dbartolovic 1:2bdc506d8baa 17 GapAdvertisingData adv_data = GapAdvertisingData();
dbartolovic 2:1b85a28b1e68 18 uint16_t adv_cntr = 0;
dbartolovic 1:2bdc506d8baa 19
dbartolovic 1:2bdc506d8baa 20
jurica238814 0:07a75b2fae14 21 void periodicCallback(BLE *ble)
jurica238814 0:07a75b2fae14 22 {
jurica238814 0:07a75b2fae14 23 while(true)
jurica238814 0:07a75b2fae14 24 {
jurica238814 0:07a75b2fae14 25 ble->waitForEvent();
jurica238814 0:07a75b2fae14 26 #if DEBUG_LED
jurica238814 0:07a75b2fae14 27 periodicLed = !periodicLed;
jurica238814 0:07a75b2fae14 28 #endif
jurica238814 0:07a75b2fae14 29 wait(PERIODIC_CALLBACK_S);
jurica238814 0:07a75b2fae14 30 }
jurica238814 0:07a75b2fae14 31 }
jurica238814 0:07a75b2fae14 32
dbartolovic 2:1b85a28b1e68 33 void bleUpdateData(BLE *ble)
dbartolovic 2:1b85a28b1e68 34 {
dbartolovic 2:1b85a28b1e68 35 while (true)
dbartolovic 2:1b85a28b1e68 36 {
dbartolovic 2:1b85a28b1e68 37 Thread::signal_wait(UPDATE_DATA_SIG);
dbartolovic 2:1b85a28b1e68 38 Thread::signal_clr(UPDATE_DATA_SIG);
dbartolovic 2:1b85a28b1e68 39
dbartolovic 2:1b85a28b1e68 40 while (rssi_buff.cntr != 0)
dbartolovic 2:1b85a28b1e68 41 {
dbartolovic 2:1b85a28b1e68 42 memcpy(MSD, uuid, sizeof(uuid));
dbartolovic 2:1b85a28b1e68 43 memcpy(MSD + sizeof(uuid), &(rssi_buff.pairs[rssi_buff.cntr-1]), sizeof(rssi_buff.pairs[0]));
dbartolovic 2:1b85a28b1e68 44
dbartolovic 2:1b85a28b1e68 45 rssi_buff.cntr--;
dbartolovic 2:1b85a28b1e68 46
dbartolovic 2:1b85a28b1e68 47 adv_data = ble->getAdvertisingData();
dbartolovic 2:1b85a28b1e68 48 adv_data.updateData(adv_data.MANUFACTURER_SPECIFIC_DATA, (uint8_t*)MSD, MSD_SIZE_b);
dbartolovic 2:1b85a28b1e68 49 ble->setAdvertisingData(adv_data);
dbartolovic 2:1b85a28b1e68 50
dbartolovic 2:1b85a28b1e68 51 wait_ms(ADV_INTERVAL_MS*2);
dbartolovic 2:1b85a28b1e68 52 }
dbartolovic 2:1b85a28b1e68 53 }
dbartolovic 2:1b85a28b1e68 54 }
dbartolovic 2:1b85a28b1e68 55
jurica238814 0:07a75b2fae14 56 void bleStartAdvertising(BLE *ble)
jurica238814 0:07a75b2fae14 57 {
jurica238814 0:07a75b2fae14 58 while(true)
jurica238814 0:07a75b2fae14 59 {
dbartolovic 2:1b85a28b1e68 60 //ble->gap().startAdvertising();
dbartolovic 2:1b85a28b1e68 61 //printf("Advertisement started.\r\n");
jurica238814 0:07a75b2fae14 62 #if DEBUG_LED
jurica238814 0:07a75b2fae14 63 advLed = 0;
jurica238814 0:07a75b2fae14 64 #endif
jurica238814 0:07a75b2fae14 65 wait(ADVERTISING_DURATION_S);
jurica238814 0:07a75b2fae14 66 wait_ms(1000);
dbartolovic 2:1b85a28b1e68 67 //ble->gap().stopAdvertising();
dbartolovic 2:1b85a28b1e68 68 //printf("Advertisement stopped.\r\n");
jurica238814 0:07a75b2fae14 69 #if DEBUG_LED
jurica238814 0:07a75b2fae14 70 advLed = 1;
jurica238814 0:07a75b2fae14 71 #endif
jurica238814 0:07a75b2fae14 72 wait(BLE_SLEEP_DURATION_S);
jurica238814 0:07a75b2fae14 73 wait_ms(1000);
jurica238814 0:07a75b2fae14 74 }
jurica238814 0:07a75b2fae14 75 }
jurica238814 0:07a75b2fae14 76
jurica238814 0:07a75b2fae14 77 void bleStartScanning(BLE *ble)
jurica238814 0:07a75b2fae14 78 {
jurica238814 0:07a75b2fae14 79 while(true)
jurica238814 0:07a75b2fae14 80 {
dbartolovic 2:1b85a28b1e68 81 ble->gap().setScanParams(300, 250);
jurica238814 0:07a75b2fae14 82 ble->gap().startScan(advertisementCallback);
jurica238814 0:07a75b2fae14 83 Thread::signal_wait(0x00023456);
jurica238814 0:07a75b2fae14 84 //Thread::signal_clr(ACC_INT_SIG);
jurica238814 0:07a75b2fae14 85 //bleT.signal_set(DISABLE_BLE_SIG);
jurica238814 0:07a75b2fae14 86 }
jurica238814 0:07a75b2fae14 87 }