1am

Committer:
sowmy87
Date:
Thu Dec 16 09:25:25 2010 +0000
Revision:
3:94b650d0861d
Parent:
2:9e0d3f159ec3
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sowmy87 0:d2dcb47dc8e9 1 /**
sowmy87 0:d2dcb47dc8e9 2 * Includes
sowmy87 0:d2dcb47dc8e9 3 */
sowmy87 0:d2dcb47dc8e9 4 #include "Serializer.h"
sowmy87 0:d2dcb47dc8e9 5
sowmy87 3:94b650d0861d 6 //Serial pcc(USBTX, USBRX);
sowmy87 0:d2dcb47dc8e9 7
sowmy87 0:d2dcb47dc8e9 8 Serializer::Serializer() {
sowmy87 0:d2dcb47dc8e9 9 serial=new Serial(p28,p27);
sowmy87 0:d2dcb47dc8e9 10 serial->baud(BAUD);
sowmy87 0:d2dcb47dc8e9 11 Initialize();
sowmy87 0:d2dcb47dc8e9 12 }
sowmy87 0:d2dcb47dc8e9 13
sowmy87 0:d2dcb47dc8e9 14 int Serializer::Initialize() {
sowmy87 0:d2dcb47dc8e9 15 char c1=0;
sowmy87 0:d2dcb47dc8e9 16 DigitalOut led1(LED1);
sowmy87 0:d2dcb47dc8e9 17 DigitalOut led2(LED2);
sowmy87 0:d2dcb47dc8e9 18 DigitalOut led3(LED3);
sowmy87 0:d2dcb47dc8e9 19 DigitalOut led4(LED4);
sowmy87 0:d2dcb47dc8e9 20
sowmy87 0:d2dcb47dc8e9 21 led1=1;
sowmy87 0:d2dcb47dc8e9 22 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 23 serial->printf("fw\r");
sowmy87 0:d2dcb47dc8e9 24 wait(.25);
sowmy87 0:d2dcb47dc8e9 25 led2=1;
sowmy87 0:d2dcb47dc8e9 26 while (serial->readable()) {
sowmy87 0:d2dcb47dc8e9 27 c1=serial->getc();
sowmy87 0:d2dcb47dc8e9 28 }
sowmy87 0:d2dcb47dc8e9 29 if (c1!='>')
sowmy87 1:9a7e6c978adb 30 for (int i=0;i<5;i++) {
sowmy87 0:d2dcb47dc8e9 31 led1=led2=led3=led4=1;
sowmy87 3:94b650d0861d 32 wait(0.1);
sowmy87 0:d2dcb47dc8e9 33 led1=led2=led3=led4=0;
sowmy87 3:94b650d0861d 34 wait(0.1);
sowmy87 0:d2dcb47dc8e9 35 }
sowmy87 0:d2dcb47dc8e9 36 wait(.25);
sowmy87 0:d2dcb47dc8e9 37 led3=1;
sowmy87 0:d2dcb47dc8e9 38 wait(.25);
sowmy87 0:d2dcb47dc8e9 39 led4=1;
sowmy87 3:94b650d0861d 40 SetVPID(1,0,0,100);
sowmy87 0:d2dcb47dc8e9 41 wait(0.25);
sowmy87 0:d2dcb47dc8e9 42 led1=0;
sowmy87 0:d2dcb47dc8e9 43 wait(.25);
sowmy87 0:d2dcb47dc8e9 44 ClearCount();
sowmy87 0:d2dcb47dc8e9 45 led2=0;
sowmy87 0:d2dcb47dc8e9 46 wait(.25);
sowmy87 0:d2dcb47dc8e9 47 led3=0;
sowmy87 0:d2dcb47dc8e9 48 wait(.25);
sowmy87 0:d2dcb47dc8e9 49 led4=0;
sowmy87 0:d2dcb47dc8e9 50 _lPWM=_rPWM=0;
sowmy87 1:9a7e6c978adb 51 _isBusy=0;
sowmy87 1:9a7e6c978adb 52 _irqIsBusy=0;
sowmy87 0:d2dcb47dc8e9 53 // serial->attach(this, &Serializer::InterruptHandler);
sowmy87 0:d2dcb47dc8e9 54
sowmy87 0:d2dcb47dc8e9 55 return 0;
sowmy87 0:d2dcb47dc8e9 56 }
sowmy87 0:d2dcb47dc8e9 57
sowmy87 0:d2dcb47dc8e9 58 Serializer::~Serializer() {
sowmy87 0:d2dcb47dc8e9 59 delete serial;
sowmy87 0:d2dcb47dc8e9 60 }
sowmy87 0:d2dcb47dc8e9 61
sowmy87 0:d2dcb47dc8e9 62 void Serializer::Stop() {
sowmy87 0:d2dcb47dc8e9 63 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 64 serial->printf("stop\r");
sowmy87 0:d2dcb47dc8e9 65 leftSpeed=rightSpeed=0;
sowmy87 0:d2dcb47dc8e9 66 // pc.printf("Stop\r\n");
sowmy87 0:d2dcb47dc8e9 67 }
sowmy87 0:d2dcb47dc8e9 68
sowmy87 0:d2dcb47dc8e9 69 void Serializer::ClearCountLeft() {
sowmy87 0:d2dcb47dc8e9 70 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 71 serial->printf("clrenc 1\r");
sowmy87 0:d2dcb47dc8e9 72 }
sowmy87 0:d2dcb47dc8e9 73 void Serializer::ClearCountRight() {
sowmy87 0:d2dcb47dc8e9 74 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 75 serial->printf("clrenc 2\r");
sowmy87 0:d2dcb47dc8e9 76 }
sowmy87 0:d2dcb47dc8e9 77
sowmy87 0:d2dcb47dc8e9 78 void Serializer::ClearCount() {
sowmy87 0:d2dcb47dc8e9 79 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 80 serial->printf("clrenc 1 2\r");
sowmy87 0:d2dcb47dc8e9 81 }
sowmy87 0:d2dcb47dc8e9 82
sowmy87 0:d2dcb47dc8e9 83 void Serializer::SetSpeedLeft(int inPsec) {
sowmy87 0:d2dcb47dc8e9 84 if (inPsec>MAX_SPEED)inPsec=MAX_SPEED;
sowmy87 0:d2dcb47dc8e9 85 if (inPsec<-MAX_SPEED)inPsec=-MAX_SPEED;
sowmy87 0:d2dcb47dc8e9 86 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 87 serial->printf("mogo 1:%i\r", -inPsec);
sowmy87 0:d2dcb47dc8e9 88 leftSpeed=inPsec;
sowmy87 0:d2dcb47dc8e9 89 }
sowmy87 0:d2dcb47dc8e9 90 void Serializer::SetSpeedRight(int inPsec) {
sowmy87 0:d2dcb47dc8e9 91 if (inPsec>MAX_SPEED)inPsec=MAX_SPEED;
sowmy87 0:d2dcb47dc8e9 92 if (inPsec<-MAX_SPEED)inPsec=-MAX_SPEED;
sowmy87 0:d2dcb47dc8e9 93 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 94 serial->printf("mogo 2:%i\r", -inPsec);
sowmy87 0:d2dcb47dc8e9 95 rightSpeed=inPsec;
sowmy87 0:d2dcb47dc8e9 96 }
sowmy87 0:d2dcb47dc8e9 97
sowmy87 0:d2dcb47dc8e9 98 void Serializer::SetSpeed(int inPsec) {
sowmy87 0:d2dcb47dc8e9 99 if (inPsec>MAX_SPEED)inPsec=MAX_SPEED;
sowmy87 0:d2dcb47dc8e9 100 if (inPsec<-MAX_SPEED)inPsec=-MAX_SPEED;
sowmy87 0:d2dcb47dc8e9 101 inPsec*=-1;
sowmy87 0:d2dcb47dc8e9 102 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 103 serial->printf("mogo 1:%i 2:%i\r", inPsec, inPsec);
sowmy87 0:d2dcb47dc8e9 104 leftSpeed=rightSpeed=inPsec;
sowmy87 0:d2dcb47dc8e9 105 }
sowmy87 0:d2dcb47dc8e9 106
sowmy87 0:d2dcb47dc8e9 107 void Serializer::SetVPID(int p,int i,int d,int l) {
sowmy87 0:d2dcb47dc8e9 108 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 109 serial->printf("vpid %i:%i:%i:%i\r", p,i,d,l);
sowmy87 0:d2dcb47dc8e9 110 }
sowmy87 0:d2dcb47dc8e9 111
sowmy87 0:d2dcb47dc8e9 112 void Serializer::SetDPID(int p,int i,int d,int a) {
sowmy87 0:d2dcb47dc8e9 113 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 114 serial->printf("dpid %i:%i:%i:%i\r", p,i,d,a);
sowmy87 0:d2dcb47dc8e9 115 }
sowmy87 0:d2dcb47dc8e9 116
sowmy87 0:d2dcb47dc8e9 117 void Serializer::DiGoLeft(int dist,int inPsec) {
sowmy87 1:9a7e6c978adb 118 /* if(_isBusy)
sowmy87 1:9a7e6c978adb 119 return;
sowmy87 1:9a7e6c978adb 120 _isBusy=1;
sowmy87 1:9a7e6c978adb 121 */
sowmy87 0:d2dcb47dc8e9 122 if (serial->writeable())
sowmy87 1:9a7e6c978adb 123 serial->printf("digo 1:%i:%i\r",dist*PULSES_PER_INCH, inPsec);
sowmy87 0:d2dcb47dc8e9 124 }
sowmy87 0:d2dcb47dc8e9 125 void Serializer::DiGoRight(int dist,int inPsec) {
sowmy87 1:9a7e6c978adb 126 /* if(_isBusy)
sowmy87 1:9a7e6c978adb 127 return;
sowmy87 1:9a7e6c978adb 128 _isBusy=1;
sowmy87 1:9a7e6c978adb 129 */
sowmy87 0:d2dcb47dc8e9 130 if (serial->writeable())
sowmy87 1:9a7e6c978adb 131 serial->printf("digo 2:%i:%i\r",dist*PULSES_PER_INCH, inPsec);
sowmy87 0:d2dcb47dc8e9 132 }
sowmy87 0:d2dcb47dc8e9 133 void Serializer::DiGo(int dist,int inPsec) {
sowmy87 1:9a7e6c978adb 134 /* if(_isBusy)
sowmy87 1:9a7e6c978adb 135 return;
sowmy87 1:9a7e6c978adb 136 _isBusy=1;
sowmy87 1:9a7e6c978adb 137 */
sowmy87 0:d2dcb47dc8e9 138 if (serial->writeable()) {
sowmy87 1:9a7e6c978adb 139 serial->printf("digo 1:%i:%i 2:%i:%i\r", \
sowmy87 0:d2dcb47dc8e9 140 -dist*PULSES_PER_INCH, \
sowmy87 1:9a7e6c978adb 141 inPsec, \
sowmy87 0:d2dcb47dc8e9 142 -dist*PULSES_PER_INCH, \
sowmy87 0:d2dcb47dc8e9 143 inPsec);
sowmy87 0:d2dcb47dc8e9 144
sowmy87 0:d2dcb47dc8e9 145 }
sowmy87 0:d2dcb47dc8e9 146 }
sowmy87 0:d2dcb47dc8e9 147
sowmy87 1:9a7e6c978adb 148 int Serializer::IsBusy() {
sowmy87 1:9a7e6c978adb 149
sowmy87 1:9a7e6c978adb 150 if (_isBusy&&serial->writeable()) {
sowmy87 1:9a7e6c978adb 151 serial->printf("pids\r");
sowmy87 1:9a7e6c978adb 152 wait(0.01);
sowmy87 1:9a7e6c978adb 153 }
sowmy87 1:9a7e6c978adb 154 return _isBusy;
sowmy87 1:9a7e6c978adb 155 }
sowmy87 1:9a7e6c978adb 156 /*
sowmy87 1:9a7e6c978adb 157 char tmp=0;
sowmy87 1:9a7e6c978adb 158 if (_isBusy) {
sowmy87 1:9a7e6c978adb 159 if (serial->writeable()) {
sowmy87 1:9a7e6c978adb 160 serial->printf("pids\r");
sowmy87 1:9a7e6c978adb 161 }
sowmy87 1:9a7e6c978adb 162 wait(0.1);
sowmy87 1:9a7e6c978adb 163 while (serial->readable()) {
sowmy87 1:9a7e6c978adb 164 tmp=serial->getc();
sowmy87 1:9a7e6c978adb 165 pcc.putc(tmp);
sowmy87 1:9a7e6c978adb 166 if (tmp=='1')
sowmy87 1:9a7e6c978adb 167 _isBusy=1;
sowmy87 1:9a7e6c978adb 168 else if (tmp=='0')
sowmy87 1:9a7e6c978adb 169 _isBusy=0;
sowmy87 1:9a7e6c978adb 170 }
sowmy87 1:9a7e6c978adb 171 }
sowmy87 1:9a7e6c978adb 172 pcc.printf("IsBusy = %i\n\r",_isBusy);
sowmy87 1:9a7e6c978adb 173 return _isBusy;
sowmy87 1:9a7e6c978adb 174 */
sowmy87 1:9a7e6c978adb 175
sowmy87 1:9a7e6c978adb 176
sowmy87 1:9a7e6c978adb 177
sowmy87 0:d2dcb47dc8e9 178 void Serializer::TurnLeft(int deg) {
sowmy87 0:d2dcb47dc8e9 179
sowmy87 0:d2dcb47dc8e9 180 }
sowmy87 0:d2dcb47dc8e9 181
sowmy87 0:d2dcb47dc8e9 182 void Serializer::TurnRight(int deg) {
sowmy87 0:d2dcb47dc8e9 183
sowmy87 0:d2dcb47dc8e9 184
sowmy87 0:d2dcb47dc8e9 185 }
sowmy87 0:d2dcb47dc8e9 186 void Serializer::PivetLeft(int deg) {
sowmy87 0:d2dcb47dc8e9 187
sowmy87 1:9a7e6c978adb 188 Stop();
sowmy87 1:9a7e6c978adb 189 deg=deg*PIVET_ADJUSTMENT;
sowmy87 0:d2dcb47dc8e9 190 wait(0.1);
sowmy87 0:d2dcb47dc8e9 191 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 192 serial->printf("digo 1:%i:%i 2:%i:%i\r",deg,PIVET_SPEED,-deg,PIVET_SPEED);
sowmy87 0:d2dcb47dc8e9 193
sowmy87 0:d2dcb47dc8e9 194 }
sowmy87 0:d2dcb47dc8e9 195 void Serializer::PivetRight(int deg) {
sowmy87 0:d2dcb47dc8e9 196 this->Stop();
sowmy87 1:9a7e6c978adb 197 deg=deg*PIVET_ADJUSTMENT;
sowmy87 0:d2dcb47dc8e9 198 wait(0.1);
sowmy87 0:d2dcb47dc8e9 199 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 200 serial->printf("digo 1:%i:%i 2:%i:%i\r",-deg,PIVET_SPEED,deg,PIVET_SPEED);
sowmy87 0:d2dcb47dc8e9 201
sowmy87 0:d2dcb47dc8e9 202 }
sowmy87 0:d2dcb47dc8e9 203
sowmy87 0:d2dcb47dc8e9 204 void Serializer::SetLeftPWM(int pwm) {
sowmy87 0:d2dcb47dc8e9 205 _lPWM=-pwm;
sowmy87 0:d2dcb47dc8e9 206 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 207 serial->printf("pwm 1:%i\r",_lPWM);
sowmy87 0:d2dcb47dc8e9 208
sowmy87 0:d2dcb47dc8e9 209 }
sowmy87 0:d2dcb47dc8e9 210
sowmy87 0:d2dcb47dc8e9 211 void Serializer::SetRightPWM(int pwm) {
sowmy87 0:d2dcb47dc8e9 212 _rPWM=-pwm;
sowmy87 0:d2dcb47dc8e9 213 if (serial->writeable())
sowmy87 0:d2dcb47dc8e9 214 serial->printf("pwm 2:%i\r",_rPWM);
sowmy87 0:d2dcb47dc8e9 215 }
sowmy87 0:d2dcb47dc8e9 216
sowmy87 3:94b650d0861d 217 void Serializer::SetPWM(int pwm){
sowmy87 3:94b650d0861d 218 _rPWM=-pwm;
sowmy87 3:94b650d0861d 219 _lPWM=-pwm;
sowmy87 3:94b650d0861d 220 if (serial->writeable())
sowmy87 3:94b650d0861d 221 serial->printf("pwm 1:%i 2:%i\r",_lPWM, _rPWM);
sowmy87 3:94b650d0861d 222 }
sowmy87 3:94b650d0861d 223
sowmy87 3:94b650d0861d 224 void Serializer::SetPWM(int lPwm, int rPwm){
sowmy87 3:94b650d0861d 225 _rPWM=-rPwm;
sowmy87 3:94b650d0861d 226 _lPWM=-lPwm;
sowmy87 3:94b650d0861d 227 if (serial->writeable())
sowmy87 3:94b650d0861d 228 serial->printf("pwm 1:%i 2:%i\r",_lPWM, _rPWM);
sowmy87 3:94b650d0861d 229 }
sowmy87 3:94b650d0861d 230
sowmy87 0:d2dcb47dc8e9 231 int Serializer::GetCountLeft() {
sowmy87 0:d2dcb47dc8e9 232 if (serial->writeable()) {
sowmy87 0:d2dcb47dc8e9 233 serial->printf("getenc 1\r");
sowmy87 1:9a7e6c978adb 234 // pcc.printf("Sendreq\t");
sowmy87 0:d2dcb47dc8e9 235 }
sowmy87 0:d2dcb47dc8e9 236 wait(0.01);
sowmy87 0:d2dcb47dc8e9 237 int ret=0;
sowmy87 0:d2dcb47dc8e9 238 char c=0;
sowmy87 0:d2dcb47dc8e9 239 while (serial->readable()) {
sowmy87 1:9a7e6c978adb 240 // pcc.printf("Reading");
sowmy87 0:d2dcb47dc8e9 241 c=serial->getc();
sowmy87 1:9a7e6c978adb 242 // pcc.putc(c);
sowmy87 0:d2dcb47dc8e9 243 if (c>='0'&&c<='9') {
sowmy87 0:d2dcb47dc8e9 244 c-='0';
sowmy87 0:d2dcb47dc8e9 245 ret*=10;
sowmy87 0:d2dcb47dc8e9 246 ret+=c;
sowmy87 0:d2dcb47dc8e9 247 }
sowmy87 0:d2dcb47dc8e9 248 }
sowmy87 0:d2dcb47dc8e9 249 return ret;
sowmy87 0:d2dcb47dc8e9 250 }
sowmy87 0:d2dcb47dc8e9 251
sowmy87 0:d2dcb47dc8e9 252 int Serializer::GetCountRight() {
sowmy87 0:d2dcb47dc8e9 253 if (serial->writeable()) {
sowmy87 0:d2dcb47dc8e9 254 serial->printf("getenc 2\r");
sowmy87 1:9a7e6c978adb 255 // pcc.printf("Sendreq\t");
sowmy87 0:d2dcb47dc8e9 256 }
sowmy87 0:d2dcb47dc8e9 257 wait(0.01);
sowmy87 0:d2dcb47dc8e9 258 int ret=0;
sowmy87 0:d2dcb47dc8e9 259 char c=0;
sowmy87 0:d2dcb47dc8e9 260 while (serial->readable()) {
sowmy87 1:9a7e6c978adb 261 // pcc.printf("Reading");
sowmy87 0:d2dcb47dc8e9 262 c=serial->getc();
sowmy87 1:9a7e6c978adb 263 // pcc.putc(c);
sowmy87 0:d2dcb47dc8e9 264 if (c>='0'&&c<='9') {
sowmy87 0:d2dcb47dc8e9 265 c-='0';
sowmy87 0:d2dcb47dc8e9 266 ret*=10;
sowmy87 0:d2dcb47dc8e9 267 ret+=c;
sowmy87 0:d2dcb47dc8e9 268 }
sowmy87 0:d2dcb47dc8e9 269 }
sowmy87 0:d2dcb47dc8e9 270 return ret;
sowmy87 0:d2dcb47dc8e9 271 }
sowmy87 0:d2dcb47dc8e9 272 int Serializer::GetCount() {
sowmy87 0:d2dcb47dc8e9 273 return GetCountLeft();
sowmy87 0:d2dcb47dc8e9 274 }
sowmy87 2:9e0d3f159ec3 275 float Serializer::GetDistanceLeft() {
sowmy87 2:9e0d3f159ec3 276 return float(GetCountLeft()*PULSE_DISTANCE);
sowmy87 0:d2dcb47dc8e9 277 }
sowmy87 2:9e0d3f159ec3 278 float Serializer::GetDistanceRight() {
sowmy87 2:9e0d3f159ec3 279 return float(GetCountRight()*PULSE_DISTANCE);
sowmy87 0:d2dcb47dc8e9 280 }
sowmy87 2:9e0d3f159ec3 281 float Serializer::GetDistance() {
sowmy87 2:9e0d3f159ec3 282 return float(GetCountLeft()*PULSE_DISTANCE);
sowmy87 0:d2dcb47dc8e9 283 }
sowmy87 0:d2dcb47dc8e9 284
sowmy87 0:d2dcb47dc8e9 285
sowmy87 0:d2dcb47dc8e9 286 //unused and untested
sowmy87 0:d2dcb47dc8e9 287 int Serializer::GetReply() {
sowmy87 0:d2dcb47dc8e9 288 int returnValue=0;
sowmy87 0:d2dcb47dc8e9 289 char c=0;
sowmy87 0:d2dcb47dc8e9 290 char readyToReturn=0;
sowmy87 0:d2dcb47dc8e9 291 char ack=0;
sowmy87 0:d2dcb47dc8e9 292 char nack=0;
sowmy87 0:d2dcb47dc8e9 293 wait(0.0001);
sowmy87 0:d2dcb47dc8e9 294 while (serial->readable()) {
sowmy87 0:d2dcb47dc8e9 295 c=serial->getc();
sowmy87 0:d2dcb47dc8e9 296 if (readyToReturn)continue;
sowmy87 0:d2dcb47dc8e9 297 if (c=='N'&&nack==0)nack=1;
sowmy87 0:d2dcb47dc8e9 298 else nack=0;
sowmy87 0:d2dcb47dc8e9 299 if (c=='A'&&ack==0)ack++;
sowmy87 0:d2dcb47dc8e9 300 else ack=nack=0;
sowmy87 0:d2dcb47dc8e9 301 if (c=='C'&&ack==1)ack++;
sowmy87 0:d2dcb47dc8e9 302 else ack=nack=0;
sowmy87 0:d2dcb47dc8e9 303 if (c=='K'&&ack==2)ack++;
sowmy87 0:d2dcb47dc8e9 304 else ack=nack=0;
sowmy87 0:d2dcb47dc8e9 305 if (ack==3)
sowmy87 0:d2dcb47dc8e9 306 if (nack==1)
sowmy87 0:d2dcb47dc8e9 307 returnValue=1;
sowmy87 0:d2dcb47dc8e9 308 else
sowmy87 0:d2dcb47dc8e9 309 returnValue=0;
sowmy87 0:d2dcb47dc8e9 310 if (c=='>')readyToReturn=1;
sowmy87 0:d2dcb47dc8e9 311 }
sowmy87 0:d2dcb47dc8e9 312 return returnValue;
sowmy87 0:d2dcb47dc8e9 313 }
sowmy87 0:d2dcb47dc8e9 314
sowmy87 0:d2dcb47dc8e9 315
sowmy87 0:d2dcb47dc8e9 316 void Serializer::InterruptHandler() {
sowmy87 1:9a7e6c978adb 317 char c=0;
sowmy87 1:9a7e6c978adb 318 char bsy=_isBusy;
sowmy87 0:d2dcb47dc8e9 319 while (serial->readable()) {
sowmy87 0:d2dcb47dc8e9 320 c=serial->getc();
sowmy87 1:9a7e6c978adb 321 if (!_isBusy)
sowmy87 1:9a7e6c978adb 322 continue;
sowmy87 1:9a7e6c978adb 323
sowmy87 1:9a7e6c978adb 324 if (c=='1')
sowmy87 1:9a7e6c978adb 325 bsy=1;
sowmy87 1:9a7e6c978adb 326 else if (c=='0')
sowmy87 1:9a7e6c978adb 327 bsy=0;
sowmy87 0:d2dcb47dc8e9 328 }
sowmy87 1:9a7e6c978adb 329 if (_isBusy&&!bsy) _isBusy=0;
sowmy87 1:9a7e6c978adb 330 }