-
Notifications
You must be signed in to change notification settings - Fork 130
0.17.5 Release Notes
The ObjectIdentifier
can now be given a string in the form type:instance
where type is a name like analogInput or an unsigned integer, and
instance is an unsigned integer. This is a quite simple change except
all the sample applications have been updated to use the new syntax.
For example, the ReadProperty.py
sample application took commands like this:
> read 123:45 analogInput 67 presentValue
It now takes commands like this:
> read 123:45 analogInput:67 presentValue
The network layer nows supports these two relatively new NPDUs for discovering
the local topology. When a Network Service Access Point is bound to a network
stack (like a BACnet/IP BVLL stack or a VLAN node) and the network number is
None
it can be learned. The adapater object has an additional attribute
that matches the 'flag' in the Network-Number-Is, zero (0) is learned and one
(1) is configured.
Note that there is a chance that the local adapter learns the network number
to which it is connected and the adapter.adapterNet
will seem to mysteriously
change from None
to a network number. Applications should not rely on
nsap.adapters[None]
always referencing the local adapter,
use nsap.local_adapter
instead. The WhoIsRouter.py
sample application
has been updated to reflect this change.
As it stands now, you cannot build a router between two completely unknown networks, you have to have at least one of them known. This limitation might be lifted in the future.
You can use the new what_is_network_number()
function to ask about all the
networks you don't know about, or pass it an adapter to learn about a
specific downstream connection. You can pass it an additional optional
destination for a unicast request.
Similarly, the new network_number_is()
function sends out local broadcast
messages about configured networks (and routers should call this function
at startup). If a specific adapter parameter is given, it will send out a
local broadcast about a "learned" network.
There is a new i_am_router_to_network()
function (and routers should call
this function at startup) which announces its network topology information.
The covPeriod
property is now supported for the PulseConverterObject
.
There is now support for fixed length arrays. The ArrayOf()
function,
which returns a class that is a subclass of Array
, now has two additional
parameters, a fixed_length
with constrains the array to a specific number
of elements and a prototype
for initializing array elements.
The simplest example is an ArrayOf(Integer, fixed_length=3)
which is just
what it looks like. The PriorityArray
is a little more interesting because
each element of the array is a PriorityValue
which is a Choice
. So in that
case, since the array elements cannot be None
, the prototype is cloned into
new array elements.
The prototype
parameter is also used for variable length arrays, so when the
array is extended (by increasing the length, writing to array index zero which
are BACnet array semantics) the additional elements are deep copies of the
prototype.