packet.cc
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <stdio.h>
00031 #include <errno.h>
00032 #include <string.h>
00033 #include <packet.h>
00034 #include <unistd.h>
00035 #include <stdlib.h>
00036 #include "clodbuster.h"
00037
00038
00039
00040 void GRASPPacket::Print() {
00041 if (packet) {
00042 printf("\"");
00043 for(int i=0;i<(int)size;i++) {
00044 printf("%u ", packet[i]);
00045 }
00046 puts("\"");
00047 }
00048 }
00049
00050 void GRASPPacket::PrintHex() {
00051 if (packet) {
00052 printf("\"");
00053 for(int i=0;i<(int)size;i++) {
00054 printf("0x%.2x ", packet[i]);
00055 }
00056 puts("\"");
00057 }
00058 }
00059
00060
00061
00062 int GRASPPacket::Receive( int fd,unsigned char command)
00063 {
00064 switch(command)
00065 {
00066 case ECHO_SERVO_VALUES:
00067 case ECHO_MAX_SERVO_LIMITS:
00068 case ECHO_MIN_SERVO_LIMITS:
00069 case ECHO_CEN_SERVO_LIMITS:
00070 retsize=8;
00071 break;
00072 case ECHO_ENCODER_COUNTS: retsize=6; break;
00073 case ECHO_ENCODER_COUNTS_TS:
00074 case ECHO_ADC: retsize=10;break;
00075 case READ_ID:retsize=1;break;
00076 case ECHO_SLEEP_MODE: retsize=1;break;
00077 default:
00078 retsize=0;return(1);
00079 }
00080
00081 memset(packet,0,retsize);
00082
00083 int cnt = 0;
00084
00085 cnt=read( fd, packet, retsize);
00086 if (cnt!=(int)retsize)
00087 printf("wrong read size: asked %d got %d\n",retsize,cnt);
00088
00089 return(0);
00090 }
00091
00092 int GRASPPacket::Build(unsigned char command, unsigned char data)
00093 {
00094
00095 packet[0]=0xFF;
00096 packet[1]=command;
00097 packet[2]=data;
00098 size=3;
00099 return(0);
00100 }
00101
00102 int GRASPPacket::Build(unsigned char command)
00103 {
00104
00105 packet[0]=0xFF;
00106 packet[1]=command;
00107 packet[2]=0x00;
00108 size=3;
00109 return(0);
00110 }
00111
00112 int GRASPPacket::Send(int fd)
00113 {
00114 int cnt=0;
00115 cnt = write( fd, packet, size );
00116
00117 if(cnt !=(int)size)
00118 {
00119 perror("Send");
00120 return(1);
00121 }
00122
00123
00124
00125
00126
00127
00128
00129 return(0);
00130 }
Last updated 12 September 2005 21:38:45
|