# 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: 1052dae561497bef901f931ef75e117c9224aecd
      path: modules/lib/canopennode
    - name: civetweb
      revision: 094aeb41bb93e9199d24d665ee43e9e05d6d7b1c
      path: modules/lib/civetweb
    - name: cmsis
      revision: b0612c97c1401feeb4160add6462c3627fe90fc7
      path: modules/hal/cmsis
      groups:
        - hal
    - name: edtt
      revision: c94f63865a803b18a2ab9eca70d2a9ab881130f6
      path: tools/edtt
      groups:
        - tools
    - name: fatfs
      revision: 09a9d913c61dccbb8ff92d8943b452c614ac5292
      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: 9f78f520f6cbb997e5b44fe8ab17dd5bf2448095
      path: modules/hal/atmel
      groups:
        - hal
    - name: hal_cypress
      revision: 81a059f21435bc7e315bccd720da5a9b615bbb50
      path: modules/hal/cypress
      groups:
        - hal
    - name: hal_espressif
      revision: bcd7565ffa390d5774dc2fbe71a002faa9a7d082
      path: modules/hal/espressif
      west-commands: west/west-commands.yml
      groups:
        - hal
    - name: hal_gigadevice
      revision: 242a7f4be7a3136606c7a65169775f7ef85ad444
      path: modules/hal/gigadevice
      groups:
        - hal
    - name: hal_infineon
      revision: f1fa8241f8786198ba41155413243de36ed878a5
      path: modules/hal/infineon
      groups:
        - hal
    - name: hal_microchip
      revision: 870d05e6a64ea9548da6b907058b03c8c9420826
      path: modules/hal/microchip
      groups:
        - hal
    - name: hal_nordic
      revision: a42b016d7c7610489f5f8c79773fedc05ba352ee
      path: modules/hal/nordic
      groups:
        - hal
    - name: hal_nuvoton
      revision: b4d31f33238713a568e23618845702fadd67386f
      path: modules/hal/nuvoton
      groups:
        - hal
    - name: hal_nxp
      revision: aee8eaa8cf4264321c2a816a6d165a3351d1c434
      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_silabs
      revision: be39d4eebeddac6e18e9c0c3ba1b31ad1e82eaed
      path: modules/hal/silabs
      groups:
        - hal
    - name: hal_st
      revision: 575de9d461aa6f430cf62c58a053675377e700f3
      path: modules/hal/st
      groups:
        - hal
    - name: hal_stm32
      revision: 91531028be0bfa554ae1dd9e2b5d3ed6fd7287c3
      path: modules/hal/stm32
      groups:
        - hal
    - name: hal_telink
      revision: ffcfd6282aa213f1dc0848dbca6279b098f6b143
      path: modules/hal/telink
      groups:
        - hal
    - name: hal_ti
      revision: 1992a4c536554c4f409c36896eda6abdc414d277
      path: modules/hal/ti
      groups:
        - hal
    - name: hal_xtensa
      revision: 0e577021bb66e644afd067cd9f7c71ab11b62b3d
      path: modules/hal/xtensa
      groups:
        - hal
    - name: libmetal
      revision: f237c9d420a51cc43bc37d744e41191ad613f348
      path: modules/hal/libmetal
      groups:
        - hal
    - name: littlefs
      path: modules/fs/littlefs
      groups:
        - fs
      revision: 33509ed9c3d369cdb9d909cd40c5eea8f64a902c
    - name: loramac-node
      revision: 12019623bbad9eb54fe51066847a7cbd4b4eac57
      path: modules/lib/loramac-node
    - name: lvgl
      revision: 783c1f78c8e39751fe89d0883c8bce7336f55e94
      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: 399720d1cabd26c4356445d351f263b31e942961
      path: bootloader/mcuboot
    - name: mipi-sys-t
      path: modules/debug/mipi-sys-t
      groups:
        - debug
      revision: d9da086b11cda494d85f4d8a9829f505c2d5e380
    - 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: cfd050ff38a9d028dc211690b2ec35971128e45e
      path: modules/lib/open-amp
    - name: openthread
      revision: b7aa7686d3f4e326bd25abc234b209159977c26d
      path: modules/lib/openthread
    - name: segger
      revision: 3a52ab222133193802d3c3b4d21730b9b1f1d2f6
      path: modules/debug/segger
      groups:
        - debug
    - name: sof
      revision: 500d77e0ac84ac2c969e0d4b2142cca192e893bc
      path: modules/audio/sof
    - name: tflite-micro
      revision: 9156d050927012da87079064db59d07f03b8baf6
      path: modules/lib/tflite-micro
      repo-path: tflite-micro
    - name: tinycbor
      revision: 40daca97b478989884bffb5226e9ab73ca54b8c4
      path: modules/lib/tinycbor
    - name: tinycrypt
      revision: 3e9a49d2672ec01435ffbf0d788db6d95ef28de0
      path: modules/crypto/tinycrypt
      groups:
        - crypto
    - name: TraceRecorderSource
      revision: 36c577727642457b0db7274298a4b96558374832
      path: modules/debug/TraceRecorder
      groups:
        - debug
    - name: trusted-firmware-m
      revision: c8134809a9439571c54d36ef39210270dbee8f67
      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: 186cba2543dff73d0cda5509d26f02a0b39ee66e
      path: modules/tee/tf-m/psa-arch-tests
      groups:
        - tee
    - name: zscilib
      path: modules/lib/zscilib
      revision: 12bfe3f0a9fcbfe3edab7eabc9678b6c62875d34

  group-filter:
    - -ci

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