| org.bluez.GattCharacteristic(5) | مدیریت سیستم لینوکس | org.bluez.GattCharacteristic(5) |
نام (NAME)
org.bluez.GattCharacteristic - مستندات واسط D-Bus مشخصه GATT در BlueZ
توضیحات (DESCRIPTION)
نمایش ویژگیهای مشخصه (characteristic attribute) محلی/سرور و دوردست/کلاینت در GATT از یک واسط سطحبالای یکسان D-Bus بهره میبرند.
اصطلاح محلی/سرور (Local/Server) به مشخصههای مبتنی بر GATT اشاره دارد که توسط یک افزونه (plugin) یا یک برنامه خارجی ارائه شدهاند.
اصطلاح دوردست/کلاینت (Remote/Client) به مشخصههای GATT اشاره دارد که توسط دستگاه مقابل (peer) ارائه شدهاند.
رابط (INTERFACE)
کلاینت (Client)
- سرویس (Service)
- org.bluez
- رابط (Interface)
- org.bluez.GattCharacteristic1
- مسیر شیء (Object path)
- [variable prefix]/{hci0,hci1,...}/dev_{BDADDR}/service#/char#
- مورد استفاده توسط (Used by)
- bluetoothctl-gatt(1)
سرور (Server)
- سرویس (Service)
- نام یکتا (unique name)
- رابط (Interface)
- org.bluez.GattCharacteristic1
- مسیر شیء (Object path)
- قابل تعریف بهصورت آزاد (freely definable)
متدها (Methods)
array{byte} ReadValue(dict options)
درخواستی برای خواندن مقدار مشخصه ارسال میکند و در صورت موفقیتآمیز بودن عملیات، مقدار را برمیگرداند.
گزینههای ممکن:
- uint16 offset
- آفست شروع خواندن برحسب بایت.
- uint16 mtu (فقط سرور)
- مقدار MTU مبادلهشده برحسب بایت.
- object device (فقط سرور)
- شیء دستگاه.
- string link (فقط سرور)
- نوع پیوند.
مقادیر ممکن:
- "BR/EDR"
- "LE"
خطاهای ممکن:
مثالها:
- bluetoothctl
- > gatt.read [offset]
void WriteValue(array{byte} value, dict options)
درخواستی برای نوشتن مقدار مشخصه ارسال میکند.
گزینههای ممکن:
- uint16 offset
- آفست شروع نوشتن برحسب بایت.
- string type
- مقادیر ممکن:
- "command"
- استفاده از روال نوشتن بدون پاسخ (Write without response).
- "request"
- استفاده از روال نوشتن با پاسخ (Write with response).
- "reliable"
- استفاده از روال نوشتن قابل اطمینان (Reliable Write).
- uint16 mtu
- مقدار MTU مبادلهشده (فقط سرور).
- object device
- مسیر دستگاه (فقط سرور).
- string link
- نوع پیوند
(فقط سرور).
مقادیر ممکن:
- "BR/EDR"
- "LE"
- boolean prepare-authorize
- در صورت آمادهسازی درخواست مجوز (prepare authorization request)، مقدار True است.
خطاهای ممکن:
مثالها:
- bluetoothctl
- > gatt.write <data=xx xx ...> [offset] [type]
fd, uint16 AcquireWrite(dict options) [optional]
توصیفکننده فایل (file descriptor) و MTU را برای نوشتن دریافت میکند. تنها از سوکتها پشتیبانی میشود. استفاده از WriteValue قفل خواهد شد و باعث بازگرداندن خطای NotPermitted میشود.
برای سرور، مقدار MTU بازگرداندهشده باید مساوی یا کوچکتر از MTU توافقشده باشد.
برای کلاینت، تنها با مشخصهای کار میکند که دارای ویژگی WriteAcquired باشد که خود متکی بر Flag از نوع write-without-response است.
برای آزادسازی قفل، کلاینت باید توصیفکننده فایل را ببندد؛ در صورت قطع اتصال دستگاه، یک سیگنال HUP ایجاد میشود.
نکته: توافق بر سر MTU تنها یک بار امکانپذیر است و متقارن میباشد، بنابراین این متد ممکن است برای تکمیل فرایند تبادل MTU با تاخیر مواجه شود؛ به همین دلیل، در صورت اتصال مجدد، توصیفکننده فایل بسته میشود چرا که MTU باید دوباره توافق شود.
گزینههای ممکن:
- object device
- شیء دستگاه (فقط سرور).
- uint16 mtu
- مقدار MTU مبادلهشده (فقط سرور).
- string link
- نوع پیوند
(فقط سرور).
مقادیر ممکن:
- "BR/EDR"
- "LE"
خطاهای ممکن:
مثالها:
- bluetoothctl
- > gatt.acquire-write
fd, uint16 AcquireNotify(dict options) [optional]
توصیفکننده فایل و MTU را برای اعلان (notify) دریافت میکند. تنها از سوکتها پشتیبانی میشود.
استفاده از StartNotify قفل خواهد شد و باعث بازگرداندن خطای org.bluez.Error.NotPermitted میشود.
برای سرور، مقدار MTU بازگرداندهشده باید مساوی یا کوچکتر از MTU توافقشده باشد.
تنها با مشخصهای کار میکند که دارای ویژگی NotifyAcquired باشد که خود متکی بر وجود Flag با مقدار "notify" یا "indicate" است و هیچ کلاینت دیگری StartNotify() را فراخوانی نکرده باشد.
اعلانها در طول این رویه فعال هستند، بنابراین StartNotify() نباید فراخوانی شود؛ هرگونه اعلانی از طریق توصیفکننده فایل ارسال خواهد شد، از این رو در مدت زمانی که دریافت اعلان (notify) تصاحب شده است، ویژگی Value تحت تاثیر قرار نمیگیرد.
برای آزادسازی قفل، کلاینت باید توصیفکننده فایل را ببندد؛ در صورت قطع اتصال دستگاه، یک سیگنال HUP ایجاد میشود.
در حالت کلاینت، اگر از رویه نشانه (indication) استفاده شود، تاییدیه پس از دریافت به صورت خودکار ایجاد میشود؛ برای سرور، اگر توصیفکننده فایل قابل نوشتن باشد (POLLOUT)، با دریافت تاییدیه از سوی کلاینت، یک بایت (0x01) در توصیفکننده فایل نوشته میشود.
نکته: توافق بر سر MTU تنها یک بار امکانپذیر است و متقارن میباشد، بنابراین این متد ممکن است برای تکمیل فرایند تبادل MTU با تاخیر مواجه شود؛ به همین دلیل، در صورت اتصال مجدد، توصیفکننده فایل بسته میشود چرا که MTU باید دوباره توافق شود.
گزینههای ممکن:
- object device
- شیء دستگاه (فقط سرور).
- uint16 mtu
- مقدار MTU مبادلهشده (فقط سرور).
- string link
- نوع پیوند
(فقط سرور).
مقادیر ممکن:
- "BR/EDR"
- "LE"
خطاهای ممکن:
مثالها:
- bluetoothctl
- > gatt.acquire-notify
void StartNotify()
در صورتی که مشخصه از اعلانها یا نشانههای مقدار (value notifications or indications) پشتیبانی کند، یک نشست اعلان از این مشخصه را آغاز میکند.
خطاهای ممکن:
مثالها:
- bluetoothctl
- > gatt.notify <on/off>
void StopNotify()
نشستی را که قبلاً توسط StartNotify() ایجاد شده بود، متوقف یا لغو میکند.
توجه داشته باشید که اعلانهای یک مشخصه میان نشستها به اشتراک گذاشته میشوند، بنابراین فراخوانی StopNotify تنها یک نشست را آزاد خواهد کرد.
خطاهای ممکن:
void Confirm() [noreply, optional] (فقط سرور)
دریافت مقدار را تایید میکند.
خطاهای ممکن:
org.bluez.Error.Failed
ویژگیها (Properties)
string UUID [read-only]
شناسه یکتای ۱۲۸ بیتی مشخصه (UUID).
object Service [read-only]
مسیر شیء سرویس GATT که این مشخصه به آن تعلق دارد.
array{byte} Value [read-only, optional]
مقدار کششده مشخصه. این ویژگی فقط پس از یک درخواست موفق خواندن و هنگام دریافت اعلان یا نشانه (notification or indication) بهروزرسانی میشود که پس از آن سیگنال PropertiesChanged منتشر خواهد شد.
boolean WriteAcquired [read-only, optional]
در صورتی که این مشخصه توسط کلاینتی با استفاده از AcquireWrite تصاحب شده باشد، مقدار True است.
برای کلاینت، در صورتی که فلگ 'write-without-response' تنظیم نشده باشد، این ویژگی حذف میشود.
برای سرور، وجود این ویژگی نشاندهنده پشتیبانی از AcquireWrite است.
boolean NotifyAcquired [read-only, optional]
در صورتی که این مشخصه توسط کلاینتی با استفاده از AcquireNotify تصاحب شده باشد، مقدار True است.
برای کلاینت، در صورتی که فلگ 'notify' تنظیم نشده باشد، این ویژگی حذف میشود.
برای سرور، وجود این ویژگی نشاندهنده پشتیبانی از AcquireNotify است.
boolean Notifying [read-only, optional]
در صورتی که اعلانها یا نشانهها (notifications or indications) روی این مشخصه در حال حاضر فعال باشند، مقدار True است.
array{string} Flags [read-only]
نحوه استفاده از مقدار مشخصه را تعیین میکند. جدول ۳.۵ (میدان بیتی ویژگیهای مشخصه) و جدول ۳.۸ (میدان بیتی ویژگیهای گسترشیافته مشخصه) در مشخصات اصلی (Core spec) را ببینید.
فلگهای "x-notify" و "x-indicate" با اعمال محدودیتهای نوشتن بر روی توصیفگر پیکربندی مشخصه کلاینت (client characteristic configuration descriptor)، دسترسی به اعلانها و نشانهها را محدود میکنند.
مقادیر ممکن:
- "broadcast"
- "read"
- "write-without-response"
- "write"
- "notify"
- "indicate"
- "authenticated-signed-writes"
- "extended-properties"
- "reliable-write"
- "writable-auxiliaries"
- "encrypt-read"
- "encrypt-write"
- "encrypt-notify" (فقط سرور)
- "encrypt-indicate" (فقط سرور)
- "encrypt-authenticated-read"
- "encrypt-authenticated-write"
- "encrypt-authenticated-notify" (فقط سرور)
- "encrypt-authenticated-indicate" (فقط سرور)
- "secure-read" (فقط سرور)
- "secure-write" (فقط سرور)
- "secure-notify" (فقط سرور)
- "secure-indicate" (فقط سرور)
- "authorize"
uint16 Handle [read-only] (فقط کلاینت)
هندل مشخصه (Characteristic handle).
uint16 Handle [read-write, optional] (فقط سرور)
هندل مشخصه. در صورت وجود در سرور، تلاش میشود تا از آن برای تخصیص در پایگاهداده استفاده شود که ممکن است ناموفق باشد؛ برای تخصیص خودکار باید از مقدار 0x0000 استفاده شود که باعث میشود پس از ثبت، هندلِ تخصیصیافته تنظیم گردد.
uint16 MTU [read-only]
مقدار MTU مشخصه؛ این مقدار هم برای ReadValue() و هم برای WriteValue() معتبر است، اما هر یک از متدها میتوانند در صورت پشتیبانی از رویههای طولانی (long procedures) استفاده کنند.
| اکتبر 2023 | BlueZ |