View Single Post
  #1   Spotlight this post!  
Unread 14-02-2014, 13:03
feverittm's Avatar
feverittm feverittm is offline
Registered User
FRC #0997 (Spartans)
Team Role: Mentor
 
Join Date: Apr 2010
Rookie Year: 2010
Location: Corvallis, OR
Posts: 121
feverittm will become famous soon enoughfeverittm will become famous soon enough
Java Commandbase Subsystems: Init vs DefaultCommand

Here is a question for all you Java types:

Which (if either) way is 'better' (less intensive on the cRIO, easier to understand, etc).

In a command based template we have a compressor subsystem.

We could start the compressor (using the standard compressor.start() method) in the subsystems initialization call. We could also just create a simple command that just does a compressor.start() in its execute function and then call this as the compressor subsystem's default command.

Code:
    public subcompressor(int compressorSwitchSlot, int compressorSpikeSlot) {
        myCompressor = new Compressor(compressorSwitchSlot, compressorSpikeSlot);
        LiveWindow.addActuator("compressor", "compressor", myCompressor);
        myCompressor.start();
    }
or

Code:
    public subcompressor(int compressorSwitchSlot, int compressorSpikeSlot) {
        myCompressor = new Compressor(compressorSwitchSlot, compressorSpikeSlot);
        LiveWindow.addActuator("compressor", "compressor", myCompressor);
    }

    /**
     * Default command is to start the compressor.  Doing it this way instead
     * of in the initializer will put it in a separate thread and not lock the
     * main control thread.
     */

    public void initDefaultCommand() {
        setDefaultCommand(new StartCompressor());
    }
Is one way better then the other? Do both ways use separate threads from the main thread?

Just cleaning up code and wondering.

Thanks
__________________
Floyd Moore
Mentor Electrical and Pneumatics
Team 997 - Spartan Robotics
Corvallis High School, Corvallis Oregon
Reply With Quote