CPS_SocWrite

構文

#include <nitroWiFi/cps.h>
u32 CPS_SocWrite(u8 *buf, u32 len);

引数

buf 出力するバッファ。
len 出力するバッファの長さ。

返り値

出力されたデータ長

説明

PING/UDP/TCPの出力を行います。完了するまでブロックされます。TCPに関してはこれは、出力データがACKされるまで待つ事を意味するので、少量の単位で出力するのは著しく効率が悪いです。アプリケーション側でバッファリングするか、CPSライブラリが用意するバッファー経由の出力サービスを使うかするのが良いです。
CPS_SocWrite()に渡すポインタはどこでも良いですが、CPSSoc.sndbuf.dataに定数(UDPなら14 + 20 + 8、TCPなら14 + 20 + 20)を足したアドレスを使うと、ARM9側に関してはno-copyで実行されるので、速度、メモリ効率の両面で有利です。アプリケーションはこの使い方以外でCPSSoc.sndbuf.dataを使用してはいけません。
バッファ経由の出力サービスと混在することも可能です。内部的にCPS_SocFlush()と等価なことを行ってから出力します。
実際に出力されたデータ長が返されます。
ブロックします。

参照

CPSSoc, CPS_SocFlush, CPS_GetProperSize

履歴

2005/10/21 初版