se

Dependencies:   SDFileSystem circular_buffer MPU6050 SoftSerial

Committer:
OsmanKameric
Date:
Tue Jan 10 08:10:29 2017 +0000
Revision:
0:a4de55cab4e2
Child:
1:2cc1c9a45be7
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
OsmanKameric 0:a4de55cab4e2 1 #include <events/mbed_events.h>
OsmanKameric 0:a4de55cab4e2 2 #include <mbed.h>
OsmanKameric 0:a4de55cab4e2 3 #include "ble/BLE.h"
OsmanKameric 0:a4de55cab4e2 4 #include "ble/Gap.h"
OsmanKameric 0:a4de55cab4e2 5 #include "ble/services/BatteryService.h"
OsmanKameric 0:a4de55cab4e2 6 #include "MPU6050.h"
OsmanKameric 0:a4de55cab4e2 7 #include "MPUService.h"
OsmanKameric 0:a4de55cab4e2 8
OsmanKameric 0:a4de55cab4e2 9 DigitalOut alivenessLED(LED1, 0);
OsmanKameric 0:a4de55cab4e2 10 DigitalOut actuatedLED(LED2, 0);
OsmanKameric 0:a4de55cab4e2 11 Serial pc(p6, p8);
OsmanKameric 0:a4de55cab4e2 12 MPU6050 mpu6050;
OsmanKameric 0:a4de55cab4e2 13 static MPUService *mpuServicePtr;
OsmanKameric 0:a4de55cab4e2 14 static float x =0.0;
OsmanKameric 0:a4de55cab4e2 15 const static char DEVICE_NAME[] = "MPU";
OsmanKameric 0:a4de55cab4e2 16 static const uint16_t uuid16_list[] = {MPUService::MPU_SERVICE_UUID};
OsmanKameric 0:a4de55cab4e2 17 static EventQueue eventQueue(/* event count */ 10 * /* event size */ 32);
OsmanKameric 0:a4de55cab4e2 18 //InterruptIn button(BUTTON1);
OsmanKameric 0:a4de55cab4e2 19
OsmanKameric 0:a4de55cab4e2 20 void scheduleBleEventsProcessing(BLE::OnEventsToProcessCallbackContext* context)
OsmanKameric 0:a4de55cab4e2 21 {
OsmanKameric 0:a4de55cab4e2 22 BLE& ble = BLE::Instance();
OsmanKameric 0:a4de55cab4e2 23 eventQueue.call(Callback<void()>(&ble, &BLE::processEvents));
OsmanKameric 0:a4de55cab4e2 24 }
OsmanKameric 0:a4de55cab4e2 25
OsmanKameric 0:a4de55cab4e2 26 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
OsmanKameric 0:a4de55cab4e2 27 {
OsmanKameric 0:a4de55cab4e2 28 (void) params;
OsmanKameric 0:a4de55cab4e2 29 BLE::Instance().gap().startAdvertising();
OsmanKameric 0:a4de55cab4e2 30 }
OsmanKameric 0:a4de55cab4e2 31 void onBleInitError(BLE &ble, ble_error_t error)
OsmanKameric 0:a4de55cab4e2 32 {
OsmanKameric 0:a4de55cab4e2 33 /* Initialization error handling should go here */
OsmanKameric 0:a4de55cab4e2 34 }
OsmanKameric 0:a4de55cab4e2 35 void updateSensorValue() {
OsmanKameric 0:a4de55cab4e2 36 x=x+0.1;
OsmanKameric 0:a4de55cab4e2 37 alivenessLED = !alivenessLED;
OsmanKameric 0:a4de55cab4e2 38 mpuServicePtr->updateSensorValue(x);
OsmanKameric 0:a4de55cab4e2 39 }
OsmanKameric 0:a4de55cab4e2 40 void periodicCallback(void)
OsmanKameric 0:a4de55cab4e2 41 {
OsmanKameric 0:a4de55cab4e2 42 if (BLE::Instance().getGapState().connected) {
OsmanKameric 0:a4de55cab4e2 43 eventQueue.call(updateSensorValue);
OsmanKameric 0:a4de55cab4e2 44 }
OsmanKameric 0:a4de55cab4e2 45 }
OsmanKameric 0:a4de55cab4e2 46 void bleInitComplete(BLE::InitializationCompleteCallbackContext* params)
OsmanKameric 0:a4de55cab4e2 47 {
OsmanKameric 0:a4de55cab4e2 48 BLE& ble = params->ble;
OsmanKameric 0:a4de55cab4e2 49 ble_error_t error = params->error;
OsmanKameric 0:a4de55cab4e2 50
OsmanKameric 0:a4de55cab4e2 51 if (error != BLE_ERROR_NONE) {
OsmanKameric 0:a4de55cab4e2 52 /* In case of error, forward the error handling to onBleInitError */
OsmanKameric 0:a4de55cab4e2 53 onBleInitError(ble, error);
OsmanKameric 0:a4de55cab4e2 54 return;
OsmanKameric 0:a4de55cab4e2 55 }
OsmanKameric 0:a4de55cab4e2 56
OsmanKameric 0:a4de55cab4e2 57 /* Ensure that it is the default instance of BLE */
OsmanKameric 0:a4de55cab4e2 58 if (ble.getInstanceID() != BLE::DEFAULT_INSTANCE) {
OsmanKameric 0:a4de55cab4e2 59 return;
OsmanKameric 0:a4de55cab4e2 60 }
OsmanKameric 0:a4de55cab4e2 61 ble.gap().onDisconnection(disconnectionCallback);
OsmanKameric 0:a4de55cab4e2 62 mpuServicePtr = new MPUService(ble, x);
OsmanKameric 0:a4de55cab4e2 63
OsmanKameric 0:a4de55cab4e2 64 /* setup advertising */
OsmanKameric 0:a4de55cab4e2 65 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
OsmanKameric 0:a4de55cab4e2 66 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t*)uuid16_list, sizeof(uuid16_list));
OsmanKameric 0:a4de55cab4e2 67 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t*)DEVICE_NAME, sizeof(DEVICE_NAME));
OsmanKameric 0:a4de55cab4e2 68 ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
OsmanKameric 0:a4de55cab4e2 69 ble.gap().setAdvertisingInterval(1000); /* 1000ms. */
OsmanKameric 0:a4de55cab4e2 70 ble.gap().startAdvertising();
OsmanKameric 0:a4de55cab4e2 71
OsmanKameric 0:a4de55cab4e2 72
OsmanKameric 0:a4de55cab4e2 73 }
OsmanKameric 0:a4de55cab4e2 74 int main()
OsmanKameric 0:a4de55cab4e2 75 {
OsmanKameric 0:a4de55cab4e2 76 eventQueue.call_every(500, periodicCallback);
OsmanKameric 0:a4de55cab4e2 77 BLE& ble = BLE::Instance();
OsmanKameric 0:a4de55cab4e2 78 ble.onEventsToProcess(scheduleBleEventsProcessing);
OsmanKameric 0:a4de55cab4e2 79 ble.init(bleInitComplete);
OsmanKameric 0:a4de55cab4e2 80 eventQueue.dispatch_forever();
OsmanKameric 0:a4de55cab4e2 81 return 0;
OsmanKameric 0:a4de55cab4e2 82 }