2 Copyright 2006 Chris Tallon
4 This file is part of VOMP.
6 VOMP is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 VOMP is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with VOMP; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 //void dump(unsigned char* data, USHORT size);
24 //unsigned char dcc(UCHAR c);
28 log = Log::getInstance();
39 if (!initted) return 1;
40 if (threadIsActive()) threadCancel();
47 int UDP::run(MessageQueue* tcommandMessageQueue)
49 if (threadIsActive()) return 1;
50 log->log("UDP", Log::DEBUG, "Starting UDP command server");
54 commandMessageQueue = tcommandMessageQueue;
55 ds = new DatagramSocket(2000);
59 log->log("UDP", Log::DEBUG, "DSock init error");
66 log->log("UDP", Log::DEBUG, "Thread start error");
71 log->log("UDP", Log::DEBUG, "UDP command server started");
75 void UDP::threadMethod()
81 retval = ds->waitforMessage(0);
84 retval = ds->waitforMessage(1);
89 log->log("UDP", Log::CRIT, "Wait for packet error");
98 processRequest((UCHAR*)ds->getData(), ds->getDataLength());
103 void UDP::processRequest(UCHAR* data, int length)
105 log->log("UDP", Log::DEBUG, "Got request");
107 char* temp = new char[length + 1];
108 memcpy(temp, data, length);
110 int command = atoi(temp);
113 log->log("UDP", Log::DEBUG, "Command %i recieved", command);
116 Message *m = new Message();
117 m->to = commandMessageQueue;
118 m->message = Message::UDP_BUTTON;
119 m->parameter = command;
120 commandMessageQueue->postMessage(m);
124 void dump(unsigned char* data, USHORT size)
126 printf("Size = %u\n", size);
133 printf(" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",
134 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5], data[c+6], data[c+7],
135 data[c+8], data[c+9], data[c+10], data[c+11], data[c+12], data[c+13], data[c+14], data[c+15],
136 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]), dcc(data[c+6]), dcc(data[c+7]),
137 dcc(data[c+8]), dcc(data[c+9]), dcc(data[c+10]), dcc(data[c+11]), dcc(data[c+12]), dcc(data[c+13]), dcc(data[c+14]), dcc(data[c+15]));
145 printf(" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",
146 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5], data[c+6], data[c+7],
147 data[c+8], data[c+9], data[c+10], data[c+11], data[c+12], data[c+13], data[c+14],
148 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]), dcc(data[c+6]), dcc(data[c+7]),
149 dcc(data[c+8]), dcc(data[c+9]), dcc(data[c+10]), dcc(data[c+11]), dcc(data[c+12]), dcc(data[c+13]), dcc(data[c+14]));
153 printf(" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",
154 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5], data[c+6], data[c+7],
155 data[c+8], data[c+9], data[c+10], data[c+11], data[c+12], data[c+13],
156 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]), dcc(data[c+6]), dcc(data[c+7]),
157 dcc(data[c+8]), dcc(data[c+9]), dcc(data[c+10]), dcc(data[c+11]), dcc(data[c+12]), dcc(data[c+13]));
161 printf(" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c%c%c%c%c%c%c%c\n",
162 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5], data[c+6], data[c+7],
163 data[c+8], data[c+9], data[c+10], data[c+11], data[c+12],
164 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]), dcc(data[c+6]), dcc(data[c+7]),
165 dcc(data[c+8]), dcc(data[c+9]), dcc(data[c+10]), dcc(data[c+11]), dcc(data[c+12]));
169 printf(" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c%c%c%c%c%c%c\n",
170 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5], data[c+6], data[c+7],
171 data[c+8], data[c+9], data[c+10], data[c+11],
172 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]), dcc(data[c+6]), dcc(data[c+7]),
173 dcc(data[c+8]), dcc(data[c+9]), dcc(data[c+10]), dcc(data[c+11]));
177 printf(" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c%c%c%c%c%c\n",
178 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5], data[c+6], data[c+7],
179 data[c+8], data[c+9], data[c+10],
180 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]), dcc(data[c+6]), dcc(data[c+7]),
181 dcc(data[c+8]), dcc(data[c+9]), dcc(data[c+10]));
185 printf(" %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c%c%c%c%c\n",
186 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5], data[c+6], data[c+7],
187 data[c+8], data[c+9],
188 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]), dcc(data[c+6]), dcc(data[c+7]),
189 dcc(data[c+8]), dcc(data[c+9]));
193 printf(" %02X %02X %02X %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c%c%c%c\n",
194 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5], data[c+6], data[c+7],
196 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]), dcc(data[c+6]), dcc(data[c+7]),
201 printf(" %02X %02X %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c%c%c\n",
202 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5], data[c+6], data[c+7],
203 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]), dcc(data[c+6]), dcc(data[c+7]));
207 printf(" %02X %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c%c\n",
208 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5], data[c+6],
209 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]), dcc(data[c+6]));
213 printf(" %02X %02X %02X %02X %02X %02X %c%c%c%c%c%c\n",
214 data[c], data[c+1], data[c+2], data[c+3], data[c+4], data[c+5],
215 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]), dcc(data[c+5]));
219 printf(" %02X %02X %02X %02X %02X %c%c%c%c%c\n",
220 data[c], data[c+1], data[c+2], data[c+3], data[c+4],
221 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]), dcc(data[c+4]));
225 printf(" %02X %02X %02X %02X %c%c%c%c\n",
226 data[c], data[c+1], data[c+2], data[c+3],
227 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]), dcc(data[c+3]));
231 printf(" %02X %02X %02X %c%c%c\n",
232 data[c], data[c+1], data[c+2],
233 dcc(data[c]), dcc(data[c+1]), dcc(data[c+2]));
237 printf(" %02X %02X %c%c\n",
239 dcc(data[c]), dcc(data[c+1]));
253 unsigned char dcc(UCHAR c)
255 if (isspace(c)) return ' ';
256 if (isprint(c)) return c;