UACS uses a First-In-First-Out (FIFO) Allocation Scheme. UACS
creates a FIFO chain of free PIDs during UACS start up. The initial head and
tail of chain are the first and last PIDs in the UACS configuration. PIDs are
always assigned from the head of the FIFO chain and when they are released they
are appended to the FIFO tail. This means that the first set of PIDs assigned
will cycle thru all configured PIDs. After this first allocation cycle, the
order in which PIDs are allocated is entirely dependent on the order in which
they are released.
All PIDs and their associated UACS controls are allocated within large banks
(Pdbank). The number of Pdbanks created depends on 2 configuration parameters,
COMSRV PIDCNT and UAMM BLOCKSIZE. Normally only 1 Pdbank will be created, i.e.
a BLOCKSIZE of 512 or 1024 will only cause 1 Pdbank to be created even if
65000 PIDs are configured.
A BLOCKSIZE of 2048 will only cause, at most, 2 Pdbanks to be created depending
on the value of PIDCNT. A BLOCKSIZE of 4096 will only cause, at most, 4 Pdbanks
to be created depending on the value of PIDCNT.
UACS checks for PID timeouts every n seconds, where n is the
value of the COMSRV TIMOUTWAIT parameter. Regardless of this value, UACS
checks for operator input every 3 seconds.
During the PID timeout loop, PIDs are subject to the following COMSERV timeout
parameters:
BADPIDTIMOUT (Server TRX)
BLKPIDTIMOUT (Server TRX)
CONTIMOUT (Server TRX)
NWRTIMOUT (Server TRX/Client)
NWWTIMOUT (Server TRX/Client)
Note that the UADTC Service PID is not subject to UACS timeout constraints - it
uses its own configurable timeout parameter to determine when it should
disconnect from UACS.