예제 #1
0
파일: CP.cs 프로젝트: PeterHatch/brawltools
 public VertexAttributeFormat(GXAttribute attr, GXCompType type, GXCompCnt cnt, byte frac)
 {
     _attr = attr;
     _cnt  = cnt;
     _type = type;
     _frac = frac;
 }
예제 #2
0
        public ActionResult <AddValueResponse> Post(AddValue request)
        {
            AddValueResponse ret = new AddValueResponse();
            GXUpdateArgs     arg;

            if (request.Items != null)
            {
                DateTime now = DateTime.Now;
                foreach (GXValue it in request.Items)
                {
                    if (it.Read == DateTime.MinValue)
                    {
                        it.Read = now;
                    }
                    GXAttribute value = new GXAttribute();
                    value.Id    = it.AttributeId;
                    value.Value = it.Value;
                    value.Read  = it.Read;
                    arg         = GXUpdateArgs.Update <GXAttribute>(value, q => new { q.Value, q.Read });
                    host.Connection.Update(arg);
                }
                host.Connection.Insert(GXInsertArgs.InsertRange(request.Items));
                host.SetChange(TargetType.Value, now);
            }
            return(ret);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="values"></param>
        public override void UpdateDefaultValueItems(GXAttributeCollection attributes)
        {
            GXAttribute att = new GXAttribute();

            att.Index = 3;
            att.Values.Add(new GXObisValueItem(0, "300"));
            att.Values.Add(new GXObisValueItem(1, "600"));
            att.Values.Add(new GXObisValueItem(2, "1200"));
            att.Values.Add(new GXObisValueItem(3, "2400"));
            att.Values.Add(new GXObisValueItem(4, "4800"));
            att.Values.Add(new GXObisValueItem(5, "9600"));
            att.Values.Add(new GXObisValueItem(6, "19200"));
            att.Values.Add(new GXObisValueItem(7, "38400"));
            att.Values.Add(new GXObisValueItem(8, "57600"));
            att.Values.Add(new GXObisValueItem(9, "115200"));
            attributes.Add(att);
            att       = new GXAttribute();
            att.Index = 4;
            att.Values.Add(new GXObisValueItem(0, "300"));
            att.Values.Add(new GXObisValueItem(1, "600"));
            att.Values.Add(new GXObisValueItem(2, "1200"));
            att.Values.Add(new GXObisValueItem(3, "2400"));
            att.Values.Add(new GXObisValueItem(4, "4800"));
            att.Values.Add(new GXObisValueItem(5, "9600"));
            att.Values.Add(new GXObisValueItem(6, "19200"));
            att.Values.Add(new GXObisValueItem(7, "38400"));
            att.Values.Add(new GXObisValueItem(8, "57600"));
            att.Values.Add(new GXObisValueItem(9, "115200"));
            attributes.Add(att);
        }
예제 #4
0
 /// <summary>
 /// Read Profile Generic Columns by entry.
 /// </summary>
 public object[] ReadRowsByEntry(GXDLMSObject it, int index, int count, GXDLMSObjectCollection columns)
 {
     byte[]   reply = ReadDataBlock(m_Parser.Read(m_Parser.ReadRowsByEntry(it.Name, index, count), 1, 1, ObjectType.None, 0));
     object[] rows  = (object[])m_Parser.GetValue(reply);
     if (columns != null && rows.Length != 0 && m_Parser.ObisCodes.Count != 0)
     {
         Array row = (Array)rows[0];
         if (columns.Count != row.Length)
         {
             throw new Exception("Columns count do not mach.");
         }
         for (int pos = 0; pos != columns.Count; ++pos)
         {
             if (row.GetValue(pos) is byte[])
             {
                 DataType type = DataType.None;
                 //Find Column type
                 GXObisCode code = m_Parser.ObisCodes.FindByLN(columns[pos].ObjectType, columns[pos].LogicalName, null);
                 if (code != null)
                 {
                     GXAttribute att = code.Attributes.Find(columns[pos].AttributeIndex);
                     if (att != null)
                     {
                         type = att.UIType;
                     }
                 }
                 foreach (object[] cell in rows)
                 {
                     cell[pos] = GXDLMS.ChangeType((byte[])cell[pos], type);
                 }
             }
         }
     }
     return(rows);
 }
예제 #5
0
 public FacepointAttribute(GXAttribute attr, XFDataFormat fmt)
 {
     _attr = attr;
     _type = fmt;
 }
예제 #6
0
        public ActionResult <UpdateDeviceResponse> Post(UpdateDevice request)
        {
            if (request.Device.TemplateId == 0)
            {
                return(BadRequest("Device template ID is unknown."));
            }
            bool newDevice = request.Device.Id == 0;

            if (request.Device.DeviceSystemTitle != null)
            {
                request.Device.DeviceSystemTitle = request.Device.DeviceSystemTitle.Replace(" ", "");
            }
            if (request.Device.AuthenticationKey != null)
            {
                request.Device.AuthenticationKey = request.Device.AuthenticationKey.Replace(" ", "");
            }
            if (request.Device.BlockCipherKey != null)
            {
                request.Device.BlockCipherKey = request.Device.BlockCipherKey.Replace(" ", "");
            }
            if (newDevice)
            {
                DateTime now = DateTime.Now;
                request.Device.Generation = now;
                //Add new DC.
                List <GXObject> tmp = request.Device.Objects;
                request.Device.Objects    = null;
                request.Device.Generation = now;
                host.Connection.Insert(GXInsertArgs.Insert(request.Device));

                //Add default objects.
                GXSelectArgs arg = GXSelectArgs.SelectAll <GXObjectTemplate>(q => q.DeviceTemplateId == request.Device.TemplateId && q.Removed == DateTime.MinValue);
                arg.Columns.Add <GXAttributeTemplate>();
                arg.Joins.AddLeftJoin <GXObjectTemplate, GXAttributeTemplate>(o => o.Id, a => a.ObjectTemplateId);
                arg.Where.And <GXAttributeTemplate>(q => q.Removed == DateTime.MinValue);
                List <GXObjectTemplate> l = host.Connection.Select <GXObjectTemplate>(arg);
                foreach (GXObjectTemplate it in l)
                {
                    GXObject obj = new GXObject()
                    {
                        TemplateId  = it.Id,
                        Generation  = now,
                        DeviceId    = request.Device.Id,
                        ObjectType  = it.ObjectType,
                        Name        = it.Name,
                        LogicalName = it.LogicalName,
                        ShortName   = it.ShortName,
                    };
                    host.Connection.Insert(GXInsertArgs.Insert(obj));
                    foreach (GXAttributeTemplate ait in it.Attributes)
                    {
                        GXAttribute a = new GXAttribute();
                        a.ObjectId       = obj.Id;
                        a.Index          = ait.Index;
                        a.TemplateId     = ait.Id;
                        a.AccessLevel    = ait.AccessLevel;
                        a.DataType       = ait.DataType;
                        a.UIDataType     = ait.UIDataType;
                        a.Generation     = now;
                        a.ExpirationTime = ait.ExpirationTime;
                        obj.Attributes.Add(a);
                    }
                    ;
                    host.Connection.Insert(GXInsertArgs.InsertRange(obj.Attributes));
                }
                host.SetChange(TargetType.ObjectTemplate, DateTime.Now);
            }
            else
            {
                request.Device.Updated = DateTime.Now;
                host.Connection.Update(GXUpdateArgs.Update(request.Device));
                host.SetChange(TargetType.DeviceTemplate, DateTime.Now);
            }
            return(new UpdateDeviceResponse()
            {
                DeviceId = request.Device.Id
            });
        }
예제 #7
0
        public ActionResult <AddTestDeviceResponse> Post(AddTestDevice request)
        {
            if (request.Device.TemplateId == 0)
            {
                return(BadRequest("Device template ID is unknown."));
            }
            if (request.Device.DeviceSystemTitle != null)
            {
                request.Device.DeviceSystemTitle = request.Device.DeviceSystemTitle.Replace(" ", "");
            }
            if (request.Device.AuthenticationKey != null)
            {
                request.Device.AuthenticationKey = request.Device.AuthenticationKey.Replace(" ", "");
            }
            if (request.Device.BlockCipherKey != null)
            {
                request.Device.BlockCipherKey = request.Device.BlockCipherKey.Replace(" ", "");
            }
            DateTime now = DateTime.Now;

            //Add new DC.
            request.Device.Generation = now;
            //We are accessing meters using serial number when test mode is used.
            request.Device.HDLCAddressing = ManufacturerSettings.HDLCAddressType.SerialNumber;
            request.Device.LogicalAddress = request.Index;
            for (UInt16 pos = 0; pos != request.Count; ++pos)
            {
                request.Device.Objects = null;
                request.Device.Name    = "Test_" + request.Device.LogicalAddress;
                ++request.Device.LogicalAddress;
                request.Device.Id = 0;

                host.Connection.Insert(GXInsertArgs.Insert(request.Device));
                //Add default objects.
                GXSelectArgs arg = GXSelectArgs.SelectAll <GXObjectTemplate>(q => q.DeviceTemplateId == request.Device.TemplateId);
                arg.Columns.Add <GXAttributeTemplate>();
                arg.Joins.AddLeftJoin <GXObjectTemplate, GXAttributeTemplate>(o => o.Id, a => a.ObjectTemplateId);
                List <GXObjectTemplate> l = host.Connection.Select <GXObjectTemplate>(arg);
                foreach (GXObjectTemplate it in l)
                {
                    GXObject obj = new GXObject()
                    {
                        TemplateId  = it.Id,
                        Generation  = now,
                        DeviceId    = request.Device.Id,
                        ObjectType  = it.ObjectType,
                        Name        = it.Name,
                        LogicalName = it.LogicalName,
                        ShortName   = it.ShortName,
                    };
                    host.Connection.Insert(GXInsertArgs.Insert(obj));
                    foreach (GXAttributeTemplate ait in it.Attributes)
                    {
                        GXAttribute a = new GXAttribute();
                        a.ObjectId       = obj.Id;
                        a.Index          = ait.Index;
                        a.TemplateId     = ait.Id;
                        a.AccessLevel    = ait.AccessLevel;
                        a.DataType       = ait.DataType;
                        a.UIDataType     = ait.UIDataType;
                        a.Generation     = now;
                        a.ExpirationTime = ait.ExpirationTime;
                        obj.Attributes.Add(a);
                    }
                    ;
                    host.Connection.Insert(GXInsertArgs.InsertRange(obj.Attributes));
                }
            }
            host.SetChange(TargetType.Device, DateTime.Now);
            return(new AddTestDeviceResponse());
        }
예제 #8
0
 public FacepointAttribute(GXAttribute attr, XFDataFormat fmt)
 {
     _attr = attr;
     _type = fmt;
 }
 /// <summary>
 ///  
 /// </summary>
 /// <param name="values"></param>
 public override void UpdateDefaultValueItems(GXAttributeCollection attributes)
 {
     GXAttribute att = new GXAttribute();
     att.Index = 3;
     att.Values.Add(new GXObisValueItem(0, "300"));
     att.Values.Add(new GXObisValueItem(1, "600"));
     att.Values.Add(new GXObisValueItem(2, "1200"));
     att.Values.Add(new GXObisValueItem(3, "2400"));
     att.Values.Add(new GXObisValueItem(4, "4800"));
     att.Values.Add(new GXObisValueItem(5, "9600"));
     att.Values.Add(new GXObisValueItem(6, "19200"));
     att.Values.Add(new GXObisValueItem(7, "38400"));
     att.Values.Add(new GXObisValueItem(8, "57600"));
     att.Values.Add(new GXObisValueItem(9, "115200"));
     attributes.Add(att);
     att = new GXAttribute();
     att.Index = 4;
     att.Values.Add(new GXObisValueItem(0, "300"));
     att.Values.Add(new GXObisValueItem(1, "600"));
     att.Values.Add(new GXObisValueItem(2, "1200"));
     att.Values.Add(new GXObisValueItem(3, "2400"));
     att.Values.Add(new GXObisValueItem(4, "4800"));
     att.Values.Add(new GXObisValueItem(5, "9600"));
     att.Values.Add(new GXObisValueItem(6, "19200"));
     att.Values.Add(new GXObisValueItem(7, "38400"));
     att.Values.Add(new GXObisValueItem(8, "57600"));
     att.Values.Add(new GXObisValueItem(9, "115200"));
     attributes.Add(att);
 }
예제 #10
0
        public byte _frac; //scale/divisor

        #region Constructors

        public VertexAttributeFormat(GXAttribute attr, GXCompType type, GXCompCnt cnt, byte frac)
        {
            _attr = attr;
            _cnt = cnt;
            _type = type;
            _frac = frac;
        }