Teşekkür
Bazı mesaj kodları için alıcının onayı gerekir. Böyle durumlarda alıcı bir onay (ACK) göndermeli bir negatif onay (NAK) alır.
| Mesaj Grubu Adı | Değer | 
|---|---|
| Onay | 0xFF | 
| Onay Kodu Adı | Değer | 
|---|---|
| Onayla | 0x01 | 
| NAK | 0x02 | 
Onaylar, ileti alındıktan hemen sonra gönderilmelidir.
buna göre hareket edebilir. Onay, mesaj grubunu içermelidir
, kodu ve geçerli durumu için de uygun olacaktır. Örneğin,
Sağlayıcı, zil işlemini (0x04010002013C) içeren bir mesaj alır.
Aşağıdaki durumlarda 0xFF0100040401013C geri göndererek işlemi onaylamalıdır:
- 0xFF: ACK etkinliği
- 0x01: ACK kodu
- 0x0004: Ek veri uzunluğu
- 0x0401: İşlem mesajı grubu ve kodu
- 0x013C: İşlem mesajı grubunun ve kodunun geçerli durumu, sağı çaldır ve 60 saniye zaman aşımı
Bir NAK için neden, dışı verilerdir. Nedenler arasında şunlar yer alır:
- 0x00: Desteklenmiyor
- 0x01: Cihaz meşgul
- 0x02: Geçerli durum nedeniyle izin verilmiyor
- 0x03: Yanlış mesaj kimlik doğrulama kodu nedeniyle izin verilmiyor
- 0x04: Gereksiz cihaz işlemi
Önceki örnekten devam edersek halka
Sağlayıcı başka bir görevle meşgul. Döndürülen paket
0xFF02000401040100 burada:
- 0xFF: ACK etkinliği
- 0x02: NAK kodu
- 0x0004: Ek veri uzunluğu
- 0x01: NAK nedeni, Cihaz meşgul
- 0x0401: İşlem mesajı grubu ve kodu
- 0x00: İşlem mesajı grubunun ve kodunun mevcut durumu, tüm bileşenler çalmayı kes
Örnek:
#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);
}