# 交信開始シーケンス 自動販売機との交信を開始する際のシーケンス ```{mermaid} sequenceDiagram participant SDK participant AsReader participant 自動販売機 SDK->>AsReader: 電源 ON SDK->>AsReader: パスワードテキスト送信 note over AsReader, 自動販売機: 交信確立処理 AsReader->>SDK: ACK1 または NAK note over AsReader, 自動販売機: 交信確立処理 AsReader->>SDK: ACK2 または NAK ``` --- # コマンド送信シーケンス 自動販売機へコマンドを送信する際のシーケンス ```{mermaid} sequenceDiagram participant SDK participant AsReader participant 自動販売機 SDK->>AsReader: 電源 ON SDK->>AsReader: パスワードテキスト送信 note over AsReader, 自動販売機: 交信確立処理 AsReader->>SDK: ACK1 または NAK note over AsReader, 自動販売機: 交信確立処理 AsReader->>SDK: ACK2 または NAK SDK ->> AsReader: コマンドテキスト送信 AsReader ->> 自動販売機: コマンドテキスト 自動販売機 ->> AsReader: ACK/NAK AsReader ->> SDK: ACK3 または NAK ``` --- # データ収集シーケンス 自動販売機から設定データや販売データを収集する場合のシーケンス ```{mermaid} sequenceDiagram participant Host as SDK participant IrASK as AsReader participant VMC as 自動販売機 Host ->> IrASK: 電源 ON Host ->> IrASK: パスワードテキスト送信 note over IrASK, VMC: 交信確立処理 IrASK ->> Host: ACK1 または NAK note over IrASK, VMC: 交信確立処理 IrASK ->> Host: ACK2 または NAK Host ->> IrASK: コマンドテキスト送信 IrASK ->> VMC: コマンドテキスト VMC ->> IrASK: ACK/NAK IrASK ->> Host: ACK3 または NAK VMC ->> IrASK: データブロック0 IrASK ->> VMC: ACK IrASK ->> Host: データテキスト0送信 Host ->> IrASK: ACK0 または NAK VMC ->> IrASK: データブロック1 IrASK ->> VMC: ACK IrASK ->> Host: データテキスト1送信 Host ->> IrASK: ACK0 または NAK VMC ->> IrASK: データブロックN IrASK ->> VMC: ACK IrASK ->> Host: データテキストN送信 Host ->> IrASK: ACK0 または NAK ``` 自動販売機との通信と、AsReaderとの通信は実際には並列で実行されるが、 バッファオーバーフローを防ぐため、先行するパケットに対するAsReaderへのACKが確認されるまで 自動販売機へのACKは待機される。 --- # データ設定シーケンス 自動販売機に設定データ等を送信する場合のシーケンス ```{mermaid} sequenceDiagram participant Host as SDK participant IrASK as AsReader participant VMC as 自動販売機 Host ->> IrASK: 電源 ON Host ->> IrASK: パスワードテキスト送信 note over IrASK, VMC: 交信確立処理 IrASK ->> Host: ACK1 または NAK note over IrASK, VMC: 交信確立処理 IrASK ->> Host: ACK2 または NAK Host ->> IrASK: コマンドテキスト送信 IrASK ->> VMC: コマンドテキスト VMC ->> IrASK: ACK/NAK IrASK ->> Host: ACK3 または NAK Host ->> IrASK: データテキスト送信 IrASK ->> VMC: データテキスト VMC ->> IrASK: ACK IrASK ->> Host: ACK0 または NAK ``` --- # エラー時シーケンス ### 交信要求パルスに自動販売機無応答 ```{mermaid} sequenceDiagram participant Host as SDK participant IrASK as AsReader participant VMC as 自動販売機 Host ->> IrASK: パスワードテキスト送信 IrASK ->> VMC: 交信要求パルス note over VMC: タイムアウト VMC -->> IrASK: ACK 無応答 note over IrASK: リトライ IrASK ->> VMC: 交信要求パルス note over VMC: タイムアウト VMC -->> IrASK: ACK 無応答 IrASK ->> Host: NAK3 ``` ```{important} ※タイムアウト時間およびリトライ回数は、ファームウェアの設定によって異なります。 ``` --- ### 交信開始後に自動販売機無応答 ```{mermaid} sequenceDiagram participant Host as SDK participant IrASK as AsReader participant VMC as 自動販売機 Host ->> IrASK: パスワードテキスト送信 IrASK ->> VMC: 交信要求パルス VMC -->> IrASK: ACK IrASK ->> Host: ACK1 IrASK ->> VMC: パスワード note over VMC: タイムアウト VMC -->> IrASK: ACK 無応答 note over IrASK: リトライ IrASK ->> VMC: パスワード note over VMC: タイムアウト VMC -->> IrASK: ACK 無応答 IrASK ->> Host: NAK3 ``` ```{important} ※タイムアウト時間およびリトライ回数は、ファームウェアの設定によって異なります。 ``` --- ### ブロックの途中で自動販売機が転送中断 ```{mermaid} sequenceDiagram participant SDK participant AsReader participant 自動販売機 SDK->>AsReader: 電源 ON SDK->>AsReader: パスワードテキスト送信 note over AsReader, 自動販売機: 交信確立処理 AsReader->>SDK: ACK1 note over AsReader, 自動販売機: 交信確立処理 AsReader->>SDK: ACK2 SDK ->> AsReader: コマンドテキスト送信 AsReader ->> 自動販売機: コマンドテキスト 自動販売機 ->> AsReader: ACK AsReader ->> SDK: ACK3 自動販売機 ->> AsReader: データブロック0 AsReader ->> 自動販売機: ACK AsReader ->> SDK: データテキスト0送信 SDK ->> AsReader: ACK0 note over AsReader, 自動販売機: バイト間タイムアウト 自動販売機 -->> AsReader: 転送中断 AsReader ->> SDK: NAK3 ``` --- ### データ送信にホストが無応答 ```{mermaid} sequenceDiagram participant SDK participant AsReader participant 自動販売機 SDK->>AsReader: 電源 ON SDK->>AsReader: パスワードテキスト送信 note over AsReader, 自動販売機: 交信確立処理 AsReader->>SDK: ACK1 note over AsReader, 自動販売機: 交信確立処理 AsReader->>SDK: ACK2 SDK ->> AsReader: コマンドテキスト送信 AsReader ->> 自動販売機: コマンドテキスト 自動販売機 ->> AsReader: ACK AsReader ->> SDK: ACK3 自動販売機 ->> AsReader: データブロック0 AsReader ->> 自動販売機: ACK AsReader ->> SDK: データテキスト0送信 自動販売機 ->> AsReader: データブロック1 AsReader ->> 自動販売機: ACK保留 SDK -->> AsReader: ACK無応答 AsReader ->> SDK: データテキスト0再送 自動販売機 ->> AsReader: データブロック1再送 AsReader ->> 自動販売機: ACK保留 SDK -->> AsReader: ACK無応答 自動販売機 ->> AsReader: データブロック1再送 AsReader ->> 自動販売機: ACK保留 AsReader ->> SDK: NAK5 note over SDK, 自動販売機: 転送中断 ``` --- ### データ送信に自動販売機が無応答 ```{mermaid} sequenceDiagram participant SDK participant AsReader participant 自動販売機 SDK->>AsReader: 電源 ON SDK->>AsReader: パスワードテキスト送信 note over AsReader, 自動販売機: 交信確立処理 AsReader->>SDK: ACK1 note over AsReader, 自動販売機: 交信確立処理 AsReader->>SDK: ACK2 SDK ->> AsReader: コマンドテキスト送信 AsReader ->> 自動販売機: コマンドテキスト 自動販売機 ->> AsReader: ACK AsReader ->> SDK: ACK3 SDK ->> AsReader: データテキスト0送信 AsReader ->> 自動販売機: データブロック0 自動販売機 -->> AsReader: 無応答 AsReader ->> SDK: NAK3 note over SDK, 自動販売機: 転送中断 ```