コード例 #1
0
ファイル: PNArc.cs プロジェクト: vu111293/pat-design
        public override void LoadFromXML(XmlElement xmlElement, LTSCanvas canvas)
        {
            if (canvas is PNCanvas)
            {
                PNCanvas myCanvas      = canvas as PNCanvas;
                string   startingState = xmlElement.GetAttribute("From");
                this.From = myCanvas.FindState(startingState);
                string endState = xmlElement.GetAttribute("To");
                this.To = myCanvas.FindState(endState);

                if (From is PNTransition)
                {
                    (From as PNTransition).OutputPlaces.Add(To as PNPlace);
                }
                else
                {
                    (To as PNTransition).InputPlaces.Add(From as PNPlace);
                }

                this.Weight = int.Parse(xmlElement.GetAttribute("Weight"));

                for (int i = 0; i < xmlElement.ChildNodes.Count - 1; i++)
                {
                    NailItem nail = new NailItem(this);
                    nail.LoadFromXml(xmlElement.ChildNodes[i] as XmlElement);
                    this.Nails.Add(nail);
                }

                this.Label.LoadFromXml(xmlElement.ChildNodes[xmlElement.ChildNodes.Count - 1] as XmlElement);
            }
        }
コード例 #2
0
 public SNModel()
 {
     Network      = new LTSCanvas();
     this.Sensors = new Dictionary <string, NodeData>();
     LinkList     = new List <string>();
     Assertion    = "";
 }
コード例 #3
0
 public SNModel(LTSCanvas declare, string assertion, Dictionary <string, NodeData> sensors, string system)
 {
     this.Network    = declare;
     this.Assertion  = assertion;
     this.Sensors    = sensors;
     this.SystemName = system;
 }
コード例 #4
0
        public override void LoadFromXML(XmlElement xmlElement, LTSCanvas canvas)
        {
            base.LoadFromXML(xmlElement, canvas);

            _channelType = ChannelType.Unicast;
            try
            {
                _channelType = (ChannelType)int.Parse(xmlElement.GetAttribute(TAG_PRO_CHANNEL_TYPE));
            }
            catch { }

            _channelMode = ChannelMode.Normal;
            try
            {
                _channelMode = (ChannelMode)int.Parse(xmlElement.GetAttribute(TAG_PRO_CHANNEL_MODE));
            }
            catch { }

            _id = xmlElement.GetAttribute(TAG_PRO_CHANNEL_ID);
            if (_id != null && _id.Length == 0)
            {
                _id = null;
            }

            //Hashtable _pros = TransitionCondition;
            //WSNUtil.LoadPNTranProperties(xmlElement, ref _pros);
        }
コード例 #5
0
 public ILAProcessEditingForm(LTSCanvas canves)
 {
     InitializeComponent();
     Canves                      = canves;
     TextBox_Name.Text           = Canves.Node.Text;
     this.TextBox_Paramater.Text = Canves.Parameters;
 }
コード例 #6
0
ファイル: Route.cs プロジェクト: vu111293/pat-design
 public virtual void HandleMouseHoverOut(LTSCanvas canvas)
 {
     if (this.CurrentState == ItemState.Hover)
     {
         this.CurrentState = ItemState.Free;
     }
 }
コード例 #7
0
ファイル: Route.cs プロジェクト: vu111293/pat-design
 public void HandleMouseHoverIn(LTSCanvas canvas)
 {
     if (this.CurrentState != ItemState.Selected)
     {
         this.CurrentState = ItemState.Hover;
     }
 }
