/**
 * Start a competition.
 * This code needs to track the order of the field starting to ensure that everything happens
 * in the right order. Repeatedly run the correct method, either Autonomous or OperatorControl
 * when the robot is enabled. After running the correct method, wait for some state to change,
 * either the other mode starts or the robot is disabled. Then go back and wait for the robot
 * to be enabled again.
 */
void SimpleRobot::StartCompetition()
{
	RobotMain();
	if (!m_robotMainOverridden)
	{
		while (1)
		{
			if (IsDisabled())
			{
				Disabled();
				while (IsDisabled()) Wait(.01);
			}
			else if (IsAutonomous())
			{
				Autonomous();
				while (IsAutonomous() && IsEnabled()) Wait(.01);
			}
			else
			{
				OperatorControl();
				while (IsOperatorControl() && IsEnabled()) Wait(.01);
			}
		}
	}
}
/**
 * Start a competition.
 * This code needs to track the order of the field starting to ensure that everything happens
 * in the right order. Repeatedly run the correct method, either Autonomous or OperatorControl
 * when the robot is enabled. After running the correct method, wait for some state to change,
 * either the other mode starts or the robot is disabled. Then go back and wait for the robot
 * to be enabled again.
 */
void SimpleRobot::StartCompetition()
{
	RobotMain();
	if ( !m_robotMainOverridden)
	{
		while (Simulator::ShouldContinue())
		{
			Simulator::NextStep(0.0);

			if (IsDisabled())
				continue;

			if (IsAutonomous())
			{
				Autonomous();					// run the autonomous method
				while (IsAutonomous() && !IsDisabled() && Simulator::ShouldContinue()) Wait(.01);
			}
			else
			{
				OperatorControl();				// run the operator control method
				while (IsOperatorControl() && !IsDisabled() && Simulator::ShouldContinue()) Wait(.01);
			}
		}
	}
}
Esempio n. 3
0
/**
 * Start a competition.
 * This code needs to track the order of the field starting to ensure that
 * everything happens in the right order. Repeatedly run the correct
 * method, either Autonomous or OperatorControl when the robot is
 * enabled. After running the correct method, wait for some state to
 * change, either the other mode starts or the robot is disabled. Then go
 * back and wait for the robot to be enabled again.
 */
void SimpleRobot::StartCompetition()
{
    RobotMain();
    if (!m_robotMainOverridden)
    {
        while (1)
        {
            while (IsDisabled())
                Wait(.01);      // wait for robot to be enabled

            if (IsAutonomous())
            {
                Autonomous();   // run the autonomous method
                while (IsAutonomous() && !IsDisabled())
                    Wait(.01);
            }
            else
            {
                OperatorControl();      // run the operator control method
                while (IsOperatorControl() && !IsDisabled())
                    Wait(.01);
            }
        }
    }
}
Esempio n. 4
0
/**
 * Start a competition.
 * This code needs to track the order of the field starting to ensure that everything happens
 * in the right order. Repeatedly run the correct method, either Autonomous or OperatorControl
 * when the robot is enabled. After running the correct method, wait for some state to change,
 * either the other mode starts or the robot is disabled. Then go back and wait for the robot
 * to be enabled again.
 */
void SimpleRobot::StartCompetition()
{
    RobotMain();
    
    if (!m_robotMainOverridden)
    {
        // first and one-time initialization
        RobotInit();

        while (true)
        {
            if (IsDisabled())
            {
                m_ds->InDisabled(true);
                Disabled();
                m_ds->InDisabled(false);
                while (IsDisabled()) m_ds->WaitForData();
            }
            else if (IsAutonomous())
            {
                m_ds->InAutonomous(true);
                Autonomous();
                m_ds->InAutonomous(false);
                while (IsAutonomous() && IsEnabled()) m_ds->WaitForData();
            }
            else
            {
                m_ds->InOperatorControl(true);
                OperatorControl();
                m_ds->InOperatorControl(false);
                while (IsOperatorControl() && IsEnabled()) m_ds->WaitForData();
            }
        }
    }
}
void DriveController :: Run()
{
	if ( IsAutonomous() )
		Autonomous();
	
	else if ( IsOperatorControl() )
		OperatorControl();
}
Esempio n. 6
0
/**
 * This main() function is run when the program is compiled to run in 
 * non-competition mode. It just runs teleop so we can do demos without worrying
 * about autonomous or the match ending.
 */
