📄 main.lst
字号:
506 1
507 1 for (i=0;i<18;i++)
508 1 {
509 2 rev_multi_audio.sin_addr[i] = 0;
510 2 }
511 1 rev_multi_audio.sin_addr[12] = rev_para_audio[1][0];
512 1 rev_multi_audio.sin_addr[13] = rev_para_audio[1][1];
513 1 rev_multi_audio.sin_addr[14] = rev_para_audio[1][2];
514 1 rev_multi_audio.sin_addr[15] = rev_para_audio[1][3];
515 1 rev_multi_audio.sin_port = REV_G711_PORT;
516 1 if(leave(g711_revhandle,&rev_multi_audio,sizeof(struct sockaddr)) == 0)
517 1 {
518 2 puts("leave from rev_multi_audio success! - 1");
519 2 }
520 1 else
521 1 {
522 2 puts("leave from rev_multi_audio failure! - 1");
523 2 }
524 1
525 1
526 1 for (i=0;i<18;i++)
527 1 {
528 2 rev_multi_audio.sin_addr[i] = 0;
529 2 }
530 1 rev_multi_audio.sin_addr[12] = rev_para_audio[2][0];
531 1 rev_multi_audio.sin_addr[13] = rev_para_audio[2][1];
532 1 rev_multi_audio.sin_addr[14] = rev_para_audio[2][2];
533 1 rev_multi_audio.sin_addr[15] = rev_para_audio[2][3];
534 1 rev_multi_audio.sin_port = REV_G711_PORT;
535 1 if(leave(g711_revhandle,&rev_multi_audio,sizeof(struct sockaddr)) == 0)
536 1 {
537 2 puts("leave from rev_multi_audio success! - 2");
538 2 }
539 1 else
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 10
540 1 {
541 2 puts("leave from rev_multi_audio failure! - 2");
542 2 }
543 1 }
544
545 void wait_millis(unsigned int waitTime)//延时等待函数
546 {
547 1 unsigned int result;
548 1 struct TIME time1;
549 1 struct TIME time2;
550 1
551 1 task_entercritsection();
552 1
553 1 task_gettimemillis(&time1);
554 1 result = 0;
555 1 while (result < waitTime)
556 1 {
557 2 task_gettimemillis(&time2);
558 2 result = time2.millis - time1.millis;
559 2 }
560 1
561 1 task_leavecritsection();
562 1 printf("Waited for %ld msec\r\n", (time2.millis - time1.millis));
563 1 }
564
565 void do_static()//配置本端网络属性
566 {
567 1 unsigned int result;
568 1 unsigned char xdata config[56];
569 1 unsigned int i;
570 1 for (i=0;i<56;i++)
571 1 config[i] = 0;
572 1
573 1 //set the ip address
574 1 config[12] = static_ip[0];
575 1 config[13] = static_ip[1];
576 1 config[14] = static_ip[2];
577 1 config[15] = static_ip[3];
578 1
579 1 //set the subnet mask
580 1 config[16] = yan_ma[0];
581 1 config[17] = yan_ma[1];
582 1 config[18] = yan_ma[2];
583 1 config[19] = yan_ma[3];
584 1
585 1 //set the iP4 prefix
586 1 config[20] = STATIC_IPV4_PREFIX;
587 1
588 1 //set the gateway
589 1 config[33] = gate_ip[0];
590 1 config[34] = gate_ip[1];
591 1 config[35] = gate_ip[2];
592 1 config[36] = gate_ip[3];
593 1
594 1 result = setnetworkparams(config);
595 1 printf("Set network parameters result: %u\r\n", result);
596 1
597 1 }
598
599 void network_config()//读取本端网络属性
600 {
601 1 unsigned char result;
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 11
602 1 unsigned char xdata config[56];
603 1 unsigned int i;
604 1 for (i=0;i<56;i++)
605 1 config[i] = 0;
606 1
607 1 result = getnetworkparams(config);
608 1 printf("Network params result: %d\r\n", result);
609 1
610 1 printf("IP : %bu %bu %bu %bu\r\n", config[12], config[13], config[14], config[15]);
611 1 printf("Subnet: %bu %bu %bu %bu\r\n", config[16], config[17], config[18], config[19]);
612 1 printf("Prefix: %bu\r\n", config[20]);
613 1 printf("Gate : %bu %bu %bu %bu\r\n", config[33], config[34], config[35], config[36]);
614 1 }
615
616 void init()//初始化自己定义的量
617 {
618 1 send_addr_video = 0x050000;//视频发送地址指针
619 1 rev_addr_video = 0x051000;//视频接收地址指针
620 1 send_addr_audio = 0x052000;//音频发送地址指针
621 1 rev_addr_audio = 0x053000;//音频接收地址指针
622 1 send_addr_command = 0x054000;//命令字发送地址指针
623 1 rev_addr_command = 0x055000;//命令字接收地址指针
624 1 rd_fifo_hf = 0x280000;//读取音频发送FIFO半满地址指针
625 1 rd_fifo_ef = 0x2a0000;//读取视频发送FIFO空地址指针
626 1 dual_send = 0x240200;//双口RAM写地址指针
627 1 dual_rev = 0x240000;//双口RAM读地址指针
628 1 dual_ip = 0x240400;//网络参数配置地址指针
629 1 command_length = 0;
630 1 head_r = 0;
631 1 tail_r = 0;
632 1 for(i = 0;i < 2048;i++)
633 1 {
634 2 rev_buf[i] = 0;
635 2 }
636 1
637 1 for(i = 0; i < 4;i++)
638 1 {
639 2 for(j = 0; j < 4;j++)
640 2 {
641 3 send_para[i][j] = 0;
642 3 }
643 2 }
644 1
645 1 for(i = 0; i < 3;i++)
646 1 {
647 2 for(j = 0; j < 4;j++)
648 2 {
649 3 rev_para_video[i][j] = 0;
650 3 rev_para_audio[i][j] = 0;
651 3 }
652 2 }
653 1
654 1 send_video_flag = 0xff;
655 1 rev_video_flag = 0xff;
656 1 send_audio_flag = 0xff;
657 1 rev_audio_flag = 0xff;
658 1
659 1 static_ip[0] = 192;
660 1 static_ip[1] = 168;
661 1 static_ip[2] = 128;
662 1 static_ip[3] = 47;
663 1
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 12
664 1 gate_ip[0] = 192;
665 1 gate_ip[1] = 168;
666 1 gate_ip[2] = 128;
667 1 gate_ip[3] = 1;
668 1
669 1 yan_ma[0] = 255;
670 1 yan_ma[1] = 255;
671 1 yan_ma[2] = 255;
672 1 yan_ma[3] = 0;
673 1
674 1 SEND_VIDEO_PORT = 10026;
675 1 REV_VIDEO_PORT = 10025;
676 1 SEND_G711_PORT = 10028;
677 1 REV_G711_PORT = 10027;
678 1 SEND_COMMAND_PORT = 10030;
679 1 REV_COMMAND_PORT = 10029;
680 1 }
681
682 void moveto_buf()//将收到的命令字转移到接收缓冲区
683 {
684 1 unsigned char tem,length;
685 1 length = rev_length_command - 1;
686 1
687 1 for(tem = 0;tem < length;tem++)
688 1 {
689 2 rev_buf[head_r] = *(rev_addr_command + tem + 1);
690 2 head_r = (head_r + 1) & 0x7ff;
691 2 }
692 1 }
693
694
695 void send_command()//通过双口RAM发送命令字
696 {
697 1 unsigned char flag,length,total;
698 1
699 1 flag = (*dual_send) & 0x01;
700 1
701 1 if(flag == 0)//文景顺已经读走了命令字,可以写
702 1 {
703 2 total = 0;
704 2 length = rev_buf[tail_r];
705 2
706 2 if((length < 2) || (length > 30))
707 2 {
708 3 head_r = 0;
709 3 tail_r = 0;
710 3 for(i = 0;i < 2048;i++)
711 3 {
712 4 rev_buf[i] = 0;
713 4 }
714 3 total = 0;
715 3 }
716 2 while((head_r != tail_r) && ((total + length) < 120))
717 2 {
718 3 for(i = 0;i < length;i++)
719 3 {
720 4 temp = rev_buf[tail_r];
721 4 *(dual_send + total + 2) = temp;
722 4 tail_r = (tail_r + 1) & 0x7ff;
723 4 total++;
724 4 }
725 3 length = rev_buf[tail_r];
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 13
726 3 if(head_r != tail_r)
727 3 {
728 4 if((length < 2) || (length > 30))
729 4 {
730 5 head_r = 0;
731 5 tail_r = 0;
732 5 for(i = 0;i < 2048;i++)
733 5 {
734 6 rev_buf[i] = 0;
735 6 }
736 5 total = 0;
737 5 }
738 4 }
739 3 }
740 2 if((total > 0) && (total < 128))
741 2 {
742 3 *(dual_send + 1) = total;
743 3 *dual_send = 0x01;
744 3 }
745 2 }
746 1 }
747
748 void analyse_current_state(unsigned char state,unsigned num)
749 //根据8031提供的情况调整视频、音频的收发
750 {
751 1 unsigned char connect_state,connect_num;
752 1 connect_state = state & 0x03;
753 1 connect_num = num & 0x03;
754 1 if(connect_state != 0x01)
755 1 {
756 2 adjust_rev_video(connect_num,connect_state);
757 2 }
758 1
759 1 connect_state = (state >> 2) & 0x03;
760 1 connect_num = (num >> 2) & 0x03;
761 1 if(connect_state != 0x01)
762 1 {
763 2 adjust_send_video(connect_num,connect_state);
764 2 }
765 1
766 1 connect_state = (state >> 4) & 0x03;
767 1 connect_num = (num >> 4) & 0x03;
768 1 if(connect_state != 0x01)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -