Есть девайс с LPC2148 + GSM модуль. На девайсе используется связка FreeRTOS + IwIP + PPP(который входит в IwIP). Столкнулся с проблемой при переинициализации PPP соединения, для простоты опишу порядок действий:
tcpip_init();
while(1){ Включаю и инициализирую gsm модуль.
pppInit(); Инициализирую соединение pppSetAuth(); Устанавливаю параметры авторизации pppOverSerialOpen(); Поднимаю соединение pppOverSerialOpen
Затем создаю и затем открываю серверное соединение; netconn_new(); netconn_bind(); netconn_listen();
Жду входящего соединения; if(netconn_accept() == ERR_OK) { Принимаю входящее соединение, начинаю передавать данные от мк компу, и в этот момент откручиваю антенну от модуля, через 5-10 сек мк понимает что регистрация в сети потеряна. После чего закрываю дочернее соединение. netconn_delete(conn); } И затем серверное netconn_delete(srv_conn); И затем ppp pppClose()
}
Так, вот на следующем цикле при выполнении netconn_bind получаю ответ ERR_USE. Если подождать около 90 сек то на следующий вызов netconn_bind получаю ответ ERR_OK. Т.е. такое впечатление, что lwip пытается передать непереданные пакеты из буфера, хотя соединение уже закрыто. Есть ли какой-то способ полностью переинициализировать стек? Просто ждать крайне нежелательно...
|