![](/media/cache/group/Mbed-100-mk2.png.50x50_q85.png)
Demonstration of possible usage of the Security Manager. Security Manager deals with pairing, authentication and encryption.
SM - example usage of the Security Manager to pair and encrypt
Demonstration of possible usage of the Security Manager. Security Manager deals with pairing, authentication and encryption.
The application demonstrates usage as a central and a peripheral. The central will connect to any connectable device present. Please have one ready and advertising. Application will attempt pairing. Please authorise your peer device to pair.
Upon success it will disconnect and start advertising to demonstrate usage as a peripheral. Please scan and connect using your peer device. Upon connection grant pairing if prompted. Upon success the application will disconnect. Observe the terminal to keep track of the sequence.
Running the application
Requirements
The sample application can be seen on any BLE scanner on a smartphone. If you don't have a scanner on your phone, please install :
- nRF Master Control Panel for Android.
- LightBlue for iPhone.
Information about activity is printed over the serial connection - please have a client open. You may use:
Hardware requirements are in the main readme.
Building instructions
Building instructions for all samples are in the main readme.
source/pretty_printer.h@23:03723224d5e7, 2019-08-15 (annotated)
- Committer:
- mbed_official
- Date:
- Thu Aug 15 17:02:31 2019 +0100
- Revision:
- 23:03723224d5e7
- Parent:
- 17:6bf7972c4d0e
Merge pull request #252 from donatieng/mbed_os_update
Update Master branch to use Mbed OS 5.13.1
.
Commit copied from https://github.com/ARMmbed/mbed-os-example-ble
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 17:6bf7972c4d0e | 1 | /* mbed Microcontroller Library |
mbed_official | 17:6bf7972c4d0e | 2 | * Copyright (c) 2018 ARM Limited |
mbed_official | 17:6bf7972c4d0e | 3 | * |
mbed_official | 17:6bf7972c4d0e | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
mbed_official | 17:6bf7972c4d0e | 5 | * you may not use this file except in compliance with the License. |
mbed_official | 17:6bf7972c4d0e | 6 | * You may obtain a copy of the License at |
mbed_official | 17:6bf7972c4d0e | 7 | * |
mbed_official | 17:6bf7972c4d0e | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
mbed_official | 17:6bf7972c4d0e | 9 | * |
mbed_official | 17:6bf7972c4d0e | 10 | * Unless required by applicable law or agreed to in writing, software |
mbed_official | 17:6bf7972c4d0e | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
mbed_official | 17:6bf7972c4d0e | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
mbed_official | 17:6bf7972c4d0e | 13 | * See the License for the specific language governing permissions and |
mbed_official | 17:6bf7972c4d0e | 14 | * limitations under the License. |
mbed_official | 17:6bf7972c4d0e | 15 | */ |
mbed_official | 17:6bf7972c4d0e | 16 | |
mbed_official | 17:6bf7972c4d0e | 17 | #include <mbed.h> |
mbed_official | 17:6bf7972c4d0e | 18 | #include "ble/BLE.h" |
mbed_official | 17:6bf7972c4d0e | 19 | |
mbed_official | 17:6bf7972c4d0e | 20 | inline void print_error(ble_error_t error, const char* msg) |
mbed_official | 17:6bf7972c4d0e | 21 | { |
mbed_official | 17:6bf7972c4d0e | 22 | printf("%s: ", msg); |
mbed_official | 17:6bf7972c4d0e | 23 | switch(error) { |
mbed_official | 17:6bf7972c4d0e | 24 | case BLE_ERROR_NONE: |
mbed_official | 17:6bf7972c4d0e | 25 | printf("BLE_ERROR_NONE: No error"); |
mbed_official | 17:6bf7972c4d0e | 26 | break; |
mbed_official | 17:6bf7972c4d0e | 27 | case BLE_ERROR_BUFFER_OVERFLOW: |
mbed_official | 17:6bf7972c4d0e | 28 | printf("BLE_ERROR_BUFFER_OVERFLOW: The requested action would cause a buffer overflow and has been aborted"); |
mbed_official | 17:6bf7972c4d0e | 29 | break; |
mbed_official | 17:6bf7972c4d0e | 30 | case BLE_ERROR_NOT_IMPLEMENTED: |
mbed_official | 17:6bf7972c4d0e | 31 | printf("BLE_ERROR_NOT_IMPLEMENTED: Requested a feature that isn't yet implement or isn't supported by the target HW"); |
mbed_official | 17:6bf7972c4d0e | 32 | break; |
mbed_official | 17:6bf7972c4d0e | 33 | case BLE_ERROR_PARAM_OUT_OF_RANGE: |
mbed_official | 17:6bf7972c4d0e | 34 | printf("BLE_ERROR_PARAM_OUT_OF_RANGE: One of the supplied parameters is outside the valid range"); |
mbed_official | 17:6bf7972c4d0e | 35 | break; |
mbed_official | 17:6bf7972c4d0e | 36 | case BLE_ERROR_INVALID_PARAM: |
mbed_official | 17:6bf7972c4d0e | 37 | printf("BLE_ERROR_INVALID_PARAM: One of the supplied parameters is invalid"); |
mbed_official | 17:6bf7972c4d0e | 38 | break; |
mbed_official | 17:6bf7972c4d0e | 39 | case BLE_STACK_BUSY: |
mbed_official | 17:6bf7972c4d0e | 40 | printf("BLE_STACK_BUSY: The stack is busy"); |
mbed_official | 17:6bf7972c4d0e | 41 | break; |
mbed_official | 17:6bf7972c4d0e | 42 | case BLE_ERROR_INVALID_STATE: |
mbed_official | 17:6bf7972c4d0e | 43 | printf("BLE_ERROR_INVALID_STATE: Invalid state"); |
mbed_official | 17:6bf7972c4d0e | 44 | break; |
mbed_official | 17:6bf7972c4d0e | 45 | case BLE_ERROR_NO_MEM: |
mbed_official | 17:6bf7972c4d0e | 46 | printf("BLE_ERROR_NO_MEM: Out of Memory"); |
mbed_official | 17:6bf7972c4d0e | 47 | break; |
mbed_official | 17:6bf7972c4d0e | 48 | case BLE_ERROR_OPERATION_NOT_PERMITTED: |
mbed_official | 17:6bf7972c4d0e | 49 | printf("BLE_ERROR_OPERATION_NOT_PERMITTED"); |
mbed_official | 17:6bf7972c4d0e | 50 | break; |
mbed_official | 17:6bf7972c4d0e | 51 | case BLE_ERROR_INITIALIZATION_INCOMPLETE: |
mbed_official | 17:6bf7972c4d0e | 52 | printf("BLE_ERROR_INITIALIZATION_INCOMPLETE"); |
mbed_official | 17:6bf7972c4d0e | 53 | break; |
mbed_official | 17:6bf7972c4d0e | 54 | case BLE_ERROR_ALREADY_INITIALIZED: |
mbed_official | 17:6bf7972c4d0e | 55 | printf("BLE_ERROR_ALREADY_INITIALIZED"); |
mbed_official | 17:6bf7972c4d0e | 56 | break; |
mbed_official | 17:6bf7972c4d0e | 57 | case BLE_ERROR_UNSPECIFIED: |
mbed_official | 17:6bf7972c4d0e | 58 | printf("BLE_ERROR_UNSPECIFIED: Unknown error"); |
mbed_official | 17:6bf7972c4d0e | 59 | break; |
mbed_official | 17:6bf7972c4d0e | 60 | case BLE_ERROR_INTERNAL_STACK_FAILURE: |
mbed_official | 17:6bf7972c4d0e | 61 | printf("BLE_ERROR_INTERNAL_STACK_FAILURE: internal stack faillure"); |
mbed_official | 17:6bf7972c4d0e | 62 | break; |
mbed_official | 17:6bf7972c4d0e | 63 | } |
mbed_official | 17:6bf7972c4d0e | 64 | printf("\r\n"); |
mbed_official | 17:6bf7972c4d0e | 65 | } |
mbed_official | 17:6bf7972c4d0e | 66 | |
mbed_official | 17:6bf7972c4d0e | 67 | /** print device address to the terminal */ |
mbed_official | 17:6bf7972c4d0e | 68 | void print_address(const uint8_t *addr) |
mbed_official | 17:6bf7972c4d0e | 69 | { |
mbed_official | 17:6bf7972c4d0e | 70 | printf("%02x:%02x:%02x:%02x:%02x:%02x\r\n", |
mbed_official | 17:6bf7972c4d0e | 71 | addr[5], addr[4], addr[3], addr[2], addr[1], addr[0]); |
mbed_official | 17:6bf7972c4d0e | 72 | } |
mbed_official | 17:6bf7972c4d0e | 73 | |
mbed_official | 17:6bf7972c4d0e | 74 | inline void print_mac_address() |
mbed_official | 17:6bf7972c4d0e | 75 | { |
mbed_official | 17:6bf7972c4d0e | 76 | /* Print out device MAC address to the console*/ |
mbed_official | 17:6bf7972c4d0e | 77 | Gap::AddressType_t addr_type; |
mbed_official | 17:6bf7972c4d0e | 78 | Gap::Address_t address; |
mbed_official | 17:6bf7972c4d0e | 79 | BLE::Instance().gap().getAddress(&addr_type, address); |
mbed_official | 17:6bf7972c4d0e | 80 | printf("DEVICE MAC ADDRESS: "); |
mbed_official | 17:6bf7972c4d0e | 81 | print_address(address); |
mbed_official | 17:6bf7972c4d0e | 82 | } |
mbed_official | 17:6bf7972c4d0e | 83 | |
mbed_official | 17:6bf7972c4d0e | 84 | inline const char* phy_to_string(Gap::Phy_t phy) { |
mbed_official | 17:6bf7972c4d0e | 85 | switch(phy.value()) { |
mbed_official | 17:6bf7972c4d0e | 86 | case Gap::Phy_t::LE_1M: |
mbed_official | 17:6bf7972c4d0e | 87 | return "LE 1M"; |
mbed_official | 17:6bf7972c4d0e | 88 | case Gap::Phy_t::LE_2M: |
mbed_official | 17:6bf7972c4d0e | 89 | return "LE 2M"; |
mbed_official | 17:6bf7972c4d0e | 90 | case Gap::Phy_t::LE_CODED: |
mbed_official | 17:6bf7972c4d0e | 91 | return "LE coded"; |
mbed_official | 17:6bf7972c4d0e | 92 | default: |
mbed_official | 17:6bf7972c4d0e | 93 | return "invalid PHY"; |
mbed_official | 17:6bf7972c4d0e | 94 | } |
mbed_official | 17:6bf7972c4d0e | 95 | } |