# The west manifest file for upstream Zephyr.
#
# The per-installation west configuration file, .west/config, sets the
# path to the project containing this file in the [manifest] section's
# "path" variable.
#
# You are free to create your own manifest files and put them in any
# repository you want, to create your own custom Zephyr installations.
# For example, you could create a manifest file in your own out of
# tree application directory, which would pull this zephyr repository
# in as an ordinary project.
#
# You can pass your manifest repositories to west init when creating a
# new Zephyr installation. See the west documentation for more
# information.

manifest:
  defaults:
    remote: upstream

  remotes:
    - name: upstream
      url-base: https://github.com/zephyrproject-rtos

  #
  # Please add items below based on alphabetical order
  projects:
    - name: cmsis
      revision: 542b2296e6d515b265e25c6b7208e8fea3014f90
      path: modules/hal/cmsis
    - name: hal_atmel
      revision: 1fe96f0a5e1a11d8101b258a3b84d35dc7178401
      path: modules/hal/atmel
    - name: hal_altera
      revision: 23c1c1dd7a0c1cc9a399509d1819375847c95b97
      path: modules/hal/altera
    - name: canopennode
      path: modules/lib/canopennode
      revision: 5c6b0566d56264efd4bf23ed58bc7cb8b32fe063
    - name: ci-tools
      revision: cf55a47d52d38af655f3efa6d38ff105b727358a
      path: tools/ci-tools
    - name: civetweb
      revision: 99129c5efc907ea613c4b73ccff07581feb58a7a
      path: modules/lib/civetweb
    - name: esp-idf
      revision: 6835bfc741bf15e98fb7971293913f770df6081f
      path: modules/hal/esp-idf
    - name: fatfs
      revision: 9ee6b9b9511151d0d64a74d532d39c6f2bbd4f16
      path: modules/fs/fatfs
    - name: hal_cypress
      revision: a12d92816a53a521d79cefcf5c38b9dc8a4fed6e
      path: modules/hal/cypress
    - name: hal_infineon
      revision: f1fa8241f8786198ba41155413243de36ed878a5
      path: modules/hal/infineon
    - name: hal_nordic
      revision: e1168a2f3290f5ca17ec0c47efbf6c601c60108a
      path: modules/hal/nordic
    - name: hal_openisa
      revision: 3b54187649cc9b37161d49918f1ad28ff7c7f830
      path: modules/hal/openisa
    - name: hal_microchip
      revision: aad89bf0531a30dcd6c87e4065f1b973fb31c11f
      path: modules/hal/microchip
    - name: hal_silabs
      revision: 78da967feeac0d51219ef733cc3ccf643336589f
      path: modules/hal/silabs
    - name: hal_st
      revision: 5b3ec3e182d4310e8943cc34c6c70ae57d9711da
      path: modules/hal/st
    - name: hal_stm32
      revision: d1bc80d021f4ebc31f6e8b36f14b738cc26c7b03
      path: modules/hal/stm32
    - name: hal_ti
      revision: c398cc7959097d27a9cfec857eeade9b851cd46c
      path: modules/hal/ti
    - name: libmetal
      revision: 3c3c9ec83bbb99390e34f8f2ba273ec86cf2b67c
      path: modules/hal/libmetal
    - name: lvgl
      revision: 74fc2e753a997bd71cefa34dd9c56dcb954b42e2
      path: modules/lib/gui/lvgl
    - name: mbedtls
      revision: 821154171b246f64eaeef3ccc267f58d8274739a
      path: modules/crypto/mbedtls
    - name: mcuboot
      revision: 5657d00e662adbd32addc8525862249b631334c5
      path: bootloader/mcuboot
    - name: mcumgr
      revision: ac6cc4f28fd3e7d138f319c9aef53dd4beb9c7ac
      path: modules/lib/mcumgr
    - name: net-tools
      revision: 1c4fdba512b268033a4cf926bddd323866c3261a
      path: tools/net-tools
    - name: hal_nxp
      revision: 80a337dc4cc980f80e595971147eb41458b29ae8
      path: modules/hal/nxp
    - name: open-amp
      revision: 724f7e2a4519d7e1d40ef330042682dea950c991
      path: modules/lib/open-amp
    - name: loramac-node
      revision: 29e516ec585b1a909af2b5f1c60d83e7d4d563e3
      path: modules/lib/loramac-node
    - name: openthread
      revision: a83d18cf18bc8cd431ad6704ad0bf0e6d08c99d7
      path: modules/lib/openthread
    - name: segger
      revision: 6fcf61606d6012d2c44129edc033f59331e268bc
      path: modules/debug/segger
    - name: tinycbor
      path: modules/lib/tinycbor
      revision: 40daca97b478989884bffb5226e9ab73ca54b8c4
    - name: tinycrypt
      path: modules/crypto/tinycrypt
      revision: 3e9a49d2672ec01435ffbf0d788db6d95ef28de0
    - name: littlefs
      path: modules/fs/littlefs
      revision: 0aefdda69d236cb01f932117c1f32e9da09c0ec3
    - name: mipi-sys-t
      path: modules/debug/mipi-sys-t
      revision: 957d46bc3ce0d5f628f0d525196bb4db207672ee
    - name: nrf_hw_models
      path: modules/bsim_hw_models/nrf_hw_models
      revision: fec69703cb1ca06fcdab6d5fde01274f0fc5c759
    - name: hal_xtensa
      revision: e7a57d0c252f9c5f3cab9d5ceadda8753cacee5b
      path: modules/hal/xtensa
    - name: edtt
      path: tools/edtt
      revision: c39888ff74acf421eeff9a7514fa9b172c3373f7
    - name: trusted-firmware-m
      path: modules/tee/tfm
      revision: 7de2daa1967b2dc12cbe0fcc0171ac3064ea596b

  self:
    path: zephyr
    west-commands: scripts/west-commands.yml
