Hi Team,
Description
Getting Segmentation Fault when i pass the slider value to function.
when i use the slider getting segmentation fault at mqtt_publish(buf); function.
How to pass this char buf[4] value to my function?
static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
{
if(event == LV_EVENT_RELEASED) {
static char buf[4]; /* max 3 bytes for number plus 1 null terminating byte */
snprintf(buf, 4, "%u", lv_slider_get_value(slider));
lv_label_set_text(slider_label, buf);
if(lv_slider_get_value(slider)==0){
lv_label_set_text(wattage,"OFF");
}else if(lv_slider_get_value(slider)>0){
lv_label_set_text(wattage,strcat(buf," W"));
mqtt_publish(buf); //segmentation fault
}
}
}
static void mqtt_publish(char *message){
MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
MQTTClient_message pubmsg = MQTTClient_message_initializer;
MQTTClient_deliveryToken token;
int rc;
MQTTClient_create(&client, ADDRESS, CLIENTID,
MQTTCLIENT_PERSISTENCE_NONE, NULL);
conn_opts.keepAliveInterval = 30;
conn_opts.cleansession = 1;
conn_opts.username= "username";
conn_opts.password= "password";
if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
{
printf("Failed to connect, return code %d\n", rc);
exit(EXIT_FAILURE);
}
pubmsg.payload = message;
pubmsg.payloadlen = (int)strlen(message);
pubmsg.qos = QOS;
pubmsg.retained = 0;
MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token);
rc = MQTTClient_waitForCompletion(client, token, TIMEOUT);
MQTTClient_disconnect(client, 10000);
MQTTClient_destroy(&client);
}
Can you please help me with this.
Thanks in Advance.