# 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: civetweb
      revision: 094aeb41bb93e9199d24d665ee43e9e05d6d7b1c
      path: modules/lib/civetweb
    - name: cmsis
      revision: ed63b704bbfaceb71220557b658304c5ea3d5b88
      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: 3373bdddba3857d34c22c0d493da25bdb8630071
      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: 870d05e6a64ea9548da6b907058b03c8c9420826
      path: modules/hal/microchip
      groups:
        - hal
    - name: hal_nordic
      revision: 4464a6f96b4a6a1b7ac5ca1b8c3caf6a81d25e57
      path: modules/hal/nordic
      groups:
        - hal
    - name: hal_nuvoton
      revision: b4d31f33238713a568e23618845702fadd67386f
      path: modules/hal/nuvoton
      groups:
        - hal
    - name: hal_nxp
      revision: ca1610119ca147b2cd1b875238881e4abb805297
      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: 575de9d461aa6f430cf62c58a053675377e700f3
      path: modules/hal/st
      groups:
        - hal
    - name: hal_stm32
      revision: 5945d50882a5133e6cab918d1214c3be373b2c6a
      path: modules/hal/stm32
      groups:
        - hal
    - name: hal_telink
      revision: ffcfd6282aa213f1dc0848dbca6279b098f6b143
      path: modules/hal/telink
      groups:
        - hal
    - name: hal_ti
      revision: 2a5891d874cae92fcac04f9822957ac0785fe835
      path: modules/hal/ti
      groups:
        - hal
    - name: hal_xtensa
      revision: 0e577021bb66e644afd067cd9f7c71ab11b62b3d
      path: modules/hal/xtensa
      groups:
        - hal
    - name: libmetal
      revision: c6efe091dfe02704097586a522969b5a4cc197bd
      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: a2e17073e5208c221e24e3c2b3b6c473e878bd1e
      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: 2f51407b2ac68e2be41af322a42905063f009d75
    - 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: 732203ee338b4700612dada157ca3e2c15a4dd10
      path: modules/lib/openthread
    - name: segger
      revision: 3a52ab222133193802d3c3b4d21730b9b1f1d2f6
      path: modules/debug/segger
      groups:
        - debug
    - name: sof
      revision: ab715d8e347fcbbc253ec5cae1c5295043821727
      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: 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: 0aab24602cbef30f6422e7ef1066a8473073e586
      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
