eeschema: Allow multiple selectable names for multifunction pins.
When working with most microcontrollers there are often pins with 4-8 different functions mapped to it, making schematic symbols either confusing (e.g. PA0/PWM1/
Blueprint information
- Status:
- Not started
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- Lucas Hartmann
- Direction:
- Needs approval
- Assignee:
- None
- Definition:
- New
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
While I understand this is a really far-fetched idea and would require quite a lot of work to implement, I also feel this has positive organizational impact and, AFAIK, it is no implemented anywhere else.
Multipurpose pins could show a special, non-printable "multi" marker on schematic view, and allow [E] key to choose which name to show from a list of alternate names. The down pointing triangle of combo boxes placed on the INSIDE of the text would probably be a good marker.
Alternatively a checkbox list of all functions could be provided, so the designer could select which names are of interest for the schematic. This would allow for runtime multiplexing pins to be represented, e.g. PA0/RX0/AN0, but would make symbol creation more complicated.
During schematic design a dashed box could be drawn around the default name as a placeholder for the longest name. Or just draw the longest name and the "multi" marker. Pin editor would have a list editor, like the TAGs for footprints or aliases for schematic symbols, in order to allow the user to input alternate names.
ABOUT COMPATIBILITY:
DATA STRUCTURE: Pin names should still keep the default name as usual, and an optional list of alternate names should be added.
OLD SCHEMATICS ON NEW SOFTWARE: When loading an old schematic or library no change should be necessary, the alternate names list is optional.
NEW SCHEMATIC ON OLD SOFTWARE: When modifying a pin name on new software a symbol could be created/updated on the project cache. This symbol would have the the alternate name as the default pin name, old software would then simply read this as a regular symbol, except:
- If old software fails when an unknown entry (the alternate name list) is found then the alternate names should be erased from cache when new software saves.
- If old software ignores unknown entries then alternate names list may be safely stored on the cache. Default name on cache should be the selected name, first alternate name on cache should be the real default name.
NEW SCHEMATIC ON NEW SOFTWARE: A new schematic may have been edited on old software, saved, and opened again on new software. if the previous two considerations were taken into account then the worst case scenario is the alternate names list is lost on the cache. New software should check cached component names for matching local libraries, possibly looking for a text tag in the cache component name. If a match exists then the software should ask the user if he desires to repair the cached component's alternate name list format.
NEW LIBRARY ON OLD EESCHEMA: Old eeschema would (hopefully) ignore all alternate name lists.
NEW LIBRARY ON OLD LIBRARY EDITOR: This is potentially destructive for the alternate names list. I have no idea if how current library editor behaves when if finds unknown properties in pin descriptions... Are there compatibility markers like those of JFFS (RW_COMPAT_COPY, RW_COMPAT_DELETE, RO_COMPAT, INCOMPAT) in the data structure? RW_COMPAT_COPY would probably be applicable here...