slink Client

Description

slinkClient connects to a slinkServer or FABIAN server to present remote BNCS devices to a local network.

It connects via TCP/IP with optional SSL encryption (when connecting to slinkServer only).

The slink system follows the same general principles as FABIAN control system link.

slink has slightly different philosphy to FABIAN in that there is one slinkClient for each remote site. This is easier to understand, allows easier maintenance.

The slink client/server provides extended BNCS addressing and large slot-size.

Configuration

Configuration may be set from the UI of the application and this writes the ini file. Setting from the UI has the advantage that changes are dynamic without having to restart the application. Don't forget to copy the resulting config back to your system file server!

There can be more than one slinkClient.exe application for any one system - so there must be more than one configuration file.

There is a default file:

slinkClient_default.ini

but you can supply a command line parameter which is a profile name. So a command line of:

slinkClient myRemoteSystem

results in config being taken from:

slinkClient_myRemoteSystem.ini

Configuration files are located in the "system config" location appropriate for your system type alongside BNCS database files.

[slink]
;This can be a dotted network address but for SSL to work should be the DNS name of the server which must match the SSL certificate
Address=team.bncs.tv
Port=2222
StatusInfodriver=2

;Login credentials for the remote slinkServer
userName=A
password=B
controlPassword=C

;non-zero indicates the connection should be SSL
SSL=1

;This application may optionally use a SOCKS proxy so the connection may tunnel out. Set address and port and optional user credentials here
SocksAddress=
SocksPort=0
SocksUser=
SocksPassword=

;BNCS device list. These are the BNCS devices that this link will create on the local network and will pass messages to/from the remote network
;entries are of format <local>,<remote> where remote is optional and can be used to map the device number
device_1=123
device_2=124,1
device_3=

Security

This application will use SSL if configured. This only works if the "Address" of the server matches the SSL certificate that the server presents.

Client authentication could be made to work but is not currently configured.

Redundancy

You can run slinkClient in pairs to provide redundancy, and connect to two different servers.

CSI32 introduced redundancy mastering (in CSI32 version 1.2.59) to allow for a single device to control the TxRx state of all it's siblings. slink relies on this to maintain consistency of all its drivers and to provide the redundancy mechanism for the link itself. Unlike FABIAN slink does not use, or require 'F' messages.

You cannot run slinkClient and FABIANLink32 presenting the same devices to the one system, but you can use slinkClient and FabianLink32 for different devices.

Closedown

To closedown with CSI slinkClient requires a client connection to CSI. Client connection is not compulsory.

Connection status

If a device number is supplied:

StatusInfodriver=2

then slot 1 contains "1" if connection is made, and "0" if there is no connection. This mimics exactly the green/red, ok/failed indication on the UI

Debug/Diagnostics

It is a design decision that the application debugging is events only. If you want traffic level debugging then all of this is available using an external debugger.

The reasons for this are:

you actively have to run an external debugger if you want that level of detail (you can't just leave it enabled so ruining the performance of this application)
external debugger may have far better filtering/highlighting than is usually available on applications such as these

Version History

Version | Date | Notes
1.0.0.1 | 01/02/2016 | development version
1.0.0.2 | 16/02/2016 | development version
1.0.0.3 | 11/03/2016 | adds log-to-disk, fixes closedown crash
1.0.0.4 | 17/03/2016 | tidies up registration of drivers so that it behaves on duplicate local registration
1.0.0.5 | 17/03/2016 | flushes cache when removing driver (just saves a bit of memory, and removing reinstating a driver doesn't pull up a load of out-of-date guff). Logging a bit better behaved
1.0.0.6 | 17/10/2017 | Registers the entire range as defined by BNCS_V6
1.0.0.7 | 24/10/2017 | Router modify handling (kinda)
1.0.0.8 | 26/10/2017 | Router modify handling (anti-howlround)
1.0.0.9 | 30/10/2017 | Doesn't now propogate database changes when not in TXRX
1.0.0.10 | 06/12/2017 | Closes with CSI
1.0.0.11 | 08/12/2017 | More considered implementation of 1.0.0.10 (close with CSI)
1.0.0.12 | 21/12/2017 | Conversion of docs to markdown
1.0.13.0 | 30/01/2018 | Adds rudimentary infodriver status slot
1.0.14.0 | 24/04/2018 | Removes extended range support
Build: master 3586 0d983c63 Atos © 2018