High level Bluetooth Low Energy API and radio abstraction layer

Dependents:   BLE_ANCS_SDAPI BLE_temperature BLE_HeartRate BLE_ANCS_SDAPI_IRC ... more

Overview

The BLE_API is a high level abstraction for using Bluetooth Low Energy on multiple platforms. For details and examples using the BLE_API please see the BLE_API Summary Page. Or click on the API Documentation tab above.

Supported Services

Supported services can be found in the BLE_API/services folder.

Committer:
Vincent Coubard
Date:
Wed Sep 14 14:18:00 2016 +0100
Revision:
1208:65474dc93927
Parent:
767:d6a79c77d1c3
Sync with 8d97fced5440d78c9557693b6d1632f1ab5d77b7

2016-09-01 08:21:37+01:00: Vincent Coubard
version v2.7.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rgrover1 712:b04b5db36865 1 /* mbed Microcontroller Library
rgrover1 712:b04b5db36865 2 * Copyright (c) 2006-2013 ARM Limited
rgrover1 712:b04b5db36865 3 *
rgrover1 712:b04b5db36865 4 * Licensed under the Apache License, Version 2.0 (the "License");
rgrover1 712:b04b5db36865 5 * you may not use this file except in compliance with the License.
rgrover1 712:b04b5db36865 6 * You may obtain a copy of the License at
rgrover1 712:b04b5db36865 7 *
rgrover1 712:b04b5db36865 8 * http://www.apache.org/licenses/LICENSE-2.0
rgrover1 712:b04b5db36865 9 *
rgrover1 712:b04b5db36865 10 * Unless required by applicable law or agreed to in writing, software
rgrover1 712:b04b5db36865 11 * distributed under the License is distributed on an "AS IS" BASIS,
rgrover1 712:b04b5db36865 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rgrover1 712:b04b5db36865 13 * See the License for the specific language governing permissions and
rgrover1 712:b04b5db36865 14 * limitations under the License.
rgrover1 712:b04b5db36865 15 */
rgrover1 712:b04b5db36865 16
rgrover1 712:b04b5db36865 17 #include "ble/Gap.h"
rgrover1 712:b04b5db36865 18 #include "ble/GapScanningParams.h"
rgrover1 712:b04b5db36865 19
rgrover1 712:b04b5db36865 20 GapScanningParams::GapScanningParams(uint16_t interval, uint16_t window, uint16_t timeout, bool activeScanning) :
rgrover1 767:d6a79c77d1c3 21 _interval(MSEC_TO_SCAN_DURATION_UNITS(interval)),
rgrover1 767:d6a79c77d1c3 22 _window(MSEC_TO_SCAN_DURATION_UNITS(window)),
rgrover1 712:b04b5db36865 23 _timeout(timeout),
rgrover1 712:b04b5db36865 24 _activeScanning(activeScanning) {
rgrover1 712:b04b5db36865 25 /* stay within limits */
rgrover1 712:b04b5db36865 26 if (_interval < SCAN_INTERVAL_MIN) {
rgrover1 712:b04b5db36865 27 _interval = SCAN_INTERVAL_MIN;
rgrover1 712:b04b5db36865 28 }
rgrover1 712:b04b5db36865 29 if (_interval > SCAN_INTERVAL_MAX) {
rgrover1 712:b04b5db36865 30 _interval = SCAN_INTERVAL_MAX;
rgrover1 712:b04b5db36865 31 }
rgrover1 712:b04b5db36865 32 if (_window < SCAN_WINDOW_MIN) {
rgrover1 712:b04b5db36865 33 _window = SCAN_WINDOW_MIN;
rgrover1 712:b04b5db36865 34 }
rgrover1 712:b04b5db36865 35 if (_window > SCAN_WINDOW_MAX) {
rgrover1 712:b04b5db36865 36 _window = SCAN_WINDOW_MAX;
rgrover1 712:b04b5db36865 37 }
rgrover1 712:b04b5db36865 38 }
rgrover1 712:b04b5db36865 39
rgrover1 712:b04b5db36865 40 ble_error_t
rgrover1 712:b04b5db36865 41 GapScanningParams::setInterval(uint16_t newIntervalInMS)
rgrover1 712:b04b5db36865 42 {
rgrover1 767:d6a79c77d1c3 43 uint16_t newInterval = MSEC_TO_SCAN_DURATION_UNITS(newIntervalInMS);
rgrover1 712:b04b5db36865 44 if ((newInterval >= SCAN_INTERVAL_MIN) && (newInterval < SCAN_INTERVAL_MAX)) {
rgrover1 712:b04b5db36865 45 _interval = newInterval;
rgrover1 712:b04b5db36865 46 return BLE_ERROR_NONE;
rgrover1 712:b04b5db36865 47 }
rgrover1 712:b04b5db36865 48
rgrover1 712:b04b5db36865 49 return BLE_ERROR_PARAM_OUT_OF_RANGE;
rgrover1 712:b04b5db36865 50 }
rgrover1 712:b04b5db36865 51
rgrover1 712:b04b5db36865 52 ble_error_t
rgrover1 712:b04b5db36865 53 GapScanningParams::setWindow(uint16_t newWindowInMS)
rgrover1 712:b04b5db36865 54 {
rgrover1 767:d6a79c77d1c3 55 uint16_t newWindow = MSEC_TO_SCAN_DURATION_UNITS(newWindowInMS);
rgrover1 712:b04b5db36865 56 if ((newWindow >= SCAN_WINDOW_MIN) && (newWindow < SCAN_WINDOW_MAX)) {
rgrover1 712:b04b5db36865 57 _window = newWindow;
rgrover1 712:b04b5db36865 58 return BLE_ERROR_NONE;
rgrover1 712:b04b5db36865 59 }
rgrover1 712:b04b5db36865 60
rgrover1 712:b04b5db36865 61 return BLE_ERROR_PARAM_OUT_OF_RANGE;
rgrover1 712:b04b5db36865 62 }
rgrover1 712:b04b5db36865 63
rgrover1 712:b04b5db36865 64 ble_error_t
rgrover1 712:b04b5db36865 65 GapScanningParams::setTimeout(uint16_t newTimeout)
rgrover1 712:b04b5db36865 66 {
rgrover1 712:b04b5db36865 67 _timeout = newTimeout;
rgrover1 712:b04b5db36865 68 return BLE_ERROR_NONE;
rgrover1 712:b04b5db36865 69 }
rgrover1 712:b04b5db36865 70
rgrover1 712:b04b5db36865 71 void
rgrover1 712:b04b5db36865 72 GapScanningParams::setActiveScanning(bool activeScanning)
rgrover1 712:b04b5db36865 73 {
rgrover1 712:b04b5db36865 74 _activeScanning = activeScanning;
rgrover1 712:b04b5db36865 75 }