亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtl8019.c

?? 這是一個基于DSP的MP3應用的demo程序
?? C
字號:
/*************************************
  Copyright 2001 by Haia Tech
  海佳科技有限公司
  www.haia2004.com
  Email:haia2004@vip.sina.com
  Tel:0731-4552122 4553216
*************************************/     
#include "RTL8019a.h"
#include "string.h"
#include "common.h" 
#include "cpu_reg.h"

#define QICKREQUEST       5000

unsigned int dat_type,broad_enable,frame=0;
unsigned int scramble_ptr=0,syn_count=0;
unsigned short 	isr,send=0,nextpage;
unsigned short  curr,x1,x2,IP_id;
unsigned short  sendbuf[TALK_SIZE+40];
unsigned short  recbuf[1080/2];
unsigned int    out_wptr,out_rptr;
unsigned short  header1,header2,header3,header4,property,talk_flag;


struct ipaddr   server_ipaddr,nod_ipaddr,r_ipaddr;
struct iphdr    t_iphdr;
struct igmphdr  t_igmphdr;
struct udphdr   t_udphdr;
struct pre_udphdr  pre_udphdr1;
struct mac      MAC_server,MAC_broad,MAC_rec;
struct mac      MAC_self,MAC_nod;
struct arp      arp1;
unsigned int    member_num ;
int             member_flag=0;

extern  unsigned short IP;
extern  unsigned int DA_wptr,DA_rptr,ms;
extern  int *videobuf,*pcmbuf;
extern int request_pack,arp_ack,request_type;
extern unsigned short scramble_tab[1176];
extern int bitrate,status,request_time,req_gaptime;
extern int talkbuf[TALK_SIZE*2];
extern unsigned int  rec_pack,link_time;
extern int group_member[MEMBER_NUM];
extern int ADbuf[2][TALK_SIZE],stero_num ;
extern long sum[TALK_SIZE];
extern int  readmenup,success,request_flag,AD_rptr;



void init_8019()
{

    init_protocal();

    asm(" ssbx xf ");
    ms=0;
    while(ms<10);
    asm(" rsbx xf ");

    ms=0;
    while(ms<100);  //it is an important 100ms

    ms=CRD0 ;
    ms=0;
    
    CR=0x40; 
    delay(10);
    PAR0=MAC_self.addr2_1;
    PAR1=MAC_self.addr2_1>>8;
    PAR2=MAC_self.addr4_3;
    PAR3=MAC_self.addr4_3>>8;
    PAR4=MAC_self.addr6_5;
    PAR5=MAC_self.addr6_5>>8;
    
    CURR=PAGE;
    
    MAR0=0x00;
    MAR1=0x00;
    MAR2=0x00;
    MAR3=0x00;
    MAR4=0x00;
    MAR5=0x00;
    MAR6=0x00;
    MAR7=0x00;
      
    CR=0x00;
	delay(10);
    IMRR=0x00;   
    delay(1);
    DCR=0xf9;   //important
    delay(1);
    TCR=0xf0;
    delay(1);
    RCR=0xcc;   //只接收廣播地址和PAR0-5的地址
    delay(1);
    ISR=0xff;      //復位中斷標志
    delay(1);
    PSTART=PAGE;   //4000H-7fffH
    delay(1);
    PSTOP =0x7f;
    delay(1);
    BNRY  =PAGE;
    delay(1000);
    
}

