boolean processPIDCrit(BowlerPacket * Packet){ uint8_t i=0; switch (Packet->use.head.RPC){ case KPID: for(i=0;i<getNumberOfPidChannels();i++){ getPidGroupDataTable(i)->config.Enabled = true; setOutput(i,0.0); getPidGroupDataTable(i)->config.Enabled = false; getPidVelocityDataTable(i)->enabled=false; getPidGroupDataTable(i)->Output=0.0; } READY(Packet,zone,0); break; case CPID: if(ConfigPID(Packet)){ READY(Packet,zone,1); }else ERR(Packet,zone,1); break; case CPDV: if(ConfigPDVelovity(Packet)){ READY(Packet,zone,1); }else ERR(Packet,zone,1); break; default: return false; } return true; }
/*! process command * * \return A value : braitenberg end mode * - 0 if success * - <0 if any error */ int process_command () { char Buffer[MAXBUFFERSIZE]; int narg; int out=0; string larg[MAX_ARG]; char *bptr; // receive and interpret commands (wait) if ( readLine(Buffer) >0 ) { #ifdef DEBUG printf("%c length %d |%s|",Buffer[0],strlen(Buffer),Buffer); #endif if (strlen(Buffer)>2) { /* Process all the args */ bptr = Buffer + 2; narg=getArgs(bptr,larg); } switch(Buffer[0]) { case 'A': out=braitenberg(narg,larg); break; case 'B': revisionOS(narg,larg); break; case 'C': configureOS(narg,larg); break; case 'D': SetSpeed(narg,larg); break; case 'E': GetSpeed(narg,larg); break; case 'F': SetTargetProfile(narg,larg); break; case 'G': GetUS(narg,larg); break; case 'H': ConfigPID(narg,larg); break; case 'I': SetEncPosition(narg,larg); break; case 'J': ConfigSpeedProfile(narg,larg); break; case 'K': SetLED(narg,larg); break; case 'L': SetSpeedOpenLoop(narg,larg); break; case 'M': InitMot(narg,larg); break; case 'N': ReadProxSensors(narg,larg); break; case 'O': ReadAmbSensors(narg,larg); break; case 'P': SetTargetPosition(narg,larg); break; case 'R': ReadPos(narg,larg); break; case 'V': batStatus(narg,larg); break; case 'X': BinaryRead(narg,larg); break; case 'Z': tstampRST(narg,larg); break; default: sprintf(Buffer,"%c\r\n",ERROR_CMD_CHAR); com_send(Buffer, strlen(Buffer)); } } return out; }