EL_dev_arduino 4.3.0
読み取り中…
検索中…
一致する文字列を見つけられません
EL クラス

Main class for EL [詳解]

#include <EL.h>

EL 連携図

公開メンバ関数

 EL (WiFiUDP &udp, byte classGroupCode, byte classCode, byte instanceNumber)
 オブジェクトを一つだけサポートする場合のコンストラクタ
 
 EL (WiFiUDP &udp, byte eojs[][3], int count)
 オブジェクトを複数サポートする場合のコンストラクタ
 
 EL (WiFiUDP &udp, std::initializer_list< std::initializer_list< byte > > eojs)
 オブジェクトを複数サポートする場合のコンストラクタ
 
void begin (void)
 通信の開始、受信開始
 
void begin (ELCallback cb)
 通信の開始、受信開始、ユーザ関数受付
 
void update (const byte epc, PDCEDT pdcedt)
 EPCの値を変更する, eojが1個の場合(複数の場合は0番に相当)
 
void update (const int devId, const byte epc, PDCEDT pdcedt)
 EPCの値を変更する, 複数の場合
 
void update (const byte epc, std::initializer_list< byte > edt)
 EPCの値を変更する, eojが1個の場合(複数の場合は0番に相当)
 
void update (const int devId, const byte epc, std::initializer_list< byte > edt)
 EPCの値を変更する, 複数の場合
 
byte * at (const byte epc)
 EPCの値を取得する, eojが1個の場合(複数の場合は0番に相当)
 
byte * at (const int devId, const byte epc)
 EPCの値を取得する, 複数の場合
 
void send (IPAddress toip, byte sBuffer[], int size)
 IP指定による送信
 
