示例#1
0
 public static void EncodeUnconfirmedServiceRequest(EncodeBuffer buffer, BacnetPduTypes type, BacnetUnconfirmedServices service)
 {
     buffer.buffer[buffer.offset++] = (byte)type;
     buffer.buffer[buffer.offset++] = (byte)service;
 }
示例#2
0
        public static int DecodeUnconfirmedServiceRequest(byte[] buffer, int offset, out BacnetPduTypes type, out BacnetUnconfirmedServices service)
        {
            int org_offset = offset;

            type    = (BacnetPduTypes)buffer[offset++];
            service = (BacnetUnconfirmedServices)buffer[offset++];

            return(offset - org_offset);
        }
示例#3
0
 protected void ProcessUnconfirmedServiceRequest(BacnetAddress adr, BacnetPduTypes type, BacnetUnconfirmedServices service, byte[] buffer, int offset, int length)
 {
     try
     {
         Trace.WriteLine("UnconfirmedServiceRequest", null);
         if (OnUnconfirmedServiceRequest != null) OnUnconfirmedServiceRequest(this, adr, type, service, buffer, offset, length);
         if (service == BacnetUnconfirmedServices.SERVICE_UNCONFIRMED_I_AM && OnIam != null)
         {
             uint device_id;
             uint max_adpu;
             BacnetSegmentations segmentation;
             ushort vendor_id;
             if (Services.DecodeIamBroadcast(buffer, offset, out device_id, out max_adpu, out segmentation, out vendor_id) >= 0)
                 OnIam(this, adr, device_id, max_adpu, segmentation, vendor_id);
             else
                 Trace.TraceWarning("Couldn't decode IamBroadcast");
         }
         else if (service == BacnetUnconfirmedServices.SERVICE_UNCONFIRMED_WHO_IS && OnWhoIs != null)
         {
             int low_limit;
             int high_limit;
             if (Services.DecodeWhoIsBroadcast(buffer, offset, length, out low_limit, out high_limit) >= 0)
                 OnWhoIs(this, adr, low_limit, high_limit);
             else
                 Trace.TraceWarning("Couldn't decode WhoIsBroadcast");
         }
         else if (service == BacnetUnconfirmedServices.SERVICE_UNCONFIRMED_COV_NOTIFICATION && OnCOVNotification != null)
         {
             uint subscriberProcessIdentifier;
             BacnetObjectId initiatingDeviceIdentifier;
             BacnetObjectId monitoredObjectIdentifier;
             uint timeRemaining;
             ICollection<BacnetPropertyValue> values;
             if (Services.DecodeCOVNotifyUnconfirmed(buffer, offset, length, out subscriberProcessIdentifier, out initiatingDeviceIdentifier, out monitoredObjectIdentifier, out timeRemaining, out values) >= 0)
                 OnCOVNotification(this, adr, 0, subscriberProcessIdentifier, initiatingDeviceIdentifier, monitoredObjectIdentifier, timeRemaining, false, values, BacnetMaxSegments.MAX_SEG0);
             else
                 Trace.TraceWarning("Couldn't decode COVNotifyUnconfirmed");
         }
         else if (service == BacnetUnconfirmedServices.SERVICE_UNCONFIRMED_TIME_SYNCHRONIZATION && OnTimeSynchronize != null)
         {
             DateTime dateTime;
             if (Services.DecodeTimeSync(buffer, offset, length, out dateTime) >= 0)
                 OnTimeSynchronize(this, adr, dateTime, false);
             else
                 Trace.TraceWarning("Couldn't decode TimeSynchronize");
         }
         else if (service == BacnetUnconfirmedServices.SERVICE_UNCONFIRMED_UTC_TIME_SYNCHRONIZATION && OnTimeSynchronize != null)
         {
             DateTime dateTime;
             if (Services.DecodeTimeSync(buffer, offset, length, out dateTime) >= 0)
                 OnTimeSynchronize(this, adr, dateTime, true);
             else
                 Trace.TraceWarning("Couldn't decode TimeSynchronize");
         }
         else if (service == BacnetUnconfirmedServices.SERVICE_UNCONFIRMED_EVENT_NOTIFICATION && OnEventNotify!=null) // F. Chaxel
         {
             BacnetEventNotificationData EventData;
             if (Services.DecodeEventNotifyData(buffer, offset, length, out EventData) >= 0)
             {
                 OnEventNotify(this, adr, EventData);
             }
             else
                 Trace.TraceWarning("Couldn't decode Event/Alarm Notification");
         }
         else
         {
             Trace.TraceWarning("Unconfirmed service not handled: " + service.ToString());
         }
     }
     catch (Exception ex)
     {
         Trace.TraceError("Error in ProcessUnconfirmedServiceRequest: " + ex.Message);
     }
 }