// By Morten Kvistgaard public virtual byte[] GetEncodedTrends(uint start, int count, out BacnetResultFlags status) { status = BacnetResultFlags.NONE; start--; //position is 1 based if (start >= m_PROP_RECORD_COUNT || (start + count) > m_PROP_RECORD_COUNT) { return(null); } if (start == 0) { status |= BacnetResultFlags.FIRST_ITEM; } if ((start + count) >= m_PROP_RECORD_COUNT) { status |= BacnetResultFlags.LAST_ITEM; } else { status |= BacnetResultFlags.MORE_ITEMS; } System.IO.BACnet.Serialize.EncodeBuffer buffer = new System.IO.BACnet.Serialize.EncodeBuffer(); int offset; if (m_PROP_RECORD_COUNT < m_PROP_BUFFER_SIZE) // the buffer is not full { offset = 0; } else { offset = LogPtr; // circular buffer } for (uint i = start; i < (start + count); i++) { System.IO.BACnet.Serialize.Services.EncodeLogRecord(buffer, TrendBuffer[(offset + i) % TrendBuffer.Length]); } return(buffer.ToArray()); }
public void ReadRangeResponse(BacnetAddress adr, byte invoke_id, Segmentation segmentation, BacnetObjectId object_id, BacnetPropertyReference property, BacnetResultFlags status, uint item_count, byte[] application_data, BacnetReadRangeRequestTypes request_type, uint first_sequence_no) { SendComplexAck(adr, invoke_id, segmentation, BacnetConfirmedServices.SERVICE_CONFIRMED_READ_RANGE, (b) => { Services.EncodeReadRangeAcknowledge(b, object_id, property.propertyIdentifier, property.propertyArrayIndex, BacnetBitString.ConvertFromInt((uint)status), item_count, application_data, request_type, first_sequence_no); }); }