謝辞
一部のメッセージ コードでは、受信者からの確認応答が必要です。この例では 受信側は確認応答(ACK)または 受信後 1 秒以内にネガティブ確認応答(NAK)を送信します。
メッセージ グループ名 | 値 |
---|---|
謝辞 | 0xFF |
確認コード名 | 値 |
---|---|
ACK | 0x01 |
NAK | 0x02 |
確認応答は、メッセージが受信された直後に送信され、
対応できます。確認応答にはメッセージ グループを含める必要があります
、コード、現在の状態。たとえば
プロバイダが着信音のアクション(0x04010002013C
)を含むメッセージを受信する。
アクションの確認応答として 0xFF0100040401013C
を送り返します。ここで:
- 0xFF: ACK イベント
- 0x01: ACK コード
- 0x0004: 追加データ長
- 0x0401: アクション メッセージ グループとコード
- 0x013C: アクション メッセージ グループとコードの現在の状態、リング右および 60 秒でタイムアウト
NAK の場合は、追加の 分析できます理由は次のとおりです。
- 0x00: サポート対象外
- 0x01: デバイスがビジー状態
- 0x02: 現在の状態のため許可されない
- 0x03: メッセージ認証コードが正しくないため許可されない
- 0x04: 冗長デバイスのアクション
前の例から、次の理由でリングが NAK されたとしても、
プロバイダが別のタスクでビジー状態の場合、返されるパケットは
0xFF02000401040100
ここで
- 0xFF: ACK イベント
- 0x02: NAK コード
- 0x0004: 追加データ長
- 0x01: NAK の理由、デバイスがビジー状態
- 0x0401: アクション メッセージ グループとコード
- 0x00: アクション メッセージ グループとコードの現在の状態(すべてのコンポーネント) 着信音を停止
例:
#define FP_MSG_ACK 0x01
#define FP_MSG_NAK 0x02
#define FP_MSG_GROUP_ACK 0xFF
static void fp_msg_send_ack(uint8_t msgGroup, uint8_t msgCode)
{
FP_MESSAGE_STREAM req = {FP_MSG_GROUP_ACK, FP_MSG_ACK, 0, 2};
req.data[0] = msgGroup;
req.data[1] = msgCode;
fp_send((uint8_t *)&req);
}
static void fp_msg_send_nak(uint8_t reason, uint8_t msgGroup, uint8_t msgCode)
{
//reason= 0x00: Not supported, 0x01: Device busy, or 0x02: Not allowed due to current state
FP_MESSAGE_STREAM req = {FP_MSG_GROUP_ACK, FP_MSG_NAK, 0, 3};
req.data[0] = reason;
req.data[1] = msgGroup;
req.data[2] = msgCode;
fp_send((uint8_t *)&req);
}