Network Connection Troubles
Hi all,
I am using a Nucleo-144 board and enabled the FreeRTOS. Afterwards i've integrated FreeRTOS+TCP sources and headers and Paho MQTT application.
I created a thread to run a MQTT Echo Server but i am having troubles connecting. This is my code:
static void prvMQTTEchoTask(void *pvParameters)
{
printf("prvMQTTEchoTask\n\r");
/* connect to m2m.eclipse.org, subscribe to a topic, send and receive messages regularly every 1 sec */
MQTTClient client;
Network network;
unsigned char sendbuf[80], readbuf[80];
int rc = 0,
count = 0;
MQTTPacket_connectData connectData = MQTTPacket_connectData_initializer;
pvParameters = 0;
NetworkInit(&network);
printf("Network Initialized\n\r");
MQTTClientInit(&client, &network, 30000, sendbuf, sizeof(sendbuf), readbuf, sizeof(readbuf));
printf("MQTT Client Initialized\n\r");
//char* address = "iot.eclipse.org";
char* address = "0.0.0.0";
if ((rc = NetworkConnect(&network, address, 1883)) != 0)
printf("Return code from network connect is %d\n\r", rc);
#if defined(MQTT_TASK)
printf("MQTTStartTask\n\r");
if ((rc = MQTTStartTask(&client)) != pdPASS)
printf("Return code from start tasks is %d\n\r", rc);
#endif
connectData.MQTTVersion = 3;
connectData.clientID.cstring = "FreeRTOS_sample";
printf("Connection Attempt...\n\r");
if ((rc = MQTTConnect(&client, &connectData)) != 0)
printf("Return code from MQTT connect is %d\n\r", rc);
else
printf("MQTT Connected\n");
if ((rc = MQTTSubscribe(&client, "FreeRTOS/sample/#", 2, messageArrived)) != 0)
printf("Return code from MQTT subscribe is %d\n\r", rc);
while (++count)
{
MQTTMessage message;
char payload[30];
message.qos = 1;
message.retained = 0;
message.payload = payload;
sprintf(payload, "message number %d", count);
message.payloadlen = strlen(payload);
if ((rc = MQTTPublish(&client, "FreeRTOS/sample/a", &message)) != 0)
printf("Return code from MQTT publish is %d\n\r", rc);
#if !defined(MQTT_TASK)
if ((rc = MQTTYield(&client, 1000)) != 0)
printf("Return code from yield is %d\n\r", rc);
#endif
HAL_Delay(5000);
}
/* do not return */
}
I've tried passing an ip address or a name like "localhost" but it keeps giving me an error code at this point:
if ((rc = NetworkConnect(&network, address, 1883)) != 0)
printf("Return code from network connect is %d\n\r", rc);
Any suggestion? Thank you.
