Ble for smart sOlutions

Dependencies:   Adafruit_WS2801

Committer:
kris@kris-X682X
Date:
Thu Jun 20 13:20:24 2019 +0200
Revision:
11:d6ed1437c2ee
Parent:
10:d845189d146e
Refactored

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kris@kris-X682X 6:ee9c86f06eae 1 //
kris@kris-X682X 6:ee9c86f06eae 2 // Created by kris on 20-4-19.
kris@kris-X682X 6:ee9c86f06eae 3 //
kris@kris-X682X 6:ee9c86f06eae 4
kris@kris-X682X 6:ee9c86f06eae 5 #ifndef SSS_BLE_BLEDEVICECENTRAL_H
kris@kris-X682X 6:ee9c86f06eae 6 #define SSS_BLE_BLEDEVICECENTRAL_H
kris@kris-X682X 6:ee9c86f06eae 7
kris@kris-X682X 6:ee9c86f06eae 8 #include <AdvertisingDataParser.h>
kris@kris-X682X 6:ee9c86f06eae 9 #include "BleDevice.h"
kris@kris-X682X 8:369b80cef5ae 10
kris@kris-X682X 8:369b80cef5ae 11
kris@kris-X682X 6:ee9c86f06eae 12 #include "list"
kris@kris-X682X 10:d845189d146e 13 #include "MyStripSingleton.h"
kris@kris-X682X 10:d845189d146e 14
kris@kris-X682X 6:ee9c86f06eae 15 class BleDeviceCentral : public BleDevice {
kris@kris-X682X 6:ee9c86f06eae 16 public:
kris@kris-X682X 6:ee9c86f06eae 17 BleDeviceCentral(BLE &ble, events::EventQueue &event_queue)
kris@kris-X682X 9:92d861703f96 18 : BleDevice(ble, event_queue) {
kris@kris-X682X 9:92d861703f96 19
kris@kris-X682X 9:92d861703f96 20 }
kris@kris-X682X 6:ee9c86f06eae 21 std::list<ble::address_t::byte_array_t> addresses ;
kris@kris-X682X 6:ee9c86f06eae 22
kris@kris-X682X 6:ee9c86f06eae 23 virtual void start()
kris@kris-X682X 6:ee9c86f06eae 24 {
kris@kris-X682X 8:369b80cef5ae 25 printf("[CENTRAL]\t Scan started\r\n");
kris@kris-X682X 10:d845189d146e 26 MyStripSingleton::getInstance()->resetCrawl();
kris@kris-X682X 6:ee9c86f06eae 27 ble::ScanParameters params;
kris@kris-X682X 6:ee9c86f06eae 28 ble_error_t error = _ble.gap().setScanParameters(params);
kris@kris-X682X 6:ee9c86f06eae 29
kris@kris-X682X 6:ee9c86f06eae 30 if (error) {
kris@kris-X682X 6:ee9c86f06eae 31 print_error(error, "Error in Gap::startScan %d\r\n");
kris@kris-X682X 6:ee9c86f06eae 32 return;
kris@kris-X682X 6:ee9c86f06eae 33 }
kris@kris-X682X 6:ee9c86f06eae 34 error = _ble.gap().startScan();
kris@kris-X682X 6:ee9c86f06eae 35
kris@kris-X682X 6:ee9c86f06eae 36 if (error) {
kris@kris-X682X 6:ee9c86f06eae 37 print_error(error, "Error in Gap::startScan %d\r\n");
kris@kris-X682X 6:ee9c86f06eae 38 return;
kris@kris-X682X 6:ee9c86f06eae 39 }
kris@kris-X682X 8:369b80cef5ae 40
kris@kris-X682X 6:ee9c86f06eae 41 }
kris@kris-X682X 6:ee9c86f06eae 42 virtual void stop(){
kris@kris-X682X 6:ee9c86f06eae 43 printf("[CENTRAL]\t Stopping \r\n");
kris@kris-X682X 10:d845189d146e 44 MyStripSingleton::getInstance()->resetColor();
kris@kris-X682X 8:369b80cef5ae 45
kris@kris-X682X 6:ee9c86f06eae 46 addresses.clear();
kris@kris-X682X 6:ee9c86f06eae 47 _ble.gap().stopScan();
kris@kris-X682X 6:ee9c86f06eae 48 if (_ble.hasInitialized()) {
kris@kris-X682X 6:ee9c86f06eae 49 _ble.shutdown();
kris@kris-X682X 6:ee9c86f06eae 50 }
kris@kris-X682X 6:ee9c86f06eae 51 }
kris@kris-X682X 6:ee9c86f06eae 52
kris@kris-X682X 8:369b80cef5ae 53 public:
kris@kris-X682X 6:ee9c86f06eae 54 /** Look at scan payload to find a peer device and connect to it */
kris@kris-X682X 10:d845189d146e 55 virtual void onAdvertisingReport(const ble::AdvertisingReportEvent &event);
kris@kris-X682X 6:ee9c86f06eae 56 };
kris@kris-X682X 6:ee9c86f06eae 57
kris@kris-X682X 6:ee9c86f06eae 58
kris@kris-X682X 6:ee9c86f06eae 59 #endif //SSS_BLE_BLEDEVICECENTRAL_H