pfodParser 5.0.1 The pfodParser library is handles commands sent from the Android pfodApp, pfodApp supports WiFi, BLE, Bluetooth and SMS connections

pfodNonBlockingInput.h
Go to the documentation of this file.
1 // NonBlockingInput.h
2 /*
3 (c)2019 Forward Computing and Control Pty. Ltd.
4 NSW Australia, www.forward.com.au
5 This code is not warranted to be fit for any purpose. You may only use it at your own risk.
6 This generated code may be freely used for both private and commercial use
7 provided this copyright is maintained.
8 */
9 #ifndef pfodNonBlockingInput_h
10 #define pfodNonBlockingInput_h
11
12 #include <pfodDelay.h>
13 #include <pfodStream.h>
14
15 class pfodNonBlockingInput : public Stream {
16 public:
20 pfodNonBlockingInput();
21
25 pfodNonBlockingInput* connect(Stream* _io);
26
31 void clearInput();
32
33 // readFirstLine does not timeout or block
34 // returns -1 until the null terminated buffer contains length-1 chars or until read \r or \n. The \r or \n are not added to the buffer
35 // then returns number of chars read.
36 // an empty input line i.e. just \r or \n returns 0.
37 // if echo true then each char added to the buffer is echoed back to this stream
38 // buffer is null terminated after each call so you can check progress and apply an external timeout.
39 // clearInput is called when a non-zero is returned to clears any following input, e.g. \n of \r\n pair or any chars after buffer filled
40 int readInputLine( char *buffer, size_t length, bool echo = false); // read until full or get \r or \n
41 int readInputLine( uint8_t *buffer, size_t length, bool echo = false) {
42 return readInputLine((char *)buffer, length, echo); // read until full or get \r or \n
43 }
44
45 // --------------------------------------------------------------
46 virtual size_t write(uint8_t);
47 virtual size_t write(const uint8_t *buf, size_t size);
48 virtual int available();
49 virtual int read();
50 virtual int peek();
51 virtual void flush(); // this blocks until write buffer empty
52 // availableForWrite() not available in ESP32 Stream (and others?);
53
54 private:
55 void checkClearInput();
56 pfodDelay nonBlockingInputClearTimeOut;
57 const uint32_t NON_BLOCKING_INPUT_CLEAR_TIMEOUT_MS = 200; // 0.2sec
58 bool nonBlockingInput_clearFlag;
59 Stream* input;
60 };
61 #endif
pfodDelay
Definition: pfodDelay.h:13
pfodNonBlockingInput
Definition: pfodNonBlockingInput.h:15
pfodNonBlockingInput::available
virtual int available()
pfodNonBlockingInput::flush
virtual void flush()
pfodNonBlockingInput::clearInput
void clearInput()
Will clear any more input until nothing received for NON_BLOCKING_INPUT_CLEAR_TIMEOUT_MS,...
pfodNonBlockingInput::write
virtual size_t write(const uint8_t *buf, size_t size)
pfodNonBlockingInput::peek
virtual int peek()
pfodNonBlockingInput::pfodNonBlockingInput
pfodNonBlockingInput()
constuctor
pfodNonBlockingInput::write
virtual size_t write(uint8_t)
pfodNonBlockingInput::readInputLine
int readInputLine(char *buffer, size_t length, bool echo=false)
pfodNonBlockingInput::connect
pfodNonBlockingInput * connect(Stream *_io)
connect to Stream* to read from
pfodNonBlockingInput::readInputLine
int readInputLine(uint8_t *buffer, size_t length, bool echo=false)
Definition: pfodNonBlockingInput.h:41
pfodNonBlockingInput::read
virtual int read()
pfodDelay.h
pfodStream.h