Subversion Repositories HomeAutomation

Rev

Rev 73 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 73 Rev 641
1
import mx.utils.Delegate;
1
import mx.utils.Delegate;
2
 
2
 
3
class CommunicationObj {
3
class CommunicationObj {
4
   
4
   
5
    var isConnected:Boolean;
5
    var isConnected:Boolean;
6
    var mySocket:XMLSocket;
6
    var mySocket:XMLSocket;
7
    var hostname:String;
7
    var hostname:String;
8
    var dataReceivers:Array;
8
    var dataReceivers:Array;
9
    var userName:String;
9
    var userName:String;
10
    var passWd:String
10
    var passWd:String
11
   
11
   
12
    function CommunicationObj (host:String) {
12
    function CommunicationObj (host:String) {
13
        isConnected = false;
13
        isConnected = false;
14
       
14
       
15
        hostname = host;
15
        hostname = host;
16
       
16
       
17
        mySocket = new XMLSocket();
17
        mySocket = new XMLSocket();
18
        mySocket.onData = Delegate.create(this, onData);
18
        mySocket.onData = Delegate.create(this, onData);
19
        mySocket.onClose = Delegate.create(this, onClose);
19
        mySocket.onClose = Delegate.create(this, onClose);
20
        mySocket.onConnect = Delegate.create(this, onConnect);
20
        mySocket.onConnect = Delegate.create(this, onConnect);
21
        var intervalID:Number = setInterval(this, "timerConnect", 15000);
21
        var intervalID:Number = setInterval(this, "timerConnect", 15000);
22
 
22
 
23
        timerConnect();
23
        timerConnect();
24
    }       //end constructor
24
    }       //end constructor
25
   
25
   
26
    function setDataReceiver(objs:Array) {
26
    function setDataReceiver(objs:Array) {
27
        dataReceivers = objs;
27
        dataReceivers = objs;
28
       
28
       
29
        for (var i:Number = 0; i < dataReceivers.length; i++) {
29
        for (var i:Number = 0; i < dataReceivers.length; i++) {
30
            dataReceivers[i].setCommunicator(this);
30
            dataReceivers[i].setCommunicator(this);
31
        }
31
        }
32
       
32
       
33
    }
33
    }
34
   
34
   
35
    public function sendToServer(data:XML) {
35
    public function sendToServer(data:XML) {
36
        if (isConnected) {
36
        if (isConnected) {
37
            mySocket.send(data + "\n");
37
            mySocket.send(data + "\n");
38
        }
38
        }
39
        //trace(data);
39
        //trace(data);
40
    }
40
    }
41
   
41
   
42
   
42
   
43
    private function onData(msg) {
43
    private function onData(msg) {
44
        //trace("Got data: " + msg.charCodeAt(0) + " " + msg.charCodeAt(1) + " " + msg.charCodeAt(2));
44
        //trace("Got data: " + msg.charCodeAt(0) + " " + msg.charCodeAt(1) + " " + msg.charCodeAt(2));
45
        //ta bort alla linefeed \n och carrage return \r
45
        //ta bort alla linefeed \n och carrage return \r
46
        msg = replace(msg, "\n", "");
46
        msg = replace(msg, "\n", "");
47
        msg = replace(msg, "\r", "");
47
        msg = replace(msg, "\r", "");
48
        var msgXML:XML = new XML(msg);
48
        var msgXML:XML = new XML(msg);
49
       
49
       
50
        //trace(msg);
50
        //trace(msg);
51
       
51
       
52
        //trace("nodename: " + msgXML.firstChild.nodeName);
52
        //trace("nodename: " + msgXML.firstChild.nodeName);
53
        //trace("id: " + msgXML.firstChild.attributes.id);
53
        //trace("id: " + msgXML.firstChild.attributes.id);
54
       
54
       
55
       
55
       
56
        //trace("blipp");
56
        //trace("blipp");
57
        if (msgXML.firstChild.nodeName == "packet") {
57
        if (msgXML.firstChild.nodeName == "packet") {
58
 
58
 
59
            var menuName:String = msgXML.firstChild.attributes.menuid;
59
            var menuName:String = msgXML.firstChild.attributes.menuid;
60
            var dataList:XMLNode = msgXML.firstChild.firstChild;
60
            var dataList:XMLNode = msgXML.firstChild.firstChild;
61
           
61
           
62
            //msgXML.firstChild.firstChild, egentligen skulle den rota igenom
62
            //msgXML.firstChild.firstChild, egentligen skulle den rota igenom
63
            //alla childs, det kanske kan komma flera data i samma paket
63
            //alla childs, det kanske kan komma flera data i samma paket
64
 
64
 
65
            for (var i:Number = 0; i < dataReceivers.length; i++) {
65
            for (var i:Number = 0; i < dataReceivers.length; i++) {
66
                if (menuName == dataReceivers[i].getName()) {
66
                if (menuName == dataReceivers[i].getName()) {
67
                    dataReceivers[i].setNewData(dataList);
67
                    dataReceivers[i].setNewData(dataList);
68
                    //mainMenu.setNewData(dataList, middleItem);
68
                    //mainMenu.setNewData(dataList, middleItem);
69
                }              
69
                }              
70
            }
70
            }
71
 
71
 
72
            /*
72
            /*
73
            //rota igenom dataReceivers, använd deras getName-funktion
73
            //rota igenom dataReceivers, använd deras getName-funktion
74
            //om dess namn stämmer med namnet i xml-datan så skicka listan dit
74
            //om dess namn stämmer med namnet i xml-datan så skicka listan dit
75
            var middleItem:Number = 0;
75
            var middleItem:Number = 0;
76
            var dataList:XMLNode;
76
            var dataList:XMLNode;
77
            var menuName:String;
77
            var menuName:String;
78
           
78
           
79
            dataList = msgXML.firstChild;
79
            dataList = msgXML.firstChild;
80
            //trace(dataList);
80
            //trace(dataList);
81
            for (var aNode:XMLNode = msgXML.firstChild.firstChild; aNode != null; aNode=aNode.nextSibling) {
81
            for (var aNode:XMLNode = msgXML.firstChild.firstChild; aNode != null; aNode=aNode.nextSibling) {
82
                if (aNode.nodeName == "contentname") {
82
                if (aNode.nodeName == "contentname") {
83
                    menuName = aNode.firstChild.nodeValue;
83
                    menuName = aNode.firstChild.nodeValue;
84
                    for (var i:Number = 0; i < dataReceivers.length; i++) {
84
                    for (var i:Number = 0; i < dataReceivers.length; i++) {
85
                        if (menuName == dataReceivers[i].getName()) {
85
                        if (menuName == dataReceivers[i].getName()) {
86
                            dataReceivers[i].setNewData(dataList);
86
                            dataReceivers[i].setNewData(dataList);
87
                            //mainMenu.setNewData(dataList, middleItem);
87
                            //mainMenu.setNewData(dataList, middleItem);
88
                        }              
88
                        }              
89
                    }
89
                    }
90
                }
90
                }
91
            }*/
91
            }*/
92
        }
92
        }
93
    }
93
    }
94
   
94
   
95
    private function onClose() {
95
    private function onClose() {
96
        trace("Server closed connection!");
96
        trace("Server closed connection!");
97
        //msgArea.htmlText = "<b>Server closed connection</b><br>" + msgArea.htmlText;
97
        //msgArea.htmlText = "<b>Server closed connection</b><br>" + msgArea.htmlText;
98
        //intervalID = setInterval(this, "timerConnect", 5000);
98
        //intervalID = setInterval(this, "timerConnect", 5000);
99
        isConnected = false;
99
        isConnected = false;
100
    }
100
    }
101
   
101
   
102
    public function setLogin(username:String, pass:String) {
102
    public function setLogin(username:String, pass:String) {
103
        passWd = pass;
103
        passWd = pass;
104
        userName = username;
104
        userName = username;
105
       
105
       
106
    }
106
    }
107
   
107
   
108
    private function onConnect(success) {
108
    private function onConnect(success) {
109
        if (success) {
109
        if (success) {
110
            trace("Server connection established!");
110
            trace("Server connection established!");
111
            //msgArea.htmlText = "<b>Server connection established!</b><br>" + msgArea.htmlText;
111
            //msgArea.htmlText = "<b>Server connection established!</b><br>" + msgArea.htmlText;
112
 
112
 
113
            isConnected = true;
113
            isConnected = true;
114
           
114
           
115
            //skicka login om det är configurerat
115
            //skicka login om det är configurerat
116
            if (passWd != "" && userName != "") {
116
            if (passWd != "" && userName != "") {
117
                sendToServer(new XML("<flinshpacket login=\"" + userName + "\" pass=\"" + passWd + "\" />"));
117
                sendToServer(new XML("<flinshpacket login=\"" + userName + "\" pass=\"" + passWd + "\" />"));
118
            }
118
            }
119
           
119
           
120
        } else {
120
        } else {
121
            //msgArea.htmlText = "<b>Server connection failed!</b><br>" + msgArea.htmlText;
121
            //msgArea.htmlText = "<b>Server connection failed!</b><br>" + msgArea.htmlText;
122
            trace("Server connection failed!");
122
            trace("Server connection failed!");
123
            isConnected = false;
123
            isConnected = false;
124
            //intervalID = setInterval(this, "timerConnect", 5000);
124
            //intervalID = setInterval(this, "timerConnect", 5000);
125
            //mySocket.connect("deep.arune.se", 2229);
125
            //mySocket.connect("deep.arune.se", 2229);
126
        }
126
        }
127
    }
127
    }
128
   
128
   
129
    private function timerConnect() {
129
    private function timerConnect() {
130
        //  intervalID = null;
130
        //  intervalID = null;
131
        if (!isConnected) {
131
        if (!isConnected) {
132
            mySocket.connect(hostname, 2229);
132
            mySocket.connect(hostname, 2229);
133
            //msgArea.htmlText = "<b>Connecting...</b><br>" + msgArea.htmlText;
133
            //msgArea.htmlText = "<b>Connecting...</b><br>" + msgArea.htmlText;
134
        } else {
134
        } else {
135
            mySocket.send("<ping />\n");
135
            mySocket.send("<ping />\n");
136
        }
136
        }
137
       
137
       
138
    }
138
    }
139
 
139
 
140
    private function replace(holder:String, searchfor:String, replacement:String):String {
140
    private function replace(holder:String, searchfor:String, replacement:String):String {
141
        //trace("inte här");
141
        //trace("inte här");
142
        var temparray:Array = holder.split(searchfor);
142
        var temparray:Array = holder.split(searchfor);
143
        holder = temparray.join(replacement);
143
        holder = temparray.join(replacement);
144
        return (holder);
144
        return (holder);
145
    }
145
    }
146
}
146
}