# Copyright 2021 The Pigweed Authors
#
# 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
#
#     https://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.

config PIGWEED_SYS_IO
    bool "Enable the Zephyr system IO module"
    select PIGWEED_SPAN
    select PIGWEED_STATUS
    help
      The system I/O module uses the Zephyr console under the hood to perform
      I/O operations.

if PIGWEED_SYS_IO

config PIGWEED_SYS_IO_INIT_PRIORITY
    int "The initialization priority of the system I/O module"
    default 1
    help
      The system I/O module uses the APPLICATION initialization level. Use this
      config to set the priority.

config PIGWEED_SYS_IO_USB
    bool "Use the USB for I/O"

endif # PIGWEED_SYS_IO
