Podziękowania
Niektóre kody wiadomości wymagają potwierdzenia przez odbiorcę. W tym przypadku odbiorca powinien wysłać potwierdzenie (ACK) lub Negatywne potwierdzenie (NAK) w ciągu 1 sekundy od otrzymania wiadomości.
| Nazwa grupy wiadomości | Wartość | 
|---|---|
| Potwierdzenie | 0xFF | 
| Nazwa kodu potwierdzenia | Wartość | 
|---|---|
| POTWIERDŹ | 0x01 | 
| NAK | 0x02 | 
Potwierdzenia należy wysyłać bezpośrednio po otrzymaniu wiadomości, aby
może podjąć odpowiednie działania. Potwierdzenie powinno zawierać grupę wiadomości
, kod oraz bieżący stan wiadomości, do której się odnosi. Na przykład, jeśli
Dostawca otrzyma wiadomość z dzwonieniem (0x04010002013C),
powinien potwierdzić działanie, odsyłając 0xFF0100040401013C, gdzie:
- 0xFF: zdarzenie potwierdzenia
- 0x01: kod potwierdzenia
- 0x0004: dodatkowa długość danych
- 0x0401: grupa wiadomości i kod działania
- 0x013C: bieżący stan grupy wiadomości i kodu działania, zadzwoń po prawej Limit czasu wynosi 60 sekund
W przypadku NAK przyczynę należy również podać jako pierwszy bajt dodatkowych i skalowalnych danych. Możliwe przyczyny:
- 0x00: nieobsługiwane
- 0x01: Urządzenie jest zajęte
- 0x02: niedozwolone ze względu na bieżący stan
- 0x03: niedozwolone z powodu nieprawidłowego kodu uwierzytelniania wiadomości
- 0x04: Nadmiarowe działanie urządzenia
Z poprzedniego przykładu, gdyby pierścień zostałby zamknięty ze względu na
Dostawca jest zajęty innym zadaniem, zwrócony pakiet powinien mieć wartość
0xFF02000401040100, gdzie
- 0xFF: zdarzenie potwierdzenia
- 0x02: kod NAK
- 0x0004: dodatkowa długość danych
- 0x01: powód NAK, Urządzenie jest zajęte
- 0x0401: grupa wiadomości i kod działania
- 0x00: bieżący stan grupy wiadomości i kodu działania, wszystkie komponenty Przestań dzwonić
Przykład:
#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);
}