lejos.nxt
Class SensorPort

java.lang.Object
  extended by lejos.nxt.SensorPort
All Implemented Interfaces:
ADSensorPort, BasicSensorPort, I2CPort, LegacySensorPort, ListenerCaller, SensorConstants

public class SensorPort
extends Object
implements LegacySensorPort, I2CPort, ListenerCaller

Abstraction for a NXT input port.


Field Summary
static SensorPort[] PORTS
          Array containing all three ports [0..3].
static SensorPort S1
          Port labeled 1 on NXT.
static SensorPort S2
          Port labeled 2 on NXT.
static SensorPort S3
          Port labeled 3 on NXT.
static SensorPort S4
          Port labeled 4 on NXT.
 
Fields inherited from interface lejos.nxt.SensorConstants
MODE_ANGLESTEP, MODE_BOOLEAN, MODE_CELSIUS, MODE_FARENHEIT, MODE_PCTFULLSCALE, MODE_PERIODCOUNTER, MODE_RAW, MODE_TRANSITIONCNT, TYPE_ANGLE, TYPE_CUSTOM, TYPE_LIGHT_ACTIVE, TYPE_LIGHT_INACTIVE, TYPE_LOWSPEED, TYPE_LOWSPEED_9V, TYPE_NO_SENSOR, TYPE_REFLECTION, TYPE_SOUND_DB, TYPE_SOUND_DBA, TYPE_SWITCH, TYPE_TEMPERATURE
 
Method Summary
 void activate()
          Activates an RCX sensor.
 void addSensorPortListener(SensorPortListener aListener)
          Adds a port listener.
 void callListeners()
          Call Port Listeners.
 int getId()
          Return the ID of the port.
 int getMode()
          Returns mode compatible with Lego firmware.
 int getType()
          Returns type compatible with Lego firmware.
 int i2cBusy()
          Low-level method to test if I2C connection is busy.
static int i2cBusyById(int aPortId)
          Low-level method to test if I2C connection is busy.
 void i2cDisable()
          Low-level method to disable I2C on the port.
static void i2cDisableById(int aPortId)
          Low-level method to disable I2C on the port.
 void i2cEnable()
          Low-level method to enable I2C on the port.
static void i2cEnableById(int aPortId)
          Low-level method to enable I2C on the port.
 int i2cStart(int address, int internalAddress, int numInternalBytes, byte[] buffer, int numBytes, int transferType)
          Low-level method to start an I2C transaction.
static int i2cStartById(int aPortId, int address, int internalAddress, int numInternalBytes, byte[] buffer, int numBytes, int transferType)
          Low-level method to start an I2C transaction.
 void passivate()
          Passivates an RCX sensor sensor.
 boolean readBooleanValue()
          Reads the boolean value of the sensor.
 int readRawValue()
          Reads the raw value of the sensor.
 int readValue()
          Returns value compatible with Lego firmware.
 void setMode(int mode)
          Sets mode compatible with Lego firmware.
 void setType(int type)
          Sets type compatible with Lego firmware.
 void setTypeAndMode(int type, int mode)
          Sets type and mode compatible with Lego firmware.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait
 

Field Detail

S1

public static final SensorPort S1
Port labeled 1 on NXT.


S2

public static final SensorPort S2
Port labeled 2 on NXT.


S3

public static final SensorPort S3
Port labeled 3 on NXT.


S4

public static final SensorPort S4
Port labeled 4 on NXT.


PORTS

public static final SensorPort[] PORTS
Array containing all three ports [0..3].

Method Detail

readRawValue

public final int readRawValue()
Reads the raw value of the sensor.

Specified by:
readRawValue in interface ADSensorPort

readBooleanValue

public final boolean readBooleanValue()
Reads the boolean value of the sensor. Do not use - currently returns the raw value.

Specified by:
readBooleanValue in interface ADSensorPort

getId

public final int getId()
Return the ID of the port. One of 0, 1, 2 or 3.


addSensorPortListener

public void addSensorPortListener(SensorPortListener aListener)
Adds a port listener.

NOTE 1: You can add at most 8 listeners.
NOTE 2: Synchronizing inside listener methods could result in a deadlock.

See Also:
SensorPortListener

activate

public final void activate()
Activates an RCX sensor. This method should be called if you want to get accurate values from an RCX sensor. In the case of RCX light sensors, you should see the LED go on when you call this method.

Specified by:
activate in interface LegacySensorPort

passivate

public final void passivate()
Passivates an RCX sensor sensor.

Specified by:
passivate in interface LegacySensorPort

getMode

public int getMode()
Returns mode compatible with Lego firmware.

Specified by:
getMode in interface BasicSensorPort

getType

public int getType()
Returns type compatible with Lego firmware.

Specified by:
getType in interface BasicSensorPort

setTypeAndMode

public void setTypeAndMode(int type,
                           int mode)
Sets type and mode compatible with Lego firmware.

Specified by:
setTypeAndMode in interface BasicSensorPort

setType

public void setType(int type)
Sets type compatible with Lego firmware.

Specified by:
setType in interface BasicSensorPort

setMode

public void setMode(int mode)
Sets mode compatible with Lego firmware.

Specified by:
setMode in interface BasicSensorPort

readValue

public int readValue()
Returns value compatible with Lego firmware.

Specified by:
readValue in interface ADSensorPort

callListeners

public void callListeners()
Call Port Listeners. Used by ListenerThread.

Specified by:
callListeners in interface ListenerCaller

i2cEnableById

public static void i2cEnableById(int aPortId)
Low-level method to enable I2C on the port.


i2cDisableById

public static void i2cDisableById(int aPortId)
Low-level method to disable I2C on the port.


i2cBusyById

public static int i2cBusyById(int aPortId)
Low-level method to test if I2C connection is busy.


i2cStartById

public static int i2cStartById(int aPortId,
                               int address,
                               int internalAddress,
                               int numInternalBytes,
                               byte[] buffer,
                               int numBytes,
                               int transferType)
Low-level method to start an I2C transaction.


i2cEnable

public void i2cEnable()
Low-level method to enable I2C on the port.

Specified by:
i2cEnable in interface I2CPort

i2cDisable

public void i2cDisable()
Low-level method to disable I2C on the port.

Specified by:
i2cDisable in interface I2CPort

i2cBusy

public int i2cBusy()
Low-level method to test if I2C connection is busy.

Specified by:
i2cBusy in interface I2CPort

i2cStart

public int i2cStart(int address,
                    int internalAddress,
                    int numInternalBytes,
                    byte[] buffer,
                    int numBytes,
                    int transferType)
Low-level method to start an I2C transaction.

Specified by:
i2cStart in interface I2CPort