diff --git a/cube/User/Src/mqttTest.c b/cube/User/Src/mqttTest.c index b4ff9f2..4d96f4f 100644 --- a/cube/User/Src/mqttTest.c +++ b/cube/User/Src/mqttTest.c @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -15,21 +16,59 @@ extern const uint8_t MQTT_SOCK; client_t client; mqttClient_t mqttClient; +uint8_t brokerAddress[] = { 172, 16, 2, 16 }; +uint16_t brokerPort = 1883; // typedef void (*callback_t)(char*, uint8_t*, uint16_t); static void mqttCallback(char *topic, uint8_t *payload, uint16_t payloadLength) { logMsg("mcb"); } -void mqttTestInit() { - logMsg("mti: initializing mqtt client"); - client.sockNum = MQTT_SOCK; - mqttClientInit(&mqttClient, &client, mqttCallback); - logMsg("mti: mqtt client initialized"); - logMsg("mti: connecting to broker"); - uint8_t brokerAddress[] = { 172, 16, 2, 16 }; - bool res = mqttConnect(&mqttClient, brokerAddress, 1883, "mbv3gw-client", NULL, NULL, NULL, 0, false, NULL, false); - logMsg("mti: mqttConnect returns %d", res); +void mqttTestHandler(void *handle) { + static uint8_t state = 0; + static uint8_t message[] = "Hello world\n\r"; + + if (isNetworkAvailable()) { + switch (state) { + case 0: + coloredMsg(LOG_YELLOW, "mth, initializing mqtt client"); + client.sockNum = MQTT_SOCK; + mqttClientInit(&mqttClient, &client, mqttCallback); + coloredMsg(LOG_YELLOW, "mth: mqtt client initialized"); + + state = 1; + break; + + case 1: + coloredMsg(LOG_YELLOW, "mth, connecting to broker "); + bool res = mqttConnect(&mqttClient, brokerAddress, 1883, "mbv3gw-client", NULL, NULL, NULL, 0, false, NULL, false); + coloredMsg(LOG_YELLOW, "mth, mqttConnect returns %d", res); + + if (res) { + coloredMsg(LOG_YELLOW, "mth, ok, connected"); + state = 2; + } else { + state = 255; + } + break; + + case 2: + coloredMsg(LOG_YELLOW, "mth, waiting"); + + break; + + + case 255: + coloredMsg(LOG_YELLOW, "mth, error state, will stop here"); + schDel(mqttTestHandler, NULL); + break; + } + } else { + coloredMsg(LOG_YELLOW, "mth, network not yet ready"); + } } +void mqttTestInit() { + schAdd(mqttTestHandler, NULL, 0, 100); +} \ No newline at end of file