DCC initiation disabled, only proceess and initiate allowed services for protocol-revision 20 (#868)

This commit is contained in:
pkjkaindi
2024-12-11 01:52:28 +05:30
committed by GitHub
parent 11682ca484
commit 5a89525fec
+20 -3
View File
@@ -496,8 +496,9 @@ void apdu_retries_set(uint8_t value)
only DeviceCommunicationControl and ReinitializeDevice APDUs
shall be processed and no messages shall be initiated.
When the initiation of communications is disabled,
all APDUs shall be processed and responses returned as
required... */
only DeviceCommunicationControl, ReinitializeDevice,
ConfirmedAuditNotification APDUs shall be processed
and responses returned as required... */
static bool apdu_confirmed_dcc_disabled(uint8_t service_choice)
{
bool status = false;
@@ -511,6 +512,18 @@ static bool apdu_confirmed_dcc_disabled(uint8_t service_choice)
status = true;
break;
}
#if (BACNET_PROTOCOL_REVISION >= 20)
} else if (dcc_communication_initiation_disabled()) {
switch (service_choice) {
case SERVICE_CONFIRMED_DEVICE_COMMUNICATION_CONTROL:
case SERVICE_CONFIRMED_REINITIALIZE_DEVICE:
case SERVICE_CONFIRMED_AUDIT_NOTIFICATION:
break;
default:
status = true;
break;
}
#endif
}
return status;
@@ -523,7 +536,8 @@ static bool apdu_confirmed_dcc_disabled(uint8_t service_choice)
* If the request is valid and the 'Enable/Disable' parameter is
* DISABLE_INITIATION, the responding BACnet-user shall
* discontinue the initiation of messages except for I-Am
* requests issued in accordance with the Who-Is service procedure.
* requests issued in accordance with the Who-Is service procedure
* and UnconfirmedAuditNotification requests.
*
* @param service_choice Service, like SERVICE_UNCONFIRMED_WHO_IS
*
@@ -542,6 +556,9 @@ static bool apdu_unconfirmed_dcc_disabled(uint8_t service_choice)
switch (service_choice) {
case SERVICE_UNCONFIRMED_WHO_IS:
case SERVICE_UNCONFIRMED_WHO_HAS:
#if (BACNET_PROTOCOL_REVISION >= 20)
case SERVICE_UNCONFIRMED_AUDIT_NOTIFICATION:
#endif
break;
default:
status = true;