Перейти к содержанию
    

Поднимаю PPP на SIM800. Что есть из литературы "для чайников"?

SIM800 подключал по RX,TX, с SIM7600 использовал еще и DTR, RTS, но что-то мне кажется, что не наблюдал на них шевеления. Т.е. модем на 115200 всегда успевал принять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!

Спрашивал, потому что смутила строчка AT+IFC=2,2. Я так понял, что могут понадобиться еще линии управления потоком.

В AT+CGDCONT указывается APN. А если понадобится логин и пароль, какие команды использовать?

Ранее использовал такие команды:

{"AT+SAPBR=3,1,\"APN\",\"internet.beeline.ru\""};
{"AT+SAPBR=3,1,\"USER\",\"beeline\""};
{"AT+SAPBR=3,1,\"PWD\",\"beeline\""};


Но для AT+CGDCONT эти команды неуместны?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, Vix сказал:

Но для AT+CGDCONT эти команды неуместны?

Да, там все это происходит уже внутри ppp. У меня сделано так:

void ppp_modem::set_auth(char const * user, char const * password)
{
    if(strlen(user) == 0 || strlen(password) == 0)
        ppp_set_auth(PPP_pcb, PPPAUTHTYPE_NONE, nullptr, nullptr);
    else
        ppp_set_auth(PPP_pcb, PPPAUTHTYPE_ANY, user, password);
}

Проверить, к сожалению, возможности не было - у нас все операторы имя пользователя и пароль не проверяют, можно указать хоть "вася пупкин" и "слава мне, победителю драконов".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Была проблема с выводом логов, я вывожу через USB-CDC, часть сообщений терялась, добавил задержку:

 

void logger(const char *format, ...)
{
        char buffer[MAX_STRING_SIZE];

        va_list args;
        va_start (args, format);
        vsprintf(buffer, format, args);
        va_end(args);

        buffer[MAX_STRING_SIZE-1]=0;

        logger_Send(buffer, strlen(buffer));
}

 

HAL_StatusTypeDef logger_Send(char* bArray, uint32_t size_bArray)
{
    HAL_StatusTypeDef status = HAL_OK;

    if(CDC_Transmit_FS((uint8_t*)bArray, size_bArray) == USBD_BUSY){
        osDelay(20);
        CDC_Transmit_FS((uint8_t*)bArray, size_bArray);
    }
    return status;
}

 

Сейчас прогресс такой

 

Лог

ppp phase changed[1]: phase=0
ppp_connect[1]: holdoff=0
ppp phase changed[1]: phase=3
pppos_connect: unit 1: connecting
ppp_start[1]
ppp phase changed[1]: phase=6
pppos_send_config[1]: out_accm=FF FF FF FF
ppp_send_config[1]
pppos_recv_config[1]: in_accm=FF FF FF FF
ppp_recv_config[1]
ppp: auth protocols: PAP=1
pppos_write[1]: len=24
ppp_start[1]: finished
pppos_input[1]: got 64 bytes
pppos_write[1]: len=22
pppos_input[1]: got 8 bytes
pppos_write[1]: len=24
pppos_input[1]: got 48 bytes
netif_set_mtu[1]: mtu=1500
pppos_send_config[1]: out_accm=0 0 A 0
ppp_send_config[1]
pppos_recv_config[1]: in_accm=0 0 A 0
ppp_recv_config[1]
ppp phase changed[1]: phase=7
pppos_write[1]: len=10
pppos_input[1]: got 27 bytes
PAP authentication succeeded
ppp phase changed[1]: phase=9
pppos_write[1]: len=20
pppos_write[1]: len=14
pppos_input[1]: got 16 bytes
pppos_write[1]: len=14

13:07:09 pppos_input[1]: got 17 bytes
pppos_write[1]: len=14
pppos_input[1]: got 17 bytes
sifvjcomp[1]: VJ compress enable=0 slot=0 max slot=0
sifup[1]: err_code=0
ppp_link_status_cb: PPPERR_NONE

   our_ip4addr = 10.51.151.19

   his_ipaddr  = 192.168.254.254

   netmask     = 255.255.255.255

local  IP address 10.51.151.19
remote IP address 192.168.254.254
ppp phase changed[1]: phase=10

 

В какой момент можно запускать своего TCP и т.п. клиентов? Когда err_code в ppp_link_status_cb стал равен PPPERR_NONE ?

Изменено пользователем Vix

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запустил самопальный MQTT клиент. После 20 приемов обновления топика связь замирает, прием прекращается. Где что включить/посмотреть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>>> Запустил самопальный MQTT клиент. После 20 приемов обновления топика связь замирает, прием прекращается. Где что включить/посмотреть?

 

На каком модуле, кто оператор, чье облако.....

И самое главное - зачем самопальный?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В моем LWIP (предположительно версия 2.0.x) нет встроенного MQTT, не знаю почему, брал из примера. Подключал библиотеку вручную, т.к. мой МК STM32F413 не имеет ethernet, так бы через CubeMX все подключилось.

Код MQTT взял на просторах интернета из проекта ATmega16_GPRS_MQTTClient.

С этим кодом написал клиента в виде Windows приложения, работает нормально. С него же и обновляю топик.

Сервер MQTT - mqtt.by.

Подозрение на утечку памяти в недрах TCP. Как отловить?

СИМ мультиоператорная, подключается как правило к МТС или Мегафон.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такс, параллельно принимал данные MQTT клиентом с LWIP и приложением на Windows. Оба перестают принимать после 20-го publish. Причем клиент, публикующий топик, получает подтверждение, а подписчики ничего. Похоже, сервер с какими-то ограничениями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

02.08.2021 в 12:20, Vix сказал:

В какой момент можно запускать своего TCP и т.п. клиентов? Когда err_code в ppp_link_status_cb стал равен PPPERR_NONE ?

Пропустил вопрос. Вроде сразу запускаю. Пока сессия не поднялась - connect() будет возвращать ошибку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, Vix said:

Такс, параллельно принимал данные MQTT клиентом с LWIP и приложением на Windows. Оба перестают принимать после 20-го publish. Причем клиент, публикующий топик, получает подтверждение, а подписчики ничего. Похоже, сервер с какими-то ограничениями.

С сервером io.adafruit.com ограничение на количество publish не наблюдается. Но есть ограничение по частоте. В итоге LwIP - PPPoS - MQTT работает, продолжаю тестировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12.09.2019 в 16:46, Girnch сказал:

Сегодня бился с такой же проблемой. Но похоже решение по ссылке уже не доступно. Совсем не понятно где идет этот аппаратный рассчет СRC

вот правильная ссылка. Это так, на будущее -  вдруг кому приспичит ковыряться с PPP

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

04.08.2021 в 22:13, Сергей Борщ сказал:

Пропустил вопрос. Вроде сразу запускаю. Пока сессия не поднялась - connect() будет возвращать ошибку.

вот - ознакомьтесь

00724c.pdf

баловался как - скармливал модему Siemens MC35i пакеты, которые задампил при подключении с компа, в ответ на пакеты получал валидные ответы, так в конце концов поднял сокет через 628 пик...

CRC16 в последних пакетах пришлось пересчитывать т.е. назначался разный IP адрес.
Считаю PPP самой практичной реализацией, поскольку он обеспечивает прозрачный канал в отличие от зашитых в модем TCP стеков.

Изменено пользователем Dima83

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...