Subversion Repositories HomeAutomation

Rev

Rev 981 | Rev 984 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 981 Rev 983
Line 50... Line 50...
50
}
50
}
51
 
51
 
52
CanNetManager::~CanNetManager()
52
CanNetManager::~CanNetManager()
53
{
53
{
54
    CanIdTranslator::deleteInstance();
54
    CanIdTranslator::deleteInstance();
-
 
55
    myChannel->stop();
55
    delete myChannel;
56
    delete myChannel;
56
}
57
}
57
 
58
 
58
void CanNetManager::openChannel()
59
void CanNetManager::openChannel()
59
{
60
{
Line 76... Line 77...
76
 
77
 
77
    while (1)
78
    while (1)
78
    {
79
    {
79
        myChannel->waitForEvent();
80
        myChannel->waitForEvent();
80
 
81
 
-
 
82
        while (myChannel->availableEvent())
-
 
83
        {
81
        int event = myChannel->getEvent();
84
            int event = myChannel->getEvent();
82
 
85
 
83
        if (event == ASYNCSOCKET_EVENT_DATA)
86
            if (event == ASYNCSOCKET_EVENT_DATA)
84
        {
87
            {
85
            while (myChannel->availableData())
88
                while (myChannel->availableData())
86
            {
89
                {
87
                waitingForPong = false;
90
                    waitingForPong = false;
88
 
91
 
89
                string data = myChannel->getData();
92
                    string data = myChannel->getData();
90
 
93
 
91
                try
94
                    try
92
                {
95
                    {
93
                    ///FIXME: Verify that \n is right here, have seen that it does not always work
96
                        ///FIXME: Verify that \n is right here, have seen that it does not always work
94
                    vector<string> dataLines = explode("\n", data);
97
                        vector<string> dataLines = explode("\n", data);
95
 
98
 
Line 105... Line 108...
105
 
108
 
106
                        CanMessage canMessage;
109
                            CanMessage canMessage;
107
                        canMessage.setRaw(data);
110
                            canMessage.setRaw(data);
108
 
111
 
109
                        //slog << "Received: " << data;
112
                            //slog << "Received: " << data;
110
 
113
 
111
                        if (!canMessage.isUnknown())
114
                            if (!canMessage.isUnknown())
112
                        {
115
                            {
113
                            vm.queueCanMessage(canMessage);
116
                                vm.queueCanMessage(canMessage);
114
                            canDebug.sendCanMessage(canMessage);
117
                                canDebug.sendCanMessage(canMessage);
115
                        }
118
                            }
116
                        else
119
                            else
117
                        {
120
                            {
118
                            canDebug.sendData(data + "\n");
121
                                canDebug.sendData(data + "\n");
119
                        }
122
                            }
120
                        /*else
123
                            /*else
121
                        {
124
                            {
122
                            slog << "Received unknown message. Skipping...\n";
125
                                slog << "Received unknown message. Skipping...\n";
123
                        }*/
126
                            }*/
124
                    }
127
                        }
Line 127... Line 130...
127
                {
130
                    {
128
                    slog << "CanMessageException was caught:\n";
131
                        slog << "CanMessageException was caught:\n";
129
                    slog << e->getDescription() + "\n";
132
                        slog << e->getDescription() + "\n";
130
                }
133
                    }
131
            }
134
                }
-
 
135
            }
-
 
136
            else if (event == ASYNCSOCKET_EVENT_CONNECTED)
-
 
137
            {
-
 
138
                slog << "Connected to " + address + ":" + port + "\n";
132
        }
139
            }
133
        else if (event == ASYNCSOCKET_EVENT_CLOSED)
140
            else if (event == ASYNCSOCKET_EVENT_CLOSED)
134
        {
141
            {
135
            vm.queueExpression("setAllOffline();");
142
                vm.queueExpression("setAllOffline();");
136
        }
143
            }
137
        else if (event == ASYNCSOCKET_EVENT_DIED)
144
            else if (event == ASYNCSOCKET_EVENT_DIED)
138
        {
145
            {
139
            vm.queueExpression("setAllOffline();");
146
                vm.queueExpression("setAllOffline();");
140
            break;
147
                break;
141
        }
148
            }
142
        else if (event == ASYNCSOCKET_EVENT_INACTIVITY)
149
            else if (event == ASYNCSOCKET_EVENT_INACTIVITY)
143
        {
150
            {
144
            if (waitingForPong)
151
                if (waitingForPong)
Line 154... Line 161...
154
                waitingForPong = true;
161
                    waitingForPong = true;
155
                slog << "Sending ping.\n";
162
                    slog << "Sending ping.\n";
156
                myChannel->sendData("PING");
163
                    myChannel->sendData("PING");
157
            }
164
                }
158
 
165
 
-
 
166
            }
159
        }
167
        }
160
    }
168
    }
161
 
169
 
162
    myChannel->stopEvent();
170
    myChannel->stopEvent();
163
}
171
}