ppp_device
ppp_device copied to clipboard
ppp_recv_entry中的PPP_STATE_PREPARE下,丢掉脏数据的处理不合理
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大,是清理不干净的
确实是有这个可能性的,一般来说,AT 命令开启 PPP 拨号后,一旦模块回复了 connent ,后续的数据就为 PPP 格式的数据。
不过在 master 版本,已经删掉了这个逻辑;在具体的使用中发现,ppp 的帧结构有压缩的情况;而且 lwip 内部也有对 ppp 完整性的判断,所以在 1.0.0 后就删除了这个逻辑。直接把数据交到 lwip 的 ppp 中去匹配了。