GainSpan Wi-Fi library see: http://mbed.org/users/gsfan/notebook/gainspan_wifi/
Dependents: GSwifi_httpd GSwifi_websocket GSwifi_tcpclient GSwifi_tcpserver ... more
Fork of GSwifi by
GainSpan Wi-Fi library
The GS1011 is an ultra low power 802.11b wireless module from GainSpan.
see: http://mbed.org/users/gsfan/notebook/gainspan_wifi/
ゲインスパン Wi-Fi モジュール ライブラリ
ゲインスパン社の低電力 Wi-Fiモジュール(無線LAN) GS1011 シリーズ用のライブラリです。
解説: http://mbed.org/users/gsfan/notebook/gainspan_wifi/
RingBuffer.cpp
- Committer:
- gsfan
- Date:
- 2012-07-12
- Revision:
- 3:1345daf4ec1a
- Parent:
- 0:2f6062c6d018
File content as of revision 3:1345daf4ec1a:
/* * mbed library for RingBuffer * Copyright (c) 2010 Hiroshi Suga * Released under the MIT License: http://mbed.org/license/mit */ /* @file * @brief Ring Buffer */ #include "RingBuffer.h" RingBuffer::RingBuffer (int p_size) { size = p_size + 1; buf = new char[size]; addr_w = 0; addr_r = 0; } RingBuffer::~RingBuffer () { delete [] buf; } int RingBuffer::put (char dat) { int next; next = (addr_w + 1) % size; if (next == addr_r) { return -1; } buf[addr_w] = dat; addr_w = next; return -1; } int RingBuffer::put (char *dat, int len) { int next, i; for (i = 0; i < len; i ++) { next = (addr_w + 1) % size; if (next == addr_r) { break; } buf[addr_w] = dat[i]; addr_w = next; } return i; } int RingBuffer::get (char *dat) { if (addr_r == addr_w) { return -1; } *dat = buf[addr_r]; addr_r = (addr_r + 1) % size; return 0; } int RingBuffer::get (char *dat, int len) { int i; for (i = 0; i < len; i ++) { if (addr_r == addr_w) { break; } dat[i] = buf[addr_r]; addr_r = (addr_r + 1) % size; } return i; } int RingBuffer::available () { if (addr_w < addr_r) { return addr_r - addr_w - 1; } else { return (size - addr_w) + addr_r - 1; } } int RingBuffer::use () { return size - available() - 1; } void RingBuffer::clear () { addr_w = 0; addr_r = 0; }