Open denghengli opened 3 years ago
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 中去匹配了。
在ppp_recv_entry中,模块拨号成功后,加了清理脏数据处理。如果真有脏的数据,这样最多也只能清理掉PPP_RECV_READ_MAX(32字节)长度的数据吧,如果RT_SERIAL_RB_BUFSZ比PPP_RECV_READ_MAX大,是清理不干净的