void init_protocal()
{
/*  server_ip=192.168.1.40  */

    server_ipaddr.addr2_1  =192;
    server_ipaddr.addr2_1 +=(unsigned short)168<<8;
    server_ipaddr.addr4_3  =1;
    server_ipaddr.addr4_3 +=(unsigned short)SERVER_IP<<8;//SERVER_IP=40
    
    nod_ipaddr.addr2_1     =192;
    nod_ipaddr.addr2_1    +=(unsigned short)168<<8;
    nod_ipaddr.addr4_3     =1;
    nod_ipaddr.addr4_3    +=(IP<<8);//IP=1
    
    t_iphdr.tos_version    =69;
    t_iphdr.tos_version   +=(unsigned short)0<<8;      //usally not use
    t_iphdr.id =20;  //++IP_id;
    t_iphdr.id +=(unsigned short)52<<8;
    
    t_iphdr.frag_off =0;
    t_iphdr.protocal_ttl   =128;       //usally 32 or 64
    t_iphdr.protocal_ttl  +=(unsigned short)17<<8;
    t_iphdr.saddr =nod_ipaddr;
    t_iphdr.daddr =server_ipaddr;
    //UDP PORT
    t_udphdr.sport =ORDERPORT+(IP<<8); //1*256+0x08,9801
    t_udphdr.dport =ORDERPORT+(IP<<8); //1*256+0x07,9801
    
    pre_udphdr1.saddr=t_iphdr.saddr;
    pre_udphdr1.daddr=t_iphdr.daddr;
    pre_udphdr1.protocal_value  =0;
    pre_udphdr1.protocal_value +=17<<8;  //UDP
    
    MAC_broad.addr2_1   =255;
    MAC_broad.addr2_1  +=(unsigned short)255<<8;
    MAC_broad.addr4_3   =255;
    MAC_broad.addr4_3  +=(unsigned short)255<<8;
    MAC_broad.addr6_5   =255;
    MAC_broad.addr6_5  +=(unsigned short)255<<8;
    
    
    MAC_self.addr2_1  =IP<<1;
    MAC_self.addr2_1  +=(unsigned short)224<<8;
    MAC_self.addr4_3  =76;
    MAC_self.addr4_3  +=(unsigned short)160<<8;
    MAC_self.addr6_5  =126;
    MAC_self.addr6_5  +=(unsigned short)122<<8;
    
    MAC_nod.addr2_1  =0;
    MAC_nod.addr2_1  +=(unsigned short)224<<8;
    MAC_nod.addr4_3  =76;
    MAC_nod.addr4_3  +=(unsigned short)160<<8;
    MAC_nod.addr6_5  =126;
    MAC_nod.addr6_5  +=(unsigned short)122<<8;
}


void load_ip(unsigned short *buf,unsigned short *length)
{
    unsigned short tempbuf[1240/2];
    memcpy(tempbuf,buf,*length);
    memcpy(buf,&t_iphdr,sizeof(t_iphdr));
    memcpy(buf+sizeof(t_iphdr),tempbuf,*length);
    *length=*length+10;
}

void load_udp(unsigned short *buf,unsigned short *length)
{
    unsigned short tempbuf[1240/2];

    t_udphdr.chksum =0;
    t_udphdr.length =change_byte((*length+4)<<1);
    pre_udphdr1.length=t_udphdr.length;
    pre_udphdr1.daddr= t_iphdr.daddr;
    
    memcpy(tempbuf,&pre_udphdr1,sizeof(pre_udphdr1));
    memcpy(tempbuf+sizeof(pre_udphdr1),&t_udphdr,sizeof(t_udphdr));
    memcpy(tempbuf+sizeof(pre_udphdr1)+sizeof(t_udphdr),buf,*length);
    t_udphdr.chksum =checksum(tempbuf,*length+10);
    
    memcpy(tempbuf,buf,*length);
    memcpy(buf,&t_udphdr,sizeof(t_udphdr));
    memcpy(buf+sizeof(t_udphdr),tempbuf,*length);
    *length=*length+4;
}
void send_frame(unsigned short *buf,unsigned short MAC_type,unsigned short PROTO_type,unsigned short length)
{
       unsigned short x;
       unsigned short i;
       unsigned char  h,l;
       unsigned short tempbuf[1240/2];
       memcpy(tempbuf,buf,length);  //暫時保存在tempbuf
       if(length<46/2)
       {
          for(i=length;i<46/2;i++)
            tempbuf[i]=0;
          length=46/2;
       }

       
       if(MAC_type==0)              //添加MAC地址
         memcpy(buf,&MAC_server,3);
       else if(MAC_type==BROADCAST)
         memcpy(buf,&MAC_broad,3);
       else if(MAC_type==REC_ARP)
         memcpy(buf,&MAC_broad,3);
       else if(MAC_type==NOD)
         memcpy(buf,&MAC_nod,3);
         
       memcpy(buf+3,&MAC_self,3);   //添加源MAC地址

       if(PROTO_type==UDP)          //協(xié)議類型
         *(buf+6)=8+(0<<8);   
       else if(PROTO_type==ARP)
         *(buf+6)=8+(6<<8);   
       else if(PROTO_type==LSS)          //協(xié)議類型
         *(buf+6)=8+(8<<8);   
         
       memcpy(buf+7,tempbuf,length); 
       
       length+=7;
       length=length<<1;
       h=length>>8;
       l=length&0xff;
       CR=0x00;            //activate remote DMA write
       delay(1);
       RSAR0=0X00;
       delay(1);
       RSAR1=0X40;
       delay(1);
       RBCR0=     l;
       delay(1);
       RBCR1=     h;
       delay(1);
       CR=0x10;	    //remote write
       for(x=0;x<length/2;x++)
       {
 	     delay(1);
 	     DMA=buf[x];
       }
       delay(1);
       TPSR=0x40;  //activate DMA  send	   
       delay(1);
       TBCR0=          l;
       delay(1);
       TBCR1=          h;
       delay(1);
       CR=0x04;
}

