ppp_device icon indicating copy to clipboard operation
ppp_device copied to clipboard

ppp_recv_entry中的PPP_STATE_PREPARE下,丢掉脏数据的处理不合理

Open denghengli opened this issue 4 years ago • 1 comments

    if (device->state == PPP_STATE_PREPARE)
    {
            ......
            /* throw away the dirty data in the uart buffer */
            rt_device_read(device->uart, 0, buffer, PPP_RECV_READ_MAX);
            .....
    }

在ppp_recv_entry中,模块拨号成功后,加了清理脏数据处理。如果真有脏的数据,这样最多也只能清理掉PPP_RECV_READ_MAX(32字节)长度的数据吧,如果RT_SERIAL_RB_BUFSZ比PPP_RECV_READ_MAX大,是清理不干净的

denghengli avatar Jul 24 '21 11:07 denghengli

确实是有这个可能性的,一般来说,AT 命令开启 PPP 拨号后,一旦模块回复了 connent ,后续的数据就为 PPP 格式的数据。

不过在 master 版本,已经删掉了这个逻辑;在具体的使用中发现,ppp 的帧结构有压缩的情况;而且 lwip 内部也有对 ppp 完整性的判断,所以在 1.0.0 后就删除了这个逻辑。直接把数据交到 lwip 的 ppp 中去匹配了。

xiangxistu avatar Jul 27 '21 01:07 xiangxistu