void sendOPC1 (const IPAddress toip, const byte tid[], const byte seoj[], const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
 OPC1指定による送信(SEOJも指定する,ほぼ内部関数)
 
void sendOPC1 (const IPAddress toip, const byte seoj[], const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
 OPC1指定による送信(SEOJも指定する,ほぼ内部関数)
 
void sendOPC1 (const IPAddress toip, const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
 OPC1指定による送信(SEOJは初期化時に指定したものを使う)
 
void sendOPC1 (const IPAddress toip, const byte seoj[], const byte deoj[], const byte esv, const byte epc, std::initializer_list< byte > edt)
 OPC1指定による送信(SEOJは初期化時に指定したものを使う)
 
void sendOPC1ID (const IPAddress toip, const int devId, const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
 
void sendBroad (byte sBuffer[], int size)
 ブロードキャストによる送信(default: 192.168.1.255)
 
void sendMulti (byte sBuffer[], int size)
 マルチキャストによる送信(default: 192.168.1.255)
 
void sendMultiOPC1 (const byte tid[], const byte seoj[], const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
 OPC一個用のマルチキャスト送信、TID指定有り
 
void sendMultiOPC1 (const byte seoj[], const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
 OPC一個用のマルチキャスト送信、TID自動
 
void sendMultiOPC1 (const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
 OPC一個用のマルチキャスト送信、seoj省略(0番)、TID自動
 
void sendMultiOPC1 (const byte seoj[], const byte deoj[], const byte esv, const byte epc, std::initializer_list< byte > edt)
 OPC1指定による送信(SEOJは初期化時に指定したものを使う)
 
void sendMultiOPC1ID (const int devId, const byte deoj[], const byte esv, const byte epc, const byte pdcedt[])
 OPC一個用のマルチキャスト送信、seojの代わりにIDで指定、TID自動
 
void sendDetails (const IPAddress toip, const byte tid[], const byte seoj[], const byte deoj[], const byte esv, const byte opc, const byte detail[], const byte detailSize)
 複数のEPCで送信する場合はこれを使う
 
void replyGetDetail (const IPAddress toip, const byte seoj[])
 Getに対して複数OPCにも対応して返答する内部関数
 
boolean replyGetDetail_sub (const byte eoj[], const byte epc, int &devId)
 EOJとEPCを指定したとき、そのプロパティ(EDT)があるかチェックする内部関数
 
void replySetDetail (const IPAddress toip, const byte seoj[])
 Setに対して複数OPCにも対応して返答する内部関数
 
boolean replySetDetail_sub (const byte eoj[], const byte epc, int &devId)
 EOJとEPCを指定したとき、そのプロパティ(EDT)があるかチェックする内部関数
 
void replyInfreqDetail (const IPAddress toip, const byte seoj[])
 INF_REQに対して複数OPCにも対応して返答する内部関数
 
boolean replyInfreqDetail_sub (const byte eoj[], const byte epc, int &devId)
 EOJとEPCを指定したとき、そのプロパティ(EDT)があるかチェックする内部関数
 
void replySetgetDetail (const IPAddress toip, const byte seoj[])
 SETGETに対して返答する内部関数(現在は一律で不可応答する)
 
void replyInfcDetail (const IPAddress toip, const byte seoj[])
 INFCに対して複数OPCにも対応して返答する内部関数
 
void checkInfAndSend (int devId, const byte epc)
 INFプロパティならマルチキャストで送信
 
void checkInfAndSend (const byte eoj[], const byte epc)
 INFプロパティならマルチキャストで送信
 
int read ()
 受信データを受け取る
 
IPAddress remoteIP (void)
 受信データの送信元を取得する
 
void returner (void)
 受信データを処理する。EL処理でupdateしたら呼ぶ, Ver.3
 
void recvProcess (void)
 受信処理 Ver.4
 
void printAll (void)
 インスタンスの情報を表示
 
int getDevId (const byte obj[])
 device idを取得する内部関数
 
void delPtr (byte ptr[])
 byte[] を安全にdeleteするinline関数
 
bool verifyPacket (const byte data[], int size)
 受信パケットの正常生チェック
 

公開変数類

ELOBJ profile
 profile object (for specialist)
 
ELOBJdevices
 device objects (for multi eoj)
 
byte _rBuffer [EL_BUFFER_SIZE]
 receive buffer
 
byte _tid [2]
 TID (semi-auto incremented)
 

限定公開メンバ関数

int parsePacket (void)
 受信データを読む
 
void commonConstructor (WiFiUDP &udp, byte eojs[][3], int count)
 コンストラクタ共通処理
 
void tidAutoIncrement (void)
 TIDの自動インクリメント、オーバーフロー対策
 

詳解

Main class for EL

構築子と解体子

◆ EL() [1/3]

EL::EL ( WiFiUDP &  udp,
byte  classGroupCode,
byte  classCode,
byte  instanceNumber 
)

オブジェクトを一つだけサポートする場合のコンストラクタ

引数
udpWiFiUDP&
classGroupCodebyte class group code
classCodebyte class code
instanceNumberbyte instance number
覚え書き
eoj0, eoj1, eoj2で一つのオブジェクト 一般照明の例 ex. EL(udp, 0x02, 0x90, 0x01);
呼び出し関係図:

◆ EL() [2/3]

EL::EL ( WiFiUDP &  udp,
byte  eojs[][3],
int  count 
)

オブジェクトを複数サポートする場合のコンストラクタ

引数
udpWiFiUDP&
eojsbyte [][3]
countint
覚え書き
呼び出し関係図:

◆ EL() [3/3]

EL::EL ( WiFiUDP &  udp,
std::initializer_list< std::initializer_list< byte > >  eojs 
)

オブジェクトを複数サポートする場合のコンストラクタ

引数
udpWiFiUDP&
eojsstd::initializer_list<std::initializer_list<byte>>
覚え書き
使い方 EL echo(elUDP, { { 0x02, 0x90, 0x01 }, { 0x02, 0x90, 0x02 } });
呼び出し関係図:

関数詳解

◆ at() [1/2]

byte * EL::at ( const byte  epc)

EPCの値を取得する, eojが1個の場合(複数の場合は0番に相当)

引数
epcconst byte
戻り値
edt byte*
呼び出し関係図:

◆ at() [2/2]

byte * EL::at ( const int  devId,
const byte  epc 
)

EPCの値を取得する, 複数の場合

引数
devIdconst int, コンストラクタで渡した順番に相当
epcconst byte
戻り値
edt or nullptr
呼び出し関係図:

◆ begin() [1/2]

void EL::begin ( ELCallback  cb)

通信の開始、受信開始、ユーザ関数受付

呼び出し関係図:

◆ begin() [2/2]

void EL::begin ( void  )

通信の開始、受信開始

被呼び出し関係図:

◆ checkInfAndSend() [1/2]

void EL::checkInfAndSend ( const byte  eoj[],
const byte  epc 
)

INFプロパティならマルチキャストで送信

引数
eojconst byte[]
epcconst byte
呼び出し関係図:

◆ checkInfAndSend() [2/2]

void EL::checkInfAndSend ( int  devId,
const byte  epc 
)

INFプロパティならマルチキャストで送信

引数
devIdint
epcconst byte
覚え書き
内部処理でのINFもあるので、SETIやSETC処理でなくupdate関数に紐づく
呼び出し関係図:
被呼び出し関係図:

◆ commonConstructor()

void EL::commonConstructor ( WiFiUDP &  udp,
byte  eojs[][3],
int  count 
)
protected

コンストラクタ共通処理

引数
udpWiFiUDP&
eojsbyte[][3]
countint
呼び出し関係図:
被呼び出し関係図:

◆ delPtr()

void EL::delPtr ( byte  ptr[])
inline

byte[] を安全にdeleteするinline関数

引数
ptrbyte[]
覚え書き
オーバーヘッドをなくすためにinline関数とする

◆ getDevId()

int EL::getDevId ( const byte  obj[])

device idを取得する内部関数

引数
objconst byte []
戻り値
int -2:EL_DEVID_NOTHING, -1:EL_DEVID_NODEPROFILE, [0-n]: devid
被呼び出し関係図:

◆ parsePacket()

int EL::parsePacket ( void  )
protected

受信データを読む

戻り値
int
被呼び出し関係図:

◆ printAll()

void EL::printAll ( void  )

インスタンスの情報を表示

呼び出し関係図:

◆ read()

int EL::read ( void  )

受信データを受け取る

戻り値
受信データサイズ : int
呼び出し関係図:
被呼び出し関係図:

◆ recvProcess()

void EL::recvProcess ( void  )

受信処理 Ver.4

呼び出し関係図:

◆ remoteIP()

IPAddress EL::remoteIP ( void  )

受信データの送信元を取得する

戻り値
受信データの送信元IPアドレス : IPAddress
被呼び出し関係図:

◆ replyGetDetail()

void EL::replyGetDetail ( const IPAddress  toip,
const byte  _seoj[] = nullptr 
)

Getに対して複数OPCにも対応して返答する内部関数

引数
toipconst IPAddress
_seojconst byte[]
呼び出し関係図:
被呼び出し関係図:

◆ replyGetDetail_sub()

boolean EL::replyGetDetail_sub ( const byte  eoj[],
const byte  epc,
int &  devId 
)

EOJとEPCを指定したとき、そのプロパティ(EDT)があるかチェックする内部関数

引数
eojconst byte[]
epcconst byte
devId[out]int&: -2: EL_DEVID_NOTHING, -1:EL_DEVID_NODEPROFILE, x:devId
戻り値
true:無し、false:あり
覚え書き
replyGetDetailのサブルーチン、GetPropertyMapを参照しなくても、基本的に持っているPeopertyはGet可能なのでMapチェックしなくてよい
被呼び出し関係図:

◆ replyInfcDetail()

void EL::replyInfcDetail ( const IPAddress  toip,
const byte  _seoj[] = nullptr 
)

INFCに対して複数OPCにも対応して返答する内部関数

引数
toipconst IPAddress
_seojconst byte[]
呼び出し関係図:
被呼び出し関係図:

◆ replyInfreqDetail()

void EL::replyInfreqDetail ( const IPAddress  toip,
const byte  _seoj[] = nullptr 
)

INF_REQに対して複数OPCにも対応して返答する内部関数

引数
toipconst IPAddress
_seojconst byte[]
呼び出し関係図:
被呼び出し関係図:

◆ replyInfreqDetail_sub()

boolean EL::replyInfreqDetail_sub ( const byte  eoj[],
const byte  epc,
int &  devId 
)

EOJとEPCを指定したとき、そのプロパティ(EDT)があるかチェックする内部関数

引数
eojconst byte[]
epcconst byte
devId[out]int&: -2: EL_DEVID_NOTHING, -1:EL_DEVID_NODEPROFILE, x:devId
戻り値
true:無し、false:あり
覚え書き
replyInfreqDetailのサブルーチン、GetPropertyMapを参照しなくても、基本的に持っているPeopertyはGet可能なのでMapチェックしなくてよい
被呼び出し関係図:

◆ replySetDetail()

void EL::replySetDetail ( const IPAddress  toip,
const byte  _seoj[] = nullptr 
)

Setに対して複数OPCにも対応して返答する内部関数

引数
toipconst IPAddress
覚え書き
EPC毎の設定値に関して基本はノーチェックなので注意すべし EPC毎の設定値チェックや、INF処理に関しては下記の replySetDetail_sub にて実施 SET_RESはEDT入ってない
呼び出し関係図:
被呼び出し関係図:

◆ replySetDetail_sub()

boolean EL::replySetDetail_sub ( const byte  eoj[],
const byte  epc,
int &  devId 
)

EOJとEPCを指定したとき、そのプロパティ(EDT)があるかチェックする内部関数

引数
eojconst byte[]
epcconst byte
devId[out]int&: -1:profile, x:devId
戻り値
true:無し、false:あり
覚え書き
replySetDetail_subのサブルーチン、本来はSetPropertyMap[0x9E]の確認をすべきだが、やってない
被呼び出し関係図:

◆ replySetgetDetail()

void EL::replySetgetDetail ( const IPAddress  toip,
const byte  _seoj[] = nullptr 
)

SETGETに対して返答する内部関数(現在は一律で不可応答する)

引数
toipconst IPAddress
_seojconst byte[]
呼び出し関係図:
被呼び出し関係図:

◆ returner()

void EL::returner ( void  )

受信データを処理する。EL処理でupdateしたら呼ぶ, Ver.3

覚え書き
will be deprecated
呼び出し関係図:
被呼び出し関係図:

◆ send()

void EL::send ( IPAddress  toip,
byte  sBuffer[],
int  size 
)

IP指定による送信

引数
toipIPAddress
sBufferbyte[]
sizeint size of sBuffer
被呼び出し関係図:

◆ sendBroad()

void EL::sendBroad ( byte  sBuffer[],
int  size 
)

ブロードキャストによる送信(default: 192.168.1.255)

引数
sBufferbyte[]
sizeint
覚え書き
!!deprecated!! 非推奨機能なので、本番環境では利用しないように

◆ sendDetails()

void EL::sendDetails ( const IPAddress  toip,
const byte  tid[],
const byte  seoj[],
const byte  deoj[],
const byte  esv,
const byte  opc,
const byte  detail[],
const byte  detailSize 
)

複数のEPCで送信する場合はこれを使う

引数
toipconst IPAddress:送信先
tidconst tid:TID
seojconst byte[3]
deojconst byte[3]
esvconst byte
opcconst byte
detailconst byte[N]: {EPC, PDC, EDT[x]}[y]
detailSizeconst byte: size of detail N
呼び出し関係図:
被呼び出し関係図:

◆ sendMulti()

void EL::sendMulti ( byte  sBuffer[],
int  size 
)

マルチキャストによる送信(default: 192.168.1.255)

引数
sBufferbyte []
sizeint バージョンによってはブロードキャストによる送信の場合がある。
被呼び出し関係図:

◆ sendMultiOPC1() [1/4]

void EL::sendMultiOPC1 ( const byte  deoj[],
const byte  esv,
const byte  epc,
const byte  pdcedt[] 
)

OPC一個用のマルチキャスト送信、seoj省略(0番)、TID自動

引数
deojconst byte[]
esvconst byte
epcconst byte
pdcedtconst byte[]
呼び出し関係図:

◆ sendMultiOPC1() [2/4]

void EL::sendMultiOPC1 ( const byte  seoj[],
const byte  deoj[],
const byte  esv,
const byte  epc,
const byte  pdcedt[] 
)

OPC一個用のマルチキャスト送信、TID自動

引数
seojconst byte[]
deojconst byte[]
esvconst byte
epcconst byte
pdcedtconst byte[]
呼び出し関係図:

◆ sendMultiOPC1() [3/4]

void EL::sendMultiOPC1 ( const byte  seoj[],
const byte  deoj[],
const byte  esv,
const byte  epc,
std::initializer_list< byte >  edt 
)

OPC1指定による送信(SEOJは初期化時に指定したものを使う)

引数
seojconst byte[]
deojconst byte[]
esvconst byte
epcconst byte
edtstd::initializer_list<byte>
覚え書き
PDCは自動なのでEDTしか指定しないということに注意
呼び出し関係図:

◆ sendMultiOPC1() [4/4]

void EL::sendMultiOPC1 ( const byte  tid[],
const byte  seoj[],
const byte  deoj[],
const byte  esv,
const byte  epc,
const byte  pdcedt[] 
)

OPC一個用のマルチキャスト送信、TID指定有り

引数
tidconst byte[]
seojconst byte[]
deojconst byte[]
esvconst byte
epcconst byte
pdcedtconst byte[]
呼び出し関係図:
被呼び出し関係図:

◆ sendMultiOPC1ID()

void EL::sendMultiOPC1ID ( const int  devId,
const byte  deoj[],
const byte  esv,
const byte  epc,
const byte  pdcedt[] 
)

OPC一個用のマルチキャスト送信、seojの代わりにIDで指定、TID自動

引数
devIdconst int
deojconst byte[]
esvconst byte
epcconst byte
pdcedtconst byte[]
覚え書き
recommendation 推奨
呼び出し関係図:
被呼び出し関係図:

◆ sendOPC1() [1/4]

void EL::sendOPC1 ( const IPAddress  toip,
const byte  deoj[],
const byte  esv,
const byte  epc,
const byte  pdcedt[] 
)

OPC1指定による送信(SEOJは初期化時に指定したものを使う)

引数
toipconst IPAddress
deojconst byte[]
esvconst byte
epcconst byte
pdcedtconst byte[]
呼び出し関係図:

◆ sendOPC1() [2/4]

void EL::sendOPC1 ( const IPAddress  toip,
const byte  seoj[],
const byte  deoj[],
const byte  esv,
const byte  epc,
const byte  pdcedt[] 
)

OPC1指定による送信(SEOJも指定する,ほぼ内部関数)

引数
toipconst IPAddress
seojconst byte[]
deojconst byte[]
esvconst byte
epcconst byte
pdcedtconst byte[]
呼び出し関係図:

◆ sendOPC1() [3/4]

void EL::sendOPC1 ( const IPAddress  toip,
const byte  seoj[],
const byte  deoj[],
const byte  esv,
const byte  epc,
std::initializer_list< byte >  edt 
)

OPC1指定による送信(SEOJは初期化時に指定したものを使う)

引数
toipconst IPAddress
seojconst byte[]
deojconst byte[]
esvconst byte
epcconst byte
edtstd::initializer_list<byte>
覚え書き
PDCは自動なのでEDTしか指定しないということに注意
呼び出し関係図:

◆ sendOPC1() [4/4]

void EL::sendOPC1 ( const IPAddress  toip,
const byte  tid[],
const byte  seoj[],
const byte  deoj[],
const byte  esv,
const byte  epc,
const byte  pdcedt[] 
)

OPC1指定による送信(SEOJも指定する,ほぼ内部関数)

引数
toipconst IPAddress
tidconst byte[]
seojconst byte[]
deojconst byte[]
esvconst byte
epcconst byte
pdcedtconst byte[]
呼び出し関係図:
被呼び出し関係図:

◆ sendOPC1ID()

void EL::sendOPC1ID ( const IPAddress  toip,
const int  devId,
const byte  deoj[],
const byte  esv,
const byte  epc,
const byte  pdcedt[] 
)
引数
toipconst IPAddress
devIdconst int
deojconst byte[]
esvconst byte
epcconst byte
pdcedtconst byte[]
覚え書き
recommended 推奨
呼び出し関係図:

◆ tidAutoIncrement()

void EL::tidAutoIncrement ( void  )
protected

TIDの自動インクリメント、オーバーフロー対策

被呼び出し関係図:

◆ update() [1/4]

void EL::update ( const byte  epc,
PDCEDT  pdcedt 
)

EPCの値を変更する, eojが1個の場合(複数の場合は0番に相当)

引数
epcconst byte
pdcedtPDCEDT
覚え書き
pdcedtなので、pdcは自分で計算することに注意
呼び出し関係図:
被呼び出し関係図:

◆ update() [2/4]

void EL::update ( const byte  epc,
std::initializer_list< byte >  edt 
)

EPCの値を変更する, eojが1個の場合(複数の場合は0番に相当)

引数
epcconst byte
edtstd::initializer_list<byte>
覚え書き
epcが0x9D, 0x9E, 0x9Fのときはプロパティマップになる。 パラメタがedtなので、pdcは自動計算することに注意
呼び出し関係図:

◆ update() [3/4]

void EL::update ( const int  devId,
const byte  epc,
PDCEDT  pdcedt 
)

EPCの値を変更する, 複数の場合

引数
devIdconst int, コンストラクタで渡した順番に相当
epcconst byte
pdcedtPDCEDT
覚え書き
pdcedtなので、pdcは自分で計算することに注意
呼び出し関係図:

◆ update() [4/4]

void EL::update ( const int  devId,
const byte  epc,
std::initializer_list< byte >  edt 
)

EPCの値を変更する, 複数の場合

引数
devIdconst int, コンストラクタで渡した順番に相当
epcconst byte
edtstd::initializer_list<byte>
覚え書き
edtなので、pdcは自動計算することに注意
呼び出し関係図:

◆ verifyPacket()

bool EL::verifyPacket ( const byte  buffer[],
int  packetSize 
)

受信パケットの正常生チェック

引数
bufferbyte[]
packetSizeint
覚え書き
完全チェックではなく、メモリの不正アクセス防止の簡易チェック
被呼び出し関係図:

メンバ詳解

◆ _rBuffer

byte EL::_rBuffer[EL_BUFFER_SIZE]

receive buffer

◆ _tid

byte EL::_tid[2]

TID (semi-auto incremented)

◆ devices

ELOBJ* EL::devices

device objects (for multi eoj)

◆ profile

ELOBJ EL::profile

profile object (for specialist)


このクラス詳解は次のファイルから抽出されました: