CPSConfig

定義

#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内ではCPSMyIpCPSNetMaskCPSGatewayIpCPSDnsIp等を設定します。 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 初版