示例#1
0
        // 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());
        }
示例#2
0
 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);
     });
 }