《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 如何在SDL中調用C語言函數

如何在SDL中調用C語言函數

2008-10-09
作者:段紅光 羅一靜

  摘? 要: 從實際工作出發,提出了在SDL中調用C語言函數的必要性,并給出了SDL語言中使用C語言數據類型、公共變量以及調用C語言函數的方法。這種方法具有很強的實用性,大大提高了工作效率,加快了實時多任務系統" title="多任務系統">多任務系統應用軟件的開發。此方法實際應用于第三代移動通信系統TD-SCDMA" title="TD-SCDMA">TD-SCDMA高層信令" title="信令">信令的開發,收到了良好效果。

  關鍵詞: 進程? SDL? 實時多任務系統? TD-SCDMA? C語言函數? 數據類型? 公共變量

?

  SDL(Specification and Description Language)是CCITT推薦的規范描述語言。經過ITU-T的發展和標準化,定義在藍皮書Z.100建議中。1988年推出第一個正式版,以后每四年進行一次增補更新。作為國際標準化的正式語言,用來規范描述實時系統。目前SDL-2000是SDL最新版本。作為SDL相關技術Z.120建議——消息序列圖MSC(Message Sequence Charts)和Z.105建議——抽象語法符號ASN.1(Abstract Syntax Notation One)和SDL一起形成一個完整的描述語言。本文中介紹的SDL軟件由Telelogic Tau AB公司提供。

  在協議軟件的開發流程中,SDL應用在系統規范描述和設計階段。它完全獨立于硬件實現和操作系統。Telelogic Tau公司提供的SDL軟件不僅可以用于規范描述和設計,它還可以把SDL的描述和設計直接生成標準的C代碼;用戶也可以直接在SDL描述和設計中嵌入C代碼,從而完成部分功能。經SDL描述產生的C代碼(包括嵌入的C代碼)可以直接與多種嵌入式(或非嵌入式)實時多任務操作系統(RTOS)集成,如NUCLUES、pSOS、Solaris、Vrtx、OSE等。集成后的代碼可以直接在目標板上運行,從而方便用戶進行協議軟件的開發。

  雖然SDL軟件具有很強的開發功能,但是在重慶郵電學院信科公司的TD-SCDMA系統高層信令的二三層開發中,也遇到了許多問題,主要有:

  (1)由于TD-SCDMA系統的高層信令是由幾個部門共同負責的,除了二三層以外還有MMI和物理層控制部分的軟件,不可能將各個部門統一使用SDL軟件共同完成系統的信令開發工作。每個部門最終提供的應該是標準的C語言源代碼" title="源代碼">源代碼,最后在實時操作系統上集成。利用SDL軟件生成的C源代碼,不便于和其它部分的代碼相互集成。

  (2)高層二三層信令是一個很復雜的系統,各個進程之間需要大量的數據交換,而SDL要求所有進程間的數據交流必須通過信號來完成(雖然可以使用SDL的VIEW功能,但使用不方便)。在系統啟動后,很多數據需要進行通信,系統資源將被白白浪費在通信上面。

  但是SDL的測試功能特別強大,可以從不同角度對SDL描述進行測試,發現錯誤及時返回進行修改。如果沒有SDL的TTCN測試,所有設計結果在硬件平臺上測試將困難重重,即使可以對硬件平臺運行結果進行跟蹤,也始終沒有TTCN測試結果MSC圖方便。并且SDL可以對系統任何部分獨立測試。在SDL設計結果和RTOS系統集成之前,基本保證了SDL設計階段的正確性,減少了繁瑣的板級代碼調試,從而可在較短時間內將SDL設計結果移植到硬件工作平臺,提高了工作效率。

  為了SDL軟件的設計結果既可以被SDL軟件的TTCN測試又可以直接和其它C語言源代碼集成,必須解決一個問題——如何在SDL中調用C語言函數。

1 實現模式

  SDL內核對SDL進程的管理采用了消息驅動事件的方法,SDL內核對SDL進程的調度是根據消息隊列中的消息來進行的。如圖1,表明了SDL進程、SDL內核和SDL信號隊列的關系。

?

?

  SDL圖形描述轉換成C源代碼,沒有系統(system)和功能塊(block)的概念,只有進程和通信,它們由SDL內核程序管理和協調。在各個進程間沒有全局變量,所有的數據交換都要通過信號來傳遞。一個進程要發送信號到另外一個進程,需要先發送到SDL信號隊列中等待SDL內核程序的處理。

  在實時多任務系統的編程中,最關心的是狀態的劃分和在什么狀態下收到什么信號以及做何種處理。所以在SDL中,應該利用標準C語言源代碼對數據、信號定義并對收到的信號進行處理。要求這部分代碼既能在SDL中進行測試又可以在實時操作系統中使用。

  在整個開發過程中,始終堅持這樣一個原則,利用SDL來劃分通信模塊,在協議中規定的原語盡量用信號來傳遞,而非標準的信息則使用公共變量,進程的代碼利用C語言來實現;最后利用TTCN進行全面的" title="面的">面的測試。在TD-SCDMA信令設計中證實這種設想可行。圖2就是TD-SCDMA系統部分高層軟件的開發模式圖。

?

?

  在開發的初始階段,根據TD-SCDMA系統協議TSM,考慮將系統劃分成多少個進程,各進程間需要哪些信號及全局變量數據,然后定義數據類型、編寫C語言源代碼。所有C源代碼是按照在什么狀態下接收什么信號,處理以后發送什么信號格式來完成。這樣編寫的代碼既可以在RTOS中應用,又可以滿足SDL的要求,方便TTCN的測試。如圖2利用標準C完成的源代碼可以和SDL相互集成,并且進行TTCN測試;同時又可以和RTOS系統集成,在實際硬件環境中運行。

  完成的C語言源代碼,經過TTCN測試后,保證了信號處理的正確性。在軟件開發后期,只需根據協議變換作適當的程序修改和C語言源代碼的移植即可。

  在SDL的說明文檔中,提到了怎樣將C語言函數應用于SDL系統;但是這種方法經過多次實驗效果均不理想,即使能夠實現也是受到諸多限制。所以舍棄了SDL提供的方法,最終找到了一種切實可行的方法,方法如3小節描述。

2 實現過程

  C源代碼不能直接在SDL中使用。首先應該利用sdth2sdl.exe軟件將C語言的頭文件轉換成SDL的文本描述(PR描述),如圖3。然后在SDL的Organizer界面中,將文本描述轉換成圖形描述方式,它以SDL的SUN文件形式存在。最后在設計的SDL系統中利用use關鍵字聲明即可。具體如下:

  (1)利用sdth2sdl.exe程序轉換C語言頭文件。sdth2sdl.exe是Telelogic Tau AB公司提供的可執行文件。在使用該文件時,需要操作系統裝有MSC7.00 或是MSVC++編譯器(不能是Borland C編譯器)。sdth2sdl.exe自動調用標準C的編譯器,進行C語法檢查,再將C部分代碼轉化成SDL的PR格式。sdth2sdl.exe只檢查頭文件的數據類型、數據定義以及函數的聲明。在該過程中,不檢查具體C語言函數的語法。實際上,C語言函數不能直接轉換成SDL的圖形描述或文本描述方式。

  為了方便使用sdth2sdl工具,sdth2sdl是一個可以帶參數的DOS程序,格式為:

  sdth2sdl? [參數選項]? 要轉換的C語言頭文件

  它的參數選項如表1。在實際應用中,最常用的參數選項有n、s、I三個參數選項。

  (2)將SDL的PR文件轉換成GR方式。利用SDTH2SDL

  程序生成一個以PR為擴展名的SDL Package文件。在SDL的Organizer界面的Generate菜單中有“Convert to GR ...”選項,利用SDL的Convert to GR對話框完成PR文件到GR格式的轉換。生成的SDL Package文件的名字是SDL PR描述內部指定的名字。

  (3)在SDL系統中聲明。在SDL進程中,不能直接使用C語言的數據類型、變量定義和函數,上面生成的是SDL Package文件,需要在system中利用SDL關鍵字use加以聲明。格式為use package文件名。

  這樣可以在SDL進程中任意使用C語言頭文件的函數、數據類型及變量。雖然這些定義在SDL中都可以使用,但是它們還必須遵守SDL調用C變量和函數的規則。

 ?、僮兞空{用

  由于SDL可以調用C語言函數,基本上系統所有的處理由C語言函數來完成。所以在SDL和C源代碼所用的公共變量很少,僅僅只有一些SDL專用的數據,例如控制SDL的分支等。調用格式為:

  變量賦值: Call Set_變量名

  去變量值: Call Get_變量名

 ?、跀祿愋鸵?

  雖然整個系統的任務在C源代碼中完成,但是在進行信號處理時,SDL需要保存信號到變量中(SDL描述要求),信號類型在C語言中定義。C語言數據類型轉換成SDL數據類型時,保持了原來的數據類型名字,在SDL中只要按照SDL規則定義數據即可。

 ?、酆瘮嫡{用

  C語言函數的調用和變量調用、數據類型引用基本相同,需要注意的是函數的參數。

調用格式: Call 函數名字(函數需要的實參)

  由于C語言編寫的C函數中可以使用全局變量,大大方便了C語言在SDL中的應用,需要處理的公共數據可以不以SDL信號方式進行傳遞。例如在TD-SCDMA高層信令的設計中,小區信息以及系統消息是很多進程都需要使用的,就可以作為全局變量使用。

3 舉例說明

  下面的例子是在空閑狀態下收到來自物理層的測量報告IdleNcellMeasInd信號和發送到物理層進行小區BSIC解讀的BsicDecodeReq請求信號。將分以下幾個步驟來說明:

  (1) C語言頭文件trr.h的編寫

所有在SDL中調用到的數據類型、全局變量和函數必須在C語言頭文件中聲明,只有聲明過的才能在SDL中調用或引用。在頭文件中可以使用任何標準C語法。在下面的頭文件中,由于篇幅關系,沒有給出詳細的下級數據類型的定義。

  #ifndef __TRR__

  #define __TRR__

  typedef struct MessageHeader

  }

??????????? int? header;         ?? /*實時操作系統的數據頭,不同的RTOS的T_MsgHeaher定義不相同*/

  { T_MessageHeader;

  typedef struct t_IdleNcellMeasIndTag

  }

??????????? int? numMeas;??? ????????????????? /*鄰近小區數*/

??????????? NcellList? ncellList;??? ????????? /*鄰近小區標識表*/

??????????? int rscpLevelList[MAX_NCELL]; ???? /*鄰近小區功率測量結果*/

  { T_IdleNcellMeasInd;

  typedef struct h_t_IdleNcellMeasInd

  }

??????????? T_MessageHeader signalHeader;??    /*實時多任務系統頭標識*/

??????????? T_IdleNcellMeasInd IdleNcellMeasInd;? /*鄰近小區測量數據*/

  { H_T_IdleNcellMeasInd;

  typedef struct t_BsicDecodeReqTag

  }

??????????? NcellNccDecode? ncc;???      ?? /*鄰近小區BSIC數據*/

  {T_BsicDecodeReq;

  typedef struct h_t_BsicDecodeReq

  }

??????????? T_MsgHeader ????? signalHeader;

??????????? T_BsicDecodeReq?? BsicDecodeReq;

  { H_T_BsicDecodeReq;

  extern H_T_IdleNcellMeasInd? s_trr_IdleNcellMeasInd;?

??????????????????????????????????????????????????????? /*接收處理的變量*/

  extern H_T_BsicDecodeReq??? s_trr_BsicDecodeReq;

? ???????????????????????????????????????????????????? /*需要發送的變量*/

  int trr03_01IdleNcellMeasInd(H_T_IdleNcellMeasInd *p);

???????????????????????????????????????????????? /*收到測量的處理程序*/

  /*#include ″trr.c″*/

  #endif

  在trr.h中,使用sdth2sdl時應該將#include “trr.c”屏蔽,不需要將trr.c文件編譯和轉換成SDL的文本描述。但在生成SDL的TTCN或Simulator、Validator的可執行文件時,需要將C語言屏蔽符/* */去掉。這樣在生成可執行文件時,SDL將trr.c定義的內容和SDL描述直接匯合編譯連接在一起。

  (2) C語言函數trr.c的編寫

  在C語言頭文件中聲明的全局變量和函數實體都是在C源代碼中定義的。在trr.c文件中定義s_trr_IdleNcellMeasInd、s_trr_BsicDecodeReq全局變量和int trr03_01IdleNcellMeasInd()函數。C語言函數不直接轉換成SDL描述,可以支持標準C語言的所有使用方法。

  #include “trr.h”

  H_T_IdleNcellMeasInd s_trr_IdleNcellMeasInd;

?????? ????????????????????????????????? /*定義接收信號的變量*/

  H_T_BsicDecodeReq? s_trr_BsicDecodeReq;

? ?????????????????????????????????????? /*定義發送信號的變量*/

  int trr03_01IdleNcellMeasInd(H_T_IdleNcellMeasInd *p)

  }

???? ?? int tempCount;

??????  int rscp[MAX_NCELL];

??????  s_trr_BsicDecodeReq.signalHeader= p->signalHeader;

??????  rscp[tempCount] = p-> IdleNcellMeasInd. RscpLev-

???????????? elList[tempCount]; ????????????????? /*保存測量*/

??????  s_trr_BsicDecodeReq.BsicDecodeReq.ncc.numMeas=10;

  for(tempCount=0;tempCount

  }

???????? s_trr_BsicDecodeReq.BsicDecodeReq.ncc.frequency

???????????????????? NUM_NCELLS]=tempCount;

