# 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.vals:
  # OSDP specific configuration
  OSDP_MODE_PD: 1 # set in peripheral device mode
  OSDP_SC_ENABLED: 1 # enable secure channel
  OSDP_UART_DEV_NAME: '"uart0"' # set uart device for OSDP communication
  TRNG: 1 # for SC mode

# PD mode config
syscfg.vals.OSDP_MODE_PD:
  OSDP_PD_ADDRESS: 101
  OSDP_PD_ID_VENDOR_CODE: 0xCAFEBABE
  OSDP_PD_ID_MODEL: 1
  OSDP_PD_ID_VERSION: 1
  OSDP_PD_ID_SERIAL_NUMBER: 0xDEADBEAF
  OSDP_PD_ID_FIRMWARE_VERSION: 0x0000F00D
  # PD mode key set to none, i.e. in install mode
  OSDP_PD_SCBK: '"NONE"'

# CP mode config
syscfg.vals.OSDP_MODE_CP:
  OSDP_MASTER_KEY: '"01020304050607080910111213141516"'
