📄 main.lst
字号:
244 1 if(video_revhandle == 0x0FFFF)
245 1 puts("\r\n Failed to create receive video UDP socket \r\n");
246 1 else
247 1 puts("\r\n Succeed to create receive video UDP socket \r\n");
248 1
249 1 if(bind(video_revhandle,&rev_udp_video,sizeof(struct sockaddr)) == 0)//绑定命令字接收地址和端口
250 1 printf(" successully bind receive video address and port - %u\r\n",REV_VIDEO_PORT);
251 1 else
252 1 printf(" failed to bind receive video address and port \r\n");
253 1
254 1 /******************创建UDP视频接收连接************************/
255 1
256 1
257 1 /******************创建UDP音频接收连接************************/
258 1
259 1 memset(&rev_udp_audio, 0, sizeof(struct sockaddr));
260 1 rev_udp_audio.sin_addr[12] = static_ip[0];
261 1 rev_udp_audio.sin_addr[13] = static_ip[1];
262 1 rev_udp_audio.sin_addr[14] = static_ip[2];
263 1 rev_udp_audio.sin_addr[15] = static_ip[3];
264 1
265 1 rev_udp_audio.sin_port = REV_G711_PORT;
266 1
267 1 g711_revhandle = socket(0, SOCKET_TYPE_DATAGRAM, 0);//创建UDP接收命令字连接
268 1
269 1 if(g711_revhandle == 0x0FFFF)
270 1 puts("\r\n Failed to create receive audio UDP socket \r\n");
271 1 else
272 1 puts("\r\n Succeed to create receive audio UDP socket \r\n");
273 1
274 1
275 1 if(bind(g711_revhandle,&rev_udp_audio,sizeof(struct sockaddr)) == 0)//绑定命令字接收地址和端口
276 1 {
277 2 printf(" successully bind receive audio address and port - %u\r\n",REV_G711_PORT);
278 2 }
279 1 else
280 1 {
281 2 printf(" failed to bind receive audio address and port \r\n");
282 2 }
283 1
284 1 /******************创建UDP音频接收连接************************/
285 1
286 1
287 1 /******************创建UDP命令接收连接************************/
288 1
289 1 memset(&rev_udp_command, 0, sizeof(struct sockaddr));
290 1 rev_udp_command.sin_addr[12] = static_ip[0];
291 1 rev_udp_command.sin_addr[13] = static_ip[1];
292 1 rev_udp_command.sin_addr[14] = static_ip[2];
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 6
293 1 rev_udp_command.sin_addr[15] = static_ip[3];
294 1
295 1 rev_udp_command.sin_port = REV_COMMAND_PORT;
296 1
297 1 command_revhandle = socket(0, SOCKET_TYPE_DATAGRAM, 0);//创建UDP接收命令字连接
298 1
299 1 if(command_revhandle == 0x0FFFF)
300 1 puts("\r\n Failed to create receive command UDP socket \r\n");
301 1 else
302 1 puts("\r\n Succeed to create receive command UDP socket \r\n");
303 1
304 1 if(bind(command_revhandle,&rev_udp_command,sizeof(struct sockaddr)) == 0)//绑定命令字接收地址和端口
305 1 printf(" successully bind receive command address and port - %u\r\n",REV_COMMAND_PORT);
306 1 else
307 1 printf(" failed to bind receive command address and port \r\n");
308 1
309 1 syn_setDatagramAddress(command_revhandle, 0, &rev_udp_command);
310 1
311 1 /******************创建UDP命令接收连接************************/
312 1
313 1
314 1 /******************** 创建接收连接 ***************************/
315 1
316 1 start_leave();
317 1
318 1 task_entercritsection();
319 1
320 1 result = task_fork(NORM_PRIORITY, ROM_SAVESIZE);//创建两个任务线程
321 1
322 1 if (result==0x0FFFF)//创建任务失败
323 1 {
324 2 task_leavecritsection();
325 2 puts("Attempt to fork failed\r\n");
326 2 return;
327 2 }
328 1 else if (result==0)//发送线程
329 1 {
330 2 while (1)
331 2 {
332 3 temp = *(dual_ip + 0x44);
333 3 if(temp == 0x01)
334 3 {
335 4 task_entercritsection();
336 4 para_l = *(dual_ip + 0x45);
337 4 para_h = *(dual_ip + 0x46);
338 4 analyse_current_state(para_l,para_h);
339 4 *(dual_ip + 0x44) = 0;
340 4 task_leavecritsection();
341 4 }
342 3
343 3 temp = ((*rd_fifo_ef) & 0x01);
344 3 if(temp == 1)//检测视频FIFO是否为空
345 3 {
346 4 dp_read_video();
347 4 if(send_video_flag != 0xff)
348 4 {
349 5 syn_sendto(video_sendhandle, 1472, send_addr_video);//UDP发送视频数据
350 5 }
351 4 }
352 3
353 3 temp = ((*rd_fifo_hf) & 0x01);
354 3 if(temp == 0)//检测音频FIFO是否半满
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 7
355 3 {
356 4 dp_read_audio();//读取音频数据
357 4 if(send_audio_flag != 0xff)
358 4 {
359 5 syn_sendto(g711_sendhandle, 1024, send_addr_audio);//UDP发送音频数据
360 5 }
361 4 }
362 3
363 3 temp = ((*dual_rev) & 0x01);
364 3 if(temp == 0x01)//判断是否有命令字需要发送
365 3 {
366 4 command_length = *(dual_rev + 1);
367 4 for(i = 0; i < command_length;i++)
368 4 {
369 5 *(send_addr_command + i + 5) = (*(dual_rev + 2 + i) & 0xff);
370 5 }
371 4 *dual_rev = 0;
372 4 command_length = command_length + 5;
373 4 *(send_addr_command) = command_length;//将从双口RAM中取出的命令字打包
374 4 syn_sendto(command_sendhandle,command_length,send_addr_command);//UDP发送命令字
375 4 }
376 3 if(rev_video_flag == 0xff)
377 3 {
378 4 task_wait(0, 0, 18);//线程挂起,进入等待
379 4 }
380 3 else
381 3 {
382 4 task_wait(0, 0, 16);//线程挂起,进入等待
383 4 }
384 3 }
385 2 }
386 1 else
387 1 {
388 2 command_result = task_fork(NORM_PRIORITY, ROM_SAVESIZE);//创建两个任务线程
389 2 if(command_result == 0xffff)
390 2 {
391 3 puts("Attempt to fork failed\r\n");
392 3 return;
393 3 }
394 2 else if(command_result == 0)//接收视频数据线程
395 2 {
396 3 while (1)
397 3 {
398 4 rev_length_video = syn_recvfrom(video_revhandle,1472,rev_addr_video);//UDP接收视频数据
399 4 if(rev_length_video == 1472)
400 4 {
401 5 dp_write_video();
402 5 }
403 4 }
404 3 }
405 2 else
406 2 {
407 3 audio_result = task_fork(NORM_PRIORITY, ROM_SAVESIZE);//创建两个任务线程
408 3 if(audio_result == 0xffff)
409 3 {
410 4 puts("Attempt to fork failed\r\n");
411 4 return;
412 4 }
413 3 else if(audio_result == 0)//接收音频线程
414 3 {
415 4 while(1)
416 4 {
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 8
417 5 rev_length_audio = syn_recvfrom(g711_revhandle,1024,rev_addr_audio);//UDP音频接收
418 5 //rev_length_audio = recvfrom(g711_revhandle,rev_addr_audio,1024,0,&temp_addr,sizeof(struct sockaddr)
-);//UDP音频接收
419 5 if(rev_length_audio == 1024)
420 5 {
421 6 dp_write_audio();
422 6 //printf("IP : %bu \r\n", temp_addr.sin_addr[15]);
423 6 //temp_addr.sin_addr[15] = 0;
424 6 }
425 5 }
426 4 }
427 3 else//接收命令字线程
428 3 {
429 4 task_leavecritsection();
430 4 while (1)
431 4 {
432 5 rev_length_command = syn_recvfrom(command_revhandle,210, rev_addr_command);//UDP接收
433 5 if((rev_length_command < 210) && (rev_length_command > 0))
434 5 {
435 6 moveto_buf();//将网络接收到的命令字放入接收缓冲区
436 6 rev_length_command = 0;
437 6 while(head_r != tail_r)
438 6 {
439 7 send_command();
440 7 }
441 6 }
442 5 }
443 4 }
444 3 }
445 2 }
446 1 while(1)
447 1 {
448 2 }
449 1 }
450
451 void start_leave()
452 {
453 1 for (i=0;i<18;i++)
454 1 {
455 2 rev_multi_video.sin_addr[i] = 0;
456 2 }
457 1 rev_multi_video.sin_addr[12] = rev_para_video[0][0];
458 1 rev_multi_video.sin_addr[13] = rev_para_video[0][1];
459 1 rev_multi_video.sin_addr[14] = rev_para_video[0][2];
460 1 rev_multi_video.sin_addr[15] = rev_para_video[0][3];
461 1 rev_multi_video.sin_port = REV_VIDEO_PORT;
462 1 if(leave(video_revhandle,&rev_multi_video,sizeof(struct sockaddr)) == 0)
463 1 {
464 2 puts("leave from rev_multi_video success! - 0");
465 2 }
466 1 else
467 1 {
468 2 puts("leave from rev_multi_video failure! - 0");
469 2 }
470 1
471 1 for (i=0;i<18;i++)
472 1 {
473 2 rev_multi_video.sin_addr[i] = 0;
474 2 }
475 1 rev_multi_video.sin_addr[12] = rev_para_video[1][0];
476 1 rev_multi_video.sin_addr[13] = rev_para_video[1][1];
477 1 rev_multi_video.sin_addr[14] = rev_para_video[1][2];
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 9
478 1 rev_multi_video.sin_addr[15] = rev_para_video[1][3];
479 1 rev_multi_video.sin_port = REV_VIDEO_PORT;
480 1 if(leave(video_revhandle,&rev_multi_video,sizeof(struct sockaddr)) == 0)
481 1 {
482 2 puts("leave from rev_multi_video success! - 1");
483 2 }
484 1 else
485 1 {
486 2 puts("leave from rev_multi_video failure! - 1");
487 2 }
488 1
489 1 for (i=0;i<18;i++)
490 1 {
491 2 rev_multi_audio.sin_addr[i] = 0;
492 2 }
493 1 rev_multi_audio.sin_addr[12] = rev_para_audio[0][0];
494 1 rev_multi_audio.sin_addr[13] = rev_para_audio[0][1];
495 1 rev_multi_audio.sin_addr[14] = rev_para_audio[0][2];
496 1 rev_multi_audio.sin_addr[15] = rev_para_audio[0][3];
497 1 rev_multi_audio.sin_port = REV_G711_PORT;
498 1 if(leave(g711_revhandle,&rev_multi_audio,sizeof(struct sockaddr)) == 0)
499 1 {
500 2 puts("leave from rev_multi_audio success! - 0");
501 2 }
502 1 else
503 1 {
504 2 puts("leave from rev_multi_audio failure! - 0");
505 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -