void UpdateAccessRights(GXDLMSObject obj, Object[] buff) { if (buff.Length != 0) { foreach (Object[] attributeAccess in (Object[])buff[0]) { int id = Convert.ToInt32(attributeAccess[0]); int mode = Convert.ToInt32(attributeAccess[1]); obj.SetAccess(id, (AccessMode)mode); } foreach (Object[] methodAccess in (Object[])buff[1]) { int id = Convert.ToInt32(methodAccess[0]); int tmp; //If version is 0. if (methodAccess[1] is Boolean) { tmp = ((Boolean)methodAccess[1]) ? 1 : 0; } else//If version is 1. { tmp = Convert.ToInt32(methodAccess[1]); } obj.SetMethodAccess(id, (MethodAccessMode)tmp); } } }
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); } } } }
/// <summary> /// Reserved for internal use. /// </summary> /// <param name="objectType"></param> /// <param name="version"></param> /// <param name="baseName"></param> /// <param name="logicalName"></param> /// <param name="accessRights"></param> /// <param name="attributeIndex"></param> /// <param name="dataIndex"></param> internal static void UpdateObjectData(GXDLMSObject obj, ObjectType objectType, object version, object baseName, object logicalName, object accessRights) { obj.ObjectType = objectType; // Check access rights... if (accessRights != null && accessRights.GetType().IsArray) { //access_rights: access_right object[] access = (object[])accessRights; foreach (object[] attributeAccess in (object[])access[0]) { int id = Convert.ToInt32(attributeAccess[0]); AccessMode mode = (AccessMode)Convert.ToInt32(attributeAccess[1]); //With some meters id is negative. if (id > 0) { obj.SetAccess(id, mode); } } if (((object[])access[1]).Length != 0) { if (((object[])access[1])[0] is object[]) { foreach (object[] methodAccess in (object[])access[1]) { int id = Convert.ToInt32(methodAccess[0]); int tmp; //If version is 0. if (methodAccess[1] is Boolean) { tmp = ((Boolean)methodAccess[1]) ? 1 : 0; } else//If version is 1. { tmp = Convert.ToInt32(methodAccess[1]); } obj.SetMethodAccess(id, (MethodAccessMode)tmp); } } else //All versions from Actaris SL 7000 do not return collection as standard says. { object[] arr = (object[])access[1]; int id = Convert.ToInt32(arr[0]) + 1; int tmp; //If version is 0. if (arr[1] is Boolean) { tmp = ((Boolean)arr[1]) ? 1 : 0; } else//If version is 1. { tmp = Convert.ToInt32(arr[1]); } obj.SetMethodAccess(id, (MethodAccessMode)tmp); } } } if (baseName != null) { obj.ShortName = Convert.ToUInt16(baseName); } if (version != null) { obj.Version = Convert.ToInt32(version); } if (logicalName is byte[]) { obj.LogicalName = GXDLMSObject.toLogicalName((byte[])logicalName); } else { obj.LogicalName = logicalName.ToString(); } }
/// <summary> /// Reserved for internal use. /// </summary> /// <param name="objectType"></param> /// <param name="version"></param> /// <param name="baseName"></param> /// <param name="logicalName"></param> /// <param name="accessRights"></param> /// <param name="attributeIndex"></param> /// <param name="dataIndex"></param> internal static void UpdateObjectData(GXDLMSObject obj, ObjectType objectType, object version, object baseName, object logicalName, object accessRights, int attributeIndex, int dataIndex) { obj.ObjectType = objectType; // Check access rights... if (accessRights != null && accessRights.GetType().IsArray) { //access_rights: access_right object[] access = (object[])accessRights; foreach (object[] attributeAccess in (object[])access[0]) { int id = Convert.ToInt32(attributeAccess[0]); AccessMode mode = (AccessMode)Convert.ToInt32(attributeAccess[1]); //With some meters id is negative. if (id > 0) { obj.SetAccess(id, mode); } } foreach (object[] methodAccess in (object[])access[1]) { int id = Convert.ToInt32(methodAccess[0]); int tmp; //If version is 0. if (methodAccess[1] is Boolean) { tmp = ((Boolean)methodAccess[1]) ? 1 : 0; } else//If version is 1. { tmp = Convert.ToInt32(methodAccess[1]); } obj.SetMethodAccess(id, (MethodAccessMode)tmp); } } ((IGXDLMSColumnObject)obj).SelectedAttributeIndex = attributeIndex; ((IGXDLMSColumnObject)obj).SelectedDataIndex = dataIndex; if (baseName != null) { obj.ShortName = Convert.ToUInt16(baseName); } if (version != null) { obj.Version = Convert.ToInt32(version); } if (logicalName is byte[]) { obj.LogicalName = GXDLMSObject.toLogicalName((byte[])logicalName); } else { obj.LogicalName = logicalName.ToString(); } }
void UpdateAccessRights(GXDLMSObject obj, Object[] buff) { foreach (Object[] attributeAccess in (Object[])buff[0]) { int id = Convert.ToInt32(attributeAccess[0]); int mode = Convert.ToInt32(attributeAccess[1]); obj.SetAccess(id, (AccessMode)mode); } foreach (Object[] methodAccess in (Object[])buff[1]) { int id = Convert.ToInt32(methodAccess[0]); int tmp; //If version is 0. if (methodAccess[1] is Boolean) { tmp = ((Boolean)methodAccess[1]) ? 1 : 0; } else//If version is 1. { tmp = Convert.ToInt32(methodAccess[1]); } obj.SetMethodAccess(id, (MethodAccessMode)tmp); } }