

#include <nitroWiFi/cps.h>
#define CPS_DONOTUSE_DHCP 0x0001
typedef struct {
u32 mode;
void *(*alloc)(u32);
void (*free)(void *);
void (*dhcp_callback)(void);
BOOL (*link_is_on)(void);
unsigned long long random_seed;
u8 *lan_buf;
u32 lan_buflen;
u32 mymss;
CPSInAddr requested_ip;
u32 yield_wait;
} CPSConfig;
CPS_Startup()に渡す構成情報を定義する構造体です。
| mode | 望まれる動作モードをビット単位で設定します。 CPS_DONOTUSE_DHCPビットが立っているならDHCPを使用しません。 |
| alloc | 必須。CPSライブラリ内でメモリ割り当てが必要なときに呼び出される関数を設定します。 |
| free | 必須。CPSライブラリ内でメモリ開放が必要なときに呼び出される関数を設定します。 |
| dhcp_callback | DHCPを使用しない設定になっている場合は物理リンクが確立した直後に、DHCPを使用する設定になっている場合はDHCPサーバが見つけられなかったときに呼び出されます。 dhcp_callback内では CPSMyIp、CPSNetMask、CPSGatewayIp、CPSDnsIp等を設定します。
NULLの場合は何もしない関数に設定されます。 |
| link_is_on | 物理リンクの状態(リンクがONなら非0)を返す関数に設定します。 NULLの場合は常に真を返す関数に設定されます。 通常は、 static BOOL some_func() { return WCM_GetApMacAddress() != NULL; } といった関数に設定してください。 |
| random_seed | 乱数の種を設定します。 0の場合はOS_GetTick()の値になります。 この値を元に一時ポートの初期値等を設定するので、ユーザの何等かのアクションをきっかけにするなどして可能な限りランダムな値を設定することを推奨します。 |
| lan_buf | 必須。無線LANの受信に使うリングバッファのアドレスを設定します。 |
| lan_buflen | 必須。無線LANの受信に使うリングバッファの長さを設定します。 あまりに設定した長さが小さいとパケットを取りこぼす可能性があり、8Kから16K以上を設定することを推奨します。 |
| mymss | TCP受信に於ける、最大セグメントサイズを設定します。 0の場合は1460に設定されます。 |
| requested_ip | DHCPを使用する際、割り当てて欲しいIPアドレスを設定します。 DHCPサーバは可能な限りこのIPアドレスを割り当てようとする。 0の場合は、特に割り当てて欲しいIPアドレスはない事を示します。 アクセスポイントによっては MAC アドレスと IP アドレスのペアを保持しないものがあるため、ネットワーク切断→再接続を行なうときには必要に応じて前回接続時の IP アドレスが優先的に割り当てられるようにこのメンバに IP アドレスを指定する必要があります。 |
| yield_wait | CPSライブラリ内でパケットの受信をポーリングしながら待つ部分において、OSのどの機能を使って待つかを指定します。 0の場合は、OS_YieldThread()を使用します。 この場合CPSライブラリよりも低い優先度を持つアプリケーションには制御が渡りにくくなります。 0でない場合は、この値をパラメータとするOS_Sleep()を使用します。 この場合は優先度の低いアプリケーションにも確実に制御が渡るが、ネットワークの反応が若干低下する可能性があります。 |
(注意) メンバalloc, freeに設定される関数では排他制御を行う必要があります。
CPS_Startup, CPSライブラリ型, CPSライブラリ大域変数
Ver. 2005/10/24 初版