implement rewind properly

This commit is contained in:
Stephen Crane 2019-02-14 18:02:26 +00:00
parent 1f64b85b17
commit ab85adce3d
2 changed files with 8 additions and 6 deletions

View File

@ -12,15 +12,14 @@ bool serial_filer::start(const char *) {
const unsigned speeds[] = {
115200, 57600, 19200, 9600, 4800, 2400
};
static unsigned currsp;
const char *serial_filer::advance() {
static char buf[16];
unsigned s = speeds[currsp];
unsigned s = speeds[_currsp];
Serial.begin(s);
currsp++;
if (currsp == sizeof(speeds)/sizeof(speeds[0]))
currsp = 0;
_currsp++;
if (_currsp == sizeof(speeds)/sizeof(speeds[0]))
_currsp = 0;
return itoa(s, buf, 10);
}

View File

@ -6,7 +6,7 @@
class serial_filer: public filer {
public:
const char *advance();
const char *rewind() { return advance(); }
const char *rewind() { _currsp = 0; return advance(); }
const char *checkpoint();
void restore(const char *);
@ -17,5 +17,8 @@ public:
uint8_t read();
bool more();
void write(uint8_t);
private:
unsigned _currsp;
};
#endif