void ICACHE_FLASH_ATTR mqtt_tcpclient_discon_cb(void *arg) { struct espconn *pespconn = (struct espconn *)arg; MQTT_Client* client = (MQTT_Client *)pespconn->reverse; INFO("TCP: Disconnected callback\r\n"); client->connState = TCP_RECONNECT_REQ; if(client->disconnectedCb) client->disconnectedCb((uint32_t*)client); system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); }
void FUNCTION_ATTRIBUTE mqtt_tcpclient_discon_cb(void *arg, int8_t errno) { struct pando_tcp_conn *pespconn = (struct pando_tcp_conn *)arg; MQTT_Client* client = (MQTT_Client *)pespconn->reverse; INFO("TCP: Disconnected callback\r\n"); client->connState = TCP_RECONNECT_REQ; if(client->disconnectedCb) client->disconnectedCb((uint32_t*)client); MQTT_Task(client); }
/** * @brief Callback from SDK that socket got reset, note that no discon_cb will follow * @param arg: contain the ip link information * @retval None */ static void ICACHE_FLASH_ATTR mqtt_tcpclient_recon_cb(void* arg, int8_t err) { struct espconn* pespconn = (struct espconn *)arg; MQTT_Client* client = (MQTT_Client *)pespconn->reverse; //DBG_MQTT("MQTT: Reset CB, freeing espconn %p (err=%d)\n", arg, err); if (pespconn->proto.tcp) os_free(pespconn->proto.tcp); os_free(pespconn); os_printf("MQTT: Connection reset from %s:%d\n", client->host, client->port); if (client->disconnectedCb) client->disconnectedCb((uint32_t*)client); if (client->cmdDisconnectedCb) client->cmdDisconnectedCb((uint32_t*)client); // reconnect unless we're in a permanently disconnected state if (client->connState == MQTT_DISCONNECTED) return; client->timeoutTick = client->reconTimeout; if (client->reconTimeout < 128) client->reconTimeout <<= 1; client->connState = TCP_RECONNECT_REQ; os_printf("timeoutTick=%d reconTimeout=%d\n", client->timeoutTick, client->reconTimeout); }
/** * @brief Callback from SDK that socket is disconnected * @param arg: contain the ip link information * @retval None */ void ICACHE_FLASH_ATTR mqtt_tcpclient_discon_cb(void* arg) { struct espconn* pespconn = (struct espconn *)arg; MQTT_Client* client = (MQTT_Client *)pespconn->reverse; DBG_MQTT("MQTT: Disconnect CB, freeing espconn %p\n", arg); if (pespconn->proto.tcp) os_free(pespconn->proto.tcp); os_free(pespconn); // if this is an aborted connection we're done if (client == NULL) return; DBG_MQTT("MQTT: Disconnected from %s:%d\n", client->host, client->port); if (client->disconnectedCb) client->disconnectedCb((uint32_t*)client); if (client->cmdDisconnectedCb) client->cmdDisconnectedCb((uint32_t*)client); // reconnect unless we're in a permanently disconnected state if (client->connState == MQTT_DISCONNECTED) return; client->timeoutTick = client->reconTimeout; if (client->reconTimeout < 128) client->reconTimeout <<= 1; client->connState = TCP_RECONNECT_REQ; }
void ICACHE_FLASH_ATTR mqtt_tcpclient_discon_cb(void *arg) { struct espconn *pespconn = (struct espconn *)arg; MQTT_Client* client = (MQTT_Client *)pespconn->reserve; INFO("TCP: Disconnected callback\r\n"); if(TCP_DISCONNECTING == client->connState) { client->connState = TCP_DISCONNECTED; } else if(MQTT_DELETING == client->connState) { client->connState = MQTT_DELETED; } else { client->connState = TCP_RECONNECT_REQ; } if (client->disconnectedCb) client->disconnectedCb((uint32_t*)client); xSemaphoreGive(client->mqttTaskSem); }