# Copyright 2024 Google LLC
#
# 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
#
#     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.

description: >
    Implement the HothState interface for monitoring.

properties:
    - name: ResetFlags
      type: uint32
      default: 0
      flags:
          - readonly
      description: >
          The reset flags of the last Hoth reset.
      errors:
          - self.Error.ExpectedInfoNotFound

    - name: UpTime
      type: uint64
      default: 0
      flags:
          - readonly
      description: >
          Number of microseconds since the last Hoth boot.
      errors:
          - self.Error.ExpectedInfoNotFound

    - name: RoInfoStrikes
      type: uint32
      default: 0
      flags:
          - readonly
      description: >
          The current INFO strike count in the RO region.
      errors:
          - self.Error.ExpectedInfoNotFound

    - name: RwInfoStrikes
      type: uint32
      default: 0
      flags:
          - readonly
      description: >
          The current INFO strike count in the RW region.
      errors:
          - self.Error.ExpectedInfoNotFound

    - name: PayloadUpdateFailureCode
      type: uint32
      default: 0
      flags:
          - readonly
      description: >
          The failure code of the most recent payload update.
      errors:
          - self.Error.ExpectedInfoNotFound

    - name: PayloadConfirmFailureCode
      type: uint32
      default: 0
      flags:
          - readonly
      description: >
          The failure code of the most recent payload confirm.
      errors:
          - self.Error.ExpectedInfoNotFound

    - name: FirmwareUpdateFailureCode
      type: uint32
      default: 0
      flags:
          - readonly
      description: >
          The failure code of the most recent hoth firmware update.
      errors:
          - self.Error.ExpectedInfoNotFound

    - name: FirmwareUpdateFailedMinor
      type: uint32
      default: 0
      flags:
          - readonly
      description: >
          The failed minor version of the most recent hoth firmware update.
      errors:
          - self.Error.ExpectedInfoNotFound

    - name: BootloaderUpdateFailureCode
      type: uint32
      default: 0
      flags:
          - readonly
      description: >
          The failure code of the most recent hoth bootloader update.
      errors:
          - self.Error.ExpectedInfoNotFound

    - name: HasPersistentPanicInfo
      type: boolean
      default: false
      flags:
          - readonly
      description: >
          Whether the Hoth device has a persistent panic record stored.
