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

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

?? arcnet.c

?? 卡內(nèi)基梅隆大學(CMU)開發(fā)的移動機器人控制開發(fā)軟件包??蓪Χ喾N機器人進行控制
?? C
字號:
 /********************************************************* * * This source code is part of the Carnegie Mellon Robot * Navigation Toolkit (CARMEN) * * CARMEN Copyright (c) 2002 Michael Montemerlo, Nicholas * Roy, Sebastian Thrun, Dirk Haehnel, Cyrill Stachniss, * and Jared Glover * * CARMEN is free software; you can redistribute it and/or  * modify it under the terms of the GNU General Public  * License as published by the Free Software Foundation;  * either version 2 of the License, or (at your option) * any later version. * * CARMEN is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE.  See the GNU General Public License for more  * details. * * You should have received a copy of the GNU General  * Public License along with CARMEN; if not, write to the * Free Software Foundation, Inc., 59 Temple Place,  * Suite 330, Boston, MA  02111-1307 USA * ********************************************************/#include <stdlib.h>#include <sys/types.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include "arcnet.h"#include "rpc.h"#include "robot_client.h"#include "setup.h"#include "Nclient.h"#include "i200m.h"enum anet_node_states { ANET_SEND, ANET_RECEIVE };static ArgBlock *RCLNT_QueryDiagnosticsCall(ArgBlock *args);static ArgBlock *RCLNT_PowerRequestCall(ArgBlock *args);TableEntry RPC_Table[2] = {  {RCLNT_QueryDiagnosticsCall, "QueryDiagnostics"},  {RCLNT_PowerRequestCall, "PowerRequest"}}; static enum anet_node_states anet_door_state[3] = {ANET_SEND,						   ANET_SEND, 						   ANET_SEND};static enum {ANET_CSN_NO,	     ANET_CSN_CS0, 	     ANET_CSN_CS1,	     ANET_CSN_CFD,	     ANET_CSN_RESTART} anet_conf_sn_req[3] = {ANET_CSN_NO, 						      ANET_CSN_NO, 						      ANET_CSN_NO};static unsigned char anet_ppc_channel = 0;static unsigned long anet_ppc_send_time = 0;static enum anet_node_states anet_ppc_state = 0;static char rclnt_arcnet_buffer[512];static long int anet_door_timer_offsets[3];static float anet_door_timer_errors[3];static long unsigned int anet_door_send_time[3];static unsigned char rclnt_power_state;ArgBlock *RPRT_Init(ArgBlock *args, unsigned char type){  args->length = 0;  args->argNumber = 0;  args->argNumberRef = 0;  args->argData += 5;    RPC_PutINT8((char)type, args);  if(type == 0xff)    RPC_PutINT8(0, args);  return args;}ArgBlock *RPRT_Error(ArgBlock *args, unsigned char type){  args->length = 0;  args->argNumber = 0;  args->argNumberRef = 0;  args->argData += 5;  RPC_PutINT8((char)type, args);  RPC_PutINT16(-1, args);  return args;}ArgBlock *RPRT_Line(ArgBlock *args, short unsigned int line_no, 		    unsigned char type, char *text){  args->length = 0;  args->argNumber = 0;  args->argNumberRef = 0;  args->argData += 5;  RPC_PutINT8((char) type, args);  RPC_PutINT16((short) line_no, args);  RPC_PutINT8(0, args);  if (type == 0) {    RPC_PutINT8(0, args);    RPC_PutINT16(0, args);  }  RPC_PutArg(0x2000, (unsigned short) (strlen(text) + 1), text, args);  return args;}static ArgBlock *RCLNT_QueryDiagnosticsCall(ArgBlock *args){  unsigned char type;   unsigned short line;   unsigned short screen;   type = *((char *) RPC_GetArg(0, 0x2001, 0, 0xff, args));  screen = *((unsigned short *) RPC_GetArg(0, 0x4002, 0, 0xff, args));  switch (type) {  case 0:    switch ((short) screen) {    case 0:      return RPRT_Init(args, 1);    default:      return RPRT_Init(args, 0xff);    }  case 1:    line = *((unsigned short *) RPC_GetArg(0, 0x4002, 0, 0xff, args));    switch ((short) screen) {    case 0:       switch (line) {      case 0:	return RPRT_Line(args, line, 0, "PC is operational");      default:	return RPRT_Error(args, 0);	      }    default:       return RPRT_Init(args, 0xff);    }  }  return args;}static ArgBlock *RCLNT_PowerRequestCall(ArgBlock *args){  rclnt_power_state = *((char *) RPC_GetArg(0, 0x2001, 0, 0xff, args));    args->length = 0;  args->argNumber = 0;  args->argNumberRef = 0;  args->argData += 5;  return args;}static void FillDoorStateStructFromArgBlock(int door, ArgBlock *argsp){  int i;   int j;   int set;   unsigned short *sonars;   unsigned char sw0;   unsigned char sw1;   unsigned char *bumper_sw0;   unsigned char *bumper_sw1;   unsigned char *infrareds;   unsigned long *sonar_ts;   unsigned long *infrared_ts;   unsigned long *bumper_sw0_ts;   unsigned long *bumper_sw1_ts;     sonars = (unsigned short *) RPC_GetArg(0, 0, 0, 0xff, argsp);  bumper_sw0 = (unsigned char *) RPC_GetArg(0, 0, 0, 0xff, argsp);  bumper_sw1 = (unsigned char *) RPC_GetArg(0, 0, 0, 0xff, argsp);  infrareds = (unsigned char *) RPC_GetArg(0, 0, 0, 0xff, argsp);  sonar_ts = (unsigned long *) RPC_GetArg(0, 0, 0, 0xff, argsp);  bumper_sw0_ts = (unsigned long *) RPC_GetArg(0, 0, 0, 0xff, argsp);  bumper_sw1_ts = (unsigned long *) RPC_GetArg(0, 0, 0, 0xff, argsp);  infrared_ts = (unsigned long *) RPC_GetArg(0, 0, 0, 0xff, argsp);  i = 0;  j = 0;  for (set = 2 * door; set < 2 * (door + 1); set++) {    for (i = 0; i < 8; i++) {      rclnt_rs.SonarController.SonarSet[set].Sonar[i].Reading = 	(sonars[j] != 300) ? sonars[j] * 25.4 : 0x7fffffff;      rclnt_rs.SonarController.SonarSet[set].Sonar[i].TimeStamp =        	sonar_ts[j] + anet_door_timer_offsets[door];      j++;    }   }   j = 0;  set = 2 * door;  while (set < 2 * (door + 1)) {    sw0 = bumper_sw0[set & 1];    sw1 = bumper_sw1[set & 1];    for (i = 0; i < 8; i++) {      rclnt_rs.BumperController.BumperSet[set].Bumper[i].Reading =	(!(sw1 & 1)) ? sw0 & 1 : 2;      rclnt_rs.BumperController.BumperSet[set].Bumper[i].TimeStamp =	(sw1 & 1) ? bumper_sw1_ts[j] + anet_door_timer_offsets[door] : 	bumper_sw0_ts[j] + anet_door_timer_offsets[door];      sw0 >>= 1;      sw1 >>= 1;      j++;    }     set++;  }   sw0 = bumper_sw0[2];  while (i < 12) {    rclnt_rs.BumperController.BumperSet[set].Bumper[i].Reading =      sw0 & 1;    rclnt_rs.BumperController.BumperSet[set].Bumper[i].TimeStamp =      bumper_sw0_ts[j] + anet_door_timer_offsets[door];    j++;    i++;  }     j = 0;  set = door * 2;  while (set < 2 * (door + 1)) {    for (i = 0; i < 8; i++) {      rclnt_rs.InfraredController.InfraredSet[set].Infrared[i].Reading = 	infrareds[j];      rclnt_rs.InfraredController.InfraredSet[set].Infrared[i].TimeStamp =       	infrared_ts[j] + anet_door_timer_offsets[door];      j++;    }     set++;  }   return ;}static void HandleDoorResponse(int door, ArgBlock *argsp, 			       unsigned char proc_index, 			       unsigned long rxtime __attribute__ ((unused))){  long int tr;   if (anet_door_state[door] != ANET_RECEIVE) {    printf("anet: response to door %d while not if receive state\n",	   door);    return ;  }     switch (proc_index) {  case 1:     FillDoorStateStructFromArgBlock(door, argsp);    break;  case 2:     switch (anet_conf_sn_req[door]) {    case ANET_CSN_NO:       printf("anet: conf_sn response while door %d is not waiting\n",	     door);      return ;    case ANET_CSN_CS0:     case ANET_CSN_CS1:      anet_conf_sn_req[door]++;      break;    case ANET_CSN_CFD:       anet_conf_sn_req[door] = ANET_CSN_NO;      break;    default:       break;    }    break;  case 0:     anet_door_timer_errors[door] = (rxtime - anet_door_send_time[door]) / 2.0;    tr = *((long int *) RPC_GetArg(0, 0x6004, 0, 0xff, argsp));    anet_door_timer_offsets[door] = anet_door_send_time[door] +       anet_door_timer_errors[door] - tr;    break;  default:     printf("anet: got bad proc from door %d: %d\n", door, proc_index);    return ;  }  anet_door_state[door] = ANET_SEND;  return ;}static void PollDoors(unsigned long current_time){  unsigned char fo[9];   unsigned char *cp;   int i, j, idx;   float delta_err;   ArgBlock args;   static long unsigned int last_poll_time = 0;    delta_err = 8e-05 * (current_time - last_poll_time);  last_poll_time = current_time;    for (i = 0; i <= 2; i++) {    anet_door_timer_errors[i] = anet_door_timer_errors[i] + delta_err;    switch (anet_door_state[i]) {    case ANET_SEND:       if (anet_door_timer_errors[i] > 15.0) {	args.length = 0;	args.argNumber = 0;	args.argNumberRef = 0;	args.argData = rclnt_arcnet_buffer + 5;		RPC_Send((unsigned char) (i + 16), 0, 0, 0, &args);      } else {	if (anet_conf_sn_req[i]) {	  switch (anet_conf_sn_req[i]) {	    	  case ANET_CSN_RESTART: 	    anet_conf_sn_req[i] = ANET_CSN_CS0;	    /* WARNING - break here ? */	  case 1: 	  case 2:	    idx = 2 * i + anet_conf_sn_req[i] - 1;	    	    memset(fo, 0xff, 9);	    cp = fo;	    j = 0; 			    do {	      *cp = rclnt_rs.SonarController.SonarSet[idx].FiringOrder[j];	    } while ((*cp++ != 255) && (++j < 8));	    args.length = 0;	    args.argNumber = 0;	    args.argNumberRef = 0;	    args.argData = rclnt_arcnet_buffer + 5;	    RPC_PutINT8(((unsigned char) (anet_conf_sn_req[i] - 1)), &args);	    RPC_PutINT8(0, &args);	    RPC_PutArg(0x2000, 9, fo, &args);	    RPC_Send((unsigned char) (i + 16), 0, 0, 2, &args);	    break ;	    	  case 3: 	    args.length = 0;	    args.argNumber = 0;	    args.argNumberRef = 0;	    args.argData = rclnt_arcnet_buffer + 5;	    RPC_PutINT8(0, &args);	    RPC_PutINT8(2, &args);	    RPC_PutINT8((char)			rclnt_rs.SonarController.SonarSet[i * 2].FiringDelay, 			&args);	    RPC_Send((unsigned char)(i + 16), 0, 0, 2, &args);	    break;	  default: 	    break;	  } 	} else {	  if (I200M_MSecSinceBoot() - anet_door_send_time[i] < 5) {	    break;	  } else { 	    args.length = 0;	    args.argNumber = 0;	    args.argNumberRef = 0;	    args.argData = rclnt_arcnet_buffer + 5;	    RPC_PutINT8(15, &args);	    RPC_Send((unsigned char)(i + 16), 0, 0, 1, &args);	  } 	}       }       anet_door_send_time[i] = current_time;      anet_door_state[i] = ANET_CSN_CS0;      break;    case ANET_RECEIVE:       if (current_time - anet_door_send_time[i] > 5000) {	printf("anet: door %d receive timeout\n", i);	anet_door_state[i] = ANET_CSN_NO;      }      break;    }   }   return ;}static void HandlePPCResponse(ArgBlock *argsp, unsigned char procIndex, 			      unsigned long rxtime __attribute__ ((unused))){  long int value;   if (anet_ppc_state != ANET_RECEIVE) {    printf("anet: response to ppc while not if receive state\n");    return ;  }  if (procIndex == 2) {    value = *((long int *) RPC_GetArg(0, 0x6004, 0, 0xff, argsp));    rclnt_rs.BatterySet.Battery[anet_ppc_channel].Voltage = value;    anet_ppc_channel++;    anet_ppc_channel &= 3;    anet_ppc_send_time = I200M_MSecSinceBoot();    anet_ppc_state = ANET_SEND;  }   return ;}static void PollPPC(unsigned long current_time){  ArgBlock args;   switch (anet_ppc_state) {  case ANET_SEND:     if (current_time - anet_ppc_send_time < 10000)      break;    args.length = 0;    args.argNumber = 0;    args.argNumberRef = 0;    args.argData = rclnt_arcnet_buffer + 5;    RPC_PutINT8(anet_ppc_channel, &args);    RPC_Send(32, 0, 0, 2, &args);    anet_ppc_send_time = current_time;    anet_ppc_state = ANET_RECEIVE;    break;  case ANET_RECEIVE:     if (current_time - anet_ppc_send_time > 5000) {      printf("PPC timeout\n");      anet_ppc_state = ANET_SEND;    }    break;  }   return;}static void RunShutdown(){  int result;   char *valuep;   char *endp;   unsigned long delay;   int pid;   ArgBlock args;   pid = fork();  if(pid == -1) {    fprintf(stderr, "Nrobot: error in fork() while responding to "	    "shutdown request: ");    perror(NULL);    return ;  }   if(pid != 0)    return;  if((valuep = SETUP_GetValue("[shutdown]delay")) == NULL)    delay = 25000;  else {     delay = strtol(valuep, &endp, 0);    if (*endp != '\0') {      fprintf(stderr, "Nrobot_client (warning): invalid value for %s;\n"	      "  attempting to use \"%u\"\n", "[shutdown]delay", 25000);      delay = 25000;    }  }  if((valuep = SETUP_GetValue("[shutdown]command")) == NULL)    valuep = "/sbin/shutdown -h -t 0 now";  result = system(valuep);  if (result == -1) {    fprintf(stderr, "Nrobot: system(\"%s\") failed (shutdown aborted): ",	    valuep);    perror(NULL);    return;  }  else if (result == 127) {     fprintf(stderr, "Nrobot: exec of /bin/sh failed while running system()."	    "  Shutdown aborted.\n");    return;  }   else if (result != 0) {    fprintf(stderr, "Nrobot: \"%s\" returned %d.  Shutdown aborted.\n",	    valuep, result);    return;  }   printf("Nrobot: shutting down power.\n");  args.length = 0;  args.argNumber = 0;  args.argNumberRef = 0;  args.argData = rclnt_arcnet_buffer + 5;  RPC_PutINT8(rclnt_power_state, &args);  RPC_PutINT32(delay, &args);  RPC_Send(32, 3, 0, 3, &args);  exit(0);}int ANET_Initialize(){  ArgBlock args, *argsp;   int i, j;   RPC_Init(1);  for (j = 0; j <= 2; j++) {    anet_door_timer_errors[j] = 15.0;    args.length = 0;    args.argNumber = 0;    args.argNumberRef = 0;    args.argData = rclnt_arcnet_buffer + 5;    RPC_PutINT8(0, &args);    RPC_PutINT8(2, &args);    argsp = RPC_Send((unsigned char) (j + 16), 3, 0, 4, &args);    if(argsp != NULL) {      rclnt_rs.SonarController.SonarSet[2 * j].FiringDelay =	rclnt_rs.SonarController.SonarSet[2 * j+1].FiringDelay =	*((char *) RPC_GetArg(0, 0x2001, 0, 0xff, argsp));    }    for (i = 0; i <= 1; i++) {      memset(rclnt_rs.SonarController.SonarSet[2 * j + i].FiringOrder, 255, 9);      args.length = 0;      args.argNumber = 0;      args.argNumberRef = 0;      args.argData = rclnt_arcnet_buffer + 5;      RPC_PutINT8((char) i, &args);      RPC_PutINT8(0, &args);      argsp = RPC_Send((unsigned char) (j + 16), 3, 0, 4, &args);      if (argsp != NULL)	memcpy(rclnt_rs.SonarController.SonarSet[2 * j + i].FiringOrder,	       RPC_GetArg(0, 0, 0, 0xff, argsp), 9);    }  }   rclnt_power_state = 0;  return 0;}void ANET_ConfSonar(){  int i;   for (i = 0; i <= 2; i++)    anet_conf_sn_req[i] = ANET_CSN_RESTART;  return;}void ANET_Poll(){  unsigned char type;   unsigned char sourceAddr;   unsigned char procIndex;   unsigned long current_time;   ArgBlock *argsp;   current_time = I200M_MSecSinceBoot();  while (1) {    if(((argsp = RPC_Receive(12, &type, &sourceAddr, &procIndex)) == NULL) ||       (type == 0))      break;          if ((sourceAddr > 15) && (sourceAddr < 19))      HandleDoorResponse((unsigned char) sourceAddr - 16, 			 argsp, procIndex, current_time);    else if (sourceAddr == 32)      HandlePPCResponse(argsp, procIndex, current_time);  }     PollDoors(current_time);  PollPPC(current_time);  if (rclnt_power_state) {    RunShutdown();    rclnt_power_state = 0;  }  return;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美极品| 欧美精品一区二区精品网| 中文字幕一区av| av中文字幕亚洲| 亚洲最新视频在线播放| 在线观看视频一区二区| 亚洲综合色在线| 制服丝袜一区二区三区| 九九视频精品免费| 一区二区三区不卡视频在线观看| 91女人视频在线观看| 亚洲免费观看高清在线观看| 欧美系列亚洲系列| 久久精品国产精品青草| 中文字幕免费在线观看视频一区| 91在线播放网址| 欧美aaaaa成人免费观看视频| 精品国产第一区二区三区观看体验| 国产成人亚洲综合a∨婷婷| 亚洲精品乱码久久久久久| 欧美巨大另类极品videosbest| 久久精品免费观看| 国产精品伦理一区二区| 欧美偷拍一区二区| 精品一区二区三区在线播放视频| 欧美韩国日本一区| 精品视频免费在线| 国产一区二区三区国产| 亚洲精品国久久99热| 日韩精品专区在线影院观看| 成人午夜电影久久影院| 亚洲国产日韩精品| 国产日产欧美一区二区视频| 91黄色激情网站| 国内精品伊人久久久久av影院| 国产精品久久久久三级| 欧美日韩精品欧美日韩精品一综合| 国产一区二区久久| 亚洲6080在线| 亚洲视频在线一区| 久久久久久久性| 欧美精品粉嫩高潮一区二区| 粉嫩av一区二区三区| 日本午夜精品视频在线观看| 亚洲视频在线观看三级| 欧美成人性福生活免费看| 欧美在线小视频| 99精品视频在线观看免费| 国产一区在线视频| 亚洲一区二区在线免费观看视频| 国产调教视频一区| 日韩欧美国产综合在线一区二区三区| 91麻豆蜜桃一区二区三区| 国产精品白丝jk黑袜喷水| 日本午夜精品视频在线观看| 亚洲国产视频直播| 亚洲激情图片一区| 国产精品成人免费精品自在线观看| 日韩欧美久久久| 91精品国产综合久久精品麻豆| 色国产综合视频| 色综合久久久网| 成人免费观看视频| 国产98色在线|日韩| 国产一区二区三区观看| 久久国产精品露脸对白| 秋霞av亚洲一区二区三| 午夜精品福利一区二区蜜股av| 亚洲伦理在线精品| 综合中文字幕亚洲| 一区精品在线播放| 亚洲欧美日韩在线播放| 自拍偷拍亚洲综合| 亚洲日本在线看| 亚洲人成伊人成综合网小说| 国产精品国产三级国产三级人妇| 国产人久久人人人人爽| 欧美国产日韩a欧美在线观看 | 日韩一区欧美一区| 国产精品福利一区| 国产精品免费视频网站| 国产欧美一区二区精品久导航| 国产亚洲1区2区3区| 日韩女优制服丝袜电影| 久久这里都是精品| 国产精品嫩草影院com| 国产精品乱人伦中文| 亚洲欧洲另类国产综合| 一区二区三区电影在线播| 亚洲在线一区二区三区| 五月婷婷另类国产| 久久99精品久久久| 国产99精品在线观看| 91碰在线视频| 久久综合九色综合久久久精品综合 | 中文字幕久久午夜不卡| 中文字幕日韩一区| 亚洲综合免费观看高清完整版 | 激情图区综合网| 国产成人精品亚洲777人妖| 成人污视频在线观看| 色综合天天综合给合国产| 欧美日韩一区二区欧美激情| 欧美一区二区三区男人的天堂 | 亚洲国产成人私人影院tom | 五月婷婷激情综合| 国产米奇在线777精品观看| 成人深夜视频在线观看| 色国产精品一区在线观看| 日韩一区二区三区电影在线观看 | 亚洲精品一区二区三区在线观看| 国产喂奶挤奶一区二区三区| 亚洲免费资源在线播放| 免费在线观看一区| 不卡欧美aaaaa| 91精品国模一区二区三区| 国产欧美中文在线| 婷婷国产在线综合| 成人av免费观看| 欧美老女人在线| 中文字幕免费不卡在线| 免费观看久久久4p| 99精品偷自拍| 久久先锋资源网| 亚洲国产wwwccc36天堂| 国产91色综合久久免费分享| 欧美日韩亚洲国产综合| 欧美国产成人精品| 麻豆成人久久精品二区三区小说| 成+人+亚洲+综合天堂| 欧美电影免费观看高清完整版| 亚洲三级免费电影| 国产69精品久久久久毛片| 欧美一级欧美三级在线观看| 亚洲色图制服诱惑 | 精品一区二区三区视频在线观看| 色94色欧美sute亚洲线路二| 国产亚洲福利社区一区| 美女视频第一区二区三区免费观看网站| www.久久精品| 国产亚洲欧洲997久久综合| 日日夜夜精品视频天天综合网| 9l国产精品久久久久麻豆| 精品国产自在久精品国产| 日韩高清一级片| 在线观看视频91| 亚洲免费资源在线播放| av激情综合网| 国产精品看片你懂得| 国产精品亚洲午夜一区二区三区| 91精品国产综合久久福利软件 | 国产精品久久久久影院亚瑟| 极品美女销魂一区二区三区| 91精品免费在线观看| 天使萌一区二区三区免费观看| 91久久人澡人人添人人爽欧美 | 欧美日本免费一区二区三区| 亚洲视频在线一区二区| 成人精品国产一区二区4080| 久久色成人在线| 黄色精品一二区| 精品久久久久久无| 精品一区二区在线视频| 精品久久久三级丝袜| 久久av中文字幕片| 精品国产91洋老外米糕| 久草中文综合在线| 久久综合国产精品| 国产凹凸在线观看一区二区| 国产亚洲欧洲997久久综合 | 久久久99久久精品欧美| 国产精品系列在线观看| 国产免费久久精品| 成人精品在线视频观看| 亚洲国产成人在线| 91视频国产观看| 一级特黄大欧美久久久| 欧美性生活一区| 日韩va亚洲va欧美va久久| 日韩午夜电影av| 国产成人免费网站| 亚洲欧洲成人精品av97| 欧美色老头old∨ideo| 日日夜夜精品视频天天综合网| 日韩一区二区精品葵司在线| 国产在线看一区| 国产精品午夜免费| 日本韩国欧美一区| 麻豆国产欧美日韩综合精品二区| 久久综合狠狠综合| 91首页免费视频| 婷婷久久综合九色综合绿巨人| 欧美不卡一区二区三区四区| 国产精品资源在线| 伊人夜夜躁av伊人久久| 91精品国产综合久久久久| 高清国产一区二区| 亚洲一区二区三区四区的| 337p粉嫩大胆色噜噜噜噜亚洲| 成人av网址在线|