1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-24 19:42:27 +03:00

Move some code to flash and fix prototypes

This commit is contained in:
Ivan Grokhotkov
2014-12-01 00:34:59 +03:00
parent ea599139d5
commit 160f99c31c
5 changed files with 190 additions and 187 deletions

View File

@ -22,12 +22,14 @@
#include "Arduino.h"
#include "Stream.h"
extern "C"{
#include "c_types.h"
}
#define PARSE_TIMEOUT 1000 // default number of milli-seconds to wait
#define NO_SKIP_CHAR 1 // a magic char not found in a valid ASCII numeric field
// private method to read stream with timeout
int Stream::timedRead()
int ICACHE_FLASH_ATTR Stream::timedRead()
{
int c;
_startMillis = millis();
@ -39,7 +41,7 @@ int Stream::timedRead()
}
// private method to peek stream with timeout
int Stream::timedPeek()
int ICACHE_FLASH_ATTR Stream::timedPeek()
{
int c;
_startMillis = millis();
@ -52,7 +54,7 @@ int Stream::timedPeek()
// returns peek of the next digit in the stream or -1 if timeout
// discards non-numeric characters
int Stream::peekNextDigit()
int ICACHE_FLASH_ATTR Stream::peekNextDigit()
{
int c;
while (1) {
@ -67,26 +69,26 @@ int Stream::peekNextDigit()
// Public Methods
//////////////////////////////////////////////////////////////
void Stream::setTimeout(unsigned long timeout) // sets the maximum number of milliseconds to wait
void ICACHE_FLASH_ATTR Stream::setTimeout(unsigned long timeout) // sets the maximum number of milliseconds to wait
{
_timeout = timeout;
}
// find returns true if the target string is found
bool Stream::find(char *target)
bool ICACHE_FLASH_ATTR Stream::find(const char *target)
{
return findUntil(target, (char*)"");
}
// reads data from the stream until the target string of given length is found
// returns true if target string is found, false if timed out
bool Stream::find(char *target, size_t length)
bool ICACHE_FLASH_ATTR Stream::find(const char *target, size_t length)
{
return findUntil(target, length, NULL, 0);
}
// as find but search ends if the terminator string is found
bool Stream::findUntil(char *target, char *terminator)
bool ICACHE_FLASH_ATTR Stream::findUntil(const char *target, const char *terminator)
{
return findUntil(target, strlen(target), terminator, strlen(terminator));
}
@ -94,7 +96,7 @@ bool Stream::findUntil(char *target, char *terminator)
// reads data from the stream until the target string of the given length is found
// search terminated if the terminator string is found
// returns true if target string is found, false if terminated or timed out
bool Stream::findUntil(char *target, size_t targetLen, char *terminator, size_t termLen)
bool ICACHE_FLASH_ATTR Stream::findUntil(const char *target, size_t targetLen, const char *terminator, size_t termLen)
{
size_t index = 0; // maximum target string length is 64k bytes!
size_t termIndex = 0;
@ -128,14 +130,14 @@ bool Stream::findUntil(char *target, size_t targetLen, char *terminator, size_t
// returns the first valid (long) integer value from the current position.
// initial characters that are not digits (or the minus sign) are skipped
// function is terminated by the first character that is not a digit.
long Stream::parseInt()
long ICACHE_FLASH_ATTR Stream::parseInt()
{
return parseInt(NO_SKIP_CHAR); // terminate on first non-digit character (or timeout)
}
// as above but a given skipChar is ignored
// this allows format characters (typically commas) in values to be ignored
long Stream::parseInt(char skipChar)
long ICACHE_FLASH_ATTR Stream::parseInt(char skipChar)
{
boolean isNegative = false;
long value = 0;
@ -165,14 +167,14 @@ long Stream::parseInt(char skipChar)
// as parseInt but returns a floating point value
float Stream::parseFloat()
float ICACHE_FLASH_ATTR Stream::parseFloat()
{
return parseFloat(NO_SKIP_CHAR);
}
// as above but the given skipChar is ignored
// this allows format characters (typically commas) in values to be ignored
float Stream::parseFloat(char skipChar){
float ICACHE_FLASH_ATTR Stream::parseFloat(char skipChar){
boolean isNegative = false;
boolean isFraction = false;
long value = 0;
@ -214,7 +216,7 @@ float Stream::parseFloat(char skipChar){
// returns the number of characters placed in the buffer
// the buffer is NOT null terminated.
//
size_t Stream::readBytes(char *buffer, size_t length)
size_t ICACHE_FLASH_ATTR Stream::readBytes(char *buffer, size_t length)
{
size_t count = 0;
while (count < length) {
@ -231,7 +233,7 @@ size_t Stream::readBytes(char *buffer, size_t length)
// terminates if length characters have been read, timeout, or if the terminator character detected
// returns the number of characters placed in the buffer (0 means no valid data found)
size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length)
size_t ICACHE_FLASH_ATTR Stream::readBytesUntil(char terminator, char *buffer, size_t length)
{
if (length < 1) return 0;
size_t index = 0;
@ -244,7 +246,7 @@ size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length)
return index; // return number of characters, not including null terminator
}
String Stream::readString()
String ICACHE_FLASH_ATTR Stream::readString()
{
String ret;
int c = timedRead();
@ -256,7 +258,7 @@ String Stream::readString()
return ret;
}
String Stream::readStringUntil(char terminator)
String ICACHE_FLASH_ATTR Stream::readStringUntil(char terminator)
{
String ret;
int c = timedRead();