
GATT داده محصول را به ساختاری قابل کشف تبدیل میکند. بهجای ارسال بایتهای بینام، مشخص میکنیم این سرویس محیطی است، این Characteristic دماست و این Descriptor روش فعالکردن اعلان را کنترل میکند.
Service مجموعهای منطقی از قابلیتهای مرتبط است و میتواند Primary یا Secondary باشد. Characteristic شامل Declaration، Value و احتمالاً Descriptorهاست. Properties میگوید چه عملیاتی مجاز است؛ Permission تعیین میکند چه سطح دسترسی یا امنیتی لازم است.
Descriptor اطلاعات تکمیلی Characteristic را نگه میدارد. CCCD با UUID استاندارد 0x2902 به کلاینت اجازه میدهد Notify یا Indicate را روشن کند. فقط داشتن Property کافی نیست؛ کلاینت باید CCCD را بنویسد و سرور وضعیت آن را برای هر اتصال نگه دارد.
Read برای دادهای مناسب است که کلاینت هر زمان خواست دریافت کند. Write Request تأیید پروتکلی دارد. Write Without Response برای جریان سریع فرمانها مفید است اما برنامه باید ازدحام بافر و از دسترفتن احتمالی را مدیریت کند. برای تنظیم مهم، پاسخ یا تأیید کاربردی طراحی کنید.
Notify پاسخ ATT ندارد و سریعتر است، اما تحویل در سطح ATT تضمین نمیشود. Indicate تا دریافت Confirmation اجازه ارسال Indication بعدی را نمیدهد و مطمئنتر ولی کندتر است. وضعیت لحظهای سنسور معمولاً Notify و رخداد حیاتی یا تغییر تنظیمات میتواند Indicate باشد.
یک Environmental Service بسازید و دو Characteristic برای دما و رطوبت قرار دهید. هر دو Read و Notify داشته باشند. داده را با واحد ثابت مثلاً صدم درجه در int16 بفرستید و قرارداد Endianness را مستند کنید. Characteristic سوم را برای Interval نمونهبرداری با Read و Write در نظر بگیرید.