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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? memory.c

?? RC522完整程序無需修改可放心使用
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include  "my_head.h"
#include  "mem_addr.h"
#include  "carddef.h"

//#define _DEBUG
#ifdef _DEBUG
#include "Debug.h"
#endif

/********************************************/
#define  MEM_CS     P1_4
#define  MEM_RDY    P1_3
#define  RESET      P1_2
//-------------------------------------------
#define  MYALL_FORBYTE_FLAG        45


#define  THE_BUFFER_ONE            0
#define  THE_BUFFER_TWO            1

#define  CONTINUE_ARREAD_ORDOR     0x68
#define  PAGE_ERASE_ORDOR          0x81
#define  BLOCK_ERASE_ORDOR         0x50

#define  BUFER1_WRIT_ORDOR         0X84
#define  BUFER1_TO_MAIN_ORDOR      0X83
#define  MAIN_TO_BUFER1_ORDOR      0X53
#define  BUFER1_READ_ORDOR         0x54

#define  BUFER2_WRIT_ORDOR         0X87
#define  BUFER2_TO_MAIN_ORDOR      0X86
#define  MAIN_TO_BUFER2_ORDOR      0X55
#define  BUFER2_READ_ORDOR         0x56
/*******************************************************
QUEUE_MEMPAGE  xdata  mem_rbuf;
QUEUE_MEMPAGE  xdata  mem_wbuf;
void  MemRbuf_Clear(void)
{
  memset(&mem_rbuf,0,sizeof(QUEUE_MEMPAGE));
  mem_rbuf.tail=mem_rbuf.head=mem_rbuf.buf;
}

void  MemWbuf_Clear(void)
{
  memset(&mem_wbuf,0,sizeof(QUEUE_MEMPAGE));
  mem_wbuf.tail=mem_wbuf.head=mem_wbuf.buf;
}
/*******************************************************/
const  BYTE     code   Default_Pwd[3]={0x11,0x11,0x11};
const  BYTE     code   YsnOysFlag_Str[]="jjyyonig20050428";
const  BYTE     code   MyReVision_Str[]="SonOllV1.00A";
const  BYTE     code   Con_Types_Str[] ="wyhjis";
Equip_Addr      pdata  equip_addr;  //={0x5A,0x11,111};
//Card_Info       pdata  mycard;
//Op_User_Info    xdata  op_user_info;//={{0x11,0x11,0x11},{0x11,0x11,0x11},0,0};
//Con_param_Info  xdata  con_param_info;
/*
={
9999900,
{0},
{0},
JC_MODE,//5
{0},
{0},
{0}
};
*/
SeedCard_Info   xdata  seedcard_info;
/*
={
 {0x11,0x11,0x11},
 {0x11,0x11,0x11},
 0x11,5,6,{0}
};
*/
Myall_SaveData  xdata  myall_savedata;
/*
={
CONSUME_RECORD_PAGEADDR,0,
CONSUME_RECORD_PAGEADDR,0,
CONSUME_RECORD_PAGEADDR,0
};
*/
Con_StatusInfo  xdata  con_statusinfo; //={0L,0L,0L,0L,0L,0L};
sttOtherTableInfo xdata stOtherTableInfo;
//Dc_Peoples      xdata  dc_peoples;     //={0,{0}};
BYTE            xdata  cardstate_time[6];//上一次成功下傳(卡狀態(tài))掛失卡組時的時間
/**************************************************************/
void  Init_Memory(void)
{
   MEM_RDY= 1;
   MEM_CS = 1;
   RESET  = 0; delay_ms(2); RESET  = 1;

#if(MCU_IC==SST564)  //EXTRAM = AUXR^2;
   AUXR  &= ~0x02;   //0: Internal Expanded RAM access.
#elif(MCU_IC==SM5964)//OME = SCONF^2;
   SCONF |= 0x02;    //1: default is enable.
#endif

   //MemRbuf_Clear();
   //MemWbuf_Clear();
   memset(&seedcard_info,0,sizeof(SeedCard_Info));//for  send card!
}


bit  SendMemoryData(BYTE *buf,int length)
{
   int  ii;
   Set_Timer20ms(3);
   while(!MEM_RDY)if(!Get_Timer20ms)return(FALSE);
   for(ii=0;ii<length;ii++)
   {
    MemSpiByte_SendReceive(buf[ii]);
   }
   return(TRUE);
}


