static GXDLMSSeasonProfile[] SetSeasonProfile(GXDLMSSettings settings, Object value)
 {
     if (value != null)
     {
         List <GXDLMSSeasonProfile> items = new List <GXDLMSSeasonProfile>();
         foreach (object[] item in (object[])value)
         {
             GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
             it.Name = (byte[])item[0];
             if (item[1] is byte[])
             {
                 it.Start = (GXDateTime)GXDLMSClient.ChangeType((byte[])item[1], DataType.DateTime, settings == null ? false : settings.UseUtc2NormalTime);
             }
             else if (item[1] is GXDateTime)
             {
                 it.Start = (GXDateTime)item[1];
             }
             else
             {
                 throw new Exception("Invalid date time.");
             }
             it.WeekName = (byte[])item[2];
             items.Add(it);
         }
         return(items.ToArray());
     }
     return(null);
 }
 static GXDLMSSeasonProfile[] SetSeasonProfile(GXDLMSSettings settings, Object value)
 {
     if (value != null)
     {
         List <GXDLMSSeasonProfile> items = new List <GXDLMSSeasonProfile>();
         foreach (object[] item in (object[])value)
         {
             GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
             it.Name  = GXDLMSClient.ChangeType((byte[])item[0], DataType.String, false).ToString();
             it.Start = (GXDateTime)GXDLMSClient.ChangeType((byte[])item[1], DataType.DateTime, settings.UseUtc2NormalTime);
             byte[] weekName = (byte[])item[2];
             //If week name is ignored.
             if (weekName != null && weekName.Length == 1 && weekName[0] == 0xFF)
             {
                 it.WeekName = "";
             }
             else
             {
                 it.WeekName = GXDLMSClient.ChangeType(weekName, DataType.String, settings.UseUtc2NormalTime).ToString();
             }
             items.Add(it);
         }
         return(items.ToArray());
     }
     return(null);
 }
Example #3
0
 static GXDLMSSeasonProfile[] SetSeasonProfile(GXDLMSSettings settings, Object value)
 {
     if (value != null)
     {
         List <GXDLMSSeasonProfile> items = new List <GXDLMSSeasonProfile>();
         foreach (object[] item in (object[])value)
         {
             GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
             it.Name     = (byte[])item[0];
             it.Start    = (GXDateTime)GXDLMSClient.ChangeType((byte[])item[1], DataType.DateTime, settings.UseUtc2NormalTime);
             it.WeekName = (byte[])item[2];
             items.Add(it);
         }
         return(items.ToArray());
     }
     return(null);
 }
        private static GXDLMSSeasonProfile[] LoadSeasonProfile(GXXmlReader reader, string name)
        {
            List <GXDLMSSeasonProfile> list = new List <GXDLMSSeasonProfile>();

            if (reader.IsStartElement(name, true))
            {
                while (reader.IsStartElement("Item", true))
                {
                    GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
                    it.Name     = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("Name"));
                    it.Start    = new GXDateTime(reader.ReadElementContentAsString("Start"), CultureInfo.InvariantCulture);
                    it.WeekName = GXDLMSTranslator.HexToBytes(reader.ReadElementContentAsString("WeekName"));
                    list.Add(it);
                }
                reader.ReadEndElement(name);
            }
            return(list.ToArray());
        }
