package lejos.nxt.remote;
import lejos.nxt.*;
import java.io.*;
/*
* WARNING: THIS CLASS IS SHARED BETWEEN THE classes AND pccomms PROJECTS.
* DO NOT EDIT THE VERSION IN pccomms AS IT WILL BE OVERWRITTEN WHEN THE PROJECT IS BUILT.
*/
/**
* Supports a motor connected to a remote NXT
*
* @author Lawrie Griffiths
*
*/
public class RemoteMotorPort implements NXTProtocol, TachoMotorPort
{
private NXTCommand nxtCommand;
private int id;
public RemoteMotorPort(NXTCommand nxtCommand, int id) {
this.nxtCommand = nxtCommand;
this.id = id;
}
public void controlMotor(int power, int mode)
{
int lcpMode = 0, lcpPower = power, runState = 0;
if (mode == 1) { // forward
lcpMode = MOTORON;
runState = MOTOR_RUN_STATE_RUNNING;
} else if (mode == 2) { // backward
lcpMode = MOTORON;
lcpPower = -lcpPower;
runState = MOTOR_RUN_STATE_RUNNING;
} else if (mode == 3) { // stop
lcpPower = 0;
lcpMode = BRAKE;
runState = MOTOR_RUN_STATE_IDLE;
} else { // float
lcpPower = 0;
lcpMode = 0;
runState = MOTOR_RUN_STATE_IDLE;
}
try {
nxtCommand.setOutputState((byte) id, (byte) lcpPower, lcpMode, REGULATION_MODE_IDLE, 0, runState, 0);
} catch (IOException ioe) {}
}
public int getTachoCount()
{
try {
return nxtCommand.getTachoCount(id);
} catch (IOException ioe) {
return 0;
}
}
public void resetTachoCount()
{
try {
nxtCommand.resetMotorPosition(id, false);
} catch (IOException ioe) { }
}
public void setPWMMode(int mode) {
}
}