void main(void) {
#ifndef COMPETITION
	// Initialize digital and analog inputs
	IO_Initialization();
	// Initialize the robot
	Initialize();
	// Run the teleop loop
	OperatorControl();
#endif /* COMPETITION */
}
Esempio n. 7
0
/**
 * Start a competition.
 * This code needs to track the order of the field starting to ensure that everything happens
 * in the right order. Repeatedly run the correct method, either Autonomous or OperatorControl
 * or Test when the robot is enabled. After running the correct method, wait for some state to
 * change, either the other mode starts or the robot is disabled. Then go back and wait for the
 * robot to be enabled again.
 */
void SampleRobot::StartCompetition()
{
	LiveWindow *lw = LiveWindow::GetInstance();

	SmartDashboard::init();
	NetworkTable::GetTable("LiveWindow")->GetSubTable("~STATUS~")->PutBoolean("LW Enabled", false);

	RobotMain();

	if (!m_robotMainOverridden)
	{
		// first and one-time initialization
		lw->SetEnabled(false);
		RobotInit();

		while (true)
		{
			if (IsDisabled())
			{
				m_ds.InDisabled(true);
				Disabled();
				m_ds.InDisabled(false);
				while (IsDisabled()) sleep(1); //m_ds.WaitForData();
			}
			else if (IsAutonomous())
			{
				m_ds.InAutonomous(true);
				Autonomous();
				m_ds.InAutonomous(false);
				while (IsAutonomous() && IsEnabled()) sleep(1); //m_ds.WaitForData();
			}
            else if (IsTest())
            {
              lw->SetEnabled(true);
              m_ds.InTest(true);
              Test();
              m_ds.InTest(false);
              while (IsTest() && IsEnabled()) sleep(1); //m_ds.WaitForData();
              lw->SetEnabled(false);
            }
			else
			{
				m_ds.InOperatorControl(true);
				OperatorControl();
				m_ds.InOperatorControl(false);
				while (IsOperatorControl() && IsEnabled()) sleep(1); //m_ds.WaitForData();
			}
		}
	}
}
Esempio n. 8
0
/**
 * Start a competition.
 * This code needs to track the order of the field starting to ensure that everything happens
 * in the right order. Repeatedly run the correct method, either Autonomous or OperatorControl
 * when the robot is enabled. After running the correct method, wait for some state to change,
 * either the other mode starts or the robot is disabled. Then go back and wait for the robot
 * to be enabled again.
 */
void SimpleRobot::StartCompetition()
{
	nUsageReporting::report(nUsageReporting::kResourceType_Framework, nUsageReporting::kFramework_Simple);

	RobotMain();
	
	if (!m_robotMainOverridden)
	{
		// first and one-time initialization
		RobotInit();

		while (true)
		{
			if (IsDisabled())
			{
				m_ds->InDisabled(true);
				Disabled();
				m_ds->InDisabled(false);
				while (IsDisabled()) m_ds->WaitForData();
			}
			else if (IsAutonomous())
			{
				m_ds->InAutonomous(true);
				Autonomous();
				m_ds->InAutonomous(false);
				while (IsAutonomous() && IsEnabled()) m_ds->WaitForData();
			}
			else
			{
				m_ds->InOperatorControl(true);
				OperatorControl();
				m_ds->InOperatorControl(false);
				while (IsOperatorControl() && IsEnabled()) m_ds->WaitForData();
			}
		}
	}
}