精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

OpenHarmony輕量化系統ANY技術實踐

系統 OpenHarmony
ANY功能是一種華為私有的短數據通信功能,允許處于同一信道的2個Wi-Fi設備進行直接的點對點無連接通信。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

概述

ANY功能是一種華為私有的短數據通信功能,允許處于同一信道的2個Wi-Fi設備進行直接的點對點無連接通信。

ANY可以應用于智能開關控制燈泡、傳感器數據采集、遙控器控制家用電器等無線控制場景。

ANY功能特點

  • 每個設備可以選擇一個接口(例如:wlan0或ap0)用于ANY報文的收發。
  • ANY報文采用接口當前所在信道進行收發,和通信對端需要處于同一信道。
  • 單個ANY報文最多可以支持250byte的用戶層數據。
  • 單個ANY設備最多支持同時和16個ANY對端設備進行通信,其中最多允許和6個對端進行加密通信。
  • ANY設備可以收發ANY單播報文ANY廣播報文,不支持組播報文。
  • ANY設備可以掃描發現附近的其他ANY設備。

環境

  • OpenHarmony-3.1
  • 潤和hispark_pegasus Hi3861開發板
  • DevEco Device Tool
  • 串口調試助手

總體流程

總體流程為:

  1. ANY功能初始化。
  2. 注冊收發回調函數。
  3. 創建收發線程T1處理收發回調(將收發回調函數用此線程完成,避免長期占用主線程)。
  4. 進行ANY設備掃描。
  5. 調用hi_wifi_any_deinit,去初始化ANY。

1、初始化

首先設備需要完成STA或者SoftAP的初始化;再以此作為ANY收發通信的接口,初始化ANY功能。初始化ANY功能之后,ANY會采用其所在的信道進行通信,并采用MAC地址作為發送接收的地址。

  • 對于SoftAP模式下,所在的信道就是創建的時候指定的信道。
  • 對于STA模式,若已連接到了SoftAP,所在信道為該SoftAP指定的信道。
  • 對于STA模式,若未連接,可以采用設置信道的API函數hi_wifi_set_channel給STA指定一個信道。

對于ANY功能初始化,步驟為:啟動STA或SoftAP調用?hi_wifi_any_init,選擇STA接口(wlan0)或AP接口(ap0)作為ANY通信接口。

調用hi_wifi_any_deinit,去初始化ANY(關閉WiFi會自動關閉ANY)。
對于初始化函數,返回值為0即執行成功,1則為執行失敗。

/* STA接口的信息 */
hi_char ifname[16 + 1] = {0};
hi_s32 len = sizeof(ifname);
/*WIFI_STA功能啟動*/
hi_wifi_sta_start(ifname, &len);
/* 初始化并注冊發送完成和接收回調函數 */
hi_wifi_any_init(ifname);
/* AP接口的信息 */
hi_wifi_softap_config hapd_conf = {
"my_wifi", "", 1, 0, HI_WIFI_SECURITY_OPEN, HI_WIFI_PARIWISE_UNKNOWN};
hi_char ifname[16 + 1] = {0}; /* 創建的SoftAP接口名 */
hi_s32 len = sizeof(ifname); /* SoftAP接口名長度 */
struct netif *netif_p = HI_NULL;
ip4_addr_t st_gw;
ip4_addr_t st_ipaddr;

ip4_addr_t st_netmask;
/* 這里用戶配置自己的網關、IP、掩碼 */
IP4_ADDR(&st_gw, 0, 0, 0, 0);
IP4_ADDR(&st_ipaddr, 0, 0, 0, 0);
IP4_ADDR(&st_netmask, 0, 0, 0, 0);
hi_u8 ap_msg[] = "msg from my_wifi";
/* 配置SoftAP網絡參數,beacon周期修改為200ms */
hi_wifi_softap_set_beacon_period(200);
/* 啟動SoftAP接口 */
hi_wifi_softap_start(&hapd_conf, ifname, &len);
/* 配置DHCP服務器 */
netif_p = netif_find(ifname);
if (netif_p == HI_NULL)
{
(hi_void) hi_wifi_softap_stop();
return HISI_FAIL;
}
if (netifapi_netif_set_addr(netif_p, &st_ipaddr, &st_netmask, &st_gw) != HISI_OK)
{
(hi_void) hi_wifi_softap_stop();
return HISI_FAIL;
}
if (netifapi_dhcps_start(netif_p, NULL, 0) != HISI_OK)
{
(hi_void) hi_wifi_softap_stop();
return HISI_FAIL;
}
/* 初始化并注冊發送完成和接收回調函數 */
hi_wifi_any_init(ifname);

