Доброго времени суток!
Имеется gsm-модем в связке с STM32F030, на модеме включен режим ppp. Со стороны МК, в свою очередь, крутится lwip.
Функция настройки PPP в lwip:
Код
void lwip_start(void)
{
tcpip_init( NULL, NULL ); /*Инициализация стека tcp/ip*/
/*Create a new PPPoS interface*/
ppp = pppapi_pppos_create(&ppp_netif,
output_cb, status_cb, 0);
ppp_set_default(ppp);
err_t err = pppapi_connect(ppp,0);
if (err == ERR_ALREADY)
{
printf("Connected successfully");
}
sys_thread_new("tcp_thread1", tcp_thread, NULL, 256, osPriorityNormal ); //задача tcp
printf("Configuration end");
}
В задаче tcp_thread я ожидаю соединение
Код
static void tcp_thread(void *arg)
{
struct netconn *conn, *newconn;
err_t err, accept_err;
while (1)
{
conn = netconn_new(NETCONN_TCP);
if(conn)
{
err = netconn_bind(conn, IP_ADDR_ANY, 4111);
if (err != NULL)
{
netconn_listen(conn);
DEBUG_MSG("netconn_accept....\n");
osDelay(5);
while(1)
{
accept_err = netconn_accept(conn, &newconn);
if (accept_err == ERR_OK)
{
DEBUG_MSG("connection established \n");
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
}
}
}
}
}
}
Но когда с пк я пытаюсь установить соединение (использую hercules), в ответ приходят rst. Из netconn_accept, соответственно, не выходит. В чем проблема, не могу понять, буду очень благодарен, если кто-нибудь наставит на путь истинный.
P.S.
Данные пихаю в стек в отдельной задаче, используя функцию pppos_input_tcpip
Код
void uart_rxTask(void const * argument)
{
uint8_t u8=0, cnt=0, answer=0;
uint8_t uart_buff[128]={0};
Sim8xFlag_t SimFlag;
for (;;)
{
if (pdPASS == xQueueReceive(xQueue_Uart, &u8, 1000/portTICK_RATE_MS))
{
if (PPP_Connect)
{
pppos_input_tcpip(ppp, &u8, 1);
osDelay(1);
}else /*Работа с AT-командами*/
{
//Разбор AT-команд
}
}
}
}