# yaml-language-server: $schema=https://raw.githubusercontent.com/Open-CMSIS-Pack/devtools/main/tools/packgen/schema/manifest.schema.json

#----------------------------------------------------------------------------
#  SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
#  SPDX-License-Identifier: Apache-2.0
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#----------------------------------------------------------------------------

# YML file to help generate a CMSIS pack for ml-embedded-eval-kit API.
# See the CMakeLists.txt in the same directory to see the targets that
# are included in the pack.
#
# Ideal usage: from the root of the repository
#
# ml-embedded-eval-kit $ packgen -s ./                          \ # Source dir (run this from repo root)
#           -v ./scripts/cmake/cmsis-pack-gen/use-case-api.yml  \ # This file's path
#           -o <path-to>/ml-embedded-eval-kit-pack              \ # Where to generate the output
#           -i <path-to>/tensorflow.tensorflow-lite-micro.pdsc  \ # Tensorflow packs' PDSC file
#           -i <path-to>/ARM.CMSIS.pdsc                         \ # CMSIS packs' PDSC file
#
# The PDSC files are the ones extracted from the downloaded packs (and is optional).
# packgen and packchk must be installed. See https://github.com/Open-CMSIS-Pack/devtools
# on how to build these tools.
#
# yaml-language-server: $schema=https://github.com/Open-CMSIS-Pack/devtools/blob/tools/toolbox/1.0.0/tools/packgen/schema/manifest.schema.json
#
build:
  - name: "build-dir"
    options: "cmake -DCMSIS_PACK_GEN_FLOW=ON"

packs:
  - name: "ml-embedded-eval-kit-uc-api"
    description: "ML sample use case APIs derived from ml-embedded-eval-kit"
    vendor: "ARM"
    license: "LICENSE_APACHE_2.0.txt"
    url: "https://git.mlplatform.org/ml/ethos-u/ml-embedded-evaluation-kit.git/plain/source/application/api/use_case/readme.md"

    requirements:
      packages:
        - attributes: {vendor: "tensorflow", name: "tensorflow-lite-micro", version: "1.22.8"}
        - attributes: {vendor: "ARM", name: "CMSIS", version: "5.9.0"}
        - attributes: {vendor: "ARM", name: "CMSIS-DSP", version: "1.14.4"}
        - attributes: {vendor: "ARM", name: "CMSIS-NN", version: "4.0.0"}

    releases:
      - version: "23.2.0"
        date: "2023-03-23"
        description: "23.02.0 release package"
      - version: "22.11.0"
        date: "2022-11-09"
        description: "22.11.0 release package"
      - version: "22.8.0-Beta"
        date: "2022-09-29"
        description: "Beta release package"
        url: "https://git.mlplatform.org/ml/ethos-u/ml-embedded-evaluation-kit.git/plain/resources/cmsis-packs/ARM.ml-embedded-eval-kit-uc-api.22.8.0-Beta.pack?h=refs/heads/main"

    taxonomy:
      - attributes: {Cclass: "ML Eval Kit", doc: "https://review.mlplatform.org/plugins/gitiles/ml/ethos-u/ml-embedded-evaluation-kit/+/refs/heads/main/Readme.md"}
        description: "A collection of end-to-end examples provided by Arm for Arm Cortex-M CPU and Arm Ethos-U NPU targets."

    components:
      - name: log
        target: log
        attributes: { Cclass: "ML Eval Kit", Cgroup: "Common", Csub: "Log", Cversion: "1.0.0" }
        description: "Logging header-only utility"
        files:
          - name: "source/log/include/"
            attributes: {category: include}

      - name: arm_math
        target: arm_math
        attributes: { Cclass: "ML Eval Kit", Cgroup: "Common", Csub: "Math", Cversion: "1.0.0" }
        description: "Math function helpers dependent on CMSIS-DSP."
        conditions:
          - require: { Cclass: "CMSIS", Cgroup: "DSP"}

      - name: common_api
        target: common_api
        attributes: {Cclass: "ML Eval Kit", Cgroup: "Common", Csub: "API", Cversion: "1.0.0"}
        description: "Common API"
        dependencies: ["arm_math", "log"]
        conditions:
          - require: { Cclass: "Machine Learning", Cgroup: "TensorFlow" }

      - name: ad_api
        target: ad_api
        attributes: {Cclass: "ML Eval Kit", Cgroup: "Vibration", Csub: "Anomaly detection", Cversion: "1.0.0"}
        description: "Anomaly detection use case API."
        dependencies: common_api

      - name: asr_api
        target: asr_api
        attributes: {Cclass: "ML Eval Kit", Cgroup: "Voice", Csub: "Automatic speech recognition", Cversion: "1.0.0"}
        description: "ASR use case API."
        dependencies: common_api

      - name: img_class_api
        target: img_class_api
        attributes: {Cclass: "ML Eval Kit", Cgroup: "Vision", Csub: "Image classification", Cversion: "1.0.0"}
        description: "Image classification use case API."
        dependencies: common_api

      - name: inference_runner_api
        target: inference_runner_api
        attributes: {Cclass: "ML Eval Kit", Cgroup: "Generic", Csub: "Inference runner", Cversion: "1.0.0"}
        description: "Generic inference runner use case API."
        dependencies: common_api

      - name: kws_api
        target: kws_api
        attributes: {Cclass: "ML Eval Kit", Cgroup: "Voice", Csub: "Keyword spotting", Cversion: "1.0.0"}
        description: "KWS use case API."
        dependencies: common_api

      - name: noise_reduction_api
        target: noise_reduction_api
        attributes: {Cclass: "ML Eval Kit", Cgroup: "Voice", Csub: "Noise reduction", Cversion: "1.0.0"}
        description: "RNN Noise use case API."
        dependencies: common_api

      - name: object_detection_api
        target: object_detection_api
        attributes: {Cclass: "ML Eval Kit", Cgroup: "Vision", Csub: "Object detection", Cversion: "1.0.0"}
        description: "Object detection use case API."
        dependencies: common_api

      - name: vww_api
        target: vww_api
        attributes: {Cclass: "ML Eval Kit", Cgroup: "Vision", Csub: "Person detection", Cversion: "1.0.0"}
        description: "Visual wake word use case API."
        dependencies: common_api
