tuwien.auto.calimero.link
Class KNXNetworkLinkFT12

java.lang.Object
  extended by tuwien.auto.calimero.link.KNXNetworkLinkFT12
All Implemented Interfaces:
KNXNetworkLink

public class KNXNetworkLinkFT12
extends java.lang.Object
implements KNXNetworkLink

Implementation of the KNX network network link based on the FT1.2 protocol, using a FT12Connection.

Once a link has been closed, it is not available for further link communication, i.e. it can't be reopened.


Constructor Summary
KNXNetworkLinkFT12(int portNumber, KNXMediumSettings settings)
          Creates a new network link based on the FT1.2 protocol for accessing the KNX network.
KNXNetworkLinkFT12(java.lang.String portID, KNXMediumSettings settings)
          Creates a new network link based on the FT1.2 protocol for accessing the KNX network.
 
Method Summary
 void addLinkListener(NetworkLinkListener l)
          Adds the specified event listener l to receive events from this link.
 void close()
          Ends communication with the KNX network and closes the network link.
 byte getHopCount()
          Returns the hop count used as default for KNX messages.
 KNXMediumSettings getKNXMedium()
          Returns the KNX medium settings used by this network link.
 java.lang.String getName()
          Returns the name of the link, a short textual representation to identify a link.
 boolean isOpen()
          Checks for open network link.
 void removeLinkListener(NetworkLinkListener l)
          Removes the specified event listener l, so it does no longer receive events from this link.
 void send(CEMILData msg, boolean waitForCon)
          Sends a KNX link layer message supplied as type cEMI L-data.
 void sendRequest(KNXAddress dst, Priority p, byte[] nsdu)
          Sends a link layer request message to the given destination.
 void sendRequestWait(KNXAddress dst, Priority p, byte[] nsdu)
          Sends a link layer request message to the given destination, and waits for the corresponding link layer confirmation.
 void setHopCount(int count)
          Sets the hop count used as default in KNX messages.
 void setKNXMedium(KNXMediumSettings settings)
          Supplies medium information necessary for KNX communication.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

KNXNetworkLinkFT12

public KNXNetworkLinkFT12(int portNumber,
                          KNXMediumSettings settings)
                   throws KNXException
Creates a new network link based on the FT1.2 protocol for accessing the KNX network.

The port number is used to choose the serial port for communication. It is mapped to the default port identifier using that number on the platform.

Parameters:
portNumber - port number of the serial communication port to use
settings - medium settings defining device and medium specifics needed for communication
Throws:
KNXException

KNXNetworkLinkFT12

public KNXNetworkLinkFT12(java.lang.String portID,
                          KNXMediumSettings settings)
                   throws KNXException
Creates a new network link based on the FT1.2 protocol for accessing the KNX network.

The port identifier is used to choose the serial port for communication. These identifiers are usually device and platform specific.

Parameters:
portID - identifier of the serial communication port to use
settings - medium settings defining device and medium specifics needed for communication
Throws:
KNXException
Method Detail

addLinkListener

public void addLinkListener(NetworkLinkListener l)
Description copied from interface: KNXNetworkLink
Adds the specified event listener l to receive events from this link.

If l was already added as listener, no action is performed.

Specified by:
addLinkListener in interface KNXNetworkLink
Parameters:
l - the listener to add

close

public void close()
Description copied from interface: KNXNetworkLink
Ends communication with the KNX network and closes the network link.

All registered link listeners get notified.
If no communication access was established in the first place, no action is performed.

Specified by:
close in interface KNXNetworkLink

getHopCount

public byte getHopCount()
Description copied from interface: KNXNetworkLink
Returns the hop count used as default for KNX messages.

Specified by:
getHopCount in interface KNXNetworkLink
Returns:
hop count as 3 Bit unsigned value with the range 0 to 7
See Also:
KNXNetworkLink.setHopCount(int)

getKNXMedium

public KNXMediumSettings getKNXMedium()
Description copied from interface: KNXNetworkLink
Returns the KNX medium settings used by this network link.

The returned object is a reference to the one used by this link (not a copy).

Specified by:
getKNXMedium in interface KNXNetworkLink
Returns:
medium settings for KNX network

getName

public java.lang.String getName()
Description copied from interface: KNXNetworkLink
Returns the name of the link, a short textual representation to identify a link.

