# {py:mod}`haniwers.v1.port.model`

```{py:module} haniwers.v1.port.model
```

```{autodoc2-docstring} haniwers.v1.port.model
:allowtitles:
```

## Module Contents

### Classes

````{list-table}
:class: autosummary longtable
:align: left

* - {py:obj}`DetectorData <haniwers.v1.port.model.DetectorData>`
  - ```{autodoc2-docstring} haniwers.v1.port.model.DetectorData
    :summary:
    ```
* - {py:obj}`FlashInfo <haniwers.v1.port.model.FlashInfo>`
  - ```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo
    :summary:
    ```
* - {py:obj}`TestResult <haniwers.v1.port.model.TestResult>`
  - ```{autodoc2-docstring} haniwers.v1.port.model.TestResult
    :summary:
    ```
````

### API

`````{py:class} DetectorData
:canonical: haniwers.v1.port.model.DetectorData

```{autodoc2-docstring} haniwers.v1.port.model.DetectorData
```

````{py:attribute} top
:canonical: haniwers.v1.port.model.DetectorData.top
:type: int
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.DetectorData.top
```

````

````{py:attribute} mid
:canonical: haniwers.v1.port.model.DetectorData.mid
:type: int
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.DetectorData.mid
```

````

````{py:attribute} btm
:canonical: haniwers.v1.port.model.DetectorData.btm
:type: int
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.DetectorData.btm
```

````

````{py:attribute} adc
:canonical: haniwers.v1.port.model.DetectorData.adc
:type: int
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.DetectorData.adc
```

````

````{py:attribute} tmp
:canonical: haniwers.v1.port.model.DetectorData.tmp
:type: float
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.DetectorData.tmp
```

````

````{py:attribute} atm
:canonical: haniwers.v1.port.model.DetectorData.atm
:type: float
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.DetectorData.atm
```

````

````{py:attribute} hmd
:canonical: haniwers.v1.port.model.DetectorData.hmd
:type: float
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.DetectorData.hmd
```

````

````{py:method} from_line(line: str) -> haniwers.v1.port.model.DetectorData
:canonical: haniwers.v1.port.model.DetectorData.from_line
:classmethod:

```{autodoc2-docstring} haniwers.v1.port.model.DetectorData.from_line
```

````

````{py:method} is_valid() -> bool
:canonical: haniwers.v1.port.model.DetectorData.is_valid

```{autodoc2-docstring} haniwers.v1.port.model.DetectorData.is_valid
```

````

`````

`````{py:class} FlashInfo
:canonical: haniwers.v1.port.model.FlashInfo

```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo
```

````{py:attribute} manufacturer
:canonical: haniwers.v1.port.model.FlashInfo.manufacturer
:type: typing.Optional[str]
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo.manufacturer
```

````

````{py:attribute} device
:canonical: haniwers.v1.port.model.FlashInfo.device
:type: typing.Optional[str]
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo.device
```

````

````{py:attribute} flash_size
:canonical: haniwers.v1.port.model.FlashInfo.flash_size
:type: typing.Optional[str]
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo.flash_size
```

````

````{py:attribute} flash_voltage
:canonical: haniwers.v1.port.model.FlashInfo.flash_voltage
:type: typing.Optional[str]
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo.flash_voltage
```

````

````{py:attribute} chip_type
:canonical: haniwers.v1.port.model.FlashInfo.chip_type
:type: typing.Optional[str]
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo.chip_type
```

````

````{py:attribute} crystal
:canonical: haniwers.v1.port.model.FlashInfo.crystal
:type: typing.Optional[str]
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo.crystal
```

````

````{py:attribute} mac_address
:canonical: haniwers.v1.port.model.FlashInfo.mac_address
:type: typing.Optional[str]
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo.mac_address
```

````

````{py:method} is_healthy() -> bool
:canonical: haniwers.v1.port.model.FlashInfo.is_healthy

```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo.is_healthy
```

````

````{py:method} get_diagnosis() -> str
:canonical: haniwers.v1.port.model.FlashInfo.get_diagnosis

```{autodoc2-docstring} haniwers.v1.port.model.FlashInfo.get_diagnosis
```

````

`````

`````{py:class} TestResult
:canonical: haniwers.v1.port.model.TestResult

```{autodoc2-docstring} haniwers.v1.port.model.TestResult
```

````{py:attribute} success
:canonical: haniwers.v1.port.model.TestResult.success
:type: bool
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.TestResult.success
```

````

````{py:attribute} message
:canonical: haniwers.v1.port.model.TestResult.message
:type: str
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.TestResult.message
```

````

````{py:attribute} response_time
:canonical: haniwers.v1.port.model.TestResult.response_time
:type: typing.Optional[float]
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.TestResult.response_time
```

````

````{py:attribute} data_sample
:canonical: haniwers.v1.port.model.TestResult.data_sample
:type: typing.Optional[str]
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.TestResult.data_sample
```

````

````{py:attribute} error_type
:canonical: haniwers.v1.port.model.TestResult.error_type
:type: typing.Optional[str]
:value: >
   None

```{autodoc2-docstring} haniwers.v1.port.model.TestResult.error_type
```

````

````{py:method} success_result(response_time: float, data_sample: str) -> haniwers.v1.port.model.TestResult
:canonical: haniwers.v1.port.model.TestResult.success_result
:classmethod:

```{autodoc2-docstring} haniwers.v1.port.model.TestResult.success_result
```

````

````{py:method} failure_result(error_type: str, message: str) -> haniwers.v1.port.model.TestResult
:canonical: haniwers.v1.port.model.TestResult.failure_result
:classmethod:

```{autodoc2-docstring} haniwers.v1.port.model.TestResult.failure_result
```

````

````{py:method} format_for_display() -> str
:canonical: haniwers.v1.port.model.TestResult.format_for_display

```{autodoc2-docstring} haniwers.v1.port.model.TestResult.format_for_display
```

````

`````
