2011 software.html - frc971/website GitHub Wiki
The most recent version of this page is at svn://boardsailor.com/frc971/2011/trunk/src/packages/README.html.
This page will be used for documenting how the 2011 software works and is compiled and downloaded to the robot.
All dependencies are reloaded when the code is reloaded so be careful when making new modules.
in src/externals/
make deploy => deploys wpilib.out
#This CANNOT be reloaded.
in src/packages/c_reloader
make deploy => deploys SocketReloader.out
This runs a Server that reloads the names of the sockets that get sent to it.
important functions:
int c_reload(char *modulename); // modulename is "test" not "test.out"
int c_load(char *modulename);
int c_unload(char *modulename);
#This CANNOT be reloaded.
in src/packages/controls_manager
make deploy => deploys controls_manager.out
make reload // also force reloads all reloadable modules
// only controls_logic depends on this one's headers (subclasses Teleopmode)
// this module syncs with the drivers station and deals with autonomous mode/not and disabled/enabled
// This should not need to be edited, but can be reloaded.
// This will need to be edited to add automode functionality.
# Reloading this starts the code.
in src/packages/plotter
make deploy => deploys cpp_plotter.out
#This CANNOT be reloaded.
in src/packages/robot_state
make deploy => robot_state.out //contains transfer structure for control data (like left and right speeds)
make reload // also force reloads pid_loop and controls_logic
//if this is changed you need to remake pid_loop and controls_logic because they talk to this structure.
//pid_loop.out, controls_logic.out, and robot_state.out should be deployed before reload is called.
in src/packages/wpi_singletons
make deploy => wpi_singletons //contains CANJaguar storage class and DoublePiston class
#This CANNOT be reloaded // because CANJaguars cannot be reallocated.
in src/packages/pid_loop
make deploy => pid_loop.out //contains the drive code that sets the motors (control should flow from here)
// exceptions are made for things like the compressor, but not say a drive loop
make reload => cleanly reloads just pid_loop.out // no dependencies
in src/packages/controls_logic
make deploy => controls_logic.out //contains the code that reads the joystick data
make reload => cleanly reloads just controls_logic.out // no dependencies
in src/bin
ruby network_setup.rb #sets up the network when pluged into the 971 router to read from the netconsole and plotter
ruby netconsole.rb #reads from the network debug console output
in src/tools/plotter
ruby main.rb #runs plotter
this depends on src/bin/network_setup.rb being run first (or at least netmask being set to 255.0.0.0)
</div></div>