2、注冊ANY收發回調函數

ANY設備能夠與同信道的其他ANY設備進行通信。其中單個ANY報文最多支持250Byte的用戶數據。支持加密通信或不加密通信,加密通信需要要求雙方提前配置同樣的16Byte長度密鑰。

在通信前需要確保:ANY功能初始化,以及通信雙方處于同一個信道。

接受和發送回調函數同樣是運行于驅動線程,建議新建一個線程T1(第三步驟)處理收發報文,所以回調函數內的任務只是將msg數據通過消息隊列傳到收發線程T1。

  1. 實現接收回調函數&& 發送完成回調函數,hi_wifi_any_recv_cb? && hi_wifi_any_send_complete_cb。
  2. 回調函數內調用write_any_msg函數,msg數據將會在收發線程T1里面處理。
  3. 調用hi_wifi_any_set_callback向驅動注?冊回調函數,其中發送回調函數反饋發送結果(成功為1),若不需要該函數,注冊時可以設置為HI_NULL。

ANY只在當前信道通信,想要與其他信道設備通信,需要下調用切信道API

一個ANY設備支持和16個對端通信,最多6個對端加密通信,并且需要雙方配置相同密鑰。

接收回調函數的數據內存由驅動自行管理。

hi_wifi_any_set_callback(wifi_any_send_cb, wifi_any_recv_cb);
/*發送完成回調函數*/
void wifi_any_send_cb(unsigned char *mac, unsigned char status, unsigned char seqnum)
{
any_msg_stru msg = {0};
memcpy_s(msg.mac, sizeof(msg.mac), mac, sizeof(msg.mac));
msg.type = ANY_SEND_COMPLETE_CALLBACK;
msg.status = status;
msg.seqnum = seqnum;

//調用write_any_msg函數
write_any_msg(&msg);
}
/* 接收回調函數*/
void wifi_any_recv_cb(unsigned char *mac, unsigned char *data, unsigned short len, unsigned char seqnum)
{
any_msg_stru msg = {0};
msg.type = ANY_RECV_CALLBACK;
memcpy_s(msg.mac, sizeof(msg.mac), mac, sizeof(msg.mac));
msg.len = len;
msg.seqnum = seqnum;
msg.data = (unsigned char *)hi_malloc(HI_MOD_ID_WIFI_DRV, len);
if (msg.data == NULL)
return;
if (memcpy_s(msg.data, len, data, len) != EOK)
{
hi_free(HI_MOD_ID_WIFI_DRV, msg.data);
return;
}
//調用write_any_msg函數
if (write_any_msg(&msg) != HI_ERR_SUCCESS)
hi_free(HI_MOD_ID_WIFI_DRV, msg.data);
}
/* 向收發線程T1發送msg */
hi_u32 write_any_msg(any_msg_stru *msg)
{
hi_u32 ret;
if ((g_any_msg_queue == 0) || (g_task_running == 0))
{
printf("msg queue or task is not working!\r\n");
return HI_ERR_FAILURE;
}
//將msg消息發送到消息隊列
ret = hi_msg_queue_send(g_any_msg_queue, msg, 0, sizeof(any_msg_stru));
return ret;
}

3、處理子線程T1

由于接收回調、發送回調、掃描回調都不易過多占用主線程的運行,所以我們需要創建一個新的線程用于實現接收回調、發送回調、掃描回調的活。
創建線程&&線程實現:

/*創建處理子線程T1*/
hi_u32 any_start_callback_task(hi_void)
{
hi_u32 ret;
if (g_any_msg_task_id != 0)
{
return HI_ERR_FAILURE;
}
hi_task_attr task_init = {0};
task_init.task_prio = ANY_TASK_PRIORITY;
task_init.stack_size = ANY_TASK_STACK_SIZE;
task_init.task_name = ANY_TASK_NAME;
g_task_running = 1;
ret = hi_task_create(&g_any_msg_task_id, &task_init, handle_any_msg, HI_NULL);
if (ret != HI_ERR_SUCCESS)
{
printf("create any msg task ret:%d\r\n", ret);
return ret;
}

printf("create any msg task success!\r\n");
return ret;
}
hi_u32 any_destory_callback_task(hi_void)
{
printf("destory any callback task\r\n");
g_task_running = 0;
return HI_ERR_FAILURE;
}
/*處理子線程T1*/
static hi_void *handle_any_msg(hi_void *data)
{
(hi_void) data;
int ret;
any_msg_stru msg = {0};
if (g_any_msg_queue == 0)
{
ret = hi_msg_queue_create(&g_any_msg_queue, ANY_MSG_QUEUE_MAX_LEN, sizeof(any_msg_stru));
if (ret != HI_ERR_SUCCESS)
{
printf("create any message queue ret:%d\r\n", ret);
g_any_msg_task_id = 0;
return HI_NULL;
}
}
while (1)
{
hi_u32 msg_size = sizeof(any_msg_stru);
ret = hi_msg_queue_wait(g_any_msg_queue, (hi_pvoid)&msg, ANY_TASK_SLEEP_TIME,&msg_size);
if (ret == HI_ERR_SUCCESS)
{

switch (msg.type)
{
case ANY_SCAN_CALLBACK:
/*掃描回調*/
wifi_any_scan_success_proc(msg.mac, msg.channel);
break;
case ANY_RECV_CALLBACK:
/*接收回調*/
wifi_any_recv_proc(msg.mac, msg.data, msg.len, msg.seqnum);
hi_free(HI_MOD_ID_WIFI_DRV, msg.data);
break;
case ANY_SEND_COMPLETE_CALLBACK:
/*發送完成回調*/
wifi_any_send_complete_proc(msg.mac, msg.status, msg.seqnum);
break;
default:
break;
}
}
else
{
if (g_task_running == 0)
{
break;
}
}
}
g_any_msg_task_id = 0;
hi_u8 trycount = 3;
while (trycount > 0)
{
if (hi_msg_queue_delete(g_any_msg_queue) == HI_ERR_SUCCESS)
{
g_any_msg_queue = 0;
return HI_NULL;
}
trycount--;
}
printf("delete any msg queue failed!\r\n");
return HI_NULL;
}

真正的接收回調、發送回調、掃描回調(可參考文章末尾的源碼):

/* 接收回調 */
void wifi_any_recv_proc(const unsigned char *mac, unsigned char *data, unsigned short len,unsigned char seqnum)
{}
/* 發送完成回調 */
void wifi_any_send_complete_proc(const unsigned char *mac, unsigned char status, unsigned char seqnum)
{}
/* 掃描回調 */
void wifi_any_scan_success_proc(const unsigned char *mac, unsigned char channel)
{}

4、ANY設備掃描

完成ANY初始化后,STA端可以進行設備的掃描:

  1. 首先實現hi_wifi_any_scan_result_cb掃描回調函數,用于處理掃描完成之后的結果。對于該回調函數,驅動傳入的輸入參數為發現的ANY設備的指針數組和數組元素個數,每個元素指向一個發現的ANY設備相關信息。
  2. 調用hi_wifi_any_discover_peer,向驅動注冊回調函數,并**啟動一次ANY掃描。

掃描過程中,發現的設備是SoftAP,則設備信息會包括SSID信息,STA則為空字符串。

回調函數運行于驅動線程,不能阻塞或長時間?等待,使用第三步驟的處理子線程T1進行處理。

單次掃描最多通過回調函數返回32個對端設備信息,回調函數傳入的數組內存由驅動自行管理,在回調函數中不應釋放。

//g_find_any_device初始值為0,完成掃描回調函數退出whil循環
while (!g_find_any_device)
{
/* wifi_any_scan_result_cb : 掃描回調函數 */
hi_wifi_any_discover_peer(wifi_any_scan_result_cb);
hi_sleep(2000); //延時2s
}
/*掃描回調函數*/
void wifi_any_scan_result_cb(hi_wifi_any_device *devices[], unsigned char num)
{
unsigned char target_ssid[] = "my_wifi";
any_msg_stru msg = {0};
unsigned char loop;
if ((devices == NULL) || (num == 0))
{
printf("Total scanned ANY dev num: 0\r\n");
return;
}

for (loop = 0; (loop < num) && (devices[loop] != NULL); loop++)
{
if (strcmp((char *)devices[loop]->ssid, (char *)target_ssid) != 0)
{
continue;
}
g_find_any_device = 1;
msg.type = ANY_SCAN_CALLBACK;
msg.channel = devices[loop]->channel;
memcpy_s(msg.mac, WIFI_ANY_MAC_LEN, devices[loop]->bssid, WIFI_ANY_MAC_LEN);
if (write_any_msg(&msg) != HI_ERR_SUCCESS)
{
printf("write scan result failed\r\n");
}
break;
}
printf("Total scanned ANY dev num: %d\r\n", num);
return;
}

5、加密

ANY設備支持加密通信,要求通信雙方采用同樣的16byte長度密鑰進行加解密,一個密鑰對應一個對端MAC地址,即采用該密鑰加解密來自該MAC地址的ANY報文。用戶應根據產品應用場景確定ANY設備之間如何產生和共享同樣的密鑰。

設備1和設備2的配對協商消息均是采用ANY報文。協商請求消息中攜帶了隨機數R1,協商應答消息攜帶了隨機數R2和Cookie值。參與協商的2個設備需要采用同樣的預共享密鑰PSK,設備獲取到隨機數R1和R2之后結合PSK生成一個臨時密鑰用于加密密鑰協商消息。設備1采用該臨時密鑰加密密鑰請求消息,密鑰請求消息中包括來自設備2的Cookie和隨機生成的密鑰因子K1。設備2采用臨時密鑰解密消息之后驗證Cookie是否正確,驗證通過則回復密鑰應答消息。密鑰應答消息中包含隨機生成密鑰因子K2,并采用臨時密鑰加密。雙方完成上述交互之后,通過隨機數R1和R2、密鑰因子K1和K2采用同樣的算法生成用于通信的最終的密鑰。?

#創作者激勵#【FFH】OpenHarmony輕量化系統ANY技術實踐-開源基礎軟件社區

6、發送函數

向指定MAC地址的設備發送ANY數據。

int hi_wifi_any_send(const unsigned char *mac, unsigned char mac_len, unsigned char *data,unsigned short data_len, unsigned char seq);
  • mac:6字節長度目的MAC地址, 可為單播或者廣播地址, 不支持組播地址。
  • mac_len:MAC地址長度, 需為6字節。
  • data:待發送數據的緩存地址。
  • len:待發送的數據長度, 最大為250字節。
  • seqnum:待發送的ANY幀的序列號,范圍0-255。

效果

此樣例連接后互相發送信息。

這里可以看到AP端的mac地址為0x8e,STA端的mac地址為0x32。

STA端掃描發現ANY設備:

#創作者激勵#【FFH】OpenHarmony輕量化系統ANY技術實踐-開源基礎軟件社區

互相發送信息:

#創作者激勵#【FFH】OpenHarmony輕量化系統ANY技術實踐-開源基礎軟件社區

文章相關附件可以點擊下面的原文鏈接前往下載:

 https://ost.51cto.com/resource/2570。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2023-03-15 16:31:56

系統聲音收錄鴻蒙

2023-03-17 16:31:19

LVGL鴻蒙

2023-03-31 09:35:19

LVGL使用鴻蒙

2022-10-24 14:54:29

LWIP協議鴻蒙

2022-09-22 15:23:40

設備開發鴻蒙

2023-03-14 14:01:00

內存優化

2025-06-03 08:45:25

2023-06-12 15:43:44

鴻蒙智能家居開發

2019-07-04 11:46:44

智慧安防云存儲軟件

2025-11-06 17:45:15

2025-05-19 09:32:06

2022-09-15 14:56:12

GDB調試鴻蒙

2025-06-16 08:51:23

2023-09-11 19:53:50

2023-06-09 14:51:31

5G輕量化

2016-01-22 09:47:10

HTML5WebGLBIM模型

2016-04-20 15:36:38

圖片壓縮工具輕量化

2011-04-28 12:53:29

3D眼鏡3D家庭影院

2022-03-29 10:04:44

APIHarmony文件管理
點贊
收藏

51CTO技術棧公眾號

