Feat : Support -Y l switch for i1Pro 2 LED feedback during chartread workflow #204

Closed
opened 2026-09-04 17:01:36 +01:00 by gronod · 0 comments
Owner

Overview

The ICCery fork of ArgyllCMS introduces the -Y l command-line switch to chartread. When invoked with this flag and connected to an X-Rite i1Pro 2 (Rev E), the instrument drives its dual RGB ring LEDs to provide real-time operational feedback:

  • Flashing White: Awaiting baseline calibration on the white tile.
  • Flashing Blue: Ready for row swipe / awaiting strip read.
  • Flashing Red: Strip scan error / misread.
  • Flashing Green: Strip scan successfully captured.

ICCery requires an update to expose, configure, and pass this flag when assembling execution arguments for chartread.


Requirements

1. Configuration & Settings

  • Add a configuration setting to govern LED feedback (e.g. enable_i1pro2_leds or chartread_led_feedback, boolean, defaulting to false to maintain strict compatibility with stock upstream ArgyllCMS binaries).
  • If ICCery provides a graphical or interactive CLI configuration menu, expose this as a toggle under the measurement / instrument preferences:
    • Label: "Enable i1Pro 2 status LEDs (-Y l)"
    • Tooltip / Description: "Provides visual status feedback via the instrument ring LEDs during patch reading. Requires patched ArgyllCMS build."

2. Subprocess Command Construction

  • Locate the module assembling the execution array for chartread (e.g. chartread_runner, workflow/measure, or equivalent subprocess invocation point).
  • When the configuration option is active, append -Y l to the argument list:

chartread [existing_flags] -Y l <basename>

  • Ensure argument construction retains proper ordering (flags before positional basename).

3. Compatibility & Error Handling

  • In the patched ArgyllCMS driver, passing-Y l to unsupported hardware (e.g. i1Pro Rev A–D, ColorMunki) degrades silently without error. ICCery does not strictly need to restrict the switch by hardware model, though gating it to when an i1Pro instrument family is selected is acceptable.
  • If an unpatched upstream ArgyllCMS binary is used with this setting enabled, chartread will exit immediately with an unknown option error (chartread: Usage error - unknown option -Y l). Ensure any non-zero exit codes during launch surface the standard subprocess stderr clearly to the user.

Implementation Scope

  1. Configuration Layer:
  • Update settings schema/defaults to include the new boolean field.
  • Ensure the preference persists to the local configuration store.
  1. Command Builder:
  • Modify the chartread invocation logic to inject -Y l when the preference evaluates to true.
  1. Validation / Unit Tests:
  • Add unit tests verifying argument list assembly with the flag enabled and disabled.
  • Verify session logging records the exact command-line string invoked.

Acceptance Criteria

  • Configuration parameter exists and defaults to false.
  • Toggling the setting to true causes ICCery to append -Y l to all chartread strip-reading executions.
  • Toggling the setting to false preserves existing chartread arguments verbatim.
  • End-to-end read with patched ArgyllCMS and an i1Pro 2 visually demonstrates:
  • White flashing during tile calibration prompt.
  • Blue flashing while awaiting row reads.
  • Red flashing upon deliberate strip misread.
  • Green pulse upon successful strip capture.
  • Process stdout/stderr capture and exit code parsing remain unaffected.
### Overview The ICCery fork of ArgyllCMS introduces the `-Y l` command-line switch to `chartread`. When invoked with this flag and connected to an X-Rite i1Pro 2 (Rev E), the instrument drives its dual RGB ring LEDs to provide real-time operational feedback: * **Flashing White:** Awaiting baseline calibration on the white tile. * **Flashing Blue:** Ready for row swipe / awaiting strip read. * **Flashing Red:** Strip scan error / misread. * **Flashing Green:** Strip scan successfully captured. ICCery requires an update to expose, configure, and pass this flag when assembling execution arguments for `chartread`. --- ### Requirements #### 1. Configuration & Settings * Add a configuration setting to govern LED feedback (e.g. `enable_i1pro2_leds` or `chartread_led_feedback`, boolean, defaulting to `false` to maintain strict compatibility with stock upstream ArgyllCMS binaries). * If ICCery provides a graphical or interactive CLI configuration menu, expose this as a toggle under the measurement / instrument preferences: * **Label:** "Enable i1Pro 2 status LEDs (`-Y l`)" * **Tooltip / Description:** "Provides visual status feedback via the instrument ring LEDs during patch reading. Requires patched ArgyllCMS build." #### 2. Subprocess Command Construction * Locate the module assembling the execution array for `chartread` (e.g. `chartread_runner`, `workflow/measure`, or equivalent subprocess invocation point). * When the configuration option is active, append `-Y l` to the argument list: `chartread [existing_flags] -Y l <basename>` * Ensure argument construction retains proper ordering (flags before positional `basename`). #### 3. Compatibility & Error Handling * In the patched ArgyllCMS driver, passing`-Y l` to unsupported hardware (e.g. i1Pro Rev A–D, ColorMunki) degrades silently without error. ICCery does not strictly need to restrict the switch by hardware model, though gating it to when an `i1Pro` instrument family is selected is acceptable. * If an unpatched upstream ArgyllCMS binary is used with this setting enabled, `chartread` will exit immediately with an unknown option error (`chartread: Usage error - unknown option -Y l`). Ensure any non-zero exit codes during launch surface the standard subprocess stderr clearly to the user. --- ### Implementation Scope 1. **Configuration Layer:** * Update settings schema/defaults to include the new boolean field. * Ensure the preference persists to the local configuration store. 2. **Command Builder:** * Modify the `chartread` invocation logic to inject `-Y l` when the preference evaluates to `true`. 3. **Validation / Unit Tests:** * Add unit tests verifying argument list assembly with the flag enabled and disabled. * Verify session logging records the exact command-line string invoked. --- ### Acceptance Criteria - [ ] Configuration parameter exists and defaults to `false`. - [ ] Toggling the setting to `true` causes ICCery to append `-Y l` to all `chartread` strip-reading executions. - [ ] Toggling the setting to `false` preserves existing `chartread` arguments verbatim. - [ ] End-to-end read with patched ArgyllCMS and an i1Pro 2 visually demonstrates: - White flashing during tile calibration prompt. - Blue flashing while awaiting row reads. - Red flashing upon deliberate strip misread. - Green pulse upon successful strip capture. - [ ] Process stdout/stderr capture and exit code parsing remain unaffected.
gronod added the Kind/Feature
Reviewed
Confirmed
1
Priority
Medium
3
labels 2026-09-04 17:01:36 +01:00
gronod changed title from Feat : Support `-L` switch for i1Pro 2 LED feedback during `chartread` workflow to Feat : Support `-Y l` switch for i1Pro 2 LED feedback during `chartread` workflow 2026-09-05 18:04:13 +01:00
Sign in to join this conversation.