コード例 #8
0
        public override void LoadFromXML(XmlElement xmlElement, LTSCanvas canvas)
        {
            base.LoadFromXML(xmlElement, canvas);
            try
            {
                Kind        = (ChannelKind)Enum.Parse(typeof(ChannelKind), xmlElement.GetAttribute(XmlTag.ATTR_CHANNEL_KIND), true);
                Type        = (ChannelType)int.Parse(xmlElement.GetAttribute(XmlTag.ATTR_LINK_TYPE));
                SendingRate = int.Parse(xmlElement.GetAttribute(XmlTag.ATTR_MAX_SENDING_RATE));

                string cgnLevel = xmlElement.GetAttribute(XmlTag.ATTR_CONGESTION_LEVEL);
                CongestionLevel = (CGNLevel)Enum.Parse(typeof(CGNLevel), cgnLevel);

                // Add probability of choosing path leading to congestion
                ProbabilityPathCongestion = double.Parse(xmlElement.GetAttribute(XmlTag.ATTR_PROB_PATH_CONGESTION));

                ID = xmlElement.GetAttribute(XmlTag.ATTR_ID);

                if (ID != null && ID.Length == 0)
                {
                    ID = null;
                }
            }
            catch (Exception ex)
            {
                DevLog.d(TAG, ex.ToString());
            }
        }
コード例 #9
0
        public static LTSModel LoadLTSFromXML(string text)
        {
            LTSModel lts = new LTSModel();

            XmlDataDocument doc = new XmlDataDocument();

            doc.LoadXml(text);

            XmlNodeList sitesNodes = doc.GetElementsByTagName(Parsing.DECLARATION_NODE_NAME);

            foreach (XmlElement component in sitesNodes)
            {
                lts.Declaration = component.InnerText;
            }

            sitesNodes = doc.GetElementsByTagName(Parsing.PROCESSES_NODE_NAME);
            if (sitesNodes.Count > 0)
            {
                foreach (XmlElement component in sitesNodes[0].ChildNodes)
                {
                    LTSCanvas canvas = new LTSCanvas();
                    canvas.LoadFromXml(component);

                    lts.Processes.Add(canvas);
                }
            }

            return(lts);
        }
コード例 #10
0
ファイル: PNLabel.cs プロジェクト: MinhHuong/WSN-PN
 public override void HandleMouseHoverOut(LTSCanvas canvas)
 {
     try
     {
         PNArc route = this.FindSelectedRouteBasedOnTransition(canvas);
         route.HandleMouseHoverOut(canvas);
     }
     catch { }
 }
コード例 #11
0
        public WSNConfigForm(IConfigurationForm configListener, LTSCanvas canvas, WSNExtendInfo extendInfo)
        {
            this.mCanvas        = canvas;
            this.configListener = configListener;
            InitializeComponent();

            // init value
            InitDefaultValue(extendInfo);
            LoadSensorListInfo();
            LoadChannelListInfo();
        }
コード例 #12
0
 public StateMachineForm(string sensorName, LTSCanvas canvas)
 {
     SensorName = sensorName;
     Canvas     = canvas;
     //Canvas.Visible = true;
     //Canvas.Size = this.Size;
     //Canvas.AutoArrange();
     //this.Visible = true;
     this.Controls.Add(Canvas);
     InitializeComponent();
     this.Text = "State Machine of " + SensorName;
 }
