RXduino
1.20a
RXduinoマニュアル 最終更新日 平成26年6月29日
|
RX62N/RX63N用のTCP/IPプロトコルスタック。 [詳細]
#include "tkdn_hal.h"
型定義 | |
typedef struct tcp_str | tcp_t |
TCPの接続情報を示す構造体 内部構造は知る必要はないため隠蔽されている | |
typedef void(* | FUNCTYPE_TCPEVENT )(tcp_t *client) |
TCPのイベントが起きた時にコールバックされる関数の型 | |
列挙型 | |
enum | LINK_STATE { LINK_DOWN = 0, LINK_UP = 1, LINK_DOWN_CHANGED = 2, LINK_UP_CHANGED = 3 } |
リンクの状態 [詳細] | |
enum | DNS_REPLY_TYPE { DNS_NONAUTH, DNS_AUTH, DNS_APPENDIX, DNS_UNDEF } |
DNSの応答のタイプ [詳細] | |
enum | DNS_TYPE { DNS_A = 1, DNS_NS = 2, DNS_CNAME = 5, DNS_PTR = 12, DNS_MX = 15, DNS_AAAA = 28, DNS_ANY = 255 } |
DNSのレコードのタイプ [詳細] | |
enum | DNS_CLASS { DNS_UNKN = 0, DNS_IN = 1 } |
DNSのアドレスのタイプ [詳細] | |
enum | TCP_STATE { TCP_CLOSED, TCP_LISTEN, TCP_SYNRCVD, TCP_ESTAB, TCP_FIN_WAIT1, TCP_FIN_WAIT2, TCP_CLOSING, TCP_TIME_WAIT, TCP_SYN_SENT, TCP_CLOSEWAIT, TCP_LAST_ACK } |
TCPの接続状態を表す定数 [詳細] | |
関数 | |
void | tketh_open (unsigned char *macaddr) |
自分のMACアドレスを設定し、ライブラリを開始する [詳細] | |
LINK_STATE | tketh_check_link () |
イーサネットのリンクアップをチェックする。 [詳細] | |
void | tketh_process () |
イーサネットの受信処理を進める [詳細] | |
void | tketh_debug (int level) |
デバッグレベルを設定する [詳細] | |
void | tketh_set_hostname (const char *hostname) |
自分の名前を設定する [詳細] | |
char * | tketh_get_hostname (void) |
自分の名前を調べる [詳細] | |
void | tketh_change_macaddr (const unsigned char macaddr[6]) |
MACアドレスを変更する [詳細] | |
void | tketh_get_macaddr (unsigned char macaddr[6]) |
自分のMACアドレスを調べる [詳細] | |
BOOL | tketh_dhcpc (void) |
DHCPを実行して、IPアドレス、GW、DNSサーバを設定する [詳細] | |
void | tketh_set_myipaddr (unsigned char ipaddr[4], unsigned char mask[4]) |
自分のIPアドレスを設定する [詳細] | |
void | tketh_get_myipaddr (unsigned char ipaddr[4], unsigned char mask[4]) |
自分のIPアドレスを取得する [詳細] | |
void | tketh_set_gateway (unsigned char ipaddr[4]) |
デフォルトゲートウェイを設定する [詳細] | |
void | tketh_get_gateway (unsigned char ipaddr[4]) |
設定されているデフォルトゲートウェイのアドレスを取得する [詳細] | |
void | tketh_set_nameserver (unsigned char ipaddr[4]) |
DNSサーバのアドレスを設定する [詳細] | |
void | tketh_get_nameserver (unsigned char ipaddr[4]) |
設定されているDNSサーバのアドレスを取得する [詳細] | |
void | tketh_arp_table_show () |
ARPのテーブルを表示する [詳細] | |
BOOL | tketh_send_udp (unsigned char tgtaddr[4], unsigned short dest_port, unsigned short src_port, unsigned char *buf, int len) |
UDPを送信する [詳細] | |
void | tketh_regist_udp_handler (UDP_HANDLE_FUNC func) |
UDPを受信したときにコールバックされる関数を登録する [詳細] | |
BOOL | tketh_send_ping (unsigned char ipaddr[4], unsigned char *buf, int len) |
PINGを送信する [詳細] | |
BOOL | tketh_is_ping_running () |
PINGが実行中かどうか調べる [詳細] | |
void | tketh_cancel_ping () |
PINGの実行をキャンセルする [詳細] | |
unsigned long | tketh_ping_starttime () |
最後にPINGを送った時刻をus単位で返す [詳細] | |
BOOL | tketh_nslookup (char *hostname, unsigned char ipaddr[4]) |
DNSサーバにアクセスして名前解決を行う [詳細] | |
dns_records_t * | tketh_nslookup_ex (char *hostname) |
DNSサーバにアクセスして名前解決を行い、すべてのレコードを得る [詳細] | |
void | tketh_free_dns_records (dns_records_t *dnsrec) |
DNS結果構造体を開放する [詳細] | |
BOOL | tketh_ip_to_hostname (unsigned char ipaddr[4], char *hostname, int hostname_maxlen) |
DNSサーバにアクセスしてIPアドレスから名前を調べる [詳細] | |
tcp_t * | tketh_tcp_connect (unsigned char ipaddr[4], unsigned short dest_port) |
TCPでサーバに接続する [詳細] | |
BOOL | tketh_tcp_is_connected (tcp_t *info) |
コネクションが接続中かどうかを調べる [詳細] | |
void | tketh_tcp_fin (tcp_t *info) |
コネクションの穏やかな終了 [詳細] | |
char * | tketh_tcp_state (tcp_t *info) |
コネクションの状態を文字列で返す [詳細] | |
void | tketh_tcp_senddata (tcp_t *info, unsigned char *data, int len) |
TCPの接続先にデータを送信する [詳細] | |
int | tketh_tcp_recvcount (tcp_t *info) |
受信バッファに溜まっているデータの量を調べる [詳細] | |
int | tketh_tcp_recvdata (tcp_t *info, unsigned char *data, int len) |
受信バッファからデータを取り出す [詳細] | |
tcp_t * | tketh_tcp_open_server (unsigned short port, FUNCTYPE_TCPEVENT func) |
TCP接続を待ちうけたいポート番号をセットする [詳細] | |
BOOL | tketh_tcp_listen (tcp_t *info) |
サーバの受信開始 [詳細] | |
unsigned char * | tketh_tcp_target_addr (tcp_t *info) |
接続先のIPアドレスを調べる [詳細] | |
void | tketh_tcp_server_terminate (tcp_t *info) |
サーバの待ち受け状態を終了する [詳細] | |
clients_stat_t * | tketh_get_client_stats () |
クライアントの状態を調べる [詳細] | |
void | tketh_tcp_set_rbuf_length (unsigned short len) |
TCPの受信バッファの長さを設定する [詳細] | |
RX62N/RX63N用のTCP/IPプロトコルスタック。
このライブラリはTCP/IPレベルでの送受信を行う。Arduino互換ではなく独自実装。
この関数群をArduino風にC++でラッパしたものが Ethernet.h で定義される TEthernet クラスと、 EthernetClient クラスと、 EthernetServer クラスである。ライブラリを使うにはリンカで -ltkdnip を指定すること。
tkdnip.h で定義されています。
enum LINK_STATE |
enum DNS_REPLY_TYPE |
enum DNS_TYPE |
enum TCP_STATE |
TCPの接続状態を表す定数
void tketh_open | ( | unsigned char * | macaddr | ) |
自分のMACアドレスを設定し、ライブラリを開始する
[in] | macaddr | MACアドレス |
LINK_STATE tketh_check_link | ( | ) |
イーサネットのリンクアップをチェックする。
void tketh_process | ( | ) |
イーサネットの受信処理を進める
この関数が呼び出されると、受信パケットの有無を調べ、 パケットの内容に応じて受信処理を進める。
受信エラーの解除も行われる。
void tketh_debug | ( | int | level | ) |
デバッグレベルを設定する
level |
|
void tketh_set_hostname | ( | const char * | hostname | ) |
自分の名前を設定する
ここで設定したホスト名はDHCPで使われるので重要
hostname | ホスト名 |
char* tketh_get_hostname | ( | void | ) |
自分の名前を調べる
tketh_set_hostname() で設定した名前を返す
void tketh_change_macaddr | ( | const unsigned char | macaddr[6] | ) |
MACアドレスを変更する
macaddr | 新しいMACアドレス |
void tketh_get_macaddr | ( | unsigned char | macaddr[6] | ) |
自分のMACアドレスを調べる
[out] | macaddr | MACアドレスを格納するバッファへのポインタ |
BOOL tketh_dhcpc | ( | void | ) |
DHCPを実行して、IPアドレス、GW、DNSサーバを設定する
void tketh_set_myipaddr | ( | unsigned char | ipaddr[4], |
unsigned char | mask[4] | ||
) |
自分のIPアドレスを設定する
IPアドレスとサブネットマスクを指定する。
[in] | ipaddr | IPアドレスが格納された4バイトの配列 |
[in] | mask | サブネットマスクが格納された4バイトの配列 |
void tketh_get_myipaddr | ( | unsigned char | ipaddr[4], |
unsigned char | mask[4] | ||
) |
自分のIPアドレスを取得する
DHCP等で設定されたIPアドレスを調べるときに使う
[out] | ipaddr | IPアドレスを格納する4バイトの配列 |
[out] | mask | サブネットマスクを格納する4バイトの配列 |
void tketh_set_gateway | ( | unsigned char | ipaddr[4] | ) |
デフォルトゲートウェイを設定する
[in] | ipaddr | デフォルトゲートウェイのIPアドレス |
void tketh_get_gateway | ( | unsigned char | ipaddr[4] | ) |
設定されているデフォルトゲートウェイのアドレスを取得する
DHCP等で設定されたデフォルトゲートウェイアドレスを調べるときに使う
[out] | ipaddr | デフォルトゲートウェイのIPアドレスを格納する4バイトの配列 |
void tketh_set_nameserver | ( | unsigned char | ipaddr[4] | ) |
DNSサーバのアドレスを設定する
[in] | ipaddr | DNSサーバのIPアドレス |
void tketh_get_nameserver | ( | unsigned char | ipaddr[4] | ) |
設定されているDNSサーバのアドレスを取得する
DHCP等で設定されたDNSサーバのアドレスを調べるときに使う
[out] | ipaddr | DNSサーバのIPアドレスを格納する4バイトの配列 |
void tketh_arp_table_show | ( | ) |
ARPのテーブルを表示する
BOOL tketh_send_udp | ( | unsigned char | tgtaddr[4], |
unsigned short | dest_port, | ||
unsigned short | src_port, | ||
unsigned char * | buf, | ||
int | len | ||
) |
UDPを送信する
[in] | tgtaddr | 相手先のIPアドレス |
[in] | dest_port | 送信先ポート番号 |
[in] | src_port | 送信元ポート番号 |
[in] | buf | 送信したいデータが格納されたバッファ |
[in] | len | 送信したいデータ長 |
void tketh_regist_udp_handler | ( | UDP_HANDLE_FUNC | func | ) |
UDPを受信したときにコールバックされる関数を登録する
[in] | func | UDPを受信したときにコールバックされる関数 |
BOOL tketh_send_ping | ( | unsigned char | ipaddr[4], |
unsigned char * | buf, | ||
int | len | ||
) |
PINGを送信する
[in] | ipaddr | Pingを送りたいホストのIPアドレス |
[in] | buf | Pingのデータ部に乗せるデータ。必要なければNULLでよい。 |
len | データ部の長さ。必要なければ0を指定してよい。 |
BOOL tketh_is_ping_running | ( | ) |
void tketh_cancel_ping | ( | ) |
unsigned long tketh_ping_starttime | ( | ) |
最後にPINGを送った時刻をus単位で返す
BOOL tketh_nslookup | ( | char * | hostname, |
unsigned char | ipaddr[4] | ||
) |
DNSサーバにアクセスして名前解決を行う
[in] | hostname | 調べたいホスト名 |
[out] | ipaddr | IPアドレス |
dns_records_t* tketh_nslookup_ex | ( | char * | hostname | ) |
DNSサーバにアクセスして名前解決を行い、すべてのレコードを得る
dns_records_t *型のオブジェクトを返し、すべてのレコードを知ることができるようになっている。
[in] | hostname | 調べたいホスト名 |
void tketh_free_dns_records | ( | dns_records_t * | dnsrec | ) |
DNS結果構造体を開放する
tketh_nslookup_ex()で得られた結果のオブジェクトを開放する。
[in] | dnsrec | tketh_nslookup_ex() で得られたオブジェクト。 |
BOOL tketh_ip_to_hostname | ( | unsigned char | ipaddr[4], |
char * | hostname, | ||
int | hostname_maxlen | ||
) |
DNSサーバにアクセスしてIPアドレスから名前を調べる
[in] | ipaddr | 調べたいIPアドレス |
[out] | hostname | 変換されたホスト名が入るバッファ |
[in] | hostname_maxlen | バッファのサイズ |
tcp_t* tketh_tcp_connect | ( | unsigned char | ipaddr[4], |
unsigned short | dest_port | ||
) |
TCPでサーバに接続する
[in] | ipaddr | 接続したいサーバのIPアドレス |
[in] | dest_port | 接続したいポート番号 |
BOOL tketh_tcp_is_connected | ( | tcp_t * | info | ) |
void tketh_tcp_fin | ( | tcp_t * | info | ) |
コネクションの穏やかな終了
接続先のサーバにFINを送ることでコネクションを終了する
[in] | info | tketh_tcp_connect() で返されたオブジェクト |
char* tketh_tcp_state | ( | tcp_t * | info | ) |
コネクションの状態を文字列で返す
[in] | info | tketh_tcp_connect() で返されたオブジェクト |
void tketh_tcp_senddata | ( | tcp_t * | info, |
unsigned char * | data, | ||
int | len | ||
) |
TCPの接続先にデータを送信する
[in] | info | tketh_tcp_connect() で返されたオブジェクト |
[in] | data | 送信したいデータが格納されたバッファ |
[in] | len | 送信したいデータ長 |
int tketh_tcp_recvcount | ( | tcp_t * | info | ) |
受信バッファに溜まっているデータの量を調べる
TCPのパケットを受信すると受信バッファに格納される。その受信バッファ内のデータ数を返す。
info | tketh_tcp_connect() で返されたオブジェクト |
int tketh_tcp_recvdata | ( | tcp_t * | info, |
unsigned char * | data, | ||
int | len | ||
) |
受信バッファからデータを取り出す
[in] | info | tketh_tcp_connect() で返されたオブジェクト |
[out] | data | 読み出したデータが格納されるバッファ。バッファは十分なサイズのメモリを確保しておくこと。 |
[in] | len | 読み出したい長さ。 |
tcp_t* tketh_tcp_open_server | ( | unsigned short | port, |
FUNCTYPE_TCPEVENT | func | ||
) |
TCP接続を待ちうけたいポート番号をセットする
この関数はあくまでも準備をするだけ。実際にLISTENステートには入れない。
[in] | port | 接続を待ちうけるポート番号 |
[in] | func | TCPのイベントが発生したときにコールバックされる関数 (この機能は未実装) |
BOOL tketh_tcp_listen | ( | tcp_t * | info | ) |
サーバの受信開始
サーバのTCPステートをLISTEN状態になる
[in] | info | tketh_tcp_open_server() 関数で返されたオブジェクト |
unsigned char* tketh_tcp_target_addr | ( | tcp_t * | info | ) |
接続先のIPアドレスを調べる
[in] | info | tketh_tcp_open_server() 関数で返されたオブジェクト |
void tketh_tcp_server_terminate | ( | tcp_t * | info | ) |
サーバの待ち受け状態を終了する
サーバのLISTEN状態を解除して、IDLE状態に戻す。この引数で指定した構造体へのオブジェクト info はもう使えない。
[in] | info | tketh_tcp_open_server() 関数で返されたオブジェクト |
clients_stat_t* tketh_get_client_stats | ( | ) |
クライアントの状態を調べる
本ライブラリは、サーバ・クライアント合わせて最大16個のセッションを張ることができる。その1つ1つのセッションに関する情報を返す。
void tketh_tcp_set_rbuf_length | ( | unsigned short | len | ) |
TCPの受信バッファの長さを設定する
[in] | len | 128から32768までの値 |