bit  ReceiveMemoryData(BYTE *buf,int length)
{
   int   ii;
   Set_Timer20ms(3);
   while(!MEM_RDY)if(!Get_Timer20ms)return(FALSE);
   for(ii=0;ii<length;ii++)
   {
	buf[ii]=MemSpiByte_SendReceive(0xff);
   }
   return(TRUE);
}


bit  MomeryAddr_Trans(BYTE buf[4],BYTE ordor,WORD pageaddr,WORD byteaddr)
{
  if((pageaddr>MAX_PAGES-1)||(byteaddr>MEMPAGE_SIZE-1))return(FALSE);
  buf[0]    = ordor;
  pageaddr<<= 1;
  buf[1]    = (BYTE)(pageaddr/256);
  buf[2]    = (BYTE)(pageaddr%256);
  if((BYTE)(byteaddr/256))buf[2] |= 0x01;
  buf[3]    = (BYTE)(byteaddr%256);

  return(TRUE);
}


BYTE  Write_To_Buffer(void *ptr,int length,bit buffer,WORD byteaddr)
{
  BYTE  ordor,buf[4];
  if(buffer)ordor=BUFER2_WRIT_ORDOR;
  else      ordor=BUFER1_WRIT_ORDOR;
  if(!MomeryAddr_Trans(buf,ordor,0,byteaddr))return(MEMADDR_ERR);

  MEM_CS = 0;
  if(!SendMemoryData(buf,4))return(MEMWRITE_ERR);
  if(!SendMemoryData(ptr,length))return(MEMWRITE_ERR);
  MEM_CS = 1;

  //SendStr(buf,4);
  return(SUCCESS);
}


BYTE  Buffer_To_Mem(bit buffer,WORD pageaddr)
{
  BYTE  ordor,buf[4];
  if(buffer)ordor=BUFER2_TO_MAIN_ORDOR;
  else      ordor=BUFER1_TO_MAIN_ORDOR;
  if(!MomeryAddr_Trans(buf,ordor,pageaddr,0))return(MEMADDR_ERR);

  MEM_CS = 0;
  if(!SendMemoryData(buf,4))return(MEMWRITE_ERR);
  MEM_CS = 1;
  
  delay_ms(18);//must!
  //SendStr(buf,4);
  return(SUCCESS);
}


BYTE  Mem_To_Buffer(bit buffer,WORD pageaddr)
{
  BYTE  ordor,buf[4];
  if(buffer)ordor=MAIN_TO_BUFER2_ORDOR;
  else      ordor=MAIN_TO_BUFER1_ORDOR;
  if(!MomeryAddr_Trans(buf,ordor,pageaddr,0))return(MEMADDR_ERR);

  MEM_CS = 0;
  if(!SendMemoryData(buf,4))return(MEMWRITE_ERR);
  MEM_CS = 1;

  delay_ms(1);//must!
  //SendStr(buf,4);
  return(SUCCESS);
}


BYTE  Read_From_Buffer(void *ptr,int length,bit buffer,WORD byteaddr)
{
  BYTE  ordor,buf[5];
  if(buffer)ordor=BUFER2_READ_ORDOR;
  else      ordor=BUFER1_READ_ORDOR;
  if(!MomeryAddr_Trans(buf,ordor,0,byteaddr))return(MEMADDR_ERR);

  buf[4] = 0;
  MEM_CS = 0;
  if(!SendMemoryData(buf,5))return(MEMWRITE_ERR);//must "5"!!
  if(!ReceiveMemoryData(ptr,length))return(MEMREAD_ERR);
  MEM_CS = 1;

  //SendStr(buf,5);
  return(SUCCESS);
}


BYTE  Memory_ArrayRead(void *ptr,int length,WORD pageaddr,WORD byteaddr)
{
  BYTE  buf[8];
  if(!MomeryAddr_Trans(buf,CONTINUE_ARREAD_ORDOR,pageaddr,byteaddr))
     return(MEMADDR_ERR);

  buf[7] = buf[6] =buf[5] =buf[4] =0;
  MEM_CS = 0;
  if(!SendMemoryData(buf,8))return(MEMWRITE_ERR);
  if(!ReceiveMemoryData(ptr,length))return(MEMREAD_ERR);
  MEM_CS = 1;

  //SendStr(buf,8);
  return(SUCCESS);
}


