Demo program for use with MMA8653 based boards
Dependencies: mbed AES BLE_API nRF51822 smallAES
Diff: main.cpp
- Revision:
- 5:fccb0823ceff
- Parent:
- 4:4d468d58fc51
- Child:
- 6:0038b9f778a5
- Child:
- 7:46123a4652f2
diff -r 4d468d58fc51 -r fccb0823ceff main.cpp --- a/main.cpp Fri Aug 14 13:10:28 2020 +0000 +++ b/main.cpp Fri Aug 14 13:34:49 2020 +0000 @@ -16,122 +16,11 @@ #include "mbed.h" #include "ble/BLE.h" -#include "LEDService.h" -#include "ButtonAService.h" -#include "accelService.h" -#include "magservice.h" - -/* - * All the LEDs on the micro:bit are part of the LED Matrix, - * In order to get simple blinking behaviour, we set column 0 - * to be permanently at ground. If you want to use the LEDs as - * a screen, there is a display driver in the micro:bit 'DAL', - */ -DigitalOut col1(P0_4, 0); -DigitalOut alivenessLED(P0_13, 0); -DigitalOut actuatedLED(P0_14, 0); - -const static char DEVICE_NAME[] = "BBCMicroBit"; -//static const uint16_t uuid16_list[] = {LEDService::LED_SERVICE_UUID,ACCELService::ACCEL_SERVICE_UUID,ButtonAService::BUTTONA_SERVICE_UUID}; -static const uint16_t uuid16_list[] = {0xA012,0xFFF3}; - -LEDService *ledServicePtr; -ButtonAService * btnAServicePtr; -ACCELService *AccelServicePtr; -MAGService * MagServicePtr; -Ticker ticker; - -void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) -{ - BLE::Instance().gap().startAdvertising(); -} - -void periodicCallback(void) -{ - - btnAServicePtr->poll(); - AccelServicePtr->poll(); - MagServicePtr->poll(); - if (btnAServicePtr->GetButtonAState()) - alivenessLED = 1; - else - alivenessLED = 0; - -} - -/** - * This callback allows the LEDService to receive updates to the ledState Characteristic. - * - * @param[in] params - * Information about the characterisitc being updated. - */ -void onDataWrittenCallback(const GattWriteCallbackParams *params) { - if ((params->handle == ledServicePtr->getValueHandle()) && (params->len == 1)) { - actuatedLED = *(params->data); - } -} - -void onDataReadCallback(const GattReadCallbackParams *params) { - - -} -/** - * This function is called when the ble initialization process has failed - */ -void onBleInitError(BLE &ble, ble_error_t error) -{ - /* Initialization error handling should go here */ -} - -/** - * Callback triggered when the ble initialization process has finished - */ -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.gattServer().onDataWritten(onDataWrittenCallback); - // ble.gattServer().onDataRead(onDataReadCallback); // Nordic Soft device will not call this so have to poll instead - - bool initialValueForLEDCharacteristic = false; - ledServicePtr = new LEDService(ble, initialValueForLEDCharacteristic); - btnAServicePtr = new ButtonAService(ble); - int16_t Tst=0; - AccelServicePtr = new ACCELService(ble,Tst); - MagServicePtr = new MAGService(ble,Tst); - /* 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.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); - ble.gap().setAdvertisingInterval(1000); /* 1000ms. */ - ble.gap().startAdvertising(); -} int main(void) { - ticker.attach(periodicCallback, 1); /* Poll devices every 100ms */ - - BLE &ble = BLE::Instance(); - ble.init(bleInitComplete); - /* SpinWait for initialization to complete. This is necessary because the - * BLE object is used in the main loop below. */ - while (ble.hasInitialized() == false) { /* spin loop */ } while (true) { - ble.waitForEvent(); + } }