Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "MQTTClient.h"
- #include "../tools.c"
- #include <cjson/cJSON.h>
- #define ADDRESS "tcp://localhost:1883"
- #define CLIENTID "MY_PUB"
- #define TOPIC "MQTT/Test"
- int main(int argc, char* argv[])
- {
- frame1 test = {42,"test"};
- cJSON* frm = NULL;
- frm = cJSON_CreateObject();
- cJSON_AddNumberToObject(frm,"entier",test.E);
- cJSON_AddStringToObject(frm,"string",test.S);
- print_frame1(frm);
- int i = cJSON_GetArraySize(frm);
- printf("number of items in frame : %dn",i);
- cJSON* entier = NULL;
- entier = cJSON_GetObjectItem(frm,"entier");
- char* pt = cJSON_Print(entier);
- printf("entier : %sn",pt);
- cJSON* str = NULL;
- str = cJSON_GetObjectItem(frm,"string");
- char* st = cJSON_Print(str);
- printf("string : %sn",st);
- printf("size of message : %dn",sizeof(cJSON));
- MQTTClient publisher;
- MQTTClient_connectOptions connexion = MQTTClient_connectOptions_initializer;
- MQTTClient_message msg = msg_creation(frm,sizeof(cJSON),0,0);
- MQTTClient_deliveryToken token;
- int rc;
- MQTTClient_create(&publisher, ADDRESS, CLIENTID, MQTTCLIENT_PERSISTENCE_NONE, NULL);
- connexion.cleansession = 1;
- MQTTClient_setCallbacks(publisher, NULL, connlost, frame_json_arrvd, NULL);
- if ((rc = MQTTClient_connect(publisher,&connexion)) != MQTTCLIENT_SUCCESS)
- {
- printf("Failed to connect, return code %dn", rc);
- }
- MQTTClient_publishMessage(publisher, TOPIC,&msg,NULL);
- printf("Message sent!n");
- cJSON_Delete(frm);
- MQTTClient_disconnect(publisher,10000);
- MQTTClient_destroy(&publisher);
- return rc;
- }
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "MQTTClient.h"
- #include "../tools.c"
- #include <cjson/cJSON.h>
- #define ADDRESS "tcp://localhost:1883"
- #define CLIENTID "ClientID"
- #define TOPIC "MQTT/Test"
- #define QOS 0
- #define TIMEOUT 10000L
- int main(int argc, char* argv[])
- {
- MQTTClient client;
- MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
- int rc;
- int ch;
- MQTTClient_create(&client, ADDRESS, CLIENTID,
- MQTTCLIENT_PERSISTENCE_NONE, NULL);
- conn_opts.keepAliveInterval = 20;
- conn_opts.cleansession = 1;
- MQTTClient_setCallbacks(client, NULL, connlost, frame_json_arrvd, NULL);
- if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
- {
- printf("Failed to connect, return code %dn", rc);
- exit(EXIT_FAILURE);
- }
- printf("Subscribing to topic %snfor client %s using QoS%dnn"
- "Press Q<Enter> to quitnn", TOPIC, CLIENTID, QOS);
- MQTTClient_subscribe(client, TOPIC, QOS);
- do
- {
- ch = getchar();
- } while(ch!='Q' && ch != 'q');
- MQTTClient_disconnect(client, 10000);
- MQTTClient_destroy(&client);
- return rc;
- }
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <sys/time.h>
- #include <cjson/cJSON.h>
- #include "MQTTClient.h"
- int compteur;
- // message frames
- typedef struct frame1
- {
- int E;
- char* S;
- } frame1;
- void print_frame1bis(frame1* F)
- {
- printf(" %sn",F->S);
- printf(" %dn",F->E);
- }
- void print_frame1(cJSON* frame1)
- {
- char * str = cJSON_Print(frame1);
- printf("%sn",str);
- }
- int frame_json_arrvd(void* context, char* topicName, int topicLen, MQTTClient_message* msg)
- {
- cJSON* payload_ptr = NULL;
- printf("size of message : %dn",sizeof(msg->payload));
- int j = cJSON_GetArraySize(msg->payload);
- printf("okn");
- printf("number of items in frame : %dn",j);
- payload_ptr = cJSON_CreateObject();
- payload_ptr = msg->payload;
- int i = cJSON_GetArraySize(payload_ptr);
- printf("number of items in frame : %dn",i);
- print_frame1(payload_ptr);
- cJSON_Delete(payload_ptr);
- MQTTClient_freeMessage(&msg);
- MQTTClient_free(topicName);
- return 1;
- }
- // in case connexion is lost
- void connlost(void *context, char *cause)
- {
- printf("nConnection lostn");
- printf(" cause: %sn", cause);
- }
- // create message
- MQTTClient_message msg_creation(void* payload, int length, int qos, int retained)
- {
- MQTTClient_message pubmsg = MQTTClient_message_initializer;
- pubmsg.payload = payload;
- pubmsg.payloadlen = length;
- pubmsg.qos = qos;
- pubmsg.retained = retained;
- return pubmsg;
- }
- Subscribing to topic MQTT/Test
- for client ClientID using QoS0
- Press Q<Enter> to quit
- size of message : 8
- Segmentation fault (core dumped)
- Program terminated with signal 11, Segmentation fault.
- #0 0x00007f4e49a8b63e in cJSON_GetArraySize () from /usr/lib64/libcjson.so.1
- (gdb) bt
- #0 0x00007f4e49a8b63e in cJSON_GetArraySize () from /usr/lib64/libcjson.so.1
- #1 0x00000000004010c9 in frame_json_arrvd (context=0x0,
- topicName=0x7f4e440009e4 "MQTT/Test", topicLen=0, msg=0x7f4e44000bb4)
- at ../tools.c:110
- #2 0x00007f4e49c962a5 in MQTTClient_run (n=<value optimized out>)
- at src/MQTTClient.c:604
- #3 0x000000378b807aa1 in start_thread (arg=0x7f4e49a83700) at pthread_create.c:301
- #4 0x000000378b4e8bcd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
Add Comment
Please, Sign In to add comment