#
# 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: boot/boot_serial
pkg.description: The boot_serial library is used when downloading image over serial port.
pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
pkg.homepage: "http://mynewt.apache.org/"
pkg.keywords:
    - boot
    - bootloader

pkg.deps:
    - "@apache-mynewt-core/hw/hal"
    - "@apache-mynewt-core/kernel/os"
    - "@apache-mynewt-core/encoding/tinycbor"
    - "@apache-mynewt-core/encoding/base64"
    - "@apache-mynewt-core/sys/flash_map"
    - "@apache-mynewt-core/util/crc"

pkg.req_apis:
    - bootloader

pkg.cflags.SELFTEST:
    - -DBOOT_SERIAL_DETECT_PIN=0
    - -DBOOT_SERIAL_DETECT_PIN_VAL=1
    - -DBOOT_SERIAL_DETECT_PIN_CFG=0

pkg.init:
    boot_serial_os_dev_init: 0
    boot_serial_pkg_init: 200
