/*****************************************************************************************************/ static void handler_OnReadPropertyMultipleRequest(BacnetClient sender, BacnetAddress adr, byte invoke_id, IList <BacnetReadAccessSpecification> properties, BacnetMaxSegments max_segments) { lock (m_storage) { try { IList <BacnetPropertyValue> value; List <BacnetReadAccessResult> values = new List <BacnetReadAccessResult>(); foreach (BacnetReadAccessSpecification p in properties) { if (p.propertyReferences.Count == 1 && p.propertyReferences[0].propertyIdentifier == (uint)BacnetPropertyIds.PROP_ALL) { if (!m_storage.ReadPropertyAll(p.objectIdentifier, out value)) { sender.ErrorResponse(adr, BacnetConfirmedServices.SERVICE_CONFIRMED_READ_PROP_MULTIPLE, invoke_id, BacnetErrorClasses.ERROR_CLASS_OBJECT, BacnetErrorCodes.ERROR_CODE_UNKNOWN_OBJECT); return; } } else { m_storage.ReadPropertyMultiple(p.objectIdentifier, p.propertyReferences, out value); } values.Add(new BacnetReadAccessResult(p.objectIdentifier, value)); } sender.ReadPropertyMultipleResponse(adr, invoke_id, sender.GetSegmentBuffer(max_segments), values); } catch (Exception) { sender.ErrorResponse(adr, BacnetConfirmedServices.SERVICE_CONFIRMED_READ_PROP_MULTIPLE, invoke_id, BacnetErrorClasses.ERROR_CLASS_DEVICE, BacnetErrorCodes.ERROR_CODE_OTHER); } } }