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

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

?? rpc.c

?? 卡內基梅隆大學(CMU)開發的移動機器人控制開發軟件包。可對多種機器人進行控制
?? 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 <stdio.h>#include <stdlib.h>#include <netinet/in.h>#include "arcnet.h"#include "pc_d51.h"#include "mac.h"char *RPC_Info[20] = {  NULL, NULL, NULL, NULL, NULL,  NULL, NULL, NULL, NULL, NULL,  NULL, NULL, NULL, NULL, NULL,  NULL, NULL, NULL, NULL, NULL}; long unsigned int nodePresentTimeout = 20; long unsigned int nodeRespondingTimeout = 30000; static unsigned char rpc_addr; ArgBlock block; unsigned char rpcTableSize; unsigned char inputBuf[508]; ArgBlock *RPC_Send(unsigned char destAddr, unsigned char service, 		   unsigned char type, unsigned char procIndex, 		   ArgBlock *args);ArgBlock *IRPC_Print(ArgBlock *args);TableEntry IRPC_Table[] = {  {IRPC_Print, "IRPC_Print"},  {NULL, NULL}}; ArgBlock *IRPC_Print(ArgBlock *args){  char *line;   line = RPC_GetArg(0, 0, 0, 0xff, args);  printf("%s\n", line);  args->length = 0;  args->argNumber = 0;  args->argNumberRef = 0;  args->argData += 5;  return args;}char RPC_SetInfo(unsigned char index1, char *string){    RPC_Info[index1] = string;  return 0;}void RPC_SetTimeout(unsigned long nodePresent, unsigned long nodeResponding){  nodePresentTimeout = nodePresent;  nodeRespondingTimeout = nodeResponding;}ArgContent RPC_NextFree(unsigned char argNum, ArgBlock *args){    ArgContent *content;   ArgContent offset;   if (argNum > args->argNumber) {    argNum = args->argNumber;  }     offset = 0;  while (argNum != 0) {    content = (ArgContent *) (args->argData + offset);    offset += (htons(*content) & 0x1fff);    argNum--;  }     return offset;}unsigned char RPC_Init(unsigned char addr){    unsigned char status;   rpc_addr = addr;  status = MAC_Init(addr);  if (status != 0)    return status;  rpcTableSize = 0;  while (RPC_Table[rpcTableSize].procedure != NULL)    rpcTableSize++;  DELAYMS(200);  DELAYMS(200);  DELAYMS(200);  DELAYMS(200);  DELAYMS(200);  return 0;}ArgBlock *RPC_Receive(unsigned char service, unsigned char *type,		      unsigned char *sourceAddr, unsigned char *procIndex){    ArgContent length;   ArgContent tmp;   unsigned long count;   unsigned char originAddr;   unsigned char inType;   unsigned char inProcIndex;   ArgBlock *resp;   ArgBlock *(*proc)();   count = 0;  do {    MAC_Receive(inputBuf, &length, &originAddr);    if (length != 0) {      inType = inputBuf[0];      inProcIndex = inputBuf[1];      tmp = *((ArgContent *) (inputBuf + 2));      block.length = htons(tmp);      block.argNumber = inputBuf[4];      block.argNumberRef = 0;      block.argData = inputBuf + 5;                  if (inType & 1) {	if (service & 1) {	  if (((type == NULL) || (inType == *type)) && 	      ((procIndex == NULL) || (inProcIndex == *procIndex)) &&	      ((sourceAddr == NULL) || (originAddr == *sourceAddr))) {	    return &block;	  }	} 	if (service & 8) {	  if (type != NULL)	    *type = inType;	  	  if (procIndex != NULL)	    *procIndex = inProcIndex;	  	  if (sourceAddr != NULL)	    *sourceAddr = originAddr;	  	  return &block;	}            }             if ((inType == 0) || (inType == 0x10))  {	if (inType == 0) {	  proc = RPC_Table[inProcIndex].procedure;	} else { 	  proc = IRPC_Table[inProcIndex].procedure;	} 	if ((inProcIndex < rpcTableSize) || (inType == 0x10)) {	  resp = (*proc)(&block);	  RPC_Send(originAddr, 0, inType | 1, inProcIndex, resp);	}       }     } else {      if (service & 2) {	if ((count > nodePresentTimeout) && (MAC_NoResponse())) {	  printf("Not present\n");	  return NULL;	} 		if (count > nodeRespondingTimeout) {	  printf("Not responding\n");	  return NULL;	}	DELAY10US(10);	count++;      }     }  } while ((service & 2) && (service & 1));  return NULL;}ArgBlock *RPC_Send(unsigned char destAddr, unsigned char service, 		   unsigned char type, unsigned char procIndex, 		   ArgBlock *args){  ArgBlock *ret;   unsigned char *message;   ArgContent tmp;   if (destAddr == rpc_addr) {    args->argNumberRef = 0;    ret = (*(RPC_Table[procIndex].procedure))(args);    ret->argNumberRef = 0;    return ret;  }   message = args->argData - 5;  message[0] = type;  message[1] = procIndex;  tmp = htons(args->length);  message[2] = *((char *) &tmp);  message[3] = *(((char *) &tmp) + 1);  message[4] = args->argNumber;    MAC_Send(destAddr, message, args->length + 5);  if (service & 1) {    type |= 1;    return RPC_Receive(service, &type, &destAddr, &procIndex);  } else {     return NULL;  }}void RPC_PutArg(short unsigned int argType, short unsigned int dataLength, 		char *data, ArgBlock *args){      ArgContent *content;   ArgContent offset;   ArgContent i;   unsigned char *ptemp;   switch (argType) {  case 0x4000:     for (i = 0; i < dataLength; i += 2) {      ptemp = data + i;      *((unsigned short *) ptemp) = htons(*((unsigned short *) ptemp));    }     break;  case 0x6000:     for (i = 0; i < dataLength; i += 4) {      ptemp = &(data[i]);      *((unsigned int *) ptemp) = htonl(*((unsigned int *) ptemp));    }     break;  }   offset = RPC_NextFree(0xff, args);  content = (ArgContent *) (args->argData + offset);  *content = htons(((dataLength & 0x1fff) + 2) | argType);  offset += 2;  for (i = 0; i < dataLength; i++) {    (args->argData)[offset + i] = data[i];  }  args->length += dataLength + 2;  args->argNumber ++;}void *RPC_GetArg(unsigned char *error, short unsigned int expContent, 		 ArgContent *content, 		 unsigned char argNum, ArgBlock *args){      ArgContent offset;   ArgContent i;   unsigned char result;   unsigned char *ptemp;   ArgContent lcontent;   result = 0;  if (argNum > args->argNumber) {    argNum = args->argNumberRef;    args->argNumberRef++;  }     offset = RPC_NextFree(argNum, args);  lcontent = htons(*((unsigned int *) (args->argData + offset)));  if (content == NULL) {    if (expContent + 2 != lcontent)      result = 0xff;  } else {     content[0] = lcontent - 2;  }   if (error != NULL) {    *error = result;  }   switch (lcontent & 0xe000) {  case 0x4000:     for (i = 0; i < (unsigned int) ((lcontent & 0x1fff) - 2); i += 2) {      ptemp = &(args->argData[offset + 2 + i]);      *((unsigned short *) ptemp) = htons(*((unsigned short *) ptemp));    }     break;  case 0x6000:     for (i = 0; i < (unsigned int) ((lcontent & 0x1fff) - 2); i += 4) {      ptemp = &(args->argData[offset + 2 + i]);      *((unsigned int *) ptemp) = htonl(*((unsigned int *) ptemp));    }     break;  }   return &(args->argData[offset + 2]);}void RPC_PutINT8(char c, ArgBlock *args){    char cTmp;   cTmp = c;  RPC_PutArg(0x2000, 1, &cTmp, args);}void RPC_PutINT16(short int i, ArgBlock *args){    short int iTmp;   iTmp = i;  RPC_PutArg(0x4000, 2, (char *) &iTmp, args);}void RPC_PutINT32(long int i, ArgBlock *args){  long int iTmp;   iTmp = i;  RPC_PutArg(0x6000, 4, (char *) &iTmp, args);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三区观看| 日本在线不卡视频一二三区| 日韩国产在线观看一区| 成人av电影在线| 久久―日本道色综合久久| 亚洲国产精品久久不卡毛片| 粉嫩一区二区三区性色av| 欧美日韩亚洲不卡| 国产精品护士白丝一区av| 国产麻豆精品久久一二三| 在线播放91灌醉迷j高跟美女 | 色综合中文字幕| 2017欧美狠狠色| 午夜电影网亚洲视频| 色呦呦国产精品| 亚洲欧洲一区二区三区| 国产激情一区二区三区| 2020国产精品自拍| 久久国产福利国产秒拍| 日韩你懂的电影在线观看| 亚洲成人动漫精品| 欧美美女喷水视频| 亚洲亚洲精品在线观看| 欧美四级电影网| 亚洲永久精品大片| 欧美在线视频不卡| 亚洲美女精品一区| 91久久精品日日躁夜夜躁欧美| 国产精品久久三区| 91最新地址在线播放| 亚洲欧洲精品成人久久奇米网| 国产91在线观看| 亚洲欧洲av在线| 91免费在线看| 亚洲一区二区三区中文字幕| 欧美综合亚洲图片综合区| 亚洲精品欧美二区三区中文字幕| 色诱亚洲精品久久久久久| 亚洲午夜久久久久久久久电影网| 色吧成人激情小说| 亚洲va欧美va人人爽| 欧美精品日韩精品| 久久99精品国产.久久久久| 精品国产一区二区三区久久影院 | 香蕉成人伊视频在线观看| 欧美丰满少妇xxxxx高潮对白| 亚洲v中文字幕| 日韩视频免费观看高清完整版| 国产中文一区二区三区| 国产精品免费久久| 欧美在线观看视频在线| 日韩在线一二三区| 久久久亚洲精品一区二区三区| 波多野结衣的一区二区三区| 一区二区三区小说| 欧美电影免费观看高清完整版在线| 国内精品写真在线观看| 亚洲精品免费看| 欧美tickling网站挠脚心| 成人免费不卡视频| 午夜国产精品一区| 日本一区二区免费在线观看视频 | 国产不卡一区视频| 亚洲小少妇裸体bbw| 精品粉嫩aⅴ一区二区三区四区| 国产99久久久国产精品潘金| 亚洲图片欧美视频| 欧美激情综合网| 欧美精品日韩一区| 99久久久久久| 久久国产综合精品| 一区2区3区在线看| xf在线a精品一区二区视频网站| 成人av网址在线| 蜜乳av一区二区三区| 亚洲视频小说图片| 精品国精品国产尤物美女| 欧洲精品一区二区| 国产91清纯白嫩初高中在线观看| 日韩中文字幕一区二区三区| 中文成人综合网| 日韩三级在线免费观看| 一本大道综合伊人精品热热| 国产露脸91国语对白| 性做久久久久久| 亚洲视频一二三| 国产精品色在线| 精品福利av导航| 日韩欧美激情四射| 欧美日韩中字一区| 色综合久久88色综合天天免费| 国产精品影音先锋| 蜜臀久久久久久久| 日韩影院免费视频| 亚洲国产成人91porn| 日韩理论片在线| 国产精品视频线看| 国产欧美va欧美不卡在线| 久久综合色之久久综合| 日韩一区国产二区欧美三区| 欧美色涩在线第一页| 色视频成人在线观看免| 99riav一区二区三区| youjizz久久| voyeur盗摄精品| 波波电影院一区二区三区| 成人app在线| 91美女在线观看| 色婷婷国产精品久久包臀| 色美美综合视频| 欧美综合一区二区三区| 精品视频123区在线观看| 欧美老肥妇做.爰bbww视频| 欧美精选午夜久久久乱码6080| 欧美日韩成人一区| 日韩欧美色综合| 久久久久久电影| 国产精品青草久久| 亚洲免费在线播放| 亚洲一区二区在线视频| 午夜一区二区三区视频| 日韩成人一区二区| 激情六月婷婷久久| 成人精品免费视频| 欧洲精品一区二区| 日韩一区二区免费高清| 久久久久久久精| 综合av第一页| 午夜精品福利一区二区三区蜜桃| 青青草国产精品亚洲专区无| 国产毛片精品视频| 色婷婷久久一区二区三区麻豆| 欧美日韩大陆一区二区| 久久综合九色综合欧美98| 中文字幕一区二区三区乱码在线| 亚洲人成网站在线| 亚洲第一福利一区| 国产精品一区二区视频| 色欧美乱欧美15图片| 日韩欧美国产高清| 国产精品久久久一本精品| 亚洲国产日韩精品| 国产在线视频不卡二| 一本大道久久精品懂色aⅴ| 日韩欧美美女一区二区三区| 国产精品嫩草影院com| 午夜久久久久久电影| 国产盗摄一区二区三区| 欧美视频一区二区三区在线观看| 精品国产乱码91久久久久久网站| 亚洲手机成人高清视频| 久久精品国产久精国产| 99久久婷婷国产| 精品理论电影在线观看| 亚洲精品ww久久久久久p站| 久88久久88久久久| 欧美日韩在线播放一区| 久久伊人蜜桃av一区二区| 亚洲一区二区精品3399| 国产成人免费视频网站| 日韩一区二区在线看| 亚洲人123区| 国产精品18久久久久久vr| 在线不卡一区二区| 亚洲一区二区三区影院| 成人av集中营| 久久久久久免费网| 日韩国产欧美三级| 欧美性猛交xxxxxx富婆| 国产精品国产精品国产专区不蜜 | 奇米精品一区二区三区在线观看一| 成人激情免费网站| www国产成人免费观看视频 深夜成人网| 亚洲一区二区影院| 一本到高清视频免费精品| 国产精品毛片高清在线完整版| 捆绑调教一区二区三区| 在线不卡中文字幕| 水蜜桃久久夜色精品一区的特点| 97精品久久久久中文字幕| 国产精品无圣光一区二区| 激情综合色综合久久综合| 7777精品伊人久久久大香线蕉的| 依依成人精品视频| 一本久久精品一区二区| 亚洲欧美一区二区在线观看| 成人性视频网站| 国产欧美一区二区在线| 国产精品一二三在| 国产三级一区二区三区| 国产乱人伦精品一区二区在线观看 | 精品国产凹凸成av人导航| 日韩电影在线一区二区三区| 精品视频1区2区| 香蕉久久夜色精品国产使用方法| 在线看国产一区| 亚洲福利视频导航| 欧美高清一级片在线| 五月婷婷综合激情| 日韩欧美在线影院|