|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objecttuwien.auto.calimero.link.KNXNetworkLinkIP
public class KNXNetworkLinkIP
Implementation of the KNX network link based on the KNXnet/IP protocol, using a
KNXnetIPConnection
.
Once a link has been closed, it is not available for further link communication, i.e. it can't be reopened.
If KNXnet/IP routing is used as base protocol, the send methods with wait for
confirmation behave equally like without wait specified, since routing is an
unconfirmed protocol. This implies that no confirmation frames are generated, thus
NetworkLinkListener.confirmation(FrameEvent)
is not used.
IP address considerations:
On more IP addresses assigned to the local host (on possibly several local network
interfaces), the default chosen local host address can differ from the expected. In
this situation, the local endpoint has to be specified manually during instantiation.
Network Address Translation (NAT) aware communication can only be used, if the
KNXnet/IP server of the remote endpoint supports it. Otherwise, connection timeouts
will occur. With NAT enabled, KNXnet/IP accepts IPv6 addresses. By default, the
KNXnet/IP protocol only works with IPv4 addresses.
Field Summary | |
---|---|
static int |
ROUTER
Service mode for routing. |
static int |
TUNNEL
Service mode for link layer tunneling. |
Constructor Summary | |
---|---|
KNXNetworkLinkIP(int serviceMode,
java.net.InetSocketAddress localEP,
java.net.InetSocketAddress remoteEP,
boolean useNAT,
KNXMediumSettings settings)
Creates a new network link based on the KNXnet/IP protocol, using a KNXnetIPConnection . |
|
KNXNetworkLinkIP(java.net.NetworkInterface netIf,
java.net.InetAddress mcGroup,
KNXMediumSettings settings)
Creates a new network link based on the KNXnet/IP routing protocol, using a KNXnetIPRouter . |
|
KNXNetworkLinkIP(java.lang.String remoteHost,
KNXMediumSettings settings)
Creates a new network link based on the KNXnet/IP tunneling protocol, using a KNXnetIPTunnel with default communication settings. |
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 |
Field Detail |
---|
public static final int ROUTER
public static final int TUNNEL
Constructor Detail |
---|
public KNXNetworkLinkIP(int serviceMode, java.net.InetSocketAddress localEP, java.net.InetSocketAddress remoteEP, boolean useNAT, KNXMediumSettings settings) throws KNXException
KNXnetIPConnection
.
For more details on KNXnet/IP connections, refer to the various KNXnet/IP
implementations.
serviceMode
- mode of communication to open, serviceMode
is one
of the service mode constants (e.g. TUNNEL
); depending on the mode
set, the expected local / remote endpoints might differlocalEP
- the local endpoint of the link to use;null
for the default local host and an ephemeral port numberROUTER
mode, specifies the multicast interface, i.e. the local
network interface is taken that has the IP address bound to it (if IP
address is bound more than once, it's undefined which interface is
returned), the port is not used; use null
for
localEP
or an unresolved IP address to take the host's
default multicast interfaceremoteEP
- the remote endpoint of the link to communicate with;ROUTER
mode, the IP address specifies the multicast group to
join, the port is not used; use null
for
remoteEP
or an unresolved IP address to take the default
multicast groupuseNAT
- true
to use network address translation in tunneling
service mode, false
to use the default (non aware) mode;
parameter is ignored for routingsettings
- medium settings defining device and medium specifics needed for
communication
KNXException
- on failure establishing link using the KNXnet/IP connectionpublic KNXNetworkLinkIP(java.net.NetworkInterface netIf, java.net.InetAddress mcGroup, KNXMediumSettings settings) throws KNXException
KNXnetIPRouter
.
netIf
- local network interface used to join the multicast group and for
sending, use null
for the host's default multicast interfacemcGroup
- address of the multicast group to join, use null
for
the default KNXnet/IP multicast addresssettings
- medium settings defining device and medium specifics needed for
communication
KNXException
- on failure establishing link using the KNXnet/IP connectionpublic KNXNetworkLinkIP(java.lang.String remoteHost, KNXMediumSettings settings) throws KNXException
KNXnetIPTunnel
with default communication settings.
The link is established using a KNXnet/IP tunnel, the local endpoint is the default local host, the remote endpoint uses the default KNXnet/IP port number, network address translation (NAT) is disabled.
remoteHost
- remote host namesettings
- medium settings defining device and medium specifics needed for
communication
KNXException
- on failure establishing link using the KNXnet/IP connectionMethod Detail |
---|
public void addLinkListener(NetworkLinkListener l)
KNXNetworkLink
l
to receive events from this
link.
If l
was already added as listener, no action is performed.
addLinkListener
in interface KNXNetworkLink
l
- the listener to addpublic void close()
KNXNetworkLink
All registered link listeners get notified.
If no communication access was established in the first place, no action is
performed.
close
in interface KNXNetworkLink
public final byte getHopCount()
KNXNetworkLink
getHopCount
in interface KNXNetworkLink
KNXNetworkLink.setHopCount(int)
public KNXMediumSettings getKNXMedium()
KNXNetworkLink
The returned object is a reference to the one used by this link (not a copy).
getKNXMedium
in interface KNXNetworkLink
public java.lang.String getName()
KNXNetworkLink
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.
getName
in interface KNXNetworkLink
public boolean isOpen()
KNXNetworkLink
After a call to KNXNetworkLink.close()
or after the underlying protocol initiated the end
of the communication, this method always returns false
.
isOpen
in interface KNXNetworkLink
true
if this network link is open, false
on
closedpublic void removeLinkListener(NetworkLinkListener l)
KNXNetworkLink
l
, so it does no longer
receive events from this link.
If l
was not added in the first place, no action is performed.
removeLinkListener
in interface KNXNetworkLink
l
- the listener to removepublic void send(CEMILData msg, boolean waitForCon) throws KNXTimeoutException, KNXLinkClosedException
KNXNetworkLink
If the source address of msg
is 0.0.0, the device address supplied
in the medium settings is used as message source address.
send
in interface KNXNetworkLink
msg
- cEMI L-data message to sendwaitForCon
- true
to wait for link layer confirmation response,
false
to not wait for the confirmation
KNXTimeoutException
- on a timeout during send (for example when waiting on
acknowledge using a reliable sending protocol)
KNXLinkClosedException
- if the link is closedpublic void sendRequest(KNXAddress dst, Priority p, byte[] nsdu) throws KNXLinkClosedException, KNXTimeoutException
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. When communicating with a KNX network which uses open medium,
messages are broadcasted within domain (as opposite to system broadcast) by
default. Specify dst null
for system broadcast.
sendRequest
in interface KNXNetworkLink
dst
- KNX destination address, or null
p
- priority this KNX message is assigned tonsdu
- network layer service data unit
KNXLinkClosedException
- if the link is closed
KNXTimeoutException
- on a timeout during send (for example when waiting on
acknowledge using a reliable sending protocol)public void sendRequestWait(KNXAddress dst, Priority p, byte[] nsdu) throws KNXTimeoutException, KNXLinkClosedException
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. When communicating with a KNX network which uses open medium,
messages are broadcasted within domain (as opposite to system broadcast) by
default. Specify dst null
for system broadcast.
sendRequestWait
in interface KNXNetworkLink
dst
- KNX destination address, or null
p
- priority this message is assigned tonsdu
- network layer service data unit
KNXTimeoutException
- on a timeout during send or while waiting for the
confirmation
KNXLinkClosedException
- if the link is closedpublic final void setHopCount(int count)
KNXNetworkLink
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.
setHopCount
in interface KNXNetworkLink
count
- hop count value, 0 <= value <= 7public void setKNXMedium(KNXMediumSettings settings)
KNXNetworkLink
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.
setKNXMedium
in interface KNXNetworkLink
settings
- medium settings to use, the expected subtype is according to the
KNX network mediumpublic java.lang.String toString()
toString
in class java.lang.Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |