Почему именно сервер GATT предоставляет услуги?

Глядя на различные профили на основе GATT, кажется, что службы всегда доступны в ГАТТ-сервер, а не ГАТТ-клиент. Например, в профиле времени (TIP) сервер предоставляет службу текущего времени (CTS). Таким образом, если телефон должен обновить монитор сердечного ритма текущим временем с помощью TIP, телефон будет сервером, а монитор будет клиентом. Но, будучи монитором сердечного ритма, профиль сердечного ритма ожидает, что монитор будет сервером GATT.

Итак, для монитора, который берет текущее время с телефона, должен ли он быть клиентом GATT или сервером? Должен ли он быть установлен как клиент во время синхронизации времени с телефоном и как сервер в противном случае? Следует ли реализовать настраиваемый профиль таким образом, чтобы CTS вместо этого отображался в клиенте?

Спасибо


person John M.    schedule 18.12.2015    source источник


Ответы (1)


Общий профиль атрибутов (GATT) определяет, как сервер и клиент взаимодействуют друг с другом с помощью протокола атрибутов для передачи данных. Роли клиента и сервера определяются, когда процедура инициируется и освобождается, когда процедура завершается. Следовательно, устройство может действовать в обеих ролях одновременно.

Я бы посоветовал вам прочитать спецификацию Bluetooth. В части G 2.2 объясняются роли и конфигурации.

Клиент — это устройство, которое инициирует команды и запросы к серверу и может получать ответы, указания и уведомления, отправленные сервером. Сервер — это устройство, которое принимает входящие команды и запросы от клиента и отправляет клиенту ответы, указания и уведомления.

Вернемся к вашему вопросу:

Профиль времени позволяет устройству получать информацию о дате, времени, часовом поясе и летнем времени и управлять функциями, связанными со временем.

В вашем случае монитор будет клиентом ГАТТ, когда берет время с телефона. Однако он может одновременно быть и сервером для другой процедуры (операции, запроса и т.п.) с телефоном.

Короче говоря, роли клиента и сервера не привязаны к устройствам. Когда ваш телефон показывает текущее время, это будет сервер. Точно так же, когда он получает текущее время с монитора, он будет клиентом. нет необходимости настраивать профиль. Если вы хотите, чтобы ваш телефон получал текущее время с устройства и отображал его на другом устройстве, просто внедрите на свой телефон один и тот же профиль для ролей клиента и сервера.

EDIT:
Согласно Спецификация профиля TIP, чтобы получить информацию о текущем времени, должна использоваться подпроцедура GATT Read Characteristic Value с дескриптором Current Time Characteristic. Монитор в качестве клиента будет считывать Текущие временные характеристики из таблицы GATT сервера (в данном случае это телефон). Как только монитор получает значение с телефона, он может обновить свое Значение текущей временной характеристики и представить его в своей среде тремя способами:

  1. Уведомление об этом своих подписанных клиентов (уведомления BLE). Если вы сделаете это таким образом, вы настроите профиль Bluetooth TIP, поскольку эта процедура там не определена (я бегло просмотрел документ и не увидел его).
  2. Трансляция в рекламном пакете (не требует подключения BLE)
  3. Другое устройство BLE подключается к монитору и считывает значение текущей временной характеристики. Это рекомендуемый способ, если вы хотите использовать профиль TIP Bluetooth, определенный SIG, в качестве сервера.
person ulusoyca    schedule 19.12.2015
comment
Я понимаю. То есть вы имеете в виду, что когда монитору необходимо синхронизировать время с телефоном, он должен стать клиентом GATT, даже если он уже может быть сервером GATT? Таким образом, в течение этого периода он будет одновременно и клиентом GATT, и сервером GATT. Когда синхронизация времени завершается, он снова становится сервером GATT — это правильно? - person John M.; 19.12.2015
comment
Тем не менее, монитор должен быть сервером GATT для профиля сердечного ритма. Означает ли это, что после завершения синхронизации ему придется переключиться с клиента на сервер? - person John M.; 20.12.2015
comment
Что вы имеете в виду под переключением? Я имею в виду, как ты переключаешься между ролями? - person ulusoyca; 20.12.2015
comment
Это на самом деле моя забота. В таком случае вы имеете в виду, что монитор должен быть и клиентом GATT, и сервером GATT одновременно на протяжении всего срока службы? Если это так, не возникнет ли потенциального хаоса при работе устройства как в качестве клиента, так и в качестве сервера? - person John M.; 20.12.2015
comment
Возможно, и это обычно вполне нормально, что устройства могут быть и в роли сервера, и в роли клиента. Вы можете не задавать очень элементарных вопросов, подобных этим, просто прочитав правильные спецификации. Вопросы, которые вы задаете, являются одной из первых тем, которые обсуждаются при разговоре о ГАТТ и клиентах и ​​серверах ГАТТ. - person Zimano; 21.12.2015