日韩亚洲第一页| 亚洲高清三级视频| 92国产精品久久久久首页| 免费人成年激情视频在线观看| 66精品视频在线观看| 狠狠色香婷婷久久亚洲精品| 亚洲人一区二区| 国产综合在线播放| 蜜乳av一区二区| 欧美精品激情在线| 国产传媒在线看| 国产精品午夜av| 欧美日韩成人一区二区| 国产二级片在线观看| 免费在线午夜视频| 国产69精品久久777的优势| 欧美一区在线直播| 妺妺窝人体色www聚色窝仙踪| 禁断一区二区三区在线| 精品久久久三级丝袜| 另类小说第一页| 2020av在线| 亚洲欧美一区二区三区极速播放| 欧美成熟毛茸茸复古| 国产suv精品一区二区69| 日韩国产精品久久| 91精品国产91久久久久久| 婷婷伊人五月天| 成人激情诱惑| 亚洲欧美制服第一页| 人妻激情偷乱频一区二区三区| 亚洲精品大片| 欧美亚洲一区二区在线| 尤物av无码色av无码| 色女人在线视频| 亚洲欧美中日韩| 亚洲在线色站| aiai在线| 国产精品日日摸夜夜摸av| 久久99精品久久久水蜜桃| www.成人精品| 国产老肥熟一区二区三区| 国产精品揄拍一区二区| 亚洲黄网在线观看| 亚洲欧美日本日韩| 97香蕉久久夜色精品国产| 国产极品美女高潮无套嗷嗷叫酒店| 欧美第一精品| 久久精品精品电影网| 国产精品无码无卡无需播放器| 欧美猛男同性videos| 精品在线小视频| 91网站免费视频| 欧美日本成人| 中文字幕无线精品亚洲乱码一区 | 日韩av资源在线| 99爱在线视频| 欧美性生交xxxxxdddd| 精品一区二区中文字幕| 日本高清不卡一区二区三区视频 | 亚洲精品久久久久久动漫器材一区 | 欧美成人免费在线视频| 国产高潮国产高潮久久久91| 欧美啪啪一区| 98精品国产高清在线xxxx天堂| 国产成人在线免费观看视频| 亚洲一区日韩| 国产精品黄页免费高清在线观看| 中日韩av在线| 国产乱子轮精品视频| 高清一区二区三区视频| 三级在线播放| 国产精品久久久久毛片软件| 色婷婷777777仙踪林| 2018av在线| 一本一道久久a久久精品| 天天操天天爱天天爽| 涩涩涩久久久成人精品| 欧美mv和日韩mv的网站| 久久精品综合视频| 日本电影一区二区| 欧美精品免费在线| 亚洲图片在线视频| 精品在线观看视频| 国产精品一区在线观看| 国产一级免费在线观看| 亚洲婷婷国产精品电影人久久| 日韩一区二区高清视频| 婷婷激情一区| 日韩欧美一二区| 这里只有久久精品| 午夜久久福利| 国产ts人妖一区二区三区| 97在线公开视频| 91在线视频免费观看| 亚洲一区二区精品在线观看| 6699嫩草久久久精品影院| 在线免费观看日本欧美| 乱码一区二区三区| jlzzjlzz亚洲女人| 久久久亚洲影院你懂的| 中文字幕 人妻熟女| 成人深夜视频在线观看| 一区二区不卡在线| 中文不卡1区2区3区| 欧美一区日韩一区| 免费视频91蜜桃| 一区二区毛片| 91高跟黑色丝袜呻吟在线观看| 日韩精品视频在线观看一区二区三区| 亚洲欧洲国产日本综合| 国产精品99久久免费黑人人妻| 免费精品一区二区三区在线观看| 亚洲午夜精品久久久久久性色| 精品爆乳一区二区三区无码av| 日韩在线a电影| 精品免费国产| 成人爽a毛片免费啪啪动漫| 欧美日韩一级大片网址| 玖玖爱在线观看| 亚洲天堂五月天| 成人一级黄色大片| av自拍一区| 色婷婷综合久久久久| 欧美福利视频一区二区| 国产精品一二三四| 午夜一区二区三视频在线观看| 国产黄色大片在线观看| 欧美一区二区三区视频在线观看| 少妇无套高潮一二三区| 国产日韩欧美三级| 国产精品区一区二区三在线播放| 欧美高清视频| 欧美亚洲综合在线| 成人片黄网站色大片免费毛片| 欧美区亚洲区| 5g国产欧美日韩视频| 成人欧美一区| 日本久久一区二区| 人妻丰满熟妇av无码久久洗澡| 欧美视频福利| 99re国产在线播放| 成人免费看片| 555夜色666亚洲国产免| 欧美a在线播放| 蜜桃视频一区二区三区在线观看| 明星裸体视频一区二区| 午夜欧美激情| 亚洲欧美日韩区| 中文字幕69页| 久久精品一区二区三区不卡牛牛 | 欧美videos极品另类| 欧美日韩中文另类| 国产麻豆a毛片| 精品一区二区免费看| 国产精品一区在线免费观看| 精品国产亚洲一区二区在线观看 | 日韩欧美一区二区三区四区五区| 天天免费亚洲黑人免费| 尤物九九久久国产精品的分类| 中文字幕人妻精品一区| 亚洲欧美在线aaa| 在线成人免费av| 伊人成年综合电影网| 久久精品人人做人人爽电影| 伊人久久视频| 色先锋资源久久综合5566| 一级成人免费视频| 伊人一区二区三区| 天天躁日日躁狠狠躁av| 国产模特精品视频久久久久| 日本一区二区免费看| 91成人抖音| 欧美大奶子在线| 天天综合网天天综合| 欧美亚洲丝袜传媒另类| 久久噜噜色综合一区二区| 国产91精品久久久久久久网曝门 | 亚洲图片小说在线| 久久国产精品美女| 欧美亚洲国产视频小说| 成人在线二区| 日韩女优毛片在线| 天天综合网久久综合网| 亚洲欧洲三级电影| 日韩成人av一区二区| 日本 国产 欧美色综合| 国内自拍中文字幕| 亚洲资源网你懂的| 91九色单男在线观看| 国产99在线| 中文字幕亚洲欧美在线| 亚洲精品无码久久久| 日本韩国精品一区二区在线观看| 手机av在线看| 91蜜桃视频在线| 四虎成人在线播放| 久久九九免费| 91黄色在线看| 999国产精品视频| 久久久影院一区二区三区| 激情久久一区二区| 国内久久久精品| 国产三级在线观看| 精品国产乱码久久久久久牛牛| 五月激情丁香网| 精品福利在线视频| 在线观看成人毛片| 亚洲国产精品成人综合色在线婷婷| 在线观看免费视频黄| 久久国产精品99精品国产 | 偷拍视频一区二区| 青青一区二区| 成人3d动漫一区二区三区91| 国产综合色在线观看| 国产91精品久久久| 成人三级小说| 久久国产精品久久久| av中文资源在线| 亚洲精品一区二区三区不| 精品人妻伦一二三区久久| 欧美视频中文一区二区三区在线观看| 日本熟妇毛茸茸丰满| 亚洲日本丝袜连裤袜办公室| 日本成人午夜影院| 久久午夜羞羞影院免费观看| 欧美成人精品一区二区综合免费| 久久国产视频网| 天天色综合天天色| 玖玖玖国产精品| 青青视频在线播放| 99综合在线| 激情五月宗合网| 激情久久中文字幕| 91成人综合网| 欧美体内she精视频在线观看| 在线观看一区二区三区三州| 大色综合视频网站在线播放| 日韩电影免费观看高清完整| 在线日韩网站| 欧美激情论坛| 国产亚洲一卡2卡3卡4卡新区| 欧美18视频| 夜夜春成人影院| 老牛影视免费一区二区| 天天躁日日躁成人字幕aⅴ| 精品日产一区2区三区黄免费 | 青青草国产精品97视觉盛宴| 国产精品亚洲二区在线观看| 久久综合婷婷| 91插插插插插插插插| 久久99精品久久久久| 自拍偷拍21p| 狠狠色丁香久久婷婷综合_中| 婷婷激情综合五月天| 国产一区二区三区视频在线播放| 亚洲视频在线不卡| 国产suv精品一区二区三区| 美女搡bbb又爽又猛又黄www| 99精品1区2区| 国产又粗又猛又爽又黄av| 国产精品成人一区二区艾草| 中国毛片直接看| 亚洲在线观看免费视频| 日韩黄色精品视频| 色综合天天综合在线视频| 波多野结衣爱爱| 91精品国产乱码久久蜜臀| 性一交一乱一透一a级| 日韩电影第一页| 91网在线播放| 欧美高清第一页| 竹内纱里奈兽皇系列在线观看| 国产精品18久久久久久首页狼| 欧美极品在线| 国产精品日韩二区| 精品国产欧美日韩| 国产又粗又长又爽视频| 一区二区黄色| 在线观看免费的av| 成人免费高清在线观看| 熟女俱乐部一区二区视频在线| 中文字幕亚洲精品在线观看| 久久综合亚洲色hezyo国产| 91久久精品一区二区三| 国产免费不卡av| 日韩av在线不卡| 久草免费在线| 91精品国产91久久久久久不卡| 日本一区二区中文字幕| 国产伦精品一区二区三区高清| 激情五月综合网| 激情六月天婷婷| 视频一区二区三区中文字幕| 久久aaaa片一区二区| 2022国产精品视频| 亚洲综合网在线| 91黄色免费观看| 高h放荡受浪受bl| 中文字幕亚洲综合久久| 91色在线看| 亚洲最大的成人网| 精品欧美久久| 国产精品333| 国产一区不卡视频| 日本美女xxx| 精品日韩中文字幕| 成人h动漫精品一区二区无码 | 欧美日韩系列| 影音先锋在线一区| 五月天婷婷亚洲| 久久精品人人爽人人爽| 日本少妇性生活| 91精品综合久久久久久| porn视频在线观看| 欧美亚洲激情视频| 国产成人精品亚洲线观看| 在线一区亚洲| 看国产成人h片视频| mm131丰满少妇人体欣赏图| 午夜天堂影视香蕉久久| 国产夫妻自拍av| 久久视频中文字幕| 日韩三级成人| 亚洲视频在线观看日本a| 日韩激情一二三区| 人妻体内射精一区二区| 精品福利樱桃av导航| 免费观看国产精品| 欧美激情国产日韩精品一区18| 国产精品麻豆| 亚洲欧美日韩不卡一区二区三区| 日韩精品国产精品| 亚洲第一香蕉网| 欧美性20hd另类| 日韩av地址| 青草成人免费视频| 亚瑟一区二区三区四区| 国产在线精品91| 99re在线视频这里只有精品| 国产福利拍拍拍| 日韩精品免费一线在线观看| 两个人看的在线视频www| 国产麻豆一区二区三区在线观看| 亚洲一级高清| 日本黄色录像片| 红桃av永久久久| 色视频精品视频在线观看| 日韩美女视频在线观看| 教室别恋欧美无删减版| 99sesese| 亚洲欧美日韩成人高清在线一区| 国产青青草视频| 欧美日本啪啪无遮挡网站| 韩国精品福利一区二区三区| 热99这里只有精品| 久久午夜老司机| japanese国产在线观看| www.美女亚洲精品| 精品一区二区三区视频在线播放| 国产资源第一页| 成人美女在线视频| 中日韩黄色大片| 亚洲无线码在线一区观看| 久久免费资源| 成人一区二区av| 91在线精品秘密一区二区| 国产午夜精品久久久久| xxav国产精品美女主播| 欧美一区一区| 女性女同性aⅴ免费观女性恋 | 青青青在线免费观看| 日韩欧美一级在线播放| 色综合桃花网| 亚洲一区二区三区乱码| 高清不卡一二三区| www.日韩一区| 欧美成人免费在线观看| 日韩美女毛片| 在线观看国产一级片| 亚洲午夜免费视频| 可以在线观看的黄色| 亚洲尤物视频网| 男人的天堂亚洲在线| 色婷婷在线视频观看| 亚洲精品视频网上网址在线观看| 国产精品美女午夜爽爽| 精品人妻大屁股白浆无码| 国产欧美一区二区精品仙草咪 | 福利一区福利二区| 中文字幕一区在线播放| 欧美美女15p| 精品久久影院| 日本wwwwwww| 欧美视频三区在线播放| 51漫画成人app入口| 免费观看中文字幕| 国产欧美一区二区三区鸳鸯浴| 蜜桃视频污在线观看| 国产噜噜噜噜噜久久久久久久久 |