unsigned short checksum(unsigned short *buffer, short size)  
{  

   unsigned long cksum;  
   unsigned short   sum;

   cksum=0;
   while(size >0)
   {  
     sum=(*buffer<<8)+(*buffer>>8); 
     buffer++;
     cksum+=sum;  
     size --;  
   }  

   cksum = (cksum >> 16) + (cksum & 0xffff);  

   cksum += (cksum >>16);   //cksum maybe  +1
   sum=(unsigned short)(~cksum);
   sum=(sum<<8)+(sum>>8);

   return (sum);  

}  


void send_udp(unsigned short *buf,unsigned short  length)
{
         unsigned short temp;
         unsigned short tempbuf[1240/2];

         for(temp=0;temp<length;temp++)
           buf[temp]=change_byte(buf[temp]);
         load_udp(buf,&length);
         
         t_iphdr.protocal_ttl   =128;       //usally 32 or 64
         t_iphdr.protocal_ttl  +=(unsigned short)17<<8;  //17=UDP
         t_iphdr.saddr =nod_ipaddr;
         
         t_iphdr.tol_len =change_byte((length+10)<<1);
         t_iphdr.chksum=0;         //it is important
         memcpy(tempbuf,&t_iphdr,sizeof(t_iphdr));
         t_iphdr.chksum=checksum(tempbuf,10);
         load_ip(sendbuf,&length);
         if((t_iphdr.daddr.addr4_3&0xff01)==0xff01)  //是廣播地址
           temp=BROADCAST;
         else
           temp=0;
         send_frame(sendbuf,temp,UDP, length);
}


void send_arp(struct ipaddr *ip,unsigned short arp_type)
{
         unsigned short temp;
         arp1.hard_type    =(unsigned short)1<<8;
         arp1.proto_type   =(unsigned short)((2048<<8)+(2048>>8));
         arp1.proto_hard_length   =6;
         arp1.proto_hard_length  +=(unsigned short)4<<8;
         arp1.op_code      =arp_type<<8;
         
         arp1.send_macaddr =MAC_self;
         arp1.send_ipaddr  =nod_ipaddr;
         
         if(arp_type==1)       //請示對方  fill MAC
         {
           arp1.rec_macaddr.addr2_1  =0;
           arp1.rec_macaddr.addr4_3  =0;
           arp1.rec_macaddr.addr6_5  =0;
           temp=BROADCAST;
         }
         else                  //應答對方 fill MAC
         {
           arp1.rec_macaddr=MAC_rec;
           temp=REC_ARP;
         }
         
         arp1.rec_ipaddr   =*ip;
         
         memcpy(sendbuf,&arp1,sizeof(arp1));
         send_frame(sendbuf,temp,ARP,sizeof(arp1));
}