The name is unique for links with different remote endpoints.
The returned name is used by this link for the name of its log service. Supply KNXNetworkLink.getName() for LogManager.getLogService(String) for example to get the log service of this link.

By default, "link " + address/ID of the remote endpoint is returned (e.g. "Link 192.168.0.10:3671" for an IP link).
After closing the link, the returned name might differ, e.g. get reset to some arbitrary default name.

Specified by:
getName in interface KNXNetworkLink
Returns:
link name as string

isOpen

public boolean isOpen()
Description copied from interface: KNXNetworkLink
Checks for open network link.

After a call to KNXNetworkLink.close() or after the underlying protocol initiated the end of the communication, this method always returns false.

Specified by:
isOpen in interface KNXNetworkLink
Returns:
true if this network link is open, false on closed

removeLinkListener

public void removeLinkListener(NetworkLinkListener l)
Description copied from interface: KNXNetworkLink
Removes the specified event listener l, so it does no longer receive events from this link.

If l was not added in the first place, no action is performed.

Specified by:
removeLinkListener in interface KNXNetworkLink
Parameters:
l - the listener to remove

send

public void send(CEMILData msg,
                 boolean waitForCon)
          throws KNXTimeoutException,
                 KNXLinkClosedException
Description copied from interface: KNXNetworkLink
Sends a KNX link layer message supplied as type cEMI L-data.

If the source address of msg is 0.0.0, the device address supplied in the medium settings is used as message source address.

Specified by:
send in interface KNXNetworkLink
Parameters:
msg - cEMI L-data message to send
waitForCon - true to wait for link layer confirmation response, false to not wait for the confirmation
Throws:
KNXTimeoutException - on a timeout during send (for example when waiting on acknowledge using a reliable sending protocol)
KNXLinkClosedException - if the link is closed

sendRequest

public void sendRequest(KNXAddress dst,
                        Priority p,
                        byte[] nsdu)
                 throws KNXTimeoutException,
                        KNXLinkClosedException
Description copied from interface: KNXNetworkLink
Sends a link layer request message to the given destination.

Depending on the address, the request is either point-to-point, multicast or broadcast. A network link implementation is allowed to interpret a dst parameter of null as system broadcast, or otherwise uses its default broadcast behavior.

Specified by:
sendRequest in interface KNXNetworkLink
Parameters:
dst - KNX destination address, or null
p - priority this KNX message is assigned to
nsdu - network layer service data unit
Throws:
KNXTimeoutException - on a timeout during send (for example when waiting on acknowledge using a reliable sending protocol)
KNXLinkClosedException - if the link is closed

sendRequestWait

public void sendRequestWait(KNXAddress dst,
                            Priority p,
                            byte[] nsdu)
                     throws KNXTimeoutException,
                            KNXLinkClosedException
Description copied from interface: KNXNetworkLink
Sends a link layer request message to the given destination, and waits for the corresponding link layer confirmation.

Depending on the address, the request is either point-to-point, multicast or broadcast. A network link implementation is allowed to interpret a dst parameter of null as system broadcast, or otherwise uses its default broadcast behavior.

Specified by:
sendRequestWait in interface KNXNetworkLink
Parameters:
dst - KNX destination address, or null
p - priority this message is assigned to
nsdu - network layer service data unit
Throws:
KNXTimeoutException - on a timeout during send or while waiting for the confirmation
KNXLinkClosedException - if the link is closed

setHopCount

public void setHopCount(int count)
Description copied from interface: KNXNetworkLink
Sets the hop count used as default in KNX messages.

It denotes how many sub networks a message is allowed to travel.
A message its hop count is decremented by KNX routers to limit distance and avoid looping. On hop count value 0, the message is discarded from the network. A hop count of 7 never gets decremented.
By default, a hop count of 6 is specified.

Specified by:
setHopCount in interface KNXNetworkLink
Parameters:
count - hop count value, 0 <= value <= 7

setKNXMedium

public void setKNXMedium(KNXMediumSettings settings)
Description copied from interface: KNXNetworkLink
Supplies medium information necessary for KNX communication.

These informations are differing between KNX media and depend on the KNX network this link is communicating with.
The settings medium type has to match the medium type supplied to the link in the first place.
The settings object is not copied internally to allow subsequent changes to medium settings by the user which should take effect immediately.

Specified by:
setKNXMedium in interface KNXNetworkLink
Parameters:
settings - medium settings to use, the expected subtype is according to the KNX network medium

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object