交信開始シーケンス

自動販売機との交信を開始する際のシーケンス

        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
    

コマンド送信シーケンス

自動販売機へコマンドを送信する際のシーケンス

        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
    

データ収集シーケンス

自動販売機から設定データや販売データを収集する場合のシーケンス

        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は待機される。


データ設定シーケンス

自動販売機に設定データ等を送信する場合のシーケンス

        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
    

エラー時シーケンス

交信要求パルスに自動販売機無応答

        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

    

重要

※タイムアウト時間およびリトライ回数は、ファームウェアの設定によって異なります。


交信開始後に自動販売機無応答

        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

    

重要

※タイムアウト時間およびリトライ回数は、ファームウェアの設定によって異なります。


ブロックの途中で自動販売機が転送中断

        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
    

データ送信にホストが無応答

        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, 自動販売機: 転送中断

    

データ送信に自動販売機が無応答

        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, 自動販売機: 転送中断