void nic_recieve()
{
    unsigned int x,length,i,j ;
    unsigned int temp ;
//    unsigned short recbuf[1240/2];

        
    if(ISR&0x01)
    {
		IMRR=0;
        CR=0x40; 
		delay(1);
        curr=CURR;
        CR=0;        //it is need

        do{

          CR=0x18;  //自動讀
          delay(1);
          temp=DMA;
          nextpage=temp>>8;
          
          length=DMA;
          if((length>1517)||(length<64))  goto out;
          length=(length+1)/2;
          

          for(x=0;x<length;x++)
              recbuf[x]=DMA;
          temp=recbuf[6];

          if(temp==((0<<0)+8))
          {
             if(recbuf[18]==DATAPORT)   //有四個字節(jié)的頭,1000字節(jié)的數(shù)據(jù)
             {
               header1=recbuf[21]&0x00ff;  //low byte
               header2=recbuf[21]>>8;     
               header3=recbuf[22]&0x00ff;
               header4=recbuf[22]>>8;
               
               getorder();

               if(header2==MPEG1)
               {
                   for(x=21+2;x<(21+2+FRAMESIZE);x++)
                   {

                     if(header1==PROGRAM)
                     {
                       DA_wptr++;
                       
                       if(DA_wptr>=(unsigned int)PCMSIZE)
                           DA_wptr=0;
                       videobuf[DA_wptr]=change_byte(recbuf[x]);
                     }
                   }
                   if(header1==PROGRAM)    //video
                     request_pack++;
               }
               else if(header2==MPEG1)
               {
                 *(IMR)|=0x0800;      //開接收1中斷
               }
             }
          }
          
          else if(temp==((6<<8)+8))      //ARP
          {
            for(x=7;x<length;x++)
               recbuf[x-7]=recbuf[x];
            memcpy(&r_ipaddr,recbuf+12,2);
            if(nod_ipaddr.addr2_1==r_ipaddr.addr2_1)
              if(nod_ipaddr.addr4_3==r_ipaddr.addr4_3)
              {
                if(recbuf[3]==0x01<<8)       //自已請求,對方ARP應答  
                {
                      memcpy(&MAC_rec,recbuf+4,3); //復制對方的MAC
                      memcpy(&r_ipaddr,recbuf+7,2); //復制對方的IP
                      send_arp(&r_ipaddr,2);
                }
                if(recbuf[3]==0x02<<8)       //自已請求,對方ARP應答  
                {
                  memcpy(&MAC_server,recbuf+4,3);
                  arp_ack=1;
                }
              }
          }
        }while(nextpage!=curr);
out:        
        delay(1);   
        ISR=0xff;       
    }

}


unsigned short  change_byte(unsigned short value)
{
    unsigned short temp;
    temp=(value<<8)|(value>>8);
    return(temp);
}


