# `Feetech.Error`
[🔗](https://github.com/beam-bots/feetech/blob/main/lib/feetech/error.ex#L5)

Error handling for Feetech servo responses.

The status byte in response packets contains bit flags indicating
various error conditions and the torque enable state.

## Status Byte Bits

| Bit | Name | Description |
|-----|------|-------------|
| 0 | Voltage | Over/under voltage detected |
| 1 | Sensor | Magnetic encoder error |
| 2 | Temperature | Over temperature |
| 3 | Current | Over current |
| 4 | Torque | Torque is enabled (not an error) |
| 5 | Overload | Overload protection triggered |

# `error`

```elixir
@type error() ::
  :voltage_error
  | :sensor_error
  | :temperature_error
  | :current_error
  | :overload_error
  | :no_response
  | :invalid_checksum
  | :invalid_packet
  | :incomplete_packet
  | :invalid_header
  | :unknown_register
  | :timeout
```

# `status_info`

```elixir
@type status_info() :: %{errors: [error()], torque_enabled: boolean()}
```

# `describe`

```elixir
@spec describe(error()) :: String.t()
```

Converts error atoms to human-readable descriptions.

# `error?`

```elixir
@spec error?(non_neg_integer()) :: boolean()
```

Returns true if the status byte indicates any error.

# `parse_status`

```elixir
@spec parse_status(non_neg_integer()) :: status_info()
```

Parses a status byte into a structured result.

Returns a map with detected errors and torque state.

## Examples

    iex> Feetech.Error.parse_status(0x00)
    %{errors: [], torque_enabled: false}

    iex> Feetech.Error.parse_status(0x10)
    %{errors: [], torque_enabled: true}

    iex> Feetech.Error.parse_status(0x25)
    %{errors: [:voltage_error, :temperature_error, :overload_error], torque_enabled: false}

---

*Consult [api-reference.md](api-reference.md) for complete listing*
