User code: - OpModeRobot used as the robot base class - LinearOpMode and PeriodicOpMode are provided opmode base classes - In Java, annotations can be used to automatically register opmode classes Additional user code functionality: - OpMode (string) is available in addition to the overall auto/teleop/test robot mode - OpMode does not indicate enable (enable/disable is still separate) - The HAL API uses integer UIDs; these are exposed at the user API level as well for faster checks - User code creates opmodes on startup (these have name, category, description, etc). DS: - DS will present opmode selection lists for auto and teleop for match/practice. During a match, the DS will automatically activate the selected opmode in the corresponding match period. - For testing, an overall mode is selected (e.g. teleop/auto/test) and a single opmode is selected Future work: - Command framework support/integration - Python annotation support - Unit tests (needs race-free DS sim updates) - Porting of examples Co-authored-by: Joseph Eng <91924258+KangarooKoala@users.noreply.github.com>
HAL WebSockets Server
This is an extension that provides a server version of a WebSockets API for transmitting robot hardware interface state over a network. See the Robot Hardware Interface WebSockets API specification for more details on the protocol.
Configuration
The WebSockets server has a number of configuration options available through environment variables.
HALSIMWS_SYSROOT: The local directory to serve non-websocket HTTP content from (e.g. HTML files) starting from /. Defaults to the sim subdirectory of the current working directory.
HALSIMWS_USERROOT: The local directory to serve non-websocket HTTP content from (e.g. HTML files) starting from /user/. Defaults to the sim/user subdirectory of the current working directory.
HALSIMWS_PORT: The port number to listen at. Defaults to 3300.
HALSIMWS_URI: The URI path to use for WebSockets connections. Defaults to "/wpilibws".