#
# 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:
    TIMEPERSIST:
        description: >
            Report to other packages that timepersist() is available.
        value: 1
    TIMEPERSIST_SYSINIT_STAGE:
        description: >
            Sysinit stage for restoring persisted wallclock time.
        value: 501
    TIMEPERSIST_SYSDOWN_STAGE:
        description: >
            Sysinit stage for persisting wallclock time.
        value: 500
    TIMEPERSIST_FREQ:
        description: >
            How frequently should the wallclock be persisted.
            Unit is in seconds.
        value: 60

#
# You can use either nvreg or sys/config for time persistence.
#
    TIMEPERSIST_NVREG_INDEX:
        description: >
            Index of retained register to use (using hal_nvreg) for storing
            lower 32 bits of wallclock time.
        value: -1
    TIMEPERSIST_SYS_CONFIG:
        description: >
            Use sys/config to persist wallclock time.
        value: 0

syscfg.restrictions:
    - "TIMEPERSIST_SYS_CONFIG ^^ (TIMEPERSIST_NVREG_INDEX != -1)"
