コード例 #1
0
ファイル: Device.cs プロジェクト: ktosiek/ProtoToy
 public Device(String name, XmlNode deviceNode, Protocol protocol)
 {
     this.name = name;
     foreach (XmlNode node in deviceNode.ChildNodes)
     {
         switch (node.Name)
         {
             case "options":
                 foreach (XmlNode optNode in node.ChildNodes)
                 {
                     Option opt = Option.fromXml(optNode);
                     options.Add(opt);
                 }
                 break;
             case "responds_when":
                 responds_when = Rule.fromXml(node, protocol);
                 break;
             case "transactions":
                 foreach (XmlNode tNode in node.ChildNodes)
                 {
                     Transaction t = Transaction.fromXml(tNode, protocol);
                     transactions.Add(t);
                 }
                 break;
             default:
                 throw new NotSupportedException("Unknown node: " + node.Name);
         }
     }
 }
コード例 #2
0
ファイル: RuleIsSet.cs プロジェクト: ktosiek/ProtoToy
 public RuleIsSet(XmlNode node, Protocol protocol)
 {
     if (node.Name == "isnset")
         reverse = true;
     else
         reverse = false;
     variable = node.Attributes["name"].Value;
 }
コード例 #3
0
ファイル: Rule.cs プロジェクト: ktosiek/ProtoToy
 public static Rule fromXml(XmlNode node, Protocol protocol)
 {
     if (!ruleClasses.ContainsKey(node.Name))
         throw new ArgumentException("Unknown rule " + node.Name);
     return (Rule)ruleClasses[
              node.Name
              ].GetConstructor(new Type[] { typeof(XmlNode), typeof(Protocol) })
              .Invoke(new object[] { node, protocol });
 }
コード例 #4
0
ファイル: RuleBlock.cs プロジェクト: ktosiek/ProtoToy
 public RuleBlock(XmlNode node, Protocol protocol)
 {
     if (node.Name == "conditional")
         failSilently = true;
     foreach (XmlNode child in node.ChildNodes)
     {
         if(child.Name[0] != '#')
             rules.Add(Rule.fromXml(child, protocol));
     }
     if (node.Attributes["name"] != null)
         name = node.Attributes["name"].Value;
 }
コード例 #5
0
ファイル: RuleField.cs プロジェクト: ktosiek/ProtoToy
        public RuleField(XmlNode node, Protocol p)
        {
            if (node.Attributes["name"] != null)
                name = node.Attributes["name"].Value;
            else
                name = "";

            type = node.Attributes["type"].Value;

            if (node.Attributes["value"] != null)
            {
                value = Expression.fromString(node.Attributes["value"].Value);
            }
        }
コード例 #6
0
ファイル: RuleMatch.cs プロジェクト: ktosiek/ProtoToy
 public RuleMatch(XmlNode node, Protocol proto)
 {
     if (node.Attributes["name"] != null)
     {
         // <match name=... value=... />
         Expression var = new VariableExpression("$" + node.Attributes["name"].Value);
         Expression value = Expression.fromString(node.Attributes["value"].Value);
         myExpr = new FunctionCallExpression("==", new List<Expression>(new Expression[] { var, value }));
     }
     else
     {
         // <match_expr>...</match_expr>
         myExpr = Expression.fromString(node.InnerText);
     }
 }
コード例 #7
0
ファイル: RuleIncMsg.cs プロジェクト: ktosiek/ProtoToy
 public RuleIncMsg(XmlNode node, Protocol proto)
 {
     p = proto;
 }
コード例 #8
0
ファイル: ProtocolTest.cs プロジェクト: ktosiek/ProtoToy
 public void ProtocolConstructorTest()
 {
     protocol = new Protocol("..\\..\\..\\ProtoEngine\\Modbus-serial.xml");
 }
コード例 #9
0
ファイル: Device.cs プロジェクト: ktosiek/ProtoToy
 public static Device fromXml(XmlNode deviceNode, Protocol protocol)
 {
     return new Device(deviceNode.Attributes["name"].Value, deviceNode, protocol);
 }
コード例 #10
0
ファイル: DevicePrototype.cs プロジェクト: ktosiek/ProtoToy
 public static DevicePrototype fromXml(XmlNode node, Protocol protocol)
 {
     return new DevicePrototype(node, protocol);
 }
コード例 #11
0
ファイル: DevicePrototype.cs プロジェクト: ktosiek/ProtoToy
 public DevicePrototype(XmlNode node, Protocol protocol)
 {
     device = Device.fromXml(node, protocol);
 }
コード例 #12
0
ファイル: RuleSet.cs プロジェクト: ktosiek/ProtoToy
 public RuleSet(XmlNode node, Protocol proto)
 {
     name = node.Attributes["name"].Value;
     value = Expression.fromString(node.Attributes["value"].Value);
 }
コード例 #13
0
ファイル: Transaction.cs プロジェクト: ktosiek/ProtoToy
 public static Transaction fromXml(XmlNode node, Protocol protocol)
 {
     return new Transaction(node, protocol);
 }
コード例 #14
0
ファイル: Transaction.cs プロジェクト: ktosiek/ProtoToy
 public Transaction(XmlNode node, Protocol protocol)
 {
     rule = new RuleBlock(node, protocol);
 }