コード例 #13
0
ファイル: Route.cs プロジェクト: vu111293/pat-design
        public virtual void LoadFromXML(XmlElement xmlElement, LTSCanvas canvas)
        {
            //string startingState = xmlElement.ChildNodes[0].InnerText;
            //this.from = canvas.FindState(startingState);
            //string endState = xmlElement.ChildNodes[1].InnerText;
            //this.to = canvas.FindState(endState);

            //this.Transition.Select = xmlElement.ChildNodes[2].InnerText;
            //this.Transition.Event = xmlElement.ChildNodes[3].InnerText;
            //this.Transition.ClockGuard = xmlElement.ChildNodes[4].InnerText;
            //this.Transition.Guard = xmlElement.ChildNodes[5].InnerText;
            //this.Transition.Program = xmlElement.ChildNodes[6].InnerText;
            //this.Transition.ClockReset = xmlElement.ChildNodes[7].InnerText;
            //this.Transition.Width = this.Transition.GetWidthOfLabel();

            //for (int i = 8; i < xmlElement.ChildNodes.Count - 1; i++)
            //{
            //    NailItem nail = new NailItem(this);
            //    nail.LoadFromXml(xmlElement.ChildNodes[i] as XmlElement);
            //    this.nails.Add(nail);
            //}

            //this.transition.LoadFromXml(xmlElement.ChildNodes[xmlElement.ChildNodes.Count - 1] as XmlElement);

            string startingState = xmlElement.SelectSingleNode("./" + FROM_NODE_NAME).InnerText;

            this.from = canvas.FindState(startingState);
            string endState = xmlElement.SelectSingleNode("./" + TO_NODE_NAME).InnerText;

            this.to = canvas.FindState(endState);

            this.Transition.Select     = xmlElement.SelectSingleNode("./" + SELECT_NODE_NAME).InnerText;
            this.Transition.Event      = xmlElement.SelectSingleNode("./" + EVENT_NODE_NAME).InnerText;
            this.Transition.ClockGuard = xmlElement.SelectSingleNode("./" + CLOCK_GUARD_NODE_NAME).InnerText;
            this.Transition.Guard      = xmlElement.SelectSingleNode("./" + GUARD_NODE_NAME).InnerText;
            this.Transition.Program    = xmlElement.SelectSingleNode("./" + PROGRAM_NODE_NAME).InnerText;
            this.Transition.ClockReset = xmlElement.SelectSingleNode("./" + CLOCK_RESET_NODE_NAME).InnerText;
            this.Transition.Width      = this.Transition.GetWidthOfLabel();

            XmlNodeList nails = xmlElement.SelectNodes("./" + NAIL_NODE_NAME);

            if (nails != null)
            {
                foreach (XmlElement xmlNail in nails)
                {
                    NailItem nail = new NailItem(this);
                    nail.LoadFromXml(xmlNail);
                    this.nails.Add(nail);
                }
            }

            this.transition.LoadFromXml((XmlElement)xmlElement.SelectSingleNode("./" + LABEL_NODE_NAME));
        }
コード例 #14
0
ファイル: Route.cs プロジェクト: MinhHuong/WSN-PN
        public virtual void RemovedFromCanvas(LTSCanvas canvas)
        {
            //Remove nail
            foreach (NailItem nailItem in this.Nails)
                canvas.RemoveSingleCanvasItem(nailItem);

            this.Nails.Clear();

            //Remove transition
            canvas.RemoveSingleCanvasItem(this.transition);
            canvas.RemoveSingleRoute(this);
        }
コード例 #15
0
ファイル: PNLabel.cs プロジェクト: MinhHuong/WSN-PN
        /// <summary>
        /// Throw exception when route not found
        /// </summary>
        public PNArc FindSelectedRouteBasedOnTransition(LTSCanvas canvas)
        {
            foreach (Route route in canvas.diagramRouter.routes)
            {
                if (route is PNArc && (route as PNArc).Label.Equals(this))
                {
                    return(route as PNArc);
                }
            }

            throw new Exception("Route not found");
        }
コード例 #16
0
ファイル: PNArc.cs プロジェクト: vu111293/pat-design
        public override void RemovedFromCanvas(LTSCanvas canvas)
        {
            //Remove nail
            foreach (NailItem nailItem in this.Nails)
            {
                canvas.RemoveSingleCanvasItem(nailItem);
            }
            this.Nails.Clear();

            //Remove transition
            canvas.RemoveSingleCanvasItem(Label);
            canvas.RemoveSingleRoute(this);
        }
コード例 #17
0
ファイル: ChannelEditForm.cs プロジェクト: MinhHuong/WSN-PN
        public ChannelEditForm(Route route, LTSCanvas canvas, NetMode mode)
        {
            do
            {
                InitializeComponent();

                mChannel = (WSNChannel)route;
                mMode    = mode;
                mCanvas  = canvas;

                List <LTSCanvas.CanvasItemData> canvasItems = canvas.itemsList;
                foreach (LTSCanvas.CanvasItemData itemData in canvasItems)
                {
                    if (itemData.Item is StateItem)
                    {
                        this.cmbSource.Items.Add(itemData.Item);
                        this.cmbDest.Items.Add(itemData.Item);

                        if (itemData.Item.Equals(route.From))
                        {
                            this.cmbSource.SelectedItem = itemData.Item;
                        }

                        if (itemData.Item.Equals(route.To))
                        {
                            this.cmbDest.SelectedItem = itemData.Item;
                        }
                    }
                }

                if (!mMode.Equals(NetMode.MULTICAST))
                {
                    txtSensorsConn.Visible = false;
                    lblSensorsConn.Visible = false;
                    break;
                }

                StringBuilder subConn = new StringBuilder();
                subConn.Append(((WSNSensor)mChannel.To).ID.ToString());

                foreach (int item in mChannel.SubIdList)
                {
                    subConn.Append("," + item);
                }

                txtSensorsConn.Text = subConn.ToString();
            } while (false);
        }
