Corrected bug #1359436 which had the incorrect len for APDU service parameters. Also corrected the service type for segmented complex ACK responses.
This commit is contained in:
+3
-5
@@ -172,7 +172,7 @@ uint16_t apdu_decode_confirmed_service_request(
|
|||||||
service_data->proposed_window_number = apdu[len++];
|
service_data->proposed_window_number = apdu[len++];
|
||||||
}
|
}
|
||||||
*service_choice = apdu[len++];
|
*service_choice = apdu[len++];
|
||||||
*service_request = &apdu[len++];
|
*service_request = &apdu[len];
|
||||||
*service_request_len = apdu_len - len;
|
*service_request_len = apdu_len - len;
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
@@ -280,7 +280,7 @@ void apdu_handler(
|
|||||||
case PDU_TYPE_COMPLEX_ACK:
|
case PDU_TYPE_COMPLEX_ACK:
|
||||||
service_ack_data.segmented_message = (apdu[0] & BIT3) ? true : false;
|
service_ack_data.segmented_message = (apdu[0] & BIT3) ? true : false;
|
||||||
service_ack_data.more_follows = (apdu[0] & BIT2) ? true : false;
|
service_ack_data.more_follows = (apdu[0] & BIT2) ? true : false;
|
||||||
service_ack_data.invoke_id = apdu[1];
|
invoke_id = service_ack_data.invoke_id = apdu[1];
|
||||||
len = 2;
|
len = 2;
|
||||||
if (service_ack_data.segmented_message)
|
if (service_ack_data.segmented_message)
|
||||||
{
|
{
|
||||||
@@ -288,10 +288,8 @@ void apdu_handler(
|
|||||||
service_ack_data.proposed_window_number = apdu[len++];
|
service_ack_data.proposed_window_number = apdu[len++];
|
||||||
}
|
}
|
||||||
service_choice = apdu[len++];
|
service_choice = apdu[len++];
|
||||||
service_request = &apdu[len++];
|
service_request = &apdu[len];
|
||||||
service_request_len = apdu_len - len;
|
service_request_len = apdu_len - len;
|
||||||
invoke_id = apdu[1];
|
|
||||||
service_choice = apdu[2];
|
|
||||||
switch (service_choice)
|
switch (service_choice)
|
||||||
{
|
{
|
||||||
case SERVICE_CONFIRMED_GET_ALARM_SUMMARY:
|
case SERVICE_CONFIRMED_GET_ALARM_SUMMARY:
|
||||||
|
|||||||
Reference in New Issue
Block a user