|
|
|
|
|
|
|
|
// as find but search ends if the terminator string is found |
|
|
// as find but search ends if the terminator string is found |
|
|
bool Stream::findUntil(const char *target, const char *terminator) |
|
|
bool Stream::findUntil(const char *target, const char *terminator) |
|
|
{ |
|
|
{ |
|
|
|
|
|
if(target == NULL) return true; |
|
|
|
|
|
if(terminator == NULL) return true; |
|
|
return findUntil(target, strlen(target), terminator, strlen(terminator)); |
|
|
return findUntil(target, strlen(target), terminator, strlen(terminator)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
size_t index = 0; // maximum target string length is 64k bytes! |
|
|
size_t index = 0; // maximum target string length is 64k bytes! |
|
|
size_t termIndex = 0; |
|
|
size_t termIndex = 0; |
|
|
int c; |
|
|
int c; |
|
|
|
|
|
if( target == NULL) return true; |
|
|
|
|
|
if( *target == 0) return true; // return true if target is a null string |
|
|
|
|
|
if(terminator == NULL) return true; |
|
|
|
|
|
|
|
|
if( *target == 0) |
|
|
|
|
|
return true; // return true if target is a null string |
|
|
|
|
|
while( (c = timedRead()) > 0){ |
|
|
while( (c = timedRead()) > 0){ |
|
|
if( c == target[index]){ |
|
|
if( c == target[index]){ |
|
|
//////Serial.print("found "); Serial.write(c); Serial.print("index now"); Serial.println(index+1); |
|
|
//////Serial.print("found "); Serial.write(c); Serial.print("index now"); Serial.println(index+1); |