Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GDTF Channel Function Story #58

Closed
34 tasks done
Firionus opened this issue Dec 1, 2021 · 1 comment
Closed
34 tasks done

GDTF Channel Function Story #58

Firionus opened this issue Dec 1, 2021 · 1 comment
Assignees
Milestone

Comments

@Firionus
Copy link
Contributor

Firionus commented Dec 1, 2021

progress on branch feature/gdtf-channel-functions

ToDo:

  • Understand and Specify how to handle Channel Function Control
    • see docs/GDTF.md
  • Implement Channel Function data structures (including serialization)
  • Server-side Tests for Channel Function Data Structures
  • Fatal Errors in GDTF parsing are returned via REST and should be displayed to the user
  • Report Bugs or Issues in GDTF I uncover
    • Issue about Builder producing ChannelFunctions with non-unique DMX end point. Related: standard does not specify this precisely. Mention my algorithm as suggestion for validity. Maybe disallow the special case where for a certain Mode Master Group multiple ChannelFunctions start at the same DMX value but always must exist the same amount of times.
    • Issue about hard to understand DMX Values (What is "Byte Mirroring"? Why aren't there more examples?) Suggest renaming to "Shifting with periodic filling of low values" vs Multiplicative Mapping
    • Forbid using as Mode Master Channel Functions which control a geometry that is referenced by at least two Geometry References if the channel function referencing it as Mode Master is not controlling the same geometry. In other words: A channel function which controls a top level geometry referenced by at least one GeometryReference is only allowed to be a Mode Master if either: There is exactly one Geometry Reference OR the Mode Master controls the same geometry as the depending channel
  • Build UI for Channel Functions
    • Home Screen: Split between Fixture Selection (left) and Channel Function sliders (right)
    • Channel Function sliders display DMX value
    • Channel Functions in same DMXChannel track and exclude each other
    • Channel Function Dependencies enable/disable dependent ChannelFunctions
    • Info on controlled geometry and attribute
    • clearly show which Channel Functions are hot or frozen
    • Info on why Channel Function is hot/frozen
      • e.g. disabled - channel_function_x has to be 12 to 42 to enable this channel function but is 90
      • e.g. excluded - channel is 90 but channel function only goes from 12 to 42
    • should use click-on-slider to include
      • should we use click-on-slider to set mode master to appropriate value? No.
    • ChannelFunctions should be sorted by Features, FeatureGroups and those should be sorted by importance (Dimmer, PanTilt, Color, ..., Control, RawDmx)
    • Show Channel Number for Raw DMX ChF
  • Server-Side State for each Fixture
  • Design API for Fixture State (initial/update? or KISS?)
  • Implement Fixture State API server-side
  • Implement Fixture State API client-side
  • When you add a new fixture type, it sometimes doesn't show up in the list without a reload
  • When you add a fixture, it sometimes doesn't show up in the fixture list on the main page
  • Label Number on the left of ChannelFunction slider isn't visible
  • UI: outOfRange values of sliders render a slider handle far out to the right or left
  • Some simple Cypress Test
  • Remove hardcoded Broadcast IP Address for sending ArtNet. How can we do this as simple as possible?
  • Performance when moving sliders is really bad - why? (Frontend/Backend? Which process slows it down so much?) There seems to be some Queue that builds up somewhere, as lag gets worse the longer you drag on a slider.
  • What happens if we patch beyond 512 channels in a universe?
    • The ArtNet thread crashes and doesn't start up again. Fixed by try/catch with logging and restart every 2 seconds.
  • Better Default FID and Universe/Address (wasn't there an issue for this?)
  • Better validate Patch (should not be possible to patch beyond channel 512 for example)
  • Add cyclic dependency to Fixture State Test

Dropped ToDos:

  • Refactor Channel Function Initialization (I deem it good enough for a release...)
  • Sometimes, some ChannelFunctions are disabled without a displayed reason. This seems to need at least two types of fixture, but I can't reproduce beyond that. (couldn't reproduce)
  • A warnings field in the GdtfWrapper should contain non-fatal warnings about the file. In fact, I think we currently throw for a lot of cases where we could just ignore that specific part of the file. Guideline: Parse as much as possible, while not arbitrarily choosing to perform undefined behavior. (I don't want to refactor the initialization) (moved to Refactor GDTF Initialization #61)
@Firionus
Copy link
Contributor Author

closed by #63

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant