Hello! I can't solve the problem. May be you have some explanation or advice what to check?
System hangs after first byte received using ppos_input
This function invokes in UART RX interrupt:
void USART1_RxCpltCallback(void)
{
u8 v;
v = st.ppprxd;
pppos_input(st.ppp, &v, 1);
USART1_RxEnable();
}
I also tried to collect a packet and send with pppos_input_tcpip by timeout timer interrupt. Hangs too:
// After 2ms of last byte received
void Timer5_PeriodElapsed(void)
{
u16 i;
if (0 != usartpppst.rxcnt)
{
pppos_input_tcpip(st.ppp, usartpppst.rxbuf, usartpppst.rxcnt);
}
static u32_t output_cb(ppp_pcb *pcb, u8_t *data, u32_t len, void *ctx)
{
HAL_UART_Transmit(&huart1, data, len, 0xFFFF);
return len;
}
Initialization procedure in main thread:
tcpip_init(ppp_init_done, (void*)&init);
while (! init)
vTaskDelay(1 / portTICK_RATE_MS);
st.ppp = pppapi_pppos_create(&st.netif,
output_cb, status_cb, 0);
printf("PPP=%lu\r\n", (u32)st.ppp);
pppapi_set_default(st.ppp);
ppp_set_auth(st.ppp, PPPAUTHTYPE_PAP, "pppclient", "12345678");
holdoff = 0;
pppapi_connect(st.ppp, holdoff);
vTaskDelay(100 / portTICK_RATE_MS);
USART1_RxEnable();
HAL uart interrupt preemption priority = 6
HAL systick priority = 5 (used by FreeRTOS)
configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY = 5
lwiopts.h
#define NO_SYS 0
#define PPP_INPROC_IRQ_SAFE 1
#define LWIP_TIMERS 1
#define LWIP_TCPIP_CORE_LOCKING 1
#define SYS_LIGHTWEIGHT_PROT 1
#define MEM_LIBC_MALLOC 0
#define MEMP_MEM_MALLOC 0
#define PPP_SERVER 1
#define PAP_SUPPORT 1
#define LWIP_PPP_API 1
#define TCPIP_THREAD_STACKSIZE 200
#define DEFAULT_THREAD_STACKSIZE 200
#define TCPIP_MBOX_SIZE 20
#define DEFAULT_THREAD_PRIO 3
#define DEFAULT_THREAD_PRIO 3
#define DEFAULT_RAW_RECVMBOX_SIZE 20
#define DEFAULT_UDP_RECVMBOX_SIZE 20
#define DEFAULT_TCP_RECVMBOX_SIZE 20
#define DEFAULT_ACCEPTMBOX_SIZE 20
Thanks in advance!
--