mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-05-06 22:06:04 +02:00
Refine LED status patterns and update SVG animations for clarity and consistency
This commit is contained in:
@@ -125,15 +125,15 @@ If you want to dig deeper: commands are mapped via the `CommandManager` under `c
|
|||||||
### LED Status / Error Patterns
|
### LED Status / Error Patterns
|
||||||
The firmware uses a small set of LED patterns to indicate status and blocking errors. When `LED_DEBUG_ENABLE` is disabled and `LED_EXTERNAL_AS_DEBUG` is enabled the external IR LED mirrors ONLY error patterns (0%/50% duty). Non‑error patterns are not mirrored.
|
The firmware uses a small set of LED patterns to indicate status and blocking errors. When `LED_DEBUG_ENABLE` is disabled and `LED_EXTERNAL_AS_DEBUG` is enabled the external IR LED mirrors ONLY error patterns (0%/50% duty). Non‑error patterns are not mirrored.
|
||||||
|
|
||||||
| State | Visual | Category | Repeat | Timing Pattern (ms) | Meaning |
|
| State | Visual | Category | Timing Pattern (ms) | Meaning |
|
||||||
|-------|--------|----------|--------|----------------------|---------|
|
|-------|--------|----------|---------------------|---------|
|
||||||
| LedStateNone |  | idle | no | (off) | No activity / heartbeat window waiting |
|
| LedStateNone |  | idle | (off) | No activity / heartbeat window waiting |
|
||||||
| LedStateStreaming |  | active | yes | steady on | Streaming running (UVC or Wi‑Fi) |
|
| LedStateStreaming |  | active | steady on | Streaming running (UVC or Wi‑Fi) |
|
||||||
| LedStateStoppedStreaming |  | inactive | yes | steady off | Streaming intentionally stopped |
|
| LedStateStoppedStreaming |  | inactive | steady off | Streaming intentionally stopped |
|
||||||
| CameraError |  | error | yes | 300/300 300/700 | Camera init/runtime failure (check sensor, ribbon, power) |
|
| CameraError |  | error | 300/300 300/700 (loop) | Camera init/runtime failure (check sensor, ribbon, power) |
|
||||||
| WiFiStateConnecting |  | transitional | yes | 400/400 | Wi‑Fi associating / DHCP pending |
|
| WiFiStateConnecting |  | transitional | 400/400 (loop) | Wi‑Fi associating / DHCP pending |
|
||||||
| WiFiStateConnected |  | notification | no | 150/150 x3 then off | Wi‑Fi connected successfully |
|
| WiFiStateConnected |  | notification | 150/150×3 then 600 off | Wi‑Fi connected successfully |
|
||||||
| WiFiStateError |  | error | yes | 200/100 500/300 | Wi‑Fi failed (auth timeout or no AP) |
|
| WiFiStateError |  | error | 200/100 500/300 (loop) | Wi‑Fi failed (auth timeout or no AP) |
|
||||||
|
|
||||||
Guidelines for adding new patterns:
|
Guidelines for adding new patterns:
|
||||||
- Keep error patterns short, distinctive, and repeating.
|
- Keep error patterns short, distinctive, and repeating.
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<svg width="60" height="60" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
<svg width="60" height="60" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||||
<circle id="dot" cx="50" cy="50" r="30" fill="#ff2d55">
|
<circle cx="50" cy="50" r="30" fill="#ff2d55">
|
||||||
<animate attributeName="fill-opacity" values="1;0;1;0;1;0" keyTimes="0;0.1875;0.375;0.5625;0.75;1" dur="1.6s" repeatCount="indefinite"/>
|
<!-- Pattern: ON300 OFF300 ON300 OFF700 (1600ms) -->
|
||||||
|
<animate attributeName="fill-opacity" dur="1.6s" repeatCount="indefinite" calcMode="discrete"
|
||||||
|
values="1;0;1;0;0" keyTimes="0;0.1875;0.375;0.5625;1" />
|
||||||
</circle>
|
</circle>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 371 B |
@@ -1,5 +1,7 @@
|
|||||||
<svg width="60" height="60" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
<svg width="60" height="60" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||||
<circle id="dot" cx="50" cy="50" r="30" fill="#34c759">
|
<circle cx="50" cy="50" r="30" fill="#34c759">
|
||||||
<animate attributeName="fill-opacity" values="1;0;1;0;1;0;0" keyTimes="0;0.166;0.333;0.5;0.666;0.833;1" dur="1.2s" repeatCount="indefinite"/>
|
<!-- Pattern: (ON150 OFF150)x3 then OFF600 (total 1350ms) -->
|
||||||
|
<animate attributeName="fill-opacity" dur="1.35s" repeatCount="indefinite" calcMode="discrete"
|
||||||
|
values="1;0;1;0;1;0" keyTimes="0;0.1111;0.2222;0.3333;0.4444;1" />
|
||||||
</circle>
|
</circle>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 391 B |
@@ -1,5 +1,7 @@
|
|||||||
<svg width="60" height="60" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
<svg width="60" height="60" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||||
<circle id="dot" cx="50" cy="50" r="30" fill="#ff9500">
|
<circle cx="50" cy="50" r="30" fill="#ff9500">
|
||||||
<animate attributeName="fill-opacity" values="1;0;1;0;1;0" keyTimes="0;0.181;0.454;0.545;0.909;1" dur="1.1s" repeatCount="indefinite"/>
|
<!-- Pattern: ON200 OFF100 ON500 OFF300 (1100ms) -->
|
||||||
|
<animate attributeName="fill-opacity" dur="1.1s" repeatCount="indefinite" calcMode="discrete"
|
||||||
|
values="1;0;1;0;0" keyTimes="0;0.1818;0.2727;0.7273;1" />
|
||||||
</circle>
|
</circle>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 299 B After Width: | Height: | Size: 372 B |
Reference in New Issue
Block a user