Kris Scholte Lubberink
/
SSS_Ble
Ble for smart sOlutions
Diff: source/main.cpp
- Revision:
- 6:ee9c86f06eae
- Parent:
- 3:f594022fe519
- Child:
- 7:9cda1b0f25ae
diff -r 94adaf1f8d51 -r ee9c86f06eae source/main.cpp --- a/source/main.cpp Sat Apr 20 11:04:45 2019 +0000 +++ b/source/main.cpp Mon May 20 09:55:38 2019 +0200 @@ -20,40 +20,28 @@ #include "ble/Gap.h" #include "GattCallbackParamTypes.h" #include "mbed.h" -#include "Adafruit_WS2801.h" +#include "Adafruit_WS2801/Adafruit_WS2801.h" -#define STRIP_LENGTH 20 -static Adafruit_WS2801 mystrip(STRIP_LENGTH, p26,p27, WS2801_RGB); #include "ColorService.h" - -//Serial pc(USBTX, USBRX); - +#include "BleDeviceCentral.h" +#include "BleDevicePeripheral.h" +#define MBED_CONF_PLATFORM_ERROR_FILENAME_CAPTURE_ENABLED true DigitalOut led1(LED1, 1); -const static char DEVICE_NAME[] = "SSS-Wearable"; +//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 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) -{ - 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"); +// 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}); } @@ -62,60 +50,27 @@ //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(); + ble.gap().startAdvertising(); + printf("Stopped advertisement"); } } -/** - * This function is called when the ble initialization process has failled - */ -void onBleInitError(BLE &ble, ble_error_t error) -{ - /* Initialization error handling should go here */ -} - void printMacAddress() { /* Print out device MAC address to the console*/ Gap::AddressType_t addr_type; Gap::Address_t address; BLE::Instance().gap().getAddress(&addr_type, address); - pc.printf("DEVICE MAC ADDRESS: "); + printf("DEVICE MAC ADDRESS: "); for (int i = 5; i >= 1; i--){ - pc.printf("%02x:", address[i]); + printf("%02x:", address[i]); } - pc.printf("%02x\r\n", address[0]); + printf("%02x\r\n", address[0]); } /** @@ -123,68 +78,56 @@ */ void bleInitComplete(BLE::InitializationCompleteCallbackContext *params) { - BLE& ble = params->ble; - ble_error_t error = params->error; - if (error != BLE_ERROR_NONE) { - /* In case of error, forward the error handling to onBleInitError */ - onBleInitError(ble, error); - return; - } - - /* Ensure that it is the default instance of BLE */ - if(ble.getInstanceID() != BLE::DEFAULT_INSTANCE) { - return; - } - - ble.gap().onDisconnection(disconnectionCallback); - ble.gap().onConnection(connectionCallback); - /* Setup primary service */ - colorServicePtr = new ColorService(ble); - - /* Setup advertising */ - ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); - ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *) uuid16_list, sizeof(uuid16_list)); - 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(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; + uint32_t c; + c = r; + c <<= 8; + c |= g; + c <<= 8; + c |= b; + return c; } int main() { - pc.baud (115200); + printf("\r\n CENTRAL \r\n\r\n"); - eventQueue.call_every(150, blinkCallback); + //TODO: Make +// mystrip.begin(); +// mystrip.show(); +// colorServicePtr->updateColor(rainbow);//(int[]){16711680, 16711682, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680, 16711680}); + + BLE& ble = BLE::Instance(); + events::EventQueue queue; + printf(" Is filename capture enabled? \t\t"); - 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(); +#if MBED_CONF_PLATFORM_ERROR_FILENAME_CAPTURE_ENABLED + printf(" Enabled filename capture"); +#endif + + + while(1) { + printf("\r\n PERIPHERAL \r\n\r\n"); + BleDevicePeripheral peripheral(ble, queue); + peripheral.run(60000); + peripheral.stop(); + + printf("\r\n CENTRAL \r\n\r\n"); + BleDeviceCentral central(ble, queue); + central.run(5000); + central.stop(); + + } return 0; }