# Name of the plugin.
name=Tunneling Server Cluster
category=Smart Energy

# Any string is allowable here.  Generally it is either: Production Ready, Test Tool, or Requires Extending
qualityString=Requires Extending
# This must be one of the following:  productionReady, testTool, extensionNeeded
quality=extend

introducedIn=se-1.1-07-5356-16

#requiredApis=address-table
requiredPlugins=address-table

# Description of the plugin.
description=Ember implementation of Tunneling server cluster.  This plugin requires extending to integrate the software that is processing the tunneled data.  Note: if the maximum transfer size requires fragmentation, you need to manually include the Fragmentation plugin and configure it to support the tunnel data size.  Additionally, the plugin uses the address table to communicate with clients, so you must manually configure the address table size so that it accomodates active tunnels managed by this plugin as well as any other entries created during normal operation.  The Tunneling cluster test specification suggests that implementations support the test protocol (protocol id 199, manufacturer code 0xFFFF).  If you do not support it, you need some other means of proving two way communications works and is verifiable.  If test protocol support is enabled, the plugin will automatically handle requests for the test protocol and these messages will not fall through to the application.

# List of .c files that need to be compiled and linked in.
sourceFiles=tunneling-server.c,tunneling-server-cli.c

# List of callbacks implemented by this plugin
implementedCallbacks=emberAfTunnelingClusterServerInitCallback,emberAfTunnelingClusterServerTickCallback,emberAfTunnelingClusterServerAttributeChangedCallback,emberAfTunnelingClusterRequestTunnelCallback,emberAfTunnelingClusterCloseTunnelCallback,emberAfTunnelingClusterTransferDataClientToServerCallback,emberAfTunnelingClusterTransferDataErrorClientToServerCallback,emberAfPluginTunnelingServerStackStatusCallback

# Turn this on by default
includedByDefault=true

# Which clusters does it depend on
dependsOnClusterServer=Tunneling

# List of options
options=tunnelLimit,closeTunnelTimeout, maximumIncomingTransferSize, testProtocolSupport, closureNotificationSupport

tunnelLimit.name=Tunnel Limit
tunnelLimit.description=Maximum number of active tunnels supported by the plugin.
tunnelLimit.type=NUMBER:1,255
tunnelLimit.default=8

closeTunnelTimeout.name=Close Tunnel Timeout
closeTunnelTimeout.description=Minimum number of seconds that the plugin waits before closing an inactive tunnel.
closeTunnelTimeout.type=NUMBER:1,65535
closeTunnelTimeout.default=65535

maximumIncomingTransferSize.name=Maximum Incoming Transfer Size
maximumIncomingTransferSize.description=The maximum size of an incoming tunnel message that the server can support.
maximumIncomingTransferSize.type=NUMBER:1,65535
maximumIncomingTransferSize.default=128

testProtocolSupport.name=Enable Support for the Test Protocol (199)
testProtocolSupport.description=This enables support in the plugin for the Test Protocol (protocol 199). This is an echo protocol from the server which helps test two-way communications easily.
testProtocolSupport.type=BOOLEAN
testProtocolSupport.default=false

closureNotificationSupport.name=Enable Support for sending Closure Nofication Messages
closureNotificationSupport.description=This enables support in the plugin for Closure Notification Messages. Since the client still needs to re-open, you may not want to support this optional message.
closureNotificationSupport.type=BOOLEAN
closureNotificationSupport.default=false
