[version roller] Update dependencies

SDK version updated from 9.20220919.2.1 to 10.20221013.1.1

Also:
- added explicit clang toolchain registration in WORKSPACE.bazel
- rename mutable_data to data according to
  I8fd33dca685840160df4618908b6545f459a8746
- correctly convert enums according to
  I6c1c340b79742ce64e2c125410c7b063661372ec
- Removed usage of ServiceHandler alias in favor of
  ServiceInstanceHandler (fxrev.dev/737962)
- Rename instances of async_dispatcher() to dispatcher()
- Use name() method to get driver name

Change-Id: Ifc42ce186b8ceca0183826f8bdd017deff48c071
Reviewed-on: https://fuchsia-review.googlesource.com/c/sdk-samples/drivers/+/736248
Reviewed-by: Chase Latta <chaselatta@google.com>
Reviewed-by: Yifei Teng <yifeit@google.com>
Commit-Queue: Atul Sharma <atshar@google.com>
Reviewed-by: Wayne Piekarski <waynepie@google.com>
13 files changed
tree: 7c85076230cded2ee8e8c13d6fb9221ac03f786f
  1. scripts/
  2. src/
  3. third_party/
  4. tools/
  5. .bazelrc
  6. .clang-format
  7. .gitignore
  8. .gitmodules
  9. AUTHORS
  10. CONTRIBUTING.md
  11. LICENSE
  12. OWNERS
  13. PATENTS
  14. README.md
  15. WORKSPACE.bazel
README.md

Fuchsia samples using the Fuchsia SDK

This repository contains instructions and source code to build, package and run Fuchsia samples using only the Fuchsia SDK.

Requirements

  1. Make sure this repository has the required submodules:

    git submodule update --recursive --init
    
  2. Run the bootstrap script that downloads the appropriate Bazel binary:

    scripts/bootstrap.sh
    
  3. Ensure that there are Fuchsia SSH keys in your host machine. You will need them for running the Fuchsia emulator.

     [[ -f "${HOME}/.ssh/fuchsia_ed25519" ]] || ssh-keygen -P "" -t ed25519 -f "${HOME}/.ssh/fuchsia_ed25519" -C "${USER}@$(hostname -f) Shared SSH Key for Fuchsia"
    
     [[ -f "${HOME}/.ssh/fuchsia_authorized_keys" ]] || ssh-keygen -y -f "${HOME}/.ssh/fuchsia_ed25519" > "${HOME}/.ssh/fuchsia_authorized_keys"
    

Build, run and test the samples

The repository is ready to build the samples.

Note: in order to use an SDK produced by a local Fuchsia platform tree, you can set an environment variable named LOCAL_FUCHSIA_PLATFORM_BUILD as described in https://fuchsia.googlesource.com/sdk-integration/+/0503b02c059a6de76242280b467898358ba30ae3

  1. If using an emmulator:

    1. Fetch the system images

      tools/ffx product-bundle get workstation_eng.qemu-x64 --repository workstation-repo
      

    Note: if the command above fails with an error message that states that there are multiple product bundles with the same name, you can either specify the full qualified URL as printed in the error message, or you can wipe out old and unused product bundles in the pbms storage, which should be located in ~/.local/share/Fuchsia/ffx/pbms on Linux, or ~/Library/Fuchsia/ffx/pbms on MacOS.

    1. Start the emulator

      tools/ffx emu start workstation_eng.qemu-x64 --headless \
         --kernel-args "driver_manager.use_driver_framework_v2=true" \
         --kernel-args "driver_manager.root-driver=fuchsia-boot:///#meta/platform-bus.cm" \
         --kernel-args "devmgr.enable-ephemeral=true"
      
    2. The product bundle comes with on-demand packages in a separate repository. Use the following command to register it with the emulator:

      tools/ffx target repository register -r workstation-repo --alias fuchsia.com
      
  2. If using a physical device like a Pixelbook Go:

    1. Fetch the system images

      tools/ffx product-bundle get workstation_eng.qemu-x64-dfv2 --repository workstation
      
    2. Prepare and connect the Pixelbook Go, by flashing and/or paving it (not covered here), and connect using Ethernet.

    3. The product bundle comes with on-demand packages in a separate repository. Use the following command to register it with the device:

      tools/ffx target repository register -r workstation.qemu-x64-dfv2 --alias fuchsia.com
      
    4. Update (OTA) the device to the version of the SDK:

      tools/ffx target update check-now --monitor
      
  3. (optional) watch the device log in a separate window

    tools/ffx log
    
  4. Load the sample drivers

    Now you are ready to register a driver. Starting with the example driver:

    First, let's confirm that the driver is not loaded:

    tools/ffx driver list | grep example_driver
    

    The command above should not return any driver named “example_driver” because it has not been registered.

    Now register the driver:

    tools/bazel run --config=fuchsia_x64 src/example_driver:pkg.component
    

    The driver now should show in the list of loaded drivers:

    tools/ffx driver list | grep example_driver
    fuchsia-pkg://bazel.pkg.component/example_driver#meta/example_driver.cm
    

    You can also watch in the log to see if the driver is loaded correctly. The ffx log window should show a message similar to:

    [88.961][bootstrap/driver_manager][driver_manager.cm][I] Loaded driver 'fuchsia-pkg://bazel.pkg.component/example_driver#meta/example_driver.cm'