#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you 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.
#

pkg.name: hw/usb/tinyusb
pkg.description: >
    Package provides task for TinyUSB.
    This package requires API TINYUSB_HW_INIT that will
    provide function tinyusb_hardware_init().

pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
pkg.homepage: "http://mynewt.apache.org/"
pkg.keywords:
    - usb
    - tinyusb

pkg.deps:
    - "@apache-mynewt-core/kernel/os"
    - "@tinyusb/tinyusb"

pkg.init:
    tinyusb_start: 'MYNEWT_VAL(USBD_SYSINIT_STAGE)'

pkg.deps.USBD_STD_DESCRIPTORS:
    - "@apache-mynewt-core/hw/usb/tinyusb/std_descriptors"
pkg.deps.'MCU_TARGET == "nRF52840"':
    - "@apache-mynewt-core/hw/usb/tinyusb/nrf5x"
pkg.deps.MCU_STM32F4:
    - "@apache-mynewt-core/hw/usb/tinyusb/synopsys"
pkg.deps.MCU_STM32L4:
    - "@apache-mynewt-core/hw/usb/tinyusb/synopsys"
pkg.deps.MCU_STM32F1:
    - "@apache-mynewt-core/hw/usb/tinyusb/stm32_fsdev"
pkg.deps.'(MCU_TARGET == "DA14691" || MCU_TARGET == "DA14695" || MCU_TARGET == "DA14697" || MCU_TARGET == "DA14699")':
    - "@apache-mynewt-core/hw/usb/tinyusb/da146xx"

pkg.req_apis:
    - TINYUSB_HW_INIT
