Bluetooth-модуль SF32LB57 с поддержкой двух режимов (SIFLI_AT)
В этом справочнике описан внешний интерфейс AT-команд модуля SF32LB57 с поддержкой двух режимов Bluetooth (SIFLI_AT), версия V1.2.1. Команды и строки ответов отображаются моноширинным шрифтом; \r означает возврат каретки (0x0D), а \n — перевод строки (0x0A). AT-команды передаются как текст ASCII, а для порядка байтов в бинарных полях кадров PDU используется little-endian.
Это полная спецификация интерфейса AT, на которую ссылается страница Bluetooth-модуль с AT-командами.
Таблица: история изменений
Версия
Изменения
Дата
V1.2.1
SF32LB57 V1.2.1: добавлена команда AT+CFGRESET; обновлены сведения о синхронизации имени Classic Bluetooth при запуске, CLEARLINKKEY, дескрипторе соединения и PDU; включена конфигурация сборки BQB.
Модуль SF32LB57 с поддержкой двух режимов Bluetooth предоставляет хосту интерфейс AT-команд через UART для работы с BLE и Classic Bluetooth (BR/EDR). С помощью AT-команд хост настраивает параметры устройства, управляет подключениями, передаёт и принимает данные, а также получает асинхронные уведомления о состоянии от модуля.
AT-команды передаются как текст ASCII и завершаются символом возврата каретки \r (0x0D). Префикс команды — AT+ для команд в формате AT или AT> для команд в формате PDU. На SF32LB57 для AT используется порт USART1 с форматом 8N1 без аппаратного управления потоком данных; скорость по умолчанию — 460800 bps. Длина одного кадра AT не должна превышать 512 байт.
Команды PDU передают бинарные данные, когда модуль находится в режиме команд. Если не указано иное, числовые поля в кадре используют порядок little-endian, а data содержит исходные бинарные данные.
Имя устройства: строка длиной 1–29 байт. Пустая строка или длина более 29 байт приводит к ответу ERROR. Значение по умолчанию: SIFLI_AT.
Примечания
Обновляет настройку имени устройства и синхронизирует её с локальным именем и именем в ответном пакете Scan Response. Параметр MACNAME задаёт итоговое имя в BLE-рекламе.
Значение: 0 = имя отображается без изменений; 1 = к имени добавляется суффикс -XXXX (XXXX — два последних байта локального BD_ADDR в шестнадцатеричном формате, заглавными буквами). Диапазон: 0–1. По умолчанию: 0.
Примечания
Обновляет настройку. Если при включённом режиме имя вместе с суффиксом превышает ограничение в 29 байт, основная часть имени усекается, чтобы вместить суффикс длиной 5 байт.
Таблица: установка идентификатора устройства IEEE 1284
Поле
Значение
Команда
AT+1284ID=<ID string>\r
Ответ
Успех: \r\nOK\r\n; ошибка: \r\nERROR\r\n
Параметры
Строка идентификатора устройства IEEE 1284. Её длина должна быть меньше ёмкости буфера хранения; при превышении возвращается ERROR. По умолчанию используется пустая строка.
Успех: \r\nOK\r\n; вариант запроса (AT+RESET?\r): \r\nERROR\r\n
Параметры
Нет
Примечания
Получив команду, модуль сохраняет текущую конфигурацию AT, отвечает OK, прекращает передачу объявлений, разрывает подключения и выполняет программный сброс. Сама команда не изменяет конфигурацию.
Восстанавливает настройки AT по умолчанию, удаляет пользовательскую конфигурацию служб GATT, данные сопряжения BLE и Classic Bluetooth (BR/EDR), а также статический случайный адрес BLE, затем отвечает OK и перезагружает модуль. После перезагрузки хост должен дождаться IM_READY.
Восстанавливает настройки AT и сохранённую пользовательскую конфигурацию GATT, затем отвечает OK и перезагружает модуль. Данные сопряжения и текущий BLE-адрес сохраняются.
Успех: \r\nOK\r\n; значение вне диапазона или ошибка интерфейса калибровки: \r\nERROR\r\n
Параметры
freq_off: значение калибровки частотного смещения в Hz в диапазоне от -120000 до 120000; значение по умолчанию — 0. Значение 0 сбрасывает калибровку и восстанавливает исходное аппаратное/заводское значение; ненулевое значение задаётся напрямую.
Примечания
Команда обновляет регистр банка конденсаторов HXT и записывает результат в раздел FACTORY_CFG_ID_CRYSTAL. После успешной калибровки записанное в настройках AT значение обновляется и помечается для сохранения.
Устанавливает бит разрешения тестового режима DUT для Classic Bluetooth BR/EDR и отвечает OK, затем ожидает, пока тестовое оборудование запустит сигнальный радиотест через LMP_test_control. Порт AT UART (USART1) остаётся доступен. Вход в режим DUT необратим; выйти из него можно только перезагрузкой.
addr: текущий публичный Bluetooth-адрес из 12 шестнадцатеричных символов (в верхнем регистре, без разделителей), от старшего байта к младшему, например 001583112233.
Примечания
Возвращает публичный адрес, считанный из прошивки; при ошибке чтения возвращает ERROR.
addr: задаваемый Bluetooth-адрес — ровно 12 шестнадцатеричных символов без разделителей, от старшего байта к младшему, например 001583112233.
Примечания
Адрес записывается в конфигурацию и сохраняется; он вступает в силу после перезагрузки. Заводское значение состоит из нулей — в этом случае адрес автоматически генерируется на основе UID микросхемы.
addr: текущий используемый BLE-адрес из 12 шестнадцатеричных символов (в верхнем регистре, без разделителей), от старшего байта к младшему.
Примечания
Если с помощью AT+RANDOMADDR=1 был создан статический случайный адрес для BLE, возвращается он; в противном случае возвращается тот же публичный адрес, что и для Bluetooth. При ошибке чтения возвращается ERROR.
n: 0 или 1. 1 = включает статический случайный BLE-адрес, производный от публичного (два старших бита старшего байта публичного адреса устанавливаются в 1; например, из публичного 001583112233 получается BLE-адрес C01583112233); 0 = возвращает BLE к публичному адресу. Другие значения и лишние символы приводят к ERROR. По умолчанию — 0.
Примечания
Состояние переключателя обновляется в конфигурации. Если задано 1, но прочитать публичный адрес не удаётся, переключатель возвращается в 0 и команда выдаёт ERROR. Изменение адреса записывается в NVDS и вступает в силу после перезагрузки. Повторный запуск AT+RANDOMADDR=1 выводит тот же случайный адрес из неизменённого публичного адреса.
state: текущее состояние обнаруживаемости. 0 = устройство не обнаруживается; 1 = доступно для обнаружения; 2 = частично доступно для обнаружения (смешанное состояние). Значение зависит от режима работы: в режиме BLE (BTMODE=1) отражает состояние BLE-рекламы (1 = включена, 0 = выключена); в режиме BT (BTMODE=2) учитывает inquiry scan и page scan: 1, если включены оба, 0, если оба выключены, и 2 в остальных случаях; в двухрежимном режиме (BTMODE=0) равно 1, если включены BLE-реклама и оба вида сканирования, 0, если все выключены, и 2 в остальных случаях.
Примечания
Команда только возвращает текущее состояние обнаруживаемости и не меняет состояние устройства.
Действие зависит от текущего режима: в режиме BLE (BTMODE=1) включает или выключает BLE-рекламу; в режиме BT (BTMODE=2) включает или выключает inquiry scan и page scan; в двухрежимном режиме (BTMODE=0) управляет BLE-рекламой и обоими видами сканирования одновременно.
mode: режим работы. 0 = прозрачный режим; 1 = режим команд. После включения модуль запускается в прозрачном режиме.
Примечания
Режим переключается немедленно, но не сохраняется: после перезагрузки модуль возвращается в прозрачный режим. В прозрачном режиме данные с последовательного порта без изменений передаются подключённому устройству; в режиме команд они интерпретируются как AT-команды.
Удаляет данные сопряжения BLE и ключ связи Classic Bluetooth. После успешного выполнения устройство перезагружается; настройки AT, такие как имя устройства, скорость порта и COD, сохраняются. После перезагрузки хост должен дождаться IM_READY. Форма запроса не поддерживается.
Таблица: настройка скорости последовательного порта
Поле
Значение
Команда
AT+BAUD=<baud_rate>\r
Ответ
Успех: \r\nOK\r\n; ошибка: \r\nERROR\r\n
Параметры
baud_rate: скорость последовательного порта в бит/с. Поддерживаются значения 38400, 57600, 115200, 230400, 460800, 921600 и 1000000. По умолчанию — 460800.
Таблица: настройка переключателя уведомлений о событиях
Поле
Значение
Команда
AT+EVT=<evt_silent>\r
Ответ
Успех: \r\nOK\r\n; ошибка: \r\nERROR\r\n
Параметры
evt_silent: переключатель уведомлений. 0 = обычная передача IM_CONN, IM_DISCONN, IM_READY и других событий; 1 = полностью отключить уведомления. По умолчанию — 0 (обычная передача).
Примечания
Изменение обновляет конфигурацию. При значении 1 события установления соединения, отключения и готовности не передаются через последовательный порт.
Запрос времени отключения при простое в прозрачном режиме¶
Таблица: запрос времени отключения при простое в прозрачном режиме
Поле
Значение
Команда
AT+IDLE?\r
Ответ
\r\n+IDLE:<idle_ms>\r\n\r\nOK\r\n
Параметры
idle_ms: текущий тайм-аут отключения при простое в миллисекундах.
Примечания
Нет.
Настройка времени отключения при простое в прозрачном режиме¶
Таблица: настройка времени отключения при простое в прозрачном режиме
Поле
Значение
Команда
AT+IDLE=<idle_ms>\r
Ответ
Успех: \r\nOK\r\n; ошибка: \r\nERROR\r\n
Параметры
idle_ms: тайм-аут отключения при простое в прозрачном режиме, в миллисекундах, диапазон 0–65535. Значения выше 65535 вызывают ERROR. Значение 0 отключает функцию. По умолчанию — 0 (выключено).
Примечания
Изменение обновляет конфигурацию. Функция действует только в прозрачном режиме: если с момента последнего получения данных последовательным портом прошло более idle_ms миллисекунд, все существующие соединения разрываются. При idle_ms = 0 отключение по простою не выполняется.
Таблица: запрос переключателя нескольких соединений
Поле
Значение
Команда
AT+MULTICONN?\r
Ответ
\r\n+MULTICONN:<n>\r\n\r\nOK\r\n
Параметры
<n>: состояние основного переключателя нескольких соединений. 0 = выключен (только одно соединение в целом); 1 = включён (параллельные соединения в пределах лимита каждого транспорта).
Таблица: настройка переключателя нескольких соединений
Поле
Значение
Команда
AT+MULTICONN=<n>\r
Ответ
Успех: \r\nOK\r\n; ошибка: \r\nERROR\r\n
Параметры
<n>: 0 = запретить несколько соединений; 1 = разрешить несколько соединений. Допустимы только 0 и 1. По умолчанию — 1.
Примечания
Изменение обновляет конфигурацию. Когда режим нескольких соединений выключен, параллельные подключения ограничены; когда включён, действуют лимиты AT+BLEMULTICONN и AT+BTMULTICONN.
Запрос максимального числа одновременных BLE-соединений¶
Таблица: запрос максимального числа одновременных BLE-соединений
Поле
Значение
Команда
AT+BLEMULTICONN?\r
Ответ
Успех: \r\n+BLEMULTICONN:<n>\r\n\r\nOK\r\n; если режим нескольких соединений выключен: \r\nERROR\r\n
Параметры
<n>: текущее заданное максимальное количество одновременных BLE-соединений, десятичное число.
Примечания
Запрос возможен только при включённом переключателе нескольких соединений (AT+MULTICONN=1); в выключенном состоянии возвращается ERROR.
Настройка максимального числа одновременных BLE-соединений¶
Таблица: настройка максимального числа одновременных BLE-соединений
Поле
Значение
Команда
AT+BLEMULTICONN=<n>\r
Ответ
Успех: \r\nOK\r\n; ошибка: \r\nERROR\r\n
Параметры
<n>: максимальное количество одновременных BLE-соединений, десятичное число в диапазоне 1–6. По умолчанию — 3.
Примечания
Настройка доступна только при включённом переключателе нескольких соединений (AT+MULTICONN=1). Изменение обновляет конфигурацию. При достижении лимита реклама останавливается (новые подключения становятся невозможны) и автоматически возобновляется, когда число соединений опускается ниже лимита.
Запрос максимального числа одновременных соединений Classic Bluetooth¶
Таблица: запрос максимального числа одновременных соединений Classic Bluetooth
Поле
Значение
Команда
AT+BTMULTICONN?\r
Ответ
Успех: \r\n+BTMULTICONN:<n>\r\n\r\nOK\r\n; если режим нескольких соединений выключен: \r\nERROR\r\n
Параметры
<n>: текущее заданное максимальное количество одновременных соединений Classic Bluetooth (BR/EDR), десятичное число.
Примечания
Запрос возможен только при включённом переключателе нескольких соединений (AT+MULTICONN=1); в выключенном состоянии возвращается ERROR.
Настройка максимального числа одновременных соединений Classic Bluetooth¶
Таблица: настройка максимального числа одновременных соединений Classic Bluetooth
Поле
Значение
Команда
AT+BTMULTICONN=<n>\r
Ответ
Успех: \r\nOK\r\n; ошибка: \r\nERROR\r\n
Параметры
<n>: максимальное количество одновременных соединений Classic Bluetooth, десятичное число в диапазоне 1–7. По умолчанию — 7.
Примечания
Настройка доступна только при включённом переключателе нескольких соединений (AT+MULTICONN=1). Изменение обновляет конфигурацию. При достижении лимита модуль прекращает page scan и автоматически возобновляет его, когда число соединений становится меньше лимита.
Отключить одно соединение: AT+DISCONN=<conn_hdl>\r; отключить все: AT+DISCONN\r
Ответ
Успех: \r\nOK\r\n; ошибка или соединение не найдено: \r\nERROR\r\n
Параметры
<conn_hdl>: дескриптор соединения в шестнадцатеричном формате. Внешние дескрипторы BLE начинаются с 1 (как в ответе AT+CONNLIST); для BT используется ACL-дескриптор. Значение <conn_hdl> = 0 считается недопустимым и вызывает ERROR.
Примечания
Если параметр отсутствует или пуст, разрываются все активные соединения (BLE и BR/EDR) и возвращается OK. Если дескриптор задан, сначала выполняется поиск по внешнему дескриптору BLE (внутренний дескриптор = <conn_hdl> - 1); при отсутствии совпадения выполняется поиск по исходному ACL-дескриптору BT. Если соединение не найдено, возвращается ERROR. Запрос AT+DISCONN? возвращает ERROR.
Каждое активное соединение выводится отдельной строкой: \r\n+CONNLIST:<conn_hdl>,<type>,<addr>,<extra>\r\n; после всех строк выводится \r\nOK\r\n. Если активных соединений нет, возвращается только \r\nOK\r\n. Непустой параметр приводит к \r\nERROR\r\n.
Параметры
Поля ответа: <conn_hdl> — дескриптор соединения, 4 шестнадцатеричные цифры; для BLE используется внешний дескриптор с нумерацией от 1. <type> — тип соединения: BLE или BT. <addr> — Bluetooth-адрес удалённого устройства, 12 шестнадцатеричных цифр (от старшего байта к младшему). <extra> — текущий MTU для BLE или канал службы для BT, десятичное число.
Примечания
Форма задания возвращает ERROR, если передан непустой параметр. Модуль проверяет все слоты соединений и выводит сведения о каждом активном соединении.
AT+SPPSEND=<conn_hdl>,<data>\r или AT+SPPSEND=,<data>\r
Ответ
Успех: \r\nOK\r\n; ошибка: \r\nERROR\r\n
Параметры
conn_hdl: шестнадцатеричный дескриптор целевого BT-соединения. Его можно опустить или задать равным 0; в этом случае используется первое активное BT-соединение. data: передаваемые данные в виде шестнадцатеричной строки, каждые два символа которой образуют один байт. Строка не может быть пустой и должна содержать чётное число символов. Фактический размер данных также ограничен максимальной длиной одного ASCII-кадра AT.
Примечания
conn_hdl и data разделяются запятой; запятая обязательна, даже если conn_hdl опущен. Форма запроса не поддерживается.
Для каждой настроенной службы возвращается отдельная строка \r\n+GATTSRV:<idx>,<char_count>,<state>\r\n, после чего выводится \r\nOK\r\n. Если службы не настроены, возвращается только \r\nOK\r\n.
Параметры
idx: номер слота службы, 0–5. char_count: количество настроенных характеристик службы. state: REG означает, что служба зарегистрирована в стеке протоколов; CFG — что она настроена только в RAM и ещё не зарегистрирована.
idx: номер слота службы, 0–5. uuid: UUID службы в виде шестнадцатеричной строки, начиная со старшего байта: 4 символа для 16-разрядного UUID или 32 символа для 128-разрядного.
Примечания
idx должен быть одной цифрой, за которой сразу следует запятая. Длина UUID должна быть ровно 4 или 32 символа; любое другое значение вызывает ERROR. Уже зарегистрированный в стеке протоколов слот нельзя перенастроить — команда вернёт ERROR. Создание службы очищает прежнюю конфигурацию этого слота.
Очищает конфигурацию этого слота в RAM. Службу, уже зарегистрированную в стеке протоколов, нельзя отозвать во время работы; команда удаляет только конфигурацию в RAM.
Для каждой характеристики службы возвращается строка \r\n+GATTCHAR:<svc>,<chr>,prop=0x<prop>,len=<max_len>\r\n, после всех строк — \r\nOK\r\n. Если службы нет, возвращается \r\nERROR\r\n.
Параметры
svc: номер слота службы, 0–5. chr: индекс характеристики. prop: биты свойств характеристики в шестнадцатеричном формате. max_len: максимальная длина значения характеристики.
Таблица: добавление пользовательской характеристики GATT
Поле
Значение
Команда
AT+GATTCHAR=<svc>,<chr>,<uuid>,<prop>,<len>\r
Ответ
Успех: \r\nOK\r\n; ошибка: \r\nERROR\r\n
Параметры
svc: номер слота службы, 0–5. chr: индекс характеристики, 0–7. uuid: UUID характеристики, начиная со старшего байта; 4 символа для 16 бит или 32 для 128 бит. prop: строка свойств из символов R (чтение), W (запись с ответом), w (запись без ответа), N (уведомление), I (индикация). len: максимальная длина значения характеристики, 1–512.
Примечания
Все пять параметров обязательны; отсутствие любого из них вызывает ERROR. Длина UUID должна быть ровно 4 или 32 символа. В prop должен быть хотя бы один распознанный символ свойства; если таких символов нет, возвращается ERROR. Нераспознанные символы в prop игнорируются. Значение len, равное 0 или превышающее 512, вызывает ERROR. Родительская служба должна быть уже создана, но ещё не зарегистрирована в стеке протоколов.
\r\n+GATTSTART:<count>\r\n, затем \r\nOK\r\n; запрос AT+GATTSTART?\r: \r\nERROR\r\n.
Параметры
count: количество служб, успешно зарегистрированных в стеке протоколов за этот вызов.
Примечания
Регистрирует каждую используемую службу, которая ещё не зарегистрирована и содержит хотя бы одну характеристику. После регистрации службу нельзя отозвать или перенастроить во время работы. Форма запроса не поддерживается.
Отправка данных характеристики GATT (уведомление/индикация)¶
Таблица: отправка данных характеристики GATT (уведомление/индикация)
Поле
Значение
Команда
AT+GATTSEND=<svc>,<chr>,<conn_hdl>,<hex>\r; без дескриптора соединения: AT+GATTSEND=<svc>,<chr>,,<hex>\r
svc: номер слота службы. chr: индекс характеристики. conn_hdl: шестнадцатеричный дескриптор BLE-соединения с нумерацией от 1; его можно опустить. hex: передаваемые данные в виде шестнадцатеричной строки с чётным числом символов. Фактическая длина данных также ограничена максимальной длиной одного ASCII-кадра AT.
Примечания
Если conn_hdl опущен, используется первое активное BLE-соединение. Целевая служба должна быть уже зарегистрирована, а индекс характеристики — допустим. Если среди свойств характеристики есть Indicate (I), используется индикация; в противном случае — уведомление.
Сохранение пользовательской конфигурации GATT во флеш-память¶
Таблица: сохранение пользовательской конфигурации GATT во флеш-память
Сохраняет текущую конфигурацию всех служб и характеристик во флеш-памяти. Записываются только настройки; сведения о состоянии во время работы, например о регистрации службы, не сохраняются. Возвращает ERROR, если KVDB не готова или запись не удалась. Форма запроса не поддерживается.
Удаление пользовательской конфигурации GATT из флеш-памяти¶
Таблица: удаление пользовательской конфигурации GATT из флеш-памяти
Следующие уведомления о состоянии модуль отправляет самостоятельно; хосту не нужно посылать команду, чтобы их получить. Передачей управляет переключатель событий (AT+EVT). Если включён режим без уведомлений, модуль ничего не отправляет.
Нет (отправляется прошивкой самостоятельно, а не пользователем).
Ответ
Строка уведомления: \r\nIM_READY\r\n
Параметры
Нет.
Примечания
Передаётся один раз после завершения инициализации, когда модуль готов к работе. Также передаётся повторно, когда все соединения разорваны и их количество снова равно нулю. Передачей управляет AT+EVT; команда AT+EVT=1 включает режим тишины и подавляет это уведомление.
Нет (прошивка отправляет уведомление самостоятельно при установлении соединения).
Ответ
Режим команд: \r\nIM_CONN <hdl>,<addr>,<mtu>\r\n; прозрачный режим: \r\nIM_CONN\r\n
Параметры
hdl: дескриптор соединения — ровно 4 шестнадцатеричные цифры в верхнем регистре, дополненные нулями слева. Для BLE отображается внешний дескриптор с нумерацией от 1 (внутреннее значение плюс 1); для остальных типов — исходное значение. addr: адрес удалённого устройства, 12 шестнадцатеричных цифр, начиная со старшего байта. mtu: MTU текущего соединения, десятичное число.
Примечания
В режиме команд для каждого установленного соединения передаётся уведомление с дескриптором, адресом удалённого устройства и MTU. В прозрачном режиме уведомление передаётся только при установлении первого соединения (когда их количество равно 1) и не содержит параметров. Передачей управляет AT+EVT; команда AT+EVT=1 включает режим тишины и подавляет это уведомление.
Нет (прошивка отправляет уведомление самостоятельно при разрыве соединения).
Ответ
Режим команд: \r\nIM_DISCONN:<hdl>\r\n
Параметры
hdl: дескриптор разорванного соединения — ровно 4 шестнадцатеричные цифры в верхнем регистре, дополненные нулями слева. Для BLE отображается внешний дескриптор с нумерацией от 1 (исходное значение плюс 1); для остальных типов — исходное значение.
Примечания
Уведомление содержит только дескриптор и передаётся в режиме команд; в прозрачном режиме оно не передаётся. В любом режиме, когда все соединения разорваны и их количество возвращается к нулю, дополнительно передаётся \r\nIM_READY\r\n. Передачей управляет AT+EVT; команда AT+EVT=1 включает режим тишины и подавляет это уведомление.
opcode всегда равен 0x0101; body = conn_hdl (2 байта, little-endian) + data. Для BLE используется внешний дескриптор с нумерацией от 1; для SPP — исходный ACL-дескриптор.
Примечания
В режиме команд при записи данных в пользовательскую BLE-характеристику или получении данных через SPP Classic Bluetooth модуль передаёт их хосту в указанном формате. В прозрачном режиме данные выводятся напрямую.
Отправка данных PDU (автовыбор характеристики Notify, opcode 0x0101)¶
Таблица: отправка данных PDU (автовыбор характеристики Notify, opcode 0x0101)
Поле
Значение
Команда
Бинарный кадр (не текстовая строка AT): AT> + opcode (2 байта, little-endian) + len (2 байта, little-endian) + body + \r. Здесь opcode = 0x0101 (последовательность байтов 01 01); len — длина body в байтах; body = conn_hdl (2 байта, little-endian) + data. data — передаваемая полезная нагрузка.
Ответ
Текстового ответа нет. Прошивка передаёт data удалённому устройству в соответствии с типом соединения, без ответа OK/ERROR.
Параметры
opcode: всегда 0x0101. len: длина body, диапазон 2–508 (кадры короче 2 или длиннее AT_RX_BUF_SIZE-4 отбрасываются; AT_RX_BUF_SIZE = 512). conn_hdl: дескриптор целевого соединения; для BLE — внешний дескриптор с нумерацией от 1, для SPP — исходный ACL-дескриптор. data: байты полезной нагрузки, длина = len-2; допустима длина 0.
Примечания
Сначала conn_hdl сопоставляется с BLE-дескриптором с нумерацией от 1 (то есть conn_hdl-1 соответствует BLE-слоту); если совпадения нет, выполняется поиск исходного значения в SPP-слоте. Если соединение не найдено, кадр отбрасывается. Для BLE прошивка перебирает пользовательские службы GATT и автоматически выбирает первую характеристику со свойством Notify или Indicate; если такой характеристики нет, данные не передаются. Для SPP (BR/EDR) data отправляется по каналу SPP. Сразу после кадра должен следовать \r; иначе текущий кадр отбрасывается. Если между кадрами в течение тайм-аута PDU не поступают новые байты, состояние приёма PDU сбрасывается.
Отправка данных PDU (заданные служба и характеристика, opcode 0x0102)¶
Таблица: отправка данных PDU (заданные служба и характеристика, opcode 0x0102)
Поле
Значение
Команда
Бинарный кадр (не текстовая строка AT): AT> + opcode (2 байта, little-endian) + len (2 байта, little-endian) + body + \r. Здесь opcode = 0x0102 (последовательность байтов 02 01); len — длина body в байтах; body = conn_hdl (2 байта, little-endian) + svc_idx (1 байт) + char_idx (1 байт) + data.
Ответ
Текстового ответа нет. Прошивка отправляет data удалённому устройству через заданные службу и характеристику, без ответа OK/ERROR.
Параметры
opcode: всегда 0x0102. len: длина body, диапазон 4–508. Общий минимум уровня приёма равен 2, но этот opcode требует не менее 4 байт с учётом svc_idx+char_idx; иначе кадр отбрасывается. conn_hdl: целевой внешний BLE-дескриптор с нумерацией от 1. svc_idx: индекс пользовательской службы GATT. char_idx: индекс характеристики в этой службе. data: байты полезной нагрузки, длина = len-4; допустима длина 0.
Примечания
Поддерживаются только BLE-соединения; если найденное соединение имеет тип SPP, кадр отбрасывается. svc_idx должен соответствовать зарегистрированной пользовательской службе, а char_idx должен быть меньше количества её характеристик; иначе кадр отбрасывается. Заданная характеристика должна иметь свойство Notify или Indicate; иначе кадр также отбрасывается. conn_hdl обрабатывается по тому же правилу, что и в 0x0101: сначала проверяется BLE-дескриптор с нумерацией от 1, затем исходное значение. Сразу после кадра должен следовать \r.
AT+DISCONN\r (без параметра) или AT+DISCONN=<conn_hdl>\r
Ответ
Успех: \r\nOK\r\n; ошибка: \r\nERROR\r\n
Параметры
conn_hdl: шестнадцатеричный дескриптор соединения для отключения. Для BLE используется внешний дескриптор с нумерацией от 1; значение 0 недопустимо и вызывает ERROR. Для SPP используется исходный ACL-дескриптор.
Примечания
Без параметра разрываются все текущие соединения и возвращается OK. Если параметр задан, сначала ищется BLE-дескриптор с нумерацией от 1 (conn_hdl-1 соответствует BLE-слоту); при отсутствии совпадения ищется исходное значение в SPP-слоте. Если соединение не найдено, возвращается ERROR. BLE-отключение инициируется с кодом причины 0x13; для отключения SPP используется адрес удалённого устройства. Запрос AT+DISCONN? возвращает ERROR.
Уведомления о состоянии PDU-соединений (IM_CONN / IM_DISCONN)¶
Таблица: уведомления о состоянии PDU-соединений (IM_CONN / IM_DISCONN)
Поле
Значение
Команда
Модуль отправляет уведомления самостоятельно; команда хоста не требуется. IM_CONN передаётся при установлении соединения, IM_DISCONN — при его разрыве.
Ответ
Установление соединения в режиме команд: \r\nIM_CONN <hdl>,<mac>,<mtu>\r\n, где <hdl> — дескриптор из 4 шестнадцатеричных цифр, <mac> — адрес из 12 шестнадцатеричных цифр (начиная со старшего байта), <mtu> — десятичное значение MTU. Разрыв соединения в режиме команд: \r\nIM_DISCONN:<hdl>\r\n (<hdl> — 4 шестнадцатеричные цифры). В прозрачном режиме \r\nIM_CONN\r\n без параметров передаётся только при установлении первого соединения, а IM_DISCONN при отключении не передаётся. Оба режима передают \r\nIM_READY\r\n, когда все соединения разорваны.
Параметры
<hdl>: дескриптор соединения; для BLE отображается внешнее значение с нумерацией от 1 (внутреннее значение отсчитывается от 0 и увеличивается на 1), для SPP — исходный дескриптор. <mac>: Bluetooth-адрес удалённого устройства. <mtu>: согласованная MTU.
Примечания
Передачей управляет AT+EVT: при значении 0 (по умолчанию) уведомления передаются обычно, а при значении 1 подавляются IM_READY/IM_CONN/IM_DISCONN. Формат и состав уведомлений зависят от текущего режима работы (командного или прозрачного), как описано выше.