Indoor positioning. Central unit.
Dependencies: aconno_SEGGER_RTT
tasks/tasks.cpp@2:1b85a28b1e68, 2018-03-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |