Allow processing of Who-Has when DCC initiation is disabled

This commit is contained in:
Steve Karg
2023-10-31 10:55:08 -05:00
parent 3f1d6fe3a9
commit 4991bb6156
3 changed files with 9 additions and 6 deletions
+1
View File
@@ -143,6 +143,7 @@ static bool apdu_unconfirmed_dcc_disabled(uint8_t service_choice)
/* WhoIs will be processed and I-Am initiated as response. */ /* WhoIs will be processed and I-Am initiated as response. */
switch (service_choice) { switch (service_choice) {
case SERVICE_UNCONFIRMED_WHO_IS: case SERVICE_UNCONFIRMED_WHO_IS:
case SERVICE_UNCONFIRMED_WHO_HAS:
break; break;
default: default:
status = true; status = true;
+1
View File
@@ -143,6 +143,7 @@ static bool apdu_unconfirmed_dcc_disabled(uint8_t service_choice)
/* WhoIs will be processed and I-Am initiated as response. */ /* WhoIs will be processed and I-Am initiated as response. */
switch (service_choice) { switch (service_choice) {
case SERVICE_UNCONFIRMED_WHO_IS: case SERVICE_UNCONFIRMED_WHO_IS:
case SERVICE_UNCONFIRMED_WHO_HAS:
break; break;
default: default:
status = true; status = true;
+7 -6
View File
@@ -92,7 +92,7 @@ static BACNET_SERVICES_SUPPORTED
SERVICE_SUPPORTED_UNCONFIRMED_PRIVATE_TRANSFER, SERVICE_SUPPORTED_UNCONFIRMED_PRIVATE_TRANSFER,
SERVICE_SUPPORTED_UNCONFIRMED_TEXT_MESSAGE, SERVICE_SUPPORTED_UNCONFIRMED_TEXT_MESSAGE,
SERVICE_SUPPORTED_TIME_SYNCHRONIZATION, SERVICE_SUPPORTED_WHO_HAS, SERVICE_SUPPORTED_TIME_SYNCHRONIZATION, SERVICE_SUPPORTED_WHO_HAS,
SERVICE_SUPPORTED_WHO_IS, SERVICE_SUPPORTED_WHO_IS,
SERVICE_SUPPORTED_UTC_TIME_SYNCHRONIZATION, SERVICE_SUPPORTED_UTC_TIME_SYNCHRONIZATION,
SERVICE_SUPPORTED_WRITE_GROUP, SERVICE_SUPPORTED_WRITE_GROUP,
SERVICE_SUPPORTED_UNCONFIRMED_COV_NOTIFICATION_MULTIPLE, SERVICE_SUPPORTED_UNCONFIRMED_COV_NOTIFICATION_MULTIPLE,
@@ -251,7 +251,7 @@ static union {
confirmed_ack_function complex; confirmed_ack_function complex;
} Confirmed_ACK_Function[MAX_BACNET_CONFIRMED_SERVICE]; } Confirmed_ACK_Function[MAX_BACNET_CONFIRMED_SERVICE];
/** /**
* @brief Determine if the BACnet service is a Simple Ack Service * @brief Determine if the BACnet service is a Simple Ack Service
* @param service_choice [in] BACnet confirmed service choice * @param service_choice [in] BACnet confirmed service choice
*/ */
@@ -293,7 +293,7 @@ bool apdu_confirmed_simple_ack_service(
return status; return status;
} }
/** /**
* @brief Set the the BACnet Simple Ack Service handler * @brief Set the the BACnet Simple Ack Service handler
* @param service_choice [in] BACnet confirmed service choice * @param service_choice [in] BACnet confirmed service choice
* @param pFunction [in] handler for the service * @param pFunction [in] handler for the service
@@ -307,7 +307,7 @@ void apdu_set_confirmed_simple_ack_handler(
} }
} }
/** /**
* @brief Set the the BACnet Confirmed Ack Service handler * @brief Set the the BACnet Confirmed Ack Service handler
* @param service_choice [in] BACnet confirmed service choice * @param service_choice [in] BACnet confirmed service choice
* @param pFunction [in] handler for the service * @param pFunction [in] handler for the service
@@ -531,9 +531,10 @@ static bool apdu_unconfirmed_dcc_disabled(uint8_t service_choice)
can be processed in this state */ can be processed in this state */
status = true; status = true;
} else if (dcc_communication_initiation_disabled()) { } else if (dcc_communication_initiation_disabled()) {
/* WhoIs will be processed and I-Am initiated as response. */ /* WhoIs & WhoHas will be processed */
switch (service_choice) { switch (service_choice) {
case SERVICE_UNCONFIRMED_WHO_IS: case SERVICE_UNCONFIRMED_WHO_IS:
case SERVICE_UNCONFIRMED_WHO_HAS:
break; break;
default: default:
status = true; status = true;
@@ -668,7 +669,7 @@ void apdu_handler(BACNET_ADDRESS *src,
we could check src to see if that matched the tsm */ we could check src to see if that matched the tsm */
tsm_free_invoke_id(invoke_id); tsm_free_invoke_id(invoke_id);
break; break;
case PDU_TYPE_ERROR: case PDU_TYPE_ERROR:
if (apdu_len < 3) { if (apdu_len < 3) {
break; break;
} }