To Be Deploy

Dependencies:   BLE_API mbed nRF51822 X_NUCLEO_IDB0XA1

Fork of BLE_EddystoneBeacon_Serviceprod by gagan deep

Committer:
rjrahul25
Date:
Thu Dec 21 07:07:45 2017 +0000
Revision:
38:9bc868ab9c21
Parent:
37:acd9b4823178
To Be Deploy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:c04d932e96c9 1 /* mbed Microcontroller Library
mbedAustin 32:41840b78597e 2 * Copyright (c) 2006-2013 ARM Limited
screamer 0:c04d932e96c9 3 *
screamer 0:c04d932e96c9 4 * Licensed under the Apache License, Version 2.0 (the "License");
screamer 0:c04d932e96c9 5 * you may not use this file except in compliance with the License.
screamer 0:c04d932e96c9 6 * You may obtain a copy of the License at
screamer 0:c04d932e96c9 7 *
screamer 0:c04d932e96c9 8 * http://www.apache.org/licenses/LICENSE-2.0
screamer 0:c04d932e96c9 9 *
screamer 0:c04d932e96c9 10 * Unless required by applicable law or agreed to in writing, software
screamer 0:c04d932e96c9 11 * distributed under the License is distributed on an "AS IS" BASIS,
screamer 0:c04d932e96c9 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
screamer 0:c04d932e96c9 13 * See the License for the specific language governing permissions and
screamer 0:c04d932e96c9 14 * limitations under the License.
screamer 0:c04d932e96c9 15 */
screamer 0:c04d932e96c9 16
screamer 0:c04d932e96c9 17 #include "mbed.h"
andresag 34:f6d4a699a1ea 18 #include "ble/BLE.h"
andresag 34:f6d4a699a1ea 19 #include "EddystoneService.h"
andresag 34:f6d4a699a1ea 20
andresag 34:f6d4a699a1ea 21 EddystoneService *eddyServicePtr;
screamer 0:c04d932e96c9 22
andresag 34:f6d4a699a1ea 23 void onBleInitError(BLE::InitializationCompleteCallbackContext* initContext)
andresag 34:f6d4a699a1ea 24 {
andresag 34:f6d4a699a1ea 25 /* Initialization error handling goes here... */
andresag 34:f6d4a699a1ea 26 (void) initContext;
andresag 34:f6d4a699a1ea 27 }
mbedAustin 30:6c2db8bf5b17 28
andresag 34:f6d4a699a1ea 29 /*
andresag 34:f6d4a699a1ea 30 * Update TLM frame battery voltage value.
andresag 34:f6d4a699a1ea 31 */
andresag 34:f6d4a699a1ea 32 uint16_t tlmBatteryVoltageCallback(uint16_t prevBatteryVoltage)
andresag 34:f6d4a699a1ea 33 {
andresag 34:f6d4a699a1ea 34 prevBatteryVoltage++;
andresag 34:f6d4a699a1ea 35 return prevBatteryVoltage;
andresag 34:f6d4a699a1ea 36 }
mbedAustin 30:6c2db8bf5b17 37
andresag 34:f6d4a699a1ea 38 /*
andresag 34:f6d4a699a1ea 39 * Update TLM frame beacon temperature value.
andresag 34:f6d4a699a1ea 40 */
andresag 34:f6d4a699a1ea 41 uint16_t tlmBeaconTemperatureCallback(uint16_t prevBeaconTemperature)
andresag 34:f6d4a699a1ea 42 {
andresag 34:f6d4a699a1ea 43 prevBeaconTemperature++;
andresag 34:f6d4a699a1ea 44 return prevBeaconTemperature;
mbedAustin 30:6c2db8bf5b17 45 }
mbedAustin 30:6c2db8bf5b17 46
andresag 34:f6d4a699a1ea 47 void bleInitComplete(BLE::InitializationCompleteCallbackContext* initContext)
andresag 34:f6d4a699a1ea 48 {
andresag 34:f6d4a699a1ea 49 BLE &ble = initContext->ble;
andresag 34:f6d4a699a1ea 50 ble_error_t error = initContext->error;
andresag 34:f6d4a699a1ea 51
andresag 34:f6d4a699a1ea 52 if (error != BLE_ERROR_NONE) {
andresag 34:f6d4a699a1ea 53 onBleInitError(initContext);
andresag 34:f6d4a699a1ea 54 return;
andresag 34:f6d4a699a1ea 55 }
andresag 34:f6d4a699a1ea 56
andresag 34:f6d4a699a1ea 57 /* Set UID and TLM frame data */
rjrahul25 38:9bc868ab9c21 58 // const UIDNamespaceID_t uidNamespaceID = {0x87, 0x4c, 0x88, 0xb2, 0x4e, 0xb5, 0x4a, 0xda, 0xb0, 0x52};
rjrahul25 38:9bc868ab9c21 59 // const UIDInstanceID_t uidInstanceID = {0x33, 0x92, 0xd0, 0x34, 0xaf, 0xdb};
rjrahul25 38:9bc868ab9c21 60 // 4a69a7bc-d501-11e7-9296-cec278b6b50a
rjrahul25 38:9bc868ab9c21 61 // 05c46e98-d502-11e7-9296-cec278b6b50a
rjrahul25 38:9bc868ab9c21 62 // a06b252c-d502-11e7-9296-cec278b6b50a
rjrahul25 38:9bc868ab9c21 63 // c4253934-d503-11e7-9296-cec278b6b50a
rjrahul25 38:9bc868ab9c21 64 const UIDNamespaceID_t uidNamespaceID = {0xc4, 0x25, 0x39, 0x34, 0xd5, 0x03, 0x11, 0xe7, 0x92, 0x96};
rjrahul25 38:9bc868ab9c21 65 const UIDInstanceID_t uidInstanceID = {0xce, 0xc2, 0x78, 0xb6, 0xb5, 0x0a};
rjrahul25 38:9bc868ab9c21 66
andresag 34:f6d4a699a1ea 67 uint8_t tlmVersion = 0x00;
andresag 34:f6d4a699a1ea 68
andresag 34:f6d4a699a1ea 69 /* Initialize a EddystoneBeaconConfig service providing config params, default URI, and power levels. */
andresag 34:f6d4a699a1ea 70 static const PowerLevels_t defaultAdvPowerLevels = {-47, -33, -21, -13}; // Values for ADV packets related to firmware levels, calibrated based on measured values at 1m
gagan3g 37:acd9b4823178 71 static const PowerLevels_t radioPowerLevels = {4, -30, -16, -4}; // Values for radio power levels, provided by manufacturer.
andresag 34:f6d4a699a1ea 72
andresag 34:f6d4a699a1ea 73 /* Set everything to defaults */
andresag 34:f6d4a699a1ea 74 eddyServicePtr = new EddystoneService(ble, defaultAdvPowerLevels, radioPowerLevels);
andresag 34:f6d4a699a1ea 75
andresag 34:f6d4a699a1ea 76 /* Set default URL, UID and TLM frame data if not initialized through the config service */
gagan3g 37:acd9b4823178 77 eddyServicePtr->setURLData("https://goo.gl/XPGJj6");
andresag 34:f6d4a699a1ea 78 eddyServicePtr->setUIDData(&uidNamespaceID, &uidInstanceID);
andresag 34:f6d4a699a1ea 79 eddyServicePtr->setTLMData(tlmVersion);
andresag 34:f6d4a699a1ea 80
andresag 34:f6d4a699a1ea 81 /* Set battery voltage and temperature callbacks */
andresag 34:f6d4a699a1ea 82 eddyServicePtr->onTLMBatteryVoltageUpdate(tlmBatteryVoltageCallback);
andresag 34:f6d4a699a1ea 83 eddyServicePtr->onTLMBeaconTemperatureUpdate(tlmBeaconTemperatureCallback);
andresag 34:f6d4a699a1ea 84
andresag 34:f6d4a699a1ea 85 /* Start Eddystone in config mode */
rjrahul25 38:9bc868ab9c21 86 //eddyServicePtr->startBeaconService(0, 20, 0);
gagan3g 37:acd9b4823178 87 eddyServicePtr->startBeaconService(0, 20, 0);
mbedAustin 30:6c2db8bf5b17 88 }
screamer 0:c04d932e96c9 89
screamer 0:c04d932e96c9 90 int main(void)
screamer 0:c04d932e96c9 91 {
andresag 34:f6d4a699a1ea 92 BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE);
andresag 34:f6d4a699a1ea 93 ble.init(bleInitComplete);
andresag 34:f6d4a699a1ea 94
andresag 34:f6d4a699a1ea 95 /* SpinWait for initialization to complete. This is necessary because the
andresag 34:f6d4a699a1ea 96 * BLE object is used in the main loop below. */
andresag 34:f6d4a699a1ea 97 while (ble.hasInitialized() == false) { /* spin loop */ }
mbedAustin 32:41840b78597e 98
screamer 0:c04d932e96c9 99 while (true) {
andresag 34:f6d4a699a1ea 100 ble.waitForEvent(); /* this will return upon any system event (such as an interrupt or a ticker wakeup) */
screamer 0:c04d932e96c9 101 }
screamer 0:c04d932e96c9 102 }