The transport configuration widget should allow the user to choose transports other than Cyphal/CAN, namely Cyphal/UDP and Cyphal/serial. Each transport has its own configuration options, so maybe they should be discriminated with tabs or something similar.
Cyphal/CAN should still allow the user to select different media implementations. Perhaps the easiest way to achieve this is to allow the user to enter an arbitrary iface name string like socketcan:slcan1 or candump:myfile.log; this is basically what we already have (or had when I last checked). One problem here is that certain interface options presented by the GUI bear no relevance for some media options and are potentially confusing; e.g., it is unclear that when the user is presented with a list of serial ports, the software implies that the underlying media layer to use is PythonCAN via SLCAN.
I suggest that specifically for CAN, we provide two basic options:
Enter the iface name string manually, like candump:myfile.log, which is then passed to make_transport(). This is not very user-friendly but provides total access to all of the features of PyCyphal.
Select one of the predefined commonly used media implementations, such as SLCAN or SocketCAN. These effectively duplicate small subsets of configurations attainable with the previous option but are much more user-friendly. Say, instead of typing the serial port manually as slcan:/dev/serial/by-id/usb-Zubax_Robotics_Zubax_Babel_20003C00145130365030332000000000-if00 one would simply click on the tab named "SLCAN" and then select the port from the drop-down list.
The transport configuration widget should allow the user to choose transports other than Cyphal/CAN, namely Cyphal/UDP and Cyphal/serial. Each transport has its own configuration options, so maybe they should be discriminated with tabs or something similar.
Cyphal/CAN should still allow the user to select different media implementations. Perhaps the easiest way to achieve this is to allow the user to enter an arbitrary iface name string like
socketcan:slcan1
orcandump:myfile.log
; this is basically what we already have (or had when I last checked). One problem here is that certain interface options presented by the GUI bear no relevance for some media options and are potentially confusing; e.g., it is unclear that when the user is presented with a list of serial ports, the software implies that the underlying media layer to use is PythonCAN via SLCAN.I suggest that specifically for CAN, we provide two basic options:
Enter the iface name string manually, like
candump:myfile.log
, which is then passed tomake_transport()
. This is not very user-friendly but provides total access to all of the features of PyCyphal.Select one of the predefined commonly used media implementations, such as SLCAN or SocketCAN. These effectively duplicate small subsets of configurations attainable with the previous option but are much more user-friendly. Say, instead of typing the serial port manually as
slcan:/dev/serial/by-id/usb-Zubax_Robotics_Zubax_Babel_20003C00145130365030332000000000-if00
one would simply click on the tab named "SLCAN" and then select the port from the drop-down list.