Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

koala.c

Go to the documentation of this file.
00001 /*-------------------------------------------------------------------- 00002 * koala.c - KoreBot Library - Koala Robot Support for KoreBot 00003 *-------------------------------------------------------------------- 00004 * $Id: koala.c,v 1.1 2004/09/22 08:29:15 pbureau Exp $ 00005 *-------------------------------------------------------------------- 00006 * $Author: pbureau $ 00007 * $Date: 2004/09/22 08:29:15 $ 00008 * $Revision: 1.1 $ 00009 *--------------------------------------------------------------------*/ 00010 00011 #include "korebot.h" 00012 00013 00028 char * koa_get_nextValue(char * current, char * value) 00029 { 00030 while(*current != ',' && *current != '\n') 00031 { 00032 *value = *current; 00033 value++; 00034 current++; 00035 } 00036 00037 if(*current == '\n') 00038 return NULL; 00039 else 00040 { 00041 *value = '\0'; 00042 return current+1; 00043 } 00044 } 00045 00046 /*--------------------------------------------------------------------*/ 00050 int koa_getOSVersion( knet_dev_t * dev , 00051 unsigned char *version , 00052 unsigned char *revision, 00053 unsigned char *pversion, 00054 unsigned char *prevision) 00055 { 00056 char *p; 00057 char buf[16]; 00058 int rc; 00059 00060 if ((rc=knet_printf( dev , "B\r\n")) < 0 ) 00061 return rc; 00062 00063 if ((rc=knet_read_string( dev , buf , sizeof(buf)-1 , '\n' )) < 0 ) 00064 return rc; 00065 00066 /* bad acknowledge */ 00067 if ( buf[0] != 'b' ) 00068 return 0; 00069 00070 p = &buf[2]; 00071 00072 if ( version != NULL ) { 00073 *version = atoi(p); 00074 } 00075 00076 if ( revision != NULL ) { 00077 00078 while (*p!='\0' && *p!='.' ) p++; 00079 if (*p == '.' ) { 00080 p++; 00081 *revision = atoi(p); 00082 } 00083 } 00084 00085 if ( pversion != NULL ) { 00086 00087 while (*p!='\0' && *p!=',' ) p++; 00088 if (*p == ',' ) { 00089 p++; 00090 *pversion = atoi(p); 00091 } 00092 } 00093 00094 if ( prevision != NULL ) { 00095 00096 while (*p!='\0' && *p!='.' ) p++; 00097 if (*p == '.' ) { 00098 p++; 00099 *prevision = atoi(p); 00100 } 00101 } 00102 00103 return 0; 00104 } 00105 00106 /*--------------------------------------------------------------------*/ 00118 int koa_setSpeed( knet_dev_t * dev , short int left , short int right ) 00119 { 00120 char buf[32]; 00121 int rc; 00122 00123 if ((rc=knet_printf( dev , "D,%d,%d\r\n" , left , right )) < 0 ) 00124 return rc; 00125 00126 if ((rc=knet_read_string( dev , buf , sizeof(buf)-1 , '\n' )) < 0 ) 00127 return rc; 00128 00129 /* bad acknowledge */ 00130 if ( buf[0] != 'd' ) 00131 return 0; 00132 00133 return 1; 00134 } 00135 00143 int koa_readProximity(knet_dev_t * dev, int * senstable) 00144 { 00145 char buf[256]; 00146 char val[8]; 00147 char * scan; 00148 int rc; 00149 00150 if ((rc=knet_printf( dev , "N\r\n" )) < 0 ) 00151 return rc; 00152 00153 if ((rc=knet_read_string( dev , buf , sizeof(buf)-1 , '\n' )) < 0 ) 00154 return rc; 00155 00156 /* bad acknowledge */ 00157 if ( buf[0] != 'n' ) 00158 return 0; 00159 00160 scan = buf+2; 00161 while(scan) { 00162 scan = koa_get_nextValue(scan,val); 00163 *senstable = atoi(val); 00164 senstable++; 00165 } 00166 00167 return 1; 00168 }

Generated on Thu Nov 17 15:28:59 2005 for KoreBot Library by doxygen 1.3.7