Sample program for using Pubnub on AT&T IoT Starter Kit (which has the WNC modem)

Dependencies:   Pubnub_mbed2_sync WNCInterface mbed-rtos mbed

Fork of WNCInterface_M2XMQTTdemo by Avnet

Committer:
sveljko
Date:
Fri Nov 11 22:49:05 2016 +0000
Revision:
10:f05fb235b75b
Parent:
8:57a5d7fbba6d
Added generating the UUID, using the rand() and setting srand() from pubnub_time()

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 0:b476b3f6cb65 1 #include "mbed.h"
JMF 0:b476b3f6cb65 2 #include "WNCInterface.h"
JMF 0:b476b3f6cb65 3
sveljko 8:57a5d7fbba6d 4 #include "pubnub_sync.h"
sveljko 10:f05fb235b75b 5 #include "srand_from_pubnub_time.h"
sveljko 10:f05fb235b75b 6
JMF 0:b476b3f6cb65 7
sveljko 8:57a5d7fbba6d 8 #define CRLF "\r\n"
JMF 0:b476b3f6cb65 9
JMF 0:b476b3f6cb65 10 WNCInterface eth;
JMF 1:ceb54785e67c 11 MODSERIAL pc(USBTX,USBRX,256,256);
JMF 0:b476b3f6cb65 12
sveljko 10:f05fb235b75b 13
sveljko 10:f05fb235b75b 14 static void generate_uuid(pubnub_t *pbp)
sveljko 10:f05fb235b75b 15 {
sveljko 10:f05fb235b75b 16 char const *uuid_default = "zeka-peka-iz-jendeka";
sveljko 10:f05fb235b75b 17 struct Pubnub_UUID uuid;
sveljko 10:f05fb235b75b 18 static struct Pubnub_UUID_String str_uuid;
sveljko 10:f05fb235b75b 19
sveljko 10:f05fb235b75b 20 if (0 != pubnub_generate_uuid_v4_random(&uuid)) {
sveljko 10:f05fb235b75b 21 pubnub_set_uuid(pbp, uuid_default);
sveljko 10:f05fb235b75b 22 }
sveljko 10:f05fb235b75b 23 else {
sveljko 10:f05fb235b75b 24 str_uuid = pubnub_uuid_to_string(&uuid);
sveljko 10:f05fb235b75b 25 pubnub_set_uuid(pbp, str_uuid.uuid);
sveljko 10:f05fb235b75b 26 pc.printf("Generated UUID: %s\n", str_uuid.uuid);
sveljko 10:f05fb235b75b 27 }
sveljko 10:f05fb235b75b 28 }
sveljko 10:f05fb235b75b 29
JMF 1:ceb54785e67c 30
sveljko 8:57a5d7fbba6d 31 int main()
sveljko 8:57a5d7fbba6d 32 {
sveljko 8:57a5d7fbba6d 33 pc.baud(115200);
sveljko 8:57a5d7fbba6d 34 pc.printf(CRLF CRLF "Pubnub Test starting..." CRLF);
sveljko 8:57a5d7fbba6d 35
sveljko 8:57a5d7fbba6d 36 pc.printf("init() returned 0x%04X" CRLF, eth.init(NULL,&pc));
sveljko 8:57a5d7fbba6d 37 eth.connect();
sveljko 8:57a5d7fbba6d 38 pc.printf("IP Address: %s" CRLF, eth.getIPAddress());
sveljko 8:57a5d7fbba6d 39 eth.doDebug(1);
JMF 0:b476b3f6cb65 40
sveljko 10:f05fb235b75b 41
sveljko 8:57a5d7fbba6d 42 pubnub_t *pbp = pubnub_alloc();
sveljko 8:57a5d7fbba6d 43 pubnub_init(pbp, "demo", "demo");
sveljko 10:f05fb235b75b 44
sveljko 10:f05fb235b75b 45 srand_from_pubnub_time(pbp);
sveljko 10:f05fb235b75b 46 generate_uuid(pbp);
sveljko 8:57a5d7fbba6d 47
sveljko 8:57a5d7fbba6d 48 while (true) {
sveljko 8:57a5d7fbba6d 49 pubnub_res rslt = pubnub_publish(pbp, "hello_world", "\"Hello world from MBed WNC!\"");
sveljko 8:57a5d7fbba6d 50 if (rslt != PNR_STARTED) {
sveljko 8:57a5d7fbba6d 51 pc.printf("Failed to start publishing, rslt=%d"CRLF, rslt);
sveljko 8:57a5d7fbba6d 52 }
sveljko 8:57a5d7fbba6d 53 else {
sveljko 8:57a5d7fbba6d 54 rslt = pubnub_await(pbp);
sveljko 8:57a5d7fbba6d 55 if (rslt != PNR_OK) {
sveljko 8:57a5d7fbba6d 56 pc.printf("Failed to finished publishing, rslt=%d"CRLF, rslt);
sveljko 8:57a5d7fbba6d 57 }
sveljko 8:57a5d7fbba6d 58 else {
sveljko 8:57a5d7fbba6d 59 pc.printf("Published! Response from Pubnub: %s"CRLF, pubnub_last_publish_result(pbp));
sveljko 8:57a5d7fbba6d 60 }
sveljko 8:57a5d7fbba6d 61 }
sveljko 8:57a5d7fbba6d 62
sveljko 8:57a5d7fbba6d 63 rslt = pubnub_subscribe(pbp, "hello_world", 0);
sveljko 8:57a5d7fbba6d 64 if (rslt != PNR_STARTED) {
sveljko 8:57a5d7fbba6d 65 pc.printf("Failed to start subscribing, rslt=%d"CRLF, rslt);
sveljko 8:57a5d7fbba6d 66 }
sveljko 8:57a5d7fbba6d 67 else {
sveljko 8:57a5d7fbba6d 68 rslt = pubnub_await(pbp);
sveljko 8:57a5d7fbba6d 69 if (rslt != PNR_OK) {
sveljko 8:57a5d7fbba6d 70 pc.printf("Failed to finished subscribing, rslt=%d"CRLF, rslt);
sveljko 8:57a5d7fbba6d 71 }
sveljko 8:57a5d7fbba6d 72 else {
sveljko 8:57a5d7fbba6d 73 pc.printf("Subscribed! Received messages follow: %s"CRLF);
sveljko 8:57a5d7fbba6d 74 while (char const *msg = pubnub_get(pbp)) {
sveljko 8:57a5d7fbba6d 75 pc.printf("subscribe got: %s"CRLF, msg);
sveljko 8:57a5d7fbba6d 76 }
sveljko 8:57a5d7fbba6d 77 }
sveljko 8:57a5d7fbba6d 78 }
sveljko 8:57a5d7fbba6d 79 wait_ms(1000);
sveljko 8:57a5d7fbba6d 80 }
JMF 0:b476b3f6cb65 81 }
JMF 0:b476b3f6cb65 82