2012年4月15日日曜日

mbedでWIZ820io(W5200)を使ってみる(3)

w5200用のネットワークインターフェースを作ってみた。

w5200NetIf  W5200(WIZ820io) network interface

TCP/UDPクライアントに使うのであれば、EthernetNetIfの代わりに動きます。

#include "WIZ820ioNetIf.h"
WIZ820ioNetIf eth;
eth.setup();

現在の制限
・TCPサーバーの為のacceptは実装していない。
・使えるソケットは1つだけ、同時に複数の接続は出来ない。

【追加】
時々ハングアップするのだが、調べてみると長さが0バイトつまりlen=0で送信すると、
SnTX_WRに同じ値を書いてSENDコマンドを発行すると、w5200の全てのレジスタがクリアされてしまう。

int /*if < 0 : NetTcpSocketErr*/ MyNetTcpSocket::send(const char* buf, int len) {
#ifdef DEBUG
    printf("buf:%p, len=%d\n", buf, len);
    printHex((u8*)buf, len);
#endif //DEBUG
    if (len > 0) {
        W5100.send_data_processing(_socket, (uint8_t*)buf, len);
        W5100.execCmdSn(_socket, Sock_SEND);
    }
    return len;
---

0 件のコメント: