org.openmuc.canopen.lib
Class CANopenLib

java.lang.Object
  extended by java.lang.Thread
      extended by org.openmuc.canopen.lib.CANopenLib
All Implemented Interfaces:
java.lang.Runnable

public class CANopenLib
extends java.lang.Thread

Platform dependent library, needs driver compiled with netdev support. Runs only on Linux. Tested with PEAK microcontrol.
Protocol: CANopen


Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
static long MS_TIMEOUT
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
CANopenLib()
          Creates a CANopenLib, with no connection.
 
Method Summary
 float bigEndianToFloat(byte[] data)
          Changes byte[4] from BigEndian data into float.
 short bigEndianToInt16(byte[] data)
          Changes byte[2] from BigEndian data into signed short.
 int bigEndianToInt24(byte[] data)
          Changes byte[3] from BigEndian data into signed int.
 int bigEndianToInt32(byte[] data)
          Changes byte[4] from BigEndian data into signed int.
 void close()
          Close CAN, method to close the socket.
 void connect(java.lang.String ifname)
          Connect to CAN
protected  void finalize()
           
 byte[] getData(int modulID, int index, int subindex)
          Sends a Message to the specific CAN.
 SDOClient newSDOClient(int nodeID)
           
 CLibrary.can_frame.ByReference readFrameWithTimeout(int timeoutMs)
           
 void run()
           
 void sendSDOUploadInitiate(byte node, int index, short subIndex)
           
 void sendSDOUploadSegment(byte node, boolean toggle)
           
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MS_TIMEOUT

public static long MS_TIMEOUT
Constructor Detail

CANopenLib

public CANopenLib()
Creates a CANopenLib, with no connection.

Method Detail

newSDOClient

public SDOClient newSDOClient(int nodeID)

connect

public void connect(java.lang.String ifname)
             throws NoDeviceException,
                    java.io.IOException
Connect to CAN

Parameters:
ifname - Name of the interface e.g. "can0"
Throws:
NoDeviceException - if interface isn't present.
java.io.IOException - if connection can not be established.

finalize

protected void finalize()
                 throws java.lang.Throwable
Overrides:
finalize in class java.lang.Object
Throws:
java.lang.Throwable

close

public void close()
Close CAN, method to close the socket.

Parameters:
ifname - Name of the Interface to close

sendSDOUploadInitiate

public void sendSDOUploadInitiate(byte node,
                                  int index,
                                  short subIndex)

sendSDOUploadSegment

public void sendSDOUploadSegment(byte node,
                                 boolean toggle)

readFrameWithTimeout

public CLibrary.can_frame.ByReference readFrameWithTimeout(int timeoutMs)

getData

public byte[] getData(int modulID,
                      int index,
                      int subindex)
               throws java.io.IOException,
                      TimeoutException
Sends a Message to the specific CAN.

Parameters:
modulID - ID of the Module, max=127.
index - The index of the Message, see CANopen.
subindex - The subindex of the Message, see CANopen.
Returns:
4 Byte Data, either a String or a BigEndian value.
Throws:
java.io.IOException - if parameter have wrong format, or read returns wrong data, or no socket.
TimeoutException - if read times out

bigEndianToFloat

public float bigEndianToFloat(byte[] data)
Changes byte[4] from BigEndian data into float.

Parameters:
data - Array of data bytes, BigEndian.
Returns:
Float value.

bigEndianToInt16

public short bigEndianToInt16(byte[] data)
Changes byte[2] from BigEndian data into signed short.

Parameters:
data - Array of data bytes, BigEndian.
Returns:
Signed short value.

bigEndianToInt24

public int bigEndianToInt24(byte[] data)
Changes byte[3] from BigEndian data into signed int. Last byte gets filled up.

Parameters:
data - Array of data bytes, BigEndian.
Returns:
Signed Integer value.

bigEndianToInt32

public int bigEndianToInt32(byte[] data)
Changes byte[4] from BigEndian data into signed int.

Parameters:
data - Array of data bytes, BigEndian.
Returns:
Signed Integer value.

run

public void run()
Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread