Skip to content
Version 6.1.0
Contact Us

Channel

A Channel lets one write reach many objects. A client writes a value to the Channel, and the device passes it on to a list of properties in other objects. It also takes part in group writes, where one message sets many channels at once.

  • Set a whole floor of lights with one write
  • Send one setpoint to several zone controllers
  • Join lighting outputs into a scene
  • Respond to a group write from a lighting panel
Property What it holds
Present_Value The last value written to the channel. It starts out NULL.
List_Of_Object_Property_References The properties that receive each value written to the channel.
Channel_Number The number a group write uses to find this channel.
Control_Groups The control groups this channel belongs to. A group write is matched against them.
Last_Priority The priority of the most recent write.
Write_Status Shows whether the last write to the members is idle, in progress, successful or failed.

A Channel is written with priorities like a commandable object, but its writes are copied to the members rather than driving hardware. With intrinsic reporting it applies the NONE algorithm, so it reports faults only.

Enable it with the STACK_OPTION_OBJECT_TYPE_CHANNEL build option. Call BACnetStack_AddObject first, then BACnetStack_AddChannelObject with the datatype of Present_Value. The second call does not check that the object exists. Present_Value is read from the priority slots through the callback you register with BACnetStack_RegisterCallbackGetPropertyBool and the typed getter. Writes arrive at the typed setter or the BACnetStack_RegisterCallbackSetPropertyNull callback. A group write reads Channel_Number and Control_Groups through the BACnetStack_RegisterCallbackGetPropertyUnsignedInteger callback, so serve both or the channel never matches. Pass 97 as the datatype for a lighting command. Give the channel its members with BACnetStack_AddObjectPropertyReferenceToChannel, one call per referenced property; a channel with no members passes nothing on. A member in another device makes the stack bind that device’s address: it sends a Who-Is for the device at once and then on every heartbeat, 3600 seconds by default, while the reference exists. The stack keeps Write_Status and does not ask a callback for it. While Write_Status is in progress, it answers a WriteProperty or WritePropertyMultiple of Present_Value with OBJECT / BUSY itself; a member in another device can hold it there for APDU_Timeout times (Number_Of_APDU_Retries + 1). While Write_Status is failed, the stack also serves Reliability with the cause, if you enabled that property; the rest of the time your Reliability is served.

Group, Global Group, Lighting Output, Binary Lighting Output

The properties ASHRAE 135-2024 clause 12.53 defines for this object type.

How to read the table:

  • Conformance is what the standard asks of every object of this type: R is required, W is required and writable by a client, O is optional. A digit after the letter marks a condition in the standard that decides when the property is present or writable, such as support for intrinsic reporting.
  • Present by default: yes means the stack presents the property as soon as you add the object; no means it is optional and you turn it on with BACnetStack_SetPropertyEnabled. This is the stack’s starting setup, so it can differ from the conformance code.
  • Writable is whether a client can write the property by default. Change it with BACnetStack_SetPropertyWritable.
  • not in profile means the stack does not offer this property for this object type.
  • Value when your callback does not answer: “Held by the stack” means the stack stores and serves the value itself and does not ask your callbacks. Otherwise it is the value the stack answers when your callback declines or is not registered.
Property Datatype Conformance Present by default Writable Value when your callback does not answer
Object_Identifier BACnetObjectIdentifier R yes no Held by the stack.
Object_Name CharacterString R yes no "Object <type>,<instance>", such as "Object 0,1" for Analog Input 1.
Object_Type BACnetObjectType R yes no Held by the stack.
Description CharacterString O no no ""
Present_Value BACnetChannelValue W yes yes Built by the stack from the priority slots your callbacks serve; Null while every slot is empty. A lighting-command or object-identifier channel reads your plain Get callback instead.
Last_Priority Unsigned R yes no 0
Write_Status BACnetWriteStatus R yes no Held by the stack.
Status_Flags BACnetStatusFlags R yes no Held by the stack.
Reliability BACnetReliability O no no 0
Out_Of_Service Boolean R yes no false
List_Of_Object_Property_References BACnetARRAY[N] of BACnetDeviceObjectPropertyReference W1 yes yes Held by the stack.
Execution_Delay BACnetARRAY[N] of Unsigned O1 no no Not presented: a read answers unknown-property.
Allow_Group_Delay_Inhibit Boolean O no no Not presented: a read answers unknown-property.
Channel_Number Unsigned16 W yes yes 0
Control_Groups BACnetARRAY[N] of Unsigned32 W yes yes 0
Event_Detection_Enable Boolean O2,3 no no false
Notification_Class Unsigned O2,3 no no 0
Event_Enable BACnetEventTransitionBits O2,3 no no An empty bit string.
Event_State BACnetEventState O2,3 no no 0
Acked_Transitions BACnetEventTransitionBits O2,3 no no An empty bit string.
Notify_Type BACnetNotifyType O2,3 no no 0
Event_Time_Stamps BACnetARRAY[3] of BACnetTimeStamp O2,3 no no No default: the read fails.
Event_Message_Texts BACnetARRAY[3] of CharacterString O3 no no ""
Event_Message_Texts_Config BACnetARRAY[3] of CharacterString O3 no no ""
Reliability_Evaluation_Inhibit Boolean O4 no no false
Property_List BACnetARRAY[N] of BACnetPropertyIdentifier R yes no Held by the stack.
Value_Source BACnetValueSource O5,6,7 no no No default: the read fails.
Audit_Level BACnetAuditLevel O8 not in profile not in profile No default: the read fails.
Auditable_Operations BACnetAuditOperationFlags O8 not in profile not in profile No default: the read fails.
Audit_Priority_Filter BACnetOptionalPriorityFilter O8 not in profile not in profile No default: the read fails.
Tags BACnetARRAY[N] of BACnetNameValue O no no No default: the read fails.
Profile_Location CharacterString O no no ""
Profile_Name CharacterString O no no ""