> ## Documentation Index
> Fetch the complete documentation index at: https://docs.efference.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Enums

> Every public enumeration, with semantics

These enums live in `<ef/Enums.hpp>` and each has a `to_string()` overload. The
one exception is `ENCRYPTION_ALGORITHM`, which is declared in `<ef/Core.hpp>`
next to the structs that carry it and has no `to_string()`.

## ERROR\_CODE

Returned by every wire-touching call. Numeric blocks group the semantics:

### 0 · Success

| Value     | Meaning             |
| --------- | ------------------- |
| `SUCCESS` | operation succeeded |

### 10–19 · Informational (non-fatal, session survives)

| Value                          | Meaning                                   |
| ------------------------------ | ----------------------------------------- |
| `SENSOR_CONFIGURATION_CHANGED` | config changed mid-stream; SDK reconnects |
| `CONFIGURATION_FALLBACK`       | target config failed; fallback applied    |
| `DEVICE_REBOOTING`             | device rebooting, temporarily unreachable |
| `FAILED_TO_UPDATE`             | firmware update failed                    |
| `DEVICE_UP_TO_DATE`            | already on the latest firmware            |

### 20–39 · Setup & call sequencing

| Value                      | Meaning                                                                                 |
| -------------------------- | --------------------------------------------------------------------------------------- |
| `DEVICE_NOT_DETECTED`      | no device found                                                                         |
| `DEVICE_NOT_INITIALIZED`   | missing `open()`                                                                        |
| `DEVICE_NOT_AVAILABLE`     | detected but could not open                                                             |
| `INVALID_FIRMWARE`         | corrupted/unrecognized firmware image                                                   |
| `INVALID_FUNCTION_CALL`    | call illegal in the current `DEVICE_STATE`                                              |
| `INVALID_PASSWORD`         | control password rejected (challenge-response failed); any BLE link, or USB once locked |
| `INSUFFICIENT_PERMISSIONS` | USB access denied; install the udev rule                                                |
| `UNSUPPORTED`              | not supported in this build                                                             |
| `DEVICE_BUSY`              | device busy (recording or livestreaming); retry once idle                               |

### 40–59 · Sensor parameters & calibration

| Value                                                            | Meaning                                       |
| ---------------------------------------------------------------- | --------------------------------------------- |
| `INVALID_RESOLUTION` / `INVALID_FPS` / `UNSUPPORTED_COMPRESSION` | rejected against the device's capability menu |
| `CALIBRATION_FILE_NOT_AVAILABLE` / `INVALID_CALIBRATION_FILE`    | calibration missing / unreadable              |
| `POTENTIAL_CALIBRATION_ISSUE`                                    | runtime values suggest a calibration problem  |

### 60–79 · Hardware & transport

| Value                         | Meaning                                                                                                       |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `LOW_USB_BANDWIDTH`           | insufficient bandwidth (USB 2.0 port?)                                                                        |
| `CANNOT_START_CAMERA_STREAM`  | stream would not start (in use?)                                                                              |
| `COMMUNICATION_ERROR`         | a control round trip failed                                                                                   |
| `WIFI_NOT_CONNECTED`          | operation needs WiFi; device not associated                                                                   |
| `INSUFFICIENT_WIFI_BANDWIDTH` | selected format too large for the WiFi/UDP link (e.g. raw NV12); use an encoded codec, or stream raw over USB |

### 80–99 · Streaming & recording

| Value                                              | Meaning                                                                                         |
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| `CORRUPTED_FRAME`                                  | lossy/invalid frame, delivered only with `RuntimeParameters::return_partial`, otherwise dropped |
| `SESSION_RECORDING_ERROR`                          | recording failed                                                                                |
| `END_OF_BUFFER`                                    | MCAP replay exhausted                                                                           |
| `GRAB_TIMEOUT`                                     | no frame within `grab_timeout_ms`; non-fatal, keep looping                                      |
| `STORAGE_FULL`                                     | device storage below the free-space floor                                                       |
| `RECORDING_NOT_FOUND` / `RECORDING_ALREADY_EXISTS` | name errors                                                                                     |
| `DESTINATION_NOT_WRITABLE`                         | a download destination that cannot be created or written                                        |

### 100 · `UNKNOWN_FAILURE`

## Session & transport