BYTE  Memory_PageErase(WORD startpage,BYTE pages)
{
  BYTE  i, buf[4];
  for(i=0;i<pages;i++,startpage++)
  {
   if(!MomeryAddr_Trans(buf,PAGE_ERASE_ORDOR,startpage,0))return(MEMADDR_ERR);

   MEM_CS = 0;
   if(!SendMemoryData(buf,4))return(MEMWRITE_ERR);
   MEM_CS = 1;
   delay_ms(12);//must!!
  }

  //SendStr(buf,4);
  return(SUCCESS);
}

//==============以上為基本函數(shù)============================================

BYTE  Save_ConData_to_Memory(Con_Record  *con_record)
{
  int   ii,jj;
  WORD  save_page;

#ifdef _DEBUG
	DebugString("Begin Save Record,Current Data:\r\n");
	DebugData(sizeof(Con_Record),sizeof(Con_Record),(unsigned char *)con_record);
#endif
  if(!mymem_ok_flag)return(MEM_IC_ERR);

  if(myall_savedata.conbuffer2_byte+sizeof(Con_Record) < MEMPAGE_SIZE)
    {
#ifdef _DEBUG
	DebugString("Current Data in one page\r\n");
	DebugString("Current myall_savedata.conbuffer2_byte=");
	DebugData(2,2,(unsigned char *)&myall_savedata.conbuffer2_byte);
#endif
     if((ii=Write_To_Buffer(con_record,sizeof(Con_Record),THE_BUFFER_TWO,myall_savedata.conbuffer2_byte))!=SUCCESS)
	   {
	    return(ii);//goto END;
	   }
	 myall_savedata.conbuffer2_byte += sizeof(Con_Record);
#ifdef _DEBUG
	DebugString("After Edit, myall_savedata.conbuffer2_byte=");
	DebugData(2,2,(unsigned char *)&myall_savedata.conbuffer2_byte);
#endif

	 return(SUCCESS);
	}

#ifdef _DEBUG
	DebugString("Current Data in two page\r\n");
#endif
  save_page = myall_savedata.conwrite_page;
  if(++myall_savedata.conwrite_page > (MAX_PAGES-1))
    {
     //SendStr("1",1);
	 //SendStr((BYTE *)&myall_savedata.conwrite_page,2);
	 myall_savedata.cycle_flag    = MYALL_FORBYTE_FLAG; //數(shù)據(jù)循環(huán)標(biāo)志。(最大可恢復(fù)點(diǎn))
     myall_savedata.conwrite_page = CON_RECORD_START_PAGEADDR;
	}
  if(myall_savedata.conwrite_page == myall_savedata.conread_page)
    {//數(shù)據(jù)頁滿
	 //SendStr("2",1);
	 //SendStr((BYTE *)&myall_savedata.conread_page,2);
	 myall_savedata.conwrite_page=save_page;
     Equip_CurStatus = MEM_FULL_ARALM;
     return(MEM_FULL_ARALM);//如果不這樣下面將可能只寫入一半記錄!!!
	}

  jj = (MEMPAGE_SIZE-1)-myall_savedata.conbuffer2_byte;
  if((ii=Write_To_Buffer(con_record,jj,THE_BUFFER_TWO,myall_savedata.conbuffer2_byte))!=SUCCESS)
    {
      return(ii);//goto END;
    }
  Buffer_To_Mem(THE_BUFFER_TWO,save_page);//寫入FLASH!

  myall_savedata.conbuffer2_byte = sizeof(Con_Record)-jj;//如果不這樣,滿時就會多讀出一些數(shù)據(jù)!
  Write_To_Buffer(((BYTE*)con_record)+jj,myall_savedata.conbuffer2_byte,THE_BUFFER_TWO,0);

  /************************************************************************/
  //計算所剩空間,mem will full --提前告警。
  if(myall_savedata.conwrite_page > myall_savedata.conread_page)
    {
	   ii =((MAX_PAGES-1)-myall_savedata.conwrite_page)+(myall_savedata.conread_page-CON_RECORD_START_PAGEADDR);
	}
  else ii =myall_savedata.conread_page - myall_savedata.conwrite_page;

  if(ii<MYALL_FORBYTE_FLAG)
    {
     Dis_DataFull_Led(TRUE);
     Equip_CurStatus=MEM_WILLFULL_WARNING;
     return(MEM_WILLFULL_WARNING);//goto END;
    }

  return(SUCCESS);
}


