tree: decefb42a8ca09cf53ede327cf1a8cdae4398e74 [path history] [tgz]
  1. c/
  2. dart/
  3. implementation/
  4. swift/
  5. v3/
  6. advertising_options.cc
  7. advertising_options.h
  8. BUILD
  9. connection_options.cc
  10. connection_options.h
  11. core.cc
  12. core.h
  13. core_test.cc
  14. discovery_options.cc
  15. discovery_options.h
  16. listeners.h
  17. listeners_test.cc
  18. medium_selector.h
  19. options_base.h
  20. out_of_band_connection_metadata.h
  21. params.h
  22. payload.cc
  23. payload.h
  24. payload_test.cc
  25. payload_type.h
  26. power_level.h
  27. README.md
  28. status.cc
  29. status.h
  30. status_test.cc
  31. strategy.cc
  32. strategy.h
  33. strategy_test.cc
connections/README.md

Nearby Connection

Nearby Connections is a high level protocol on top of Bluetooth/Wi-Fi that acts as a medium-agnostic socket. Devices are able to advertise, scan, and connect with one another over any shared medium (eg. BT <-> BT). Once connected, the two devices share a list of all supported mediums and attempt to upgrade to the one with the highest bandwidth (eg. BT -> Wi-Fi). The connection is encrypted, reliable, and fully duplex. BYTE, FILE, and STREAM payloads are all supported and will be chunked & transferred internally and recombined on the receiving device. See Nearby Connections Overview for more information.

Checkout the source tree

git clone https://github.com/google/nearby
cd nearby
git submodule update --init --recursive

Building Nearby, Unit Testing and Sample Apps

We support multiple platforms including Linux, iOS & Windows.

Building for Linux

NOTE: Linux has no mediums implemented.

Currently we support building from source using bazel. Other BUILD system such as cmake may be added later.

Prerequisites:

  1. Bazel
  2. clang with support for c++ 17+
  3. Openssl libcrypto.so (-lssl;-lcrypto).

To build the Nearby Connection Core library:

CC=clang CXX=clang++ bazel build -s --check_visibility=false //connections:core  --spawn_strategy=standalone --verbose_failures

Building for macOS and iOS

NOTE: The only medium supported is Wi-Fi LAN.

Currently we support building with Swift Package Manager.

Prerequisites:

  1. Xcode. Available from Apple Store.
  2. Google Protobuf Compiler (protoc). If you have homebrew installed, you can do brew install protobuf.

To build the Nearby Connection library:

swift build

Supported Mediums

Android

MediumsAdvertisingScanningData
Bluetooth Classic[x] [x] [x]
BLE (Fast)[x] [x]
BLE (GATT)[x] [x] [x]
BLE (Extended)[x] [x]
BLE (L2CAP)[x]
Wi-Fi LAN[x] [x] [x]
Wi-Fi Hotspot[x]
Wi-Fi Direct[x]
Wi-Fi Aware[x] [x] [x]
WebRTC[x]
NFC[x] [x] [x]
USB[x] [x] [x]
AWDL

ChromeOS

MediumsAdvertisingScanningData
Bluetooth Classic[x] [x] [x]
BLE (Fast)[x] [x]
BLE (GATT)[ ] [ ] [ ]
BLE (Extended)[ ] [ ]
BLE (L2CAP)
Wi-Fi LAN[ ] [x] [x]
Wi-Fi Hotspot[ ]
Wi-Fi Direct[ ]
Wi-Fi Aware
WebRTC[x]
NFC
USB[ ] [ ] [ ]
AWDL

Windows

MediumsAdvertisingScanningData
Bluetooth Classic[x] [x]
BLE (Fast)[x] [x]
BLE (GATT)[x] [x] [ ]
BLE (Extended)[x] [x]
BLE (L2CAP)
Wi-Fi LAN[x] [x] [x]
Wi-Fi Hotspot[x]
Wi-Fi Direct[ ]
Wi-Fi Aware
WebRTC[ ]
NFC
USB[ ] [ ] [ ]
AWDL

iOS/macOS

MediumsAdvertisingScanningData
Bluetooth Classic[ ] [ ]
BLE (Fast)[ ] [ ]
BLE (GATT)[ ] [ ] [ ]
BLE (Extended)[ ]
BLE (L2CAP)[ ]
Wi-Fi LAN[x] [x] [x]
Wi-Fi Hotspot[ ]
Wi-Fi Direct
Wi-Fi Aware
WebRTC[ ]
NFC[ ]
USB
AWDL[ ] [ ] [ ]