分析流程
mqtt_example();
pclient = IOT_MQTT_Construct(&mqtt_params);
pclient = wrapper_mqtt_init(&mqtt_params);
ret = wrapper_mqtt_connect(pclient);
rc = _mqtt_connect(pClient);
rc = MQTTConnect(pClient);
rc = iotx_mc_wait_CONNACK(pClient);
rc = iotx_mc_read_packet(c, &timer, &packetType);
rc = c->ipstack.read(&c->ipstack, c->buf_read + len, needReadLen, left_t);
研究最后一个:平台给我发消息
int32_t HAL_TCP_Read(uintptr_t fd, char *buf, uint32_t len, uint32_t timeout_ms)
{
HAL_Delay(100);
printf("HAL_TCP_Read::\r\n");
len = GKU2.rx_len;
memcpy(buf,GKU2.rxBuf,len);
GK_usart_clear(&GKU2);
return (int32_t)len;
}
static int read_tcp(utils_network_pt pNetwork, char *buffer, uint32_t len, uint32_t timeout_ms)
{
return HAL_TCP_Read(pNetwork->handle, buffer, len, timeout_ms);
}
int utils_net_read(utils_network_pt pNetwork, char *buffer, uint32_t len, uint32_t timeout_ms)
{
int ret = 0;
ret = read_tcp(pNetwork, buffer, len, timeout_ms);
}
int iotx_net_init(utils_network_pt pNetwork, const char *host, uint16_t port, const char *ca_crt)
{
pNetwork->read = utils_net_read;
}
所以:c->ipstack.read就是在调用HAL_TCP_Read(uintptr_t fd, char *buf, uint32_t len, uint32_t timeout_ms)
问题还是在HAL_TCP_Read!!!!