BYTE  Read_ConData_From_Memory(Con_Record  *con_record)
{
  int  ii,jj;
  if(!mymem_ok_flag)return(MEM_IC_ERR);

  //SendStr("1",1);//for test!
  //SendStr(uartSbuf,7);//for test!
  if(myall_savedata.lread_page == myall_savedata.conwrite_page)
  {
   if(myall_savedata.lread_byte+sizeof(Con_Record) > myall_savedata.conbuffer2_byte)
     {//沒有消費(fèi)數(shù)據(jù)
	  //myall_savedata.lread_byte = myall_savedata.conbuffer2_byte;//理論上是沒必要的!
      return(NO_CON_RECORD);//ii=NO_CON_RECORD;goto END;
	 }
   //SendStr("2",1);//for test!
   //SendStr(uartSbuf,7);//for test!
   if((ii=Read_From_Buffer(con_record,sizeof(Con_Record),THE_BUFFER_TWO,myall_savedata.lread_byte))!=SUCCESS)
	 {
      return(ii);//goto END;
	 }
   //SendStr("3",1);//for test!
   //SendStr(uartSbuf,7);//for test!
   myall_savedata.lread_byte += sizeof(Con_Record);

   return(SUCCESS);
  }
  //==============================================================
  //SendStr("4",1);//for test!
  //SendStr(uartSbuf,7);//for test!
  if(myall_savedata.lread_byte+sizeof(Con_Record) < MEMPAGE_SIZE)
  {
   if((ii=Memory_ArrayRead(con_record,sizeof(Con_Record),myall_savedata.lread_page,myall_savedata.lread_byte))!=SUCCESS)
	 {
	   return(ii);//goto END;
	 }
   myall_savedata.lread_byte += sizeof(Con_Record);

   return(SUCCESS);
  }

  //SendStr("5",1);//for test!
  //SendStr(uartSbuf,7);//for test!
  jj = (MEMPAGE_SIZE-1)-myall_savedata.lread_byte;
  if((ii=Memory_ArrayRead(con_record,jj,myall_savedata.lread_page,myall_savedata.lread_byte))!=SUCCESS)
    {
     return(ii);//goto END;
    }
  //SendStr("6",1);//for test!
  //SendStr(uartSbuf,7);//for test!
  //SendStr((BYTE *)&myall_savedata.lread_byte,2);//for test!
  //SendStr((BYTE *)&jj,2);//for test!
  if(++myall_savedata.lread_page>(MAX_PAGES-1))
    {
     myall_savedata.lread_page = CON_RECORD_START_PAGEADDR;
	}

  myall_savedata.lread_byte = sizeof(Con_Record)-jj;
  if(myall_savedata.lread_page == myall_savedata.conwrite_page)
    {//我烤,為了一個(BYTE*)花了老子三四天時間!!慘慘!!!
     ii=Read_From_Buffer(((BYTE*)con_record)+jj,myall_savedata.lread_byte,THE_BUFFER_TWO,0);
	}
  else
    {
	 ii=Memory_ArrayRead(((BYTE*)con_record)+jj,myall_savedata.lread_byte,myall_savedata.lread_page,0);
    }
  //SendStr("7",1);//for test!
  //SendStr(uartSbuf,7);//for test!
  //SendStr((BYTE *)&myall_savedata.lread_byte,2);//for test!
  //SendStr((BYTE *)&jj,2);//for test!
  return(ii);
}


