# 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
    - name: civetweb
      url-base: https://github.com/civetweb

  #
  # Please add items below based on alphabetical order
  projects:
    - name: hal_atmel
      revision: 04ff67a0826a51041e51034faf8fc4d3eeacd846
      path: modules/hal/atmel
    - name: ci-tools
      revision: d56f2dd3510e20fa8cf4aad442495c08a658113f
      path: tools/ci-tools
    - name: civetweb
      remote: civetweb
      revision: 99129c5efc907ea613c4b73ccff07581feb58a7a
      path: modules/lib/civetweb
    - name: esp-idf
      revision: 6835bfc741bf15e98fb7971293913f770df6081f
      path: modules/hal/esp-idf
    - name: fatfs
      revision: df96914dd989907f3a5de4cb95b116c2f305820d
      path: modules/fs/fatfs
    - name: hal_qmsi
      revision: 9195fe6f97e4f7f25a3fc9e5a515f1b7af13762c
      path: modules/hal/qmsi
    - name: hal_cypress
      revision: a12d92816a53a521d79cefcf5c38b9dc8a4fed6e
      path: modules/hal/cypress
    - name: hal_nordic
      revision: 7bf2d404d0bf7f36d77d5090b5207f8b4676776c
      path: modules/hal/nordic
    - name: hal_openisa
      revision: be5c01f86c96500def5079bcc58d2baefdffb6c8
      path: modules/hal/openisa
    - name: hal_microchip
      revision: a92582bc65504fb1e8c9d2c86ec2c249d9203942
      path: modules/hal/microchip
    - name: hal_silabs
      revision: 9151e614c23997074acd1096a3e8a9e5c255d5b9
      path: modules/hal/silabs
    - name: hal_st
      revision: 0ec40aed8087f26bd9ac1b70fb5a6c326a6451aa
      path: modules/hal/st
    - name: hal_stm32
      revision: 272281a1990ec7097f1844778955ed60fe28662a
      path: modules/hal/stm32
    - name: hal_ti
      revision: 7a82e93e14766ef6e42df9915ea2ab8e3b952a8b
      path: modules/hal/ti
    - name: libmetal
      revision: 45e630d6152824f807d3f919958605c4626cbdff
      path: modules/hal/libmetal
    - name: lvgl
      revision: 6e3316da412649f02d133231078427e452f65db6
      path: modules/lib/gui/lvgl
    - name: mbedtls
      revision: 4bba3b845453033b7ac9ecabb6cf694d8c1381a1
      path: modules/crypto/mbedtls
    - name: mcumgr
      revision: 84934959d2d1722a23b7e7e200191ae4a6f96168
      path: modules/lib/mcumgr
    - name: net-tools
      revision: 30b7efa827b04d2e47840716b0372737fe7d6c92
      path: tools/net-tools
    - name: nffs
      revision: bc62a2fa9d98ddb5d633c932ea199bc68e10f194
      path: modules/fs/nffs
    - name: hal_nxp
      revision: 5852d8f66e454f66f0a8484a9f2309f392a78026
      path: modules/hal/nxp
    - name: open-amp
      revision: 9b591b289e1f37339bd038b5a1f0e6c8ad39c63a
      path: modules/lib/open-amp
    - name: openthread
      revision: 0dbecf508e7a79aae8ed9631f1a63fc65478b213
      path: modules/lib/openthread
    - name: segger
      revision: 6fcf61606d6012d2c44129edc033f59331e268bc
      path: modules/debug/segger
    - name: tinycbor
      path: modules/lib/tinycbor
      revision: 31ae89e4b768612722620cb6cb173a0de4a19cc9
    - name: littlefs
      path: modules/fs/littlefs
      revision: fe9572dd5a9fcf93a249daa4233012692bd2881d

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