コード例 #18
0
ファイル: WSNModel.cs プロジェクト: vu111293/pat-design
        /// <summary>
        /// Load model from XML string
        /// </summary>
        /// <param name="xml"></param>
        /// <param name="PNDocRes"></param>
        /// <returns></returns>
        public static WSNModel LoadModelFromXML(string xml, XmlDocument PNDocRes)
        {
            WSNModel model = new WSNModel();

            do
            {
                XmlDocument doc = new XmlDocument();
                try
                {
                    doc.LoadXml(xml);
                }
                catch { }

                XmlNodeList nodes = null;

                do
                {
                    nodes = doc.GetElementsByTagName(Data.TAG_DECLARATION);
                    if (nodes == null || nodes.Count != 1)
                    {
                        break;
                    }

                    model.Declaration = nodes.Item(0).InnerText;
                } while (false);

                do
                {
                    nodes = doc.GetElementsByTagName(Data.TAG_NETWORK);
                    if (nodes == null)
                    {
                        break;
                    }

                    LTSCanvas canvas = null;
                    foreach (XmlElement node in nodes[0].ChildNodes)
                    {
                        canvas = new WSNCanvas(PNDocRes);
                        canvas.LoadFromXml(node);
                        model.Processes.Add(canvas);
                    }
                } while (false);
            } while (false);

            return(model);
        }
コード例 #19
0
ファイル: Route.cs プロジェクト: MinhHuong/WSN-PN
        public virtual void AddToCanvas(LTSCanvas canvas)
        {
            canvas.AddSingleLink(this);
            for (int i = 1; i < canvas.temporaryNails.Count; i++)
            {
                PointF p = canvas.temporaryNails[i];
                NailItem nailItem = new NailItem(this);
                nailItem.X = p.X;
                nailItem.Y = p.Y;
                canvas.AddSingleCanvasItem(nailItem);
                this.AddNail(nailItem, this.Nails.Count);
            }
            canvas.temporaryNails.Clear();

            this.FindLabelLocation();
            canvas.AddSingleCanvasItem(this.transition);
        }
コード例 #20
0
        public string NetworkToString(LTSCanvas network)
        {
            StringBuilder sb = new StringBuilder();

            StateItem.StateCounterSpec = 0;

            sb.AppendLine("<Network Deployment>");
            sb.AppendLine("<Base Nodes>");
            foreach (LTSCanvas.CanvasItemData item in network.itemsList)
            {//append base station nodes
                if (item.Item is StateItem)
                {
                    if ((item.Item as StateItem).IsInitialState)
                    {
                        sb.AppendLine((item.Item as StateItem).GetName());
                    }
                }
            }
            sb.AppendLine("</Base Nodes>");

            sb.AppendLine("<Normal Nodes>");
            foreach (LTSCanvas.CanvasItemData item in network.itemsList)
            {//append client nodes
                if (item.Item is StateItem)
                {
                    if (!(item.Item as StateItem).IsInitialState)
                    {
                        sb.AppendLine((item.Item as StateItem).GetName());
                    }
                }
            }
            sb.AppendLine("</Normal Nodes>");

            sb.AppendLine("<Links>");
            foreach (Route route in network.diagramRouter.Routes)
            {
                sb.AppendLine("\"" + (route.From as StateItem).GetName()
                              + "\"-->\""
                              + (route.To as StateItem).GetName() + "\"");
            }

            sb.AppendLine("</Links>");
            sb.AppendLine("</Network Deployment>");
            return(sb.ToString());
        }
