# 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: canopennode
      revision: 53d3415c14d60f8f4bfca54bfbc5d5a667d7e724
      path: modules/lib/canopennode
    - name: chre
      revision: 0edfe2c2ec656afb910cfab8ed59a5ffd59b87c8
      path: modules/lib/chre
    - name: civetweb
      revision: 094aeb41bb93e9199d24d665ee43e9e05d6d7b1c
      path: modules/lib/civetweb
    - name: cmsis
      revision: 5f86244bad4ad5a590e084f0e72ba7a1416c2edf
      path: modules/hal/cmsis
      groups:
        - hal
    - name: edtt
      revision: 1ea61a390d2bfcf3b2ecdba8f8b0b98dfdffbd11
      path: tools/edtt
      groups:
        - tools
    - name: fatfs
      revision: 9237454a30bcf6e14a89db174e8dbeb8f31831d2
      path: modules/fs/fatfs
      groups:
        - fs
    - name: fff
      revision: 6ce5ba26486e93d5b7696a3e23f0585932c14b16
      path: modules/lib/fff
      groups:
        - ci
    - name: hal_altera
      revision: 23c1c1dd7a0c1cc9a399509d1819375847c95b97
      path: modules/hal/altera
      groups:
        - hal
    - name: hal_atmel
      revision: 78c5567c05b6b434dd7d98f49156319df4217bac
      path: modules/hal/atmel
      groups:
        - hal
    - name: hal_cypress
      revision: 81a059f21435bc7e315bccd720da5a9b615bbb50
      path: modules/hal/cypress
      groups:
        - hal
    - name: hal_espressif
      revision: a7dc3c72291a387e0eb3b268d07df6eb70811a84
      path: modules/hal/espressif
      west-commands: west/west-commands.yml
      groups:
        - hal
    - name: hal_gigadevice
      revision: 63a72ca90b7e0d7257211ddc5c79e8c0b940371b
      path: modules/hal/gigadevice
      groups:
        - hal
    - name: hal_infineon
      revision: f1fa8241f8786198ba41155413243de36ed878a5
      path: modules/hal/infineon
      groups:
        - hal
    - name: hal_microchip
      revision: 5d079f1683a00b801373bbbbf5d181d4e33b30d5
      path: modules/hal/microchip
      groups:
        - hal
    - name: hal_nordic
      revision: a85bb3676d61d1ae202088e0d3fec556056b2c9e
      path: modules/hal/nordic
      groups:
        - hal
    - name: hal_nuvoton
      revision: b4d31f33238713a568e23618845702fadd67386f
      path: modules/hal/nuvoton
      groups:
        - hal
    - name: hal_nxp
      revision: d287347745db7ccc85d267fddf3ce4f89a98ec1f
      path: modules/hal/nxp
      groups:
        - hal
    - name: hal_openisa
      revision: 40d049f69c50b58ea20473bee14cf93f518bf262
      path: modules/hal/openisa
      groups:
        - hal
    - name: hal_quicklogic
      revision: b3a66fe6d04d87fd1533a5c8de51d0599fcd08d0
      path: modules/hal/quicklogic
      repo-path: hal_quicklogic
      groups:
        - hal
    - name: hal_rpi_pico
      path: modules/hal/rpi_pico
      revision: 191f5ba46fda49523cdaaef27583d1c875ba2c36
      groups:
        - hal
    - name: hal_silabs
      revision: be39d4eebeddac6e18e9c0c3ba1b31ad1e82eaed
      path: modules/hal/silabs
      groups:
        - hal
    - name: hal_st
      revision: 52a522ca4a8a9ec1e9bb5bb514e1ab6f102863fe
      path: modules/hal/st
      groups:
        - hal
    - name: hal_stm32
      revision: e31e840271efc9939c8650598e169aa314208bdd
      path: modules/hal/stm32
      groups:
        - hal
    - name: hal_telink
      revision: ffcfd6282aa213f1dc0848dbca6279b098f6b143
      path: modules/hal/telink
      groups:
        - hal
    - name: hal_ti
      revision: a29a32b806a0a6380b785b950cb18229025ed699
      path: modules/hal/ti
      groups:
        - hal
    - name: hal_xtensa
      revision: 0e577021bb66e644afd067cd9f7c71ab11b62b3d
      path: modules/hal/xtensa
      groups:
        - hal
    - name: libmetal
      revision: 850a3c3fd5bc655987021dc9106d8e8cd0f7e061
      path: modules/hal/libmetal
      groups:
        - hal
    - name: liblc3codec
      revision: 3951cf1b71ff3be086c9b9b595e473e12301337c
      path: modules/lib/liblc3codec
    - name: littlefs
      path: modules/fs/littlefs
      groups:
        - fs
      revision: 7b2cf4ba759bd530b543644e2790b07cf20cd6aa
    - name: loramac-node
      revision: 12019623bbad9eb54fe51066847a7cbd4b4eac57
      path: modules/lib/loramac-node
    - name: lvgl
      revision: f6541c6015662715d331a5cf71216707122e4e22
      path: modules/lib/gui/lvgl
    - name: lz4
      revision: 8e303c264fc21c2116dc612658003a22e933124d
      path: modules/lib/lz4
    - name: mbedtls
      revision: 3e3e58a92de76069730c63e0d524f40fea948a61
      path: modules/crypto/mbedtls
      groups:
        - crypto
    - name: mcuboot
      revision: e86f575f68fdac2cab1898e0a893c8c6d8fd0fa1
      path: bootloader/mcuboot
    - name: mipi-sys-t
      path: modules/debug/mipi-sys-t
      groups:
        - debug
      revision: a5163c1800a5243f8b05d84c942da008df4cb666
    - name: nanopb
      revision: d148bd26718e4c10414f07a7eb1bd24c62e56c5d
      path: modules/lib/nanopb
    - name: net-tools
      revision: f49bd1354616fae4093bf36e5eaee43c51a55127
      path: tools/net-tools
      groups:
        - tools
    - name: nrf_hw_models
      revision: b8cea37dbdc8fc58cc14b4e19fa850877a9da520
      path: modules/bsim_hw_models/nrf_hw_models
    - name: open-amp
      revision: 8d53544871e1f300c478224faca6be8384ab0d04
      path: modules/lib/open-amp
    - name: openthread
      revision: d4d46ba94290bcf93cc849b832f0ad305c72c473
      path: modules/lib/openthread
    - name: segger
      revision: 3a52ab222133193802d3c3b4d21730b9b1f1d2f6
      path: modules/debug/segger
      groups:
        - debug
    - name: sof
      revision: 2efc3ea41c0074c6dab5f376fafaa26f52c25c75
      path: modules/audio/sof
    - name: tflite-micro
      revision: 9156d050927012da87079064db59d07f03b8baf6
      path: modules/lib/tflite-micro
      repo-path: tflite-micro
    - name: tinycbor
      revision: 9e1f34bc08123aaad7666d3652aaa839e8178b3b
      path: modules/lib/tinycbor
    - name: tinycrypt
      revision: 3e9a49d2672ec01435ffbf0d788db6d95ef28de0
      path: modules/crypto/tinycrypt
      groups:
        - crypto
    - name: TraceRecorderSource
      revision: e8ca3b6a83d19b2fc4738a0d9607190436e5e452
      path: modules/debug/TraceRecorder
      groups:
        - debug
    - name: trusted-firmware-m
      revision: bfbd7803b0ed77680e220e44ce6fb363ef2a4224
      path: modules/tee/tf-m/trusted-firmware-m
      groups:
        - tee
    - name: tf-m-tests
      revision: 52814181f0fde6d1422fac204d42cde30c62e40e
      path: modules/tee/tf-m/tf-m-tests
      groups:
        - tee
    - name: psa-arch-tests
      revision: 4f45df539d3d98b6e38e112be9936be4a2b8a97c
      path: modules/tee/tf-m/psa-arch-tests
      groups:
        - tee
    - name: zcbor
      revision: 882c489a7d9fdfff31d27666914a78a9eb6976d7
      path: modules/lib/zcbor
    - name: zscilib
      path: modules/lib/zscilib
      revision: 12bfe3f0a9fcbfe3edab7eabc9678b6c62875d34

  group-filter:
    - -ci

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