# 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.
#

syscfg.defs:
    LIS2DW12_INT1_PIN_HOST:
        description: 'Interrupt pin number on host device connected to INT1 on device'
        value: 1
    LIS2DW12_INT1_PIN_DEVICE:
        description: 'Interrupt pin number 1 or 2 on accelerometer device'
        value: 1
    LIS2DW12_INT1_CFG_ACTIVE:
        description: 'Set 0 for active-low, 1 for active-high'
        value: 1
    LIS2DW12_SHELL_ITF_NUM:
        description: 'Shell interface number for the LIS2DW12'
        value: 0
    LIS2DW12_SHELL_ITF_TYPE:
        description: 'Shell interface type for the LIS2DW12'
        value: 1
    LIS2DW12_SHELL_CSPIN:
        description: 'CS pin for LIS2DW12'
        value : -1
    LIS2DW12_SHELL_ITF_ADDR:
        description: 'Slave address for LIS2DW12'
        value : 0x18
    LIS2DW12_CLI:
        description: 'Enable shell support for the LIS2DW12'
        value: 0
    LIS2DW12_NOTIF_STATS:
        description: 'Enable notification stats'
        value: 1
    LIS2DW12_ITF_LOCK_TMO:
        description: 'LIS2DW12 interface lock timeout in milliseconds'
        value: 1000
    LIS2DW12_LOG_MODULE:
        description: 'Numeric module ID to use for LIS2DW12 log messages'
        value: 213
    LIS2DW12_I2C_RETRIES:
        description: >
            Number of retries to use for failed I2C communication.  A retry is
            used when the LIS2DW12 sends an unexpected NACK.
        value: 2
    LIS2DW12_I2C_TIMEOUT_TICKS:
        description: >
            Number of OS ticks to wait for each I2C transaction to complete.
        value: 3
