obniz
Version:
obniz sdk for javascript
1,047 lines (1,046 loc) • 42.7 kB
TypeScript
/**
* @packageDocumentation
* @module Parts.W5500
*/
import Obniz from '../../../obniz';
import { PeripheralIO } from '../../../obniz/libs/io_peripherals/io';
import { PeripheralSPI } from '../../../obniz/libs/io_peripherals/spi';
import { ObnizPartsInterface, ObnizPartsInfo } from '../../../obniz/ObnizPartsInterface';
/** W5500 type definitions and constants W5500の型定義や定数 */
export declare namespace W5500Parts {
/** Pin assignment and SPI options ピンアサインとSPIオプション */
interface WiredOptions {
/** Reset pin number (initial value: 12) リセットピン番号 (初期値: 12) */
reset?: number;
/** SPI MOSI pin number (initial value: 23) SPIのMOSIピン番号 (初期値: 23) */
mosi?: number;
/** SPI MISO pin number (initial value: 19) SPIのMISOピン番号 (初期値: 19) */
miso?: number;
/** SPI CLK pin number (initial value: 18) SPIのCLKピン番号 (初期値: 18) */
clk?: number;
/** SPI CS pin number (initial value: 33) SPIのCSピン番号 (初期値: 33) */
cs?: number;
/**
* SPI clock frequency (initial value: 20000000(26Mhz))
*
* SPIのクロック周波数(初期値: 20000000(26Mhz))
*/
frequency?: number;
}
/** W5500 config W5500の設定内容 */
interface Config {
/** Wait for Wake on LAN WakeOnLANを待ち受ける */
wol?: boolean;
/** Do not respond to ping pingを応答しない */
pingBlock?: boolean;
/** Use PPPoE PPPoEを使用する */
pppoe?: boolean;
/**
* Always send an ARP request when sending data
*
* データを送信した時は必ずARPリクエストを送信する
*/
forceArp?: boolean;
/**
* Uses fixed data length (maximum 4 bytes) communication, automatically turned on when CS pin is not specified
*
* 固定データ長(最大4bytes)通信を使用する、CSピン指定がない場合自動的にオン
*/
fdm?: boolean;
/** IPv4 address of default gateway デフォルトゲートウェイのIPv4アドレス */
gatewayIP: string;
/** Subnet mask サブネットマスク */
subnetMask: string;
/** MAC address MACアドレス */
macAddress: string;
/** Local IPv4 address ローカルIPv4アドレス */
localIP: string;
/** Retry interval 再試行間隔 */
retryTime?: number;
/** Retry count 再試行回数 */
retryCount?: number;
/**
* Time to send echo request for Link Control Protocol
*
* LinkControlプロトコルのechoリクエストを送っている時間
*/
linkControlProtocolRequestTimer?: number;
/**
* 1 byte of the 4 bytes magic number of the Link Control protocol echo request
*
* LinkControlプロトコルのechoリクエストの4bytesマジックナンバーの1byte
*/
linkControlProtocolMagicNumber?: number;
/** MAC address of PPPoE server PPPoEサーバーのMACアドレス */
pppoeDestMACAddress?: string;
/** Session ID of PPPoE Server PPPoEサーバーのセッションID */
pppoeSessionID?: number;
/** Maximum receiving unit size of PPPoE PPPoEの最大受信ユニットサイズ */
pppoeMaxSegmentSize?: number;
/** Physical layer settings 物理層の設定 */
phyConfig?: PhysicalLayerOptions;
/** Do not always check transfer when writing 常に書き込み時に転送チェックを行わない */
forceNoCheckWrite?: boolean;
/** Event handler for interrupt "IPConflict" 割り込み「IPConflict」のイベントハンドラー */
onIPConflictInterrupt?: (ethernet: W5500) => Promise<void>;
/** Event handler for interrupt "DestUnreach" 割り込み「DestUnreach」のイベントハンドラー */
onDestUnreachInterrupt?: (ethernet: W5500, extra?: W5500Parts.DestInfo) => Promise<void>;
/** Event handler for interrupt "PPPoEClose" 割り込み「PPPoEClose」のイベントハンドラー */
onPPPoECloseInterrupt?: (ethernet: W5500) => Promise<void>;
/** Event handler for interrupt "MagicPacket" 割り込み「MagicPacket」のイベントハンドラー */
onMagicPacketInterrupt?: (ethernet: W5500) => Promise<void>;
/** Event handler for all interrupts */
onAllInterrupt?: (ethernet: W5500, name: W5500Parts.Interrupt, extra?: W5500Parts.DestInfo) => Promise<void>;
}
/** Link speed 接続速度(Mbps)(10/100) */
type LinkSpeed = 10 | 100;
/** Physical layer status 物理層のステータス */
interface PhysicalLayerStatus {
/** Whether it is full duplex 全二重かどうか */
duplex: boolean;
/** Link speed 接続速度 (Mbps) (10/100) */
speed: LinkSpeed;
/** Whether the connection is established 接続が確立されているかどうか */
link: boolean;
}
/** Physical layer settings 物理層の設定内容 */
interface PhysicalLayerOptions {
/** Physical layer reset 物理層のリセット */
reset?: boolean;
/** Auto negotiation 自動ネゴシエーション */
autoNegotiation?: boolean;
/** Link speed 接続速度 (Mbps) (10/100) */
speed?: LinkSpeed;
/** Whether it is full duplex 全二重かどうか */
duplex?: boolean;
/** Whether to turn off the power 電源オフにするかどうか */
powerOff?: boolean;
}
/** Interrupt type 割り込みの種類 */
type Interrupt = 'IPConflict' | 'DestUnreach' | 'PPPoEClose' | 'MagicPacket';
/** Flags corresponding to interrupts 割り込みに対応するフラグ */
const InterruptFlags: {
[key in Interrupt]: number;
};
/** Connection destination information 接続先情報 */
class DestInfo {
/** IPv4 address IPv4アドレス */
readonly ip: string;
/** Port number ポート番号 */
readonly port: number;
/** Address アドレス (Ex. 123.234.0.1:12345) */
readonly address: string;
constructor(ip: string, port: number);
}
}
/** W5500 management class W5500を管理するクラス */
export declare class W5500 implements ObnizPartsInterface {
static info(): ObnizPartsInfo;
keys: string[];
requiredKeys: string[];
params: any;
/** Instance of Obniz Obnizのインスタンス */
protected obniz: Obniz;
/** Instance of PeripheralSPI PeripheralSPIのインスタンス */
protected spi: PeripheralSPI;
/** Instance of reset pin リセットピンのインスタンス */
protected resetPin: PeripheralIO;
/** Instance of chip select pin チップセレクトピンのインスタンス */
protected csPin: PeripheralIO;
/**
* Whether to communicate with a fixed length, forces true if no chip select pin is specified
*
* 固定長通信するかどうか、チップセレクトピンが指定されていない場合、強制的にtrue
*/
protected fdm: boolean;
/**
* Holds a handler that catches interrupts by message
*
* 割り込みをメッセージ別でキャッチするハンドラーを保持
*/
protected interruptHandlers: {
[key in W5500Parts.Interrupt]?: ((ethernet: W5500) => Promise<void>) | ((ethernet: W5500, extra?: W5500Parts.DestInfo) => Promise<void>);
};
/**
* Holds a handler that catches all interrupts
*
* 割り込みを全てキャッチするハンドラーを保持
*/
protected allInterruptHandler?: (ethernet: W5500, msg: W5500Parts.Interrupt, extra?: W5500Parts.DestInfo) => Promise<void>;
/** Array of socket instances ソケットのインスタンスの配列 */
protected socketList: W5500Socket[];
/** SPI status SPIのステータス */
protected spiStatus: boolean;
/**
* Do not always check transfer when writing
*
* 常に書き込み時に転送チェックを行わない
*/
protected forceNoCheckWrite: boolean;
constructor();
wired(obniz: Obniz): void;
/**
* Initialize W5500 and write common settings
*
* W5500を初期化、共通設定の書き込み
*
* @param config W5500 config W5500の設定内容
* @return Write result 書き込み結果
*/
initWait(config: W5500Parts.Config): Promise<boolean>;
/**
* Terminates each socket and terminates SPI communication
*
* 各ソケットの終了処理をし、SPI通信を終了
*/
finalizeWait(): Promise<void>;
/**
* Set a handler to catch a specific interrupt
*
* Run checkInterruptWait() regularly to actually catch
*
* 特定の割り込みをキャッチするハンドラーを設定
*
* 実際にキャッチするにはcheckInterrupt()を定期的に実行
*
* @param name Name of the interrupt to get 取得する割り込みの名前 (IPConflict | DestUnreach | PPPoEClose | MagicPacket)
* @param handler Callback function, extra is only when name=DestUnreach
*
* コールバック関数、extraはname=DestUnreachのときのみ
*/
setInterruptHandler(name: W5500Parts.Interrupt, handler: ((ethernet: W5500) => Promise<void>) | ((ethernet: W5500, extra?: W5500Parts.DestInfo) => Promise<void>)): void;
/**
* Set handler to catch all interrupts
*
* Run checkInterruptWait() regularly to actually catch
*
* 全ての割り込みをキャッチするハンドラーを設定
*
* 実際にキャッチするにはcheckInterrupt()を定期的に実行
*
* @param handler Callback function, name is the name of the interrupt received, extra is only when name=DestUnreach
*
* コールバック関数、nameには受け取った割り込み名が入ります、extraはname=DestUnreachのときのみ
*/
setAllInterruptHandler(handler: (ethernet: W5500, name: W5500Parts.Interrupt, extra?: W5500Parts.DestInfo) => Promise<void>): void;
/**
* Wait until the connection with the router is established
*
* ルーターとの接続が確立されるまで待機
*
* @return Physical layer status 物理層のステータス
*/
waitLinkUpWait(): Promise<W5500Parts.PhysicalLayerStatus>;
/**
* Get an instance of W5500Socket, generate if necessary
*
* W5500Socketのインスタンスを取得、必要ならば生成
*
* @param socketId Socket ID (0\~7) ソケットID (0\~7)
* @return Instance of W5500Socket W5500Socketのインスタンス
*/
getSocket(socketId: number): W5500Socket;
/**
* Create an instance of W5500Socket in the frame of the unused socket
*
* 使っていないソケットの枠にW5500Socketのインスタンスを生成
*
* @return Instance of W5500Socket W5500Socketのインスタンス
*/
getNewSocket(): W5500Socket | null;
/**
* Whether SPI is available
*
* SPIが利用可能かどうか
*
* @return SPI status SPIのステータス
*/
getSpiStatus(): boolean;
/**
* Reset W5500 in hardware
*
* W5500をハードウェア的にリセット
*/
hardResetWait(): Promise<void>;
/**
* Set mode モードを設定
*
* @param config WakeOnLAN(WoL), PingBlock, PPPoE and ForceARP
* @return Write result 書き込み結果
*/
setModeWait(config: W5500Parts.Config): Promise<boolean>;
/**
* Set IPv4 address of default gateway
*
* デフォルトゲートウェイのIPv4アドレスを設定
*
* @param ip IPv4 address IPv4アドレス
* @return Write result 書き込み結果
*/
setGatewayWait(ip: string): Promise<boolean>;
/**
* Set subnet mask サブネットマスクを設定
*
* @param mask Subnet mask サブネットマスク
* @return Write result 書き込み結果
*/
setSubnetMask(mask: string): Promise<boolean>;
/**
* Set MAC address MACアドレスを設定
*
* @param mac MAC address MACアドレス
* @return Write result 書き込み結果
*/
setMacAddressWait(mac: string): Promise<boolean>;
/**
* Set local IPv4 address ローカルIPv4アドレスを設定
*
* @param ip IPv4 address IPv4アドレス
* @return Write result 書き込み結果
*/
setLocalIPWait(ip: string): Promise<boolean>;
/**
* Check for interrupts (doesn't work properly with VDM)
*
* Also check socket interrupts
*
* If there is an interrupt, call the preset handler
*
* 割り込みをチェック(VDMの時、正常に動作しません)
*
* ソケットの割り込みもチェックします
*
* 割り込みがあった場合、事前に設定されたhandlerを呼び出します
*
* @param disableAllSocketCheck When it's true, do not call checkInterruptWait() for all sockets
*
* trueの時、全ソケットのcheckInterrupt()呼び出しを行いません
* @return Then whether you can check for interrupts
*
* 次に割り込みをチェックできるかどうか
*/
checkInterruptWait(disableAllSocketCheck?: boolean): Promise<boolean>;
/**
* Set interrupt mask 割り込みマスクを設定
*
* @param mask Mask マスク
* @return Write result 書き込み結果
*/
setInterruptMaskWaut(mask: number): Promise<boolean>;
/**
* Set retry interval (Initial value: 200ms) 再試行間隔を設定 (初期値: 200ms)
*
* @param time Retry interval (in 0.2ms increments) 再試行間隔 (0.2ms刻み) (0\~6553.5ms)
* @return Write result 書き込み結果
*/
setRetryTimeWait(time: number): Promise<boolean>;
/**
* Set retry count (Initial value: 8 times) 再試行回数を設定 (初期値: 8回)
*
* @param count retry count 再試行回数 (0\~255)
* @return Write result 書き込み結果
*/
setRetryCountWait(count: number): Promise<boolean>;
/**
* Set time to send echo request for Link Control Protocol
*
* LinkControlプロトコルのechoリクエストを送っている時間を設定
*
* @param time time (in 25ms increments) 時間 (25ms刻み) (0\~6375ms)
* @return Write result 書き込み結果
*/
setPPPLinkControlProtocolRequestTimerWait(time: number): Promise<boolean>;
/**
* Set 1 byte of the 4 bytes magic number of the Link Control protocol echo request
*
* LinkControlプロトコルのechoリクエストの4bytesマジックナンバーの1byteを設定
*
* @param num Magic number マジックナンバー
* @return Write result 書き込み結果
*/
setPPPLinkControlProtocolMagicNumberWait(num: number): Promise<boolean>;
/**
* Set MAC address of PPPoE server PPPoEサーバーのMACアドレスを設定
*
* @param mac MAC address MACアドレス
* @return Write result 書き込み結果
*/
setPPPoEMacAddressWait(mac: string): Promise<boolean>;
/**
* Set session ID of PPPoE server PPPoEサーバーのセッションIDを設定
*
* @param id Session ID セッションID
* @return Write result 書き込み結果
*/
setPPPoESessionIDWait(id: number): Promise<boolean>;
/**
* Set maximum receiving unit size of PPPoE PPPoEの最大受信ユニットサイズを設定
*
* @param size Unit size ユニットサイズ
* @return Write result 書き込み結果
*/
setPPPoEMaxSegmentSizeWait(size: number): Promise<boolean>;
/**
* Get the IPv4 address when the destination could not be reached
*
* 宛先に到達できなかった時のIPv4アドレスを取得
*
* @return IPv4 address IPv4アドレス
*/
getUnreachableIP(): Promise<string>;
/**
* Get the port number when the destination could not be reached
*
* 宛先に到達できなかった時のポート番号を取得
*
* @return Port number ポート番号
*/
getUnreachablePort(): Promise<number>;
/**
* Get physical layer status 物理層のステータス取得
*
* @return Physical layer status 物理層のステータス
*/
getPhysicalStatusWait(): Promise<W5500Parts.PhysicalLayerStatus>;
/**
* Set physical layer config 物理層の設定
*
* @param config Physical layer config 物理層の設定内容
* @return Write result 書き込み結果
*/
setPhysicalConfigWait(config: W5500Parts.PhysicalLayerOptions): Promise<boolean>;
/**
* Get chip version チップバージョンの取得
*
* @return Chip version チップバージョン
*/
getVersion(): Promise<number>;
/**
* Write after validating the IPv4 address of the character string
*
* 文字列のIPv4アドレスをバリデーションチェックしてから書き込み
*
* @param address Start address of write destination 書き込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @param ip IPv4 address IPv4アドレス
* @return Write result 書き込み結果
* @hidden
*/
ipWriteWait(address: number, bsb: number, ip: string): Promise<boolean>;
/**
* Write after validating the MAC address of the character string
*
* 文字列のMACアドレスをバリデーションチェックしてから書き込み
*
* @param address Start address of write destination 書き込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @param mac MAC address MACアドレス
* @return Write result 書き込み結果
* @hidden
*/
macWriteWait(address: number, bsb: number, mac: string): Promise<boolean>;
/**
* Writing large data
*
* Used when the length is larger than 4 in FDM
*
* Used when the length is greater than 1021 for VDM
*
* 大きいデータの書き込み
*
* FDMのとき、長さが4より大きいときに使用
*
* VDMのとき、長さが1021より大きいときに使用
*
* @param address Start address of write destination 書き込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @param data Raw byte data Raw byte data バイト列データ
* @param noWait Do not use spi.writeWait() when writing data データ書き込み時、spi.writeWait()を使用しない
* @return Write result 書き込み結果
* @hidden
*/
bigWriteWait(address: number, bsb: number, data: number[], noWait?: boolean): Promise<boolean>;
/**
* Writing a value to the area for one address
*
* 1アドレス分の領域への値の書き込み
*
* @param address Start address of write destination 書き込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @param num Value 値 (0\~255)
* @return Write result 書き込み結果
* @hidden
*/
numWriteWait(address: number, bsb: number, num: number): Promise<boolean>;
/**
* Writing a value to the area for two addresses
*
* 2アドレス分の領域への値の書き込み
*
* @param address Start address of write destination 書き込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @param num Value 値 (0\~65535)
* @return Write result 書き込み結果
* @hidden
*/
num2WriteWait(address: number, bsb: number, num: number): Promise<boolean>;
/**
* Read IPv4 address data IPv4アドレスデータの読み込み
*
* @param address Start address of read destination 読み込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @return IPv4 address IPv4アドレス
* @hidden
*/
ipReadWait(address: number, bsb: number): Promise<string>;
/**
* Reading large data
*
* Used when the length is larger than 4 in FDM
*
* Used when the length is greater than 1021 for VDM
*
* 大きいデータの読み込み
*
* FDMのとき、長さが4より大きいときに使用
*
* VDMのとき、長さが1021より大きいときに使用
*
* @param address Start address of read destination 読み込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @param length Data length (byte length) データの長さ (バイト長)
* @return Read data 読み込みデータ
* @hidden
*/
bigReadWait(address: number, bsb: number, length: number): Promise<number[]>;
/**
* Reading values from the area for one address
*
* 1アドレス分の領域からの値の読み込み
*
* @param address Start address of read destination 読み込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @return Value 値 (0\~255)
* @hidden
*/
numReadWait(address: number, bsb: number): Promise<number>;
/**
* Reading values from the area for two addresses
*
* 2アドレス分の領域からの値の読み込み
*
* @param address Start address of read destination 読み込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @return Value 値 (0\~65535)
* @hidden
*/
num2ReadWait(address: number, bsb: number): Promise<number>;
/**
* Validate and write the address based on the definition
*
* アドレスを定義に基づいてバリデーションチェックして書き込み
*
* @param address Start address of write destination 書き込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @param val String of the address to write 書き込むアドレスの文字列
* @param name Type name of the address アドレスの種類名
* @param example Sample string of the address, for errors アドレスのサンプル文字列、エラー用
* @param splitVal Address split character アドレスの分割文字
* @param length Length when the address is divided by the split character アドレスを分割文字で分割した時の長さ
* @param radix Description format of numbers in the address (N-ary) アドレス内の数字の記述形式 (N進数)
* @hidden
*/
private addressWriteWait;
/**
* Writing normal data
*
* For FDM, the length is up to 4
*
* For VDM, the length is up to 1021
*
* 通常データの書き込み
*
* FDMのとき、長さは4まで
*
* VDMのとき、長さは1021まで
*
* @param address Start address of write destination 書き込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @param data Raw byte data バイト列データ
* @param noWait Do not use spi.writeWait() when writing data データ書き込み時、spi.writeWait()を使用しない
* @return Write result 書き込み結果
* @hidden
*/
private writeWait;
/**
* Reading normal data
*
* 通常データの読み込み
*
* @param address Start address of read destination 読み込み先の先頭アドレス
* @param bsb Block select bit ブロック選択ビット
* @param length Data length (byte length) データの長さ (バイト長)
* @return Read data 読み込みデータ
* @hidden
*/
private readWait;
/**
* 読み書き共通のメソッド、返却されたデータを検証
*
* Common read / write method, verify returned data
*
* @param address Start address of operation destination 操作先の先頭アドレス (0x0000\~0xFFFF)
* @param bsb Block select bit ブロック選択ビット (0b00000\~0b11111)
* @param mode Read or write 読み込みか書き込みか (Read|Write)
* @param data Raw byte data バイト列データ (0xFF\*1\~4(FDM), \*1\~1021(VDM))
* @param noWait Do not use spi.writeWait for communication 通信にspi.writeWaitを使用しない
* @return Write: Write result Read: Read data
*
* 書込: 書き込み結果 読込: 読み込みデータ
* @hidden
*/
private sendWait;
}
/** W5500 socket definitions and constants W5500のソケットの定義や定数 */
export declare namespace W5500SocketParts {
/** Socket config ソケットの設定内容 */
interface Config {
/** Protocol to use 使用プロトコル (TCPClient/TCPServer/UDP/null) */
protocol: Protocol;
/**
* Use multicast (UDP Only) (Set Before Open Command)
*
* マルチキャストの使用(UDPのみ)(Openコマンドの前で設定)
*/
multicast?: boolean;
/**
* Do not receive broadcast packets (UDP only)
*
* ブロードキャストされたパケットを受信しない(UDPのみ)
*/
broardcastBlock?: boolean;
/**
* Send an ACK immediately when data is received (TCP only)
*
* データを受信したときにACKをすぐに送信する(TCPのみ)
*/
noDelayACK?: boolean;
/**
* Use IGMPv1 for multicast (UDP only)
*
* マルチキャストでIGMPv1を使う(UDPのみ)
*/
multicastVer1?: boolean;
/**
* Do not receive unicast packets (UDP only)
*
* ユニキャストされたパケットを受信しない(UDPのみ)
*/
unicastBlock?: boolean;
/** Source port number 接続元ポート番号 */
sourcePort?: number;
/** Connection destination IPv4 address 接続先IPv4アドレス */
destIP?: string;
/** Connection destination port number 接続先ポート番号 */
destPort?: number;
/** Maximum segment size (TCP only) 最大セグメントサイズ (TCPのみ) (0\~65535) */
maxSegmentSize?: number;
/** IP service type IPサービスタイプ (1byte) */
ipType?: number;
/** TTL (0\~65535) */
ttl?: number;
/**
* Receive buffer size (KB) only to the power of 2, up to 16
*
* 受信バッファサイズ(KB) 2の累乗のみ、16まで
*/
rxBufferSize?: BufferSize;
/**
* Send buffer size (KB) only to the power of 2, up to 16
*
* 送信バッファサイズ(KB) 2の累乗のみ、16まで
*/
txBufferSize?: BufferSize;
/** IP header fragment IPヘッダーのフラグメント (0x0000\~0xFFFF) */
ipFragment?: number;
/**
* keep-alive transmission interval (sec) (TCP only) (0\~1275)
*
* keep-alive 送信間隔(秒)(TCPのみ)(0\~1275)
*/
keepAliveTimer?: number;
/**
* Treat received data as string (UTF-8)
*
* 受信データを文字列(UTF-8)として扱う
*/
stringMode?: boolean;
/** Event handler for interrupt "SendOK" 割り込み「SendOK」のイベントハンドラー */
onSendOKInterrupt?: (socket: W5500Socket) => Promise<void>;
/** Event handler for interrupt "Timeout" 割り込み「Timeout」のイベントハンドラー */
onTimeoutInterrupt?: (socket: W5500Socket) => Promise<void>;
/** Event handler for interrupt "ReceiveData" 割り込み「ReceiveData」のイベントハンドラー */
onReceiveDataInterrupt?: (socket: W5500Socket, extra?: number[] | string | W5500Parts.DestInfo) => Promise<void>;
/** Event handler for interrupt "Disconnect" 割り込み「Disconnect」のイベントハンドラー */
onDisconnectInterrupt?: (socket: W5500Socket) => Promise<void>;
/** Event handler for interrupt "ConnectSuccess" 割り込み「ConnectSuccess」のイベントハンドラー */
onConnectSuccessInterrupt?: (socket: W5500Socket, extra?: number[] | string | W5500Parts.DestInfo) => Promise<void>;
/** Event handler for all interrupts 全ての割り込みのイベントハンドラー */
onAllInterrupt?: (socket: W5500Socket, name: W5500SocketParts.Interrupt, extra?: number[] | string | W5500Parts.DestInfo) => Promise<void>;
}
/** Socket available protocol ソケットの使用可能プロトコル */
type Protocol = 'TCPClient' | 'TCPServer' | 'UDP' | null;
/** Buffer size バッファサイズ */
type BufferSize = 0 | 1 | 2 | 4 | 8 | 16;
/** Socket available commands ソケットの使用可能コマンド */
type Command = 'Open' | 'Listen' | 'Connect' | 'Disconnect' | 'Close' | 'Send' | 'SendMAC' | 'SendKeep' | 'Receive';
/**
* Value corresponding to socket command
*
* ソケットのコマンドに対応する値
*/
const CommandCodes: {
[key in Command]: number;
};
/** Socket status ソケットのステータス */
type Status = 'Closed' | 'Init' | 'Listen' | 'SynSent' | 'SynReceive' | 'Established' | 'FinWait' | 'Closing' | 'TimeWait' | 'CloseWait' | 'LastACK' | 'UDP' | 'MACRAW';
/**
* Value corresponding to socket status
*
* ソケットのステータスに対応する値
*/
const StatusCodes: {
[key in Status]: number;
};
/** Socket interrupt ソケットの割り込み */
type Interrupt = 'SendOK' | 'Timeout' | 'ReceiveData' | 'Disconnect' | 'ConnectSuccess';
/**
* Flags corresponding to socket interrupts
*
* ソケットの割り込みに対応するフラグ
*/
const InterruptFlags: {
[key in Interrupt]: number;
};
}
/**
* Class that performs and manages socket communication
*
* ソケット通信を行い管理するクラス
*/
export declare class W5500Socket {
/** Socket ID ソケットID */
readonly id: number;
/**
* Treat received data as string (UTF-8)
*
* 受信データを文字列(UTF-8)として扱う
*/
stringMode: boolean;
/** Current protocol 現在のプロトコル */
protected protocol: W5500SocketParts.Protocol;
/** Instance of W5500 W5500のインスタンス */
protected ethernet: W5500;
/**
* Holds a handler that catches interrupts by message
*
* 割り込みをメッセージ別でキャッチするハンドラーを保持
*/
protected interruptHandlers: {
[key in W5500SocketParts.Interrupt]?: ((socket: W5500Socket) => Promise<void>) | ((socket: W5500Socket, extra?: number[] | string | W5500Parts.DestInfo) => Promise<void>);
};
/**
* Holds a handler that catches all interrupts
*
* 割り込みを全てキャッチするハンドラーを保持
*/
protected allInterruptHandler?: (socket: W5500Socket, msg: W5500SocketParts.Interrupt, extra?: number[] | string | W5500Parts.DestInfo) => Promise<void>;
/** Hold data read address データ読み込みのアドレスを保持 */
protected rxReadDataPointer: number;
constructor(id: number, ethernet: W5500);
/**
* Write the socket settings and open the socket (Connect / Listen is also executed for TCP)
*
* ソケット設定の書き込みをし、ソケットをOpenに(TCPの時はConnect/Listenも実行)
*
* @param config Socket config ソケットの設定内容
* @return Write result 書き込み結果
*/
initWait(config: W5500SocketParts.Config): Promise<boolean>;
/**
* Socket termination process ソケットの終了処理
*/
finalizeWait(): Promise<void>;
/**
* Send data データを送信
*
* @param data Raw byte data or string to send 送信するバイトデータまたは文字列
* @return Write result 書き込み結果
*/
sendDataWait(data: number[] | string): Promise<boolean>;
/**
* Send data, no write check データを送信、書き込みチェックなし
*
* @param data Raw byte data or string to send 送信するバイトデータまたは文字列
* @return Write result 書き込み結果
*/
sendDataFastWait(data: number[] | string): Promise<boolean>;
/**
* Read the received data 受信されたデータを読取
*
* @return Raw byte data or string to receive 受信データまたは文字列
*/
receiveDataWait(): Promise<string | number[]>;
/**
* Set a handler to catch a specific interrupt
*
* Run checkInterruptWait() regularly to actually catch
*
* 特定の割り込みをキャッチするハンドラーを設定
*
* 実際にキャッチするにはcheckInterrupt()を定期的に実行
*
* @param name The name of the interrupt to get 取得する割り込みの名前 (SendOK | Timeout | ReceiveData | Disconnect | ConnectSuccess)
* @param handler Callback function, extra is only when name=ReceiveData and when name=ConnectSuccess and protocol=TCPServer
*
* コールバック関数、extraはname=ReceiveDataの時とname=ConnectSuccessかつprotocol=TCPServerの時のみ
*/
setInterruptHandler(name: W5500SocketParts.Interrupt, handler: ((socket: W5500Socket) => Promise<void>) | ((socket: W5500Socket, extra?: number[] | string | W5500Parts.DestInfo) => Promise<void>)): ((socket: W5500Socket) => Promise<void>) | ((socket: W5500Socket, extra?: number[] | string | W5500Parts.DestInfo) => Promise<void>);
/**
* Set a handler to catch all interrupts
*
* Run checkInterruptWait() regularly to actually catch
*
* 全ての割り込みをキャッチするハンドラーを設定
*
* 実際にキャッチするにはcheckInterrupt()を定期的に実行
*
* @param handler Callback function, name is the type of interrupt, extra is only when name=ReceiveData and when name=ConnectSuccess and protocol=TCPServer
*
* コールバック関数、nameは割り込みの種類、extraはname=ReceiveDataの時とname=ConnectSuccessかつprotocol=TCPServerの時のみ
*/
setAllInterruptHandler(handler: (socket: W5500Socket, name: W5500SocketParts.Interrupt, extra?: number[] | string | W5500Parts.DestInfo) => Promise<void>): (socket: W5500Socket, name: W5500SocketParts.Interrupt, extra?: number[] | string | W5500Parts.DestInfo) => Promise<void>;
/**
* Get the current protocol 現在のプロトコルを取得
*
* @return Protocol プロトコル
*/
getProtocol(): W5500SocketParts.Protocol;
/**
* Set mode モードを設定
*
* @param config Multicast, BroardcastBlock, NoDelayACK, MulticastVer1, UnicastBlock and Protocol
* @return Write result 書き込み結果
*/
setModeWait(config: W5500SocketParts.Config): Promise<boolean>;
/**
* Send command コマンドを送信
*
* @param command Command コマンド
* @return Write result 書き込み結果
*/
sendCommandWait(command: W5500SocketParts.Command): Promise<boolean>;
/**
* Check for interrupts
*
* If there is an interrupt, call the preset handler
*
* 割り込みをチェック
*
* 割り込みがあった場合、事前に設定されたhandlerを呼び出します
*
* @return Then whether you can check for interrupts
*
* 次に割り込みをチェックできるかどうか
*/
checkInterruptWait(): Promise<boolean | undefined>;
/**
* Get Status ステータスを取得
*
* @return Status ステータス
*/
getStatusWait(): Promise<W5500SocketParts.Status | 'UNKNOWN'>;
/**
* Set the connection source port 接続元ポートを設定
*
* @param port Port number ポート番号
* @return Write result 書き込み結果
*/
setSourcePortWait(port: number): Promise<boolean>;
/**
* Set the MAC address of the connection destination (only if required by UDP)
*
* 接続先のMACアドレスを設定(UDPで必要な場合のみ)
*
* @param mac MAC address MACアドレス
* @return Write result 書き込み結果
*/
setDestMacAddressWait(mac: string): Promise<boolean>;
/**
* Set the IPv4 address of the connection destination
*
* 接続先のIPv4アドレスを設定
*
* @param ip IPv4 address IPv4アドレス
* @return Write result 書き込み結果
*/
setDestIPWait(ip: string): Promise<boolean>;
/**
* Get the IPv4 address of the connection source (only for TCP server)
*
* 接続元のIPv4アドレスを取得(TCPサーバーのときのみ)
*
* @return IPv4 address IPv4アドレス
*/
getDestIPWait(): Promise<string>;
/**
* Set the port number of the connection destination
*
* 接続先のポート番号を設定
*
* @param port Port number ポート番号
* @return Write result 書き込み結果
*/
setDestPortWait(port: number): Promise<boolean>;
/**
* Get the port number of the connection source (only for TCP server)
*
* 接続元のポート番号を取得(TCPサーバーのときのみ)
*
* @return Port number ポート番号
*/
getDestPortWait(): Promise<number>;
/**
* Set maximum segment size (only if required by TCP)
*
* 最大セグメントサイズを設定(TCPで必要な場合のみ)
*
* @param size 最大セグメントサイズ
* @return Write result 書き込み結果
*/
setMaxSegmentSizeWait(size: number): Promise<boolean>;
/**
* Set IP service type IPサービスタイプを設定
*
* @param type IP service type IPサービスタイプ (1byte)
* @return Write result 書き込み結果
*/
setIPTypeOfServiceWait(type: number): Promise<boolean>;
/**
* Set TTL TTLを設定
*
* @param ttl TTL (0\~65535)
* @return Write result 書き込み結果
*/
setTTLWait(ttl: number): Promise<boolean>;
/**
* Set buffer size バッファサイズを設定
*
* @param size Buffer size バッファサイズ(KB)
* @param address Start address of write destination 書き込み先の先頭アドレス
* @return Write result 書き込み結果
* @hidden
*/
setBufferSizeWait(size: W5500SocketParts.BufferSize, address: number): Promise<boolean>;
/**
* Set receive buffer size 受信バッファサイズを設定
*
* @param size Buffer size (KB) only to the power of 2, up to 16
*
* バッファサイズ(KB) 2の累乗のみ、16まで
* @return Write result 書き込み結果
*/
setRXBufferSizeWait(size: W5500SocketParts.BufferSize): Promise<boolean>;
/**
* Set send buffer size 送信バッファサイズを設定
*
* @param size Buffer size (KB) only to the power of 2, up to 16
*
* バッファサイズ(KB) 2の累乗のみ、16まで
* @return Write result 書き込み結果
*/
setTXBufferSizeWait(size: W5500SocketParts.BufferSize): Promise<boolean>;
/**
* Get free size of send buffer 送信バッファの空きサイズを取得
*
* @return Free size 空きサイズ
*/
getTXFreeSizeWait(): Promise<number>;
/**
* Get the write start address of the send buffer
*
* 送信バッファの書き込み開始アドレスを取得
*
* @return Address アドレス
*/
getTXReadPointerWait(): Promise<number>;
/**
* Set the next write start address of the send buffer
*
* 送信バッファの次の書き込み開始アドレスを設定
*
* @param pointer Address アドレス
* @return Write result 書き込み結果
*/
setTXWritePointerWait(pointer: number): Promise<boolean>;
/**
* Get the length of received data 受信データの長さを取得
*
* @return Length 長さ
*/
getRXReceiveSizeWait(): Promise<number>;
/**
* Get the read start address of the receive buffer
*
* 受信バッファの読み込み開始アドレスを取得
*
* @return Address アドレス
*/
getRXReadDataPointerWait(): Promise<number>;
/**
* Set the next read start address of the receive buffer
*
* 受信バッファの次の読み込み開始アドレスを設定
*
* @param pointer Address アドレス
* @return Write result 書き込み結果
*/
setRXReadDataPointerWait(pointer: number): Promise<boolean>;
/**
* Get the write start address of the receive buffer
*
* 受信バッファの書き込み開始アドレスを取得
*
* @return Address アドレス
*/
getRXWritePointerWait(): Promise<number>;
/**
* Set IP header fragment IPヘッダーのフラグメントを設定
*
* @param fragment IP header fragment IPヘッダーのフラグメント (0x0000\~0xFFFF)
* @return Write result 書き込み結果
*/
setFragmentWait(fragment: number): Promise<boolean>;
/**
* Set keep-alive transmission interval (only if TCP requires)
*
* keep-aliveの送信間隔を設定(TCPで必要な場合のみ)
*
* @param time keep-alive transmission interval (sec) (0\~1275)
*
* keep-alive 送信間隔(秒)(0\~1275)
* @return Write result 書き込み結果
*/
setKeepAliveTimerWait(time: number): Promise<boolean>;
/**
* Send data データを送信
*
* @param data Raw byte data to send or string 送信するバイトデータまたは文字列
* @param noWait Do not use spi.writeWait() when writing data
*
* データ書き込み時、spi.writeWait()を使用しない
* @hidden
*/
protected sendDataBaseWait(data: number[] | string, noWait?: boolean): Promise<boolean>;
}
export default W5500;