This tool eases command sending in an automatic and recurrent way.
This interpreter reads and executes text files containing the commands to send, with also specific commands to configure the Links or to synchronize the commands.
This tool has been designed to optimize the command transmission. Thus, if multiple hosts are specified in a single file, they will be controlled in parallel.
Specific Commands
Lines starting with # are comments and are ignored.
Lines starting with * are commands to configure the Transmitter.
host
Selects the IP address that will be used to send following commands.
Example:
*host=192.168.0.24
port
Selects the TCP communication port (default is 3004 due to historical reasons. Please always use 3003 now).
Example:
*port=3003
multihost
Allows to send the same script to many Processors.
Syntax:
*multihost=< IPaddress> :< port >,< target >,< user >,< password >
port is optional.
If user and password are not specified, Login will be required in the command flow, else Login command is implicit.
Example 1: This command will be sent to both Processors
multihost=192.168.4.23 *multihost=192.168.4.24:3003 LOGIN admin,admin Bk.Src[1]=Analog
Example 2:
multihost=192.168.4.23,,admin,pass1 *multihost=192.168.4.25,09100001,admin,pass2 *multihost=192.168.4.25,09110022,admin,pass3 Bk.Src[1]=Analog
Will be sent to the 3 processors. Note that logins were all different on each host !
include
Used to insert the content of another file at the current file location.
Example:
*include=my_commands.s4las
Remark:
- if the included file was encrypted, the command is unchanged because the Link&Share Transmitter will automatically look for the right file to use (with s4lasx extension).
- if there is in a directory an encrypted file and a non encrypted file with the same name (except extension), priority is given to non encrypted file : the previous command first looks for “my_commands.s4las” non-encrypted file. If it does not exist, it will look for the “my_commands.s4lasc” non-encrypted file
loadfile
Used to load a binary file, to convert it in ASCII and affect it to a named buffer.
Syntax:
*loadfile=< name >,< filename >
The content may be called back later by starting the line with $ sign and using the buffer name surrounded with $ signs. Example:
loadfile=MyPreset,OnePreset.s4fm4 $PRESET.FORCEIMPORT=$MyPreset$
wait
Wait for the specified time in milliseconds.
Example:
*Wait=500
waitfor/*event
Used for synchronization : *event
is used to send a named event to an host, *waitfor
is used on another host to wait for this event.
Caution not to create dead-locks. Best use the *rendezvou
s where possible.
Syntax:
*event=eventname
*waitfor=eventname
Example:
host=localhost *port=3003 LOGIN 06010001,admin,admin *WaitFor=myevent RDS.PS=Tata1 *host=localhost *port=3003 LOGIN 06010002,admin,admin *event=myevent RDS.PS=Tata2
rendezvous
Used to synchronize many hosts, using a “Rendez-Vous” mechanism.
Syntax:
*rendezvous=< rendezvous_name >
Every host that contains this command will wait for the others. Caution, use a particular rendez-vous only once per host. Example:
host=localhost *port=3004 LOGIN 06010001,Admin,admin *RendezVous=myrdv RDS.PS=Tata1 *host=localhost *port=3004 LOGIN 06010002,Admin,admin *RendezVous=myrdv RDS.PS=Tata2
savenext
Save in a variable the next command result.
*savenext=buffername
Example: Request the PS (RDS Program Service name) and the RT (RDS RadioText) of a processor, and affect them to the RT of the other processor
host=localhost *port=3004 LOGIN 06010001,Admin,admin *SaveNext=myps RDS.PS? *SaveNext=myrt RDS.RT? *host=localhost *port=3004 LOGIN 06010002,Admin,admin $RDS.RT=$myps$ - $myrt$!
Set
Use to affect a value to a buffer. Then the value can be recalled easily.
Example:
set=PS_perso,My Radio $RDS.PS=$PS_perso$
Command line parameters
-version
Request the software version
- check-none
Configure the software not to verify the Servers replies. Useful for half-duplex links.
- check-full
Configure the software to verify all Servers replies, to retry in case of error, and finally to return an error code if one or many commands failed.
- check-back
Configure the software to return immediately et execute the commands in background. Errors will be visible only in the log file.
-host --port --cmd
Used to send commands directly without using a command file. ^
sign replaces the “Carriage Return” (end-of-line)
Example:
LinkAndShareTransmitter --host=localhost --port=3003 --cmd="LOGIN admin,admin^RDS.PS=My Radio"
-crypt
Used to encrypt a file so nobody can read it. A new file is created with the same name but a different extension.
Example:
LinkAndShareTransmitter –crypt MyFile.s4las-preset
This command creates an encrypted file named MyFile.s4lasc-preset.
Remark: Link&Share Transmitter does not provides a way to decrypt a file.
Typical use examples
RadioText configuration
host=localhost LOGIN admin,admin RDS.RT=My new text...
OnAir Preset Selection
host=localhost LOGIN admin,admin Preset.OnAir=4B - Rock Hot # Selects OnAir Preset
Backup mode Main Input configuration
host=localhost LOGIN admin,admin # Force to quit Mix Mode In.MixMode=0 # Force Backup mode Bk.Src[Main]=Analog # analog input is Main
Backup mode input order configuration
host=localhost LOGIN admin,admin Bk.Src=Analog:Digital:PCI:IP # Inputs in this order
Copy a preset from one processor to another
host=localhost # Source Processor LOGIN admin,admin *SaveNext=MyVariable Preset.Export=4B - Rock Hot *host=192.168.0.22 # Target Processor LOGIN admin,admin $Preset.ForceImport=4B - Rock Hot,$MyVariable$
Copy the OnAir preset from one processor to another
host=localhost # Source Processor LOGIN admin,admin # Gets the OnAir preset name *savenext=PresetName Preset.OnAir? # Get the OnAir preset config *SaveNext=BufferPreset $Preset.Export=$PresetName$ *host=192.168.0.22 # Target Processor LOGIN admin,admin # ForceImport allows to reconfigure even if the preset # is already OnAir, without renaming it $Preset.ForceImport=$PresetName$,$BufferPreset$ # Configure the OnAir preset if it was not already OnAir $Preset.OnAir=$PresetName$
Copy the RDS Program Service from one processor to two others
host=localhost # Source processor LOGIN admin,admin *SaveNext=MyVariable RDS.PS? *multihost=192.168.0.22,,admin,admin *multihost=192.168.0.23,,admin,admin $RDS.PS=$MyVariable$
Turning back an IP link
Suppose that 192.168.0.1 processor is encoding and emitting on its Link 1, and that 192.168.0.2 processor receives it on its Link 1. This script turns back the Link.
host=192.168.0.1 LOGIN admin,admin # Turns back Link 1 IP.Lk1.mode=RX IP.Lk1.enable=1 # just in case # Activate the decoder IP.dec.source=Link 1 IP.dec.enable=1 # Change the Process Input to use this stream Bk.Src[Main]=IP # Stops the encoder IP.Enc.enable=0 *host=192.168.0.2 LOGIN admin,admin # Change the process input before removing the source Bk.Src[Main]=Analog # Activate the encodur IP.enc.enable=1 # Turns back Link 1 IP.Lk1.source=Encoder IP.Lk1.mode=TX IP.Lk1.enable=1 # just in case # Stops the Decoder IP.Dec.enable=0