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
main.cpp@10:f05fb235b75b, 2016-11-11 (annotated)
- 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?
User | Revision | Line number | New 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 |