К сожалению, не существует универсального рецепта для получения обновления APN, которое можно использовать для трафика данных c. На самом деле поведение операторов отличается друг от друга, и то, что работает для одного из них, может не работать для другого.
Я попытаюсь объяснить все решения и причину, по которой они не могли работать. Я буду основывать свой ответ на том факте, что вы используете модуль LE910-C1 , который является устройством LTE.
Общее введение
До эры 4G сотовые устройства не работали. требовать APN для завершения регистрации сети. Это требовалось только в случае активации контекста PDP, которая, в свою очередь, выполнялась всякий раз, когда требовался обмен упакованными данными.
APN записывалось в NVM модема с помощью команды +CGDCONT
AT:
AT+CGDCONT=<contextID>,<PDP Type>,<APN>[,...]
// Example
AT+CGDCONT=1,"IP","mobile.vodafone.it"
С LTE все изменилось: контекст PDP был необходим также для базовой регистрации c в сети из-за поддержки VoLTE (Voice Over LTE) и IMS (услуга, используемая для отправки SMS через LTE).
Решение 1: +CGDCONTRDP
команда
Для обратной совместимости со старым миром 2G и 3G, для регистрации в сети без При настройке +CGDCONT
устройства LTE могут извлекать APN из сети.
Эта информация о регистрации может быть запрошена с помощью команды AT+CGDONTRDP
(PDP Context Read Dynami c Parameters), которая в соответствии с Руководство AT, которое вы связали, имеет следующий синтаксис:
AT+CGCONTRDP=[<p_cid>]
И генерирует ответ с N строками в следующем формате
+CGCONTRDP:<p_cid>,<bearerId>,<apn>[,<ip&subnet>[,<gw_addr>[,<DNS_prim>[,<DNS_sec>[, <P_CSCF_prim>[,<P_CSCF_sec>]]]]]]
Как вы видно, что он предоставляет много информации об активированном APN, например, p_cid (идентификатор контекста, равный 1 для контекста, активированного при регистрации), IP-адрес и, прежде всего, имя APN .
Хорошие новости: у нас есть имя APN, связанное с текущим оператором. Вы можете попробовать вообще удалить +CGDCONT
из вашего скрипта и обнаружить, что ваше устройство может подключаться самостоятельно (или с небольшой настройкой).
Плохие новости: it не гарантируется, что одно и то же имя APN может использоваться пользователем для обмена данными. Некоторые операторы (например, Verizon) имеют определенный c APN для регистрации (который получает IP-адрес частной сети, бесполезный для пользовательского обмена данными), так что пользователь должен активировать другой контекст PDP для обмена данными.
Решение 2: OMADM
Некоторые операторы (например, Verizon, в США) реализуют специальный протокол, определенный OMA Alliance для Управление устройствами : OMADM . Как также объяснил мой ответ на этот вопрос , он позволяет оператору сети получить (и установить!) Несколько настроек.
APN является одним из них: сеть знает о любых изменениях в Пара устройство-SIM, и если они меняются, запускает сеанс DM для обновления имени APN. Конечно, устройство должно поддерживать этот очень конкретный протокол c.
Плохие новости: нет абсолютно никаких гарантий того, что каждый оператор в мире поддерживает этот механизм обновления APN. Более того, любой из этих механизмов очень , определяемый оператором c, и потребует настройки поставщика модема для каждого оператора.
Простой обходной путь
Вы можете создать внешний вид таблицы в вашем коде, сопоставляя каждый оператор с соответствующим APN:
- Запросите текущего оператора с помощью
AT+COPS?
- Найдите его в вашей справочной таблице
- Если оно изменилось с момента последнего включения питания вашего устройства (вы можете хранить где-нибудь в своей памяти sh имя lastOperator ), измените APN на тот, который найден в таблице поиска, введя
AT+CGDCONT
команда
Pro: Было бы довольно просто, и не , поэтому потребляло бы память, создать справочную таблицу, охватывающую всю Европу и, по крайней мере, страны Северной Америки (кстати: убедитесь, что ваше устройство действительно подходит для области, в которой вы хотите его использовать: не все устройства поддерживают радиочастотные диапазоны, которые будут использоваться во всем мире).
Минусы: это не что-то "универсальное" ", как того требует вопрос, и это то, что обязательно нужно поддерживать. Я предлагаю вам реализовать решение для восстановления, в котором вы управляете специальным SMS, обновляющим APN до пользовательского значения.