📄 main.lst
字号:
222 2 {
223 3 temp = ((*rd_fifo_ef) & 0x01);
224 3 if(temp == 1)//检测视频FIFO是否为空
225 3 {
226 4 dp_read_video();
227 4 if(trans_num < 50000)
228 4 {
229 5 if(syn_sendto(video_sendhandle, 1472, send_addr_video) == 0)//UDP发送视频数据
230 5 {
231 6 trans_num++;
232 6 }
233 5 else
234 5 {
235 6 puts("send error!\r\n");
236 6 }
237 5 }
238 4 }
239 3
240 3 temp = ((*rd_fifo_hf) & 0x01);
C51 COMPILER V7.07 MAIN 04/07/2006 09:01:49 PAGE 5
241 3 if(temp == 0)//检测音频FIFO是否半满
242 3 {
243 4 dp_read_audio();//读取音频数据
244 4 syn_sendto(g711_sendhandle, 1024, send_addr_audio);//UDP发送音频数据
245 4 }
246 3
247 3 temp = ((*dual_rev) & 0x01);
248 3 if(temp == 0x01)//判断是否有命令字需要发送
249 3 {
250 4 command_length = *(dual_rev + 1);
251 4 for(i = 0; i < command_length;i++)
252 4 {
253 5 *(send_addr_command + i + 5) = (*(dual_rev + 2 + i) & 0xff);
254 5 }
255 4 *dual_rev = 0;
256 4 command_length = command_length + 5;
257 4 *(send_addr_command) = command_length;//将从双口RAM中取出的命令字打包
258 4 syn_sendto(command_sendhandle,command_length,send_addr_command);//UDP发送命令字
259 4 }
260 3 task_wait(0, 0, 16);//线程挂起,进入等待
261 3 }
262 2 }
263 1 else
264 1 {
265 2 command_result = task_fork(NORM_PRIORITY, ROM_SAVESIZE);//创建两个任务线程
266 2 if(command_result == 0xffff)
267 2 {
268 3 puts("Attempt to fork failed\r\n");
269 3 return;
270 3 }
271 2 else if(command_result == 0)//接收视频数据线程
272 2 {
273 3 while (1)
274 3 {
275 4 rev_length_video = syn_recvfrom(video_revhandle,1472,rev_addr_video);//UDP接收视频数据
276 4 if(rev_length_video == 1472)
277 4 {
278 5 dp_write_video();
279 5 }
280 4 }
281 3 }
282 2 else
283 2 {
284 3 audio_result = task_fork(NORM_PRIORITY, ROM_SAVESIZE);//创建两个任务线程
285 3 if(audio_result == 0xffff)
286 3 {
287 4 puts("Attempt to fork failed\r\n");
288 4 return;
289 4 }
290 3 else if(audio_result == 0)//接收音频线程
291 3 {
292 4 while(1)
293 4 {
294 5 rev_length_audio = syn_recvfrom(g711_revhandle,1024,rev_addr_audio);//UDP音频接收
295 5 //rev_length_audio = recvfrom(g711_revhandle,rev_addr_audio,1024,0,&temp_addr,sizeof(struct sockaddr)
-);//UDP音频接收
296 5 if(rev_length_audio == 1024)
297 5 {
298 6 dp_write_audio();
299 6 //printf("IP : %bu \r\n", temp_addr.sin_addr[15]);
300 6 //temp_addr.sin_addr[15] = 0;
301 6 }
C51 COMPILER V7.07 MAIN 04/07/2006 09:01:49 PAGE 6
302 5 }
303 4 }
304 3 else//接收命令字线程
305 3 {
306 4 task_leavecritsection();
307 4 while (1)
308 4 {
309 5 rev_length_command = syn_recvfrom(command_revhandle,210, rev_addr_command);//UDP接收
310 5 if((rev_length_command < 210) && (rev_length_command > 0))
311 5 {
312 6 moveto_buf();//将网络接收到的命令字放入接收缓冲区
313 6 rev_length_command = 0;
314 6 while(head_r != tail_r)
315 6 {
316 7 send_command();
317 7 }
318 6 }
319 5 }
320 4 }
321 3 }
322 2 }
323 1 while(1)
324 1 {
325 2 }
326 1 }
327
328 void start_leave()
329 {
330 1 for (i=0;i<18;i++)
331 1 {
332 2 rev_multi_video.sin_addr[i] = 0;
333 2 }
334 1 rev_multi_video.sin_addr[12] = rev_para_video[0][0];
335 1 rev_multi_video.sin_addr[13] = rev_para_video[0][1];
336 1 rev_multi_video.sin_addr[14] = rev_para_video[0][2];
337 1 rev_multi_video.sin_addr[15] = rev_para_video[0][3];
338 1 rev_multi_video.sin_port = REV_VIDEO_PORT;
339 1 if(leave(video_revhandle,&rev_multi_video,sizeof(struct sockaddr)) == 0)
340 1 {
341 2 puts("leave from rev_multi_video success! - 0");
342 2 }
343 1 else
344 1 {
345 2 puts("leave from rev_multi_video failure! - 0");
346 2 }
347 1
348 1 for (i=0;i<18;i++)
349 1 {
350 2 rev_multi_video.sin_addr[i] = 0;
351 2 }
352 1 rev_multi_video.sin_addr[12] = rev_para_video[1][0];
353 1 rev_multi_video.sin_addr[13] = rev_para_video[1][1];
354 1 rev_multi_video.sin_addr[14] = rev_para_video[1][2];
355 1 rev_multi_video.sin_addr[15] = rev_para_video[1][3];
356 1 rev_multi_video.sin_port = REV_VIDEO_PORT;
357 1 if(leave(video_revhandle,&rev_multi_video,sizeof(struct sockaddr)) == 0)
358 1 {
359 2 puts("leave from rev_multi_video success! - 1");
360 2 }
361 1 else
362 1 {
363 2 puts("leave from rev_multi_video failure! - 1");
C51 COMPILER V7.07 MAIN 04/07/2006 09:01:49 PAGE 7
364 2 }
365 1
366 1 for (i=0;i<18;i++)
367 1 {
368 2 rev_multi_audio.sin_addr[i] = 0;
369 2 }
370 1 rev_multi_audio.sin_addr[12] = rev_para_audio[0][0];
371 1 rev_multi_audio.sin_addr[13] = rev_para_audio[0][1];
372 1 rev_multi_audio.sin_addr[14] = rev_para_audio[0][2];
373 1 rev_multi_audio.sin_addr[15] = rev_para_audio[0][3];
374 1 rev_multi_audio.sin_port = REV_G711_PORT;
375 1 if(leave(g711_revhandle,&rev_multi_audio,sizeof(struct sockaddr)) == 0)
376 1 {
377 2 puts("leave from rev_multi_audio success! - 0");
378 2 }
379 1 else
380 1 {
381 2 puts("leave from rev_multi_audio failure! - 0");
382 2 }
383 1
384 1 for (i=0;i<18;i++)
385 1 {
386 2 rev_multi_audio.sin_addr[i] = 0;
387 2 }
388 1 rev_multi_audio.sin_addr[12] = rev_para_audio[1][0];
389 1 rev_multi_audio.sin_addr[13] = rev_para_audio[1][1];
390 1 rev_multi_audio.sin_addr[14] = rev_para_audio[1][2];
391 1 rev_multi_audio.sin_addr[15] = rev_para_audio[1][3];
392 1 rev_multi_audio.sin_port = REV_G711_PORT;
393 1 if(leave(g711_revhandle,&rev_multi_audio,sizeof(struct sockaddr)) == 0)
394 1 {
395 2 puts("leave from rev_multi_audio success! - 1");
396 2 }
397 1 else
398 1 {
399 2 puts("leave from rev_multi_audio failure! - 1");
400 2 }
401 1
402 1
403 1 for (i=0;i<18;i++)
404 1 {
405 2 rev_multi_audio.sin_addr[i] = 0;
406 2 }
407 1 rev_multi_audio.sin_addr[12] = rev_para_audio[2][0];
408 1 rev_multi_audio.sin_addr[13] = rev_para_audio[2][1];
409 1 rev_multi_audio.sin_addr[14] = rev_para_audio[2][2];
410 1 rev_multi_audio.sin_addr[15] = rev_para_audio[2][3];
411 1 rev_multi_audio.sin_port = REV_G711_PORT;
412 1 if(leave(g711_revhandle,&rev_multi_audio,sizeof(struct sockaddr)) == 0)
413 1 {
414 2 puts("leave from rev_multi_audio success! - 2");
415 2 }
416 1 else
417 1 {
418 2 puts("leave from rev_multi_audio failure! - 2");
419 2 }
420 1 }
421
422 void wait_millis(unsigned int waitTime)//延时等待函数
423 {
424 1 unsigned int result;
425 1 struct TIME time1;
C51 COMPILER V7.07 MAIN 04/07/2006 09:01:49 PAGE 8
426 1 struct TIME time2;
427 1
428 1 task_entercritsection();
429 1
430 1 task_gettimemillis(&time1);
431 1 result = 0;
432 1 while (result < waitTime)
433 1 {
434 2 task_gettimemillis(&time2);
435 2 result = time2.millis - time1.millis;
436 2 }
437 1
438 1 task_leavecritsection();
439 1 printf("Waited for %ld msec\r\n", (time2.millis - time1.millis));
440 1 }
441
442 void do_static()//配置本端网络属性
443 {
444 1 unsigned int result;
445 1 unsigned char xdata config[56];
446 1 unsigned int i;
447 1 for (i=0;i<56;i++)
448 1 config[i] = 0;
449 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -