Skip to main content

Module channel

Module channel 

Source
Expand description

Channel object (type 53) per ASHRAE 135-2020 Clause 12.53.

A Channel forwards one value to a set of object properties and keeps no state of its own besides that value: no priority array, no algorithm. A Present_Value write is passed on to every member of List_Of_Object_Property_References at the priority it came with.

The object owns the bookkeeping: which values Present_Value takes (a BACnetChannelValue), Last_Priority, Write_Status and the busy interlock while a distribution runs. The member writes are the bundled server’s, made the way a Command object’s are: it takes the queued [CommandRun] under the guard that committed the Present_Value write, then, once that guard is released, coerces the value to each member’s datatype (coerce_channel_value) and writes it through the local write path, honouring each member’s Execution_Delay. The outcome comes back through BACnetObject::complete_command_run_internal.

A member may name another Device (Clause 12.53.11): the server writes it there as a confirmed WriteProperty, from its device bindings, coerced to the datatype a ReadProperty there returned. The object keeps that datatype for each member (BACnetObject::remember_member_datatype_internal) until the member is written again, or the server forgets it (#1342).

Reliability reports how the last distribution ended (Clause 12.53.9). A SUCCESSFUL one sets NO_FAULT_DETECTED; a FAILED one sets the kind of its first failure ([WriteFailure::reliability]): CONFIGURATION_ERROR, PROCESS_ERROR or COMMUNICATION_FAILURE. It keeps its value while a distribution is in progress, and Status_Flags shows FAULT whenever it isn’t NO_FAULT_DETECTED. Out of service, Reliability is decoupled from the distributions (Clause 12.53.10): it holds what it read when the object went out of service, a client may write any Reliability value to it, and back in service it reads the last distribution’s verdict again.

Channel_Number and Control_Groups are what the bundled server’s WriteGroup execution matches on (Clause 15.11). Allow_Group_Delay_Inhibit is served for it too: the object only stores the flag, and the server reads it to decide whether a WriteGroup asking for no delays gets them.

Structs§

ChannelObject
BACnet Channel object: forwards each Present_Value write to a list of member properties.
CoercionFailure
A channel value that can’t go to a member: the table names an invalid datatype, or a number is outside its rule’s limits.

Enums§

MemberDatatype
The datatype of a Channel member’s property, as Table 12-63’s columns name them.

Constants§

MAX_CHANNEL_MEMBERS
Resource cap on members, and so on Execution_Delay elements: the bound a Schedule puts on its reference list.
MAX_CONTROL_GROUPS
Resource cap on Control_Groups elements, the most groups one Channel joins at once (Clause 12.53.15 leaves it to the implementation).

Functions§

coerce_channel_value
The value a member of datatype target gets when a Channel holding value distributes it (Table 12-63).