| Enum               | Values                                                               | Notes                                                                                                                                                                    |
| ------------------ | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `INPUT_TYPE`       | `USB`, `STREAM`, `MCAP`                                              | transport in `InitParameters`                                                                                                                                            |
| `RESOLUTION`       | `HD1200` (1920×1200), `HD1080` (1920×1080), `SVGA` (960×600), `AUTO` | `AUTO` = device native. The enum defines the available names; the modes a given device accepts are listed in `capabilities.modes`                                        |
| `COMPRESSION_MODE` | `RAW`, `H264`, `H264_HQ`, `H265`, `H265_HQ`                          | `_HQ` = near-lossless tier                                                                                                                                               |
| `IMU_DATA`         | `RAW`, `CALIBRATED`, `BOTH`                                          | on-device IMU handling for a session; `RAW` records uncalibrated and carries the calibration as metadata, `CALIBRATED` applies `M*S*(x-b)` per sample, `BOTH` emits both |
| `FLIP_MODE`        | `ON`, `OFF`, `AUTO`                                                  | `AUTO` decides from IMU gravity                                                                                                                                          |
| `VIEW`             | `GRAY`, `BGR`, `RGB`, `BGRA`, `RGBA`, `NV12`                         | `retrieve_image()` output format                                                                                                                                         |
| `MAT_TYPE`         | `U8_C1`, `U8_C3`, `U8_C4`, `NV12`                                    | element layout of a `Mat`                                                                                                                                                |
| `MEM`              | `CPU`, `GPU`, `BOTH`                                                 | destination memory                                                                                                                                                       |

## State & classification

| Enum                            | Values                                                                                 | Notes                                                                                              |
| ------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| `DEVICE_STATE`                  | `CLOSED`, `IDLE`, `STREAMING`, `UPDATING`                                              | no UNKNOWN: unreadable state surfaces as an `ERROR_CODE`, `get_state()` keeps the last known value |
| `MOTION_STATE`                  | `STATIC`, `MOVING`, `FALLING`                                                          | host SDK classification from acceleration and angular speed                                        |
| `CAMERA_STATE` / `SENSOR_STATE` | `AVAILABLE`, `NOT_AVAILABLE`                                                           | set by `health_check()`                                                                            |
| `TIME_REFERENCE`                | `IMAGE`, `CURRENT`                                                                     | frame capture time vs host now                                                                     |
| `COORDINATE_SYSTEM`             | `IMAGE`, `LEFT/RIGHT_HANDED_Y_UP`, `RIGHT/LEFT_HANDED_Z_UP`, `RIGHT_HANDED_Z_UP_X_FWD` | IMU/pose convention                                                                                |

## Recording & maintenance

| Enum                    | Values                                                                                                         | Notes                                                                                                                                                             |
| ----------------------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `RECORDING_TARGET`      | `HOST_FILE`, `DEVICE_LOCAL`                                                                                    | device-local survives host disconnect                                                                                                                             |
| `UPLOAD_STATE`          | `RUNNING`, `OFF`                                                                                               | failures surface as `ERROR_CODE`                                                                                                                                  |
| `STOP_REASON`           | `UNSPECIFIED`, `USER`, `DISK_FULL`, `WRITE_ERROR`, `INTERRUPTED`                                               | why a device-local session ended; `UNSPECIFIED` while recording or from firmware predating the field (\< v00.09.16)                                               |
| `UPDATE_STATE`          | `DOWNLOADING`, `VERIFYING`, `READY_TO_APPLY`, `APPLYING`, `CHECKING`, `UPLOADING`, `REBOOTING`, `RECONNECTING` | firmware update phases; 0–3 are the apply sequence, `CHECKING` reads the manifest, `UPLOADING` pushes a local `.eff`, `REBOOTING`/`RECONNECTING` cross the reboot |
| `ENCRYPTION_ALGORITHM`  | `UNSPECIFIED`, `AES_256_GCM`                                                                                   | at-rest recording cipher; `UNSPECIFIED` means "device default" on a request, and AES-256-GCM in a file written before the field existed                           |
| `MODEL`                 | `M1`                                                                                                           |                                                                                                                                                                   |
| `SENSOR_TYPE`           | `ACCELEROMETER`, `GYROSCOPE`                                                                                   |                                                                                                                                                                   |
| `SENSOR_UNIT`           | `M_SEC_2`, `DEG_SEC`, `CELSIUS`, `HERTZ`                                                                       |                                                                                                                                                                   |
| `LENS_DISTORTION_MODEL` | `DS`                                                                                                           | double-sphere camera model                                                                                                                                        |
