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

#----------------------------------------------------------------------------
#  SPDX-FileCopyrightText: Copyright 2022 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.5-rc4"}
        - attributes: {vendor: "ARM", name: "CMSIS", version: "5.9.0"}

    releases:
      - 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
