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
krissl 0:fe5389573740 1 /* mbed Microcontroller Library
krissl 0:fe5389573740 2 * Copyright (c) 2006-2014 ARM Limited
krissl 0:fe5389573740 3 *
krissl 0:fe5389573740 4 * Licensed under the Apache License, Version 2.0 (the "License");
krissl 0:fe5389573740 5 * you may not use this file except in compliance with the License.
krissl 0:fe5389573740 6 * You may obtain a copy of the License at
krissl 0:fe5389573740 7 *
krissl 0:fe5389573740 8 * http://www.apache.org/licenses/LICENSE-2.0
krissl 0:fe5389573740 9 *
krissl 0:fe5389573740 10 * Unless required by applicable law or agreed to in writing, software
krissl 0:fe5389573740 11 * distributed under the License is distributed on an "AS IS" BASIS,
krissl 0:fe5389573740 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
krissl 0:fe5389573740 13 * See the License for the specific language governing permissions and
krissl 0:fe5389573740 14 * limitations under the License.
krissl 0:fe5389573740 15 */
krissl 0:fe5389573740 16
krissl 0:fe5389573740 17 #include <events/mbed_events.h>
krissl 0:fe5389573740 18 #include <mbed.h>
krissl 0:fe5389573740 19 #include "ble/BLE.h"
krissl 0:fe5389573740 20 #include "ble/Gap.h"
krissl 0:fe5389573740 21 #include "GattCallbackParamTypes.h"
krissl 1:9fc54848a198 22 #include "mbed.h"
krissl 1:9fc54848a198 23 #include "ColorService.h"
kris@kris-X682X 6:ee9c86f06eae 24 #include "BleDeviceCentral.h"
kris@kris-X682X 6:ee9c86f06eae 25 #include "BleDevicePeripheral.h"
kris@kris-X682X 10:d845189d146e 26 #include "MyStripSingleton.h"
kris@kris-X682X 6:ee9c86f06eae 27 #define MBED_CONF_PLATFORM_ERROR_FILENAME_CAPTURE_ENABLED true
kris@kris-X682X 10:d845189d146e 28 MyStripSingleton* MyStripSingleton::instance = 0;
kris@kris-X682X 6:ee9c86f06eae 29
kris@kris-X682X 10:d845189d146e 30 DigitalOut led1(LED1, 1);
krissl 0:fe5389573740 31
krissl 0:fe5389573740 32 static EventQueue eventQueue(/* event count */ 16 * EVENTS_EVENT_SIZE);
kris@kris-X682X 6:ee9c86f06eae 33
krissl 0:fe5389573740 34
krissl 0:fe5389573740 35 void blinkCallback(void)
krissl 0:fe5389573740 36 {
kris@kris-X682X 8:369b80cef5ae 37 //TODO: Every
krissl 0:fe5389573740 38 led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */
krissl 0:fe5389573740 39 BLE &ble = BLE::Instance();
kris@kris-X682X 6:ee9c86f06eae 40
kris@kris-X682X 6:ee9c86f06eae 41
krissl 0:fe5389573740 42 if (ble.gap().getState().connected) {
kris@kris-X682X 10:d845189d146e 43 /* Hier kan je nog iets doen wanneer je verbonden bent */
kris@kris-X682X 10:d845189d146e 44 // eventQueue.call(updateSensorValue);
kris@kris-X682X 10:d845189d146e 45
krissl 3:f594022fe519 46 } else {
kris@kris-X682X 6:ee9c86f06eae 47 ble.gap().startAdvertising();
kris@kris-X682X 6:ee9c86f06eae 48 printf("Stopped advertisement");
krissl 0:fe5389573740 49 }
krissl 0:fe5389573740 50 }
krissl 0:fe5389573740 51
krissl 0:fe5389573740 52 void printMacAddress()
krissl 0:fe5389573740 53 {
krissl 0:fe5389573740 54 /* Print out device MAC address to the console*/
krissl 0:fe5389573740 55 Gap::AddressType_t addr_type;
krissl 0:fe5389573740 56 Gap::Address_t address;
krissl 0:fe5389573740 57 BLE::Instance().gap().getAddress(&addr_type, address);
kris@kris-X682X 6:ee9c86f06eae 58 printf("DEVICE MAC ADDRESS: ");
krissl 0:fe5389573740 59 for (int i = 5; i >= 1; i--){
kris@kris-X682X 6:ee9c86f06eae 60 printf("%02x:", address[i]);
krissl 0:fe5389573740 61 }
kris@kris-X682X 6:ee9c86f06eae 62 printf("%02x\r\n", address[0]);
krissl 0:fe5389573740 63 }
krissl 0:fe5389573740 64
krissl 0:fe5389573740 65 /**
krissl 0:fe5389573740 66 * Callback triggered when the ble initialization process has finished
krissl 0:fe5389573740 67 */
krissl 0:fe5389573740 68 void bleInitComplete(BLE::InitializationCompleteCallbackContext *params)
krissl 0:fe5389573740 69 {
krissl 0:fe5389573740 70
krissl 0:fe5389573740 71 }
krissl 0:fe5389573740 72
krissl 3:f594022fe519 73
krissl 0:fe5389573740 74 void scheduleBleEventsProcessing(BLE::OnEventsToProcessCallbackContext* context) {
krissl 0:fe5389573740 75 BLE &ble = BLE::Instance();
krissl 3:f594022fe519 76 //TODO: Event handling; wel benieuwd naar wat er allemaal gebeurt
krissl 0:fe5389573740 77 eventQueue.call(Callback<void()>(&ble, &BLE::processEvents));
krissl 0:fe5389573740 78 }
krissl 0:fe5389573740 79
krissl 3:f594022fe519 80 uint32_t colorMaker(uint8_t r, uint8_t g, uint8_t b){
kris@kris-X682X 6:ee9c86f06eae 81 uint32_t c;
kris@kris-X682X 6:ee9c86f06eae 82 c = r;
kris@kris-X682X 6:ee9c86f06eae 83 c <<= 8;
kris@kris-X682X 6:ee9c86f06eae 84 c |= g;
kris@kris-X682X 6:ee9c86f06eae 85 c <<= 8;
kris@kris-X682X 6:ee9c86f06eae 86 c |= b;
kris@kris-X682X 6:ee9c86f06eae 87 return c;
krissl 3:f594022fe519 88 }
krissl 3:f594022fe519 89
kris@kris-X682X 8:369b80cef5ae 90
kris@kris-X682X 8:369b80cef5ae 91
krissl 0:fe5389573740 92 int main()
krissl 0:fe5389573740 93 {
kris@kris-X682X 6:ee9c86f06eae 94 BLE& ble = BLE::Instance();
kris@kris-X682X 6:ee9c86f06eae 95 events::EventQueue queue;
kris@kris-X682X 6:ee9c86f06eae 96 printf(" Is filename capture enabled? \t\t");
kris@kris-X682X 8:369b80cef5ae 97 #if MBED_CONF_PLATFORM_ERROR_FILENAME_CAPTURE_ENABLED
kris@kris-X682X 6:ee9c86f06eae 98 printf(" Enabled filename capture");
kris@kris-X682X 8:369b80cef5ae 99 #endif
kris@kris-X682X 6:ee9c86f06eae 100
kris@kris-X682X 7:9cda1b0f25ae 101 BleDevicePeripheral peripheral(ble, queue);
kris@kris-X682X 7:9cda1b0f25ae 102 BleDeviceCentral central(ble, queue);
kris@kris-X682X 10:d845189d146e 103 MyStripSingleton* inst = MyStripSingleton::getInstance();
kris@kris-X682X 10:d845189d146e 104 MyStripSingleton::getInstance()->colorWipe(1, 0x00FF00);
kris@kris-X682X 7:9cda1b0f25ae 105
kris@kris-X682X 10:d845189d146e 106 MyStripSingleton::getInstance()->blink(10, 2);
kris@kris-X682X 10:d845189d146e 107 MyStripSingleton::getInstance()->flash(1, 0xFFFF00);
kris@kris-X682X 6:ee9c86f06eae 108
kris@kris-X682X 6:ee9c86f06eae 109 while(1) {
kris@kris-X682X 6:ee9c86f06eae 110 printf("\r\n PERIPHERAL \r\n\r\n");
kris@kris-X682X 7:9cda1b0f25ae 111 peripheral.run(15000);
kris@kris-X682X 6:ee9c86f06eae 112 peripheral.stop();
kris@kris-X682X 6:ee9c86f06eae 113
kris@kris-X682X 6:ee9c86f06eae 114 printf("\r\n CENTRAL \r\n\r\n");
kris@kris-X682X 8:369b80cef5ae 115 central.run(10000);
kris@kris-X682X 6:ee9c86f06eae 116 central.stop();
kris@kris-X682X 6:ee9c86f06eae 117 }
krissl 0:fe5389573740 118 return 0;
krissl 0:fe5389573740 119 }
krissl 3:f594022fe519 120