BYTE  Del_ConData_From_Memory(Con_Record  *con_record)
{
  int  ii,jj;
  if(!mymem_ok_flag)return(MEM_IC_ERR);

  if(myall_savedata.conread_page==myall_savedata.conwrite_page)
  {
   if(myall_savedata.conread_byte+sizeof(Con_Record) > myall_savedata.conbuffer2_byte)
     {//沒有消費(fèi)數(shù)據(jù)
	  //myall_savedata.conread_byte = myall_savedata.conbuffer2_byte;//理論上是沒必要的!
      return(NO_CON_RECORD);//ii=NO_CON_RECORD;goto END;
	 }
   if((ii=Read_From_Buffer(con_record,sizeof(Con_Record),THE_BUFFER_TWO,myall_savedata.conread_byte))!=SUCCESS)
	 {
      return(ii);//goto END;
	 }
   myall_savedata.conread_byte += sizeof(Con_Record);
   
   return(SUCCESS);
  }

  //===============================================================
  if(myall_savedata.conread_byte+sizeof(Con_Record) < MEMPAGE_SIZE)
	{
	 if((ii=Memory_ArrayRead(con_record,sizeof(Con_Record),myall_savedata.conread_page,myall_savedata.conread_byte))!=SUCCESS)
	   {
		return(ii);//goto END;
	   }
	 myall_savedata.conread_byte += sizeof(Con_Record);

	 return(SUCCESS);
    }

  jj = (MEMPAGE_SIZE-1)-myall_savedata.conread_byte;
  if((ii=Memory_ArrayRead(con_record,jj,myall_savedata.conread_page,myall_savedata.conread_byte))!=SUCCESS)
    {
     return(ii);//goto END;
    }

  if(++myall_savedata.conread_page>(MAX_PAGES-1))
    {
     myall_savedata.conread_page = CON_RECORD_START_PAGEADDR;
	}

  myall_savedata.conread_byte = sizeof(Con_Record)-jj;
  if(myall_savedata.conread_page==myall_savedata.conwrite_page) //關(guān)鍵點(diǎn)!!
    {
     ii =Read_From_Buffer(((BYTE*)con_record)+jj,myall_savedata.conread_byte,THE_BUFFER_TWO,0);
	}
  else
    {
	 ii =Memory_ArrayRead(((BYTE*)con_record)+jj,myall_savedata.conread_byte,myall_savedata.conread_page,0);
    }
  if(ii!=SUCCESS)return(ii);
  /************************************************************************
  //mem will full --提前告警。
  if(myall_savedata.conwrite_page>myall_savedata.conread_page)
    {
	 ii=((MAX_PAGES-1)-myall_savedata.conwrite_page)+(myall_savedata.conread_page-CON_RECORD_START_PAGEADDR);
	}
  else ii=myall_savedata.conread_page-myall_savedata.conwrite_page;

  if(ii>MYALL_FORBYTE_FLAG)
  {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区黄色| 国产精品私人影院| 精品视频一区 二区 三区| 欧美色图激情小说| 欧美日韩一级大片网址| 91精品国产手机| 日本一区二区视频在线| 亚洲大尺度视频在线观看| 精品在线播放免费| 在线亚洲精品福利网址导航| 欧美乱妇15p| 国产精品久久看| 亚洲成av人片| gogo大胆日本视频一区| 欧美一级免费大片| 亚洲自拍偷拍网站| av成人免费在线| 久久精品亚洲精品国产欧美| 亚洲精品水蜜桃| 国产91清纯白嫩初高中在线观看| 欧美亚洲免费在线一区| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲综合激情网| 成人a区在线观看| 国产日韩视频一区二区三区| 美女网站色91| 欧美日本一区二区在线观看| 亚洲愉拍自拍另类高清精品| 不卡一区在线观看| 国产喷白浆一区二区三区| 国产一区二区0| 久久在线免费观看| 国产在线视视频有精品| 久久综合成人精品亚洲另类欧美| 日本欧美加勒比视频| 3d成人动漫网站| 免费xxxx性欧美18vr| 2023国产精品视频| 成人av网站在线| 一区二区三区电影在线播| 欧美午夜精品久久久久久孕妇| 亚洲综合无码一区二区| 欧美一区二区三区四区久久| 美女网站在线免费欧美精品| 中文字幕一区二区三| 亚洲3atv精品一区二区三区| 国产亚洲欧美日韩俺去了| 九九国产精品视频| 欧美精品一区二区三区视频| 蜜桃一区二区三区在线观看| 中文字幕av一区 二区| 欧洲一区二区av| 国产电影精品久久禁18| 亚洲国产cao| 亚洲视频中文字幕| 精品国产凹凸成av人网站| 波多野结衣欧美| 亚洲欧美另类小说| 国产精品国产三级国产专播品爱网| 欧美午夜一区二区三区| 99久久婷婷国产| 成人av小说网| 国产a视频精品免费观看| 极品少妇一区二区| 亚洲成人在线免费| 亚洲精品久久7777| 亚洲欧洲在线观看av| 久久精品免视看| 久久久久国产精品厨房| 精品日韩欧美一区二区| 日韩一区二区不卡| 国产欧美日韩精品一区| 欧美精品高清视频| 宅男在线国产精品| 欧美日韩一区视频| 日本道色综合久久| 在线精品观看国产| 欧美三级三级三级| 91精选在线观看| 日韩午夜小视频| 亚洲国产成人午夜在线一区| 欧美成va人片在线观看| 欧美一卡在线观看| 久久久青草青青国产亚洲免观| 日韩欧美中文字幕一区| 精品免费一区二区三区| 国产日韩精品一区二区三区| 国产精品久久久久久久久搜平片| 中文成人av在线| 一区二区三区在线观看欧美| 亚洲第一搞黄网站| 男女性色大片免费观看一区二区| 日本欧美大码aⅴ在线播放| 韩国av一区二区三区在线观看| 韩国午夜理伦三级不卡影院| 成人午夜又粗又硬又大| 欧美日韩亚洲综合在线| 欧美xxxxxxxx| 综合婷婷亚洲小说| 免费精品视频最新在线| 99视频热这里只有精品免费| 欧美精品日韩精品| 中文字幕一区日韩精品欧美| 青青草视频一区| www.爱久久.com| 久久天天做天天爱综合色| 一区二区三区免费看视频| 蜜臀av在线播放一区二区三区| 成人高清视频在线观看| 久久综合色播五月| 日本不卡一区二区三区| 在线欧美日韩国产| 一区二区三区四区高清精品免费观看 | 蜜臀久久99精品久久久久宅男 | 久久蜜桃香蕉精品一区二区三区| 午夜欧美在线一二页| 在线观看一区不卡| 中文字幕亚洲区| 高清国产午夜精品久久久久久| 日韩一级片网址| 麻豆91在线观看| 久久久久久毛片| 国产成人aaa| **性色生活片久久毛片| 99v久久综合狠狠综合久久| 亚洲国产高清不卡| 91视频免费播放| 亚洲一区在线视频观看| 欧美日韩日日骚| 三级一区在线视频先锋 | 一区二区三区91| 欧美情侣在线播放| 久久99国产精品久久99果冻传媒| 67194成人在线观看| 国产不卡视频在线播放| 一区二区在线免费| 欧美一区二区女人| 成人免费视频app| 一区二区三区四区激情| 欧美一区二区三区影视| 国产精品一区二区久久精品爱涩 | 高清不卡一区二区| 一区二区三区在线播| 日韩一卡二卡三卡| 色综合久久综合网97色综合| 日本在线观看不卡视频| 国产精品麻豆视频| 91精品国产色综合久久ai换脸 | 欧美大片免费久久精品三p| 国产成人精品免费| 日韩精品福利网| 久久久99久久精品欧美| 欧美熟乱第一页| 99久久综合精品| 国产精品一区二区在线看| 午夜精品久久久久久久99水蜜桃| 26uuu亚洲| 日韩美女视频在线| 欧美三级视频在线播放| 成人国产精品免费观看视频| 国产一区二区0| 国产精品888| 国产成人精品一区二| 国产真实乱偷精品视频免| 捆绑紧缚一区二区三区视频 | 91精品黄色片免费大全| 欧美日韩中文字幕精品| 日韩欧美国产系列| 日韩亚洲欧美综合| 精品国产1区2区3区| 精品国产麻豆免费人成网站| 91精品国产综合久久久蜜臀粉嫩| 欧美精品一区二区三区蜜臀 | 黑人精品欧美一区二区蜜桃| 美女看a上一区| 国产一区二区三区在线观看免费 | 亚洲不卡av一区二区三区| 五月天欧美精品| 国产在线乱码一区二区三区| 国产**成人网毛片九色| 99精品欧美一区| 在线播放亚洲一区| 精品国产一区二区三区四区四| 国产三区在线成人av| 综合欧美一区二区三区| 亚洲第一狼人社区| 国产成人自拍网| 欧美色视频在线| 久久久久久久久97黄色工厂| 成人免费一区二区三区视频 | 欧美在线不卡一区| 亚洲国产sm捆绑调教视频 | 欧美主播一区二区三区| 制服丝袜成人动漫| 国产精品欧美一区二区三区| 蜜桃视频一区二区三区在线观看| 亚洲猫色日本管| 91国产免费看| 亚洲影院理伦片| 色偷偷一区二区三区|