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