감사의 말씀

일부 메시지 코드는 수신자의 확인이 필요합니다. 이 경우 수신자는 메시지를 수신한 후 1초 이내에 확인 (ACK) 또는 음성 인식 (NAK)을 전송해야 합니다.

메시지 그룹 이름
확인 0xFF
확인 코드명
확인 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);
}