コード例 #21
0
ファイル: WSNTabItem.cs プロジェクト: vu111293/pat-design
        public PNModelHelper(string fileName, LTSCanvas canvas)
        {
            _fileName = fileName;

            // get the sensors list
            _sensors = new List <WSNSensorItem>();
            foreach (LTSCanvas.CanvasItemData item in canvas.itemsList)
            {
                if ((item.Item is WSNSensorItem) == false)
                {
                    continue;
                }
                WSNSensorItem add = (WSNSensorItem)item.Item;
                add.locateX = item.Item.X / 120; //kkk
                add.locateY = item.Item.Y / 120;

                if (minX == 0 || add.locateX < minX)
                {
                    minX = add.locateX;
                }
                if (minY == 0 || add.locateY < minY)
                {
                    minY = add.locateY;
                }
                _sensors.Add(add);//
            }

            // get the channels list
            _channels = new List <WSNSensorChannel>();
            foreach (Route route in canvas.diagramRouter.routes)
            {
                if ((route is WSNSensorChannel) == false)
                {
                    continue;
                }
                _channels.Add((WSNSensorChannel)route);
            }
            initXML();
        }
コード例 #22
0
        public static SNModel LoadSensorNetworkFromXML(string text)
        {
            SNModel         snModel = new SNModel();
            XmlDataDocument doc     = new XmlDataDocument();

            doc.LoadXml(text);

            XmlNodeList sitesNodes = doc.GetElementsByTagName(Parsing.SYSTEM_NODE_NAME);

            snModel.SystemName = sitesNodes[0].ChildNodes[0].InnerText;
            sitesNodes         = doc.GetElementsByTagName(Parsing.NETWORK_NODE_NAME);

            foreach (XmlElement component in sitesNodes)
            {
                LTSCanvas canvas = new LTSCanvas();
                canvas.LoadFromXml(component.ChildNodes[0] as XmlElement);
                snModel.Network = canvas;
            }

            sitesNodes = doc.GetElementsByTagName(Parsing.LINK_NODE_NAME);
            if (sitesNodes.Count > 0)
            {
                foreach (XmlElement node in sitesNodes[0].ChildNodes)
                {
                    snModel.AddLink(node.InnerText);
                }
            }

            sitesNodes = doc.GetElementsByTagName(Parsing.ASSERTION_NODE_NAME);
            if (sitesNodes[0].ChildNodes[0] != null)
            {
                snModel.Assertion = sitesNodes[0].ChildNodes[0].InnerText;
            }

            sitesNodes = doc.GetElementsByTagName(Parsing.SENSORS_NODE_NAME);
            if (sitesNodes.Count > 0)
            {
                foreach (XmlElement component in sitesNodes[0].ChildNodes)
                {
                    //ID
                    //Application
                    XmlNodeList sensorID = component.GetElementsByTagName("ID");
                    XmlNodeList tosId    = component.GetElementsByTagName("TOSID");
                    string      tosid    = "";
                    if (tosId == null || tosId.Count < 1)
                    {
                        tosid = "0";
                    }
                    else
                    {
                        tosid = tosId[0].InnerText;
                    }

                    XmlNodeList sensorApp = component.GetElementsByTagName("App");
                    string      app       = "";
                    if (sensorApp == null || sensorApp.Count < 1)
                    {
                        app = "app";
                    }
                    else
                    {
                        app = sensorApp[0].InnerText;
                    }

                    XmlNodeList sensorRange = component.GetElementsByTagName("Range");
                    string      range       = "";
                    if (sensorRange == null || sensorRange.Count < 1)
                    {
                        range = "//enter the sensor settings here...";
                    }
                    else
                    {
                        range = sensorRange[0].InnerText;
                    }

                    string predefVars = "";
                    if (component.HasAttribute("Predefined"))
                    {
                        XmlNodeList sensorPredefVars = component.GetElementsByTagName("Predefined");

                        if (sensorRange.Count < 1)
                        {
                            predefVars = "//enter predefined variables here...";
                        }
                        else
                        {
                            predefVars = sensorPredefVars[0].InnerText;
                        }
                    }
                    else
                    {
                        predefVars = "//enter predefined variables here...";
                    }

                    snModel.Sensors.Add(sensorID[0].InnerText, new NodeData(sensorID[0].InnerText, app, range, tosid, predefVars));
                }
            }

            return(snModel);
        }
