Kris Scholte Lubberink
/
SSS_Ble
Ble for smart sOlutions
Diff: source/main.cpp
- Revision:
- 3:f594022fe519
- Parent:
- 1:9fc54848a198
- Child:
- 6:ee9c86f06eae
--- a/source/main.cpp Mon Mar 25 19:02:54 2019 +0000 +++ b/source/main.cpp Sat Apr 20 11:02:35 2019 +0000 @@ -20,38 +20,80 @@ #include "ble/Gap.h" #include "GattCallbackParamTypes.h" #include "mbed.h" +#include "Adafruit_WS2801.h" + +#define STRIP_LENGTH 20 +static Adafruit_WS2801 mystrip(STRIP_LENGTH, p26,p27, WS2801_RGB); #include "ColorService.h" -Serial pc(USBTX, USBRX); +//Serial pc(USBTX, USBRX); DigitalOut led1(LED1, 1); const static char DEVICE_NAME[] = "SSS-Wearable"; static const uint16_t uuid16_list[] = {0xF0C0FF}; + +int rainbow[] = {0xff00ff,0xff00cc,0xff0099,0xff0066,0xff0033,0xff0000,0xff3300,0xff6600, + 0xff9900,0xffcc00,0xffff00,0xccff00,0x99ff00,0x66ff00,0x33ff00,0x00ff00, + 0x00ff33,0x00ff66,0x00ff99,0x00ffcc}; + static ColorService* colorServicePtr; static EventQueue eventQueue(/* event count */ 16 * EVENTS_EVENT_SIZE); - +void discoveryCallback(const Gap::AdvertisementCallbackParams_t *params) +{ +} void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) { - BLE::Instance().gap().startAdvertising(); + pc.printf("Found a device"); } void connectionCallback(const Gap::ConnectionCallbackParams_t *params) { pc.printf("\r\n *******Got connection****** \r\n"); } void updateSensorValue() { - pc.printf("Right now, i should update sensor value. This runs only during connection \r\n"); +// pc.printf("Right now, i should update sensor value. This runs only during connection \r\n"); +// colorServicePtr->updateColor((int[]){16711680, 16711682, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680}); } void blinkCallback(void) { + //TODO: Every led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */ - BLE &ble = BLE::Instance(); if (ble.gap().getState().connected) { eventQueue.call(updateSensorValue); + } else { + ble.gap().startAdvertising(); +// wait_ms(20); +// ble.gap().stopAdvertising(); + pc.printf("Stopped advertisement"); + +// ble::ScanParameters scan_params; +// scan_params.setOwnAddressType(ble::own_address_type_t::RANDOM); + +// ble_error_t error = ble.gap().setScanParameters(scan_params); +// ble.gap().setScanParameters(scan_params); + +// if (error) { +// pc.printf("Error caused by Gap::setScanParameters\r\n"); +// pc.printf("%d", error); +// return; +// } +// ble_error_t error = ble.gap().startScan(ble::scan_duration_t(100)); + +// if (error) { +// pc.printf("Error caused by Gap::startScan\r\n"); +// return; +// } + +// printf("Scanning started\r\n"); + + +// iBeaconStartScan(); +// wait(130); +// ble.gap().stopScan(); } } @@ -106,29 +148,43 @@ ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *) DEVICE_NAME, sizeof(DEVICE_NAME)); // ble.gattServer().onDataRead(blinkCallback); ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); - ble.gap().setAdvertisingInterval(1000); /* 1000ms */ - pc.printf("Advertising"); - ble.gap().startAdvertising(); - + ble.gap().setAdvertisingInterval(150); /* 1000ms */ + pc.printf("Set up BLE \r\n"); printMacAddress(); } + void scheduleBleEventsProcessing(BLE::OnEventsToProcessCallbackContext* context) { BLE &ble = BLE::Instance(); + //TODO: Event handling; wel benieuwd naar wat er allemaal gebeurt + eventQueue.call(Callback<void()>(&ble, &BLE::processEvents)); } +uint32_t colorMaker(uint8_t r, uint8_t g, uint8_t b){ + uint32_t c; + c = r; + c <<= 8; + c |= g; + c <<= 8; + c |= b; + return c; +} + int main() { pc.baud (115200); - eventQueue.call_every(500, blinkCallback); + eventQueue.call_every(150, blinkCallback); BLE &ble = BLE::Instance(); ble.onEventsToProcess(scheduleBleEventsProcessing); ble.init(bleInitComplete); - + mystrip.begin(); + mystrip.show(); + + colorServicePtr->updateColor((int[]){16711680, 16711682, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680}); eventQueue.dispatch_forever(); - return 0; } +