Exemplo n.º 1
0
 object IGXDLMSBase.GetValue(GXDLMSSettings settings, ValueEventArgs e)
 {
     if (ObjectList == null)
     {
         ObjectList = new GXDLMSObjectCollection();
     }
     if (e.Index == 1)
     {
         return(this.LogicalName);
     }
     else if (e.Index == 2)
     {
         return(GetObjects(settings, e).Array());
     }
     else if (e.Index == 3)
     {
         bool lnExists = ObjectList.FindBySN(this.ShortName) != null;
         //Add count
         int cnt = ObjectList.Count;
         if (!lnExists)
         {
             ++cnt;
         }
         GXByteBuffer data = new GXByteBuffer();
         data.SetUInt8((byte)DataType.Array);
         GXCommon.SetObjectCount(cnt, data);
         foreach (GXDLMSObject it in ObjectList)
         {
             GetAccessRights(settings, it, data);
         }
         if (!lnExists)
         {
             GetAccessRights(settings, this, data);
         }
         return(data.Array());
     }
     else if (e.Index == 4)
     {
         GXByteBuffer data = new GXByteBuffer();
         GXCommon.SetData(settings, data, DataType.OctetString, SecuritySetupReference);
         return(data.Array());
     }
     e.Error = ErrorCode.ReadWriteDenied;
     return(null);
 }
Exemplo n.º 2
0
 void UpdateAccessRights(Object[] buff)
 {
     foreach (Object[] access in buff)
     {
         ushort       sn  = Convert.ToUInt16(access[0]);
         GXDLMSObject obj = ObjectList.FindBySN(sn);
         if (obj != null)
         {
             foreach (Object[] attributeAccess in (Object[])access[1])
             {
                 int id   = Convert.ToInt32(attributeAccess[0]);
                 int mode = Convert.ToInt32(attributeAccess[1]);
                 obj.SetAccess(id, (AccessMode)mode);
             }
             foreach (Object[] methodAccess in (Object[])access[2])
             {
                 int id   = Convert.ToInt32(methodAccess[0]);
                 int mode = Convert.ToInt32(methodAccess[1]);
                 obj.SetMethodAccess(id, (MethodAccessMode)mode);
             }
         }
     }
 }
 void UpdateAccessRights(List <object> buff)
 {
     foreach (List <object> access in buff)
     {
         ushort       sn  = (ushort)((short)access[0] & 0xFFFF);
         GXDLMSObject obj = ObjectList.FindBySN(sn);
         if (obj != null)
         {
             foreach (List <object> attributeAccess in (List <object>)access[1])
             {
                 int id   = Convert.ToInt32(attributeAccess[0]);
                 int mode = Convert.ToInt32(attributeAccess[1]);
                 obj.SetAccess(id, (AccessMode)mode);
             }
             foreach (List <object> methodAccess in (List <object>)access[2])
             {
                 int id   = Convert.ToInt32(methodAccess[0]);
                 int mode = Convert.ToInt32(methodAccess[1]);
                 obj.SetMethodAccess(id, (MethodAccessMode)mode);
             }
         }
     }
 }
Exemplo n.º 4
0
 object IGXDLMSBase.GetValue(int index, int selector, object parameters)
 {
     if (ObjectList == null)
     {
         ObjectList = new GXDLMSObjectCollection();
     }
     if (index == 1)
     {
         return(this.LogicalName);
     }
     else if (index == 2)
     {
         int         cnt  = ObjectList.Count;
         List <byte> data = new List <byte>();
         data.Add((byte)DataType.Array);
         //Add count
         GXCommon.SetObjectCount(cnt, data);
         if (cnt != 0)
         {
             foreach (GXDLMSObject it in ObjectList)
             {
                 data.Add((byte)DataType.Structure);
                 data.Add((byte)4);                                            //Count
                 GXCommon.SetData(data, DataType.Int16, it.ShortName);         //base address.
                 GXCommon.SetData(data, DataType.UInt16, it.ObjectType);       //ClassID
                 GXCommon.SetData(data, DataType.UInt8, 0);                    //Version
                 GXCommon.SetData(data, DataType.OctetString, it.LogicalName); //LN
             }
             if (ObjectList.FindBySN(this.ShortName) == null)
             {
                 data.Add((byte)DataType.Structure);
                 data.Add((byte)4);                                              //Count
                 GXCommon.SetData(data, DataType.Int16, this.ShortName);         //base address.
                 GXCommon.SetData(data, DataType.UInt16, this.ObjectType);       //ClassID
                 GXCommon.SetData(data, DataType.UInt8, 0);                      //Version
                 GXCommon.SetData(data, DataType.OctetString, this.LogicalName); //LN
             }
         }
         return(data.ToArray());
     }
     else if (index == 3)
     {
         bool lnExists = ObjectList.FindBySN(this.ShortName) != null;
         //Add count
         int cnt = ObjectList.Count;
         if (!lnExists)
         {
             ++cnt;
         }
         List <byte> data = new List <byte>();
         data.Add((byte)DataType.Array);
         GXCommon.SetObjectCount(cnt, data);
         foreach (GXDLMSObject it in ObjectList)
         {
             GetAccessRights(it, data);
         }
         if (!lnExists)
         {
             GetAccessRights(this, data);
         }
         return(data.ToArray());
     }
     else if (index == 4)
     {
         List <byte> data = new List <byte>();
         GXCommon.SetData(data, DataType.OctetString, SecuritySetupReference);
         return(data.ToArray());
     }
     throw new ArgumentException("GetValue failed. Invalid attribute index.");
 }