স্বীকৃতি

কিছু বার্তা কোড গ্রহণকারীর কাছ থেকে একটি স্বীকৃতি প্রয়োজন। এই ক্ষেত্রে, মেসেজ পাওয়ার 1 সেকেন্ডের মধ্যে রিসিভারকে একটি স্বীকৃতি (ACK) বা নেতিবাচক-স্বীকৃতি (NAK) পাঠাতে হবে।

বার্তা গ্রুপের নাম মান
স্বীকৃতি 0xFF
স্বীকৃতি কোডের নাম মান
ACK 0x01
NAK 0x02

বার্তা প্রাপ্তির পরে স্বীকৃতিগুলি সরাসরি পাঠানো উচিত যাতে প্রেরক সেই অনুযায়ী কাজ করতে পারে। একটি স্বীকৃতিতে বার্তা গ্রুপ , কোড এবং বার্তাটির বর্তমান অবস্থা থাকা উচিত যা এটি উল্লেখ করছে৷ উদাহরণস্বরূপ, যদি প্রদানকারী রিং অ্যাকশন ( 0x04010002013C ) সম্বলিত একটি বার্তা পায়, তাহলে তাকে 0xFF0100040401013C ফেরত পাঠানোর মাধ্যমে অ্যাকশনটি স্বীকার করা উচিত যেখানে:

  • 0xFF: ACK ইভেন্ট
  • 0x01: ACK কোড
  • 0x0004: অতিরিক্ত ডেটা দৈর্ঘ্য
  • 0x0401: অ্যাকশন মেসেজ গ্রুপ এবং কোড
  • 0x013C: অ্যাকশন মেসেজ গ্রুপের বর্তমান অবস্থা এবং কোড, ডানে রিং এবং 60 সেকেন্ডের সময়সীমা

একটি NAK-এর জন্য, কারণটি অতিরিক্ত ডেটার প্রথম বাইট হিসাবে অন্তর্ভুক্ত করা উচিত। কারণ অন্তর্ভুক্ত:

  • 0x00: সমর্থিত নয়
  • 0x01: ডিভাইস ব্যস্ত
  • 0x02: বর্তমান অবস্থার কারণে অনুমোদিত নয়
  • 0x03: ভুল বার্তা প্রমাণীকরণ কোডের কারণে অনুমোদিত নয়
  • 0x04: অপ্রয়োজনীয় ডিভাইস কর্ম

পূর্ববর্তী উদাহরণ থেকে, যদি প্রদানকারী অন্য কাজে ব্যস্ত থাকার কারণে রিংটি NAK'ed করা হয়, তবে ফেরত প্যাকেটটি 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);
}