Example #5
0
 void IGXDLMSBase.SetValue(int index, object value)
 {
     if (index == 1)
     {
         if (value is string)
         {
             LogicalName = value.ToString();
         }
         else
         {
             LogicalName = GXDLMSClient.ChangeType((byte[])value, DataType.OctetString).ToString();
         }
     }
     else if (index == 2)
     {
         if (value is byte[])
         {
             CalendarNameActive = GXDLMSClient.ChangeType((byte[])value, DataType.String).ToString();
         }
         else
         {
             CalendarNameActive = Convert.ToString(value);
         }
     }
     else if (index == 3)
     {
         SeasonProfileActive = null;
         if (value != null)
         {
             List <GXDLMSSeasonProfile> items = new List <GXDLMSSeasonProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
                 it.Name     = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Start    = (GXDateTime)GXDLMSClient.ChangeType((byte[])item[1], DataType.DateTime);
                 it.WeekName = GXDLMSClient.ChangeType((byte[])item[2], DataType.String).ToString();
                 items.Add(it);
             }
             SeasonProfileActive = items.ToArray();
         }
     }
     else if (index == 4)
     {
         WeekProfileTableActive = null;
         if (value != null)
         {
             List <GXDLMSWeekProfile> items = new List <GXDLMSWeekProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSWeekProfile it = new GXDLMSWeekProfile();
                 it.Name      = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Monday    = Convert.ToInt32(item[1]);
                 it.Tuesday   = Convert.ToInt32(item[2]);
                 it.Wednesday = Convert.ToInt32(item[3]);
                 it.Thursday  = Convert.ToInt32(item[4]);
                 it.Friday    = Convert.ToInt32(item[5]);
                 it.Saturday  = Convert.ToInt32(item[6]);
                 it.Sunday    = Convert.ToInt32(item[7]);
                 items.Add(it);
             }
             WeekProfileTableActive = items.ToArray();
         }
     }
     else if (index == 5)
     {
         DayProfileTableActive = null;
         if (value != null)
         {
             List <GXDLMSDayProfile> items = new List <GXDLMSDayProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSDayProfile it = new GXDLMSDayProfile();
                 it.DayId = Convert.ToInt32(item[0]);
                 List <GXDLMSDayProfileAction> actions = new List <GXDLMSDayProfileAction>();
                 foreach (object[] it2 in (object[])item[1])
                 {
                     GXDLMSDayProfileAction ac = new GXDLMSDayProfileAction();
                     ac.StartTime         = (GXDateTime)GXDLMSClient.ChangeType((byte[])it2[0], DataType.Time);
                     ac.ScriptLogicalName = GXDLMSClient.ChangeType((byte[])it2[1], DataType.String).ToString();
                     ac.ScriptSelector    = Convert.ToUInt16(it2[2]);
                     actions.Add(ac);
                 }
                 it.DaySchedules = actions.ToArray();
                 items.Add(it);
             }
             DayProfileTableActive = items.ToArray();
         }
     }
     else if (index == 6)
     {
         if (value is byte[])
         {
             CalendarNamePassive = GXDLMSClient.ChangeType((byte[])value, DataType.String).ToString();
         }
         else
         {
             CalendarNamePassive = Convert.ToString(value);
         }
     }
     else if (index == 7)
     {
         SeasonProfilePassive = null;
         if (value != null)
         {
             List <GXDLMSSeasonProfile> items = new List <GXDLMSSeasonProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
                 it.Name     = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Start    = (GXDateTime)GXDLMSClient.ChangeType((byte[])item[1], DataType.DateTime);
                 it.WeekName = GXDLMSClient.ChangeType((byte[])item[2], DataType.String).ToString();
                 items.Add(it);
             }
             SeasonProfilePassive = items.ToArray();
         }
     }
     else if (index == 8)
     {
         WeekProfileTablePassive = null;
         if (value != null)
         {
             List <GXDLMSWeekProfile> items = new List <GXDLMSWeekProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSWeekProfile it = new GXDLMSWeekProfile();
                 it.Name      = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Monday    = Convert.ToInt32(item[1]);
                 it.Tuesday   = Convert.ToInt32(item[2]);
                 it.Wednesday = Convert.ToInt32(item[3]);
                 it.Thursday  = Convert.ToInt32(item[4]);
                 it.Friday    = Convert.ToInt32(item[5]);
                 it.Saturday  = Convert.ToInt32(item[6]);
                 it.Sunday    = Convert.ToInt32(item[7]);
                 items.Add(it);
             }
             WeekProfileTablePassive = items.ToArray();
         }
     }
     else if (index == 9)
     {
         DayProfileTablePassive = null;
         if (value != null)
         {
             List <GXDLMSDayProfile> items = new List <GXDLMSDayProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSDayProfile it = new GXDLMSDayProfile();
                 it.DayId = Convert.ToInt32(item[0]);
                 List <GXDLMSDayProfileAction> actions = new List <GXDLMSDayProfileAction>();
                 foreach (object[] it2 in (object[])item[1])
                 {
                     GXDLMSDayProfileAction ac = new GXDLMSDayProfileAction();
                     ac.StartTime         = (GXDateTime)GXDLMSClient.ChangeType((byte[])it2[0], DataType.Time);
                     ac.ScriptLogicalName = GXDLMSClient.ChangeType((byte[])it2[1], DataType.String).ToString();
                     ac.ScriptSelector    = Convert.ToUInt16(it2[2]);
                     actions.Add(ac);
                 }
                 it.DaySchedules = actions.ToArray();
                 items.Add(it);
             }
             DayProfileTablePassive = items.ToArray();
         }
     }
     else if (index == 10)
     {
         if (value is byte[])
         {
             Time = (GXDateTime)GXDLMSClient.ChangeType((byte[])value, DataType.DateTime);
         }
         else
         {
             Time = new GXDateTime(Convert.ToDateTime(value));
         }
     }
     else
     {
         throw new ArgumentException("SetValue failed. Invalid attribute index.");
     }
 }
 void IGXDLMSBase.SetValue(int index, object value)
 {
     if (index == 1)
     {
         if (value is string)
         {
             LogicalName = value.ToString();
         }
         else
         {
             LogicalName = GXDLMSClient.ChangeType((byte[])value, DataType.OctetString).ToString();
         }
     }
     else if (index == 2)
     {
         if (value is byte[])
         {
             CalendarNameActive = GXDLMSClient.ChangeType((byte[])value, DataType.String).ToString();
         }
         else
         {
             CalendarNameActive = Convert.ToString(value);
         }
     }
     else if (index == 3)
     {
         SeasonProfileActive = null;
         if (value != null)
         {
             List<GXDLMSSeasonProfile> items = new List<GXDLMSSeasonProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
                 it.Name = GXDLMSClient.ChangeType((byte[]) item[0], DataType.String).ToString();
                 it.Start = (GXDateTime) GXDLMSClient.ChangeType((byte[])item[1], DataType.DateTime);
                 it.WeekName = GXDLMSClient.ChangeType((byte[]) item[2], DataType.String).ToString();
                 items.Add(it);
             }
             SeasonProfileActive = items.ToArray();
         }
     }
     else if (index == 4)
     {
         WeekProfileTableActive = null;
         if (value != null)
         {
             List<GXDLMSWeekProfile> items = new List<GXDLMSWeekProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSWeekProfile it = new GXDLMSWeekProfile();
                 it.Name = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Monday = Convert.ToInt32(item[1]);
                 it.Tuesday = Convert.ToInt32(item[2]);
                 it.Wednesday= Convert.ToInt32(item[3]);
                 it.Thursday = Convert.ToInt32(item[4]);
                 it.Friday = Convert.ToInt32(item[5]);
                 it.Saturday = Convert.ToInt32(item[6]);
                 it.Sunday = Convert.ToInt32(item[7]);
                 items.Add(it);
             }
             WeekProfileTableActive = items.ToArray();
         }
     }
     else if (index == 5)
     {
         DayProfileTableActive = null;
         if (value != null)
         {
             List<GXDLMSDayProfile> items = new List<GXDLMSDayProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSDayProfile it = new GXDLMSDayProfile();
                 it.DayId = Convert.ToInt32(item[0]);
                 List<GXDLMSDayProfileAction> actions = new List<GXDLMSDayProfileAction>();
                 foreach (object[] it2 in (object[])item[1])
                 {
                     GXDLMSDayProfileAction ac = new GXDLMSDayProfileAction();
                     ac.StartTime = (GXDateTime)GXDLMSClient.ChangeType((byte[])it2[0], DataType.Time);
                     ac.ScriptLogicalName = GXDLMSClient.ChangeType((byte[])it2[1], DataType.String).ToString();
                     ac.ScriptSelector = Convert.ToUInt16(it2[2]);
                     actions.Add(ac);
                 }
                 it.DaySchedules = actions.ToArray();
                 items.Add(it);
             }
             DayProfileTableActive = items.ToArray();
         }
     }                
     else if (index == 6)
     {
         if (value is byte[])
         {
             CalendarNamePassive = GXDLMSClient.ChangeType((byte[])value, DataType.String).ToString();
         }
         else
         {
             CalendarNamePassive = Convert.ToString(value);
         }
     }
     else if (index == 7)
     {
         SeasonProfilePassive = null;
         if (value != null)
         {
             List<GXDLMSSeasonProfile> items = new List<GXDLMSSeasonProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
                 it.Name = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Start = (GXDateTime)GXDLMSClient.ChangeType((byte[])item[1], DataType.DateTime);
                 it.WeekName = GXDLMSClient.ChangeType((byte[])item[2], DataType.String).ToString();
                 items.Add(it);
             }
             SeasonProfilePassive = items.ToArray();
         }
     }
     else if (index == 8)
     {
         WeekProfileTablePassive = null;
         if (value != null)
         {
             List<GXDLMSWeekProfile> items = new List<GXDLMSWeekProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSWeekProfile it = new GXDLMSWeekProfile();
                 it.Name = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Monday = Convert.ToInt32(item[1]);
                 it.Tuesday = Convert.ToInt32(item[2]);
                 it.Wednesday = Convert.ToInt32(item[3]);
                 it.Thursday = Convert.ToInt32(item[4]);
                 it.Friday = Convert.ToInt32(item[5]);
                 it.Saturday = Convert.ToInt32(item[6]);
                 it.Sunday = Convert.ToInt32(item[7]);
                 items.Add(it);
             }
             WeekProfileTablePassive = items.ToArray();
         }
     }
     else if (index == 9)
     {
         DayProfileTablePassive = null;
         if (value != null)
         {
             List<GXDLMSDayProfile> items = new List<GXDLMSDayProfile>();
             foreach (object[] item in (object[])value)
             {
                 GXDLMSDayProfile it = new GXDLMSDayProfile();
                 it.DayId = Convert.ToInt32(item[0]);
                 List<GXDLMSDayProfileAction> actions = new List<GXDLMSDayProfileAction>();
                 foreach (object[] it2 in (object[])item[1])
                 {
                     GXDLMSDayProfileAction ac = new GXDLMSDayProfileAction();
                     ac.StartTime = (GXDateTime)GXDLMSClient.ChangeType((byte[])it2[0], DataType.Time);
                     ac.ScriptLogicalName = GXDLMSClient.ChangeType((byte[])it2[1], DataType.String).ToString();
                     ac.ScriptSelector = Convert.ToUInt16(it2[2]);
                     actions.Add(ac);
                 }
                 it.DaySchedules = actions.ToArray();
                 items.Add(it);
             }
             DayProfileTablePassive = items.ToArray();
         }
     }
     else if (index == 10)
     {
         if (value is byte[])
         {
             Time = (GXDateTime)GXDLMSClient.ChangeType((byte[])value, DataType.DateTime);
         }
         else
         {
             Time = new GXDateTime(Convert.ToDateTime(value));
         }
     }
     else
     {
         throw new ArgumentException("SetValue failed. Invalid attribute index.");
     }
 }
 void IGXDLMSBase.SetValue(GXDLMSSettings settings, ValueEventArgs e)
 {
     if (e.Index == 1)
     {
         if (e.Value is string)
         {
             LogicalName = e.Value.ToString();
         }
         else
         {
             LogicalName = GXDLMSClient.ChangeType((byte[])e.Value, DataType.OctetString).ToString();
         }
     }
     else if (e.Index == 2)
     {
         if (e.Value is byte[])
         {
             CalendarNameActive = GXDLMSClient.ChangeType((byte[])e.Value, DataType.String).ToString();
         }
         else
         {
             CalendarNameActive = Convert.ToString(e.Value);
         }
     }
     else if (e.Index == 3)
     {
         SeasonProfileActive = null;
         if (e.Value != null)
         {
             List<GXDLMSSeasonProfile> items = new List<GXDLMSSeasonProfile>();
             foreach (object[] item in (object[])e.Value)
             {
                 GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
                 it.Name = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Start = (GXDateTime)GXDLMSClient.ChangeType((byte[])item[1], DataType.DateTime);
                 it.WeekName = GXDLMSClient.ChangeType((byte[])item[2], DataType.String).ToString();
                 items.Add(it);
             }
             SeasonProfileActive = items.ToArray();
         }
     }
     else if (e.Index == 4)
     {
         WeekProfileTableActive = null;
         if (e.Value != null)
         {
             List<GXDLMSWeekProfile> items = new List<GXDLMSWeekProfile>();
             foreach (object[] item in (object[])e.Value)
             {
                 GXDLMSWeekProfile it = new GXDLMSWeekProfile();
                 it.Name = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Monday = Convert.ToInt32(item[1]);
                 it.Tuesday = Convert.ToInt32(item[2]);
                 it.Wednesday = Convert.ToInt32(item[3]);
                 it.Thursday = Convert.ToInt32(item[4]);
                 it.Friday = Convert.ToInt32(item[5]);
                 it.Saturday = Convert.ToInt32(item[6]);
                 it.Sunday = Convert.ToInt32(item[7]);
                 items.Add(it);
             }
             WeekProfileTableActive = items.ToArray();
         }
     }
     else if (e.Index == 5)
     {
         DayProfileTableActive = null;
         if (e.Value != null)
         {
             List<GXDLMSDayProfile> items = new List<GXDLMSDayProfile>();
             foreach (object[] item in (object[])e.Value)
             {
                 GXDLMSDayProfile it = new GXDLMSDayProfile();
                 it.DayId = Convert.ToInt32(item[0]);
                 List<GXDLMSDayProfileAction> actions = new List<GXDLMSDayProfileAction>();
                 foreach (object[] it2 in (object[])item[1])
                 {
                     GXDLMSDayProfileAction ac = new GXDLMSDayProfileAction();
                     if (it2[0] is GXDateTime)
                     {
                         ac.StartTime = (GXDateTime)it2[0];
                     }
                     else
                     {
                         ac.StartTime = (GXDateTime)GXDLMSClient.ChangeType((byte[])it2[0], DataType.Time);
                     }
                     ac.ScriptLogicalName = GXDLMSClient.ChangeType((byte[])it2[1], DataType.OctetString).ToString();
                     ac.ScriptSelector = Convert.ToUInt16(it2[2]);
                     actions.Add(ac);
                 }
                 it.DaySchedules = actions.ToArray();
                 items.Add(it);
             }
             DayProfileTableActive = items.ToArray();
         }
     }
     else if (e.Index == 6)
     {
         if (e.Value is byte[])
         {
             CalendarNamePassive = GXDLMSClient.ChangeType((byte[])e.Value, DataType.String).ToString();
         }
         else
         {
             CalendarNamePassive = Convert.ToString(e.Value);
         }
     }
     else if (e.Index == 7)
     {
         SeasonProfilePassive = null;
         if (e.Value != null)
         {
             List<GXDLMSSeasonProfile> items = new List<GXDLMSSeasonProfile>();
             foreach (object[] item in (object[])e.Value)
             {
                 GXDLMSSeasonProfile it = new GXDLMSSeasonProfile();
                 it.Name = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Start = (GXDateTime)GXDLMSClient.ChangeType((byte[])item[1], DataType.DateTime);
                 byte[] weekName = (byte[])item[2];
                 //If week name is ignored.
                 if (weekName != null && weekName.Length == 1 && weekName[0] == 0xFF)
                 {
                     it.WeekName = "";
                 }
                 else
                 {
                     it.WeekName = GXDLMSClient.ChangeType((byte[])item[2], DataType.String).ToString();
                 }
                 items.Add(it);
             }
             SeasonProfilePassive = items.ToArray();
         }
     }
     else if (e.Index == 8)
     {
         WeekProfileTablePassive = null;
         if (e.Value != null)
         {
             List<GXDLMSWeekProfile> items = new List<GXDLMSWeekProfile>();
             foreach (object[] item in (object[])e.Value)
             {
                 GXDLMSWeekProfile it = new GXDLMSWeekProfile();
                 it.Name = GXDLMSClient.ChangeType((byte[])item[0], DataType.String).ToString();
                 it.Monday = Convert.ToInt32(item[1]);
                 it.Tuesday = Convert.ToInt32(item[2]);
                 it.Wednesday = Convert.ToInt32(item[3]);
                 it.Thursday = Convert.ToInt32(item[4]);
                 it.Friday = Convert.ToInt32(item[5]);
                 it.Saturday = Convert.ToInt32(item[6]);
                 it.Sunday = Convert.ToInt32(item[7]);
                 items.Add(it);
             }
             WeekProfileTablePassive = items.ToArray();
         }
     }
     else if (e.Index == 9)
     {
         DayProfileTablePassive = null;
         if (e.Value != null)
         {
             List<GXDLMSDayProfile> items = new List<GXDLMSDayProfile>();
             foreach (object[] item in (object[])e.Value)
             {
                 GXDLMSDayProfile it = new GXDLMSDayProfile();
                 it.DayId = Convert.ToInt32(item[0]);
                 List<GXDLMSDayProfileAction> actions = new List<GXDLMSDayProfileAction>();
                 foreach (object[] it2 in (object[])item[1])
                 {
                     GXDLMSDayProfileAction ac = new GXDLMSDayProfileAction();
                     if (it2[0] is GXDateTime)
                     {
                         ac.StartTime = (GXDateTime)it2[0];
                     }
                     else
                     {
                         ac.StartTime = (GXDateTime)GXDLMSClient.ChangeType((byte[])it2[0], DataType.Time);
                     }
                     ac.ScriptLogicalName = GXDLMSClient.ChangeType((byte[])it2[1], DataType.OctetString).ToString();
                     ac.ScriptSelector = Convert.ToUInt16(it2[2]);
                     actions.Add(ac);
                 }
                 it.DaySchedules = actions.ToArray();
                 items.Add(it);
             }
             DayProfileTablePassive = items.ToArray();
         }
     }
     else if (e.Index == 10)
     {
         if (e.Value is byte[])
         {
             Time = (GXDateTime)GXDLMSClient.ChangeType((byte[])e.Value, DataType.DateTime);
         }
         else
         {
             Time = new GXDateTime(Convert.ToDateTime(e.Value));
         }
     }
     else
     {
         e.Error = ErrorCode.ReadWriteDenied;
     }
 }