GainSpan Wi-Fi library see: http://mbed.org/users/gsfan/notebook/gainspan_wifi/

Fork of GSwifi_old by gs fan

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/

Information

Please change the baud rate in advance.

  • ATB=115200
  • AT&W0

It may be better and sometimes faster.
GSwifi gs(p13, p14, baud);

Heavily modified new library: http://mbed.org/users/gsfan/code/GSwifi

ゲインスパン Wi-Fi モジュール ライブラリ

ゲインスパン社の低電力 Wi-Fiモジュール(無線LAN) GS1011 シリーズ用のライブラリです。

解説: http://mbed.org/users/gsfan/notebook/gainspan_wifi/

Information

モジュールはあらかじめ次のコマンドでボーレートを変更しておく。

  • ATB=115200
  • AT&W0

場合によってはもっと高速の方がいいかもしれない。クラス宣言時にレート設定をする。
GSwifi gs(p13, p14, baud);

大幅に更新された新しいライブラリ: http://mbed.org/users/gsfan/code/GSwifi

Revision:
0:2f6062c6d018
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RingBuffer.cpp	Mon Jul 09 14:36:06 2012 +0000
@@ -0,0 +1,88 @@
+/*
+ * 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;
+}