???????? s_trr_BsicDecodeReq. BsicDecodeReq.ncc.syncCode

????  ????????????? [NUM_NCELLS]=tempCount;

???????? s_trr_BsicDecodeReq. BsicDecodeReq.ncc.syncDiff

???????????????????? [NUM_NCELLS]=tempCount;

  {

  return TRR_IDL;? /* # define TRR_IDL 1*/

  {? /*函數的返回值表明是否需要發送BsicDecodeReq信號*/

  在該例子中,函數返回值決定了是否需要發送BsicDecodeReq信號到物理層。利用這種方法可以確定SDL描述的分支處理。

  (3) sdth2sdl的使用

  編寫完成trr.h文件后,就可以將trr.h文件轉換成SDL的文本描述,在DOS系統提示符下執行下列命令:

  sdth2sdl -n trr -s c:td_scdmaprtsm_trr.pr -o ″-Ic:bc5include -Ic:tdscdmatrrinclude″ trr.h

  在編譯過程中,如果C語言源代碼編寫不正確,將有錯誤提示。必須根據提示修正所有的錯誤(每個頭文件的最后一行必須是空行),直到生成正確的tsm_rr.pr文件。在tsm_rr.pr文件中指明了SDL package的名字為trr。最后利用SDL Organizer的PR轉換到GR工具,生成trr.sun文件。

  (4) SDL進程的調用

  C語言在SDL中應用最終在進程中實現。根據SDL的要求,接收信號必須先保存到一個變量中,例如收到IdleNcellMeasInd信號必須先保存在tempReceiveSignal變量中;然后調用trr03_01IdleNcellMeasInd()來處理該信號,并在該處理過程中產生BsicDecodeReq信號的內容s_trr_BsicDecodeReq,由SDL發送出去。如圖4。

?

?

  在實時多任務系統中,為了提高系統的工作效率,常常用傳遞指針的方式傳遞信號,所以在上例中int trr03_01IdleNcellMeasInd()的形參是一個C語言指針的形式。在C語言轉換成SDL時,雖然可以將數據類型轉換成SDL的數據類型格式,但是在SDL中不便直接定義指針,所以將接收的信號定義成一個與函數形參相同的數據類型變量,利用SDL的“&”取地址符號,將變量轉換成指針使用。在該例中,Call trr03_01IdleNcellMeasInd(&tempReceiveSignal)。其它請參考圖4。

  并不是所有的設計代碼都可以由C語言來完成,SDL信號的發送和接收機制、時鐘處理只能由SDL自己處理。其實這部分對不同的RTOS系統是不相同的,所以必須利用C語言的預編譯開關將它們分開,對不同系統作不同的編寫。

  這種利用SDL調用C語言函數進行通信軟件的開發是根據實際工作需要提出的,雖然不能保證是最好的方法,但是經過長期的研究和探索,在實際中的應用充分表明了這種方法是切實可行的。TD-SCDMA系統的高層信令二三層就是利用這種方法完成的。

?

參考文獻

1 Telelogic tau AB.Telelogic tauTM SDL suite 4.0 Getting Started. 2001

2 Telelogic tau AB.Telelogic tauTM SDL suite 4.0 Methodology Guidelines.2001

3 CWTS.TSM 04.08 Mobile radio interface layer 3 specification. V2.2.0.2002

4 Nucleus company.Nucleus PLUS internals.Accelerated Technology.2000, 0001027-001 Rev 101

5 Nucleus company.Nucleus PLUS Reference Manual. 2000,?0001026-001 Rev.102

6 Nucleus company.ARM Developer Suite Nucleus Target?Specific Notes.2000, 0001000-001 Rev.108

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          在线综合亚洲| 一区二区欧美精品| 国产一本一道久久香蕉| 亚洲欧美激情视频| 欧美精品福利在线| 国产综合久久久久久鬼色| aa级大片欧美| 亚洲一二三四久久| 国产精品捆绑调教| 国产精品久久毛片a| 久久亚洲欧洲| 一区二区三区精品在线| 日韩一级精品| 国产精品igao视频网网址不卡日韩| 亚洲福利专区| 欧美视频一区二区在线观看| 欧美在线播放视频| 亚洲午夜一区二区三区| 99re视频这里只有精品| 欧美肉体xxxx裸体137大胆| 久久精品国产第一区二区三区最新章节| 欧美中文在线免费| 国产精品久久毛片a| 中文有码久久| 午夜免费电影一区在线观看| 欧美一级理论性理论a| 久久国产精品99久久久久久老狼| 国产精品99久久久久久久vr| 中文在线资源观看视频网站免费不卡| 欧美在线视频日韩| 欧美日韩一区二区在线观看视频| 亚洲神马久久| 日韩视频一区二区三区在线播放免费观看| 国产亚洲成年网址在线观看| 国产偷久久久精品专区| 欧美极品在线播放| 午夜精品久久一牛影视| 国模私拍视频一区| 久久大香伊蕉在人线观看热2| 日韩视频免费在线观看| 亚洲破处大片| 亚洲欧美日韩天堂| 欧美在线观看一区| 一区二区av| 在线播放日韩专区| 亚洲国产精品www| 久久精品亚洲乱码伦伦中文| 久久久久久色| 狠狠色狠狠色综合日日五| 欧美一区二区视频97| 99国产成+人+综合+亚洲欧美| 国产精品va在线播放| 国产在线拍揄自揄视频不卡99| 美女网站久久| 亚洲国产欧美精品| 亚洲国产高清视频| 91久久精品国产91久久性色| 欧美精品xxxxbbbb| 国产一区二区日韩精品欧美精品| 亚洲网站视频福利| 亚洲国产精品一区二区www在线| 午夜精品美女自拍福到在线| 伊人狠狠色丁香综合尤物| 久久久久久久一区二区三区| 亚洲精品一二三区| 亚洲国产高清aⅴ视频| 在线精品高清中文字幕| 亚洲人被黑人高潮完整版| 欧美日韩亚洲一区二区三区四区| 玖玖玖免费嫩草在线影院一区| 欧美第一黄网免费网站| 欧美成人精品1314www| 亚洲精品极品| 在线一区免费观看| 每日更新成人在线视频| 国产精品极品美女粉嫩高清在线| 玖玖精品视频| 亚洲一区自拍| 欧美精品色网| 国产一区二区三区最好精华液| 一区福利视频| 亚洲电影欧美电影有声小说| 悠悠资源网亚洲青| 黄色亚洲大片免费在线观看| 欧美精品videossex性护士| 亚洲国产高清高潮精品美女| 国产精品美女视频网站| 国产一区二区三区四区| 久久国产主播| 亚洲美女色禁图| 欧美激情亚洲自拍| 欧美视频一区二区在线观看| 欧美韩国在线| 国产精品免费网站在线观看| 欧美在线999| 精品盗摄一区二区三区| 亚洲国产美女久久久久| 亚洲视频在线一区观看| 国产午夜精品理论片a级大结局| 国产精品美女主播| 久久综合亚州| 国产精品免费小视频| 国产精品国产自产拍高清av| 欧美精品国产一区| 国产欧美日本在线| 极品少妇一区二区三区精品视频| 欧美成人日韩| 午夜久久99| 欧美一级黄色录像| 欧美日韩在线三级| 狼人天天伊人久久| 午夜精品区一区二区三| 欧美高清视频www夜色资源网| 麻豆精品精华液| 欧美国产精品| 欧美三级第一页| 国产一区二区三区观看| 欧美在线看片a免费观看| 国产一区二区主播在线| 麻豆成人精品| 欧美一级在线视频| 久久亚洲图片| 久久久亚洲综合| 久久国内精品视频| 亚洲午夜电影在线观看| 欧美精品激情| 欧美人交a欧美精品| 国产精品一香蕉国产线看观看| 亚洲成人在线免费| 久久精品国产亚洲一区二区| 欧美一区二区三区免费看| 欧美激情综合色综合啪啪| 欧美性做爰猛烈叫床潮| 国产精品视频一区二区三区| 嫩草成人www欧美| 亚洲免费一在线| 国产一区二区三区不卡在线观看| 在线成人国产| 国内精品久久久久影院优| 久久久久久999| 欧美大片在线观看一区二区| 亚洲午夜电影| 亚洲精品乱码久久久久久按摩观| 久久精品女人天堂| 亚洲精品小视频| 中国成人黄色视屏| 日韩视频免费在线| 欧美国产乱视频| 免费欧美在线| 亚洲国产成人在线| 红桃av永久久久| 欧美四级电影网站| 尤物精品国产第一福利三区| 亚洲一区二区三区午夜| 国产一区成人| 国产一区二区精品久久91| 香蕉久久夜色精品国产使用方法| 亚洲欧洲在线一区| 国产真实精品久久二三区| 欧美日韩国产在线看| 国产精品网曝门| 欧美成人一区二免费视频软件| 久久综合免费视频影院| 国产在线观看91精品一区| 国产精品一区二区在线观看网站| 亚洲人成77777在线观看网| 一区二区在线观看av| 亚洲黄网站黄| 亚洲国产欧美一区二区三区同亚洲| 亚洲一区二区三区精品视频| 午夜久久久久| 香蕉精品999视频一区二区| 中文无字幕一区二区三区| 国产亚洲日本欧美韩国| 亚洲电影免费观看高清完整版在线观看| 在线成人国产| 欧美麻豆久久久久久中文| 男人天堂欧美日韩| 精品av久久久久电影| 欧美大片在线看| 国产精品国产三级国产普通话蜜臀| 黄色小说综合网站| 欧美日韩ab片| 狠狠色狠狠色综合日日五| 久久www免费人成看片高清| 136国产福利精品导航| 国产日韩欧美日韩大片| 欧美日韩激情小视频| 亚洲欧洲一区二区三区久久| 国产精品午夜在线| 亚洲素人一区二区| 亚洲在线观看视频网站| 久久久av水蜜桃| 性做久久久久久| 鲁大师影院一区二区三区| 国产偷自视频区视频一区二区| 欧美区二区三区| 国产专区欧美专区| 欧美精品一区二区蜜臀亚洲| 在线成人免费视频| 久久狠狠一本精品综合网| 国产日产精品一区二区三区四区的观看方式| 久久激情视频| 亚洲欧美另类中文字幕| 欧美日韩成人精品| 激情久久婷婷| 久久国产精品免费一区| 亚洲激情电影中文字幕| 亚洲亚洲精品在线观看| 欧美午夜一区二区三区免费大片| 欧美一区二区在线看| 欧美色图一区二区三区| 久久久一区二区三区| 午夜精品久久久久影视| 亚洲国产免费| 久久gogo国模啪啪人体图| 国产精品永久免费视频| 久久综合福利| 日韩性生活视频| 国产精品一区二区你懂的| 国产精品视频大全| 国产午夜精品美女毛片视频| 欧美日韩的一区二区| 国产精品theporn| 欧美阿v一级看视频| 亚洲美女区一区| 午夜精品久久一牛影视| 亚洲欧美日韩人成在线播放| 亚洲人成欧美中文字幕| 国内免费精品永久在线视频| 久久久久久久久久看片| 欧美日韩一区二区三区视频| 日韩视频免费在线观看| 欧美视频不卡| 欧美jizzhd精品欧美喷水| 欧美色图首页| 久久久精品2019中文字幕神马| 99视频精品全国免费| 亚洲高清123| 亚洲人成毛片在线播放| 久久午夜视频| 久久中文欧美| 亚洲图片在线观看| 亚洲曰本av电影| 欧美在线亚洲综合一区| 欧美一区二区久久久| 久久久久久久91| 香蕉久久夜色精品国产| 久久一区中文字幕| 欧美一区久久| 欧美福利一区二区三区| 久久一本综合频道| 欧美一区二区啪啪| 午夜宅男欧美| 欧美黄色一区二区| 久久成人免费视频| 欧美在线观看www| 亚洲第一黄网| 久久大综合网| 欧美天堂在线观看| 国产精品v欧美精品v日韩| 欧美午夜视频网站| 国产精品久久一区主播| 亚洲淫性视频| 亚洲性感激情| 欧美精品一区二区高清在线观看| 欧美一区二区在线免费观看| 伊人精品视频| 欧美日韩91| 国产欧美精品久久| 在线成人激情视频| 国产精品另类一区| 激情综合亚洲| 亚洲国产精品久久久久秋霞影院| 亚洲影视综合| 久久福利毛片| 夜夜嗨av一区二区三区免费区| 韩国三级电影一区二区| 欧美成人黑人xx视频免费观看| 欧美精品v国产精品v日韩精品| 久久久美女艺术照精彩视频福利播放| 欧美二区在线看| 欧美视频二区36p| 欧美日韩直播| 夜夜嗨av一区二区三区| 久久精品国产77777蜜臀| 国产亚洲视频在线| 一区二区三区av| 国产精品腿扒开做爽爽爽挤奶网站| 欧美日韩国产色综合一二三四| 亚洲一区二区三区在线观看视频| 国产欧美日韩在线观看| 国产精品国产三级国产a| 亚洲手机视频| 久久精品国产成人| 久久成人18免费观看| 香蕉久久夜色精品国产使用方法| 国产精品亚洲视频| 亚洲国产精品欧美一二99| 亚洲美女尤物影院| 99精品热6080yy久久| 国产网站欧美日韩免费精品在线观看| 一区二区免费在线观看| 久久久久国产精品人| 欧美影院午夜播放| 麻豆国产va免费精品高清在线| 一区二区三区你懂的| 欧美一区二区在线观看| 在线欧美日韩| 久久日韩精品| 国产午夜精品美女毛片视频| 在线视频国内自拍亚洲视频| 亚洲综合国产激情另类一区| 欧美精品国产一区| 国产在线观看一区| 黄色av成人| 亚洲国产精品va在线看黑人动漫| 在线视频欧美日韩精品| 亚洲激情av在线| 亚洲一区二区四区| 亚洲精品日韩在线| 国产一区 二区 三区一级| 亚洲国产第一| 国模一区二区三区| 国外视频精品毛片| 国产精品国产三级国产普通话三级| 亚洲精品乱码久久久久久久久| 国产三级欧美三级日产三级99|