Skip to content
This repository was archived by the owner on Feb 4, 2023. It is now read-only.

Commit 7b69139

Browse files
authored
Update Packages' Patches
1 parent a91b9a4 commit 7b69139

File tree

63 files changed

+7603
-6101
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+7603
-6101
lines changed
Lines changed: 164 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,129 +1,164 @@
1-
/*
2-
Stream.h - base class for character-based streams.
3-
Copyright (c) 2010 David A. Mellis. All right reserved.
4-
5-
This library is free software; you can redistribute it and/or
6-
modify it under the terms of the GNU Lesser General Public
7-
License as published by the Free Software Foundation; either
8-
version 2.1 of the License, or (at your option) any later version.
9-
10-
This library is distributed in the hope that it will be useful,
11-
but WITHOUT ANY WARRANTY; without even the implied warranty of
12-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13-
Lesser General Public License for more details.
14-
15-
You should have received a copy of the GNU Lesser General Public
16-
License along with this library; if not, write to the Free Software
17-
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18-
19-
parsing functions based on TextFinder library by Michael Margolis
20-
*/
21-
22-
#ifndef Stream_h
23-
#define Stream_h
24-
25-
#include <inttypes.h>
26-
#include "Print.h"
27-
28-
// compatability macros for testing
29-
/*
30-
#define getInt() parseInt()
31-
#define getInt(ignore) parseInt(ignore)
32-
#define getFloat() parseFloat()
33-
#define getFloat(ignore) parseFloat(ignore)
34-
#define getString( pre_string, post_string, buffer, length)
35-
readBytesBetween( pre_string, terminator, buffer, length)
36-
*/
37-
38-
// This enumeration provides the lookahead options for parseInt(), parseFloat()
39-
// The rules set out here are used until either the first valid character is found
40-
// or a time out occurs due to lack of input.
41-
enum LookaheadMode{
42-
SKIP_ALL, // All invalid characters are ignored.
43-
SKIP_NONE, // Nothing is skipped, and the stream is not touched unless the first waiting character is valid.
44-
SKIP_WHITESPACE // Only tabs, spaces, line feeds & carriage returns are skipped.
45-
};
46-
47-
#define NO_IGNORE_CHAR '\x01' // a char not found in a valid ASCII numeric field
48-
49-
class Stream : public Print
50-
{
51-
protected:
52-
unsigned long _timeout; // number of milliseconds to wait for the next char before aborting timed read
53-
unsigned long _startMillis = 0; // used for timeout measurement
54-
int timedRead(); // read stream with timeout
55-
int timedPeek(); // peek stream with timeout
56-
int peekNextDigit(LookaheadMode lookahead, bool detectDecimal); // returns the next numeric digit in the stream or -1 if timeout
57-
58-
public:
59-
virtual int available() = 0;
60-
virtual int read() = 0;
61-
virtual int peek() = 0;
62-
63-
Stream() {_timeout=1000;}
64-
65-
// parsing methods
66-
67-
void setTimeout(unsigned long timeout); // sets maximum milliseconds to wait for stream data, default is 1 second
68-
unsigned long getTimeout(void) { return _timeout; }
69-
70-
bool find(char *target); // reads data from the stream until the target string is found
71-
bool find(uint8_t *target) { return find ((char *)target); }
72-
// returns true if target string is found, false if timed out (see setTimeout)
73-
74-
bool find(char *target, size_t length); // reads data from the stream until the target string of given length is found
75-
bool find(uint8_t *target, size_t length) { return find ((char *)target, length); }
76-
// returns true if target string is found, false if timed out
77-
78-
bool find(char target) { return find (&target, 1); }
79-
80-
bool findUntil(char *target, char *terminator); // as find but search ends if the terminator string is found
81-
bool findUntil(uint8_t *target, char *terminator) { return findUntil((char *)target, terminator); }
82-
83-
bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen); // as above but search ends if the terminate string is found
84-
bool findUntil(uint8_t *target, size_t targetLen, char *terminate, size_t termLen) {return findUntil((char *)target, targetLen, terminate, termLen); }
85-
86-
long parseInt(LookaheadMode lookahead = SKIP_ALL, char ignore = NO_IGNORE_CHAR);
87-
// returns the first valid (long) integer value from the current position.
88-
// lookahead determines how parseInt looks ahead in the stream.
89-
// See LookaheadMode enumeration at the top of the file.
90-
// Lookahead is terminated by the first character that is not a valid part of an integer.
91-
// Once parsing commences, 'ignore' will be skipped in the stream.
92-
93-
float parseFloat(LookaheadMode lookahead = SKIP_ALL, char ignore = NO_IGNORE_CHAR);
94-
// float version of parseInt
95-
96-
size_t readBytes( char *buffer, size_t length); // read chars from stream into buffer
97-
size_t readBytes( uint8_t *buffer, size_t length) { return readBytes((char *)buffer, length); }
98-
// terminates if length characters have been read or timeout (see setTimeout)
99-
// returns the number of characters placed in the buffer (0 means no valid data found)
100-
101-
size_t readBytesUntil( char terminator, char *buffer, size_t length); // as readBytes with terminator character
102-
size_t readBytesUntil( char terminator, uint8_t *buffer, size_t length) { return readBytesUntil(terminator, (char *)buffer, length); }
103-
// terminates if length characters have been read, timeout, or if the terminator character detected
104-
// returns the number of characters placed in the buffer (0 means no valid data found)
105-
106-
// Arduino String functions to be added here
107-
String readString();
108-
String readStringUntil(char terminator);
109-
110-
protected:
111-
long parseInt(char ignore) { return parseInt(SKIP_ALL, ignore); }
112-
float parseFloat(char ignore) { return parseFloat(SKIP_ALL, ignore); }
113-
// These overload exists for compatibility with any class that has derived
114-
// Stream and used parseFloat/Int with a custom ignore character. To keep
115-
// the public API simple, these overload remains protected.
116-
117-
struct MultiTarget {
118-
const char *str; // string you're searching for
119-
size_t len; // length of string you're searching for
120-
size_t index; // index used by the search routine.
121-
};
122-
123-
// This allows you to search for an arbitrary number of strings.
124-
// Returns index of the target that is found first or -1 if timeout occurs.
125-
int findMulti(struct MultiTarget *targets, int tCount);
126-
};
127-
128-
#undef NO_IGNORE_CHAR
129-
#endif
1+
/*
2+
Stream.h - base class for character-based streams.
3+
Copyright (c) 2010 David A. Mellis. All right reserved.
4+
5+
This library is free software; you can redistribute it and/or
6+
modify it under the terms of the GNU Lesser General Public
7+
License as published by the Free Software Foundation; either
8+
version 2.1 of the License, or (at your option) any later version.
9+
10+
This library is distributed in the hope that it will be useful,
11+
but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13+
Lesser General Public License for more details.
14+
15+
You should have received a copy of the GNU Lesser General Public
16+
License along with this library; if not, write to the Free Software
17+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18+
19+
parsing functions based on TextFinder library by Michael Margolis
20+
*/
21+
22+
#ifndef Stream_h
23+
#define Stream_h
24+
25+
#include <inttypes.h>
26+
#include "Print.h"
27+
28+
// compatability macros for testing
29+
/*
30+
#define getInt() parseInt()
31+
#define getInt(ignore) parseInt(ignore)
32+
#define getFloat() parseFloat()
33+
#define getFloat(ignore) parseFloat(ignore)
34+
#define getString( pre_string, post_string, buffer, length)
35+
readBytesBetween( pre_string, terminator, buffer, length)
36+
*/
37+
38+
// This enumeration provides the lookahead options for parseInt(), parseFloat()
39+
// The rules set out here are used until either the first valid character is found
40+
// or a time out occurs due to lack of input.
41+
enum LookaheadMode
42+
{
43+
SKIP_ALL, // All invalid characters are ignored.
44+
SKIP_NONE, // Nothing is skipped, and the stream is not touched unless the first waiting character is valid.
45+
SKIP_WHITESPACE // Only tabs, spaces, line feeds & carriage returns are skipped.
46+
};
47+
48+
#define NO_IGNORE_CHAR '\x01' // a char not found in a valid ASCII numeric field
49+
50+
class Stream : public Print
51+
{
52+
protected:
53+
unsigned long _timeout; // number of milliseconds to wait for the next char before aborting timed read
54+
unsigned long _startMillis = 0; // used for timeout measurement
55+
int timedRead(); // read stream with timeout
56+
int timedPeek(); // peek stream with timeout
57+
int peekNextDigit(LookaheadMode lookahead, bool detectDecimal); // returns the next numeric digit in the stream or -1 if timeout
58+
59+
public:
60+
virtual int available() = 0;
61+
virtual int read() = 0;
62+
virtual int peek() = 0;
63+
64+
Stream()
65+
{
66+
_timeout = 1000;
67+
}
68+
69+
// parsing methods
70+
71+
void setTimeout(unsigned long timeout); // sets maximum milliseconds to wait for stream data, default is 1 second
72+
unsigned long getTimeout(void)
73+
{
74+
return _timeout;
75+
}
76+
77+
bool find(char *target); // reads data from the stream until the target string is found
78+
bool find(uint8_t *target)
79+
{
80+
return find ((char *)target);
81+
}
82+
// returns true if target string is found, false if timed out (see setTimeout)
83+
84+
bool find(char *target, size_t length); // reads data from the stream until the target string of given length is found
85+
bool find(uint8_t *target, size_t length)
86+
{
87+
return find ((char *)target, length);
88+
}
89+
// returns true if target string is found, false if timed out
90+
91+
bool find(char target)
92+
{
93+
return find (&target, 1);
94+
}
95+
96+
bool findUntil(char *target, char *terminator); // as find but search ends if the terminator string is found
97+
bool findUntil(uint8_t *target, char *terminator)
98+
{
99+
return findUntil((char *)target, terminator);
100+
}
101+
102+
bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen); // as above but search ends if the terminate string is found
103+
bool findUntil(uint8_t *target, size_t targetLen, char *terminate, size_t termLen)
104+
{
105+
return findUntil((char *)target, targetLen, terminate, termLen);
106+
}
107+
108+
long parseInt(LookaheadMode lookahead = SKIP_ALL, char ignore = NO_IGNORE_CHAR);
109+
// returns the first valid (long) integer value from the current position.
110+
// lookahead determines how parseInt looks ahead in the stream.
111+
// See LookaheadMode enumeration at the top of the file.
112+
// Lookahead is terminated by the first character that is not a valid part of an integer.
113+
// Once parsing commences, 'ignore' will be skipped in the stream.
114+
115+
float parseFloat(LookaheadMode lookahead = SKIP_ALL, char ignore = NO_IGNORE_CHAR);
116+
// float version of parseInt
117+
118+
size_t readBytes( char *buffer, size_t length); // read chars from stream into buffer
119+
size_t readBytes( uint8_t *buffer, size_t length)
120+
{
121+
return readBytes((char *)buffer, length);
122+
}
123+
// terminates if length characters have been read or timeout (see setTimeout)
124+
// returns the number of characters placed in the buffer (0 means no valid data found)
125+
126+
size_t readBytesUntil( char terminator, char *buffer, size_t length); // as readBytes with terminator character
127+
size_t readBytesUntil( char terminator, uint8_t *buffer, size_t length)
128+
{
129+
return readBytesUntil(terminator, (char *)buffer, length);
130+
}
131+
// terminates if length characters have been read, timeout, or if the terminator character detected
132+
// returns the number of characters placed in the buffer (0 means no valid data found)
133+
134+
// Arduino String functions to be added here
135+
String readString();
136+
String readStringUntil(char terminator);
137+
138+
protected:
139+
long parseInt(char ignore)
140+
{
141+
return parseInt(SKIP_ALL, ignore);
142+
}
143+
float parseFloat(char ignore)
144+
{
145+
return parseFloat(SKIP_ALL, ignore);
146+
}
147+
// These overload exists for compatibility with any class that has derived
148+
// Stream and used parseFloat/Int with a custom ignore character. To keep
149+
// the public API simple, these overload remains protected.
150+
151+
struct MultiTarget
152+
{
153+
const char *str; // string you're searching for
154+
size_t len; // length of string you're searching for
155+
size_t index; // index used by the search routine.
156+
};
157+
158+
// This allows you to search for an arbitrary number of strings.
159+
// Returns index of the target that is found first or -1 if timeout occurs.
160+
int findMulti(struct MultiTarget *targets, int tCount);
161+
};
162+
163+
#undef NO_IGNORE_CHAR
164+
#endif

0 commit comments

Comments
 (0)