diff options
Diffstat (limited to 'libraries/Bridge/YunServer.cpp')
-rw-r--r-- | libraries/Bridge/YunServer.cpp | 102 |
1 files changed, 1 insertions, 101 deletions
diff --git a/libraries/Bridge/YunServer.cpp b/libraries/Bridge/YunServer.cpp index c0ed88c..f23566a 100644 --- a/libraries/Bridge/YunServer.cpp +++ b/libraries/Bridge/YunServer.cpp @@ -17,6 +17,7 @@ */ #include <YunServer.h> +#include <YunClient.h> YunServer::YunServer(uint16_t _p, BridgeClass &_b) : bridge(_b), port(_p), listening(false), useLocalhost(false) { @@ -45,104 +46,3 @@ YunClient YunServer::accept() { return YunClient(res[0]); } -YunClient::YunClient(int _h, BridgeClass &_b) : - bridge(_b), handle(_h), opened(true), buffered(0) { -} - -YunClient::YunClient(BridgeClass &_b) : - bridge(_b), handle(0), opened(false), buffered(0) { -} - -YunClient::~YunClient() { -} - -YunClient& YunClient::operator=(const YunClient &_x) { - opened = _x.opened; - handle = _x.handle; - return *this; -} - -void YunClient::stop() { - if (opened) { - uint8_t cmd[] = {'j', handle}; - bridge.transfer(cmd, 2); - } - opened = false; -} - -void YunClient::doBuffer() { - // If there are already char in buffer exit - if (buffered > 0) - return; - - // Try to buffer up to 32 characters - readPos = 0; - uint8_t cmd[] = {'K', handle, sizeof(buffer)}; - buffered = bridge.transfer(cmd, 3, buffer, sizeof(buffer)); -} - -int YunClient::available() { - // Look if there is new data available - doBuffer(); - return buffered; -} - -int YunClient::read() { - doBuffer(); - if (buffered == 0) - return -1; // no chars available - else { - buffered--; - return buffer[readPos++]; - } -} - -int YunClient::read(uint8_t *buff, size_t size) { - int readed = 0; - do { - if (buffered == 0) { - doBuffer(); - if (buffered == 0) - return readed; - } - buff[readed++] = buffer[readPos++]; - buffered--; - } while (readed < size); - return readed; -} - -int YunClient::peek() { - doBuffer(); - if (buffered == 0) - return -1; // no chars available - else - return buffer[readPos]; -} - -size_t YunClient::write(uint8_t c) { - if (!opened) - return 0; - uint8_t cmd[] = {'l', handle, c}; - bridge.transfer(cmd, 3); - return 1; -} - -size_t YunClient::write(const uint8_t *buf, size_t size) { - if (!opened) - return 0; - uint8_t cmd[] = {'l', handle}; - bridge.transfer(cmd, 2, buf, size, NULL, 0); - return size; -} - -void YunClient::flush() { -} - -uint8_t YunClient::connected() { - if (!opened) - return false; - uint8_t cmd[] = {'L', handle}; - uint8_t res[1]; - bridge.transfer(cmd, 2, res, 1); - return (res[0] == 1); -} |