Fix confirmed ACK and simple ack callback without casting. (#112)

Co-authored-by: Steve Karg <steve.karg@legrand.us>
This commit is contained in:
Steve Karg
2020-08-26 17:41:32 -05:00
committed by GitHub
parent 645c1b7916
commit 577b18e1f7
+10 -10
View File
@@ -235,8 +235,10 @@ bool apdu_service_supported_to_index(
} }
/* Confirmed ACK Function Handlers */ /* Confirmed ACK Function Handlers */
static confirmed_ack_function static union {
Confirmed_ACK_Function[MAX_BACNET_CONFIRMED_SERVICE]; confirmed_simple_ack_function simple;
confirmed_ack_function complex;
} Confirmed_ACK_Function[MAX_BACNET_CONFIRMED_SERVICE];
void apdu_set_confirmed_simple_ack_handler( void apdu_set_confirmed_simple_ack_handler(
BACNET_CONFIRMED_SERVICE service_choice, BACNET_CONFIRMED_SERVICE service_choice,
@@ -263,8 +265,7 @@ void apdu_set_confirmed_simple_ack_handler(
case SERVICE_CONFIRMED_VT_CLOSE: case SERVICE_CONFIRMED_VT_CLOSE:
/* Security Services */ /* Security Services */
case SERVICE_CONFIRMED_REQUEST_KEY: case SERVICE_CONFIRMED_REQUEST_KEY:
Confirmed_ACK_Function[service_choice] = Confirmed_ACK_Function[service_choice].simple = pFunction;
(confirmed_ack_function)pFunction;
break; break;
default: default:
break; break;
@@ -294,7 +295,7 @@ void apdu_set_confirmed_ack_handler(
case SERVICE_CONFIRMED_VT_DATA: case SERVICE_CONFIRMED_VT_DATA:
/* Security Services */ /* Security Services */
case SERVICE_CONFIRMED_AUTHENTICATE: case SERVICE_CONFIRMED_AUTHENTICATE:
Confirmed_ACK_Function[service_choice] = pFunction; Confirmed_ACK_Function[service_choice].complex = pFunction;
break; break;
default: default:
break; break;
@@ -575,10 +576,9 @@ void apdu_handler(BACNET_ADDRESS *src,
case SERVICE_CONFIRMED_VT_CLOSE: case SERVICE_CONFIRMED_VT_CLOSE:
/* Security Services */ /* Security Services */
case SERVICE_CONFIRMED_REQUEST_KEY: case SERVICE_CONFIRMED_REQUEST_KEY:
if (Confirmed_ACK_Function[service_choice] != if (Confirmed_ACK_Function[service_choice].simple !=
NULL) { NULL) {
((confirmed_simple_ack_function) Confirmed_ACK_Function[service_choice].simple(
Confirmed_ACK_Function[service_choice])(
src, invoke_id); src, invoke_id);
} }
tsm_free_invoke_id(invoke_id); tsm_free_invoke_id(invoke_id);
@@ -622,9 +622,9 @@ void apdu_handler(BACNET_ADDRESS *src,
case SERVICE_CONFIRMED_VT_DATA: case SERVICE_CONFIRMED_VT_DATA:
/* Security Services */ /* Security Services */
case SERVICE_CONFIRMED_AUTHENTICATE: case SERVICE_CONFIRMED_AUTHENTICATE:
if (Confirmed_ACK_Function[service_choice] != if (Confirmed_ACK_Function[service_choice].complex !=
NULL) { NULL) {
(Confirmed_ACK_Function[service_choice])( Confirmed_ACK_Function[service_choice].complex(
service_request, service_request_len, src, service_request, service_request_len, src,
&service_ack_data); &service_ack_data);
} }