Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Danksagungen
Einige Nachrichtencodes erfordern eine Bestätigung des Empfängers. In diesem Fall
sollte der Empfänger entweder eine Bestätigung (ACK) oder
negative Bestätigung (NAK) innerhalb von 1 Sekunde nach Empfang der Nachricht.
Name der Nachrichtengruppe
Wert
Bestätigung
0xFF
Name des Bestätigungscodes
Wert
BESTÄTIGEN
0x01
Nackt
0x02
Bestätigungen sollten direkt nach Empfang der Nachricht gesendet werden, damit
wie der Absender entsprechend handeln kann. Eine Bestätigung sollte die Nachrichtengruppe enthalten
, Code und aktuellen Status für die Nachricht, auf die sie verweist. Wenn beispielsweise
Der Anbieter erhält eine Nachricht mit der Anrufaktion (0x04010002013C),
sollte sie die Aktion bestätigen, indem sie 0xFF0100040401013C zurücksendet, wobei Folgendes gilt:
0xFF: ACK-Ereignis
0x01: ACK-Code
0x0004: Zusätzliche Datenlänge
0x0401: Gruppe und Code der Aktionsnachricht
0x013C: Der aktuelle Status der Aktionsnachrichtengruppe und des Codes, Klingelton rechts und
Zeitlimit nach 60 Sekunden
Bei einem NAK sollte der Grund auch als erstes Byte der zusätzlichen
Daten. Folgende Begründungen sind möglich:
0x00: Nicht unterstützt
0x01: Gerät nicht verfügbar
0x02: Aufgrund des aktuellen Status nicht zulässig
0x03: Aufgrund eines falschen Nachrichtenauthentifizierungscodes nicht zulässig
0x04: Redundante Geräteaktion
Würde aus dem vorherigen Beispiel der Ring stattdessen aufgrund eines
Anbieter ist mit einer anderen Aufgabe beschäftigt. Das zurückgegebene Paket sollte auf
0xFF02000401040100, wobei
0xFF: ACK-Ereignis
0x02: NAK-Code
0x0004: Zusätzliche Datenlänge
0x01: NAK-Grund, Gerät nicht verfügbar
0x0401: Gruppe und Code der Aktionsnachricht
0x00: Der aktuelle Status der Aktionsnachrichtengruppe und des Codes, alle Komponenten
hör auf zu klingeln
Beispiel:
#define FP_MSG_ACK 0x01#define FP_MSG_NAK 0x02#define FP_MSG_GROUP_ACK 0xFFstaticvoidfp_msg_send_ack(uint8_tmsgGroup,uint8_tmsgCode){FP_MESSAGE_STREAMreq={FP_MSG_GROUP_ACK,FP_MSG_ACK,0,2};req.data[0]=msgGroup;req.data[1]=msgCode;fp_send((uint8_t*)&req);}staticvoidfp_msg_send_nak(uint8_treason,uint8_tmsgGroup,uint8_tmsgCode){//reason= 0x00: Not supported, 0x01: Device busy, or 0x02: Not allowed due to current stateFP_MESSAGE_STREAMreq={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);}
[null,null,["Zuletzt aktualisiert: 2025-08-13 (UTC)."],[[["\u003cp\u003eSome message codes require an acknowledgement (ACK) or negative-acknowledgement (NAK) response within 1 second, sent only when specified.\u003c/p\u003e\n"],["\u003cp\u003eAcknowledgements (ACKs) use the code \u003ccode\u003e0xFF01\u003c/code\u003e and should include the referenced message's group, code, and current state.\u003c/p\u003e\n"],["\u003cp\u003eNegative-acknowledgements (NAKs) use the code \u003ccode\u003e0xFF02\u003c/code\u003e and provide a reason code (e.g., \u003ccode\u003e0x01\u003c/code\u003e for Device busy) along with the message's group and code.\u003c/p\u003e\n"],["\u003cp\u003eThe acknowledgement structure includes the event (ACK/NAK), code, additional data length, and relevant message details.\u003c/p\u003e\n"],["\u003cp\u003eExample code snippets demonstrate sending ACKs and NAKs using pre-defined message group and code values.\u003c/p\u003e\n"]]],["Receivers must send an acknowledgement (ACK) or negative-acknowledgement (NAK) within one second for specific message codes. ACKs (0x01) and NAKs (0x02) belong to the 0xFF message group. Responses include the message group, code, and current state of the action, and for NAKs, a reason. Example reasons: Not supported (0x00), Device busy (0x01), Not allowed (0x02), Incorrect message code (0x03) or Redundant action (0x04). Example for ring action: `0xFF0100040401013C` or NAK :`0xFF02000401040100`.\n"],null,["Acknowledgements\n----------------\n\nSome message codes require an acknowledgement from the receiver. In this case,\nthe receiver should send either an acknowledgement (ACK) or\nnegative-acknowledgement (NAK) within 1 second of receiving the message.\n| **Note:** Not all messages require an ACK. An ACK should only be sent when the spec above recommends doing so. Unexpected ACKs should be ignored by the receiver.\n\n| Message Group Name | Value |\n|--------------------|-------|\n| Acknowledgement | 0xFF |\n\n| Acknowledgement Code Name | Value |\n|---------------------------|-------|\n| ACK | 0x01 |\n| NAK | 0x02 |\n\nAcknowledgments should be sent directly after message is received so that the\nsender can act accordingly. An acknowledgment should contain the message group\n, code and current state for the message that it is referencing. For example, if\nthe Provider receives a message containing the ring action (`0x04010002013C`),\nit should acknowledge the action by sending back `0xFF0100040401013C` where:\n\n- 0xFF: ACK event\n- 0x01: ACK code\n- 0x0004: Additional data length\n- 0x0401: The action message group and code\n- 0x013C: The current state of the action message group and code, ring right and 60 seconds timeout\n\nFor a NAK, the reason should also be included as the first byte of additional\ndata. Reasons include:\n\n- 0x00: Not supported\n- 0x01: Device busy\n- 0x02: Not allowed due to current state\n- 0x03: Not allowed due to incorrect message authentication code\n- 0x04: Redundant device action\n\nFrom the previous example, if the ring were to be NAK'ed instead due to the\nProvider being busy with another task, the returned packet should be set to\n`0xFF02000401040100` where\n\n- 0xFF: ACK event\n- 0x02: NAK code\n- 0x0004: Additional data length\n- 0x01: NAK reason, Device busy\n- 0x0401: The action message group and code\n- 0x00: The current state of the action message group and code, all components stop ringing\n\nExample: \n\n #define FP_MSG_ACK 0x01\n #define FP_MSG_NAK 0x02\n #define FP_MSG_GROUP_ACK 0xFF\n\n\n static void fp_msg_send_ack(uint8_t msgGroup, uint8_t msgCode)\n {\n FP_MESSAGE_STREAM req = {FP_MSG_GROUP_ACK, FP_MSG_ACK, 0, 2};\n\n req.data[0] = msgGroup;\n req.data[1] = msgCode;\n\n fp_send((uint8_t *)&req);\n }\n\n static void fp_msg_send_nak(uint8_t reason, uint8_t msgGroup, uint8_t msgCode)\n {\n //reason= 0x00: Not supported, 0x01: Device busy, or 0x02: Not allowed due to current state\n FP_MESSAGE_STREAM req = {FP_MSG_GROUP_ACK, FP_MSG_NAK, 0, 3};\n\n req.data[0] = reason;\n req.data[1] = msgGroup;\n req.data[2] = msgCode;\n\n fp_send((uint8_t *)&req);\n }"]]