Base library for cellular modem implementations

Dependencies:   Socket lwip-sys lwip

Dependents:   CellularUSBModem CellularUSBModem

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers IOStream.h Source File

IOStream.h

00001 /* IOStream.h */
00002 /* Copyright (C) 2012 mbed.org, MIT License
00003  *
00004  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
00005  * and associated documentation files (the "Software"), to deal in the Software without restriction,
00006  * including without limitation the rights to use, copy, modify, merge, publish, distribute,
00007  * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
00008  * furnished to do so, subject to the following conditions:
00009  *
00010  * The above copyright notice and this permission notice shall be included in all copies or
00011  * substantial portions of the Software.
00012  *
00013  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
00014  * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00015  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
00016  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00017  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00018  */
00019 
00020 #ifndef IOSTREAM_H_
00021 #define IOSTREAM_H_
00022 
00023 #include "rtos.h"
00024 
00025 class IStream
00026 {
00027 public:
00028   //IStream();
00029   //virtual ~IStream();
00030 
00031     //0 for non-blocking (returns immediately), osWaitForever for infinite blocking
00032     virtual int read(uint8_t* buf, size_t* pLength, size_t maxLength, uint32_t timeout=osWaitForever) = 0;
00033     virtual size_t available() = 0;
00034     virtual int waitAvailable(uint32_t timeout=osWaitForever) = 0; //Wait for data to be available
00035     virtual int abortRead() = 0; //Abort current reading (or waiting) operation
00036 };
00037 
00038 class OStream
00039 {
00040 public:
00041   //OStream();
00042   //virtual ~OStream();
00043 
00044     //0 for non-blocking (returns immediately), osWaitForever for infinite blocking
00045     virtual int write(uint8_t* buf, size_t length, uint32_t timeout=osWaitForever) = 0;
00046     virtual size_t space() = 0;
00047     virtual int waitSpace(uint32_t timeout=osWaitForever) = 0; //Wait for space to be available
00048     virtual int abortWrite() = 0; //Abort current writing (or waiting) operation
00049 };
00050 
00051 class IOStream : public IStream, public OStream
00052 {
00053 public:
00054   //IOStream();
00055   //virtual ~IOStream();
00056 };
00057 
00058 
00059 #endif /* IOSTREAM_H_ */