[bt] bt-emulator library abstraction (Part 1)

- The FakeHciDevice type from the fuchsia-bluetooth crate now connects
  to a bt-emulator device and provides a proxy to its HciEmulator FIDL
  implementation.
- The bt-fake-hci driver binding and test device management logic has
  been moved to fake_hci.rs. Old copies in hci.rs will be removed once
  all users go through FakeHciDevice.
- Added a unit test for device creation.
- Fixed a number of bugs in the bt-host driver's shut-down logic that
  were surfaced by the new unit test:
  * Fixed deadlocks triggered by DDK "unbind" received while a
    gap::Adapter is initializing.
  * Fixed use-after-free when the clean up functions are called multiple
    times.
   * Added a unit test for calling gap::Adapter::ShutDown() before
     gap::Adapter::Initialize() has returned, to enforce the latter's
     "abort" contract.

Bug: BT-229
Test: 1. bt-host-unittests --gtest_filter=GAP_AdapterTest.*
      2. bt-integration-tests
      3. bluetooth-crate-unittests
Change-Id: I9d58e2542792151897ae76b720df1119ed3dc6b3
15 files changed
tree: 9bd6d30b0662944c7f4c4c0ef2fadb33097a8b15
  1. boards/
  2. build/
  3. buildtools/
  4. bundles/
  5. docs/
  6. examples/
  7. garnet/
  8. infra/
  9. peridot/
  10. products/
  11. scripts/
  12. sdk/
  13. src/
  14. third_party/
  15. tools/
  16. zircon/
  17. .clang-format
  18. .clang-tidy
  19. .dir-locals.el
  20. .gitattributes
  21. .gitignore
  22. .gn
  23. AUTHORS
  24. BUILD.gn
  25. CODE_OF_CONDUCT.md
  26. CONTRIBUTING.md
  27. LICENSE
  28. OWNERS
  29. PATENTS
  30. README.md
  31. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See the documentation.