未通过 UART(ESP-32 -> Sim7600)在 LCP(PPPoS)阶段接收数据

Not receiving data in LCP(PPPoS) phase over UART(ESP-32 -> Sim7600)

在我的 ESP32 上,我无法为我的 ISP 创建一个有效的 PPP 接口。 我正在使用 ESP-32 以太网套件,并将其连接到带有 Sim7600G 芯片的 Simcom EVB 套件。 有了这个硬件,我将 ESP-IDF 与 LWIP 结合使用来建立 PPP 连接。 首先,我必须发送所有相应的 AT 命令以确保它实际上已准备好进行 PPP 连接。 这些 AT 命令如下:

AT+CGDCONT=1,"IP","<APN>"
AT+CGACT=1,1
AT+CREG? <Must be 0,5 -> Registered and Roaming>
ATD*99***1# -> I receive "Connect 152000" and start the PPP phase.

收到 Connect 152000 作为响应后,我开始 PPP 连接。

m_pPpp = pppapi_pppos_create(&netif, pppos_output_cb, ppp_link_status_cb, nullptr);
pppapi_set_default(m_pPpp);
pppapi_set_auth(m_pPpp, PPPAUTHTYPE_PAP, "", "");
err_t err = ppp_connect(m_pPpp, 0);

这是对应代码的输出:

ppp phase changed[2]: phase=0
ppp_connect[2]: holdoff=0
ppp phase changed[2]: phase=3
pppos_connect: unit 2: connecting
ppp_start[2]
ppp phase changed[2]: phase=6
pppos_send_config[2]: out_accm=FF FF FF FF
ppp_send_config[2]
pppos_recv_config[2]: in_accm=FF FF FF FF
ppp_recv_config[2]
ppp: auth protocols: PAP=1
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xcd3e2cad> <pcomp> <accomp>]
I: pppos_output callback called
I: ppp_output_cb() len = 45
W: ip4addr: 0.0.0.0
W: his_ipaddr: 0.0.0.0
W: netmask: 255.255.255.255
pppos_write[2]: len=24
ppp_start[2]: finished

据我所知,它经历了几个有关 PPP 连接的阶段。

此后不再继续。我看到正在调用 pppos_output 回调,这应该会发生。据我了解,此功能可让您将 PPP 数据写入您的 UART 设备。

另外,我在后台有一个任务 运行 轮询我的 UART 设备以获取写入的数据,因此我可以将其写入 pppos_input 函数。我从来没有收到任何数据... 老实说,我不知道我在哪里遗漏了什么或如何解决这个问题。 此外,LWIP 文档非常简单并且缺少示例,这使得它变得更加困难。

我尝试过的其他事情:

我还没有找到使用上述框架解决此问题的方法。相反,我恢复到 ESP-IDF 的另一个依赖项:esp-modem。我按照当前软件中的 pppos-client 和 modem-console 示例设法获得了一个可行的解决方案。