Ejemplo n.º 1
0
        public void Encode(EncodeBuffer buffer)
        {
            byte periodType;

            if (Period is BACnetCalendarEntry)
            {
                periodType = 0;
            }
            else if (Period is BacnetObjectId)
            {
                periodType = 1;
            }
            else
            {
                throw new Exception("BacnetSpecialEvent - unsupported period type -> has to be BacnetCalendarEntry or BacnetObjectId");
            }

            ASN1.encode_opening_tag(buffer, periodType);

            if (Period is BACnetCalendarEntry)
            {
                ((BACnetCalendarEntry)Period).Encode(buffer);
                ASN1.encode_closing_tag(buffer, 0);
            }
            else if (Period is BacnetObjectId)
            {
                if (((BacnetObjectId)Period).Type != BacnetObjectTypes.OBJECT_CALENDAR)
                {
                    throw new Exception("Period Object is not an calendar");
                }
                ASN1.encode_bacnet_object_id(buffer, ((BacnetObjectId)Period).Type, ((BacnetObjectId)Period).Instance);
            }


            ASN1.encode_opening_tag(buffer, 2);
            if (ListOfTimeValues != null)
            {
                foreach (var tv in ListOfTimeValues)
                {
                    tv.Encode(buffer);
                }
            }
            ASN1.encode_closing_tag(buffer, 2);

            ASN1.encode_context_unsigned(buffer, 3, EventPriority);
        }