Ble for smart sOlutions

Dependencies:   Adafruit_WS2801

Committer:
kris@kris-X682X
Date:
Fri Jun 14 10:24:57 2019 +0200
Revision:
10:d845189d146e
Parent:
9:92d861703f96
Child:
11:d6ed1437c2ee
WS2801 working, fancy lightshows

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 //
kris@kris-X682X 6:ee9c86f06eae 35 // /* start scanning, results will be handled by onAdvertisingReport */
kris@kris-X682X 6:ee9c86f06eae 36 error = _ble.gap().startScan();
kris@kris-X682X 6:ee9c86f06eae 37
kris@kris-X682X 6:ee9c86f06eae 38 if (error) {
kris@kris-X682X 6:ee9c86f06eae 39 print_error(error, "Error in Gap::startScan %d\r\n");
kris@kris-X682X 6:ee9c86f06eae 40 return;
kris@kris-X682X 6:ee9c86f06eae 41 }
kris@kris-X682X 8:369b80cef5ae 42
kris@kris-X682X 6:ee9c86f06eae 43 }
kris@kris-X682X 6:ee9c86f06eae 44 virtual void stop(){
kris@kris-X682X 6:ee9c86f06eae 45 printf("[CENTRAL]\t Stopping \r\n");
kris@kris-X682X 10:d845189d146e 46 MyStripSingleton::getInstance()->resetColor();
kris@kris-X682X 8:369b80cef5ae 47
kris@kris-X682X 6:ee9c86f06eae 48 addresses.clear();
kris@kris-X682X 6:ee9c86f06eae 49 _ble.gap().stopScan();
kris@kris-X682X 6:ee9c86f06eae 50 if (_ble.hasInitialized()) {
kris@kris-X682X 6:ee9c86f06eae 51 _ble.shutdown();
kris@kris-X682X 6:ee9c86f06eae 52 }
kris@kris-X682X 6:ee9c86f06eae 53 }
kris@kris-X682X 6:ee9c86f06eae 54
kris@kris-X682X 8:369b80cef5ae 55 public:
kris@kris-X682X 6:ee9c86f06eae 56 /** Look at scan payload to find a peer device and connect to it */
kris@kris-X682X 10:d845189d146e 57 virtual void onAdvertisingReport(const ble::AdvertisingReportEvent &event);
kris@kris-X682X 6:ee9c86f06eae 58 };
kris@kris-X682X 6:ee9c86f06eae 59
kris@kris-X682X 6:ee9c86f06eae 60
kris@kris-X682X 6:ee9c86f06eae 61 #endif //SSS_BLE_BLEDEVICECENTRAL_H