Agradecimentos
Alguns códigos de mensagem exigem uma confirmação do destinatário. Nesse caso, o destinatário deve enviar uma confirmação (ACK) ou confirmação negativa (NAK, na sigla em inglês) até um segundo após o recebimento da mensagem.
| Nome do grupo de mensagens | Valor | 
|---|---|
| Confirmação | 0xFF | 
| Nome do código de confirmação | Valor | 
|---|---|
| CONF | 0x01 | 
| NAK | 0x02 | 
Os agradecimentos devem ser enviados logo após o recebimento da mensagem para que o
remetente possa agir de acordo. Uma confirmação deve conter o grupo de mensagens
, o código e o estado atual da mensagem que está referenciando. Por exemplo, se
o provedor recebe uma mensagem com a ação de tocar (0x04010002013C);
ele precisa confirmar a ação enviando de volta 0xFF0100040401013C, em que:
- 0xFF: evento ACK
- 0x01: código ACK
- 0x0004: comprimento de dados adicional
- 0x0401: o código e o grupo de mensagens de ação
- 0x013C: o estado atual do grupo de mensagens de ação e do código, tocar à direita e Tempo limite de 60 segundos
Para um NAK, o motivo também deve ser incluído como o primeiro byte dos dados. As razões incluem:
- 0 x 00: incompatível
- 0x01: dispositivo ocupado
- 0x02: não permitido devido ao estado atual
- 0x03: não permitido devido ao código incorreto de autenticação de mensagem
- 0x04: ação de dispositivo redundante
No exemplo anterior, se o anel fosse NAK devido à
Se o provedor estiver ocupado com outra tarefa, o pacote retornado deverá ser definido como
0xFF02000401040100 em que
- 0xFF: evento ACK
- 0x02: código NAK
- 0x0004: comprimento de dados adicional
- 0x01: motivo NAK, dispositivo ocupado
- 0x0401: o código e o grupo de mensagens de ação
- 0x00: o estado atual do código e do grupo de mensagens de ação, todos os componentes Parar de tocar
Exemplo:
#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);
}