Skip to content
Version 6.1.0
Contact Us

BACnetStack_SendSubscribeCOVProperty

bool BACnetStack_SendSubscribeCOVProperty(
uint8_t * sentInvokeId,
const uint32_t subscriberProcessIdentifier,
const uint16_t monitoredObjectType,
const uint32_t monitoredObjectInstance,
const uint32_t monitoredPropertyIdentifier,
const bool usePropertyArrayIndex,
const uint32_t propertyArrayIndex,
const bool useCovIncrement,
const float covIncrement,
const bool issueConfirmedNotifications,
const uint32_t lifetime,
const uint8_t * connectionString,
const uint8_t connectionStringLength,
const uint32_t networkPortInstance,
const uint16_t destinationNetwork,
const uint8_t * destinationAddress,
const uint8_t destinationAddressLength);

Sends a confirmed SubscribeCOVProperty request to subscribe for Change-Of-Value notifications on a single specified property of an object (rather than the fixed Present_Value/Status_Flags pair used by SendSubscribeCOV).

See also: Client response hooks

BACnet reference: ANSI/ASHRAE 135-2024 clause 13.15 (SubscribeCOVProperty Service).

Parameter Direction Description
sentInvokeId out The invoke-id of the sent request, valid only if this function returns true.
subscriberProcessIdentifier in The process identifier the subscriber uses to distinguish its own subscriptions.
monitoredObjectType, monitoredObjectInstance in The object being subscribed to. The type and instance are one BACnet Object Identifier carried as two parameters (see the API conventions).
monitoredPropertyIdentifier in The property to monitor.
usePropertyArrayIndex, propertyArrayIndex in If usePropertyArrayIndex is true, monitor only this array element of the property. monitoredPropertyIdentifier and this optional array index are sent together as the request’s one BACnetPropertyReference (cl. 21).
useCovIncrement, covIncrement in If useCovIncrement is true, only notify when the value changes by at least covIncrement.
issueConfirmedNotifications in Whether to request confirmed (true) or unconfirmed (false) COV notifications.
lifetime in The requested subscription lifetime in seconds, which must be non-zero: cl. 13.15.1.1.4 does not allow 0 for SubscribeCOVProperty, so it has no indefinite subscription. The stack sends the value as given; a conforming server refuses 0. A conforming server accepts any lifetime from 1 to 28800 seconds (8 hours); a server may also accept longer ones.
connectionString, connectionStringLength in The datalink address to send TO (the destination) - not the local address to send from. For IPv4 this is 6 bytes: 4 octets of IPv4 address followed by 2 octets of port, big-endian (e.g. 0xC0,0xA8,0x01,0x05,0xBA,0xC0 = 192.168.1.5:47808; see BACnetStack_SendRegisterForeignDevice() for a worked example); on BACnet/IPv4 the stack refuses to send to a connection string of any other length, except that a broadcast from a device registered as a foreign device goes to its BBMD and does not use the connection string. MS/TP and BACnet/SC use a different connection-string shape; see their respective Set/Send exports.
networkPortInstance in The Network Port object instance to send the message on, or BACNET_NETWORK_PORT_DEFAULT (4194303) for the default/single port.
destinationNetwork, destinationAddress, destinationAddressLength in The destination to send the request to.

True if the request was sent, otherwise false. BY DESIGN there is no COV-notification hook. Incoming notifications arrive as ordinary frames in your CallbackReceiveMessageForPort; decode them with BACnetStack_DecodeAs(). The stack does not provide a typed callback for them and is not intended to.

Topic: Client requests. Declared in CASBACnetStackDLL.h.