#
# 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: net/oic
pkg.description: OCF contstrained iotivity stack
pkg.author: "https://github.com/iotivity/iotivity-constrained"
pkg.homepage: "https://www.iotivity.org/"
pkg.keywords:

pkg.deps:
    - "@apache-mynewt-mcumgr/cborattr"
    - "@apache-mynewt-core/encoding/tinycbor"
    - "@apache-mynewt-core/kernel/os"
    - "@apache-mynewt-core/sys/log/modlog"

pkg.req_apis:
    - stats

pkg.deps.OC_TRANSPORT_GATT:
    - "@apache-mynewt-nimble/nimble/host"
    - "@apache-mynewt-nimble/nimble/host/services/gap"
    - "@apache-mynewt-nimble/nimble/host/services/gatt"

pkg.deps.OC_TRANSPORT_IP:
    - "@apache-mynewt-core/net/ip/mn_socket"

pkg.deps.OC_TRANSPORT_SERIAL:
    - "@apache-mynewt-core/sys/shell"

pkg.deps.OC_TRANSPORT_LORA:
    - "@apache-mynewt-core/net/lora/node"

# remove debug option to save logging
pkg.cflags:
    - -std=c99
    - -DSECURE=0
    - "-I@apache-mynewt-core/net/oic/src/port/mynewt"
    - "-I@apache-mynewt-core/net/oic/include/oic"

pkg.init:
    oc_init: 'MYNEWT_VAL(OC_SYSINIT_STAGE_MAIN)'
    oc_register_ip6: 'MYNEWT_VAL(OC_SYSINIT_STAGE_IP6)'
    oc_register_ip4: 'MYNEWT_VAL(OC_SYSINIT_STAGE_IP4)'
    oc_register_serial: 'MYNEWT_VAL(OC_SYSINIT_STAGE_SERIAL)'
    oc_register_gatt: 'MYNEWT_VAL(OC_SYSINIT_STAGE_GATT)'
    oc_register_lora: 'MYNEWT_VAL(OC_SYSINIT_STAGE_LORA)'
    oc_register_tcp4: 'MYNEWT_VAL(OC_SYSINIT_STAGE_TCP4)'
