Hi,
There are some my functions:
Init:
int protocol_version = 3;
mosquitto_lib_init();
mosq = mosquitto_new(CLIENT_ID, true, NULL);
if(mosq)
{
//mosquitto_log_callback_set(mosq, VR_(my_log_callback));
mosquitto_will_set(mosq, PUBLISH_RES_TOPIC, strlen("client disconnect"),
(char*)"client disconnect", QOS1, false);
mosquitto_connect_callback_set(mosq, VR_(mosquitto_connect_callback));
mosquitto_message_callback_set(mosq, VR_(mosquitto_message_callback));
mosquitto_disconnect_callback_set(mosq, VR_(mosquitto_disconnect_callback));
mosquitto_subscribe_callback_set(mosq, VR_(mosquitto_subscribe_callback));
mosquitto_tls_set(mosq, ROOT_CA_FILENAME,
ROOT_CA,
CERTIFICATE_FILENAME,
PRIVATE_KEY_FILENAME,
NULL);
mosquitto_opts_set(mosq, MOSQ_OPT_PROTOCOL_VERSION, &protocol_version);
//mosquitto_message_retry_set(mosq, 3);
//mosquitto_reconnect_delay_set(mosq, 1, 5, false);
int rc = pthread_create(&thread_mosquitto, NULL, (void *) &VR_(mosquitto_main_thread), NULL);
if (rc != 0)
{
SLOGI("Can not create thread");
}
pthread_detach(thread_mosquitto);
}
else
{
SLOGE("FAILED TO CREATE MOSQUITTO\n");
return -1;
}
In mosquitto main thread:void VR_(mosquitto_main_thread)(void)
{ mosquitto_connect(mosq, mqtt_address, MQTT_PORT, 60);
mosquitto_loop_start(mosq);
}
In mosquitto_connect_callback
pthread_t test_thread;
pthread_create(&test_thread, NULL, (void *)&test_thread_cb, NULL);
pthread_detach(test_thread);
mosquitto_subscribe(mosq, NULL, SUBSCRIBE_REQ_TOPIC, QOS1);
mosquitto_subscribe(mosq, NULL, SUBSCRIBE_CONTROL_TOPIC, QOS1);
mosquitto_subscribe(mosq, NULL, SUBSCRIBE_TEST1_TOPIC, QOS1);
mosquitto_subscribe(mosq, NULL, SUBSCRIBE_TEST2_TOPIC, QOS1);
Thanks
Tuan Nguyen