JankyAutoSequencer::JankyAutoSequencer(frc::RobotDrive*drive, frc::ADXRS450_Gyro*gyro, SensorCollection*leftEncoder, SensorCollection*rightEncoder, WPI_TalonSRX*leftmotor, WPI_TalonSRX*rightmotor, InAndOut*inAndOut, UpAndDown*upAndDown) {
//JankyAutoSequencer::JankyAutoSequencer(RobotDrive*drive, frc::ADXRS450_Gyro*gyro, Encoder*encoder) {
	for(int i = 0; i<MAX_NAMES; i++){
		entries[i]=NULL;
	}
	turnLeft90 = new TurnSegment(gyro, drive, -90.0, TURN_SPEED, turn_kP, turn_kI, turn_kD);
	turnRight90 = new TurnSegment(gyro, drive, 90.0, TURN_SPEED, turn_kP, turn_kI, turn_kD);
	turnLeft45 = new TurnSegment(gyro, drive, -45.0, TURN_SPEED, turn_kP, turn_kI, turn_kD);
	turnRight45 = new TurnSegment(gyro, drive, 45.0, TURN_SPEED, turn_kP, turn_kI, turn_kD);
	turnLeft30 = new TurnSegment(gyro, drive, -30.0, TURN_SPEED, turn_kP, turn_kI, turn_kD);
	turnRight30 = new TurnSegment(gyro, drive, 30.0, TURN_SPEED, turn_kP, turn_kI, turn_kD);
	drive6Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 38, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive10Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 50, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive40Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 2, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive50Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 62, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive52Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 69, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive60Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 48, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive72Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 84, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive120Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 160, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive144Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 194, FAST_DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive162Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 163, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive210Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 227, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive240Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 268, DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	drive260Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, 260, SCALE_DRIVE_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);
	cubeUp = new ::CubeUp(inAndOut, upAndDown, 'l');
	cubeUpScale = new ::CubeUp(inAndOut, upAndDown, 'h');
	releaseCube = new ::ReleaseCube(drive, inAndOut, upAndDown, 'l');
	visionSegment = new ::VisionSegment(drive, VISION_DRIVE_SPEED, drive_kP, drive_kI, drive_kD); //might need negative p, i, d since backwards
	driveBack10Inches = new DriveSegment(gyro, drive, leftEncoder, rightEncoder, leftmotor, rightmotor, -25, DRIVE_BACK_SPEED, drive_kP, drive_kI, drive_kD, inAndOut);

	SetMachineName("JankyAutoSequencer");
	JankyStateMachine::SetName(Rest, "Rest");
	SetName(TurnLeft90, "Turn Left 90 Degrees", turnLeft90);
	SetName(TurnRight90, "Turn Right 90 Degrees", turnRight90);
	SetName(TurnLeft45, "Turn Left 45 Degrees", turnLeft45);
	SetName(TurnRight45, "Turn Right 45 Degrees", turnRight45);
	SetName(TurnLeft30, "Turn Left 30 Degrees", turnLeft30);
	SetName(TurnRight30, "Turn Right 30 Degrees", turnRight30);
	SetName(Drive6Inches, "Drive straight 6 inches", drive6Inches);
	SetName(Drive10Inches, "Drive straight 10 inches", drive10Inches);
	SetName(Drive40Inches, "Drive straight 40 inches", drive40Inches);
	SetName(Drive50Inches, "Drive straight 50 inches", drive50Inches);
	SetName(Drive52Inches, "Drive straight 52 inches", drive50Inches);
	SetName(Drive60Inches, "Drive straight 60 inches", drive60Inches);
	SetName(Drive72Inches, "Drive straight 72 inches", drive72Inches);
	SetName(Drive120Inches, "Drive straight 120 inches", drive120Inches);
	SetName(Drive144Inches, "Drive straight 144 inches", drive144Inches);
	SetName(Drive162Inches, "Drive straight 162 inches", drive162Inches);
	SetName(Drive210Inches, "Drive straight 210 inches", drive210Inches);
	SetName(Drive240Inches, "Drive straight 240 inches", drive240Inches);
	SetName(Drive260Inches, "Drive straight 260 inches", drive260Inches);
	SetName(CubeUp, "Lift cube to switch height", cubeUp);
	SetName(CubeUpScale, "Lift cube to scale height", cubeUpScale);
	SetName(ReleaseCube, "Release cube onto the switch", releaseCube);
	SetName(VisionSegment, "Drive to switch with vision", visionSegment);
	SetName(DriveBack10Inches, "Drive back 10 inches", driveBack10Inches);
	JankyStateMachine::SetName(Stop, "End of Sequence");

	c = 0;
	done = false;
	aMode = DEFAULT_MODE;
	//gyro->Calibrate();
	Start(); //most important part!!
	/*SetName(DrivingSwitchEdge, "Drive Straight 162 inches");
	SetName(TurningToRightSwitchEdge, "Turn left 90 degrees and drive forward 6 inches");
	SetName(TurningToLeftSwitchEdge, "Turn right 90 degrees and drive forward 6 inches");
	SetName(DrivingToRightFieldEdge, "Turn right 45 degrees and drive forward 60 inches");
	SetName(DrivingToLeftFieldEdge, "Turn right 45 degrees and drive forward 60 inches");
	SetName(CrossRightAutoLine, "Turn right 45 degrees and drive forward 120 inches");
	SetName(CrossLeftAutoLine, "Turn left 45 degrees and drive forward 120 inches");
	SetName(DrivingMid, "Drive straight 60 inches");
	SetName(DrivingMidToAlignToLeftSwitch, "Turn left 90 degrees and drive forward until encoder distance is 60 inches");
	SetName(DrivingMidToAlignToRightSwitch, "Turn right 90 degrees and drive forward until encoder distance is 60 inches");
	SetName(DrivingLeftToAlignToRightSwitch, "Turn right 90 degrees and drive forward until encoder distance is 144 inches");
	SetName(DrivingRightToAlignToLeftSwitch, "Turn left 90 degrees and drive forward until encoder distance is 144 inches");
	SetName(DrivingToRightSwitchFront, "Turn left 90 degrees and drive forward until encoder distance is 72 inches");
	SetName(DrivingToLeftSwitchFront, "Turn right 90 degrees and drive forward until encoder distance is 72 inches");
	SetName(ReleaseCube, "Release the cube onto the switch");*/
}
Пример #2
0
int
set_machine_name_main(
    int argc,
    char* argv[]
    )
{
    DWORD dwError = 0;
    DWORD dwRetError = 0;
    PSTR pszMachineName = NULL;
    size_t dwErrorBufferSize = 0;
    BOOLEAN bPrintOrigError = TRUE;

    if (geteuid() != 0) {
        fprintf(stderr, "This program requires super-user privileges.\n");
        dwError = LW_ERROR_ACCESS_DENIED;
        BAIL_ON_LSA_ERROR(dwError);
    }

    dwError = ParseArgs(argc, argv,
                        &pszMachineName);
    BAIL_ON_LSA_ERROR(dwError);

    dwError = ValidateParameters(pszMachineName);
    BAIL_ON_LSA_ERROR(dwError);

    dwError = SetMachineName(pszMachineName);
    BAIL_ON_LSA_ERROR(dwError);

cleanup:
    if (pszMachineName)
    {
        LW_SAFE_FREE_STRING(pszMachineName);
    }

    return dwError;

error:
    dwRetError = MapErrorCode(dwError);
    dwErrorBufferSize = LwGetErrorString(dwRetError, NULL, 0);
    if (dwErrorBufferSize > 0)
    {
        PSTR  pszErrorBuffer = NULL;

        dwError = LwAllocateMemory(
                     dwErrorBufferSize,
                     (PVOID*)&pszErrorBuffer);
        if (!dwError)
        {
            DWORD dwLen = 0;

            dwLen = LwGetErrorString(dwRetError,
                                      pszErrorBuffer,
                                      dwErrorBufferSize);
            if ((dwLen == dwErrorBufferSize) &&
                !LW_IS_NULL_OR_EMPTY_STR(pszErrorBuffer))
            {
                fprintf(stderr, "Failed to modify machine name.  %s\n", pszErrorBuffer);
                bPrintOrigError = FALSE;
            }
        }

        LW_SAFE_FREE_STRING(pszErrorBuffer);
    }

    if (bPrintOrigError)
    {
        fprintf(stderr, "Failed to modify machine name. Error code [%u]\n", dwRetError);
    }

    dwError = dwRetError;

    goto cleanup;
}