Exemple #1
0
 public BacnetDeviceObjectPropertyReference(BacnetObjectId objectIdentifier, BacnetPropertyIds propertyIdentifier, BacnetObjectId?deviceIndentifier = null, uint arrayIndex = ASN1.BACNET_ARRAY_ALL)
 {
     this.objectIdentifier   = objectIdentifier;
     this.propertyIdentifier = propertyIdentifier;
     this.arrayIndex         = arrayIndex;
     this.deviceIndentifier  = deviceIndentifier ?? new BacnetObjectId(BacnetObjectTypes.MAX_BACNET_OBJECT_TYPE, 0);
 }
 public DeviceReportingRecipient(BacnetBitString weekofDay, DateTime fromTime, DateTime toTime, BacnetAddress adr, uint processIdentifier, bool ackRequired, BacnetBitString evenType)
 {
     Id                     = new BacnetObjectId();
     WeekofDay              = weekofDay;
     this.toTime            = toTime;
     this.fromTime          = fromTime;
     this.adr               = adr;
     this.processIdentifier = processIdentifier;
     Ack_Required           = ackRequired;
     this.evenType          = evenType;
 }
Exemple #3
0
        public int Decode(byte[] buffer, int offset, uint count)
        {
            int len = 0;

            byte periodType;

            len += ASN1.decode_tag_number(buffer, offset + len, out periodType); // -> type

            switch (periodType)
            {
            case 0:     //calendarEntry
                var calendar = new BACnetCalendarEntry();
                len   += calendar.Decode(buffer, offset + len, count);
                Period = calendar;
                len   += 1;   // -> closingtag
                break;

            case 1:     //calendarReference
                var calRef = new BacnetObjectId();
                len   += ASN1.decode_object_id(buffer, offset + len, out calRef.type, out calRef.instance);
                Period = calRef;
                break;
            }

            ListOfTimeValues = new List <BacnetTimeValue>();

            if (ASN1.IS_OPENING_TAG(buffer[offset + len]))
            {
                len++;
                //end of daily sched
                while (!ASN1.IS_CLOSING_TAG(buffer[offset + len]))
                {
                    var timeVal = new BacnetTimeValue();
                    len += timeVal.Decode(buffer, offset + len, count);
                    ListOfTimeValues.Add(timeVal);
                }
                //closing tag
                len++;
            }


            uint evPr;

            len          += ASN1.decode_context_unsigned(buffer, offset + len, 3, out evPr);
            EventPriority = (byte)evPr;
            return(len);
        }
Exemple #4
0
        public static object Parse(string value)
        {
            var parts = value.Split(new [] { '.' }, StringSplitOptions.RemoveEmptyEntries);

            BacnetObjectId?deviceId = null;
            BacnetObjectId objectId;

            switch (parts.Length)
            {
            case 2:
                objectId = BacnetObjectId.Parse(parts[0]);
                break;

            case 3:
                deviceId = BacnetObjectId.Parse(parts[0]);
                objectId = BacnetObjectId.Parse(parts[1]);
                break;

            default:
                throw new ArgumentException("Invalid format", nameof(value));
            }

            BacnetPropertyIds propertyId;

            if (!Enum.TryParse(parts.Last(), out propertyId))
            {
                uint vendorSpecificPropertyId;

                if (!uint.TryParse(parts.Last(), out vendorSpecificPropertyId))
                {
                    throw new ArgumentException("Invalid format of property id", nameof(value));
                }

                propertyId = (BacnetPropertyIds)vendorSpecificPropertyId;
            }

            return(new BacnetDeviceObjectPropertyReference
            {
                DeviceId = deviceId,
                ObjectId = objectId,
                PropertyId = propertyId,
                ArrayIndex = -1
            });
        }
        public DeviceReportingRecipient(BacnetValue v0, BacnetValue v1, BacnetValue v2, BacnetValue v3, BacnetValue v4, BacnetValue v5, BacnetValue v6)
        {
            Id  = new BacnetObjectId();
            adr = null;

            WeekofDay = (BacnetBitString)v0.Value;
            fromTime  = (DateTime)v1.Value;
            toTime    = (DateTime)v2.Value;
            if (v3.Value is BacnetObjectId)
            {
                Id = (BacnetObjectId)v3.Value;
            }
            else
            {
                var netdescr = (BacnetValue[])v3.Value;
                var s        = (ushort)(uint)netdescr[0].Value;
                var b        = (byte[])netdescr[1].Value;
                adr = new BacnetAddress(BacnetAddressTypes.IP, s, b);
            }
            processIdentifier = (uint)v4.Value;
            Ack_Required      = (bool)v5.Value;
            evenType          = (BacnetBitString)v6.Value;
        }
 public BacnetReadAccessSpecification(BacnetObjectId objectIdentifier, IList <BacnetPropertyReference> propertyReferences)
 {
     this.objectIdentifier   = objectIdentifier;
     this.propertyReferences = propertyReferences;
 }
 public BacnetReadAccessResult(BacnetObjectId objectIdentifier, IList <BacnetPropertyValue> values)
 {
     this.objectIdentifier = objectIdentifier;
     this.values           = values;
 }