コード例 #23
0
ファイル: WSNModel.cs プロジェクト: MinhHuong/WSN-PN
        /// <summary>
        /// Load model from XML string
        /// </summary>
        /// <param name="xml"></param>
        /// <param name="PNDocRes"></param>
        /// <returns></returns>
        public static WSNModel LoadModelFromXML(string xml, XmlDocument PNDocRes)
        {
            WSNModel model = new WSNModel();

            do
            {
                XmlDocument doc = new XmlDocument();
                try
                {
                    doc.LoadXml(xml);
                }
                catch { }

                XmlNodeList nodes = null;
                do
                {
                    nodes = doc.GetElementsByTagName(XmlTag.TAG_DECLARATION);
                    if (nodes == null || nodes.Count != 1)
                    {
                        break;
                    }

                    model.Declaration = nodes.Item(0).InnerText;
                } while (false);

                do
                {
                    nodes = doc.GetElementsByTagName(XmlTag.TAG_NETWORK);
                    if (nodes == null)
                    {
                        break;
                    }

                    // mlqvu -- load attributes for network tag
                    XmlNode firstNetworkNode = nodes[0];
                    if (firstNetworkNode == null)
                    {
                        break;
                    }

                    if (model.mExtendInfo == null)
                    {
                        model.mExtendInfo = new WSNExtendInfo();
                    }

                    try
                    {
                        String noID = firstNetworkNode.Attributes[XmlTag.ATTR_mID].Value;
                        model.mExtendInfo.mID = long.Parse(noID);

                        String noPacket = firstNetworkNode.Attributes[XmlTag.ATTR_NUMOFPACKETS].Value;
                        model.mExtendInfo.mNumberPacket = Int32.Parse(noPacket);

                        String noSensor = firstNetworkNode.Attributes[XmlTag.ATTR_NUMOFSENSORS].Value;
                        model.mExtendInfo.mNumberSensor = Int32.Parse(noSensor);

                        String maxSensorBufferSize = firstNetworkNode.Attributes[XmlTag.ATTR_SENSOR_MAX_BUFFER_SIZE].Value;
                        model.mExtendInfo.mSensorMaxBufferSize = Int32.Parse(maxSensorBufferSize);

                        String maxSensorQueueSize = firstNetworkNode.Attributes[XmlTag.ATTR_SENSOR_MAX_QUEUE_SIZE].Value;
                        model.mExtendInfo.mSensorMaxQueueSize = Int32.Parse(maxSensorQueueSize);

                        String maxChannelBufferSize = firstNetworkNode.Attributes[XmlTag.ATTR_CHANNEL_MAX_BUFFER_SIZE].Value;
                        model.mExtendInfo.mChannelMaxBufferSize = Int32.Parse(maxChannelBufferSize);
                    }
                    catch (Exception e) { }

                    LTSCanvas canvas = null;
                    foreach (XmlElement node in nodes[0].ChildNodes)
                    {
                        canvas = new WSNCanvas(node.GetAttribute(XmlTag.ATTR_NAME));
                        canvas.LoadFromXml(node);
                        model.Processes.Add(canvas);
                    }
                } while (false);
            } while (false);

            return(model);
        }
コード例 #24
0
ファイル: PNLabel.cs プロジェクト: MinhHuong/WSN-PN
 public override void AddToCanvas(LTSCanvas canvas)
 {
     canvas.AddSingleCanvasItem(this);
 }
コード例 #25
0
ファイル: PNLabel.cs プロジェクト: MinhHuong/WSN-PN
        public override void RemovedFromCanvas(LTSCanvas canvas)
        {
            PNArc route = this.FindSelectedRouteBasedOnTransition(canvas);

            route.RemovedFromCanvas(canvas);
        }
コード例 #26
0
ファイル: PNLabel.cs プロジェクト: MinhHuong/WSN-PN
        public override void HandleSelected(LTSCanvas canvas)
        {
            PNArc route = this.FindSelectedRouteBasedOnTransition(canvas);

            route.CurrentState = ItemState.Selected;
        }