2011 Software

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.

This is the Readme for the 2011 code:

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)