void getorder( )
{

       if(header1==PROGRAM)
       {
          dat_type=MP3_DAT;
       }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区三区不卡| 日韩黄色免费电影| 99久久精品免费看| 亚洲婷婷在线视频| 欧美日韩亚洲综合| 日本欧美大码aⅴ在线播放| 日韩欧美第一区| 国产成人免费视频网站 | 艳妇臀荡乳欲伦亚洲一区| 94色蜜桃网一区二区三区| 艳妇臀荡乳欲伦亚洲一区| 欧美精品丝袜中出| 国产一区二区三区精品视频| 国产精品嫩草久久久久| 欧美在线三级电影| 久久国产精品72免费观看| 久久精品亚洲乱码伦伦中文| 成人开心网精品视频| 亚洲综合在线观看视频| 日韩欧美中文字幕精品| 成人激情电影免费在线观看| 亚洲图片有声小说| 精品国产三级a在线观看| 成人免费高清在线| 亚洲成人久久影院| 久久久午夜电影| 在线观看一区二区视频| 国产揄拍国内精品对白| 一区二区国产视频| 精品国产1区二区| 在线精品视频小说1| 国模冰冰炮一区二区| 一区二区在线观看不卡| 精品99一区二区| 欧美手机在线视频| 国产精品影音先锋| 天天综合网 天天综合色| 中文字幕精品一区二区精品绿巨人| 欧美性猛交一区二区三区精品| 9191国产精品| 国产激情视频一区二区在线观看| 亚洲成人福利片| 国产精品毛片无遮挡高清| 在线播放日韩导航| 91麻豆6部合集magnet| 国产精品一区二区在线看| 视频一区二区中文字幕| 亚洲色图欧美激情| 亚洲国产高清在线观看视频| 日韩三级电影网址| 欧美三级电影在线看| 99久久精品国产精品久久| 国产精品一线二线三线| 奇米综合一区二区三区精品视频 | 日韩欧美中文字幕公布| 色婷婷精品久久二区二区蜜臂av | 国产精品18久久久久久久久久久久 | 欧美国产乱子伦| 日韩午夜在线观看视频| 欧美三级电影精品| 色噜噜狠狠色综合欧洲selulu| 91精品国产综合久久小美女| 欧美中文字幕一区二区三区亚洲| 成人av影视在线观看| 国产精品自拍av| 国产一区二区三区四| 久久精品国产秦先生| 青草国产精品久久久久久| 午夜伦欧美伦电影理论片| 亚洲影视在线观看| 亚洲摸摸操操av| 亚洲蜜臀av乱码久久精品| 久久精品在这里| 国产亚洲一本大道中文在线| 久久无码av三级| 久久伊99综合婷婷久久伊| 精品国产一区二区三区不卡| 欧美电影免费提供在线观看| 日韩欧美国产精品一区| 日韩欧美电影一区| 欧美精品一区二区三区高清aⅴ | 国产精品香蕉一区二区三区| 国产乱码精品一区二区三区五月婷| 久久成人羞羞网站| 狠狠色丁香久久婷婷综| 国产精品自产自拍| www.激情成人| 日本高清成人免费播放| 欧美无乱码久久久免费午夜一区 | www.久久精品| 91欧美一区二区| 欧美无人高清视频在线观看| 欧美精品一二三四| 日韩一区二区三区电影| 久久日一线二线三线suv| 国产蜜臀97一区二区三区| 亚洲视频综合在线| 午夜精品久久久久久久久| 美腿丝袜亚洲色图| 国产成人综合精品三级| 一本在线高清不卡dvd| 欧美日韩免费观看一区三区| 日韩午夜在线影院| 国产精品亲子乱子伦xxxx裸| 亚洲精品国产视频| 午夜久久电影网| 免费在线成人网| 国产一区二区女| 91在线国产福利| 亚洲国产色一区| 老汉av免费一区二区三区| 国产91精品久久久久久久网曝门| 91影院在线免费观看| 欧美日韩精品欧美日韩精品一 | 黄色精品一二区| 北条麻妃一区二区三区| 在线电影院国产精品| 国产精品久久久久久久久搜平片| 午夜伊人狠狠久久| 成人一道本在线| 3d动漫精品啪啪| 亚洲久本草在线中文字幕| 久久精品国产精品亚洲精品| 91麻豆精品一区二区三区| 欧美一区二区人人喊爽| 中文字幕中文字幕一区二区| 日韩电影一区二区三区| 91在线云播放| 久久青草国产手机看片福利盒子| 亚洲黄色小视频| 国产成人在线看| 69p69国产精品| 亚洲乱码中文字幕| 国产精品1区2区3区| 欧美一区二区三区在线| 亚洲综合一区在线| 成人性视频网站| 日韩三区在线观看| 亚洲综合激情另类小说区| 国产成人午夜电影网| 欧美一区中文字幕| 亚洲影视在线播放| 99久久婷婷国产综合精品电影| 欧美成人福利视频| 亚洲va欧美va人人爽| 色综合天天综合狠狠| 国产欧美一二三区| 韩国女主播成人在线观看| 欧美一区二区三区不卡| 亚洲精品大片www| 成人av影视在线观看| 国产亚洲一本大道中文在线| 麻豆91精品91久久久的内涵| 欧美剧情电影在线观看完整版免费励志电影 | 精品国产sm最大网站免费看| 亚洲高清视频在线| 色综合久久久久综合| 中文字幕免费一区| 国产一区不卡精品| 久久午夜国产精品| 韩国成人精品a∨在线观看| 日韩欧美一区二区免费| 日韩在线a电影| 欧美日韩国产小视频| 亚洲va欧美va天堂v国产综合| 一本一本大道香蕉久在线精品 | 亚洲在线视频网站| 91麻豆精品在线观看| **欧美大码日韩| 97国产一区二区| 日韩久久一区二区| 91成人在线精品| 亚洲国产成人av| 7777精品伊人久久久大香线蕉经典版下载 | 久久午夜国产精品| 国产一区二区三区黄视频 | 久久人人爽人人爽| 国产乱码精品一区二区三区av| 亚洲精品一区二区三区蜜桃下载 | 国产午夜精品久久久久久免费视| 国内偷窥港台综合视频在线播放| 精品日韩av一区二区| 国产麻豆精品一区二区| 国产午夜久久久久| www.亚洲免费av| 亚洲猫色日本管| 欧美日韩成人高清| 美日韩黄色大片| 国产欧美一区二区精品仙草咪| aaa亚洲精品| 亚洲成人av中文| 日韩欧美综合一区| 成人av在线电影| 五月天久久比比资源色| www激情久久| 色先锋资源久久综合| 免费高清在线一区| 国产精品福利影院| 欧美日韩dvd在线观看| 韩国欧美国产1区|