public void EndRawEncodedDecodedPropertyConfirmedRequest(IAsyncResult result, BacnetConfirmedServices service_id, out byte[] InOutBuffer, out Exception ex)
{
BacnetAsyncResult res = (BacnetAsyncResult)result;
ex = res.Error;
if (ex == null && !res.WaitForDone(m_timeout))
ex = new Exception("Wait Timeout");
InOutBuffer = null;
if (ex == null)
{
if (service_id == BacnetConfirmedServices.SERVICE_CONFIRMED_READ_PROPERTY)
{
//decode
BacnetObjectId response_object_id;
BacnetPropertyReference response_property;
int offset = 0; int len = 0;
byte[] buffer = res.Result; byte tag_number; uint len_value_type;
ex = new Exception("Decode");
if (!ASN1.decode_is_context_tag(buffer, offset, 0))
return;
len = 1;
len += ASN1.decode_object_id(buffer, offset + len, out response_object_id.type, out response_object_id.instance);
/* Tag 1: Property ID */
len += ASN1.decode_tag_number_and_value(buffer, offset + len, out tag_number, out len_value_type);
if (tag_number != 1)
return;
len += ASN1.decode_enumerated(buffer, offset + len, len_value_type, out response_property.propertyIdentifier);
InOutBuffer = new byte[buffer.Length - len];
Array.Copy(buffer, len, InOutBuffer, 0, InOutBuffer.Length);
ex = null;
}
}
res.Dispose();
}